Merge branch 'main' of https://github.com/abnormalhare/marioparty4
This commit is contained in:
commit
716b0714e9
39 changed files with 8718 additions and 813 deletions
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
|
|
@ -6,7 +6,7 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
container: ghcr.io/rainchus/marioparty4-build:main
|
container: ghcr.io/mariopartyrd/mp-gc-build:main
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
|
|
@ -15,11 +15,10 @@ jobs:
|
||||||
version: [GMPE01_00]
|
version: [GMPE01_00]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Checkout the repository (shallow clone)
|
# Checkout the repository
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
# Set Git config
|
# Set Git config
|
||||||
|
|
|
||||||
40
.gitignore
vendored
40
.gitignore
vendored
|
|
@ -1,13 +1,35 @@
|
||||||
|
# IDE folders
|
||||||
|
.idea/
|
||||||
|
.vs/
|
||||||
|
|
||||||
|
# Caches
|
||||||
__pycache__
|
__pycache__
|
||||||
.idea
|
.mypy_cache
|
||||||
.vscode
|
.cache/
|
||||||
.ninja_*
|
|
||||||
*.exe
|
# Original files
|
||||||
build
|
|
||||||
build.ninja
|
|
||||||
objdiff.json
|
|
||||||
orig/*/*
|
orig/*/*
|
||||||
!orig/*/.gitkeep
|
!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
|
/*.txt
|
||||||
ctx.c
|
*.exe
|
||||||
tools/output/*
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
12
.vscode/extensions.json
vendored
Normal file
12
.vscode/extensions.json
vendored
Normal file
|
|
@ -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",
|
||||||
|
]
|
||||||
|
}
|
||||||
33
.vscode/settings.json
vendored
Normal file
33
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"[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": {
|
||||||
|
"*.inc": "c",
|
||||||
|
".clangd": "yaml"
|
||||||
|
},
|
||||||
|
"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,
|
||||||
|
},
|
||||||
|
// Disable C/C++ IntelliSense, use clangd instead
|
||||||
|
"C_Cpp.intelliSenseEngine": "disabled",
|
||||||
|
"cmake.ignoreCMakeListsMissing": true,
|
||||||
|
}
|
||||||
16
.vscode/tasks.json
vendored
Normal file
16
.vscode/tasks.json
vendored
Normal file
|
|
@ -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
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
40
README.md
40
README.md
|
|
@ -1,12 +1,13 @@
|
||||||
Mario Party 4
|
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
|
[Build Status]: https://github.com/mariopartyrd/marioparty4/actions/workflows/build.yml/badge.svg
|
||||||
[actions]: https://github.com/Rainchus/marioparty4/actions/workflows/build.yml
|
[actions]: https://github.com/mariopartyrd/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
|
[Progress]: https://decomp.dev/mariopartyrd/marioparty4.svg?mode=shield&measure=code&label=Code&category=all
|
||||||
[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
|
[DOL Progress]: https://decomp.dev/mariopartyrd/marioparty4.svg?mode=shield&measure=code&label=DOL&category=dol
|
||||||
[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
|
[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 Badge]: https://img.shields.io/discord/994839212618690590?color=%237289DA&logo=discord&logoColor=%23FFFFFF
|
||||||
[discord]: https://discord.gg/T4faGveujK
|
[discord]: https://discord.gg/T4faGveujK
|
||||||
|
|
||||||
|
|
@ -59,28 +60,29 @@ Building
|
||||||
|
|
||||||
- Clone the repository:
|
- Clone the repository:
|
||||||
```
|
```
|
||||||
git clone https://github.com/Rainchus/marioparty4.git
|
git clone https://github.com/mariopartyrd/marioparty4.git
|
||||||
```
|
```
|
||||||
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your game to `orig/GMPE01_00`.
|
|
||||||

|
- Initialize and update submodules:
|
||||||
- To save space, the only necessary files are the following. Any others can be deleted.
|
|
||||||
- `sys/main.dol`
|
```sh
|
||||||
- `files/dll/*.rel`
|
git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
- Copy your game's disc image to `orig/GMPE01_00`.
|
||||||
|
- 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:
|
- Configure:
|
||||||
```
|
```
|
||||||
python configure.py
|
python configure.py
|
||||||
```
|
```
|
||||||
To use a version other than `GMPE01_00` (USA), specify it with `--version`.
|
|
||||||
- Build:
|
- Build:
|
||||||
```
|
```
|
||||||
ninja
|
ninja
|
||||||
```
|
```
|
||||||
|
|
||||||
Visual Studio Code
|
|
||||||
==================
|
|
||||||
|
|
||||||
If desired, use the recommended Visual Studio Code settings by renaming the `.vscode.example` directory to `.vscode`.
|
|
||||||
|
|
||||||
Diffing
|
Diffing
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
@ -89,5 +91,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.
|
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`.
|
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`.
|
||||||
|
|
||||||

|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
object: orig/GMPE01_00/sys/main.dol
|
object_base: orig/GMPE01_00
|
||||||
|
object: sys/main.dol
|
||||||
hash: ff8d894776d37167e454ae3f0c9e644407c1e6b1
|
hash: ff8d894776d37167e454ae3f0c9e644407c1e6b1
|
||||||
symbols: config/GMPE01_00/symbols.txt
|
symbols: config/GMPE01_00/symbols.txt
|
||||||
splits: config/GMPE01_00/splits.txt
|
splits: config/GMPE01_00/splits.txt
|
||||||
|
|
@ -7,12 +8,12 @@ mw_comment_version: 10 # GC 2.6 linker
|
||||||
force_active: [__register_global_object, lbl_801D40D0, _kerent]
|
force_active: [__register_global_object, lbl_801D40D0, _kerent]
|
||||||
|
|
||||||
modules:
|
modules:
|
||||||
- object: orig/GMPE01_00/files/dll/_minigameDll.rel
|
- object: files/dll/_minigameDll.rel
|
||||||
hash: 3fbbebc0440f0d91432ecd6a27ef68d5309b87b6
|
hash: 3fbbebc0440f0d91432ecd6a27ef68d5309b87b6
|
||||||
symbols: config/GMPE01_00/rels/_minigameDll/symbols.txt
|
symbols: config/GMPE01_00/rels/_minigameDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/_minigameDll/splits.txt
|
splits: config/GMPE01_00/rels/_minigameDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/bootDll.rel
|
- object: files/dll/bootDll.rel
|
||||||
hash: bdfca4f9bce60519badca0d2d0a5b71f6d99706f
|
hash: bdfca4f9bce60519badca0d2d0a5b71f6d99706f
|
||||||
symbols: config/GMPE01_00/rels/bootDll/symbols.txt
|
symbols: config/GMPE01_00/rels/bootDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/bootDll/splits.txt
|
splits: config/GMPE01_00/rels/bootDll/splits.txt
|
||||||
|
|
@ -21,487 +22,487 @@ modules:
|
||||||
- symbol: logoNintendoData
|
- symbol: logoNintendoData
|
||||||
binary: logoNintendoData.bin
|
binary: logoNintendoData.bin
|
||||||
header: logoNintendoData.inc
|
header: logoNintendoData.inc
|
||||||
- object: orig/GMPE01_00/files/dll/instDll.rel
|
- object: files/dll/instDll.rel
|
||||||
hash: f09399fee83c63abfe2adb25341152adad959a93
|
hash: f09399fee83c63abfe2adb25341152adad959a93
|
||||||
symbols: config/GMPE01_00/rels/instDll/symbols.txt
|
symbols: config/GMPE01_00/rels/instDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/instDll/splits.txt
|
splits: config/GMPE01_00/rels/instDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m302Dll.rel
|
- object: files/dll/m302Dll.rel
|
||||||
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
||||||
symbols: config/GMPE01_00/rels/m302Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m302Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m302Dll/splits.txt
|
splits: config/GMPE01_00/rels/m302Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m303Dll.rel
|
- object: files/dll/m303Dll.rel
|
||||||
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
||||||
symbols: config/GMPE01_00/rels/m303Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m303Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m303Dll/splits.txt
|
splits: config/GMPE01_00/rels/m303Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m330Dll.rel
|
- object: files/dll/m330Dll.rel
|
||||||
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
||||||
symbols: config/GMPE01_00/rels/m330Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m330Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m330Dll/splits.txt
|
splits: config/GMPE01_00/rels/m330Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m333Dll.rel
|
- object: files/dll/m333Dll.rel
|
||||||
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
hash: f1ad7b5a5198a14d34141b28c654bc1704c9dcd9
|
||||||
symbols: config/GMPE01_00/rels/m333Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m333Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m333Dll/splits.txt
|
splits: config/GMPE01_00/rels/m333Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m402Dll.rel
|
- object: files/dll/m402Dll.rel
|
||||||
hash: 136d192a1464e593cd0b767691dfa012c58730ed
|
hash: 136d192a1464e593cd0b767691dfa012c58730ed
|
||||||
symbols: config/GMPE01_00/rels/m402Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m402Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m402Dll/splits.txt
|
splits: config/GMPE01_00/rels/m402Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m403Dll.rel
|
- object: files/dll/m403Dll.rel
|
||||||
hash: b834eb5f8a2749f3be52aa9023cc81403075eba9
|
hash: b834eb5f8a2749f3be52aa9023cc81403075eba9
|
||||||
symbols: config/GMPE01_00/rels/m403Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m403Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m403Dll/splits.txt
|
splits: config/GMPE01_00/rels/m403Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m404Dll.rel
|
- object: files/dll/m404Dll.rel
|
||||||
hash: c46b7814cefa8e5dee8dfd1883e369877ac78c0c
|
hash: c46b7814cefa8e5dee8dfd1883e369877ac78c0c
|
||||||
symbols: config/GMPE01_00/rels/m404Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m404Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m404Dll/splits.txt
|
splits: config/GMPE01_00/rels/m404Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m405Dll.rel
|
- object: files/dll/m405Dll.rel
|
||||||
hash: 7857e0822079d0c7bbfec756a7cf4206b754d100
|
hash: 7857e0822079d0c7bbfec756a7cf4206b754d100
|
||||||
symbols: config/GMPE01_00/rels/m405Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m405Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m405Dll/splits.txt
|
splits: config/GMPE01_00/rels/m405Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m406Dll.rel
|
- object: files/dll/m406Dll.rel
|
||||||
hash: bea398ac8abe018dce80914e6b3d6d7578eb86bb
|
hash: bea398ac8abe018dce80914e6b3d6d7578eb86bb
|
||||||
symbols: config/GMPE01_00/rels/m406Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m406Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m406Dll/splits.txt
|
splits: config/GMPE01_00/rels/m406Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m407dll.rel
|
- object: files/dll/m407dll.rel
|
||||||
hash: 6f63338c417ab62740a40f0968c03c570b440b8a
|
hash: 6f63338c417ab62740a40f0968c03c570b440b8a
|
||||||
symbols: config/GMPE01_00/rels/m407dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m407dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m407dll/splits.txt
|
splits: config/GMPE01_00/rels/m407dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m408Dll.rel
|
- object: files/dll/m408Dll.rel
|
||||||
hash: 7a8ff34b4bcaff39037c9e2f717505cbc63d4230
|
hash: 7a8ff34b4bcaff39037c9e2f717505cbc63d4230
|
||||||
symbols: config/GMPE01_00/rels/m408Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m408Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m408Dll/splits.txt
|
splits: config/GMPE01_00/rels/m408Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m409Dll.rel
|
- object: files/dll/m409Dll.rel
|
||||||
hash: 984f031fc50121369d5b04d1ec2c54322efdf281
|
hash: 984f031fc50121369d5b04d1ec2c54322efdf281
|
||||||
symbols: config/GMPE01_00/rels/m409Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m409Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m409Dll/splits.txt
|
splits: config/GMPE01_00/rels/m409Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m410Dll.rel
|
- object: files/dll/m410Dll.rel
|
||||||
hash: 94e308e409038f7919177d190110ce589cc8a8e8
|
hash: 94e308e409038f7919177d190110ce589cc8a8e8
|
||||||
symbols: config/GMPE01_00/rels/m410Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m410Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m410Dll/splits.txt
|
splits: config/GMPE01_00/rels/m410Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m411Dll.rel
|
- object: files/dll/m411Dll.rel
|
||||||
hash: 26ac81a3db9f3850bb43b23cdb7168dcddccaeea
|
hash: 26ac81a3db9f3850bb43b23cdb7168dcddccaeea
|
||||||
symbols: config/GMPE01_00/rels/m411Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m411Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m411Dll/splits.txt
|
splits: config/GMPE01_00/rels/m411Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m412Dll.rel
|
- object: files/dll/m412Dll.rel
|
||||||
hash: 3ebb173a52aaea75acb414f73264e72a2943c6f8
|
hash: 3ebb173a52aaea75acb414f73264e72a2943c6f8
|
||||||
symbols: config/GMPE01_00/rels/m412Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m412Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m412Dll/splits.txt
|
splits: config/GMPE01_00/rels/m412Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m413Dll.rel
|
- object: files/dll/m413Dll.rel
|
||||||
hash: e59d4b66b1f57637c335b4745a696e3dbcb4bbe3
|
hash: e59d4b66b1f57637c335b4745a696e3dbcb4bbe3
|
||||||
symbols: config/GMPE01_00/rels/m413Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m413Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m413Dll/splits.txt
|
splits: config/GMPE01_00/rels/m413Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m414Dll.rel
|
- object: files/dll/m414Dll.rel
|
||||||
hash: f7fe1aa24c7b6b8ca2bb28922696c0392dc7d029
|
hash: f7fe1aa24c7b6b8ca2bb28922696c0392dc7d029
|
||||||
symbols: config/GMPE01_00/rels/m414Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m414Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m414Dll/splits.txt
|
splits: config/GMPE01_00/rels/m414Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m415Dll.rel
|
- object: files/dll/m415Dll.rel
|
||||||
hash: 3c697b54ebdd01971b99af8c812b4850fa181f4f
|
hash: 3c697b54ebdd01971b99af8c812b4850fa181f4f
|
||||||
symbols: config/GMPE01_00/rels/m415Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m415Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m415Dll/splits.txt
|
splits: config/GMPE01_00/rels/m415Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m416Dll.rel
|
- object: files/dll/m416Dll.rel
|
||||||
hash: d26526935455b26beb2b9eaed1bfae3f3f458c25
|
hash: d26526935455b26beb2b9eaed1bfae3f3f458c25
|
||||||
symbols: config/GMPE01_00/rels/m416Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m416Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m416Dll/splits.txt
|
splits: config/GMPE01_00/rels/m416Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m417Dll.rel
|
- object: files/dll/m417Dll.rel
|
||||||
hash: b5c3805ec3cb023299ed09b782b92441085d0054
|
hash: b5c3805ec3cb023299ed09b782b92441085d0054
|
||||||
symbols: config/GMPE01_00/rels/m417Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m417Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m417Dll/splits.txt
|
splits: config/GMPE01_00/rels/m417Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m418Dll.rel
|
- object: files/dll/m418Dll.rel
|
||||||
hash: 0d02610005c46ad4f47ff51f5e154f9b0d16a4f4
|
hash: 0d02610005c46ad4f47ff51f5e154f9b0d16a4f4
|
||||||
symbols: config/GMPE01_00/rels/m418Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m418Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m418Dll/splits.txt
|
splits: config/GMPE01_00/rels/m418Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m419Dll.rel
|
- object: files/dll/m419Dll.rel
|
||||||
hash: bbceb138b8cc43e578179a7892801633892cb03c
|
hash: bbceb138b8cc43e578179a7892801633892cb03c
|
||||||
symbols: config/GMPE01_00/rels/m419Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m419Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m419Dll/splits.txt
|
splits: config/GMPE01_00/rels/m419Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m420dll.rel
|
- object: files/dll/m420dll.rel
|
||||||
hash: 2ef4ee163bc2aa15f87c8c89afb4f28939f088c8
|
hash: 2ef4ee163bc2aa15f87c8c89afb4f28939f088c8
|
||||||
symbols: config/GMPE01_00/rels/m420dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m420dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m420dll/splits.txt
|
splits: config/GMPE01_00/rels/m420dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m421Dll.rel
|
- object: files/dll/m421Dll.rel
|
||||||
hash: 216a99780a3915d7096385bbcddfc979ab3a4025
|
hash: 216a99780a3915d7096385bbcddfc979ab3a4025
|
||||||
symbols: config/GMPE01_00/rels/m421Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m421Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m421Dll/splits.txt
|
splits: config/GMPE01_00/rels/m421Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m422Dll.rel
|
- object: files/dll/m422Dll.rel
|
||||||
hash: 9ad72ba6c3ac277e521dca2fc1372a5d31c18930
|
hash: 9ad72ba6c3ac277e521dca2fc1372a5d31c18930
|
||||||
symbols: config/GMPE01_00/rels/m422Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m422Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m422Dll/splits.txt
|
splits: config/GMPE01_00/rels/m422Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m423Dll.rel
|
- object: files/dll/m423Dll.rel
|
||||||
hash: 377c6a56b3faf8f991ec4fccaf1972cb41910438
|
hash: 377c6a56b3faf8f991ec4fccaf1972cb41910438
|
||||||
symbols: config/GMPE01_00/rels/m423Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m423Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m423Dll/splits.txt
|
splits: config/GMPE01_00/rels/m423Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m424Dll.rel
|
- object: files/dll/m424Dll.rel
|
||||||
hash: 5814f59970268406bd86a86d0fee5a09359ab506
|
hash: 5814f59970268406bd86a86d0fee5a09359ab506
|
||||||
symbols: config/GMPE01_00/rels/m424Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m424Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m424Dll/splits.txt
|
splits: config/GMPE01_00/rels/m424Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m425Dll.rel
|
- object: files/dll/m425Dll.rel
|
||||||
hash: ecaeae453393d228f2769aab9c022820bcdb58f1
|
hash: ecaeae453393d228f2769aab9c022820bcdb58f1
|
||||||
symbols: config/GMPE01_00/rels/m425Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m425Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m425Dll/splits.txt
|
splits: config/GMPE01_00/rels/m425Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m426Dll.rel
|
- object: files/dll/m426Dll.rel
|
||||||
hash: c240697a57cc08d34e27e89d8d3455454799e8b1
|
hash: c240697a57cc08d34e27e89d8d3455454799e8b1
|
||||||
symbols: config/GMPE01_00/rels/m426Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m426Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m426Dll/splits.txt
|
splits: config/GMPE01_00/rels/m426Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m427Dll.rel
|
- object: files/dll/m427Dll.rel
|
||||||
hash: c78a0857e9c44fb33bd4fdc3e392a15b4dec0431
|
hash: c78a0857e9c44fb33bd4fdc3e392a15b4dec0431
|
||||||
symbols: config/GMPE01_00/rels/m427Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m427Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m427Dll/splits.txt
|
splits: config/GMPE01_00/rels/m427Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m428Dll.rel
|
- object: files/dll/m428Dll.rel
|
||||||
hash: a1d5672d8ef0aac089dda00287fd68bf2bb67807
|
hash: a1d5672d8ef0aac089dda00287fd68bf2bb67807
|
||||||
symbols: config/GMPE01_00/rels/m428Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m428Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m428Dll/splits.txt
|
splits: config/GMPE01_00/rels/m428Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m429Dll.rel
|
- object: files/dll/m429Dll.rel
|
||||||
hash: d25f198ce04aa5ca7b54ada9de52f722bd751447
|
hash: d25f198ce04aa5ca7b54ada9de52f722bd751447
|
||||||
symbols: config/GMPE01_00/rels/m429Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m429Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m429Dll/splits.txt
|
splits: config/GMPE01_00/rels/m429Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m430Dll.rel
|
- object: files/dll/m430Dll.rel
|
||||||
hash: 8bef3e2f51db3afa82dcaf64e209067a58c04bf9
|
hash: 8bef3e2f51db3afa82dcaf64e209067a58c04bf9
|
||||||
symbols: config/GMPE01_00/rels/m430Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m430Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m430Dll/splits.txt
|
splits: config/GMPE01_00/rels/m430Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m431Dll.rel
|
- object: files/dll/m431Dll.rel
|
||||||
hash: 7148ec21ca6e0aa8d213a1dce0aeb9d93a9b496c
|
hash: 7148ec21ca6e0aa8d213a1dce0aeb9d93a9b496c
|
||||||
symbols: config/GMPE01_00/rels/m431Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m431Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m431Dll/splits.txt
|
splits: config/GMPE01_00/rels/m431Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m432Dll.rel
|
- object: files/dll/m432Dll.rel
|
||||||
hash: 096f5a85bb837af68bd491e962eda7726d8d26a0
|
hash: 096f5a85bb837af68bd491e962eda7726d8d26a0
|
||||||
symbols: config/GMPE01_00/rels/m432Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m432Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m432Dll/splits.txt
|
splits: config/GMPE01_00/rels/m432Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m433Dll.rel
|
- object: files/dll/m433Dll.rel
|
||||||
hash: c36f56264ab9cf74b882c2544cdb9b89f6a098cd
|
hash: c36f56264ab9cf74b882c2544cdb9b89f6a098cd
|
||||||
symbols: config/GMPE01_00/rels/m433Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m433Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m433Dll/splits.txt
|
splits: config/GMPE01_00/rels/m433Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m434Dll.rel
|
- object: files/dll/m434Dll.rel
|
||||||
hash: 55912c8441002b61701fc8c769f707c69e2740c1
|
hash: 55912c8441002b61701fc8c769f707c69e2740c1
|
||||||
symbols: config/GMPE01_00/rels/m434Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m434Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m434Dll/splits.txt
|
splits: config/GMPE01_00/rels/m434Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m435Dll.rel
|
- object: files/dll/m435Dll.rel
|
||||||
hash: 56f1fc330e8b97fa426fac3d901b1feed946566e
|
hash: 56f1fc330e8b97fa426fac3d901b1feed946566e
|
||||||
symbols: config/GMPE01_00/rels/m435Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m435Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m435Dll/splits.txt
|
splits: config/GMPE01_00/rels/m435Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m436Dll.rel
|
- object: files/dll/m436Dll.rel
|
||||||
hash: e53f3d381bfb99351483e70b9d79c2e8676f73d5
|
hash: e53f3d381bfb99351483e70b9d79c2e8676f73d5
|
||||||
symbols: config/GMPE01_00/rels/m436Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m436Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m436Dll/splits.txt
|
splits: config/GMPE01_00/rels/m436Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m437Dll.rel
|
- object: files/dll/m437Dll.rel
|
||||||
hash: 404698b53acad1231e00d84d0196ddce8d9d9dd9
|
hash: 404698b53acad1231e00d84d0196ddce8d9d9dd9
|
||||||
symbols: config/GMPE01_00/rels/m437Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m437Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m437Dll/splits.txt
|
splits: config/GMPE01_00/rels/m437Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m438Dll.rel
|
- object: files/dll/m438Dll.rel
|
||||||
hash: 9bddf4b81b9a792260000abe2631da493a8b8564
|
hash: 9bddf4b81b9a792260000abe2631da493a8b8564
|
||||||
symbols: config/GMPE01_00/rels/m438Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m438Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m438Dll/splits.txt
|
splits: config/GMPE01_00/rels/m438Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m439Dll.rel
|
- object: files/dll/m439Dll.rel
|
||||||
hash: a2a18c9d26dedfa8e2ae003c3a2e1bdcc1cbd4cc
|
hash: a2a18c9d26dedfa8e2ae003c3a2e1bdcc1cbd4cc
|
||||||
symbols: config/GMPE01_00/rels/m439Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m439Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m439Dll/splits.txt
|
splits: config/GMPE01_00/rels/m439Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m440Dll.rel
|
- object: files/dll/m440Dll.rel
|
||||||
hash: 227ca13bcd72059bdd506e9611d9b52f661af6c5
|
hash: 227ca13bcd72059bdd506e9611d9b52f661af6c5
|
||||||
symbols: config/GMPE01_00/rels/m440Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m440Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m440Dll/splits.txt
|
splits: config/GMPE01_00/rels/m440Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m441Dll.rel
|
- object: files/dll/m441Dll.rel
|
||||||
hash: d6cbf72115374e06ffea3f15001977c288a9c3fb
|
hash: d6cbf72115374e06ffea3f15001977c288a9c3fb
|
||||||
symbols: config/GMPE01_00/rels/m441Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m441Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m441Dll/splits.txt
|
splits: config/GMPE01_00/rels/m441Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m442Dll.rel
|
- object: files/dll/m442Dll.rel
|
||||||
hash: 347fcb836b5266dfe3d1088e1aa796c043b0fe60
|
hash: 347fcb836b5266dfe3d1088e1aa796c043b0fe60
|
||||||
symbols: config/GMPE01_00/rels/m442Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m442Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m442Dll/splits.txt
|
splits: config/GMPE01_00/rels/m442Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m443Dll.rel
|
- object: files/dll/m443Dll.rel
|
||||||
hash: 77444c6739a4d9390f30ba56c5fcd82ee4efc0c2
|
hash: 77444c6739a4d9390f30ba56c5fcd82ee4efc0c2
|
||||||
symbols: config/GMPE01_00/rels/m443Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m443Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m443Dll/splits.txt
|
splits: config/GMPE01_00/rels/m443Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m444dll.rel
|
- object: files/dll/m444dll.rel
|
||||||
hash: 76154b165cd86472ce3155028ea049ba0a0f3dcb
|
hash: 76154b165cd86472ce3155028ea049ba0a0f3dcb
|
||||||
symbols: config/GMPE01_00/rels/m444dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m444dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m444dll/splits.txt
|
splits: config/GMPE01_00/rels/m444dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m445Dll.rel
|
- object: files/dll/m445Dll.rel
|
||||||
hash: d4d9f2aad53aa7f4e1c313438a0e3767f8e58eb9
|
hash: d4d9f2aad53aa7f4e1c313438a0e3767f8e58eb9
|
||||||
symbols: config/GMPE01_00/rels/m445Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m445Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m445Dll/splits.txt
|
splits: config/GMPE01_00/rels/m445Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m446dll.rel
|
- object: files/dll/m446dll.rel
|
||||||
hash: 4b16e5eff613eaf4cc98411809cd1f1578e33fd1
|
hash: 4b16e5eff613eaf4cc98411809cd1f1578e33fd1
|
||||||
symbols: config/GMPE01_00/rels/m446dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m446dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m446dll/splits.txt
|
splits: config/GMPE01_00/rels/m446dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m447dll.rel
|
- object: files/dll/m447dll.rel
|
||||||
hash: 775ca8f8b3be867ad67f91bc3b6ebcc8c3068d2b
|
hash: 775ca8f8b3be867ad67f91bc3b6ebcc8c3068d2b
|
||||||
symbols: config/GMPE01_00/rels/m447dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m447dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m447dll/splits.txt
|
splits: config/GMPE01_00/rels/m447dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m448Dll.rel
|
- object: files/dll/m448Dll.rel
|
||||||
hash: e6f7586dadbe3f5b5045c0bdf2fe618d42ef3a44
|
hash: e6f7586dadbe3f5b5045c0bdf2fe618d42ef3a44
|
||||||
symbols: config/GMPE01_00/rels/m448Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m448Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m448Dll/splits.txt
|
splits: config/GMPE01_00/rels/m448Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m449Dll.rel
|
- object: files/dll/m449Dll.rel
|
||||||
hash: e797c2ff132ab35e768be62cb62219592464ca9d
|
hash: e797c2ff132ab35e768be62cb62219592464ca9d
|
||||||
symbols: config/GMPE01_00/rels/m449Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m449Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m449Dll/splits.txt
|
splits: config/GMPE01_00/rels/m449Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m450Dll.rel
|
- object: files/dll/m450Dll.rel
|
||||||
hash: f2ea7da07cf8be4f449c97b829d3231911e158a0
|
hash: f2ea7da07cf8be4f449c97b829d3231911e158a0
|
||||||
symbols: config/GMPE01_00/rels/m450Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m450Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m450Dll/splits.txt
|
splits: config/GMPE01_00/rels/m450Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m451Dll.rel
|
- object: files/dll/m451Dll.rel
|
||||||
hash: 3f82fd24071582b6494a9f99750c0bc3c10d502e
|
hash: 3f82fd24071582b6494a9f99750c0bc3c10d502e
|
||||||
symbols: config/GMPE01_00/rels/m451Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m451Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m451Dll/splits.txt
|
splits: config/GMPE01_00/rels/m451Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m453Dll.rel
|
- object: files/dll/m453Dll.rel
|
||||||
hash: 49ef28c2862000fae4d8efd8fec0ff9b41f24461
|
hash: 49ef28c2862000fae4d8efd8fec0ff9b41f24461
|
||||||
symbols: config/GMPE01_00/rels/m453Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m453Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m453Dll/splits.txt
|
splits: config/GMPE01_00/rels/m453Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m455Dll.rel
|
- object: files/dll/m455Dll.rel
|
||||||
hash: e0b21cfbe592955c84662ff50d8a33e147403906
|
hash: e0b21cfbe592955c84662ff50d8a33e147403906
|
||||||
symbols: config/GMPE01_00/rels/m455Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m455Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m455Dll/splits.txt
|
splits: config/GMPE01_00/rels/m455Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m456Dll.rel
|
- object: files/dll/m456Dll.rel
|
||||||
hash: 97d5701b151c6ad8cf8cea6e776973daa95eea34
|
hash: 97d5701b151c6ad8cf8cea6e776973daa95eea34
|
||||||
symbols: config/GMPE01_00/rels/m456Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m456Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m456Dll/splits.txt
|
splits: config/GMPE01_00/rels/m456Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m457Dll.rel
|
- object: files/dll/m457Dll.rel
|
||||||
hash: d4a411f9ef850f52506afd1ad1de88d2d8de361b
|
hash: d4a411f9ef850f52506afd1ad1de88d2d8de361b
|
||||||
symbols: config/GMPE01_00/rels/m457Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m457Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m457Dll/splits.txt
|
splits: config/GMPE01_00/rels/m457Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m458Dll.rel
|
- object: files/dll/m458Dll.rel
|
||||||
hash: 7ac361c5a04f83d46f516a13a43e43b59b929435
|
hash: 7ac361c5a04f83d46f516a13a43e43b59b929435
|
||||||
symbols: config/GMPE01_00/rels/m458Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m458Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m458Dll/splits.txt
|
splits: config/GMPE01_00/rels/m458Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m459dll.rel
|
- object: files/dll/m459dll.rel
|
||||||
hash: 1aafc4f38ddfee64ea8f7dda7cbd7113e86997ba
|
hash: 1aafc4f38ddfee64ea8f7dda7cbd7113e86997ba
|
||||||
symbols: config/GMPE01_00/rels/m459dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m459dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m459dll/splits.txt
|
splits: config/GMPE01_00/rels/m459dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m460Dll.rel
|
- object: files/dll/m460Dll.rel
|
||||||
hash: 5d28f1a87edee5216b9bb28d9cbff2b22d617747
|
hash: 5d28f1a87edee5216b9bb28d9cbff2b22d617747
|
||||||
symbols: config/GMPE01_00/rels/m460Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m460Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m460Dll/splits.txt
|
splits: config/GMPE01_00/rels/m460Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m461Dll.rel
|
- object: files/dll/m461Dll.rel
|
||||||
hash: ab058151bd25600f05f8b6fedbec1c7448175123
|
hash: ab058151bd25600f05f8b6fedbec1c7448175123
|
||||||
symbols: config/GMPE01_00/rels/m461Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m461Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m461Dll/splits.txt
|
splits: config/GMPE01_00/rels/m461Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m462Dll.rel
|
- object: files/dll/m462Dll.rel
|
||||||
hash: 78d6ab00677791ece684a0c149d1ae72efc52d1c
|
hash: 78d6ab00677791ece684a0c149d1ae72efc52d1c
|
||||||
symbols: config/GMPE01_00/rels/m462Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m462Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m462Dll/splits.txt
|
splits: config/GMPE01_00/rels/m462Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/m463Dll.rel
|
- object: files/dll/m463Dll.rel
|
||||||
hash: 32010595b4fd0b75293fc46b9026c5613d0ea4c2
|
hash: 32010595b4fd0b75293fc46b9026c5613d0ea4c2
|
||||||
symbols: config/GMPE01_00/rels/m463Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m463Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m463Dll/splits.txt
|
splits: config/GMPE01_00/rels/m463Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mentDll.rel
|
- object: files/dll/mentDll.rel
|
||||||
hash: 9e63dd96943ffd2747be5aad924b95892d46051a
|
hash: 9e63dd96943ffd2747be5aad924b95892d46051a
|
||||||
symbols: config/GMPE01_00/rels/mentDll/symbols.txt
|
symbols: config/GMPE01_00/rels/mentDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mentDll/splits.txt
|
splits: config/GMPE01_00/rels/mentDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/messDll.rel
|
- object: files/dll/messDll.rel
|
||||||
hash: 7e119de456b3557dcf514c70bd7ab81dc5f9cf54
|
hash: 7e119de456b3557dcf514c70bd7ab81dc5f9cf54
|
||||||
symbols: config/GMPE01_00/rels/messDll/symbols.txt
|
symbols: config/GMPE01_00/rels/messDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/messDll/splits.txt
|
splits: config/GMPE01_00/rels/messDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mgmodedll.rel
|
- object: files/dll/mgmodedll.rel
|
||||||
hash: 376c78e2d1b7d7a429959c532e9cb92c98f73b7e
|
hash: 376c78e2d1b7d7a429959c532e9cb92c98f73b7e
|
||||||
symbols: config/GMPE01_00/rels/mgmodedll/symbols.txt
|
symbols: config/GMPE01_00/rels/mgmodedll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mgmodedll/splits.txt
|
splits: config/GMPE01_00/rels/mgmodedll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/modeltestDll.rel
|
- object: files/dll/modeltestDll.rel
|
||||||
hash: 8de28c0f254a2c574c4da9b6a3a17e5ad7ffe1f9
|
hash: 8de28c0f254a2c574c4da9b6a3a17e5ad7ffe1f9
|
||||||
symbols: config/GMPE01_00/rels/modeltestDll/symbols.txt
|
symbols: config/GMPE01_00/rels/modeltestDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/modeltestDll/splits.txt
|
splits: config/GMPE01_00/rels/modeltestDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/modeseldll.rel
|
- object: files/dll/modeseldll.rel
|
||||||
hash: bdf8cd57fa23f07c429393817037ade04e2c6024
|
hash: bdf8cd57fa23f07c429393817037ade04e2c6024
|
||||||
symbols: config/GMPE01_00/rels/modeseldll/symbols.txt
|
symbols: config/GMPE01_00/rels/modeseldll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/modeseldll/splits.txt
|
splits: config/GMPE01_00/rels/modeseldll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mpexDll.rel
|
- object: files/dll/mpexDll.rel
|
||||||
hash: 4524e63b63510b42bca907f72e67affddec856f9
|
hash: 4524e63b63510b42bca907f72e67affddec856f9
|
||||||
symbols: config/GMPE01_00/rels/mpexDll/symbols.txt
|
symbols: config/GMPE01_00/rels/mpexDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mpexDll/splits.txt
|
splits: config/GMPE01_00/rels/mpexDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/msetupDll.rel
|
- object: files/dll/msetupDll.rel
|
||||||
hash: 86ff8288bb92472376d02cade1d3c9603b613c57
|
hash: 86ff8288bb92472376d02cade1d3c9603b613c57
|
||||||
symbols: config/GMPE01_00/rels/msetupDll/symbols.txt
|
symbols: config/GMPE01_00/rels/msetupDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/msetupDll/splits.txt
|
splits: config/GMPE01_00/rels/msetupDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mstory2Dll.rel
|
- object: files/dll/mstory2Dll.rel
|
||||||
hash: 7579ff7aa9638488d876dbb61d3e4b868974a040
|
hash: 7579ff7aa9638488d876dbb61d3e4b868974a040
|
||||||
symbols: config/GMPE01_00/rels/mstory2Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/mstory2Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mstory2Dll/splits.txt
|
splits: config/GMPE01_00/rels/mstory2Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mstory3Dll.rel
|
- object: files/dll/mstory3Dll.rel
|
||||||
hash: 951f1951eac515fce1d3314059f27fdc7b39f035
|
hash: 951f1951eac515fce1d3314059f27fdc7b39f035
|
||||||
symbols: config/GMPE01_00/rels/mstory3Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/mstory3Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mstory3Dll/splits.txt
|
splits: config/GMPE01_00/rels/mstory3Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mstory4Dll.rel
|
- object: files/dll/mstory4Dll.rel
|
||||||
hash: 7f9cc4a18a137f861b2c326b099c02ba4e5bd94b
|
hash: 7f9cc4a18a137f861b2c326b099c02ba4e5bd94b
|
||||||
symbols: config/GMPE01_00/rels/mstory4Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/mstory4Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mstory4Dll/splits.txt
|
splits: config/GMPE01_00/rels/mstory4Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/mstoryDll.rel
|
- object: files/dll/mstoryDll.rel
|
||||||
hash: 979a83f2d6f5200e2de4333ec8f943701a250131
|
hash: 979a83f2d6f5200e2de4333ec8f943701a250131
|
||||||
symbols: config/GMPE01_00/rels/mstoryDll/symbols.txt
|
symbols: config/GMPE01_00/rels/mstoryDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/mstoryDll/splits.txt
|
splits: config/GMPE01_00/rels/mstoryDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/nisDll.rel
|
- object: files/dll/nisDll.rel
|
||||||
hash: d74a5147245a1877b140ee2af7f75b2b6c90892d
|
hash: d74a5147245a1877b140ee2af7f75b2b6c90892d
|
||||||
symbols: config/GMPE01_00/rels/nisDll/symbols.txt
|
symbols: config/GMPE01_00/rels/nisDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/nisDll/splits.txt
|
splits: config/GMPE01_00/rels/nisDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/option.rel
|
- object: files/dll/option.rel
|
||||||
hash: 5c6973fe7e0271885a5a87d87d4e7164ef711abb
|
hash: 5c6973fe7e0271885a5a87d87d4e7164ef711abb
|
||||||
symbols: config/GMPE01_00/rels/option/symbols.txt
|
symbols: config/GMPE01_00/rels/option/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/option/splits.txt
|
splits: config/GMPE01_00/rels/option/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/present.rel
|
- object: files/dll/present.rel
|
||||||
hash: ddb8d8a825578a588276b9d4f65eceee26f91253
|
hash: ddb8d8a825578a588276b9d4f65eceee26f91253
|
||||||
symbols: config/GMPE01_00/rels/present/symbols.txt
|
symbols: config/GMPE01_00/rels/present/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/present/splits.txt
|
splits: config/GMPE01_00/rels/present/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/resultDll.rel
|
- object: files/dll/resultDll.rel
|
||||||
hash: 41a820438884ae8566f34f895198a186aae60305
|
hash: 41a820438884ae8566f34f895198a186aae60305
|
||||||
symbols: config/GMPE01_00/rels/resultDll/symbols.txt
|
symbols: config/GMPE01_00/rels/resultDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/resultDll/splits.txt
|
splits: config/GMPE01_00/rels/resultDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/safDll.rel
|
- object: files/dll/safDll.rel
|
||||||
hash: f34c104078b41971412cb09b37c4dc9526be02e3
|
hash: f34c104078b41971412cb09b37c4dc9526be02e3
|
||||||
symbols: config/GMPE01_00/rels/safDll/symbols.txt
|
symbols: config/GMPE01_00/rels/safDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/safDll/splits.txt
|
splits: config/GMPE01_00/rels/safDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/selmenuDll.rel
|
- object: files/dll/selmenuDll.rel
|
||||||
hash: 81a00a71b8d1ab22bfd3df10d815c87ba618ec84
|
hash: 81a00a71b8d1ab22bfd3df10d815c87ba618ec84
|
||||||
symbols: config/GMPE01_00/rels/selmenuDll/symbols.txt
|
symbols: config/GMPE01_00/rels/selmenuDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/selmenuDll/splits.txt
|
splits: config/GMPE01_00/rels/selmenuDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/staffDll.rel
|
- object: files/dll/staffDll.rel
|
||||||
hash: a6210fbcdf3d7f0063f3052e2ae525abacac08e7
|
hash: a6210fbcdf3d7f0063f3052e2ae525abacac08e7
|
||||||
symbols: config/GMPE01_00/rels/staffDll/symbols.txt
|
symbols: config/GMPE01_00/rels/staffDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/staffDll/splits.txt
|
splits: config/GMPE01_00/rels/staffDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/subchrselDll.rel
|
- object: files/dll/subchrselDll.rel
|
||||||
hash: 7488bc249dc7c656f60105e4d24c4011983c2ba2
|
hash: 7488bc249dc7c656f60105e4d24c4011983c2ba2
|
||||||
symbols: config/GMPE01_00/rels/subchrselDll/symbols.txt
|
symbols: config/GMPE01_00/rels/subchrselDll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/subchrselDll/splits.txt
|
splits: config/GMPE01_00/rels/subchrselDll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w01Dll.rel
|
- object: files/dll/w01Dll.rel
|
||||||
hash: d3de36269886995d959e1fd58d8ad806843c8819
|
hash: d3de36269886995d959e1fd58d8ad806843c8819
|
||||||
symbols: config/GMPE01_00/rels/w01Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w01Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w01Dll/splits.txt
|
splits: config/GMPE01_00/rels/w01Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w02Dll.rel
|
- object: files/dll/w02Dll.rel
|
||||||
hash: 750c4d6cd6a49d290f5cc63432d4f65642fbd7e4
|
hash: 750c4d6cd6a49d290f5cc63432d4f65642fbd7e4
|
||||||
symbols: config/GMPE01_00/rels/w02Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w02Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w02Dll/splits.txt
|
splits: config/GMPE01_00/rels/w02Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w03Dll.rel
|
- object: files/dll/w03Dll.rel
|
||||||
hash: f9e8d9c4581d44488adaffa3d46d9bc835d4f9bd
|
hash: f9e8d9c4581d44488adaffa3d46d9bc835d4f9bd
|
||||||
symbols: config/GMPE01_00/rels/w03Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w03Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w03Dll/splits.txt
|
splits: config/GMPE01_00/rels/w03Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w04Dll.rel
|
- object: files/dll/w04Dll.rel
|
||||||
hash: 821126eeb7054150744b925cc4cb06c751ddcefd
|
hash: 821126eeb7054150744b925cc4cb06c751ddcefd
|
||||||
symbols: config/GMPE01_00/rels/w04Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w04Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w04Dll/splits.txt
|
splits: config/GMPE01_00/rels/w04Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w05Dll.rel
|
- object: files/dll/w05Dll.rel
|
||||||
hash: d29f7ccadcba23c8446d05101c4efa5caba26dfd
|
hash: d29f7ccadcba23c8446d05101c4efa5caba26dfd
|
||||||
symbols: config/GMPE01_00/rels/w05Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w05Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w05Dll/splits.txt
|
splits: config/GMPE01_00/rels/w05Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w06Dll.rel
|
- object: files/dll/w06Dll.rel
|
||||||
hash: d11a7a6d44189ba8d1e3a7168ea640ea9f2152fe
|
hash: d11a7a6d44189ba8d1e3a7168ea640ea9f2152fe
|
||||||
symbols: config/GMPE01_00/rels/w06Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w06Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w06Dll/splits.txt
|
splits: config/GMPE01_00/rels/w06Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w10Dll.rel
|
- object: files/dll/w10Dll.rel
|
||||||
hash: 54bb23228b04c5aaa6aa7c8ca1f846baec5a1f2c
|
hash: 54bb23228b04c5aaa6aa7c8ca1f846baec5a1f2c
|
||||||
symbols: config/GMPE01_00/rels/w10Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w10Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w10Dll/splits.txt
|
splits: config/GMPE01_00/rels/w10Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w20Dll.rel
|
- object: files/dll/w20Dll.rel
|
||||||
hash: 98cc41456afa9e1ccbb8e03718b8d3cb64e4e86f
|
hash: 98cc41456afa9e1ccbb8e03718b8d3cb64e4e86f
|
||||||
symbols: config/GMPE01_00/rels/w20Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w20Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w20Dll/splits.txt
|
splits: config/GMPE01_00/rels/w20Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/w21Dll.rel
|
- object: files/dll/w21Dll.rel
|
||||||
hash: b888f2c6703e680699ff8c59ad9200b9d78d30a1
|
hash: b888f2c6703e680699ff8c59ad9200b9d78d30a1
|
||||||
symbols: config/GMPE01_00/rels/w21Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/w21Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/w21Dll/splits.txt
|
splits: config/GMPE01_00/rels/w21Dll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/ztardll.rel
|
- object: files/dll/ztardll.rel
|
||||||
hash: 87d9fee70ed4f011e0b30e05156d087204cf686f
|
hash: 87d9fee70ed4f011e0b30e05156d087204cf686f
|
||||||
symbols: config/GMPE01_00/rels/ztardll/symbols.txt
|
symbols: config/GMPE01_00/rels/ztardll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/ztardll/splits.txt
|
splits: config/GMPE01_00/rels/ztardll/splits.txt
|
||||||
links: []
|
links: []
|
||||||
- object: orig/GMPE01_00/files/dll/E3setupDLL.rel
|
- object: files/dll/E3setupDLL.rel
|
||||||
hash: 234e07cee1491c7060e30805681bf5f39150122d
|
hash: 234e07cee1491c7060e30805681bf5f39150122d
|
||||||
symbols: config/GMPE01_00/rels/E3setupDLL/symbols.txt
|
symbols: config/GMPE01_00/rels/E3setupDLL/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/E3setupDLL/splits.txt
|
splits: config/GMPE01_00/rels/E3setupDLL/splits.txt
|
||||||
links: [_minigameDll]
|
links: [_minigameDll]
|
||||||
- object: orig/GMPE01_00/files/dll/m300Dll.rel
|
- object: files/dll/m300Dll.rel
|
||||||
hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a
|
hash: eba8a17e8b263bc9cd601b1aea7e698a8785416a
|
||||||
symbols: config/GMPE01_00/rels/m300Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m300Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m300Dll/splits.txt
|
splits: config/GMPE01_00/rels/m300Dll/splits.txt
|
||||||
links: [_minigameDll]
|
links: [_minigameDll]
|
||||||
- object: orig/GMPE01_00/files/dll/m401Dll.rel
|
- object: files/dll/m401Dll.rel
|
||||||
hash: f3ec526c25986a3fcf7dfbc8c463626839a3a801
|
hash: f3ec526c25986a3fcf7dfbc8c463626839a3a801
|
||||||
symbols: config/GMPE01_00/rels/m401Dll/symbols.txt
|
symbols: config/GMPE01_00/rels/m401Dll/symbols.txt
|
||||||
splits: config/GMPE01_00/rels/m401Dll/splits.txt
|
splits: config/GMPE01_00/rels/m401Dll/splits.txt
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,15 @@ REL/executor.c:
|
||||||
.text start:0x00000000 end:0x000000A0
|
.text start:0x00000000 end:0x000000A0
|
||||||
|
|
||||||
REL/m420dll/main.c:
|
REL/m420dll/main.c:
|
||||||
.text start:0x000000A0 end:0x00001B8C
|
.text start:0x000000A0 end:0x00000D98
|
||||||
.rodata start:0x00000000 end:0x000000F8
|
.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
|
.data start:0x00000000 end:0x00000050
|
||||||
.bss start:0x00000000 end:0x000000B0
|
.bss start:0x00000030 end:0x000000B0
|
||||||
|
|
||||||
REL/m420dll/player.c:
|
REL/m420dll/player.c:
|
||||||
.text start:0x00001B8C end:0x00004964
|
.text start:0x00001B8C end:0x00004964
|
||||||
|
|
|
||||||
|
|
@ -83,127 +83,129 @@ fn_1_8934 = .text:0x00008934; // type:function size:0x10
|
||||||
fn_1_8944 = .text:0x00008944; // type:function size:0x34
|
fn_1_8944 = .text:0x00008944; // type:function size:0x34
|
||||||
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
|
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
|
||||||
_dtors = .dtors: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
|
__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double
|
||||||
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 data:4byte
|
__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double
|
||||||
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
|
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x54 scope:local data:float
|
||||||
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
|
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x24 scope:local data:float
|
||||||
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
|
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
|
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
|
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
|
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
|
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
|
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
|
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float
|
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
|
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float
|
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float
|
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
|
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double
|
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double
|
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float
|
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double
|
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
|
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double
|
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:float
|
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x160
|
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x60
|
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:float
|
||||||
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
|
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x160 scope:local
|
||||||
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float
|
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x60 scope:local data:float
|
||||||
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float
|
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double
|
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float
|
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float
|
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float
|
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float
|
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float
|
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float
|
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float
|
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float
|
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float
|
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float
|
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x10
|
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float
|
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x1C
|
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x10 scope:local
|
||||||
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double
|
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float
|
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x1C scope:local
|
||||||
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double
|
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float
|
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float
|
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float
|
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float
|
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float
|
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float
|
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:float
|
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x6C
|
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0xC data:4byte
|
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:float
|
||||||
lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0xC data:4byte
|
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x6C scope:local
|
||||||
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float
|
lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0xC scope:local data:float
|
||||||
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float
|
lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0xC scope:local data:float
|
||||||
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float
|
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float
|
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float
|
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float
|
lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float
|
lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float
|
lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float
|
lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float
|
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float
|
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float
|
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float
|
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float
|
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float
|
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float
|
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double
|
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 data:double
|
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double
|
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double
|
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float
|
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float
|
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double
|
lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float
|
lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float
|
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float
|
lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float
|
lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float
|
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float
|
lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float
|
lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float
|
lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double
|
lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double
|
lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float
|
lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double
|
lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float
|
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float
|
lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float
|
lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float
|
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float
|
lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float
|
lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float
|
lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float
|
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float
|
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float
|
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float
|
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float
|
lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x30 data:4byte
|
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x30 data:4byte
|
lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float
|
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x30 scope:local data:float
|
||||||
lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float
|
lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x30 scope:local data:float
|
||||||
lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float
|
lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float
|
lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float
|
lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float
|
lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0xC data:4byte
|
lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float
|
lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double
|
lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0xC scope:local data:4byte
|
||||||
lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float
|
lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float
|
lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float
|
lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float
|
lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:float
|
lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E data:string
|
lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_data_1E = .data:0x0000001E; // type:object size:0x1E data:string
|
lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:float
|
||||||
lbl_1_data_3C = .data:0x0000003C; // type:object size:0x11
|
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:0x11 scope:local data:string
|
||||||
lbl_1_data_50 = .data:0x00000050; // type:object size:0x80
|
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 data:string
|
||||||
lbl_1_data_EC = .data:0x000000EC; // type:object size:0x30
|
lbl_1_data_EC = .data:0x000000EC; // type:object size:0x30
|
||||||
|
|
@ -211,7 +213,7 @@ lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string
|
||||||
lbl_1_data_135 = .data:0x00000135; // type:object size:0x1
|
lbl_1_data_135 = .data:0x00000135; // type:object size:0x1
|
||||||
lbl_1_data_138 = .data:0x00000138; // type:object size:0x1C
|
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_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_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_4 = .bss:0x00000004; // 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_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,11 @@ REL/m443Dll/main.c:
|
||||||
|
|
||||||
REL/m443Dll/map.c:
|
REL/m443Dll/map.c:
|
||||||
.text start:0x00004A5C end:0x00005444
|
.text start:0x00004A5C end:0x00005444
|
||||||
.rodata start:0x000001F0 end:0x00000278
|
.rodata start:0x000001F0 end:0x00000268
|
||||||
.data start:0x00000240 end:0x00000258
|
.data start:0x00000240 end:0x00000258
|
||||||
|
|
||||||
REL/m443Dll/player.c:
|
REL/m443Dll/player.c:
|
||||||
.text start:0x00005444 end:0x00009638
|
.text start:0x00005444 end:0x00009638
|
||||||
.rodata start:0x00000278 end:0x000004E0
|
.rodata start:0x00000268 end:0x000004E0
|
||||||
.data start:0x00000258 end:0x000004F0
|
.data start:0x00000258 end:0x000004F0
|
||||||
.bss start:0x00000078 end:0x000000A0
|
.bss start:0x00000078 end:0x000000A0
|
||||||
|
|
|
||||||
|
|
@ -76,203 +76,205 @@ fn_1_8FFC = .text:0x00008FFC; // type:function size:0x5A8
|
||||||
fn_1_95A4 = .text:0x000095A4; // type:function size:0x94
|
fn_1_95A4 = .text:0x000095A4; // type:function size:0x94
|
||||||
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
|
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
|
||||||
_dtors = .dtors: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
|
__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double
|
||||||
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
|
__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double
|
||||||
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
|
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
|
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
|
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
|
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
|
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
|
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
|
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
|
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
|
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
|
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
|
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
|
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float
|
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float
|
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float
|
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float
|
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float
|
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double
|
lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
|
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
|
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
|
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
|
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float
|
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double
|
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
|
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
|
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
|
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
|
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
|
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
|
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
|
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
|
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double
|
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
|
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double
|
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double
|
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double
|
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float
|
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double
|
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x50
|
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x14 data:4byte
|
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float
|
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x50 scope:local data:float
|
||||||
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float
|
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x14 scope:local data:4byte
|
||||||
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float
|
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double
|
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double
|
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double
|
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double
|
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double
|
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double
|
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double
|
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 data:4byte
|
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x10 data:4byte
|
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float
|
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x10 scope:local data:4byte
|
||||||
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float
|
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x10 scope:local data:4byte
|
||||||
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
|
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
|
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
|
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
|
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
|
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float
|
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float
|
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float
|
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double
|
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double
|
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double
|
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
|
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float
|
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float
|
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float
|
lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC data:4byte
|
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x34 data:4byte
|
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double
|
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0xC scope:local data:4byte
|
||||||
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double
|
lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x34 scope:local data:float
|
||||||
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float
|
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float
|
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float
|
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float
|
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
|
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float
|
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double
|
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x10 data:4byte
|
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float
|
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float
|
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x10 scope:local data:float
|
||||||
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float
|
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float
|
lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float
|
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float
|
lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float
|
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float
|
lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float
|
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float
|
lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double
|
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float
|
lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float
|
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float
|
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float
|
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
|
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float
|
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float
|
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float
|
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float
|
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float
|
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float
|
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float
|
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double
|
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double
|
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double
|
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float
|
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double
|
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double
|
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double
|
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float
|
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float
|
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float
|
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float
|
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double
|
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float
|
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float
|
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float
|
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x40 data:4byte
|
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x10 data:4byte
|
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x10 data:4byte
|
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x40 scope:local data:4byte
|
||||||
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float
|
lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x10 scope:local data:4byte
|
||||||
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float
|
lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x10 scope:local data:4byte
|
||||||
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float
|
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float
|
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float
|
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float
|
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float
|
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float
|
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float
|
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float
|
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float
|
lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float
|
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x20 data:4byte
|
lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float
|
lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float
|
lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x20 scope:local data:4byte
|
||||||
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float
|
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float
|
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float
|
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float
|
lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float
|
lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float
|
lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float
|
lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float
|
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float
|
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float
|
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float
|
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float
|
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float
|
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float
|
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double
|
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float
|
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float
|
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float
|
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float
|
lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float
|
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float
|
lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float
|
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float
|
lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float
|
lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float
|
lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double
|
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double
|
lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float
|
lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float
|
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float
|
lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float
|
lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float
|
lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float
|
lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float
|
lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float
|
lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float
|
lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float
|
lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float
|
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float
|
lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float
|
lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float
|
lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float
|
lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float
|
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float
|
lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float
|
lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float
|
lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float
|
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float
|
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float
|
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float
|
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float
|
lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float
|
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float
|
lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float
|
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float
|
lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float
|
lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 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_0 = .data:0x00000000; // type:object size:0xC
|
||||||
lbl_1_data_C = .data:0x0000000C; // 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_18 = .data:0x00000018; // type:object size:0xC data:float
|
||||||
|
|
@ -280,15 +282,15 @@ 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_28 = .data:0x00000028; // type:object size:0xC data:float
|
||||||
lbl_1_data_34 = .data:0x00000034; // 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_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_60 = .data:0x00000060; // type:object size:0x48
|
||||||
lbl_1_data_A8 = .data:0x000000A8; // 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_F0 = .data:0x000000F0; // type:object size:0x18
|
||||||
lbl_1_data_108 = .data:0x00000108; // type:object size:0x80
|
lbl_1_data_108 = .data:0x00000108; // type:object size:0x80
|
||||||
lbl_1_data_188 = .data:0x00000188; // 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_208 = .data:0x00000208; // type:object size:0x4 data:byte
|
||||||
lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A data:string
|
lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A scope:local data:string
|
||||||
lbl_1_data_226 = .data:0x00000226; // type:object size:0x19 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_240 = .data:0x00000240; // type:object size:0x14
|
||||||
lbl_1_data_264 = .data:0x00000258; // type:object size:0x20
|
lbl_1_data_264 = .data:0x00000258; // type:object size:0x20
|
||||||
lbl_1_data_284 = .data:0x00000284; // type:object size:0x40
|
lbl_1_data_284 = .data:0x00000284; // type:object size:0x40
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0xC scope:local data:
|
||||||
lbl_1_rodata_160 = .rodata:0x00000160; // 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_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_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC scope:local data:4byte
|
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_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_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_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
|
||||||
|
|
@ -267,14 +267,14 @@ lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:
|
||||||
lbl_1_rodata_198 = .rodata:0x00000198; // 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_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_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC scope:local data:4byte
|
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:4byte
|
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:4byte
|
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_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_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:4byte
|
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:4byte
|
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:4byte
|
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_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_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_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double
|
||||||
|
|
@ -392,37 +392,37 @@ lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 scope:local data:str
|
||||||
lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A 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_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_232 = .data:0x00000232; // type:object size:0xE scope:local data:string
|
||||||
lbl_1_data_240 = .data:0x00000240; // type:object size:0x54
|
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_294 = .data:0x00000294; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_298 = .data:0x00000298; // 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:0x18 scope:local data:string
|
||||||
lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x10 data:4byte
|
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_2C4 = .data:0x000002C4; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 data:string
|
lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0x3 scope:local data:string
|
||||||
lbl_1_data_2CB = .data:0x000002CB; // type:object size:0x5 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 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 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:0x29
|
lbl_1_data_2FB = .data:0x000002FB; // type:object size:0x29 scope:local data:string
|
||||||
lbl_1_data_324 = .data:0x00000324; // type:object size:0x4 data:4byte
|
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_328 = .data:0x00000328; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_32C = .data:0x0000032C; // type:object size:0xC 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_338 = .data:0x00000338; // type:object size:0x2B scope:local data:string
|
||||||
lbl_1_data_363 = .data:0x00000363; // type:object size:0x28 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 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 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:0x4
|
lbl_1_data_394 = .data:0x00000394; // type:object size:0x4 scope:local data:string
|
||||||
jumptable_1_data_398 = .data:0x00000398; // type:object size:0x2C scope:local
|
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_3C4 = .data:0x000003C4; // type:object size:0x3C scope:local data:string
|
||||||
lbl_1_data_400 = .data:0x00000400; // type:object size:0x16 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 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 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 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 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 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 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 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 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:0x42
|
lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x42 scope:local data:string
|
||||||
lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C 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_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_56D = .data:0x0000056D; // type:object size:0x1A scope:local data:string
|
||||||
|
|
|
||||||
47
configure.py
47
configure.py
|
|
@ -16,7 +16,15 @@ import argparse
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
from tools.project import *
|
|
||||||
|
from tools.project import (
|
||||||
|
Object,
|
||||||
|
ProgressCategory,
|
||||||
|
ProjectConfig,
|
||||||
|
calculate_progress,
|
||||||
|
generate_build,
|
||||||
|
is_windows,
|
||||||
|
)
|
||||||
|
|
||||||
# Game versions
|
# Game versions
|
||||||
DEFAULT_VERSION = 0
|
DEFAULT_VERSION = 0
|
||||||
|
|
@ -105,6 +113,12 @@ parser.add_argument(
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="builds equivalent (but non-matching) or modded objects",
|
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()
|
args = parser.parse_args()
|
||||||
|
|
||||||
config = ProjectConfig()
|
config = ProjectConfig()
|
||||||
|
|
@ -117,10 +131,10 @@ config.dtk_path = args.dtk
|
||||||
config.objdiff_path = args.objdiff
|
config.objdiff_path = args.objdiff
|
||||||
config.binutils_path = args.binutils
|
config.binutils_path = args.binutils
|
||||||
config.compilers_path = args.compilers
|
config.compilers_path = args.compilers
|
||||||
config.debug = args.debug
|
|
||||||
config.generate_map = args.map
|
config.generate_map = args.map
|
||||||
config.non_matching = args.non_matching
|
config.non_matching = args.non_matching
|
||||||
config.sjiswrap_path = args.sjiswrap
|
config.sjiswrap_path = args.sjiswrap
|
||||||
|
config.progress = args.progress
|
||||||
if not is_windows():
|
if not is_windows():
|
||||||
config.wrapper = args.wrapper
|
config.wrapper = args.wrapper
|
||||||
# Don't build asm unless we're --non-matching
|
# Don't build asm unless we're --non-matching
|
||||||
|
|
@ -130,8 +144,8 @@ if not config.non_matching:
|
||||||
# Tool versions
|
# Tool versions
|
||||||
config.binutils_tag = "2.42-1"
|
config.binutils_tag = "2.42-1"
|
||||||
config.compilers_tag = "20240706"
|
config.compilers_tag = "20240706"
|
||||||
config.dtk_tag = "v0.9.6"
|
config.dtk_tag = "v1.1.4"
|
||||||
config.objdiff_tag = "v2.0.0-beta.6"
|
config.objdiff_tag = "v2.3.3"
|
||||||
config.sjiswrap_tag = "v1.1.1"
|
config.sjiswrap_tag = "v1.1.1"
|
||||||
config.wibo_tag = "0.6.11"
|
config.wibo_tag = "0.6.11"
|
||||||
|
|
||||||
|
|
@ -149,6 +163,10 @@ config.ldflags = [
|
||||||
"-fp hardware",
|
"-fp hardware",
|
||||||
"-nodefaults",
|
"-nodefaults",
|
||||||
]
|
]
|
||||||
|
if args.debug:
|
||||||
|
config.ldflags.append("-g")
|
||||||
|
if args.map:
|
||||||
|
config.ldflags.append("-mapunused")
|
||||||
|
|
||||||
# Base flags, common to most GC/Wii games.
|
# Base flags, common to most GC/Wii games.
|
||||||
# Generally leave untouched, with overrides added below.
|
# Generally leave untouched, with overrides added below.
|
||||||
|
|
@ -178,7 +196,7 @@ cflags_base = [
|
||||||
]
|
]
|
||||||
|
|
||||||
# Debug flags
|
# Debug flags
|
||||||
if config.debug:
|
if args.debug:
|
||||||
cflags_base.extend(["-sym on", "-DDEBUG=1"])
|
cflags_base.extend(["-sym on", "-DDEBUG=1"])
|
||||||
else:
|
else:
|
||||||
cflags_base.append("-DNDEBUG=1")
|
cflags_base.append("-DNDEBUG=1")
|
||||||
|
|
@ -324,6 +342,12 @@ Matching = True # Object matches and should be linked
|
||||||
NonMatching = False # Object does not match and should not 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
|
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_config = True
|
||||||
config.warn_missing_source = False
|
config.warn_missing_source = False
|
||||||
config.libs = [
|
config.libs = [
|
||||||
|
|
@ -952,9 +976,10 @@ config.libs = [
|
||||||
Rel(
|
Rel(
|
||||||
"m420dll", # Fish n' Drips
|
"m420dll", # Fish n' Drips
|
||||||
objects={
|
objects={
|
||||||
Object(NonMatching, "REL/m420dll/main.c"),
|
Object(Matching, "REL/m420dll/main.c"),
|
||||||
Object(NonMatching, "REL/m420dll/player.c"),
|
Object(Matching, "REL/m420dll/camera.c"),
|
||||||
Object(NonMatching, "REL/m420dll/map.c"),
|
Object(Matching, "REL/m420dll/player.c"),
|
||||||
|
Object(Matching, "REL/m420dll/map.c"),
|
||||||
Object(Matching, "REL/m420dll/rand.c"),
|
Object(Matching, "REL/m420dll/rand.c"),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
@ -1118,8 +1143,8 @@ config.libs = [
|
||||||
Rel(
|
Rel(
|
||||||
"m443Dll", # Mario Speedwagons
|
"m443Dll", # Mario Speedwagons
|
||||||
objects={
|
objects={
|
||||||
Object(NonMatching, "REL/m443Dll/main.c"),
|
Object(Matching, "REL/m443Dll/main.c"),
|
||||||
Object(NonMatching, "REL/m443Dll/map.c"),
|
Object(Matching, "REL/m443Dll/map.c"),
|
||||||
Object(NonMatching, "REL/m443Dll/player.c"),
|
Object(NonMatching, "REL/m443Dll/player.c"),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
@ -1300,7 +1325,7 @@ config.libs = [
|
||||||
"mpexDll",
|
"mpexDll",
|
||||||
objects={
|
objects={
|
||||||
Object(Matching, "REL/mpexDll/main.c"),
|
Object(Matching, "REL/mpexDll/main.c"),
|
||||||
Object(NonMatching, "REL/mpexDll/mpex.c"),
|
Object(Matching, "REL/mpexDll/mpex.c"),
|
||||||
Object(Matching, "REL/mpexDll/charsel.c"),
|
Object(Matching, "REL/mpexDll/charsel.c"),
|
||||||
Object(Matching, "REL/mpexDll/mgname.c"),
|
Object(Matching, "REL/mpexDll/mgname.c"),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
68
include/REL/m420dll.h
Normal file
68
include/REL/m420dll.h
Normal file
|
|
@ -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
|
||||||
|
|
@ -1,6 +1,51 @@
|
||||||
#ifndef M443DLL_H
|
#ifndef M443DLL_H
|
||||||
#define M443DLL_H
|
#define M443DLL_H
|
||||||
|
|
||||||
#include "dolphin.h"
|
#include "game/object.h"
|
||||||
|
|
||||||
#endif
|
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;
|
||||||
|
char unk54[0x24];
|
||||||
|
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);
|
||||||
|
s32 fn_1_42CC(void);
|
||||||
|
u32 fn_1_42E4(void);
|
||||||
|
s32 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
|
||||||
|
|
|
||||||
|
|
@ -17,26 +17,35 @@ typedef struct MpexDllUnkStruct {
|
||||||
/* 0x40 */ s32 unk_40;
|
/* 0x40 */ s32 unk_40;
|
||||||
} MpexDllUnkStruct; /* size = 0x44 */
|
} MpexDllUnkStruct; /* size = 0x44 */
|
||||||
|
|
||||||
typedef struct MpexDllUnkStruct2 {
|
|
||||||
/* 0x00 */ char unk00[0x40];
|
|
||||||
/* 0x40 */ s16 *unk_40;
|
|
||||||
/* 0x44 */ char unk44;
|
|
||||||
/* 0x48 */ s16 *unk_48;
|
|
||||||
/* 0x4C */ char unk_4C[0xC];
|
|
||||||
/* 0x58 */ u32 unk_58;
|
|
||||||
} MpexDllUnkStruct2; /* size = unknown */
|
|
||||||
|
|
||||||
void fn_1_374(void);
|
void fn_1_374(void);
|
||||||
void fn_1_298(void);
|
void fn_1_298(void);
|
||||||
void fn_1_910(MpexDllUnkFunc arg0);
|
void fn_1_910(MpexDllUnkFunc arg0);
|
||||||
void fn_1_25C4(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
|
void fn_1_25C4(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4);
|
||||||
void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4);
|
void fn_1_28E0(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4);
|
||||||
s32 fn_1_3044(Process *arg0);
|
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);
|
void fn_1_1B7D0(s32 arg0);
|
||||||
|
|
||||||
s32 fn_1_1D02C(s32 arg0);
|
s32 fn_1_1D02C(s32 arg0);
|
||||||
|
|
||||||
extern u8 lbl_1_bss_6AC;
|
extern u8 lbl_1_bss_6AC;
|
||||||
|
extern s32 lbl_1_bss_63C[0x1C];
|
||||||
|
extern MpexDllUnkStruct lbl_1_bss_64;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef _CTYPE_H
|
#ifndef _CTYPE_H
|
||||||
#define _CTYPE_H
|
#define _CTYPE_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
extern unsigned char __ctype_map[256];
|
extern unsigned char __ctype_map[256];
|
||||||
extern unsigned char __lower_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 __whitespace (__motion_char | __space_char)
|
||||||
#define __control (__motion_char | __control_char)
|
#define __control (__motion_char | __control_char)
|
||||||
|
|
||||||
|
#ifdef __MWERKS__
|
||||||
|
#define DECL_WEAK __declspec(weak)
|
||||||
|
#else
|
||||||
|
#define DECL_WEAK __attribute__((weak))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__declspec(weak) int isalpha(int __c);
|
DECL_WEAK int isalpha(int __c);
|
||||||
__declspec(weak) int isdigit(int __c);
|
DECL_WEAK int isdigit(int __c);
|
||||||
__declspec(weak) int isspace(int __c);
|
DECL_WEAK int isspace(int __c);
|
||||||
__declspec(weak) int isupper(int __c);
|
DECL_WEAK int isupper(int __c);
|
||||||
__declspec(weak) int isxdigit(int __c);
|
DECL_WEAK int isxdigit(int __c);
|
||||||
|
|
||||||
__declspec(weak) int tolower(int __c);
|
DECL_WEAK int tolower(int __c);
|
||||||
__declspec(weak) int toupper(int __c);
|
DECL_WEAK int toupper(int __c);
|
||||||
|
|
||||||
// added underscore to avoid naming conflicts
|
// added underscore to avoid naming conflicts
|
||||||
inline int _isalpha(int c) { return (int)(__ctype_map[(u8)c] & __letter); }
|
inline int _isalpha(int c) { return (int)(__ctype_map[(u8)c] & __letter); }
|
||||||
|
|
@ -48,4 +55,4 @@ extern "C"
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ extern "C" {
|
||||||
#ifdef __MWERKS__
|
#ifdef __MWERKS__
|
||||||
#define AT_ADDRESS(xyz) : (xyz)
|
#define AT_ADDRESS(xyz) : (xyz)
|
||||||
#else
|
#else
|
||||||
#define AT_ADDRESS
|
#define AT_ADDRESS(xyz)
|
||||||
#endif
|
#endif
|
||||||
typedef s64 OSTime;
|
typedef s64 OSTime;
|
||||||
typedef u32 OSTick;
|
typedef u32 OSTick;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
void GWInit(void);
|
void GWInit(void);
|
||||||
void GWGameStatReset(void);
|
void GWGameStatReset(void);
|
||||||
s32 GWMessSpeedGet(void);
|
// s32 GWMessSpeedGet(void);
|
||||||
s32 GWMessDelayGet(void);
|
s32 GWMessDelayGet(void);
|
||||||
void GWMGRecordSet(s32 index, u32 value);
|
void GWMGRecordSet(s32 index, u32 value);
|
||||||
u32 GWMGRecordGet(s32 index);
|
u32 GWMGRecordGet(s32 index);
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ extern s32 omcurdll;
|
||||||
extern s32 omovlhisidx;
|
extern s32 omovlhisidx;
|
||||||
extern s32 omovlevtno;
|
extern s32 omovlevtno;
|
||||||
extern s32 omnextovlevtno;
|
extern s32 omnextovlevtno;
|
||||||
extern s32 omovlstat;
|
extern u32 omovlstat;
|
||||||
extern char omUPauseFlag;
|
extern char omUPauseFlag;
|
||||||
extern s16 omSysExitReq;
|
extern s16 omSysExitReq;
|
||||||
extern s16 omdispinfo;
|
extern s16 omdispinfo;
|
||||||
|
|
@ -134,4 +134,4 @@ extern Vec CenterM[16];
|
||||||
extern float CZoomM[16];
|
extern float CZoomM[16];
|
||||||
extern s16 omDBGMenuButton;
|
extern s16 omDBGMenuButton;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ extern s16 mgTypeCurr;
|
||||||
extern s16 mgBattleStar[4];
|
extern s16 mgBattleStar[4];
|
||||||
extern s16 mgBattleStarMax;
|
extern s16 mgBattleStarMax;
|
||||||
extern u8 lbl_801D3E94;
|
extern u8 lbl_801D3E94;
|
||||||
extern s32 mgRecordExtra;
|
extern u32 mgRecordExtra;
|
||||||
extern s32 mgQuitExtraF;
|
extern s32 mgQuitExtraF;
|
||||||
extern s32 mgPracticeEnableF;
|
extern s32 mgPracticeEnableF;
|
||||||
extern s32 mgInstExitEnableF;
|
extern s32 mgInstExitEnableF;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#define _MATH_INLINE static inline
|
#define _MATH_INLINE static inline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __MWERKS__
|
||||||
extern inline float sqrtf(float x)
|
extern inline float sqrtf(float x)
|
||||||
{
|
{
|
||||||
volatile float y;
|
volatile float y;
|
||||||
|
|
@ -21,6 +22,9 @@ extern inline float sqrtf(float x)
|
||||||
}
|
}
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
float sqrtf(float x);
|
||||||
|
#endif
|
||||||
|
|
||||||
double atan(double x);
|
double atan(double x);
|
||||||
double copysign(double x, double y);
|
double copysign(double x, double y);
|
||||||
|
|
@ -38,15 +42,15 @@ double fmod(double x, double y);
|
||||||
double log(double x);
|
double log(double x);
|
||||||
double pow(double x, double y);
|
double pow(double x, double y);
|
||||||
float tanf(float x);
|
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)
|
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 fabsf(float x) { return (float)fabs((double)x); }
|
||||||
_MATH_INLINE float sinf(float x) { return (float)sin((double)x); }
|
_MATH_INLINE float sinf(float x) { return (float)sin((double)x); }
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#ifndef _STDLIB_H
|
#ifndef _STDLIB_H
|
||||||
#define _STDLIB_H
|
#define _STDLIB_H
|
||||||
|
|
||||||
|
#ifdef __MWERKS__
|
||||||
#define abs(x) __abs(x)
|
#define abs(x) __abs(x)
|
||||||
|
#else
|
||||||
|
int abs(int x);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
144
src/REL/m420dll/camera.c
Normal file
144
src/REL/m420dll/camera.c
Normal file
|
|
@ -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);
|
||||||
|
}
|
||||||
254
src/REL/m420dll/main.c
Normal file
254
src/REL/m420dll/main.c
Normal file
|
|
@ -0,0 +1,254 @@
|
||||||
|
#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_sqrt_consts.h"
|
||||||
|
|
||||||
|
#include "REL/m420dll.h"
|
||||||
|
|
||||||
|
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(2, 0, 0x3C);
|
||||||
|
|
||||||
|
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(1, 0, 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 = 0xE10;
|
||||||
|
lbl_1_bss_14 = MGSeqCreate(1, lbl_1_bss_12 / 60, -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) % 60) == 0) {
|
||||||
|
MGSeqParamSet(lbl_1_bss_14, 1, lbl_1_bss_12 / 60);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
1220
src/REL/m420dll/map.c
Normal file
1220
src/REL/m420dll/map.c
Normal file
File diff suppressed because it is too large
Load diff
935
src/REL/m420dll/player.c
Normal file
935
src/REL/m420dll/player.c
Normal file
|
|
@ -0,0 +1,935 @@
|
||||||
|
#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 },
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO MAKE_NUM
|
||||||
|
static const s32 lbl_1_rodata_F8[8][0xB] = {
|
||||||
|
{ 0x5F0000, 0x5F0017, 0x5F0018, 0x5F0068, 0x5F0069, 0x5F006A, 0x5F0035, 0x5F006B, 0x5F006E, 0x5F0049, 0x33001B },
|
||||||
|
{ 0x1A0000, 0x1A0017, 0x1A0018, 0x1A0068, 0x1A0069, 0x1A006A, 0x1A0035, 0x1A006B, 0x1A006E, 0x1A0049, 0x33001C },
|
||||||
|
{ 0x6D0000, 0x6D0017, 0x6D0018, 0x6D0068, 0x6D0069, 0x6D006A, 0x6D0035, 0x6D006B, 0x6D006E, 0x6D0049, 0x33001D },
|
||||||
|
{ 0x8A0000, 0x8A0017, 0x8A0018, 0x8A0068, 0x8A0069, 0x8A006A, 0x8A0035, 0x8A006B, 0x8A006E, 0x8A0049, 0x33001E },
|
||||||
|
{ 0x850000, 0x850017, 0x850018, 0x850068, 0x850069, 0x85006A, 0x850035, 0x85006B, 0x85006E, 0x850049, 0x33001F },
|
||||||
|
{ 0x110000, 0x110017, 0x110018, 0x110068, 0x110069, 0x11006A, 0x110035, 0x11006B, 0x11006E, 0x110049, 0x330020 },
|
||||||
|
{ 0x0D0000, 0x0D0017, 0x0D0018, 0x0D0068, 0x0D0069, 0x0D006A, 0x0D0035, 0x0D006B, 0x0D006E, 0x0D0049, 0x330021 },
|
||||||
|
{ 0x810000, 0x810017, 0x810018, 0x810068, 0x810069, 0x81006A, 0x810035, 0x81006B, 0x81006E, 0x810049, 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, 0x40000002);
|
||||||
|
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
|
||||||
|
Hu3DModelAttrReset(arg0->unk_AC, 0x40000004);
|
||||||
|
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, 0x40000002);
|
||||||
|
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
|
||||||
|
Hu3DModelAttrSet(arg0->unk_AC, 0x40000004);
|
||||||
|
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, 0x40000001);
|
||||||
|
}
|
||||||
|
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, 0x40000002);
|
||||||
|
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, 0x40000002);
|
||||||
|
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, 0x40000002);
|
||||||
|
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
|
||||||
|
Hu3DModelAttrSet(arg0->unk_AC, 0x40000004);
|
||||||
|
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, 0x40000002);
|
||||||
|
Hu3DModelAttrSet(var_r30, 0x40000001);
|
||||||
|
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, 0x40000002);
|
||||||
|
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, 0x40000002);
|
||||||
|
Hu3DModelAttrReset(arg0->unk_AC, 0x40000001);
|
||||||
|
Hu3DModelAttrSet(arg0->unk_AC, 0x40000004);
|
||||||
|
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);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1 +1,183 @@
|
||||||
#include "m443Dll.h"
|
#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], 1);
|
||||||
|
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;
|
||||||
|
PSMTXMultVec(sp5C, &sp8, &sp14);
|
||||||
|
PSVECAdd(&var_r30->unk_1C, &sp14, &sp20);
|
||||||
|
sp2C[var_r29].y += var_f31;
|
||||||
|
PSMTXMultVec(sp5C, &sp2C[var_r29], &sp14);
|
||||||
|
PSVECAdd(&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], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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], 1);
|
||||||
|
}
|
||||||
|
if (fn_1_42E4() == 5) {
|
||||||
|
Hu3DModelAttrReset(object->model[2], 1);
|
||||||
|
Hu3DModelShadowMapSet(object->model[0]);
|
||||||
|
Hu3DModelShadowMapSet(object->model[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +1,16 @@
|
||||||
#include "m443Dll.h"
|
#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"
|
||||||
|
#include "game/frand.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "REL/m443Dll.h"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include "game/audio.h"
|
#include "game/audio.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/hsfmotion.h"
|
#include "game/hsfmotion.h"
|
||||||
|
#include "game/object.h"
|
||||||
#include "game/objsub.h"
|
#include "game/objsub.h"
|
||||||
#include "game/pad.h"
|
#include "game/pad.h"
|
||||||
#include "game/printfunc.h"
|
#include "game/printfunc.h"
|
||||||
|
|
@ -11,6 +12,13 @@
|
||||||
|
|
||||||
#include "REL/mpexDll.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_230();
|
||||||
void fn_1_A70(MpexDllUnkStruct *arg0);
|
void fn_1_A70(MpexDllUnkStruct *arg0);
|
||||||
|
|
||||||
|
|
@ -338,34 +346,34 @@ void fn_1_2228(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float
|
||||||
arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA);
|
arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fn_1_25C4(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
|
void fn_1_25C4(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
|
||||||
{
|
{
|
||||||
switch (arg4) {
|
switch (arg4) {
|
||||||
case 0:
|
case 0:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void fn_1_273C(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
|
void fn_1_273C(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
|
||||||
{
|
{
|
||||||
if (arg0->unk_58 != arg0->unk_48[arg2]) {
|
if (arg0->work[3] != arg0->motion[arg2]) {
|
||||||
arg0->unk_58 = arg0->unk_48[arg2];
|
arg0->work[3] = arg0->motion[arg2];
|
||||||
switch (arg4) {
|
switch (arg4) {
|
||||||
case 0:
|
case 0:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002);
|
Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -373,7 +381,7 @@ void fn_1_273C(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4)
|
||||||
|
|
||||||
void fn_1_28DC(void) { }
|
void fn_1_28DC(void) { }
|
||||||
|
|
||||||
void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4)
|
void fn_1_28E0(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4)
|
||||||
{
|
{
|
||||||
Vec sp4C;
|
Vec sp4C;
|
||||||
Vec sp40;
|
Vec sp40;
|
||||||
|
|
@ -386,17 +394,17 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
|
||||||
s32 var_r28 = 0;
|
s32 var_r28 = 0;
|
||||||
s32 var_r26;
|
s32 var_r26;
|
||||||
|
|
||||||
sp40.x = Hu3DData[arg0->unk_40[arg1]].pos.x;
|
sp40.x = Hu3DData[arg0->model[arg1]].pos.x;
|
||||||
sp40.y = Hu3DData[arg0->unk_40[arg1]].pos.y;
|
sp40.y = Hu3DData[arg0->model[arg1]].pos.y;
|
||||||
sp40.z = Hu3DData[arg0->unk_40[arg1]].pos.z;
|
sp40.z = Hu3DData[arg0->model[arg1]].pos.z;
|
||||||
|
|
||||||
sp34.x = arg2->x;
|
sp34.x = arg2.x;
|
||||||
sp34.y = arg2->y;
|
sp34.y = arg2.y;
|
||||||
sp34.z = arg2->z;
|
sp34.z = arg2.z;
|
||||||
|
|
||||||
sp1C.x = Hu3DData[arg0->unk_40[arg1]].rot.x;
|
sp1C.x = Hu3DData[arg0->model[arg1]].rot.x;
|
||||||
sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y;
|
sp1C.y = Hu3DData[arg0->model[arg1]].rot.y;
|
||||||
sp1C.z = Hu3DData[arg0->unk_40[arg1]].rot.z;
|
sp1C.z = Hu3DData[arg0->model[arg1]].rot.z;
|
||||||
|
|
||||||
sp10.x = 0.0f;
|
sp10.x = 0.0f;
|
||||||
sp10.y = arg8;
|
sp10.y = arg8;
|
||||||
|
|
@ -466,15 +474,15 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
|
||||||
if (arg4 != 0) {
|
if (arg4 != 0) {
|
||||||
sp1C.y = fn_1_1B554(sp1C.y, sp28.y, argA);
|
sp1C.y = fn_1_1B554(sp1C.y, sp28.y, argA);
|
||||||
}
|
}
|
||||||
Hu3DModelPosSet(arg0->unk_40[arg1], sp4C.x, sp40.y, sp4C.z);
|
Hu3DModelPosSet(arg0->model[arg1], sp4C.x, sp40.y, sp4C.z);
|
||||||
Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp1C.y, sp1C.z);
|
Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp1C.y, sp1C.z);
|
||||||
|
|
||||||
if (var_r29 == 2 && var_r28 == 2) {
|
if (var_r29 == 2 && var_r28 == 2) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y;
|
sp1C.y = Hu3DData[arg0->model[arg1]].rot.y;
|
||||||
if (arg4 != 0) {
|
if (arg4 != 0) {
|
||||||
for (var_r26 = 0; var_r26 <= argA; var_r26++) {
|
for (var_r26 = 0; var_r26 <= argA; var_r26++) {
|
||||||
fn_1_1B7D0(1);
|
fn_1_1B7D0(1);
|
||||||
|
|
@ -495,7 +503,7 @@ void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sp10.z = fn_1_1B52C(sp1C.y, sp10.y, var_r26, argA);
|
sp10.z = fn_1_1B52C(sp1C.y, sp10.y, var_r26, argA);
|
||||||
Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp10.z, sp1C.z);
|
Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp10.z, sp1C.z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3499
src/REL/mpexDll/mpex.c
Normal file
3499
src/REL/mpexDll/mpex.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -38,7 +38,7 @@ s32 omcurdll;
|
||||||
s32 omovlhisidx;
|
s32 omovlhisidx;
|
||||||
s32 omovlevtno;
|
s32 omovlevtno;
|
||||||
s32 omnextovlevtno;
|
s32 omnextovlevtno;
|
||||||
s32 omovlstat;
|
u32 omovlstat;
|
||||||
static s32 omnextovlstat;
|
static s32 omnextovlstat;
|
||||||
char omUPauseFlag;
|
char omUPauseFlag;
|
||||||
s16 omSysExitReq;
|
s16 omSysExitReq;
|
||||||
|
|
@ -568,4 +568,4 @@ char omPauseChk(void)
|
||||||
OverlayID omCurrentOvlGet(void)
|
OverlayID omCurrentOvlGet(void)
|
||||||
{
|
{
|
||||||
return omcurovl;
|
return omcurovl;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1166,7 +1166,7 @@ s16 mgTypeCurr;
|
||||||
s16 mgBattleStar[4];
|
s16 mgBattleStar[4];
|
||||||
s16 mgBattleStarMax;
|
s16 mgBattleStarMax;
|
||||||
u8 lbl_801D3E94;
|
u8 lbl_801D3E94;
|
||||||
s32 mgRecordExtra;
|
u32 mgRecordExtra;
|
||||||
s32 mgQuitExtraF;
|
s32 mgQuitExtraF;
|
||||||
s32 mgPracticeEnableF;
|
s32 mgPracticeEnableF;
|
||||||
s32 mgInstExitEnableF;
|
s32 mgInstExitEnableF;
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ include_dirs = [
|
||||||
# Add additional include directories here
|
# Add additional include directories here
|
||||||
]
|
]
|
||||||
|
|
||||||
include_pattern = re.compile(r'^#\s*include\s*[<"](.+?)[>"]$')
|
include_pattern = re.compile(r'^#\s*include\s*[<"](.+?)[>"]')
|
||||||
guard_pattern = re.compile(r"^#\s*ifndef\s+(.*)$")
|
guard_pattern = re.compile(r"^#\s*ifndef\s+(.*)$")
|
||||||
|
|
||||||
defines = set()
|
defines = set()
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ def dtk_url(tag: str) -> str:
|
||||||
repo = "https://github.com/encounter/decomp-toolkit"
|
repo = "https://github.com/encounter/decomp-toolkit"
|
||||||
return f"{repo}/releases/download/{tag}/dtk-{system}-{arch}{suffix}"
|
return f"{repo}/releases/download/{tag}/dtk-{system}-{arch}{suffix}"
|
||||||
|
|
||||||
|
|
||||||
def objdiff_cli_url(tag: str) -> str:
|
def objdiff_cli_url(tag: str) -> str:
|
||||||
uname = platform.uname()
|
uname = platform.uname()
|
||||||
suffix = ""
|
suffix = ""
|
||||||
|
|
|
||||||
681
tools/project.py
681
tools/project.py
|
|
@ -17,7 +17,7 @@ import os
|
||||||
import platform
|
import platform
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Optional, Set, Tuple, Union, cast
|
from typing import IO, Any, Dict, Iterable, List, Optional, Set, Tuple, Union, cast
|
||||||
|
|
||||||
from . import ninja_syntax
|
from . import ninja_syntax
|
||||||
from .ninja_syntax import serialize_path
|
from .ninja_syntax import serialize_path
|
||||||
|
|
@ -41,8 +41,9 @@ class Object:
|
||||||
"asflags": None,
|
"asflags": None,
|
||||||
"asm_dir": None,
|
"asm_dir": None,
|
||||||
"cflags": None,
|
"cflags": None,
|
||||||
"extra_asflags": None,
|
"extra_asflags": [],
|
||||||
"extra_cflags": None,
|
"extra_cflags": [],
|
||||||
|
"extra_clang_flags": [],
|
||||||
"host": None,
|
"host": None,
|
||||||
"lib": None,
|
"lib": None,
|
||||||
"mw_version": None,
|
"mw_version": None,
|
||||||
|
|
@ -81,6 +82,20 @@ class Object:
|
||||||
set_default("shift_jis", config.shift_jis)
|
set_default("shift_jis", config.shift_jis)
|
||||||
set_default("src_dir", config.src_dir)
|
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
|
# Resolve paths
|
||||||
build_dir = config.out_path()
|
build_dir = config.out_path()
|
||||||
obj.src_path = Path(obj.options["src_dir"]) / obj.options["source"]
|
obj.src_path = Path(obj.options["src_dir"]) / obj.options["source"]
|
||||||
|
|
@ -131,7 +146,6 @@ class ProjectConfig:
|
||||||
self.build_rels: bool = True # Build REL files
|
self.build_rels: bool = True # Build REL files
|
||||||
self.check_sha_path: Optional[Path] = None # Path to version.sha1
|
self.check_sha_path: Optional[Path] = None # Path to version.sha1
|
||||||
self.config_path: Optional[Path] = None # Path to config.yml
|
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.generate_map: bool = False # Generate map file(s)
|
||||||
self.asflags: Optional[List[str]] = None # Assembler flags
|
self.asflags: Optional[List[str]] = None # Assembler flags
|
||||||
self.ldflags: Optional[List[str]] = None # Linker flags
|
self.ldflags: Optional[List[str]] = None # Linker flags
|
||||||
|
|
@ -156,14 +170,22 @@ class ProjectConfig:
|
||||||
self.custom_build_steps: Optional[Dict[str, List[Dict[str, Any]]]] = (
|
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"]
|
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, progress.json and report.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_all: bool = True # Include combined "all" category
|
||||||
self.progress_modules: bool = True # Include combined "modules" category
|
self.progress_modules: bool = True # Include combined "modules" category
|
||||||
self.progress_each_module: bool = (
|
self.progress_each_module: bool = (
|
||||||
False # 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.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
|
# Progress fancy printing
|
||||||
self.progress_use_fancy: bool = False
|
self.progress_use_fancy: bool = False
|
||||||
|
|
@ -200,9 +222,40 @@ class ProjectConfig:
|
||||||
out[obj.name] = obj.resolve(self, lib)
|
out[obj.name] = obj.resolve(self, lib)
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
# Gets the output path for build-related files.
|
||||||
def out_path(self) -> Path:
|
def out_path(self) -> Path:
|
||||||
return self.build_dir / str(self.version)
|
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:
|
def is_windows() -> bool:
|
||||||
return os.name == "nt"
|
return os.name == "nt"
|
||||||
|
|
@ -214,11 +267,26 @@ CHAIN = "cmd /c " if is_windows() else ""
|
||||||
EXE = ".exe" if is_windows() else ""
|
EXE = ".exe" if is_windows() else ""
|
||||||
|
|
||||||
|
|
||||||
def make_flags_str(cflags: Union[str, List[str]]) -> str:
|
def file_is_asm(path: Path) -> bool:
|
||||||
if isinstance(cflags, list):
|
return path.suffix.lower() == ".s"
|
||||||
return " ".join(cflags)
|
|
||||||
else:
|
|
||||||
return cflags
|
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
|
# Load decomp-toolkit generated config.json
|
||||||
|
|
@ -235,14 +303,14 @@ def load_build_config(
|
||||||
build_config: Dict[str, Any] = json.load(f)
|
build_config: Dict[str, Any] = json.load(f)
|
||||||
config_version = build_config.get("version")
|
config_version = build_config.get("version")
|
||||||
if config_version is None:
|
if config_version is None:
|
||||||
# Invalid config.json
|
print("Invalid config.json, regenerating...")
|
||||||
f.close()
|
f.close()
|
||||||
os.remove(build_config_path)
|
os.remove(build_config_path)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
dtk_version = str(config.dtk_tag)[1:] # Strip v
|
dtk_version = str(config.dtk_tag)[1:] # Strip v
|
||||||
if versiontuple(config_version) < versiontuple(dtk_version):
|
if versiontuple(config_version) < versiontuple(dtk_version):
|
||||||
# Outdated config.json
|
print("Outdated config.json, regenerating...")
|
||||||
f.close()
|
f.close()
|
||||||
os.remove(build_config_path)
|
os.remove(build_config_path)
|
||||||
return None
|
return None
|
||||||
|
|
@ -251,13 +319,14 @@ def load_build_config(
|
||||||
return 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:
|
def generate_build(config: ProjectConfig) -> None:
|
||||||
config.validate()
|
config.validate()
|
||||||
objects = config.objects()
|
objects = config.objects()
|
||||||
build_config = load_build_config(config, config.out_path() / "config.json")
|
build_config = load_build_config(config, config.out_path() / "config.json")
|
||||||
generate_build_ninja(config, objects, build_config)
|
generate_build_ninja(config, objects, build_config)
|
||||||
generate_objdiff_config(config, objects, build_config)
|
generate_objdiff_config(config, objects, build_config)
|
||||||
|
generate_compile_commands(config, objects, build_config)
|
||||||
|
|
||||||
|
|
||||||
# Generate build.ninja
|
# Generate build.ninja
|
||||||
|
|
@ -283,12 +352,7 @@ def generate_build_ninja(
|
||||||
# Variables
|
# Variables
|
||||||
###
|
###
|
||||||
n.comment("Variables")
|
n.comment("Variables")
|
||||||
ldflags = " ".join(config.ldflags or [])
|
n.variable("ldflags", make_flags_str(config.ldflags))
|
||||||
if config.generate_map:
|
|
||||||
ldflags += " -mapunused"
|
|
||||||
if config.debug:
|
|
||||||
ldflags += " -g"
|
|
||||||
n.variable("ldflags", ldflags)
|
|
||||||
if config.linker_version is None:
|
if config.linker_version is None:
|
||||||
sys.exit("ProjectConfig.linker_version missing")
|
sys.exit("ProjectConfig.linker_version missing")
|
||||||
n.variable("mw_version", Path(config.linker_version))
|
n.variable("mw_version", Path(config.linker_version))
|
||||||
|
|
@ -409,16 +473,10 @@ def generate_build_ninja(
|
||||||
else:
|
else:
|
||||||
sys.exit("ProjectConfig.sjiswrap_tag missing")
|
sys.exit("ProjectConfig.sjiswrap_tag missing")
|
||||||
|
|
||||||
|
wrapper = config.compiler_wrapper()
|
||||||
# Only add an implicit dependency on wibo if we download it
|
# Only add an implicit dependency on wibo if we download it
|
||||||
wrapper = config.wrapper
|
|
||||||
wrapper_implicit: Optional[Path] = None
|
wrapper_implicit: Optional[Path] = None
|
||||||
if (
|
if wrapper is not None and config.use_wibo():
|
||||||
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"
|
|
||||||
wrapper_implicit = wrapper
|
wrapper_implicit = wrapper
|
||||||
n.build(
|
n.build(
|
||||||
outputs=wrapper,
|
outputs=wrapper,
|
||||||
|
|
@ -429,15 +487,11 @@ def generate_build_ninja(
|
||||||
"tag": config.wibo_tag,
|
"tag": config.wibo_tag,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if not is_windows() and wrapper is None:
|
|
||||||
wrapper = Path("wine")
|
|
||||||
wrapper_cmd = f"{wrapper} " if wrapper else ""
|
wrapper_cmd = f"{wrapper} " if wrapper else ""
|
||||||
|
|
||||||
|
compilers = config.compilers()
|
||||||
compilers_implicit: Optional[Path] = None
|
compilers_implicit: Optional[Path] = None
|
||||||
if config.compilers_path:
|
if config.compilers_path is None and config.compilers_tag is not None:
|
||||||
compilers = config.compilers_path
|
|
||||||
elif config.compilers_tag:
|
|
||||||
compilers = config.build_dir / "compilers"
|
|
||||||
compilers_implicit = compilers
|
compilers_implicit = compilers
|
||||||
n.build(
|
n.build(
|
||||||
outputs=compilers,
|
outputs=compilers,
|
||||||
|
|
@ -448,8 +502,6 @@ def generate_build_ninja(
|
||||||
"tag": config.compilers_tag,
|
"tag": config.compilers_tag,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
sys.exit("ProjectConfig.compilers_tag missing")
|
|
||||||
|
|
||||||
binutils_implicit = None
|
binutils_implicit = None
|
||||||
if config.binutils_path:
|
if config.binutils_path:
|
||||||
|
|
@ -663,7 +715,6 @@ def generate_build_ninja(
|
||||||
n.comment(f"Link {self.name}")
|
n.comment(f"Link {self.name}")
|
||||||
if self.module_id == 0:
|
if self.module_id == 0:
|
||||||
elf_path = build_path / f"{self.name}.elf"
|
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)}"
|
elf_ldflags = f"$ldflags -lcf {serialize_path(self.ldscript)}"
|
||||||
if config.generate_map:
|
if config.generate_map:
|
||||||
elf_map = map_path(elf_path)
|
elf_map = map_path(elf_path)
|
||||||
|
|
@ -728,17 +779,33 @@ def generate_build_ninja(
|
||||||
source_added: Set[Path] = set()
|
source_added: Set[Path] = set()
|
||||||
|
|
||||||
def c_build(obj: Object, src_path: Path) -> Optional[Path]:
|
def c_build(obj: Object, src_path: Path) -> Optional[Path]:
|
||||||
cflags_str = make_flags_str(obj.options["cflags"])
|
|
||||||
if obj.options["extra_cflags"] is not None:
|
|
||||||
extra_cflags_str = make_flags_str(obj.options["extra_cflags"])
|
|
||||||
cflags_str += " " + extra_cflags_str
|
|
||||||
used_compiler_versions.add(obj.options["mw_version"])
|
|
||||||
|
|
||||||
# Avoid creating duplicate build rules
|
# Avoid creating duplicate build rules
|
||||||
if obj.src_obj_path is None or obj.src_obj_path in source_added:
|
if obj.src_obj_path is None or obj.src_obj_path in source_added:
|
||||||
return obj.src_obj_path
|
return obj.src_obj_path
|
||||||
source_added.add(obj.src_obj_path)
|
source_added.add(obj.src_obj_path)
|
||||||
|
|
||||||
|
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
|
# Add MWCC build rule
|
||||||
lib_name = obj.options["lib"]
|
lib_name = obj.options["lib"]
|
||||||
n.comment(f"{obj.name}: {lib_name} (linked {obj.completed})")
|
n.comment(f"{obj.name}: {lib_name} (linked {obj.completed})")
|
||||||
|
|
@ -770,7 +837,7 @@ def generate_build_ninja(
|
||||||
if obj.options["host"] and obj.host_obj_path is not None:
|
if obj.options["host"] and obj.host_obj_path is not None:
|
||||||
n.build(
|
n.build(
|
||||||
outputs=obj.host_obj_path,
|
outputs=obj.host_obj_path,
|
||||||
rule="host_cc" if src_path.suffix == ".c" else "host_cpp",
|
rule="host_cc" if file_is_c(src_path) else "host_cpp",
|
||||||
inputs=src_path,
|
inputs=src_path,
|
||||||
variables={
|
variables={
|
||||||
"basedir": os.path.dirname(obj.host_obj_path),
|
"basedir": os.path.dirname(obj.host_obj_path),
|
||||||
|
|
@ -792,7 +859,7 @@ def generate_build_ninja(
|
||||||
if obj.options["asflags"] is None:
|
if obj.options["asflags"] is None:
|
||||||
sys.exit("ProjectConfig.asflags missing")
|
sys.exit("ProjectConfig.asflags missing")
|
||||||
asflags_str = make_flags_str(obj.options["asflags"])
|
asflags_str = make_flags_str(obj.options["asflags"])
|
||||||
if obj.options["extra_asflags"] is not None:
|
if len(obj.options["extra_asflags"]) > 0:
|
||||||
extra_asflags_str = make_flags_str(obj.options["extra_asflags"])
|
extra_asflags_str = make_flags_str(obj.options["extra_asflags"])
|
||||||
asflags_str += " " + extra_asflags_str
|
asflags_str += " " + extra_asflags_str
|
||||||
|
|
||||||
|
|
@ -830,10 +897,10 @@ def generate_build_ninja(
|
||||||
link_built_obj = obj.completed
|
link_built_obj = obj.completed
|
||||||
built_obj_path: Optional[Path] = None
|
built_obj_path: Optional[Path] = None
|
||||||
if obj.src_path is not None and obj.src_path.exists():
|
if obj.src_path is not None and obj.src_path.exists():
|
||||||
if obj.src_path.suffix in (".c", ".cp", ".cpp"):
|
if file_is_c_cpp(obj.src_path):
|
||||||
# Add MWCC & host build rules
|
# Add MWCC & host build rules
|
||||||
built_obj_path = c_build(obj, obj.src_path)
|
built_obj_path = c_build(obj, obj.src_path)
|
||||||
elif obj.src_path.suffix == ".s":
|
elif file_is_asm(obj.src_path):
|
||||||
# Add assembler build rule
|
# Add assembler build rule
|
||||||
built_obj_path = asm_build(obj, obj.src_path, obj.src_obj_path)
|
built_obj_path = asm_build(obj, obj.src_path, obj.src_obj_path)
|
||||||
else:
|
else:
|
||||||
|
|
@ -1040,7 +1107,12 @@ def generate_build_ninja(
|
||||||
n.build(
|
n.build(
|
||||||
outputs=progress_path,
|
outputs=progress_path,
|
||||||
rule="progress",
|
rule="progress",
|
||||||
implicit=[ok_path, configure_script, python_lib, config.config_path],
|
implicit=[
|
||||||
|
ok_path,
|
||||||
|
configure_script,
|
||||||
|
python_lib,
|
||||||
|
report_path,
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
@ -1153,8 +1225,10 @@ def generate_build_ninja(
|
||||||
if build_config:
|
if build_config:
|
||||||
if config.non_matching:
|
if config.non_matching:
|
||||||
n.default(link_outputs)
|
n.default(link_outputs)
|
||||||
else:
|
elif config.progress:
|
||||||
n.default(progress_path)
|
n.default(progress_path)
|
||||||
|
else:
|
||||||
|
n.default(ok_path)
|
||||||
else:
|
else:
|
||||||
n.default(build_config_path)
|
n.default(build_config_path)
|
||||||
|
|
||||||
|
|
@ -1173,6 +1247,13 @@ def generate_objdiff_config(
|
||||||
if build_config is None:
|
if build_config is None:
|
||||||
return
|
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] = {
|
objdiff_config: Dict[str, Any] = {
|
||||||
"min_version": "2.0.0-beta.5",
|
"min_version": "2.0.0-beta.5",
|
||||||
"custom_make": "ninja",
|
"custom_make": "ninja",
|
||||||
|
|
@ -1194,7 +1275,6 @@ def generate_objdiff_config(
|
||||||
}
|
}
|
||||||
|
|
||||||
# decomp.me compiler name mapping
|
# decomp.me compiler name mapping
|
||||||
# Commented out versions have not been added to decomp.me yet
|
|
||||||
COMPILER_MAP = {
|
COMPILER_MAP = {
|
||||||
"GC/1.0": "mwcc_233_144",
|
"GC/1.0": "mwcc_233_144",
|
||||||
"GC/1.1": "mwcc_233_159",
|
"GC/1.1": "mwcc_233_159",
|
||||||
|
|
@ -1231,15 +1311,27 @@ def generate_objdiff_config(
|
||||||
) -> None:
|
) -> None:
|
||||||
obj_path, obj_name = build_obj["object"], build_obj["name"]
|
obj_path, obj_name = build_obj["object"], build_obj["name"]
|
||||||
base_object = Path(obj_name).with_suffix("")
|
base_object = Path(obj_name).with_suffix("")
|
||||||
|
name = str(Path(module_name) / base_object).replace(os.sep, "/")
|
||||||
unit_config: Dict[str, Any] = {
|
unit_config: Dict[str, Any] = {
|
||||||
"name": Path(module_name) / base_object,
|
"name": name,
|
||||||
"target_path": obj_path,
|
"target_path": obj_path,
|
||||||
|
"base_path": None,
|
||||||
|
"scratch": None,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"auto_generated": build_obj["autogenerated"],
|
"complete": None,
|
||||||
|
"reverse_fn_order": None,
|
||||||
|
"source_path": None,
|
||||||
"progress_categories": progress_categories,
|
"progress_categories": progress_categories,
|
||||||
|
"auto_generated": build_obj["autogenerated"],
|
||||||
},
|
},
|
||||||
|
"symbol_mappings": None,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 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)
|
obj = objects.get(obj_name)
|
||||||
if obj is None:
|
if obj is None:
|
||||||
objdiff_config["units"].append(unit_config)
|
objdiff_config["units"].append(unit_config)
|
||||||
|
|
@ -1248,40 +1340,31 @@ def generate_objdiff_config(
|
||||||
src_exists = obj.src_path is not None and obj.src_path.exists()
|
src_exists = obj.src_path is not None and obj.src_path.exists()
|
||||||
if src_exists:
|
if src_exists:
|
||||||
unit_config["base_path"] = obj.src_obj_path
|
unit_config["base_path"] = obj.src_obj_path
|
||||||
|
unit_config["metadata"]["source_path"] = obj.src_path
|
||||||
|
|
||||||
cflags = obj.options["cflags"]
|
cflags = obj.options["cflags"]
|
||||||
reverse_fn_order = False
|
reverse_fn_order = False
|
||||||
if type(cflags) is list:
|
for flag in cflags:
|
||||||
for flag in cflags:
|
if not flag.startswith("-inline "):
|
||||||
if not flag.startswith("-inline "):
|
continue
|
||||||
continue
|
for value in flag.split(" ")[1].split(","):
|
||||||
for value in flag.split(" ")[1].split(","):
|
if value == "deferred":
|
||||||
if value == "deferred":
|
reverse_fn_order = True
|
||||||
reverse_fn_order = True
|
elif value == "nodeferred":
|
||||||
elif value == "nodeferred":
|
reverse_fn_order = False
|
||||||
reverse_fn_order = False
|
|
||||||
|
|
||||||
# Filter out include directories
|
# Filter out include directories
|
||||||
def keep_flag(flag):
|
def keep_flag(flag):
|
||||||
return not flag.startswith("-i ") and not flag.startswith("-I ")
|
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 obj.src_path is not None and not any(
|
|
||||||
flag.startswith("-lang") for flag in cflags
|
|
||||||
):
|
|
||||||
if obj.src_path.suffix in (".cp", ".cpp"):
|
|
||||||
cflags.insert(0, "-lang=c++")
|
|
||||||
else:
|
|
||||||
cflags.insert(0, "-lang=c")
|
|
||||||
|
|
||||||
compiler_version = COMPILER_MAP.get(obj.options["mw_version"])
|
compiler_version = COMPILER_MAP.get(obj.options["mw_version"])
|
||||||
if compiler_version is None:
|
if compiler_version is None:
|
||||||
print(f"Missing scratch compiler mapping for {obj.options['mw_version']}")
|
print(f"Missing scratch compiler mapping for {obj.options['mw_version']}")
|
||||||
else:
|
else:
|
||||||
cflags_str = make_flags_str(cflags)
|
cflags_str = make_flags_str(cflags)
|
||||||
if obj.options["extra_cflags"] is not None:
|
if len(obj.options["extra_cflags"]) > 0:
|
||||||
extra_cflags_str = make_flags_str(obj.options["extra_cflags"])
|
extra_cflags_str = make_flags_str(obj.options["extra_cflags"])
|
||||||
cflags_str += " " + extra_cflags_str
|
cflags_str += " " + extra_cflags_str
|
||||||
unit_config["scratch"] = {
|
unit_config["scratch"] = {
|
||||||
|
|
@ -1305,7 +1388,6 @@ def generate_objdiff_config(
|
||||||
{
|
{
|
||||||
"complete": obj.completed,
|
"complete": obj.completed,
|
||||||
"reverse_fn_order": reverse_fn_order,
|
"reverse_fn_order": reverse_fn_order,
|
||||||
"source_path": obj.src_path,
|
|
||||||
"progress_categories": progress_categories,
|
"progress_categories": progress_categories,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -1349,160 +1431,357 @@ def generate_objdiff_config(
|
||||||
for category in config.progress_categories:
|
for category in config.progress_categories:
|
||||||
add_category(category.id, category.name)
|
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
|
# Write objdiff.json
|
||||||
with open("objdiff.json", "w", encoding="utf-8") as w:
|
with open("objdiff.json", "w", encoding="utf-8") as w:
|
||||||
|
|
||||||
def unix_path(input: Any) -> str:
|
def unix_path(input: Any) -> str:
|
||||||
return str(input).replace(os.sep, "/") if input else ""
|
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
|
# Calculate, print and write progress to progress.json
|
||||||
def calculate_progress(config: ProjectConfig) -> None:
|
def calculate_progress(config: ProjectConfig) -> None:
|
||||||
config.validate()
|
config.validate()
|
||||||
objects = config.objects()
|
|
||||||
out_path = config.out_path()
|
out_path = config.out_path()
|
||||||
build_config = load_build_config(config, out_path / "config.json")
|
report_path = out_path / "report.json"
|
||||||
if build_config is None:
|
if not report_path.is_file():
|
||||||
return
|
sys.exit(f"Report file {report_path} does not exist")
|
||||||
|
|
||||||
class ProgressUnit:
|
report_data: Dict[str, Any] = {}
|
||||||
def __init__(self, name: str) -> None:
|
with open(report_path, "r", encoding="utf-8") as f:
|
||||||
self.name: str = name
|
report_data = json.load(f)
|
||||||
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()
|
|
||||||
|
|
||||||
def add(self, build_obj: Dict[str, Any]) -> None:
|
# Convert string numbers (u64) to int
|
||||||
self.code_total += build_obj["code_size"]
|
def convert_numbers(data: Dict[str, Any]) -> None:
|
||||||
self.data_total += build_obj["data_size"]
|
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
|
convert_numbers(report_data["measures"])
|
||||||
include_object = build_obj["name"] not in self.objects
|
for category in report_data.get("categories", []):
|
||||||
if include_object:
|
convert_numbers(category["measures"])
|
||||||
self.objects.add(build_obj["name"])
|
|
||||||
self.objects_total += 1
|
|
||||||
|
|
||||||
if build_obj["autogenerated"]:
|
# Output to GitHub Actions job summary, if available
|
||||||
# Skip autogenerated objects
|
summary_path = os.getenv("GITHUB_STEP_SUMMARY")
|
||||||
return
|
summary_file: Optional[IO[str]] = None
|
||||||
|
if summary_path:
|
||||||
|
summary_file = open(summary_path, "a", encoding="utf-8")
|
||||||
|
summary_file.write("```\n")
|
||||||
|
|
||||||
obj = objects.get(build_obj["name"])
|
def progress_print(s: str) -> None:
|
||||||
if obj is None or not obj.completed:
|
print(s)
|
||||||
return
|
if summary_file:
|
||||||
|
summary_file.write(s + "\n")
|
||||||
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:
|
|
||||||
if self.code_total == 0:
|
|
||||||
return 1.0
|
|
||||||
return self.code_progress / self.code_total
|
|
||||||
|
|
||||||
def data_frac(self) -> float:
|
|
||||||
if self.data_total == 0:
|
|
||||||
return 1.0
|
|
||||||
return self.data_progress / self.data_total
|
|
||||||
|
|
||||||
progress_units: Dict[str, ProgressUnit] = {}
|
|
||||||
if config.progress_all:
|
|
||||||
progress_units["all"] = ProgressUnit("All")
|
|
||||||
progress_units["dol"] = ProgressUnit("DOL")
|
|
||||||
if len(build_config["modules"]) > 0:
|
|
||||||
if config.progress_modules:
|
|
||||||
progress_units["modules"] = ProgressUnit("Modules")
|
|
||||||
if len(config.progress_categories) > 0:
|
|
||||||
for category in config.progress_categories:
|
|
||||||
progress_units[category.id] = ProgressUnit(category.name)
|
|
||||||
if config.progress_each_module:
|
|
||||||
for module in build_config["modules"]:
|
|
||||||
progress_units[module["name"]] = ProgressUnit(module["name"])
|
|
||||||
|
|
||||||
def add_unit(id: str, unit: Dict[str, Any]) -> None:
|
|
||||||
progress = progress_units.get(id)
|
|
||||||
if progress is not None:
|
|
||||||
progress.add(unit)
|
|
||||||
|
|
||||||
# Add DOL units
|
|
||||||
for unit in build_config["units"]:
|
|
||||||
add_unit("all", unit)
|
|
||||||
add_unit("dol", unit)
|
|
||||||
obj = objects.get(unit["name"])
|
|
||||||
if obj is not None:
|
|
||||||
category_opt = obj.options["progress_category"]
|
|
||||||
if isinstance(category_opt, list):
|
|
||||||
for id in category_opt:
|
|
||||||
add_unit(id, unit)
|
|
||||||
elif category_opt is not None:
|
|
||||||
add_unit(category_opt, unit)
|
|
||||||
|
|
||||||
# Add REL units
|
|
||||||
for module in build_config["modules"]:
|
|
||||||
for unit in module["units"]:
|
|
||||||
add_unit("all", unit)
|
|
||||||
add_unit("modules", unit)
|
|
||||||
add_unit(module["name"], unit)
|
|
||||||
obj = objects.get(unit["name"])
|
|
||||||
if obj is not None:
|
|
||||||
category_opt = obj.options["progress_category"]
|
|
||||||
if isinstance(category_opt, list):
|
|
||||||
for id in category_opt:
|
|
||||||
add_unit(id, unit)
|
|
||||||
elif category_opt is not None:
|
|
||||||
add_unit(category_opt, unit)
|
|
||||||
|
|
||||||
# Print human-readable progress
|
# Print human-readable progress
|
||||||
print("Progress:")
|
progress_print("Progress:")
|
||||||
|
|
||||||
def print_category(unit: Optional[ProgressUnit]) -> None:
|
def print_category(name: str, measures: Dict[str, Any]) -> None:
|
||||||
if unit is None:
|
total_code = measures.get("total_code", 0)
|
||||||
return
|
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()
|
progress_print(
|
||||||
data_frac = unit.data_frac()
|
f" {name}: {matched_code_percent:.2f}% matched, {complete_code_percent:.2f}% linked ({complete_units} / {total_units} files)"
|
||||||
print(
|
)
|
||||||
f" {unit.name}: {code_frac:.2%} code, {data_frac:.2%} data ({unit.objects_progress} / {unit.objects_total} 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 {} 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,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
for progress in progress_units.values():
|
print_category("All", report_data["measures"])
|
||||||
print_category(progress)
|
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
|
# Generate and write progress.json
|
||||||
progress_json: Dict[str, Any] = {}
|
progress_json: Dict[str, Any] = {}
|
||||||
|
|
||||||
def add_category(category: str, unit: ProgressUnit) -> None:
|
def add_category(id: str, measures: Dict[str, Any]) -> None:
|
||||||
progress_json[category] = {
|
progress_json[id] = {
|
||||||
"code": unit.code_progress,
|
"code": measures.get("complete_code", 0),
|
||||||
"code/total": unit.code_total,
|
"code/total": measures.get("total_code", 0),
|
||||||
"data": unit.data_progress,
|
"data": measures.get("complete_data", 0),
|
||||||
"data/total": unit.data_total,
|
"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),
|
||||||
}
|
}
|
||||||
|
|
||||||
for id, progress in progress_units.items():
|
if config.progress_all:
|
||||||
add_category(id, progress)
|
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:
|
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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue