Merge branch 'Rainchus:main' into main

This commit is contained in:
CreateSource 2024-04-04 19:30:00 -04:00 committed by GitHub
commit fd2857c546
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
80 changed files with 17378 additions and 2890 deletions

View file

@ -1,4 +1,4 @@
Some Game
Mario Party 4
[![Build Status]][actions] ![Progress] ![DOL Progress] ![RELs Progress] [![Discord Badge]][discord]
=============
@ -29,9 +29,9 @@ URL encoded then appended to: https://img.shields.io/endpoint?label=RELs&url=
Replace with your Discord server's ID and invite URL.
-->
[Discord Badge]: https://img.shields.io/discord/727908905392275526?color=%237289DA&logo=discord&logoColor=%23FFFFFF
[discord]: https://discord.gg/hKx3FJJgrV
[discord]: https://discord.gg/T4faGveujK
A work-in-progress decompilation of Some Game.
A work-in-progress decompilation of Mario Party 4.
This repository does **not** contain any game assets or assembly whatsoever. An existing copy of the game is required.
@ -80,9 +80,9 @@ Building
- Clone the repository:
```
git clone https://github.com/my/repo.git
git clone https://github.com/Rainchus/mp4-dtk.git
```
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your game to `orig/GAMEID`.
- Using [Dolphin Emulator](https://dolphin-emu.org/), extract your game to `orig/GMPE01`.
![](assets/dolphin-extract.png)
- To save space, the only necessary files are the following. Any others can be deleted.
- `sys/main.dol`
@ -91,7 +91,7 @@ Building
```
python configure.py
```
To use a version other than `GAMEID` (USA), specify it with `--version`.
To use a version other than `GMPE01` (USA), specify it with `--version`.
- Build:
```
ninja

View file

@ -4,7 +4,7 @@ symbols: config/GMPE01_00/symbols.txt
splits: config/GMPE01_00/splits.txt
quick_analysis: true # Faster re-runs after initial analysis
mw_comment_version: 10 # GC 2.6 linker
force_active: [__register_global_object, lbl_801D40D0]
force_active: [__register_global_object, lbl_801D40D0, _kerent]
modules:
- object: orig/GMPE01_00/files/dll/_minigameDll.rel

View file

@ -111,92 +111,92 @@ fn_1_6218 = .text:0x00006218; // type:function size:0x88
fn_1_62A0 = .text:0x000062A0; // type:function size:0x164
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x20
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x20 scope:local
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:4byte
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC scope:local data:4byte
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float
@ -214,7 +214,7 @@ lbl_1_data_120 = .data:0x00000120; // type:object size:0x19 data:string
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x20
lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28
lbl_1_data_184 = .data:0x00000184; // type:object size:0x8
lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB data:string
lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB scope:local data:string
lbl_1_data_198 = .data:0x00000198; // type:object size:0x34 data:4byte
lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x30
lbl_1_data_1FC = .data:0x000001FC; // type:object size:0xC data:float

View file

@ -25,9 +25,10 @@ REL/modeseldll/filesel.c:
.text start:0x000037DC end:0x0000BED8
.rodata start:0x000001B0 end:0x00000318
.data start:0x00000100 end:0x00000428
.bss start:0x00000088 end:0x000001CA
.bss start:0x00000088 end:0x00000150
REL/modeseldll/datalist.c:
.text start:0x0000BED8 end:0x0000C334
.rodata start:0x00000318 end:0x00000328
.data start:0x00000428 end:0x00000A2C
.bss start:0x00000150 end:0x000001CA

View file

@ -263,7 +263,8 @@ lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x6
lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x6
lbl_1_bss_146 = .bss:0x00000146; // type:object size:0x2 data:2byte
lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte
lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x6
lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x4 data:4byte
lbl_1_bss_150 = .bss:0x00000150; // type:object size:0x2
lbl_1_bss_152 = .bss:0x00000152; // type:object size:0x18 data:2byte
lbl_1_bss_16A = .bss:0x0000016A; // type:object size:0x30 data:2byte
lbl_1_bss_19A = .bss:0x0000019A; // type:object size:0x30 data:2byte

View file

@ -18,10 +18,10 @@ REL/resultDll/main.c:
REL/resultDll/battle.c:
.text start:0x00006490 end:0x00008FF8
.rodata start:0x00000160 end:0x00000220
.data start:0x000004E8 end:0x000008B8
.bss start:0x00000190 end:0x00001ADC
.data start:0x000004E8 end:0x00000918
.bss start:0x00000190 end:0x00001A18
REL/resultDll/datalist.c:
.text start:0x00008FF8 end:0x0000942C
.rodata start:0x00000220 end:0x00000230
.data start:0x000008B8 end:0x00000918
.bss start:0x00001A18 end:0x00001ADC

View file

@ -198,7 +198,9 @@ lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8
lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28
lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8
lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x2A
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8
lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20
lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2
lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte
lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte
lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte

View file

@ -3,467 +3,467 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global
BoardCreate = .text:0x000000E0; // type:function size:0x4BC
BoardDestroy = .text:0x0000059C; // type:function size:0x194
fn_1_730 = .text:0x00000730; // type:function size:0x44
fn_1_774 = .text:0x00000774; // type:function size:0x4
fn_1_778 = .text:0x00000778; // type:function size:0x9C
fn_1_814 = .text:0x00000814; // type:function size:0x1D4
fn_1_9E8 = .text:0x000009E8; // type:function size:0x318
fn_1_D00 = .text:0x00000D00; // type:function size:0x4
fn_1_D04 = .text:0x00000D04; // type:function size:0x550
fn_1_1254 = .text:0x00001254; // type:function size:0x38
fn_1_128C = .text:0x0000128C; // type:function size:0x80
fn_1_130C = .text:0x0000130C; // type:function size:0x270
fn_1_157C = .text:0x0000157C; // type:function size:0xF4
fn_1_1670 = .text:0x00001670; // type:function size:0x90
fn_1_1700 = .text:0x00001700; // type:function size:0x290
fn_1_1990 = .text:0x00001990; // type:function size:0x148
fn_1_1AD8 = .text:0x00001AD8; // type:function size:0x64
fn_1_1B3C = .text:0x00001B3C; // type:function size:0x3A8
fn_1_1EE4 = .text:0x00001EE4; // type:function size:0x48
fn_1_1F2C = .text:0x00001F2C; // type:function size:0x78
fn_1_1FA4 = .text:0x00001FA4; // type:function size:0x580
fn_1_2524 = .text:0x00002524; // type:function size:0x248
fn_1_276C = .text:0x0000276C; // type:function size:0x7AC
fn_1_2F18 = .text:0x00002F18; // type:function size:0x438
fn_1_3350 = .text:0x00003350; // type:function size:0x1C4
fn_1_3514 = .text:0x00003514; // type:function size:0xA0
fn_1_35B4 = .text:0x000035B4; // type:function size:0x70
fn_1_3624 = .text:0x00003624; // type:function size:0xFD0
fn_1_45F4 = .text:0x000045F4; // type:function size:0x180
fn_1_4774 = .text:0x00004774; // type:function size:0xF0
fn_1_4864 = .text:0x00004864; // type:function size:0x50
fn_1_48B4 = .text:0x000048B4; // type:function size:0x560
fn_1_4E14 = .text:0x00004E14; // type:function size:0x194
fn_1_4FA8 = .text:0x00004FA8; // type:function size:0x30
fn_1_4FD8 = .text:0x00004FD8; // type:function size:0xFC
fn_1_50D4 = .text:0x000050D4; // type:function size:0x2E4
fn_1_53B8 = .text:0x000053B8; // type:function size:0x84
fn_1_543C = .text:0x0000543C; // type:function size:0x258
fn_1_5694 = .text:0x00005694; // type:function size:0x1D8
fn_1_586C = .text:0x0000586C; // type:function size:0xC0
fn_1_592C = .text:0x0000592C; // type:function size:0x200
fn_1_5B2C = .text:0x00005B2C; // type:function size:0x14
fn_1_5B40 = .text:0x00005B40; // type:function size:0x190
fn_1_5CD0 = .text:0x00005CD0; // type:function size:0x38
fn_1_5D08 = .text:0x00005D08; // type:function size:0x390
fn_1_6098 = .text:0x00006098; // type:function size:0xFC
fn_1_6194 = .text:0x00006194; // type:function size:0x25C
fn_1_63F0 = .text:0x000063F0; // type:function size:0x624
fn_1_6A14 = .text:0x00006A14; // type:function size:0x1AC
fn_1_6BC0 = .text:0x00006BC0; // type:function size:0x3F4
fn_1_6FB4 = .text:0x00006FB4; // type:function size:0x574
fn_1_7528 = .text:0x00007528; // type:function size:0x2C4
fn_1_77EC = .text:0x000077EC; // type:function size:0xA8
fn_1_7894 = .text:0x00007894; // type:function size:0x1D0
fn_1_7A64 = .text:0x00007A64; // type:function size:0xAC8
fn_1_852C = .text:0x0000852C; // type:function size:0x280
fn_1_87AC = .text:0x000087AC; // type:function size:0x34
fn_1_87E0 = .text:0x000087E0; // type:function size:0x1A8
fn_1_8988 = .text:0x00008988; // type:function size:0xC8
fn_1_8A50 = .text:0x00008A50; // type:function size:0x11C
fn_1_8B6C = .text:0x00008B6C; // type:function size:0x270
fn_1_8DDC = .text:0x00008DDC; // type:function size:0x3B0
fn_1_918C = .text:0x0000918C; // type:function size:0xF0
fn_1_927C = .text:0x0000927C; // type:function size:0xB0
fn_1_932C = .text:0x0000932C; // type:function size:0x17C
fn_1_94A8 = .text:0x000094A8; // type:function size:0x14C
fn_1_95F4 = .text:0x000095F4; // type:function size:0x200
fn_1_97F4 = .text:0x000097F4; // type:function size:0xF8
fn_1_98EC = .text:0x000098EC; // type:function size:0x34
fn_1_9920 = .text:0x00009920; // type:function size:0x104
fn_1_9A24 = .text:0x00009A24; // type:function size:0x198
fn_1_9BBC = .text:0x00009BBC; // type:function size:0x144
fn_1_730 = .text:0x00000730; // type:function size:0x44 scope:local
fn_1_774 = .text:0x00000774; // type:function size:0x4 scope:local
fn_1_778 = .text:0x00000778; // type:function size:0x9C scope:local
fn_1_814 = .text:0x00000814; // type:function size:0x1D4 scope:local
fn_1_9E8 = .text:0x000009E8; // type:function size:0x318 scope:local
fn_1_D00 = .text:0x00000D00; // type:function size:0x4 scope:local
fn_1_D04 = .text:0x00000D04; // type:function size:0x550 scope:local
fn_1_1254 = .text:0x00001254; // type:function size:0x38 scope:local
fn_1_128C = .text:0x0000128C; // type:function size:0x80 scope:local
fn_1_130C = .text:0x0000130C; // type:function size:0x270 scope:local
fn_1_157C = .text:0x0000157C; // type:function size:0xF4 scope:local
fn_1_1670 = .text:0x00001670; // type:function size:0x90 scope:local
fn_1_1700 = .text:0x00001700; // type:function size:0x290 scope:local
fn_1_1990 = .text:0x00001990; // type:function size:0x148 scope:local
fn_1_1AD8 = .text:0x00001AD8; // type:function size:0x64 scope:local
fn_1_1B3C = .text:0x00001B3C; // type:function size:0x3A8 scope:local
fn_1_1EE4 = .text:0x00001EE4; // type:function size:0x48 scope:local
fn_1_1F2C = .text:0x00001F2C; // type:function size:0x78 scope:local
fn_1_1FA4 = .text:0x00001FA4; // type:function size:0x580 scope:local
fn_1_2524 = .text:0x00002524; // type:function size:0x248 scope:local
fn_1_276C = .text:0x0000276C; // type:function size:0x7AC scope:local
fn_1_2F18 = .text:0x00002F18; // type:function size:0x438 scope:local
fn_1_3350 = .text:0x00003350; // type:function size:0x1C4 scope:local
fn_1_3514 = .text:0x00003514; // type:function size:0xA0 scope:local
fn_1_35B4 = .text:0x000035B4; // type:function size:0x70 scope:local
fn_1_3624 = .text:0x00003624; // type:function size:0xFD0 scope:local
fn_1_45F4 = .text:0x000045F4; // type:function size:0x180 scope:local
fn_1_4774 = .text:0x00004774; // type:function size:0xF0 scope:local
fn_1_4864 = .text:0x00004864; // type:function size:0x50 scope:local
fn_1_48B4 = .text:0x000048B4; // type:function size:0x560 scope:local
fn_1_4E14 = .text:0x00004E14; // type:function size:0x194 scope:local
fn_1_4FA8 = .text:0x00004FA8; // type:function size:0x30 scope:local
fn_1_4FD8 = .text:0x00004FD8; // type:function size:0xFC scope:local
fn_1_50D4 = .text:0x000050D4; // type:function size:0x2E4 scope:local
fn_1_53B8 = .text:0x000053B8; // type:function size:0x84 scope:local
fn_1_543C = .text:0x0000543C; // type:function size:0x258 scope:local
fn_1_5694 = .text:0x00005694; // type:function size:0x1D8 scope:local
fn_1_586C = .text:0x0000586C; // type:function size:0xC0 scope:local
fn_1_592C = .text:0x0000592C; // type:function size:0x200 scope:local
fn_1_5B2C = .text:0x00005B2C; // type:function size:0x14 scope:local
fn_1_5B40 = .text:0x00005B40; // type:function size:0x190 scope:local
fn_1_5CD0 = .text:0x00005CD0; // type:function size:0x38 scope:local
fn_1_5D08 = .text:0x00005D08; // type:function size:0x390 scope:local
fn_1_6098 = .text:0x00006098; // type:function size:0xFC scope:local
fn_1_6194 = .text:0x00006194; // type:function size:0x25C scope:local
fn_1_63F0 = .text:0x000063F0; // type:function size:0x624 scope:local
fn_1_6A14 = .text:0x00006A14; // type:function size:0x1AC scope:local
fn_1_6BC0 = .text:0x00006BC0; // type:function size:0x3F4 scope:local
fn_1_6FB4 = .text:0x00006FB4; // type:function size:0x574 scope:local
fn_1_7528 = .text:0x00007528; // type:function size:0x2C4 scope:local
fn_1_77EC = .text:0x000077EC; // type:function size:0xA8 scope:local
fn_1_7894 = .text:0x00007894; // type:function size:0x1D0 scope:local
fn_1_7A64 = .text:0x00007A64; // type:function size:0xAC8 scope:local
fn_1_852C = .text:0x0000852C; // type:function size:0x280 scope:local
fn_1_87AC = .text:0x000087AC; // type:function size:0x34 scope:local
fn_1_87E0 = .text:0x000087E0; // type:function size:0x1A8 scope:local
fn_1_8988 = .text:0x00008988; // type:function size:0xC8 scope:local
fn_1_8A50 = .text:0x00008A50; // type:function size:0x11C scope:local
fn_1_8B6C = .text:0x00008B6C; // type:function size:0x270 scope:local
fn_1_8DDC = .text:0x00008DDC; // type:function size:0x3B0 scope:local
fn_1_918C = .text:0x0000918C; // type:function size:0xF0 scope:local
fn_1_927C = .text:0x0000927C; // type:function size:0xB0 scope:local
fn_1_932C = .text:0x0000932C; // type:function size:0x17C scope:local
fn_1_94A8 = .text:0x000094A8; // type:function size:0x14C scope:local
fn_1_95F4 = .text:0x000095F4; // type:function size:0x200 scope:local
fn_1_97F4 = .text:0x000097F4; // type:function size:0xF8 scope:local
fn_1_98EC = .text:0x000098EC; // type:function size:0x34 scope:local
fn_1_9920 = .text:0x00009920; // type:function size:0x104 scope:local
fn_1_9A24 = .text:0x00009A24; // type:function size:0x198 scope:local
fn_1_9BBC = .text:0x00009BBC; // type:function size:0x144 scope:local
fn_1_9D00 = .text:0x00009D00; // type:function size:0xD8
fn_1_9DD8 = .text:0x00009DD8; // type:function size:0x6E0
fn_1_A4B8 = .text:0x0000A4B8; // type:function size:0x9C
fn_1_A554 = .text:0x0000A554; // type:function size:0xA8
fn_1_A5FC = .text:0x0000A5FC; // type:function size:0xE4
fn_1_A6E0 = .text:0x0000A6E0; // type:function size:0x938
fn_1_B018 = .text:0x0000B018; // type:function size:0x70
fn_1_B088 = .text:0x0000B088; // type:function size:0x144
fn_1_B1CC = .text:0x0000B1CC; // type:function size:0x1EC
fn_1_B3B8 = .text:0x0000B3B8; // type:function size:0xC0
fn_1_B478 = .text:0x0000B478; // type:function size:0x680
fn_1_BAF8 = .text:0x0000BAF8; // type:function size:0x1E4
fn_1_BCDC = .text:0x0000BCDC; // type:function size:0x224
fn_1_BF00 = .text:0x0000BF00; // type:function size:0x68
fn_1_BF68 = .text:0x0000BF68; // type:function size:0x98
fn_1_C000 = .text:0x0000C000; // type:function size:0xFC
fn_1_C0FC = .text:0x0000C0FC; // type:function size:0x160
fn_1_C25C = .text:0x0000C25C; // type:function size:0x5E8
fn_1_C844 = .text:0x0000C844; // type:function size:0x50
fn_1_C894 = .text:0x0000C894; // type:function size:0xB8
fn_1_C94C = .text:0x0000C94C; // type:function size:0x4C
fn_1_C998 = .text:0x0000C998; // type:function size:0x1AC
fn_1_CB44 = .text:0x0000CB44; // type:function size:0x380
fn_1_CEC4 = .text:0x0000CEC4; // type:function size:0x170
fn_1_D034 = .text:0x0000D034; // type:function size:0x48
fn_1_D07C = .text:0x0000D07C; // type:function size:0x98
fn_1_D114 = .text:0x0000D114; // type:function size:0x62C
fn_1_A4B8 = .text:0x0000A4B8; // type:function size:0x9C scope:local
fn_1_A554 = .text:0x0000A554; // type:function size:0xA8 scope:local
fn_1_A5FC = .text:0x0000A5FC; // type:function size:0xE4 scope:local
fn_1_A6E0 = .text:0x0000A6E0; // type:function size:0x938 scope:local
fn_1_B018 = .text:0x0000B018; // type:function size:0x70 scope:local
fn_1_B088 = .text:0x0000B088; // type:function size:0x144 scope:local
fn_1_B1CC = .text:0x0000B1CC; // type:function size:0x1EC scope:local
fn_1_B3B8 = .text:0x0000B3B8; // type:function size:0xC0 scope:local
fn_1_B478 = .text:0x0000B478; // type:function size:0x680 scope:local
fn_1_BAF8 = .text:0x0000BAF8; // type:function size:0x1E4 scope:local
fn_1_BCDC = .text:0x0000BCDC; // type:function size:0x224 scope:local
fn_1_BF00 = .text:0x0000BF00; // type:function size:0x68 scope:local
fn_1_BF68 = .text:0x0000BF68; // type:function size:0x98 scope:local
fn_1_C000 = .text:0x0000C000; // type:function size:0xFC scope:local
fn_1_C0FC = .text:0x0000C0FC; // type:function size:0x160 scope:local
fn_1_C25C = .text:0x0000C25C; // type:function size:0x5E8 scope:local
fn_1_C844 = .text:0x0000C844; // type:function size:0x50 scope:local
fn_1_C894 = .text:0x0000C894; // type:function size:0xB8 scope:local
fn_1_C94C = .text:0x0000C94C; // type:function size:0x4C scope:local
fn_1_C998 = .text:0x0000C998; // type:function size:0x1AC scope:local
fn_1_CB44 = .text:0x0000CB44; // type:function size:0x380 scope:local
fn_1_CEC4 = .text:0x0000CEC4; // type:function size:0x170 scope:local
fn_1_D034 = .text:0x0000D034; // type:function size:0x48 scope:local
fn_1_D07C = .text:0x0000D07C; // type:function size:0x98 scope:local
fn_1_D114 = .text:0x0000D114; // type:function size:0x62C scope:local
fn_1_D740 = .text:0x0000D740; // type:function size:0x644
fn_1_DD84 = .text:0x0000DD84; // type:function size:0x110
fn_1_DE94 = .text:0x0000DE94; // type:function size:0x26C
fn_1_E100 = .text:0x0000E100; // type:function size:0x54
fn_1_E154 = .text:0x0000E154; // type:function size:0x164
fn_1_E2B8 = .text:0x0000E2B8; // type:function size:0x194
fn_1_E44C = .text:0x0000E44C; // type:function size:0x4C8
fn_1_E914 = .text:0x0000E914; // type:function size:0x3C0
fn_1_ECD4 = .text:0x0000ECD4; // type:function size:0x1CC
fn_1_EEA0 = .text:0x0000EEA0; // type:function size:0x38
fn_1_EED8 = .text:0x0000EED8; // type:function size:0x1C4
fn_1_F09C = .text:0x0000F09C; // type:function size:0x2AC
fn_1_F348 = .text:0x0000F348; // type:function size:0xB0
fn_1_F3F8 = .text:0x0000F3F8; // type:function size:0x2F0
fn_1_F6E8 = .text:0x0000F6E8; // type:function size:0x1A8
fn_1_F890 = .text:0x0000F890; // type:function size:0x18C
fn_1_FA1C = .text:0x0000FA1C; // type:function size:0xA0
fn_1_FABC = .text:0x0000FABC; // type:function size:0x9C
fn_1_FB58 = .text:0x0000FB58; // type:function size:0xE4
fn_1_FC3C = .text:0x0000FC3C; // type:function size:0xB0
fn_1_FCEC = .text:0x0000FCEC; // type:function size:0x50
fn_1_FD3C = .text:0x0000FD3C; // type:function size:0x108
fn_1_FE44 = .text:0x0000FE44; // type:function size:0x8C
fn_1_FED0 = .text:0x0000FED0; // type:function size:0x14C
fn_1_1001C = .text:0x0001001C; // type:function size:0x19C
fn_1_101B8 = .text:0x000101B8; // type:function size:0x4AC
fn_1_10664 = .text:0x00010664; // type:function size:0x1BC
fn_1_10820 = .text:0x00010820; // type:function size:0x2C8
fn_1_10AE8 = .text:0x00010AE8; // type:function size:0xC8
fn_1_10BB0 = .text:0x00010BB0; // type:function size:0x140
fn_1_10CF0 = .text:0x00010CF0; // type:function size:0x1C8
fn_1_10EB8 = .text:0x00010EB8; // type:function size:0x1AC
fn_1_11064 = .text:0x00011064; // type:function size:0x420
fn_1_11484 = .text:0x00011484; // type:function size:0x56C
fn_1_E100 = .text:0x0000E100; // type:function size:0x54 scope:local
fn_1_E154 = .text:0x0000E154; // type:function size:0x164 scope:local
fn_1_E2B8 = .text:0x0000E2B8; // type:function size:0x194 scope:local
fn_1_E44C = .text:0x0000E44C; // type:function size:0x4C8 scope:local
fn_1_E914 = .text:0x0000E914; // type:function size:0x3C0 scope:local
fn_1_ECD4 = .text:0x0000ECD4; // type:function size:0x1CC scope:local
fn_1_EEA0 = .text:0x0000EEA0; // type:function size:0x38 scope:local
fn_1_EED8 = .text:0x0000EED8; // type:function size:0x1C4 scope:local
fn_1_F09C = .text:0x0000F09C; // type:function size:0x2AC scope:local
fn_1_F348 = .text:0x0000F348; // type:function size:0xB0 scope:local
fn_1_F3F8 = .text:0x0000F3F8; // type:function size:0x2F0 scope:local
fn_1_F6E8 = .text:0x0000F6E8; // type:function size:0x1A8 scope:local
fn_1_F890 = .text:0x0000F890; // type:function size:0x18C scope:local
fn_1_FA1C = .text:0x0000FA1C; // type:function size:0xA0 scope:local
fn_1_FABC = .text:0x0000FABC; // type:function size:0x9C scope:local
fn_1_FB58 = .text:0x0000FB58; // type:function size:0xE4 scope:local
fn_1_FC3C = .text:0x0000FC3C; // type:function size:0xB0 scope:local
fn_1_FCEC = .text:0x0000FCEC; // type:function size:0x50 scope:local
fn_1_FD3C = .text:0x0000FD3C; // type:function size:0x108 scope:local
fn_1_FE44 = .text:0x0000FE44; // type:function size:0x8C scope:local
fn_1_FED0 = .text:0x0000FED0; // type:function size:0x14C scope:local
fn_1_1001C = .text:0x0001001C; // type:function size:0x19C scope:local
fn_1_101B8 = .text:0x000101B8; // type:function size:0x4AC scope:local
fn_1_10664 = .text:0x00010664; // type:function size:0x1BC scope:local
fn_1_10820 = .text:0x00010820; // type:function size:0x2C8 scope:local
fn_1_10AE8 = .text:0x00010AE8; // type:function size:0xC8 scope:local
fn_1_10BB0 = .text:0x00010BB0; // type:function size:0x140 scope:local
fn_1_10CF0 = .text:0x00010CF0; // type:function size:0x1C8 scope:local
fn_1_10EB8 = .text:0x00010EB8; // type:function size:0x1AC scope:local
fn_1_11064 = .text:0x00011064; // type:function size:0x420 scope:local
fn_1_11484 = .text:0x00011484; // type:function size:0x56C scope:local
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float
lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 data:4byte
lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x8 data:4byte
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x8 data:4byte
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x2 data:2byte
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x2 data:2byte
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float
lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0xC data:2byte
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float
lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float
lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float
lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float
lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float
lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float
lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float
lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float
lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float
lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float
lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float
lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double
lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double
lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double
lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float
lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float
lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float
lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float
lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float
lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x528
lbl_1_data_528 = .data:0x00000528; // type:object size:0x2 data:2byte
lbl_1_data_52A = .data:0x0000052A; // type:object size:0x2 data:2byte
lbl_1_data_52C = .data:0x0000052C; // type:object size:0x2 data:2byte
lbl_1_data_52E = .data:0x0000052E; // type:object size:0x2 data:2byte
lbl_1_data_530 = .data:0x00000530; // type:object size:0x2 data:2byte
lbl_1_data_534 = .data:0x00000534; // type:object size:0x8
lbl_1_data_53C = .data:0x0000053C; // type:object size:0x8
lbl_1_data_544 = .data:0x00000544; // type:object size:0x14 data:string
lbl_1_data_558 = .data:0x00000558; // type:object size:0x14 data:string
lbl_1_data_56C = .data:0x0000056C; // type:object size:0x14
lbl_1_data_580 = .data:0x00000580; // type:object size:0x2 data:2byte
lbl_1_data_582 = .data:0x00000582; // type:object size:0x12
lbl_1_data_594 = .data:0x00000594; // type:object size:0x40
lbl_1_data_5D4 = .data:0x000005D4; // type:object size:0x4 data:4byte
lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x4 data:4byte
lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x10
lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x7 data:string
lbl_1_data_5F3 = .data:0x000005F3; // type:object size:0x7 data:string
lbl_1_data_5FA = .data:0x000005FA; // type:object size:0xA
lbl_1_data_604 = .data:0x00000604; // type:object size:0xC
lbl_1_data_610 = .data:0x00000610; // type:object size:0x10
lbl_1_data_620 = .data:0x00000620; // type:object size:0x5 data:string
lbl_1_data_625 = .data:0x00000625; // type:object size:0x5 data:string
lbl_1_data_62A = .data:0x0000062A; // type:object size:0x5 data:string
lbl_1_data_62F = .data:0x0000062F; // type:object size:0x4 data:string
lbl_1_data_633 = .data:0x00000633; // type:object size:0x1 data:byte
lbl_1_data_634 = .data:0x00000634; // type:object size:0x24
lbl_1_data_658 = .data:0x00000658; // type:object size:0x24
lbl_1_data_67C = .data:0x0000067C; // type:object size:0x14
lbl_1_data_690 = .data:0x00000690; // type:object size:0x2D0
lbl_1_data_960 = .data:0x00000960; // type:object size:0x2D0
lbl_1_data_C30 = .data:0x00000C30; // type:object size:0x2D0
lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x8
lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x38
lbl_1_data_F40 = .data:0x00000F40; // type:object size:0x20
lbl_1_data_F60 = .data:0x00000F60; // type:object size:0x20
lbl_1_data_F80 = .data:0x00000F80; // type:object size:0x7 data:string
lbl_1_data_F87 = .data:0x00000F87; // type:object size:0x5 data:string
lbl_1_data_F8C = .data:0x00000F8C; // type:object size:0x5 data:string
lbl_1_data_F91 = .data:0x00000F91; // type:object size:0x5 data:string
lbl_1_data_F96 = .data:0x00000F96; // type:object size:0x6
lbl_1_data_F9C = .data:0x00000F9C; // type:object size:0x10 data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float
lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x10 scope:local data:4byte
lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x2 scope:local data:2byte
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x2 scope:local data:2byte
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float
lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0xC scope:local data:2byte
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float
lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float
lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float
lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float
lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float
lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float
lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float
lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float
lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float
lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double
lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double
lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double
lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x528 scope:local
lbl_1_data_528 = .data:0x00000528; // type:object size:0x2 scope:local data:2byte
lbl_1_data_52A = .data:0x0000052A; // type:object size:0x2 scope:local data:2byte
lbl_1_data_52C = .data:0x0000052C; // type:object size:0x2 scope:local data:2byte
lbl_1_data_52E = .data:0x0000052E; // type:object size:0x2 scope:local data:2byte
lbl_1_data_530 = .data:0x00000530; // type:object size:0x2 scope:local data:2byte
lbl_1_data_534 = .data:0x00000534; // type:object size:0x8 scope:local
lbl_1_data_53C = .data:0x0000053C; // type:object size:0x8 scope:local
lbl_1_data_544 = .data:0x00000544; // type:object size:0x14 scope:local data:string
lbl_1_data_558 = .data:0x00000558; // type:object size:0x14 scope:local data:string
lbl_1_data_56C = .data:0x0000056C; // type:object size:0x13 scope:local data:string
lbl_1_data_580 = .data:0x00000580; // type:object size:0x2 scope:local data:2byte
lbl_1_data_582 = .data:0x00000582; // type:object size:0x12 scope:local
lbl_1_data_594 = .data:0x00000594; // type:object size:0x40 scope:local
lbl_1_data_5D4 = .data:0x000005D4; // type:object size:0x4 scope:local data:4byte
lbl_1_data_5D8 = .data:0x000005D8; // type:object size:0x4 scope:local data:4byte
lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x10 scope:local data:2byte
lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x7 scope:local data:string
lbl_1_data_5F3 = .data:0x000005F3; // type:object size:0x7 scope:local data:string
lbl_1_data_5FA = .data:0x000005FA; // type:object size:0x7 scope:local data:string
lbl_1_data_604 = .data:0x00000604; // type:object size:0xC scope:local
lbl_1_data_610 = .data:0x00000610; // type:object size:0x10 scope:local
lbl_1_data_620 = .data:0x00000620; // type:object size:0x5 scope:local data:string
lbl_1_data_625 = .data:0x00000625; // type:object size:0x5 scope:local data:string
lbl_1_data_62A = .data:0x0000062A; // type:object size:0x5 scope:local data:string
lbl_1_data_62F = .data:0x0000062F; // type:object size:0x4 scope:local data:string
lbl_1_data_633 = .data:0x00000633; // type:object size:0x1 scope:local data:byte
lbl_1_data_634 = .data:0x00000634; // type:object size:0x24 scope:local
lbl_1_data_658 = .data:0x00000658; // type:object size:0x24 scope:local
lbl_1_data_67C = .data:0x0000067C; // type:object size:0x12 scope:local data:2byte
lbl_1_data_690 = .data:0x00000690; // type:object size:0x2D0 scope:local
lbl_1_data_960 = .data:0x00000960; // type:object size:0x2D0 scope:local
lbl_1_data_C30 = .data:0x00000C30; // type:object size:0x2D0 scope:local
lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x3 scope:local data:string
lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x38 scope:local
lbl_1_data_F40 = .data:0x00000F40; // type:object size:0x20 scope:local
lbl_1_data_F60 = .data:0x00000F60; // type:object size:0x20 scope:local
lbl_1_data_F80 = .data:0x00000F80; // type:object size:0x7 scope:local data:string
lbl_1_data_F87 = .data:0x00000F87; // type:object size:0x5 scope:local data:string
lbl_1_data_F8C = .data:0x00000F8C; // type:object size:0x5 scope:local data:string
lbl_1_data_F91 = .data:0x00000F91; // type:object size:0x5 scope:local data:string
lbl_1_data_F96 = .data:0x00000F96; // type:object size:0x5 scope:local data:string
lbl_1_data_F9C = .data:0x00000F9C; // type:object size:0x10 scope:local data:4byte
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte
lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x1 data:byte
lbl_1_bss_29 = .bss:0x00000029; // type:object size:0x1 data:byte
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x5A0
lbl_1_bss_5CC = .bss:0x000005CC; // type:object size:0x2 data:2byte
lbl_1_bss_5D0 = .bss:0x000005D0; // type:object size:0x30
lbl_1_bss_600 = .bss:0x00000600; // type:object size:0x18
lbl_1_bss_618 = .bss:0x00000618; // type:object size:0xC data:4byte
lbl_1_bss_624 = .bss:0x00000624; // type:object size:0xC data:float
lbl_1_bss_630 = .bss:0x00000630; // type:object size:0xC data:4byte
lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x4 data:float
lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x4 data:float
lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x4 data:float
lbl_1_bss_648 = .bss:0x00000648; // type:object size:0xC data:4byte
lbl_1_bss_654 = .bss:0x00000654; // type:object size:0xC data:float
lbl_1_bss_660 = .bss:0x00000660; // type:object size:0xC data:float
lbl_1_bss_66C = .bss:0x0000066C; // type:object size:0x4 data:float
lbl_1_bss_670 = .bss:0x00000670; // type:object size:0x4 data:float
lbl_1_bss_674 = .bss:0x00000674; // type:object size:0x4 data:float
lbl_1_bss_678 = .bss:0x00000678; // type:object size:0x30
lbl_1_bss_6A8 = .bss:0x000006A8; // type:object size:0x4 data:float
lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x2 data:2byte
lbl_1_bss_6AE = .bss:0x000006AE; // type:object size:0x2 data:2byte
lbl_1_bss_6B0 = .bss:0x000006B0; // type:object size:0x1 data:byte
lbl_1_bss_6B1 = .bss:0x000006B1; // type:object size:0x1 data:byte
lbl_1_bss_6B2 = .bss:0x000006B2; // type:object size:0x1 data:byte
lbl_1_bss_6B3 = .bss:0x000006B3; // type:object size:0x1 data:byte
lbl_1_bss_6B4 = .bss:0x000006B4; // type:object size:0x1 data:byte
lbl_1_bss_6B6 = .bss:0x000006B6; // type:object size:0xA data:2byte
lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte
lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x44 data:2byte
lbl_1_bss_708 = .bss:0x00000708; // type:object size:0x2 data:2byte
lbl_1_bss_70C = .bss:0x0000070C; // type:object size:0x4 data:4byte
lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 data:4byte
lbl_1_bss_714 = .bss:0x00000714; // type:object size:0xC
lbl_1_bss_720 = .bss:0x00000720; // type:object size:0x4 data:4byte
lbl_1_bss_724 = .bss:0x00000724; // type:object size:0x4 data:4byte
lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x2 data:2byte
lbl_1_bss_72A = .bss:0x0000072A; // type:object size:0x2 data:2byte
lbl_1_bss_72C = .bss:0x0000072C; // type:object size:0x4 data:4byte
lbl_1_bss_730 = .bss:0x00000730; // type:object size:0x4 data:4byte
lbl_1_bss_734 = .bss:0x00000734; // type:object size:0x4 data:4byte
lbl_1_bss_738 = .bss:0x00000738; // type:object size:0xC data:float
lbl_1_bss_744 = .bss:0x00000744; // type:object size:0x2 data:2byte
lbl_1_bss_748 = .bss:0x00000748; // type:object size:0x4 data:4byte
lbl_1_bss_74C = .bss:0x0000074C; // type:object size:0x4 data:4byte
lbl_1_bss_750 = .bss:0x00000750; // type:object size:0x2 data:2byte
lbl_1_bss_754 = .bss:0x00000754; // type:object size:0x4 data:float
lbl_1_bss_758 = .bss:0x00000758; // type:object size:0x4 data:4byte
lbl_1_bss_75C = .bss:0x0000075C; // type:object size:0x4 data:4byte
lbl_1_bss_760 = .bss:0x00000760; // type:object size:0x28
lbl_1_bss_788 = .bss:0x00000788; // type:object size:0x2 data:2byte
lbl_1_bss_78A = .bss:0x0000078A; // type:object size:0x6 data:2byte
lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x6 data:2byte
lbl_1_bss_796 = .bss:0x00000796; // type:object size:0x2 data:2byte
lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x4 data:4byte
lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x4 data:4byte
lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x4 data:4byte
lbl_1_bss_7A4 = .bss:0x000007A4; // type:object size:0x4 data:4byte
lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x2 data:2byte
lbl_1_bss_7AA = .bss:0x000007AA; // type:object size:0x2 data:2byte
lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x8 data:4byte
lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x2 data:2byte
lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x4 data:4byte
lbl_1_bss_7BC = .bss:0x000007BC; // type:object size:0x8 data:4byte
lbl_1_bss_7C4 = .bss:0x000007C4; // type:object size:0xC data:float
lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x2 data:2byte
lbl_1_bss_7D2 = .bss:0x000007D2; // type:object size:0x2 data:2byte
lbl_1_bss_7D4 = .bss:0x000007D4; // type:object size:0x2 data:2byte
lbl_1_bss_7D6 = .bss:0x000007D6; // type:object size:0x2 data:2byte
lbl_1_bss_7D8 = .bss:0x000007D8; // type:object size:0xC data:4byte
lbl_1_bss_7E4 = .bss:0x000007E4; // type:object size:0x4 data:4byte
lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x4 data:float
lbl_1_bss_7EC = .bss:0x000007EC; // type:object size:0x4 data:float
lbl_1_bss_7F0 = .bss:0x000007F0; // type:object size:0x4 data:4byte
lbl_1_bss_7F4 = .bss:0x000007F4; // type:object size:0x4 data:4byte
lbl_1_bss_7F8 = .bss:0x000007F8; // type:object size:0x4 data:4byte
lbl_1_bss_7FC = .bss:0x000007FC; // type:object size:0x10 data:4byte
lbl_1_bss_80C = .bss:0x0000080C; // type:object size:0xC data:float
lbl_1_bss_818 = .bss:0x00000818; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x1 scope:local data:byte
lbl_1_bss_29 = .bss:0x00000029; // type:object size:0x1 scope:local data:byte
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x5A0 scope:local
lbl_1_bss_5CC = .bss:0x000005CC; // type:object size:0x4 scope:local data:2byte
lbl_1_bss_5D0 = .bss:0x000005D0; // type:object size:0x30 scope:local
lbl_1_bss_600 = .bss:0x00000600; // type:object size:0x18 scope:local
lbl_1_bss_618 = .bss:0x00000618; // type:object size:0xC scope:local data:4byte
lbl_1_bss_624 = .bss:0x00000624; // type:object size:0xC scope:local data:float
lbl_1_bss_630 = .bss:0x00000630; // type:object size:0xC scope:local data:4byte
lbl_1_bss_63C = .bss:0x0000063C; // type:object size:0x4 scope:local data:float
lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x4 scope:local data:float
lbl_1_bss_644 = .bss:0x00000644; // type:object size:0x4 scope:local data:float
lbl_1_bss_648 = .bss:0x00000648; // type:object size:0xC scope:local data:4byte
lbl_1_bss_654 = .bss:0x00000654; // type:object size:0xC scope:local data:float
lbl_1_bss_660 = .bss:0x00000660; // type:object size:0xC scope:local data:float
lbl_1_bss_66C = .bss:0x0000066C; // type:object size:0x4 scope:local data:float
lbl_1_bss_670 = .bss:0x00000670; // type:object size:0x4 scope:local data:float
lbl_1_bss_674 = .bss:0x00000674; // type:object size:0x4 scope:local data:float
lbl_1_bss_678 = .bss:0x00000678; // type:object size:0x30 scope:local
lbl_1_bss_6A8 = .bss:0x000006A8; // type:object size:0x4 scope:local data:float
lbl_1_bss_6AC = .bss:0x000006AC; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_6AE = .bss:0x000006AE; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_6B0 = .bss:0x000006B0; // type:object size:0x1 scope:local data:byte
lbl_1_bss_6B1 = .bss:0x000006B1; // type:object size:0x1 scope:local data:byte
lbl_1_bss_6B2 = .bss:0x000006B2; // type:object size:0x1 scope:local data:byte
lbl_1_bss_6B3 = .bss:0x000006B3; // type:object size:0x1 scope:local data:byte
lbl_1_bss_6B4 = .bss:0x000006B4; // type:object size:0x1 scope:local data:byte
lbl_1_bss_6B6 = .bss:0x000006B6; // type:object size:0xA scope:local data:2byte
lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x42 data:2byte
lbl_1_bss_708 = .bss:0x00000708; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_70C = .bss:0x0000070C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_710 = .bss:0x00000710; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_714 = .bss:0x00000714; // type:object size:0xC scope:local
lbl_1_bss_720 = .bss:0x00000720; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_724 = .bss:0x00000724; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_72A = .bss:0x0000072A; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_72C = .bss:0x0000072C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_730 = .bss:0x00000730; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_734 = .bss:0x00000734; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_738 = .bss:0x00000738; // type:object size:0xC scope:local data:float
lbl_1_bss_744 = .bss:0x00000744; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_748 = .bss:0x00000748; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_74C = .bss:0x0000074C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_750 = .bss:0x00000750; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_754 = .bss:0x00000754; // type:object size:0x4 scope:local data:float
lbl_1_bss_758 = .bss:0x00000758; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_75C = .bss:0x0000075C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_760 = .bss:0x00000760; // type:object size:0x28 scope:local
lbl_1_bss_788 = .bss:0x00000788; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_78A = .bss:0x0000078A; // type:object size:0x6 scope:local data:2byte
lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x6 scope:local data:2byte
lbl_1_bss_796 = .bss:0x00000796; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_79C = .bss:0x0000079C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7A0 = .bss:0x000007A0; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7A4 = .bss:0x000007A4; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7A8 = .bss:0x000007A8; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7AA = .bss:0x000007AA; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7AC = .bss:0x000007AC; // type:object size:0x8 scope:local data:4byte
lbl_1_bss_7B4 = .bss:0x000007B4; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7B8 = .bss:0x000007B8; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7BC = .bss:0x000007BC; // type:object size:0x8 scope:local data:4byte
lbl_1_bss_7C4 = .bss:0x000007C4; // type:object size:0xC scope:local data:float
lbl_1_bss_7D0 = .bss:0x000007D0; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7D2 = .bss:0x000007D2; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7D4 = .bss:0x000007D4; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7D6 = .bss:0x000007D6; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_7D8 = .bss:0x000007D8; // type:object size:0xC scope:local data:4byte
lbl_1_bss_7E4 = .bss:0x000007E4; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x4 scope:local data:float
lbl_1_bss_7EC = .bss:0x000007EC; // type:object size:0x4 scope:local data:float
lbl_1_bss_7F0 = .bss:0x000007F0; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7F4 = .bss:0x000007F4; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7F8 = .bss:0x000007F8; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_7FC = .bss:0x000007FC; // type:object size:0x10 scope:local data:4byte
lbl_1_bss_80C = .bss:0x0000080C; // type:object size:0xC scope:local data:float
lbl_1_bss_818 = .bss:0x00000818; // type:object size:0x4 scope:local data:4byte

View file

@ -111,15 +111,15 @@ fn_1_E310 = .text:0x0000E310; // type:function size:0x10C
fn_1_E41C = .text:0x0000E41C; // type:function size:0xB8
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:float
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
@ -363,7 +363,7 @@ lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float
lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float
lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float
lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x280
lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 scope:local
lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:2byte
lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:2byte
lbl_1_data_284 = .data:0x00000284; // type:object size:0x2 data:2byte

View file

@ -161,67 +161,67 @@ lbl_1_rodata_C2 = .rodata:0x000000C2; // type:object size:0x6 scope:local data:b
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x20 data:4byte
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:4byte
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float
lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x10 data:4byte
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x20 scope:local data:4byte
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float
lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float
lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float
lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float
lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x10 scope:local data:4byte
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
@ -355,11 +355,11 @@ lbl_1_data_312 = .data:0x00000312; // type:object size:0x2 data:2byte
lbl_1_data_314 = .data:0x00000314; // type:object size:0x2 data:2byte
lbl_1_data_316 = .data:0x00000316; // type:object size:0x2 data:2byte
lbl_1_data_318 = .data:0x00000318; // type:object size:0x18
lbl_1_data_330 = .data:0x00000330; // type:object size:0xD data:string
lbl_1_data_33D = .data:0x0000033D; // type:object size:0x6 data:string
lbl_1_data_343 = .data:0x00000343; // type:object size:0x9
lbl_1_data_330 = .data:0x00000330; // type:object size:0xD scope:local data:string
lbl_1_data_33D = .data:0x0000033D; // type:object size:0x6 scope:local data:string
lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 scope:local
lbl_1_data_34C = .data:0x0000034C; // type:object size:0x8
lbl_1_data_354 = .data:0x00000354; // type:object size:0x8
lbl_1_data_354 = .data:0x00000354; // type:object size:0x8 scope:local
lbl_1_data_35C = .data:0x0000035C; // type:object size:0xC
lbl_1_data_368 = .data:0x00000368; // type:object size:0x20
lbl_1_data_388 = .data:0x00000388; // type:object size:0x2 data:2byte

View file

@ -3,78 +3,78 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global
BoardCreate = .text:0x000000E0; // type:function size:0x4C4
BoardDestroy = .text:0x000005A4; // type:function size:0x18C
fn_1_730 = .text:0x00000730; // type:function size:0x6C
fn_1_79C = .text:0x0000079C; // type:function size:0x20
fn_1_7BC = .text:0x000007BC; // type:function size:0x144
fn_1_900 = .text:0x00000900; // type:function size:0x84
fn_1_984 = .text:0x00000984; // type:function size:0x3C
fn_1_9C0 = .text:0x000009C0; // type:function size:0x168
fn_1_B28 = .text:0x00000B28; // type:function size:0x34
fn_1_B5C = .text:0x00000B5C; // type:function size:0x214
fn_1_730 = .text:0x00000730; // type:function size:0x6C scope:local
fn_1_79C = .text:0x0000079C; // type:function size:0x20 scope:local
fn_1_7BC = .text:0x000007BC; // type:function size:0x144 scope:local
fn_1_900 = .text:0x00000900; // type:function size:0x84 scope:local
fn_1_984 = .text:0x00000984; // type:function size:0x3C scope:local
fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 scope:local
fn_1_B28 = .text:0x00000B28; // type:function size:0x34 scope:local
fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 scope:local
fn_1_D70 = .text:0x00000D70; // type:function size:0x1FC
fn_1_F6C = .text:0x00000F6C; // type:function size:0xE8
fn_1_1054 = .text:0x00001054; // type:function size:0x90
fn_1_10E4 = .text:0x000010E4; // type:function size:0x64
fn_1_1148 = .text:0x00001148; // type:function size:0x68
fn_1_11B0 = .text:0x000011B0; // type:function size:0xF0
fn_1_12A0 = .text:0x000012A0; // type:function size:0x32C
fn_1_15CC = .text:0x000015CC; // type:function size:0x614
fn_1_1BE0 = .text:0x00001BE0; // type:function size:0xD0
fn_1_1CB0 = .text:0x00001CB0; // type:function size:0xAC
fn_1_1D5C = .text:0x00001D5C; // type:function size:0xD4
fn_1_1E30 = .text:0x00001E30; // type:function size:0xD8
fn_1_1F08 = .text:0x00001F08; // type:function size:0x140
fn_1_2048 = .text:0x00002048; // type:function size:0x84
fn_1_20CC = .text:0x000020CC; // type:function size:0xA8
fn_1_2174 = .text:0x00002174; // type:function size:0x58
fn_1_21CC = .text:0x000021CC; // type:function size:0x54
fn_1_2220 = .text:0x00002220; // type:function size:0x21C
fn_1_243C = .text:0x0000243C; // type:function size:0x5E0
fn_1_2A1C = .text:0x00002A1C; // type:function size:0x144
fn_1_2B60 = .text:0x00002B60; // type:function size:0xB8
fn_1_2C18 = .text:0x00002C18; // type:function size:0x178
fn_1_2D90 = .text:0x00002D90; // type:function size:0x40
fn_1_2DD0 = .text:0x00002DD0; // type:function size:0x48
fn_1_2E18 = .text:0x00002E18; // type:function size:0xDC
fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x57C
fn_1_3470 = .text:0x00003470; // type:function size:0xF0
fn_1_3560 = .text:0x00003560; // type:function size:0x5C
fn_1_35BC = .text:0x000035BC; // type:function size:0x48
fn_1_3604 = .text:0x00003604; // type:function size:0x94
fn_1_3698 = .text:0x00003698; // type:function size:0x2DC
fn_1_3974 = .text:0x00003974; // type:function size:0x6FC
fn_1_4070 = .text:0x00004070; // type:function size:0xB4
fn_1_4124 = .text:0x00004124; // type:function size:0x70
fn_1_4194 = .text:0x00004194; // type:function size:0x118
fn_1_42AC = .text:0x000042AC; // type:function size:0x130
fn_1_43DC = .text:0x000043DC; // type:function size:0x84
fn_1_4460 = .text:0x00004460; // type:function size:0x418
fn_1_10E4 = .text:0x000010E4; // type:function size:0x64 scope:local
fn_1_1148 = .text:0x00001148; // type:function size:0x68 scope:local
fn_1_11B0 = .text:0x000011B0; // type:function size:0xF0 scope:local
fn_1_12A0 = .text:0x000012A0; // type:function size:0x32C scope:local
fn_1_15CC = .text:0x000015CC; // type:function size:0x614 scope:local
fn_1_1BE0 = .text:0x00001BE0; // type:function size:0xD0 scope:local
fn_1_1CB0 = .text:0x00001CB0; // type:function size:0xAC scope:local
fn_1_1D5C = .text:0x00001D5C; // type:function size:0xD4 scope:local
fn_1_1E30 = .text:0x00001E30; // type:function size:0xD8 scope:local
fn_1_1F08 = .text:0x00001F08; // type:function size:0x140 scope:local
fn_1_2048 = .text:0x00002048; // type:function size:0x84 scope:local
fn_1_20CC = .text:0x000020CC; // type:function size:0xA8 scope:local
fn_1_2174 = .text:0x00002174; // type:function size:0x58 scope:local
fn_1_21CC = .text:0x000021CC; // type:function size:0x54 scope:local
fn_1_2220 = .text:0x00002220; // type:function size:0x21C scope:local
fn_1_243C = .text:0x0000243C; // type:function size:0x5E0 scope:local
fn_1_2A1C = .text:0x00002A1C; // type:function size:0x144 scope:local
fn_1_2B60 = .text:0x00002B60; // type:function size:0xB8 scope:local
fn_1_2C18 = .text:0x00002C18; // type:function size:0x178 scope:local
fn_1_2D90 = .text:0x00002D90; // type:function size:0x40 scope:local
fn_1_2DD0 = .text:0x00002DD0; // type:function size:0x48 scope:local
fn_1_2E18 = .text:0x00002E18; // type:function size:0xDC scope:local
fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x57C scope:local
fn_1_3470 = .text:0x00003470; // type:function size:0xF0 scope:local
fn_1_3560 = .text:0x00003560; // type:function size:0x5C scope:local
fn_1_35BC = .text:0x000035BC; // type:function size:0x48 scope:local
fn_1_3604 = .text:0x00003604; // type:function size:0x94 scope:local
fn_1_3698 = .text:0x00003698; // type:function size:0x2DC scope:local
fn_1_3974 = .text:0x00003974; // type:function size:0x6FC scope:local
fn_1_4070 = .text:0x00004070; // type:function size:0xB4 scope:local
fn_1_4124 = .text:0x00004124; // type:function size:0x70 scope:local
fn_1_4194 = .text:0x00004194; // type:function size:0x118 scope:local
fn_1_42AC = .text:0x000042AC; // type:function size:0x130 scope:local
fn_1_43DC = .text:0x000043DC; // type:function size:0x84 scope:local
fn_1_4460 = .text:0x00004460; // type:function size:0x418 scope:local
fn_1_4878 = .text:0x00004878; // type:function size:0x198
fn_1_4A10 = .text:0x00004A10; // type:function size:0x50
fn_1_4A60 = .text:0x00004A60; // type:function size:0xA0
fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0
fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58
fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0
fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4
fn_1_519C = .text:0x0000519C; // type:function size:0x204
fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0
fn_1_5490 = .text:0x00005490; // type:function size:0x23C
fn_1_56CC = .text:0x000056CC; // type:function size:0x110
fn_1_57DC = .text:0x000057DC; // type:function size:0xA0
fn_1_587C = .text:0x0000587C; // type:function size:0x80
fn_1_58FC = .text:0x000058FC; // type:function size:0x6C
fn_1_5968 = .text:0x00005968; // type:function size:0x68
fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C
fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48
fn_1_5B54 = .text:0x00005B54; // type:function size:0x190
fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8
fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40
fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C
fn_1_5F58 = .text:0x00005F58; // type:function size:0x114
fn_1_606C = .text:0x0000606C; // type:function size:0x9A0
fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240
fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244
fn_1_6E90 = .text:0x00006E90; // type:function size:0x60
fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 scope:local
fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 scope:local
fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 scope:local
fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 scope:local
fn_1_519C = .text:0x0000519C; // type:function size:0x204 scope:local
fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 scope:local
fn_1_5490 = .text:0x00005490; // type:function size:0x23C scope:local
fn_1_56CC = .text:0x000056CC; // type:function size:0x110 scope:local
fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 scope:local
fn_1_587C = .text:0x0000587C; // type:function size:0x80 scope:local
fn_1_58FC = .text:0x000058FC; // type:function size:0x6C scope:local
fn_1_5968 = .text:0x00005968; // type:function size:0x68 scope:local
fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C scope:local
fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 scope:local
fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 scope:local
fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 scope:local
fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 scope:local
fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C scope:local
fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 scope:local
fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 scope:local
fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 scope:local
fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 scope:local
fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 scope:local
fn_1_6EF0 = .text:0x00006EF0; // type:function size:0x90
fn_1_6F80 = .text:0x00006F80; // type:function size:0x290
fn_1_7210 = .text:0x00007210; // type:function size:0x94
@ -121,90 +121,90 @@ fn_1_CC90 = .text:0x0000CC90; // type:function size:0x7C
fn_1_CD0C = .text:0x0000CD0C; // type:function size:0x398
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:4byte
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:4byte
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float
lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x2 data:byte
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x3 data:byte
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 data:2byte
lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x3 data:byte
lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 data:2byte
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float
lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5
lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7
lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC data:4byte
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:float
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float
lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float
lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x2 scope:local data:byte
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x3 scope:local data:byte
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 scope:local data:2byte
lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x3 scope:local data:byte
lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 scope:local data:2byte
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 scope:local data:byte
lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 scope:local data:byte
lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float
lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:4byte
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float
lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
@ -268,26 +268,26 @@ lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0
lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 data:2byte
lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 data:2byte
lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 data:2byte
lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 data:2byte
lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8
lbl_1_data_100 = .data:0x00000100; // type:object size:0x8
lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0
lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 data:2byte
lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x1 data:byte
lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3
lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 data:2byte
lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC
lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 data:string
lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0xE
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte
lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte
lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 data:2byte
lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6
lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x20
lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 scope:local
lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 scope:local data:2byte
lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 scope:local data:2byte
lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 scope:local data:2byte
lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 scope:local data:2byte
lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 scope:local
lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 scope:local
lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 scope:local
lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 scope:local data:2byte
lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x3 scope:local data:byte
lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3 scope:local
lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 scope:local data:2byte
lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC scope:local
lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 scope:local data:string
lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0xE scope:local data:byte
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 scope:local data:2byte
lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 scope:local data:2byte
lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 scope:local data:2byte
lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x3 scope:local data:string
lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x20 scope:local
lbl_1_data_208 = .data:0x00000208; // type:object size:0x20
lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 data:byte
lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte
@ -333,29 +333,29 @@ lbl_1_data_510 = .data:0x00000510; // type:object size:0x20
lbl_1_data_530 = .data:0x00000530; // type:object size:0x6 data:string
lbl_1_data_536 = .data:0x00000536; // type:object size:0xB data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x1 data:byte
lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 data:byte
lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte
lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6
lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x6 data:2byte
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte
lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte
lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 data:byte
lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 data:byte
lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 data:byte
lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31
lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x3 scope:local data:byte
lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 scope:local data:byte
lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 scope:local
lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x6 scope:local data:2byte
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 scope:local data:byte
lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 scope:local data:byte
lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 scope:local data:byte
lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 scope:local
lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x28 data:4byte
lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte
lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte

View file

@ -84,14 +84,14 @@ lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:f
lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 data:float
mapObjTbl = .data:0x00000000; // type:object size:0x28 scope:local data:float
bgMdl = .data:0x00000028; // type:object size:0x2 scope:local data:2byte
fgMdl = .data:0x0000002A; // type:object size:0x2 scope:local data:2byte
boardStarHostMdl = .data:0x0000002C; // type:object size:0x2 data:2byte
boardShopHostMdl = .data:0x0000002E; // type:object size:0x2 data:2byte
boardLotteryHostMdl = .data:0x00000030; // type:object size:0x2 data:2byte
boardBooHouseHostMdl = .data:0x00000032; // type:object size:0x2 data:2byte
lbl_1_data_34 = .data:0x00000034; // type:object size:0x20 data:4byte
charMotDirTbl = .data:0x00000034; // type:object size:0x20 scope:local data:4byte
starHostMot = .data:0x00000054; // type:object size:0x8 scope:local
shopHostMot = .data:0x0000005C; // type:object size:0x8 scope:local
lotteryHostMot = .data:0x00000064; // type:object size:0x8 scope:local
@ -105,10 +105,10 @@ lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 scope:local data:str
tutorialSprTbl = .data:0x000002A8; // type:object size:0x2C scope:local
boardWork = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
motTbl = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte
tutorialDoneF = .bss:0x0000000C; // type:object size:0x2 data:2byte
w10ExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:2byte
tutorialExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte
boardMapObjMdl = .bss:0x00000010; // type:object size:0x2 data:2byte
hostProc = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
hostPos = .bss:0x0000001C; // type:object size:0x2 scope:local data:2byte
hostMdl = .bss:0x0000001E; // type:object size:0x2 scope:local data:2byte

File diff suppressed because it is too large Load diff

View file

@ -350,7 +350,7 @@ config.libs = [
Object(Matching, "game/minigame_seq.c"),
Object(Matching, "game/ovllist.c"),
Object(Matching, "game/esprite.c"),
Object(NonMatching, "game/code_8003FF68.c"),
Object(Matching, "game/code_8003FF68.c"),
Object(Matching, "game/ClusterExec.c"),
Object(Matching, "game/ShapeExec.c"),
Object(Matching, "game/wipe.c"),
@ -380,7 +380,7 @@ config.libs = [
Object(Matching, "game/board/basic_space.c"),
Object(Matching, "game/board/warp.c"),
Object(Matching, "game/board/char_wheel.c"),
Object(NonMatching, "game/board/mushroom.c"),
Object(Matching, "game/board/mushroom.c"),
Object(Matching, "game/board/star.c"),
Object(Matching, "game/board/roll.c"),
Object(Matching, "game/board/ui.c"),
@ -397,7 +397,7 @@ config.libs = [
Object(Matching, "game/board/pause.c"),
Object(Matching, "game/board/com_path.c"),
Object(Matching, "game/board/tutorial.c"),
Object(NonMatching, "game/kerent.c"),
Object(Matching, "game/kerent.c"),
],
},
DolphinLib(
@ -834,13 +834,13 @@ config.libs = [
Rel('m407dll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/m407dll/player.c"),
Object(NonMatching, "REL/m407dll/map.c"),
Object(NonMatching, "REL/m407dll/camera.c"),
Object(Matching, "REL/m407dll/player.c"),
Object(Matching, "REL/m407dll/map.c"),
Object(Matching, "REL/m407dll/camera.c"),
Object(NonMatching, "REL/m407dll/whomp.c"),
Object(NonMatching, "REL/m407dll/whomp_score.c"),
Object(NonMatching, "REL/m407dll/effect.c"),
Object(NonMatching, "REL/m407dll/main.c"),
Object(Matching, "REL/m407dll/whomp_score.c"),
Object(Matching, "REL/m407dll/effect.c"),
Object(Matching, "REL/m407dll/main.c"),
Object(NonMatching, "REL/m407dll/score.c"),
}
),
@ -1084,15 +1084,15 @@ config.libs = [
Rel('w01Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w01Dll/main.c"),
Object(NonMatching, "REL/w01Dll/mg_coin.c"),
Object(NonMatching, "REL/w01Dll/mg_item.c"),
Object(Matching, "REL/w01Dll/main.c"),
Object(Matching, "REL/w01Dll/mg_coin.c"),
Object(Matching, "REL/w01Dll/mg_item.c"),
}
),
Rel('w02Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w02Dll/main.c"),
Object(Matching, "REL/w02Dll/main.c"),
Object(NonMatching, "REL/w02Dll/dice.c"),
Object(NonMatching, "REL/w02Dll/gamble.c"),
Object(NonMatching, "REL/w02Dll/mg_coin.c"),
@ -1106,7 +1106,7 @@ config.libs = [
Object(Matching, "REL/board_executor.c"),
Object(Matching, "REL/w03Dll/main.c"),
Object(Matching, "REL/w03Dll/statue.c"),
Object(NonMatching, "REL/w03Dll/condor.c"),
Object(Matching, "REL/w03Dll/condor.c"),
Object(Matching, "REL/w03Dll/river.c"),
Object(Matching, "REL/w03Dll/smoke.c"),
Object(Matching, "REL/w03Dll/mg_coin.c"),
@ -1135,12 +1135,12 @@ config.libs = [
Object(NonMatching, "REL/w05Dll/mg_coin.c"),
}
),
Rel('w05Dll',
Rel('w06Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w06Dll/main.c"),
Object(NonMatching, "REL/w06Dll/mg_item.c"),
Object(NonMatching, "REL/w06Dll/mg_coin.c"),
Object(Matching, "REL/w06Dll/main.c"),
Object(Matching, "REL/w06Dll/mg_item.c"),
Object(Matching, "REL/w06Dll/mg_coin.c"),
Object(NonMatching, "REL/w06Dll/fire.c"),
Object(NonMatching, "REL/w06Dll/bridge.c"),
Object(NonMatching, "REL/w06Dll/bowser.c"),

View file

@ -1,25 +0,0 @@
import os
import sys
if len(sys.argv) != 2:
print("Usage: python script.py <file_path>")
sys.exit(1)
file_path = sys.argv[1]
lines_starting_with_fn = ""
with open(file_path, 'r') as file:
for line in file:
# Remove leading and trailing whitespaces
line = line.strip()
if line.startswith(".fn fn_"):
# Remove ".fn " from the beginning of the line
line = line[len(".fn "):]
# Remove ", global" from the end of the line
line = line.rstrip(', global')
lines_starting_with_fn += "// " + line + '\n\n'
print(lines_starting_with_fn)

View file

@ -1,3 +1,6 @@
#ifndef REL_OPTION_H
#define REL_OPTION_H
#include "game/object.h"
#include "dolphin/types.h"
@ -78,3 +81,5 @@ extern omObjData *lbl_1_bss_28;
extern omObjData *lbl_1_bss_30;
extern omObjData *lbl_1_bss_38;
extern omObjData *lbl_1_bss_40;
#endif

27
include/REL/w01Dll.h Executable file
View file

@ -0,0 +1,27 @@
#ifndef REL_W01_H
#define REL_W01_H
#include "dolphin/types.h"
enum {
MAPOBJ_MAX = 33
};
typedef struct {
/* 0x00 */ struct {
u8 unk00_field0 : 1;
};
/* 0x01 */ s8 unk01[2];
} UnkBoardDataStruct; // Size unknown
extern void fn_1_9D00(s32 arg0);
extern void fn_1_9DD8(void);
extern void fn_1_D740(s16 *arg0);
extern void fn_1_DD84(void);
extern void fn_1_DE94(void);
extern s16 lbl_1_bss_6C4[MAPOBJ_MAX];
extern UnkBoardDataStruct *lbl_1_bss_0;
#endif

47
include/REL/w02Dll.h Normal file
View file

@ -0,0 +1,47 @@
#ifndef W02DLL
#define W02DLL
#include "math.h"
#include "dolphin.h"
#include "game/process.h"
#include "game/gamework_data.h"
#include "game/board/model.h"
#include "game/board/space.h"
#include "game/board/main.h"
#include "game/board/player.h"
#include "game/board/window.h"
#include "game/board/map_object.h"
extern s16 lbl_1_bss_30[0x10]; // Model List
// main.c
extern void fn_1_770();
extern void fn_1_72C();
extern s32 fn_1_774();
extern s32 fn_1_800();
extern void fn_1_92C();
extern s32 fn_1_1128();
extern void fn_1_121C(u32);
// roulette.c
extern void fn_1_D3AC();
extern s32 fn_1_D8C4();
extern void fn_1_DF48();
// unorganized
extern void fn_1_394C(s32);
extern void fn_1_3BF4();
extern void fn_1_39F4();
extern void fn_1_5CF8();
extern void fn_1_5D28();
extern void fn_1_5F90();
extern void fn_1_79BC(s16* itemList);
extern void fn_1_8244(s32);
extern void fn_1_9250();
extern void fn_1_93C8(s32 spaceFlag);
extern void fn_1_BC1C();
extern s32 fn_1_BE88();
extern s32 fn_1_C108(s32);
extern void fn_1_CD04(s32);
extern void fn_1_E41C();
#endif //W02DLL

View file

@ -7,12 +7,9 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef struct w03StructUnk0 {
/* 0x00 */ Vec unk_00;
/* 0x0C */ Vec unk_0C;
/* 0x18 */ Vec unk_18;
/* 0x24 */ s32 datanum;
} w03StructUnk0;
enum {
MAPOBJ_MAX = 12
};
typedef struct w03UnkStruct2{
u8 unk0 : 1;
@ -26,4 +23,7 @@ typedef struct w03State {
u16 unk4;
u16 unk6;
s16 unk8;
} w03State;
} w03State;
extern w03State* lbl_1_bss_0;
extern s16 lbl_1_bss_C[MAPOBJ_MAX];

36
include/REL/w06Dll.h Executable file
View file

@ -0,0 +1,36 @@
#ifndef REL_W06_H
#define REL_W06_H
#include "dolphin/types.h"
enum {
MAPOBJ_MAX = 6
};
extern void fn_1_D70(void);
extern void fn_1_F6C(void);
extern void fn_1_1054(void); // return s32?
extern void fn_1_4878(void);
extern void fn_1_4A10(void);
extern void fn_1_4A60(void); // return s32?
extern void fn_1_6EF0(void); // return s32?
extern void fn_1_7BB0(void);
extern void fn_1_7F3C(void);
extern void fn_1_8264(s32 arg0, s16 arg1);
extern void fn_1_8F20(void);
extern void fn_1_91D8(void);
extern void fn_1_9294(s32 arg0, s32 arg1);
extern s32 fn_1_92D8(s32 arg0, s32 arg1);
extern void fn_1_C108(s32 arg0);
extern void fn_1_C2B4(void);
extern void fn_1_CC90(void);
extern void fn_1_CD0C(void);
extern s16 lbl_1_bss_C[MAPOBJ_MAX];
extern void *lbl_1_bss_0;
#endif

View file

@ -4,7 +4,10 @@
#include "game/process.h"
#include "game/window.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
enum {
MAPOBJ_MELON = 0,
MAPOBJ_MAX,
};
typedef struct w10_board_work {
/* 0x00 */ s32 scene;
@ -13,13 +16,6 @@ typedef struct w10_board_work {
/* 0x08 */ s16 focus_mdl;
} W10BoardWork;
typedef struct unkw10Dll {
Vec unk0;
Vec unk0C;
Vec unk18;
s32 unk24;
} unkw10Dll; //sizeof 0x28
typedef void (*TutorialSceneFunc)(void);
typedef struct tutorial_scene {
@ -83,11 +79,9 @@ void TutorialLotteryExec(void);
void TutorialBooHouseExec(void);
extern W10BoardWork *boardWork;
extern s16 lbl_1_bss_10[1];
extern void* lbl_1_bss_8; //unknown type
extern s16 boardMapObjMdl[MAPOBJ_MAX];
extern s16 tutorialDoneF;
extern s16 w10ExitWin;
extern unkw10Dll lbl_1_data_0[1];
extern s16 tutorialExitWin;
extern s16 boardStarHostMdl;
extern s16 boardShopHostMdl;

View file

@ -106,7 +106,6 @@ void BoardCameraOffsetSet(float x, float y, float z);
void BoardCameraTargetPlayerSet(s32 player);
void BoardCameraTargetModelSet(s16 model);
void BoardCameraTargetSpaceSet(s32 space);
void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func);
void BoardCameraQuakeSet(s32 duration, float strength);
void BoardCameraQuakeReset();
void BoardCameraTargetSet(float x, float y, float z);

View file

@ -0,0 +1,13 @@
#ifndef _BOARD_MAPOBJECT_H
#define _BOARD_MAPOBJECT_H
#include "dolphin.h"
typedef struct board_map_object {
Vec pos;
Vec rot;
Vec scale;
s32 data_num;
} BoardMapObject;
#endif

View file

@ -137,16 +137,17 @@ void BoardPlayerMotBlendExec(omObjData*);
s32 BoardPlayerAutoSizeGet(s32);
void BoardPlayerAutoSizeSet(s32, s32);
void BoardPlayerCopyMat(s32);
void BoardBowserSuitInit(s32);
void BoardBowserSuitKill(s32);
void BoardDiceDigit2DInit(s32, s32);
void BoardDiceDigit2DUpdateEnable(s32);
void BoardPlayerResizeAnimExec(s32 player, s32 size);
s32 BoardPlayerAnimBlendCheck(s32);
s16 BoardBowserSuitPlayerModelGet(void);
void BoardBowserSuitMotionSetWait(void);
void BoardBowserSuitPlayerModelKill(void);
void BoardDiceDigit2DShowSet(s32);
s32 BoardPlayerMotBlendCheck(s32);
void BoardPlayerMoveAwayStartCurr(s32, s32);
void BoardBowserSuitMotionSetWalk(void);
s16 BoardBowserSuitModelGet(void);

View file

@ -48,7 +48,9 @@ s32 BoardSpaceStarGet(s32 index);
s32 BoardSpaceStarGetCurr(void);
s32 BoardSpaceStarCheck(s32 index);
void BoardSpaceLandExec(s32 player, s32 space);
void BoardSpaceCameraSet(u16 mask);
void BoardSpaceBlockPosSet(void);
void BoardSpaceInit(s32 data_num);
extern s16 boardSpaceStarTbl[8];

View file

@ -2,6 +2,7 @@
#define _GAMEWORK_DATA_H
#include "dolphin.h"
#include "game/flag.h"
typedef struct player_config {
s16 character;
@ -43,7 +44,7 @@ typedef struct system_state {
u8 bowser_loss : 4;
u8 bowser_event : 4;
};
/* 0x32 */ s8 unk_32;
/* 0x32 */ s8 lucky_value;
/* 0x34 */ u16 mg_next;
/* 0x36 */ s16 mg_type;
/* 0x38 */ u16 unk_38;
@ -57,12 +58,12 @@ typedef struct player_state {
u16 com : 1;
u16 character : 4;
u16 auto_size : 2;
u16 field00_bit9 : 1;
u16 field00_bitA : 6;
u16 draw_ticket : 1;
u16 ticket_player : 6;
};
/* 0x02 */ struct {
u8 team : 1;
u8 field02_bit1 : 1;
u8 spark : 1;
u8 player_idx : 2;
};
/* 0x03 */ s8 handicap;
@ -71,13 +72,13 @@ typedef struct player_state {
/* 0x08 */ struct {
u16 color : 2;
u16 moving : 1;
u16 field08_bit3 : 1;
u16 jump : 1;
u16 show_next : 1;
u16 size : 2;
u16 field08_bit7 : 2;
u16 num_dice : 2;
u16 rank : 2;
u16 bowser_suit : 1;
u16 field08_bit11 : 1;
u16 team_backup : 1;
};
/* 0x0A */ s8 roll;
/* 0x0C */ s16 space_curr;
@ -97,13 +98,21 @@ typedef struct player_state {
/* 0x20 */ s16 coins_total;
/* 0x22 */ s16 coins_max;
/* 0x24 */ s16 coins_battle;
/* 0x26 */ s16 unk_26;
/* 0x28 */ s16 coin_gain;
/* 0x26 */ s16 coin_collect;
/* 0x28 */ s16 coin_win;
/* 0x2A */ s16 stars;
/* 0x2C */ s16 stars_max;
/* 0x2E */ char unk_2E[2];
} PlayerState; //size of 0x30
typedef struct pause_backup_config {
u8 explain_mg : 1;
u8 show_com_mg : 1;
u8 mg_list : 2;
u8 mess_speed : 2;
u8 save_mode : 2;
} PauseBackupConfig;
typedef struct game_stat {
/* 0x0 */ s16 unk_00;
/* 0x2 */ u8 language;
@ -127,20 +136,8 @@ typedef struct game_stat {
u8 field10E_bit5 : 1;
u8 field10E_bit6 : 1;
};
/* 0x10F */ struct {
u8 field10F_bit0 : 1;
u8 field10F_bit1 : 1;
u8 field10F_bit2 : 2;
u8 field10F_bit4 : 2;
u8 field10F_bit6 : 2;
};
/* 0x110 */ struct {
u8 field110_bit0 : 1;
u8 field110_bit1 : 1;
u8 field110_bit2 : 2;
u8 field110_bit4 : 2;
u8 field110_bit6 : 2;
};
/* 0x10F */ PauseBackupConfig story_pause;
/* 0x110 */ PauseBackupConfig party_pause;
} GameStat;
extern PlayerConfig GWPlayerCfg[4];
@ -227,9 +224,36 @@ static inline s32 GWPlayerTeamGet(s32 player)
return GWPlayer[player].team;
}
static inline s32 GWPlayerSpaceCurrGet(s32 player)
static inline s32 GWLuckyValueGet(void)
{
return GWPlayer[player].space_curr;
return GWSystem.lucky_value;
}
static inline void GWLuckyValueSet(s32 value)
{
GWSystem.lucky_value = value;
}
static inline s16 GWPlayerCoinCollectGet(s32 player)
{
return GWPlayer[player].coin_collect;
}
static inline void GWPlayerCoinCollectSet(s32 player, s16 value)
{
GWPlayer[player].coin_collect = value;
}
static inline s16 GWPlayerCoinWinGet(s32 player)
{
return GWPlayer[player].coin_win;
}
static inline void GWPlayerCoinWinSet(s32 player, s16 value)
{
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[player].coin_win = value;
}
}
#endif

View file

@ -103,7 +103,7 @@ void Hu3DAnimAttrSet(s16 arg0, u16 arg1);
void Hu3DAnimAttrReset(s16 arg0, s32 arg1);
void Hu3DAnimSpeedSet(s16 arg0, float arg1);
void Hu3DAnimBankSet(s16 arg0, s32 arg1);
void Hu3DAnmNoSet(s16 arg0, s32 arg1);
void Hu3DAnmNoSet(s16 arg0, u16 arg1);
s32 Hu3DAnimSet(ModelData *arg0, HsfAttribute *arg1, s16 arg2);
void Hu3DAnimExec(void);
s16 Hu3DTexScrollCreate(s16 arg0, char *arg1);

View file

@ -26,6 +26,7 @@ typedef enum {
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
#define OM_GET_DATA_PTR(object, type) ((type *)(((object)->data)))
typedef void (*omObjFunc)(struct om_obj_data *);

View file

@ -113,6 +113,9 @@ void HuSprGrpCenterSet(s16 group, float x, float y);
void HuSprGrpZRotSet(s16 group, float z_rot);
void HuSprGrpScaleSet(s16 group, float x, float y);
void HuSprGrpTPLvlSet(s16 group, float tp_lvl);
#ifndef HUSPR_USE_OLD_DEFS
void HuSprGrpDrawNoSet(s16 group, s32 draw_no);
#endif
void HuSprDrawNoSet(s16 group, s16 member, s32 draw_no);
void HuSprPriSet(s16 group, s16 member, s16 prio);
void HuSprGrpScissorSet(s16 group, s16 x, s16 y, s16 w, s16 h);

View file

@ -21,8 +21,6 @@
#include "rel_sqrt_consts.h"
void HuSprGrpDrawNoSet(s16 group, s32 draw_no);
static s16 lbl_1_data_0 = 1;
static omObjData *lbl_1_bss_60;

186
src/REL/m407dll/camera.c Normal file
View file

@ -0,0 +1,186 @@
#include "game/process.h"
#include "game/object.h"
#include "game/hsfdraw.h"
#define M_PI 3.141592653589793
void fn_1_1CAC(f32, f32, f32);
void fn_1_1D08(f32, f32, f32);
void fn_1_1D64(f32);
void fn_1_2024(omObjData*);
double cos(double x);
double sin(double x);
Process* lbl_1_bss_34;
omObjData* lbl_1_bss_30;
typedef struct unkDominationData2 {
s32 unk_00;
s32 unk_04;
Point3d unk_08;
Point3d unk_14;
f32 unk_20;
Point3d unk_24;
Point3d unk_30;
f32 unk_3C;
s32 unk_40;
f32 unk_44;
f32 unk_48;
} unkDominationData2;
void fn_1_1B1C(Process* arg0) {
unkDominationData2* unkData;
lbl_1_bss_34 = arg0;
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 45.0f, 10.0f, 40000.0f, 1.2f);
lbl_1_bss_30 = omAddObjEx(lbl_1_bss_34, 0x80, 0U, 0U, -1, fn_1_2024);
lbl_1_bss_30->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x4C, 0x10000000U);
unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
unkData->unk_04 = 0;
fn_1_1CAC(0.0f, 0.0f, 0.0f);
fn_1_1D08(0.0f, 0.0f, 0.0f);
fn_1_1D64(0.0f);
}
void fn_1_1CA8(void) {
}
void fn_1_1CAC(f32 arg8, f32 arg9, f32 argA) {
Center.x = arg8;
Center.y = arg9;
Center.z = argA;
}
void fn_1_1CD4(f32* arg0, f32* arg1, f32* arg2) {
*arg0 = Center.x;
*arg1 = Center.y;
*arg2 = Center.z;
}
void fn_1_1D08(f32 arg8, f32 arg9, f32 argA) {
CRot.x = arg8;
CRot.y = arg9;
CRot.z = argA;
}
void fn_1_1D30(f32* arg0, f32* arg1, f32* arg2) {
*arg0 = CRot.x;
*arg1 = CRot.y;
*arg2 = CRot.z;
}
void fn_1_1D64(f32 arg8) {
CZoom = arg8;
}
void fn_1_1D74(f32* arg0) {
*arg0 = CZoom;
}
s32 fn_1_1D88(void) {
unkDominationData2* unkData = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
return unkData->unk_04;
}
void fn_1_1DB0(Point3d* arg0, Point3d* arg1, f32* arg2, s32 arg3, s32 arg4) {
Point3d* var_r30;
Point3d* var_r29;
f32 var_f31;
unkDominationData2* temp_r31;
temp_r31 = OM_GET_DATA_PTR(lbl_1_bss_30, unkDominationData2);
temp_r31->unk_00 = arg4;
if (arg0) {
var_r30 = arg0;
} else {
var_r30 = &Center;
}
temp_r31->unk_08 = *var_r30;
if (arg1) {
var_r29 = arg1;
} else {
var_r29 = &CRot;
}
temp_r31->unk_14 = *var_r29;
if (arg2) {
var_f31 = *arg2;
} else {
var_f31 = CZoom;
}
temp_r31->unk_20 = var_f31;
temp_r31->unk_24 = Center;
temp_r31->unk_30 = CRot;
temp_r31->unk_3C = CZoom;
temp_r31->unk_40 = arg3;
temp_r31->unk_44 = 0.0f;
temp_r31->unk_48 = 1.0f / arg3;
temp_r31->unk_04 = 1;
}
f32 fn_1_1F1C(f32 arg8, f32 arg9) {
if (((arg8 > 0.0f) && (arg9 > 0.0f)) || ((arg8 < 0.0f) && (arg9 < 0.0f))) {
return abs(arg8 - arg9);
}
return abs(arg8) + abs(arg9);
}
void fn_1_2024(omObjData* arg0) {
Vec sp14;
Vec sp8;
f32 var_f31;
f32 cZoomTemp;
unkDominationData2* temp_r31;
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData2);
if (temp_r31->unk_04 != 0) {
switch (temp_r31->unk_00) {
case 0:
var_f31 = temp_r31->unk_44;
break;
case 1:
var_f31 = temp_r31->unk_44;
if (temp_r31->unk_48 > 0.5) {
temp_r31->unk_00 = 2;
}
break;
case 2:
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
break;
case 3:
var_f31 = (f32) sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
if (temp_r31->unk_48 > 0.5) {
temp_r31->unk_00 = 4;
}
break;
case 4:
var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0);
var_f31 *= var_f31;
break;
}
sp14.x = temp_r31->unk_24.x + (var_f31 * (temp_r31->unk_08.x - temp_r31->unk_24.x));
sp14.y = temp_r31->unk_24.y + (var_f31 * (temp_r31->unk_08.y - temp_r31->unk_24.y));
sp14.z = temp_r31->unk_24.z + (var_f31 * (temp_r31->unk_08.z - temp_r31->unk_24.z));
sp8.x = temp_r31->unk_30.x + (var_f31 * (temp_r31->unk_14.x - temp_r31->unk_30.x));
sp8.y = temp_r31->unk_30.y + (var_f31 * (temp_r31->unk_14.y - temp_r31->unk_30.y));
sp8.z = temp_r31->unk_30.z + (var_f31 * (temp_r31->unk_14.z - temp_r31->unk_30.z));
cZoomTemp = temp_r31->unk_3C + (var_f31 * (temp_r31->unk_20 - temp_r31->unk_3C));
temp_r31->unk_44 += temp_r31->unk_48;
Center = sp14;
CRot = sp8;
CZoom = cZoomTemp;
if (--temp_r31->unk_40 <= 0) {
Center = temp_r31->unk_08;
CRot = temp_r31->unk_14;
CZoom = temp_r31->unk_20;
temp_r31->unk_04 = 0;
}
}
omOutView(arg0);
}

209
src/REL/m407dll/effect.c Normal file
View file

@ -0,0 +1,209 @@
#include "src/REL/m407dll/m407dll.h"
#include "game/process.h"
#include "game/object.h"
#include "game/hsfmotion.h"
#include "game/hsfdraw.h"
//bss
s32 bssPad3;
Process* lbl_1_bss_3970;
omObjData* lbl_1_bss_37E0[100];
//data
s32 lbl_1_data_288[] = {
0x00260015,
0x00260016,
0x00260017,
0x00260018,
0x00260019
};
//function signatures
void fn_1_4858(omObjData* arg0);
void fn_1_485C(omObjData* arg0);
void fn_1_46EC(omObjData* arg0);
void fn_1_465C(omObjData* arg0, s32 arg1);
void fn_1_4808(omObjData* arg0);
ObjFuncs lbl_1_data_29C[] = {
fn_1_4858,
fn_1_485C,
};
void fn_1_41CC(Process* arg0) {
Process* sp8;
u32 i;
u32 temp_r30;
lbl_1_bss_3970 = arg0;
temp_r30 = 0;
for (i = 0; i < 40; i++) {
lbl_1_bss_37E0[i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
lbl_1_bss_37E0[i]->work[0] = i;
lbl_1_bss_37E0[i]->work[1] = 0;
}
temp_r30 += i;
for (i = 0; i < 4; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 1;
}
temp_r30 += i;
for (i = 0; i < 30; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 2;
}
temp_r30 += i;
for (i = 0; i < 4; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 3;
}
temp_r30 += i;
for (i = 0; i < 22; i++) {
lbl_1_bss_37E0[temp_r30 + i] = omAddObjEx(lbl_1_bss_3970, 0x800, 1U, 0U, 5, fn_1_46EC);
lbl_1_bss_37E0[temp_r30 + i]->work[0] = temp_r30 + i;
lbl_1_bss_37E0[temp_r30 + i]->work[1] = 4;
}
}
void fn_1_44F4(void) {
u32 i;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
fn_1_4808(lbl_1_bss_37E0[i]);
}
}
typedef struct unkDominationData4 {
u32 unk_00;
u32 unk_04;
s32 unk_08;
s32 unk_0C;
f32 unk_10;
f32 unk_14;
f32 unk_18;
s32 unk_1C;
} unkDominationData4;
void fn_1_4544(s32 arg0, s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
f32 sp14;
f32 sp10;
s32 spC;
s32 sp8;
omObjData* temp_r29;
u32 var_r30;
unkDominationData4* temp_r31;
u32 i;
if ((arg4 < (Center.z - 2000.0f)) || (arg4 > (2000.0f + Center.z))) {
return;
}
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37E0); i++) {
temp_r29 = lbl_1_bss_37E0[i];
temp_r31 = temp_r29->data;
if ((temp_r31->unk_08 == arg0) && (temp_r31->unk_0C == 0)) {
temp_r31->unk_04 = arg1;
temp_r31->unk_10 = arg2;
temp_r31->unk_14 = arg3;
temp_r31->unk_18 = arg4;
fn_1_465C(temp_r29, 1);
return;
}
}
}
void fn_1_465C(omObjData* arg0, s32 arg1) {
unkDominationData4* temp_r31;
temp_r31 = arg0->data;
temp_r31->unk_0C = arg1;
temp_r31->unk_1C = 0;
}
void fn_1_4680(omObjData* arg0) {
unkDominationData4* temp_r31;
temp_r31 = arg0->data;
lbl_1_data_29C[temp_r31->unk_0C](arg0);
omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18);
}
void fn_1_46EC(omObjData* arg0) {
unkDominationData4* temp_r29;
unkDominationData4* temp_r30;
arg0->func = fn_1_4680;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, 0x10000000);
temp_r30 = arg0->data;
temp_r30->unk_00 = arg0->work[0];
temp_r30->unk_08 = arg0->work[1];
temp_r30->unk_1C = 0;
*arg0->model = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_288[temp_r30->unk_08], 0x10000000, HEAP_DATA));
Hu3DModelAttrSet(*arg0->model, 0x4000U);
Hu3DModelAttrSet(*arg0->model, 0x40000002U);
Hu3DModelAttrSet(*arg0->model, 1U);
temp_r30->unk_10 = (f32) 0.0f;
temp_r30->unk_14 = (f32) 0.0f;
temp_r30->unk_18 = (f32) 0.0f;
temp_r29 = arg0->data;
temp_r29->unk_0C = 0;
temp_r29->unk_1C = 0;
}
void fn_1_4808(omObjData* arg0) {
unkDominationData4* sp8;
sp8 = arg0->data;
Hu3DModelKill(arg0->model[0]);
if (arg0->data) {
HuMemDirectFree(arg0->data);
}
}
void fn_1_4858(omObjData* arg0) {
}
void fn_1_485C(omObjData* arg0) {
unkDominationData4* temp_r29;
unkDominationData4* temp_r30;
temp_r30 = arg0->data;
if (temp_r30->unk_04 != 0) {
temp_r30->unk_04--;
}
if (temp_r30->unk_1C == 0) {
Hu3DMotionTimeSet(*arg0->model, 0.0f);
Hu3DModelAttrReset(*arg0->model, 1);
Hu3DModelAttrReset(*arg0->model, 0x40000002);
Hu3DModelAttrSet(*arg0->model, 0x40000001);
temp_r30->unk_1C++;
} else if (temp_r30->unk_1C == 1) {
Hu3DModelAttrReset(arg0->model[0], 0x40000001);
temp_r30->unk_1C++;
}
if (Hu3DMotionEndCheck(*arg0->model) != 0) {
Hu3DModelAttrSet(*arg0->model, 1U);
temp_r29 = arg0->data;
temp_r29->unk_0C = 0;
temp_r29->unk_1C = 0;
}
}
f32 pad3[1] = {0.0f};

View file

@ -0,0 +1,5 @@
#include "game/object.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef void (*ObjFuncs)(omObjData*);

575
src/REL/m407dll/main.c Normal file
View file

@ -0,0 +1,575 @@
#include "game/object.h"
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "game/wipe.h"
#include "game/audio.h"
#include "game/hsfman.h"
s32 bssPad2;
Process* lbl_1_bss_3980;
omObjData* lbl_1_bss_397C;
s16 lbl_1_bss_3978;
s32 fn_1_4C0(s32 arg0);
void fn_1_4D0C(void);
void fn_1_4D54(void);
void fn_1_4E8C(void);
void fn_1_4FAC(void);
void fn_1_50E8(void);
void fn_1_51E4(void);
void fn_1_52AC(void);
void fn_1_53B8(void);
void fn_1_5574(void);
void fn_1_5630(void);
s16 fn_1_5804(void);
void fn_1_5A80(void);
void fn_1_5BB0(void);
void fn_1_4B7C(void);
void fn_1_4C6C(omObjData* obj);
void fn_1_4C3C(s32 arg0);
void fn_1_568(s16 arg0, s16 arg1, s16 arg2);
s32 fn_1_508(u8 arg0);
s32 fn_1_53C(u8 arg0);
void fn_1_3C4(u8 arg0);
typedef void (*ObjFuncs)(void);
//data
ObjFuncs lbl_1_data_2A8[] = {
fn_1_4D0C,
fn_1_4D54,
fn_1_4E8C,
fn_1_4FAC,
fn_1_50E8,
fn_1_51E4,
fn_1_52AC,
fn_1_53B8,
fn_1_5574,
fn_1_5630,
fn_1_5A80,
fn_1_5BB0,
fn_1_4B7C
};
typedef struct unkDominationData5 {
u32 unk_00;
s16 unk_04;
s16 unk_06;
s16 unk_08;
char unk_0A[6];
s16 unk_10;
char unk_12[10];
s16 unk_1C[4];
s16 unk_24;
char unk_26[2];
Vec unk_28;
Vec unk_34;
f32 unk_40;
s32 unk_44;
} unkDominationData5;
void fn_1_4980(Process* arg0) {
s32 i;
unkDominationData5* temp_r31;
lbl_1_bss_3980 = arg0;
lbl_1_bss_397C = omAddObjEx(lbl_1_bss_3980, 0x40, 0U, 0U, 0, fn_1_4C6C);
lbl_1_bss_397C->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x48, 0x10000000U);
temp_r31 = lbl_1_bss_397C->data;
Hu3DShadowCreate(45.0f, 10.0f, 10000.0f);
Hu3DShadowTPLvlSet(0.6f);
fn_1_1B1C(lbl_1_bss_3980);
lbl_1_bss_3978 = GWMGRecordGet(1);
if (lbl_1_bss_3978 == 0) {
lbl_1_bss_3978 = 0x96;
}
fn_1_14F0(lbl_1_bss_3980, lbl_1_bss_3978);
fn_1_F4(lbl_1_bss_3980);
fn_1_2354(lbl_1_bss_3980);
fn_1_3AC8(lbl_1_bss_3980);
fn_1_41CC(lbl_1_bss_3980);
fn_1_5C5C(lbl_1_bss_3980, lbl_1_bss_3978);
WipeCreate(1, 0, 0x3C);
temp_r31->unk_06 = -1;
temp_r31->unk_08 = -1;
temp_r31->unk_24 = 0;
for (i = 0; i < 4; i++) {
temp_r31->unk_1C[i] = -1;
}
fn_1_5F40(0);
fn_1_4C3C(0);
}
void fn_1_4B7C(void) {
unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
WipeCreate(2, 0, 0x3C);
temp_r31->unk_04++;
}
if (WipeStatGet() == 0) {
HuAudFadeOut(100);
if (temp_r31->unk_06 != -1) {
MGSeqKill(temp_r31->unk_06);
}
if (temp_r31->unk_08 != -1) {
MGSeqKill(temp_r31->unk_08);
}
fn_1_194();
fn_1_1CA8();
fn_1_15D8();
fn_1_3B68();
fn_1_44F4();
fn_1_5ECC();
omOvlReturnEx(1, 1);
}
}
void fn_1_4C3C(s32 arg0) {
unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data;
temp_r31->unk_00 = arg0;
temp_r31->unk_04 = 0;
}
void fn_1_4C6C(omObjData* obj) {
unkDominationData5* temp_r30;
unkDominationData5* temp_r31;
temp_r30 = lbl_1_bss_397C->data;
lbl_1_data_2A8[temp_r30->unk_00]();
if (omSysExitReq != 0) {
temp_r31 = lbl_1_bss_397C->data;
temp_r31->unk_00 = 0xC;
temp_r31->unk_04 = 0;
omSysExitReq = 0;
}
}
void fn_1_4D0C(void) {
unkDominationData5* sp8;
unkDominationData5* temp_r31;
sp8 = lbl_1_bss_397C->data;
temp_r31 = lbl_1_bss_397C->data;
temp_r31->unk_00 = 1;
temp_r31->unk_04 = 0;
}
f32 lbl_1_data_2DC[4] = {850.0f, 900.0f, 1300.0f, 1500.0f};
Vec lbl_1_data_2EC = {540.0f, 0.0f, 10000.0f};
Vec lbl_1_data_2F8 = {-50.0f, -360.0f, 0.0f};
f32 lbl_1_data_304 = 2670.0f;
Vec lbl_1_data_308 = {437.0f, 0.0f, 5000.0f};
Vec lbl_1_data_314 = {-50.0f, -360.0f, 0.0f};
f32 lbl_1_data_320 = 2290.0f;
Vec lbl_1_data_324 = {0.0f, 0.0f, 100.0f};
Vec lbl_1_data_330 = {-45.0f, -540.0f, 0.0f};
f32 lbl_1_data_33C = 1910.0f;
Vec lbl_1_data_340 = {0.0f, 0.0f, 100.0f};
Vec lbl_1_data_34C = {-53.0f, -680.0f, 0.0f};
f32 lbl_1_data_358 = 1900.0f;
void fn_1_4D54(void) {
s16 temp_r0;
unkDominationData5* temp_r30;
unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data;
switch (temp_r31->unk_04) {
case 0:
HuAudFXPlay(0x545);
fn_1_1DB0(&lbl_1_data_2EC, &lbl_1_data_2F8, &lbl_1_data_304, 0, 0);
temp_r31->unk_04 = 1;
break;
case 1:
fn_1_1DB0(&lbl_1_data_308, &lbl_1_data_314, &lbl_1_data_320, 0x64, 1);
temp_r31->unk_04 = 2;
break;
case 2:
if (fn_1_1D88() == 0) {
fn_1_1DB0(&lbl_1_data_324, &lbl_1_data_330, &lbl_1_data_33C, 0x6E, 2);
temp_r31->unk_04 = 3;
case 3:
if (fn_1_1D88() == 0) {
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 2;
temp_r30->unk_04 = 0;
return;
}
}
}
}
void fn_1_4E8C(void) {
s32 i;
unkDominationData5* temp_r29;
unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_06 == -1) {
temp_r31->unk_06 = MGSeqCreate(3, 0);
temp_r31->unk_44 = HuAudSeqPlay(0x46);
fn_1_2564();
for (i = 0; i < 4; i++) {
fn_1_568(i, 1, 0x3C);
}
}
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
MGSeqKill(temp_r31->unk_06);
temp_r31->unk_06 = -1;
temp_r31->unk_10 = 0x258;
temp_r31->unk_08 = MGSeqCreate(1, temp_r31->unk_10 / 60, -1, -1);
fn_1_1E4();
temp_r29 = lbl_1_bss_397C->data;
temp_r29->unk_00 = 3;
temp_r29->unk_04 = 0;
}
}
void fn_1_4FAC(void) {
s16 temp_r0;
unkDominationData5* temp_r31;
unkDominationData5* temp_r30;
unkDominationData5* temp_r29;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_10 > 0) {
if ((--temp_r31->unk_10 % 60) == 0) {
MGSeqParamSet(temp_r31->unk_08, 1, (temp_r31->unk_10 / 60));
}
return;
}
MGSeqParamSet(temp_r31->unk_08, 2, -1);
temp_r31->unk_08 = -1;
HuAudSeqFadeOut(temp_r31->unk_44, 0x64);
fn_1_238();
fn_1_5804();
if (temp_r31->unk_24 > 0) {
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 4;
temp_r30->unk_04 = 0;
return;
}
temp_r29 = lbl_1_bss_397C->data;
temp_r29->unk_00 = 6;
temp_r29->unk_04 = 0;
}
void fn_1_50E8(void) {
unkDominationData5* temp_r31;
unkDominationData5* temp_r30;
temp_r31 = lbl_1_bss_397C->data;
switch (temp_r31->unk_04++) { /* irregular */
case 0xA:
fn_1_1DB0(&lbl_1_data_340, &lbl_1_data_34C, &lbl_1_data_358, 0xB4, 4);
return;
case 0x32:
fn_1_28C();
return;
case 0x78:
fn_1_2E0();
return;
case 0x9A:
fn_1_334();
return;
case 0xBE:
temp_r31->unk_44 = HuAudSeqPlay(0x3A);
fn_1_25C0();
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 5;
temp_r30->unk_04 = 0;
return;
}
}
void fn_1_51E4(void) {
Vec sp8;
unkDominationData5* temp_r30;
unkDominationData5* temp_r31;
temp_r30 = lbl_1_bss_397C->data;
if ((temp_r30->unk_04++ >= 0xF) || (fn_1_2880() != 0)) {
if (fn_1_2880() == 0) {
fn_1_1CD4(&sp8.z, &sp8.y, &sp8.x);
sp8.x += 33.5f;
fn_1_1CAC(sp8.z, sp8.y, sp8.x);
return;
}
temp_r31 = lbl_1_bss_397C->data;
temp_r31->unk_00 = 6;
temp_r31->unk_04 = 0;
}
}
void fn_1_52AC(void) {
unkDominationData5* temp_r31;
unkDominationData5* temp_r30;
unkDominationData5* temp_r29;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 1);
temp_r31->unk_04++;
HuAudSeqFadeOut(temp_r31->unk_44, 0x64);
}
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
MGSeqKill(temp_r31->unk_06);
temp_r31->unk_06 = -1;
if (temp_r31->unk_08 != 0) {
MGSeqKill(temp_r31->unk_08);
temp_r31->unk_08 = -1;
}
if (temp_r31->unk_24 > 0) {
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 7;
temp_r30->unk_04 = 0;
return;
}
temp_r29 = lbl_1_bss_397C->data;
temp_r29->unk_00 = 0xA;
temp_r29->unk_04 = 0;
}
}
void fn_1_53B8(void) {
s32 i;
unkDominationData5* temp_r31;
unkDominationData5* temp_r29;
unkDominationData5* temp_r28;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
fn_1_1DB0(&temp_r31->unk_28, &temp_r31->unk_34, &temp_r31->unk_40, 0x3C, 4);
temp_r31->unk_04++;
for (i = 0; i < 4; i++) {
if ((fn_1_508(i) == 0) && (fn_1_28B8(i) >= 0x64)) {
GWGameStat.present[0x38] = 1;
}
}
}
if (temp_r31->unk_04 == 0x28) {
fn_1_404();
for (i = 0; i < temp_r31->unk_24; i++) {
fn_1_2770(temp_r31->unk_1C[i]);
fn_1_568(temp_r31->unk_1C[i], 2, 60);
}
}
if (temp_r31->unk_04 == 0x46) {
for (i = 0; i < temp_r31->unk_24; i++) {
if (!(fn_1_508(temp_r31->unk_1C[i])) && (lbl_1_bss_3978 < fn_1_28D4())) {
temp_r29 = lbl_1_bss_397C->data;
temp_r29->unk_00 = 8;
temp_r29->unk_04 = 0;
return;
}
}
temp_r28 = lbl_1_bss_397C->data;
temp_r28->unk_00 = 9;
temp_r28->unk_04 = 0;
} else {
temp_r31->unk_04++;
}
}
void fn_1_5574(void) {
unkDominationData5* temp_r31;
unkDominationData5* temp_r30;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
GWMGRecordSet(1, fn_1_28D4());
temp_r31->unk_06 = MGSeqCreate(0xE, fn_1_28D4());
fn_1_5F40(1);
temp_r31->unk_04++;
return;
}
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 9;
temp_r30->unk_04 = 0;
}
}
void fn_1_5630(void) {
unkDominationData5* temp_r31;
unkDominationData5* temp_r29;
s32 temp_r28;
s16 temp_r27;
s32 temp_r26;
s32 coins;
s32 coins2;
s32 temp_r23;
s32 temp_r22;
s32 temp_r21;
s32 i;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
for (i = 0; i < 4; i++) {
if (fn_1_53C(i) == 0) {
return;
}
}
if (temp_r31->unk_24 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 2);
HuAudSStreamPlay(4);
} else {
temp_r21 = fn_1_4C0(temp_r31->unk_1C[3]);
temp_r22 = fn_1_4C0(temp_r31->unk_1C[2]);
temp_r23 = fn_1_4C0(temp_r31->unk_1C[1]);
temp_r31->unk_06 = MGSeqCreate(5, 3, fn_1_4C0(temp_r31->unk_1C[0]), temp_r23, temp_r22, temp_r21);
for (i = 0; i < 4; i++) {
if (temp_r31->unk_1C[i] != -1) {
fn_1_3C4(temp_r31->unk_1C[i]);
temp_r26 = temp_r31->unk_1C[i];
coins = GWPlayer[temp_r26].coin_win;
coins2 = coins;
temp_r27 = coins2 + 0xA;
temp_r28 = temp_r31->unk_1C[i];
if (_CheckFlag(0x1000CU) == 0) {
GWPlayer[temp_r28].coin_win = temp_r27;
}
}
}
HuAudSStreamPlay(1);
}
}
if (temp_r31->unk_04++ >= 0xD2) {
MGSeqKill(temp_r31->unk_06);
temp_r31->unk_06 = -1;
temp_r29 = lbl_1_bss_397C->data;
temp_r29->unk_00 = 0xC;
temp_r29->unk_04 = 0;
}
}
s16 fn_1_5804(void) {
f32 var_f31;
f32 var_f30;
s16 temp_r28;
s16 temp_r3;
s16 var_r29;
s32 i;
s32 var_r27;
s32 var_r26;
s32 var_r30;
unkDominationData5* temp_r31;
var_r27 = 0;
var_r26 = 0;
temp_r31 = lbl_1_bss_397C->data;
var_r29 = 0;
for (i = 0; i < 4; i++) {
temp_r28 = fn_1_28B8(i);
if (temp_r28 > var_r29) {
var_r29 = temp_r28;
}
}
for (i = 0; i < 4; i++) {
temp_r28 = fn_1_28B8(i);
if (var_r29 == temp_r28) {
if (var_r29 > 0) {
temp_r31->unk_1C[temp_r31->unk_24++] = i;
fn_1_388((u8) i, 1);
}
if (var_r27 == 0) {
var_r27 = 1;
var_f31 = 400.0f * i;
} else {
var_r26 = 1;
var_f30 = 400.0f * i;
}
} else {
fn_1_388((u8) i, 2);
}
}
if (var_r26 == 0) {
var_f30 = var_f31;
}
temp_r31->unk_28.x = (600.0f - (0.5f * (var_f30 + var_f31)));
temp_r31->unk_28.y = 250.0f;
temp_r31->unk_28.z = (200.0f * ((s16) var_r29 + 2));
temp_r31->unk_34.x = -42.0f;
temp_r31->unk_34.y = -720.0f;
temp_r31->unk_34.z = 0.0f;
temp_r31->unk_40 = lbl_1_data_2DC[(s32) ((var_f30 - var_f31) / 400.0f)];
return var_r29;
}
void fn_1_5A80(void) {
s32 sp20;
s32 sp1C;
Vec sp18 = {0.0f, 0.0f, -300.0f};
Vec spC = {-40.0f, -720.0f, 0.0f};
f32 sp8;
s16 temp_r0;
s16 temp_r3;
unkDominationData5* temp_r30;
unkDominationData5* temp_r31;
sp8 = 1420.0f;
temp_r31 = lbl_1_bss_397C->data;
switch (temp_r31->unk_04++) {
case 0x0:
MGSeqKill(temp_r31->unk_08);
temp_r31->unk_08 = -1;
fn_1_1DB0(&sp18, &spC, &sp8, 0x78, 4);
return;
case 0xA:
fn_1_5F40(0);
fn_1_28C();
return;
case 0x78:
fn_1_404();
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 9;
temp_r30->unk_04 = 0;
return;
/* fallthrough */
case 0x3C:
break;
}
}
void fn_1_5BB0(void) {
unkDominationData5* temp_r30;
unkDominationData5* temp_r31;
temp_r31 = lbl_1_bss_397C->data;
if (temp_r31->unk_04 == 0) {
temp_r31->unk_06 = MGSeqCreate(3, 2);
temp_r31->unk_04++;
}
if (MGSeqStatGet(temp_r31->unk_06) == 0) {
MGSeqKill(temp_r31->unk_06);
temp_r31->unk_06 = -1;
temp_r30 = lbl_1_bss_397C->data;
temp_r30->unk_00 = 0xC;
temp_r30->unk_04 = 0;
}
}
f32 pad4[1] = {0.0f};
const f32 pad5 = 0.0f;

124
src/REL/m407dll/map.c Normal file
View file

@ -0,0 +1,124 @@
#include "game/process.h"
#include "game/object.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
void fn_1_162C(omObjData*);
void fn_1_1A8C(omObjData*);
Process* lbl_1_bss_2C;
omObjData* lbl_1_bss_28;
s16 lbl_1_bss_24;
s32 lbl_1_bss_20;
s32 lbl_1_data_198[] = {
0x00260000,
0x00260002,
0x00260003,
0x00260001,
0x00260005,
0x00260006,
0x00260007,
0x00260008,
0x00260009,
0x0026000A,
0x0026000B,
0x0026000C,
0x00260004,
};
Vec lbl_1_data_1CC[] = {
{600.0f, 3.0f, -300.0f},
{200.0f, 3.0f, -300.0f},
{-200.0f, 3.0f, -300.0f},
{-600.0f, 3.0f, -300.0f}
};
Point3d lbl_1_data_1FC = {2000.0f, 3000.0f, 2000.0f};
Point3d lbl_1_data_208 = {-0.5f, -0.5f, -0.5f};
GXColor lbl_1_data_214 = {255, 255, 255, 255};
Point3d lbl_1_data_218 = {0.0f, 1.0f, 0.0f};
f32 pad[1] = {0.0f};
void fn_1_14F0(Process* arg0, s32 arg1) {
LightData* sp10;
lbl_1_bss_2C = arg0;
lbl_1_bss_20 = arg1;
lbl_1_bss_28 = omAddObjEx(lbl_1_bss_2C, 0x100, 0xDU, 0U, 1, fn_1_162C);
omSetStatBit(lbl_1_bss_28, 0x100U);
Hu3DLighInit();
lbl_1_bss_24 = Hu3DGLightCreateV(&lbl_1_data_1FC, &lbl_1_data_208, &lbl_1_data_214);
Hu3DGLightInfinitytSet(lbl_1_bss_24);
sp10 = &Hu3DGlobalLight[lbl_1_bss_24];
}
void fn_1_15D8(void) {
s32 i;
for (i = 0; i < 13; i++) {
Hu3DModelKill(lbl_1_bss_28->model[i]);
}
}
void fn_1_162C(omObjData* arg0) {
s32 var_r30;
s32 var_r30_2;
s32 var_r30_3;
s32 var_r30_4;
s32 i;
arg0->func = fn_1_1A8C;
arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], 0x10000000, HEAP_DATA));
Hu3DModelShadowMapSet(arg0->model[0]);
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], 0x10000000, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
Hu3DModelAttrSet(arg0->model[1], 1U);
for (i = 0; i < 4; i++) {
arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], 0x10000000, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowMapSet(arg0->model[i + 2]);
}
for (i = 0; i < 5; i++) {
if (i == 0) {
arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], 0x10000000, HEAP_DATA));
} else {
arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]);
}
Hu3DModelAmbSet(arg0->model[i + 6], 1.0f, 1.0f, 1.0f);
Hu3DModelShadowMapSet(arg0->model[i + 6]);
}
arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], 0x10000000, HEAP_DATA));
arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], 0x10000000, HEAP_DATA));
for (i = 0; i < 4; i++) {
Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]);
}
for (i = 0; i < 5; i++) {
Hu3DModelPosSet(arg0->model[i + 6], 0.0f, 0.0f, -2000.0f + (8000.0f * (f32) i));
}
Hu3DModelPosSet(arg0->model[11], 0.0f, 0.0f, -3900.0f);
Hu3DModelPosSet(arg0->model[12], 0.0f, 0.0f, 0.0f);
Hu3DModelAttrSet(arg0->model[12], 0x40000001);
if (lbl_1_bss_20 > 0) {
Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 200.0f * (f32) lbl_1_bss_20);
Hu3DModelAttrReset(arg0->model[1], 1);
}
}
void fn_1_1A8C(omObjData* arg0) {
Point3d sp8;
sp8.x = lbl_1_data_1FC.x;
sp8.y = lbl_1_data_1FC.y;
sp8.z = lbl_1_data_1FC.z + Center.z;
Hu3DGLightPosSetV(lbl_1_bss_24, &sp8, &lbl_1_data_208);
Hu3DShadowPosSet(&sp8, &lbl_1_data_218, &Center);
}

497
src/REL/m407dll/player.c Normal file
View file

@ -0,0 +1,497 @@
#include "game/process.h"
#include "game/object.h"
#include "game/gamework_data.h"
#include "game/pad.h"
#include "game/objsub.h"
#include "game/chrman.h"
#include "game/hsfman.h"
#include "rel_sqrt_consts.h"
//structs
typedef struct unkDominationData {
u8 unk_00;
u8 unk_01;
u8 unk_02;
//padding unk_03
s32 unk_04;
s32 unk_08;
u8 unk_0C;
//padding unk_0D
f32 unk_10;
f32 unk_14;
f32 unk_18;
s32 unk_1C;
s32 unk_20;
f32 unk_24;
f32 unk_28;
f32 unk_2C;
f32 unk_30;
s32 unk_34;
s32 unk_38;
} unkDominationData;
s32 pad_20;
Process* lbl_1_bss_18;
omObjData* lbl_1_bss_8[4];
Process* lbl_1_bss_0[2];
//data
typedef void (*ObjFuncs)(omObjData*);
void fn_1_A88(omObjData* arg0);
void fn_1_A8C(omObjData* arg0);
void fn_1_C58(omObjData* arg0);
void fn_1_CF4(omObjData* arg0);
void fn_1_DB4(omObjData* arg0);
void fn_1_F8C(omObjData* arg0);
void fn_1_1074(omObjData* arg0);
void fn_1_11CC(omObjData* arg0);
void fn_1_13E4(omObjData* arg0);
void fn_1_1460(omObjData* arg0);
//function signatures
void fn_1_628(omObjData*, s32);
void fn_1_64C(omObjData*);
void fn_1_99C(omObjData*);
void fn_1_A1C(omObjData* arg0);
void fn_1_26CC(u8);
void fn_1_4544(s32, s32, f32, f32, f32);
s16 fn_1_28B8(u8); //s32 fn_1_28B8(s32);
s16 fn_1_28E4(u8);
double cos(double x);
double sin(double x);
inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) {
unkDominationData* temp_r29 = arg0->data;
temp_r29->unk_1C = val0;
temp_r29->unk_20 = val1;
}
void ModuleProlog(void) {
lbl_1_bss_0[0] = omInitObjMan(0x2F8, 0x2000);
omGameSysInit(lbl_1_bss_0[0]);
fn_1_4980(lbl_1_bss_0[0]);
}
void fn_1_F4(Process* arg0) {
u32 i;
lbl_1_bss_18 = arg0;
for (i = 0; i < 4; i++) {
lbl_1_bss_8[i] = omAddObjEx(lbl_1_bss_18, 0x100, 2U, 8U, 0, fn_1_64C);
lbl_1_bss_8[i]->work[0] = i;
}
}
void fn_1_194(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_99C(lbl_1_bss_8[i]);
}
}
void fn_1_1E4(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_628(lbl_1_bss_8[i], 1);
}
}
void fn_1_238(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_628(lbl_1_bss_8[i], 2);
}
}
void fn_1_28C(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_628(lbl_1_bss_8[i], 3);
}
}
void fn_1_2E0(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_628(lbl_1_bss_8[i], 4);
}
}
void fn_1_334(void) {
s32 i;
for (i = 0; i < 4; i++) {
fn_1_628(lbl_1_bss_8[i], 5);
}
}
void fn_1_388(u8 arg0, s32 arg1) {
omObjData* obj = lbl_1_bss_8[arg0];
unkDominationData* unkData = obj->data;
unkData->unk_38 = arg1;
}
void fn_1_3C4(u8 arg0) {
fn_1_628(lbl_1_bss_8[arg0], 8);
}
void fn_1_404(void) {
omObjData* temp_r31;
unkDominationData* unkData;
s32 temp_r0;
u8 i;
for (i = 0; i < 4; i++) {
temp_r31 = lbl_1_bss_8[i];
unkData = temp_r31->data;
switch (unkData->unk_38) {
case 0:
fn_1_628(temp_r31, 9);
break;
case 1:
fn_1_628(temp_r31, 6);
break;
case 2:
fn_1_628(temp_r31, 9);
break;
}
}
}
s32 fn_1_4C0(u8 arg0) {
unkDominationData* unkData;
if (arg0 >= 4) {
return -1;
}
unkData = lbl_1_bss_8[arg0]->data;
return unkData->unk_01;
}
s32 fn_1_508(u8 arg0) {
unkDominationData* unkData = lbl_1_bss_8[arg0]->data;
return unkData->unk_04;
}
s32 fn_1_53C(u8 arg0) {
return OM_GET_DATA_PTR(lbl_1_bss_8[arg0], unkDominationData)->unk_1C == 0;
}
void fn_1_568(s16 arg0, s16 arg1, s16 arg2) {
unkDominationData* unkData;
unkData = OM_GET_DATA_PTR(lbl_1_bss_8[arg0], unkDominationData);
switch (arg1) {
case 0:
omVibrate(unkData->unk_00, arg2, 6, 6);
break;
case 1:
omVibrate(unkData->unk_00, arg2, 4, 2);
break;
case 2:
omVibrate(unkData->unk_00, arg2, 0xC, 0);
break;
}
}
void fn_1_628(omObjData* arg0, s32 arg1) {
unkDominationData* temp_r31;
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData);
temp_r31->unk_1C = arg1;
temp_r31->unk_20 = 0;
}
typedef struct m407UnkDataStruct0 {
u32 unk_00[8];
} m407UnkDataStruct0;
m407UnkDataStruct0 lbl_1_data_0[] = {
{0x005F0000, 0x005F0024, 0x005F0029, 0x005F0005, 0x005F0006, 0x005F004A, 0x005F004B, 0x005F0018},
{0x001A0000, 0x001A0024, 0x001A0029, 0x001A0005, 0x001A0006, 0x001A004A, 0x001A004B, 0x001A0018},
{0x006D0000, 0x006D0024, 0x006D0029, 0x006D0005, 0x006D0006, 0x006D004A, 0x006D004B, 0x006D0018},
{0x008A0000, 0x008A0024, 0x008A0029, 0x008A0005, 0x008A0006, 0x008A004A, 0x008A004B, 0x008A0018},
{0x00850000, 0x00850024, 0x00850029, 0x00850005, 0x00850006, 0x0085004A, 0x0085004B, 0x00850018},
{0x00110000, 0x00110024, 0x00110029, 0x00110005, 0x00110006, 0x0011004A, 0x0011004B, 0x00110018},
{0x000D0000, 0x000D0024, 0x000D0029, 0x000D0005, 0x000D0006, 0x000D004A, 0x000D004B, 0x000D0018},
{0x00810000, 0x00810024, 0x00810029, 0x00810005, 0x00810006, 0x0081004A, 0x0081004B, 0x00810018}
};
s32 lbl_1_data_100[] = {0x0026000D, 0x0026000E, 0x0026000F, 0x00260010, 0x00260011, 0x00260012, 0x00260013, 0x00260014};
char lbl_1_data_120[] = "test11_tex_we-itemhook-r";
char* lbl_1_data_13C[] = {
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120,
lbl_1_data_120
};
ObjFuncs lbl_1_data_15C[] = {
fn_1_A88,
fn_1_A8C,
fn_1_C58,
fn_1_CF4,
fn_1_DB4,
fn_1_F8C,
fn_1_1074,
fn_1_11CC,
fn_1_13E4,
fn_1_1460
};
typedef struct m407UnkDataStruct1 {
u8 unk_00;
u8 unk_01;
} m407UnkDataStruct1;
m407UnkDataStruct1 lbl_1_data_184[] = {{0x3C, 0x0F}, {0x50, 0x0F}, {0x64, 0x14}, {0x78, 0x14}}; //???
void fn_1_64C(omObjData* arg0) {
u32 temp_r29;
unkDominationData* temp_r27;
unkDominationData* temp_r31;
u32 i;
arg0->func = fn_1_A1C;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x3C, 0x10000000U);
temp_r31 = arg0->data;
temp_r29 = arg0->work[0];
temp_r31->unk_00 = temp_r29;
temp_r31->unk_01 = GWPlayerCfg[temp_r29].character;
temp_r31->unk_0C = GWPlayerCfg[temp_r29].pad_idx;
temp_r31->unk_04 = GWPlayerCfg[temp_r29].iscom;
temp_r31->unk_02 = GWPlayerCfg[temp_r29].diff;
temp_r31->unk_08 = 0;
temp_r31->unk_34 = 0;
temp_r31->unk_38 = 0;
temp_r31->unk_28 = 0.0f;
//frand implicit declaration? (probably frandf inline?)
temp_r31->unk_30 = (600.0f / (lbl_1_data_184[temp_r31->unk_02].unk_00 - ((frand() & 0x7FFFFFFF) % lbl_1_data_184[temp_r31->unk_02].unk_01)));
temp_r31->unk_2C = temp_r31->unk_30;
arg0->model[0] = CharModelCreate(temp_r31->unk_01, 8);
arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_100[temp_r31->unk_01], 0x10000000, HEAP_DATA));
Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f);
Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f);
for (i = 0; i < 8; i++) {
arg0->motion[i] = CharModelMotionCreate(temp_r31->unk_01, lbl_1_data_0[temp_r31->unk_01].unk_00[i]);
}
Hu3DModelShadowSet(arg0->model[0]);
Hu3DModelShadowSet(arg0->model[1]);
CharModelMotionDataClose(temp_r31->unk_01);
CharModelMotionSet(temp_r31->unk_01, arg0->motion[1]);
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
Hu3DModelHookSet(arg0->model[0], lbl_1_data_13C[temp_r31->unk_01], arg0->model[1]);
temp_r31->unk_10 = (600.0f - (400.0f * temp_r29));
temp_r31->unk_14 = 0.0f;
temp_r31->unk_18 = -500.0f;
SetDominationDataStuff(arg0, 0, 0);
}
void fn_1_99C(omObjData* arg0) {
s32 i;
for (i = 0; i < 8; i++) {
Hu3DMotionKill(arg0->motion[i]);
}
for (i = 0; i < 2; i++){
Hu3DModelKill(arg0->model[i]);
}
HuMemDirectFree(arg0->data);
}
void fn_1_A1C(omObjData* arg0) {
unkDominationData* temp_r31;
temp_r31 = arg0->data;
lbl_1_data_15C[temp_r31->unk_1C](arg0);
omSetTra(arg0, temp_r31->unk_10, temp_r31->unk_14, temp_r31->unk_18);
}
void fn_1_A88(omObjData* arg0) {
}
void fn_1_A8C(omObjData* arg0) {
s32 var_r29;
unkDominationData* temp_r31;
var_r29 = 0;
temp_r31 = OM_GET_DATA_PTR(arg0, unkDominationData);
temp_r31->unk_28 += 1.0f;
if (temp_r31->unk_04 == 0) {
var_r29 = (HuPadBtnDown[temp_r31->unk_0C] & 0x100) ? 1 : 0;
} else if ((u32) temp_r31->unk_28 >= (u32) temp_r31->unk_2C) {
var_r29 = 1;
temp_r31->unk_2C = (f32) (temp_r31->unk_2C + temp_r31->unk_30);
}
if (var_r29 != 0) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[2], 0.0f, 0.0f, 0);
fn_1_4544(4, 0x10, 600.0f - (400.0f * (f32) temp_r31->unk_00), -20.0f, -450.0f);
fn_1_26CC(temp_r31->unk_00);
temp_r31->unk_34 = 1;
return;
}
if ((temp_r31->unk_34 != 0) && (Hu3DMotionEndCheck(arg0->model[0]) != 0)) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 0.0f, 0x40000001);
temp_r31->unk_34 = 0;
}
}
void fn_1_C58(omObjData* arg0) {
unkDominationData* temp_r30;
temp_r30 = arg0->data;
if (Hu3DMotionEndCheck(arg0->model[0]) != 0) {
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001);
temp_r30->unk_34 = 0;
SetDominationDataStuff(arg0, 0, 0);
}
}
void fn_1_CF4(omObjData* arg0) {
unkDominationData* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_20 == 0) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[1], 0.0f, 10.0f, 0x40000001U);
CharModelItemHookCreate(temp_r31->unk_01, lbl_1_data_13C[temp_r31->unk_01]);
}
if (temp_r31->unk_20++ >= 30) {
SetDominationDataStuff(arg0, 0, 0);
}
}
void fn_1_DB4(omObjData* arg0) {
f32 temp_f31;
f32 temp_f30;
unkDominationData* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_20 == 0) {
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0);
temp_r31->unk_24 = 0.0f;
temp_r31->unk_20++;
}
temp_f31 = (32.0f * sin(1.0471975511965976)) - (9.8f * temp_r31->unk_24);
temp_f30 = 22.0f * cos(1.0471975511965976);
temp_r31->unk_18 = temp_r31->unk_18 + temp_f30;
temp_r31->unk_14 = temp_r31->unk_14 + temp_f31;
temp_r31->unk_24 += 0.3f;
if (!(temp_f31 < 0.0f) || !(temp_r31->unk_14 <= 30.0f)) {
return;
}
temp_r31->unk_14 = 30.0f;
CharModelMotionShiftSet((s16) temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0U);
SetDominationDataStuff(arg0, 0, 0);
}
const s32 lbl_1_rodata_70[] = {0x00000122, 0x00000162, 0x000001A2, 0x000001E2, 0x00000222, 0x00000262, 0x000002A2, 0x000002E2};
void fn_1_F8C(omObjData* arg0) {
unkDominationData* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_20 == 0) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[5], 0.0f, 10.0f, 0);
HuAudFXPlay(lbl_1_rodata_70[temp_r31->unk_01]);
}
if (temp_r31->unk_20++ >= 0x78) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[0], 0.0f, 10.0f, 0x40000001);
SetDominationDataStuff(arg0, 0, 0);
}
}
void fn_1_1074(omObjData* arg0) {
unkDominationData* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_20 == 0) {
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0U);
temp_r31->unk_24 = 0.0f;
temp_r31->unk_20 = 1;
}
temp_r31->unk_14 = (temp_r31->unk_14 + ((80.0 * sin(1.5707963267948966)) - (9.8 * temp_r31->unk_24)));
temp_r31->unk_24 += 0.3f;
if (!(temp_r31->unk_14 < 1000.0f)) {
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0);
SetDominationDataStuff(arg0, 7, 0);
}
}
void fn_1_11CC(omObjData* arg0) {
unkDominationData* temp_r31;
s16 temp;
temp_r31 = arg0->data;
if (temp_r31->unk_20 == 0) {
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[3], 0);
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[3], 0.0f, 10.0f, 0);
temp_r31->unk_14 = 1000.0f;
temp_r31->unk_18 = 200.0f * (fn_1_28B8(temp_r31->unk_00) + 2);
temp_r31->unk_24 = 0.0f;
temp_r31->unk_20 = 1;
}
temp_r31->unk_14 = (temp_r31->unk_14 - (2.0f + (9.8f * temp_r31->unk_24)));
temp_r31->unk_24 += 0.3f;
if (!(temp_r31->unk_14 > 300.0f)) {
temp_r31->unk_14 = 300.0f;
CharModelVoiceEnableSet(temp_r31->unk_01, arg0->motion[4], 0);
CharModelMotionShiftSet(temp_r31->unk_01, arg0->motion[4], 0.0f, 10.0f, 0);
temp = fn_1_28E4(temp_r31->unk_00);
//can remove \0 after matching whole rel likely
Hu3DModelHookSet(temp, "itemhook_c\0", arg0->model[0]);
temp_r31->unk_10 = 0.0f;
temp_r31->unk_14 = 0.0f;
temp_r31->unk_18 = 0.0f;
SetDominationDataStuff(arg0, 0, 0);
}
}
void fn_1_13E4(omObjData* arg0) {
unkDominationData* temp_r30;
temp_r30 = arg0->data;
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[6], 0.0f, 10.0f, 0);
SetDominationDataStuff(arg0, 0, 0);
}
void fn_1_1460(omObjData* arg0) {
unkDominationData* temp_r30;
temp_r30 = arg0->data;
CharModelVoiceEnableSet(temp_r30->unk_01, arg0->motion[7], 0);
CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[7], 0.0f, 10.0f, 0);
SetDominationDataStuff(arg0, 0, 0);
}

View file

@ -0,0 +1,196 @@
#include "src/REL/m407dll/m407dll.h"
#include "game/process.h"
#include "game/object.h"
#include "game/gamework_data.h"
#include "game/esprite.h"
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2);
void fn_1_3D28(omObjData* arg0, s32 arg1);
void fn_1_3E34(omObjData*);
void fn_1_3F7C(omObjData* arg0);
void fn_1_3FF0(omObjData*);
void fn_1_3FF4(omObjData* arg0);
void fn_1_40F4(omObjData* arg0);
s32 bssPad;
Process* lbl_1_bss_37D8;
omObjData* lbl_1_bss_37C8[4];
ObjFuncs lbl_1_data_278[] = {
fn_1_3FF0,
fn_1_3FF4,
fn_1_40F4,
};
typedef struct unkDominationData3 {
u32 unk_00;
s32 unk_04;
Vec unk_08;
s32 unk_14;
s16 unk_18[4];
f32 unk_20;
} unkDominationData3;
void fn_1_3AC8(Process* arg0) {
u32 i;
lbl_1_bss_37D8 = arg0;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
lbl_1_bss_37C8[i] = omAddObjEx(lbl_1_bss_37D8, 0x500, 0U, 0U, 4, fn_1_3E34);
lbl_1_bss_37C8[i]->work[0] = i;
}
}
void fn_1_3B68(void) {
s32 temp_r4;
u32 i;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
fn_1_3F7C(lbl_1_bss_37C8[i]);
}
}
void fn_1_3BB8(s16 arg0, f32 arg8, f32 arg9) {
omObjData* obj;
Vec sp14;
unkDominationData3* temp_r31;
u32 i;
s16 temp;;
for (i = 0; i < ARRAY_COUNT(lbl_1_bss_37C8); i++) {
obj = lbl_1_bss_37C8[i];
temp_r31 = OM_GET_DATA_PTR(obj, unkDominationData3);
if (temp_r31->unk_04 == 0) {
temp = arg0;
espBankSet(temp_r31->unk_18[1], (temp / 100));
temp = (temp - ((temp / 100) * 100));
espBankSet(temp_r31->unk_18[2],(temp / 10));
temp = (temp - ((temp / 10) * 10));
espBankSet(temp_r31->unk_18[3], temp);
sp14.x = arg8;
sp14.y = 0.0f;
sp14.z = arg9;
Hu3D3Dto2D(&sp14, 1, &temp_r31->unk_08);
fn_1_3D28(obj, 1);
return;
}
}
}
void fn_1_3D28(omObjData* arg0, s32 arg1) {
unkDominationData3* temp_r31;
temp_r31 = arg0->data;
temp_r31->unk_04 = arg1;
temp_r31->unk_14 = 0;
}
void fn_1_3D4C(omObjData* arg0) {
s32 temp_r5;
unkDominationData3* temp_r31;
temp_r31 = arg0->data;
lbl_1_data_278[temp_r31->unk_04](arg0);
espPosSet(temp_r31->unk_18[0], temp_r31->unk_08.x, temp_r31->unk_08.y);
espPosSet(temp_r31->unk_18[1], temp_r31->unk_08.x - 18.0f, temp_r31->unk_08.y - 8.0f);
espPosSet(temp_r31->unk_18[2], temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
espPosSet(temp_r31->unk_18[3], 18.0f + temp_r31->unk_08.x, temp_r31->unk_08.y - 8.0f);
}
void fn_1_3E34(omObjData* arg0) {
unkDominationData3* temp_r29;
unkDominationData3* temp_r31;
arg0->func = fn_1_3D4C;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x24, 0x10000000U);
temp_r31 = arg0->data;
temp_r31->unk_00 = arg0->work[0];
temp_r31->unk_14 = 0;
temp_r31->unk_04 = 0;
temp_r31->unk_18[0] = espEntry(0x260026, 1, 0);
temp_r31->unk_18[1] = espEntry(0x260020, 0, 0);
temp_r31->unk_18[2] = espEntry(0x260020, 0, 0);
temp_r31->unk_18[3] = espEntry(0x260020, 0, 0);
espDispOff(temp_r31->unk_18[0]);
espDispOff(temp_r31->unk_18[1]);
espDispOff(temp_r31->unk_18[2]);
espDispOff(temp_r31->unk_18[3]);
espScaleSet(temp_r31->unk_18[0], 1.8f, 1.8f);
temp_r31->unk_08.x = (f32) 0.0f;
temp_r31->unk_08.y = (f32) 0.0f;
temp_r29 = arg0->data;
temp_r29->unk_04 = 0;
temp_r29->unk_14 = 0;
}
void fn_1_3F7C(omObjData* arg0) {
s32 i;
unkDominationData3* temp_r29;
temp_r29 = arg0->data;
for (i = 0; i < ARRAY_COUNT(temp_r29->unk_18); i++) {
espKill(temp_r29->unk_18[i]);
}
if (arg0->data) {
HuMemDirectFree(arg0->data);
}
}
void fn_1_3FF0(omObjData* arg0) {
}
void fn_1_3FF4(omObjData* arg0) {
unkDominationData3* temp_r30;
unkDominationData3* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_14 == 0) {
espDispOn(temp_r31->unk_18[0]);
espDispOn(temp_r31->unk_18[1]);
espDispOn(temp_r31->unk_18[2]);
espDispOn(temp_r31->unk_18[3]);
temp_r31->unk_20 = 0.0f;
}
if (temp_r31->unk_20 < 1.0f) {
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
temp_r31->unk_20 += 0.1f;
}
if (temp_r31->unk_14++ >= 0x3C) {
temp_r30 = arg0->data;
temp_r30->unk_04 = 2;
temp_r30->unk_14 = 0;
}
}
void fn_1_40F4(omObjData* arg0) {
unkDominationData3* temp_r30;
unkDominationData3* temp_r31;
temp_r31 = arg0->data;
if (temp_r31->unk_20 > 0.0f) {
espTPLvlSet(temp_r31->unk_18[0], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[1], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[2], temp_r31->unk_20);
espTPLvlSet(temp_r31->unk_18[3], temp_r31->unk_20);
temp_r31->unk_20 -= 0.05;
return;
}
espDispOff(temp_r31->unk_18[0]);
espDispOff(temp_r31->unk_18[1]);
espDispOff(temp_r31->unk_18[2]);
espDispOff(temp_r31->unk_18[3]);
temp_r30 = arg0->data;
temp_r30->unk_04 = 0;
temp_r30->unk_14 = 0;
}
f32 pad2[1] = {0.0f};

View file

@ -1,3 +1,4 @@
#define HUSPR_USE_OLD_DEFS
#include "math.h"
#include "game/chrman.h"
#include "game/object.h"

2558
src/REL/w01Dll/main.c Executable file

File diff suppressed because it is too large Load diff

1072
src/REL/w01Dll/mg_coin.c Executable file

File diff suppressed because it is too large Load diff

947
src/REL/w01Dll/mg_item.c Executable file
View file

@ -0,0 +1,947 @@
#include "REL/w01Dll.h"
#include "game/audio.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/board/audio.h"
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/ui.h"
#include "game/board/window.h"
#include "dolphin.h"
#include "math.h"
static void fn_1_E100(void);
static void fn_1_E154(void);
static void fn_1_E2B8(omObjData *arg0);
static void fn_1_E44C(omObjData *arg0);
static void fn_1_E914(omObjData *arg0);
static void fn_1_ECD4(omObjData *arg0);
static void fn_1_EEA0(omObjData *arg0, u16 *arg1);
static void fn_1_EED8(omObjData *arg0);
static void fn_1_F09C(omObjData *arg0);
static void fn_1_F348(omObjData *arg0);
static void fn_1_F3F8(omObjData *arg0);
static void fn_1_F6E8(omObjData *arg0);
static void fn_1_F890(omObjData *arg0);
static void fn_1_FA1C(omObjData *arg0);
static void fn_1_FABC(omObjData *arg0);
static void fn_1_FB58(void);
static void fn_1_FC3C(omObjData *arg0);
static void fn_1_FCEC(void);
static void fn_1_FD3C(omObjData *arg0);
static void fn_1_FE44(omObjData *arg0);
static void fn_1_FED0(omObjData *arg0);
static s16 fn_1_1001C(u32 arg0);
static void fn_1_101B8(s16 arg0);
static void fn_1_10664(omObjData *arg0);
static void fn_1_10820(omObjData *arg0);
static void fn_1_10AE8(omObjData *arg0);
static float fn_1_10BB0(u32 arg0);
static void fn_1_10CF0(u32 arg0);
static float fn_1_10EB8(Vec *arg0);
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix);
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix);
static void *lbl_1_bss_818;
static Vec lbl_1_bss_80C;
static omObjData *lbl_1_bss_7FC[4];
static omObjData *lbl_1_bss_7F8;
static omObjData *lbl_1_bss_7F4;
static omObjData *lbl_1_bss_7F0;
static float lbl_1_bss_7EC;
static float lbl_1_bss_7E8;
static s32 lbl_1_bss_7E4;
static Vec lbl_1_bss_7D8;
static s16 lbl_1_bss_7D6;
static s16 lbl_1_bss_7D4;
static s16 lbl_1_bss_7D2;
static s16 lbl_1_bss_7D0;
static Vec lbl_1_bss_7C4;
static s32 lbl_1_bss_7C0_pad;
static s32 lbl_1_bss_7BC;
static s32 lbl_1_bss_7B8;
static s16 lbl_1_bss_7B4;
static s32 lbl_1_bss_7B0_pad;
static s32 lbl_1_bss_7AC;
static s16 lbl_1_bss_7AA;
static s16 lbl_1_bss_7A8;
static s32 lbl_1_bss_7A4;
static AnimData *lbl_1_bss_7A0;
static s32 lbl_1_data_F08[] = {
DATA_MAKE_NUM(DATADIR_BOARD, 109),
DATA_MAKE_NUM(DATADIR_BOARD, 110),
DATA_MAKE_NUM(DATADIR_BOARD, 111),
DATA_MAKE_NUM(DATADIR_BOARD, 112),
DATA_MAKE_NUM(DATADIR_BOARD, 113),
DATA_MAKE_NUM(DATADIR_BOARD, 114),
DATA_MAKE_NUM(DATADIR_BOARD, 115),
DATA_MAKE_NUM(DATADIR_BOARD, 116),
DATA_MAKE_NUM(DATADIR_BOARD, 118),
DATA_MAKE_NUM(DATADIR_BOARD, 119),
DATA_MAKE_NUM(DATADIR_BOARD, 120),
DATA_MAKE_NUM(DATADIR_BOARD, 121),
DATA_MAKE_NUM(DATADIR_BOARD, 122),
DATA_MAKE_NUM(DATADIR_BOARD, 123)
};
static s32 lbl_1_data_F40[8] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 23),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 23),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 23),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 23),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23)
};
static s32 lbl_1_data_F60[8] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 64),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 64),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 64),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 64),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 64),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 64),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 64),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 64)
};
void fn_1_D740(s16 *arg0) {
s16 sp10[14];
s16 sp8[4];
float temp_f30;
float temp_f29;
float var_f31;
s32 var_r28;
s32 var_r30;
s32 i;
s32 j;
lbl_1_bss_818 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_W01, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
sp8[0] = BoardModelIDGet(lbl_1_bss_6C4[19]);
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 1);
for (i = 1; i < 4; i++) {
sp8[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_W01, 24));
}
var_r30 = 0;
for (i = 0; i < 4; i++) {
lbl_1_bss_7FC[i] = omAddObjEx(boardObjMan, 0x165, 2, 0, -1, NULL);
if (arg0[i] != -1) {
lbl_1_bss_7FC[var_r30++]->work[1] = arg0[i];
}
}
while (var_r30 != 4) {
var_r28 = 0;
for (i = 0; i < 14; i++) {
for (j = 0; j < var_r30; j++) {
if (i == lbl_1_bss_7FC[j]->work[1]) {
break;
}
}
if (j == var_r30) {
sp10[var_r28++] = i;
}
}
lbl_1_bss_7FC[var_r30++]->work[1] = sp10[rand8() % var_r28];
}
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
for (i = 0; i < 4; i++) {
lbl_1_bss_7FC[i]->model[0] = sp8[i];
lbl_1_bss_7FC[i]->model[1] = Hu3DModelCreateFile(lbl_1_data_F08[lbl_1_bss_7FC[i]->work[1]]);
if (lbl_1_bss_7FC[i]->work[1] == 5) {
Hu3DData[lbl_1_bss_7FC[i]->model[1]].unk_F0[1][3] = -50.0f;
}
if (lbl_1_bss_7FC[i]->work[1] == 11) {
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000001);
}
if (lbl_1_bss_7FC[i]->work[1] == 4) {
Hu3DMotionSpeedSet(lbl_1_bss_7FC[i]->model[1], 0.0f);
}
Hu3DModelAttrReset(sp8[i], 1);
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 1);
Hu3DModelAttrSet(lbl_1_bss_7FC[i]->model[1], 0x40000002);
omSetTra(lbl_1_bss_7FC[i], lbl_1_bss_80C.x, lbl_1_bss_80C.y + 66.0f, lbl_1_bss_80C.z);
var_f31 = 90.0f - 90.0f * i + 360.0f * (temp_f30 / temp_f29);
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
omSetRot(lbl_1_bss_7FC[i], 0.0f, var_f31, 0.0f);
lbl_1_bss_7FC[i]->work[0] = Hu3DAnimCreate(lbl_1_bss_818, lbl_1_bss_7FC[i]->model[0], "item01");
Hu3DAnimAttrSet(lbl_1_bss_7FC[i]->work[0], 1);
lbl_1_bss_7FC[i]->work[2] = i;
}
for (i = 0; i < 4; i++) {
Hu3DAnmNoSet(lbl_1_bss_7FC[i]->work[0], lbl_1_bss_7FC[i]->work[1]);
}
}
void fn_1_DD84(void) {
s32 i;
for (i = 0; i < 4; i++) {
if (i != 0) {
Hu3DModelKill(lbl_1_bss_7FC[i]->model[0]);
} else {
BoardModelVisibilitySet(lbl_1_bss_6C4[19], 0);
Hu3DAnimKill(lbl_1_bss_7FC[i]->work[0]);
}
Hu3DModelKill(lbl_1_bss_7FC[i]->model[1]);
omDelObjEx(boardObjMan, lbl_1_bss_7FC[i]);
}
if (lbl_1_bss_7A0) {
HuSprAnimKill(lbl_1_bss_7A0);
lbl_1_bss_7A0 = NULL;
}
}
void fn_1_DE94(void) {
s32 i;
BoardModelPosGet(lbl_1_bss_6C4[16], &lbl_1_bss_80C);
for (i = 0; i < 4; i++) {
lbl_1_bss_7FC[i]->func = fn_1_FED0;
}
lbl_1_bss_7F4 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_E2B8);
lbl_1_bss_7F8 = omAddObjEx(boardObjMan, 0x133, 0, 0, -1, fn_1_E44C);
lbl_1_bss_7F8->work[3] = rand8() % 200 + 10;
lbl_1_bss_7E4 = GWSystem.player_curr;
BoardPlayerPosGet(lbl_1_bss_7E4, &lbl_1_bss_7C4);
lbl_1_bss_7EC = 1.0f;
lbl_1_bss_7E8 = 1.0f;
lbl_1_bss_7AA = 0;
lbl_1_bss_7BC = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F40[GWPlayer[lbl_1_bss_7E4].character]);
lbl_1_bss_7B8 = BoardPlayerMotionCreate(lbl_1_bss_7E4, lbl_1_data_F60[GWPlayer[lbl_1_bss_7E4].character]);
lbl_1_bss_7A0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0));
HuSprAnimLock(lbl_1_bss_7A0);
lbl_1_bss_7B4 = 0;
}
static void fn_1_E100(void) {
lbl_1_bss_7AA = 1;
BoardMGExit();
HuAudFXPlay(0x40F);
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
}
static void fn_1_E154(void) {
fn_1_DD84();
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7BC);
BoardPlayerMotionKill(lbl_1_bss_7E4, lbl_1_bss_7B8);
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
BoardMGDoneFlagSet(0);
}
static void fn_1_E2B8(omObjData *arg0) {
if (lbl_1_bss_7AA == 1 && BoardMGDoneFlagGet() == 1) {
fn_1_E154();
omDelObjEx(HuPrcCurrentGet(), arg0);
}
}
static char *lbl_1_data_F9C[] = {
"uma1", "uma2", "uma3", "uma4"
};
static void fn_1_E44C(omObjData *arg0) {
Vec sp18;
Vec spC;
float temp_f27;
float var_f29;
float temp_f28;
float var_f26;
float var_f24;
s32 i;
temp_f28 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
var_f29 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
if (var_f29 >= temp_f28) {
var_f29 -= temp_f28;
}
var_f24 = fmod(var_f29, temp_f28 / 4);
if (var_f24 >= temp_f28 / 4 - 30.0f && lbl_1_bss_7B4 == 0) {
lbl_1_bss_7B4 = 1;
lbl_1_bss_7A8 = 90;
}
if (lbl_1_bss_7B4 != 0) {
lbl_1_bss_7EC *= 0.97f;
lbl_1_bss_7A8--;
}
if (lbl_1_bss_7EC != 1.0f && lbl_1_bss_7A8 == 0) {
lbl_1_bss_7EC = 0.0f;
BoardAudSeqPause(0, 1, 1000);
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[0], &spC);
var_f26 = PSVECSquareDistance(&sp18, &spC);
arg0->work[2] = 0;
for (i = 1; i < 4; i++) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[i], &spC);
temp_f27 = PSVECSquareDistance(&sp18, &spC);
if (temp_f27 < var_f26) {
var_f26 = temp_f27;
arg0->work[2] = i;
}
}
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0->work[2]], &lbl_1_bss_7D8);
PSVECSubtract(&lbl_1_bss_7D8, &sp18, &spC);
PSVECNormalize(&spC, &spC);
arg0->trans.x = spC.x;
arg0->trans.y = spC.y;
arg0->trans.z = spC.z;
arg0->rot.x = sqrtf((lbl_1_bss_7D8.x - sp18.x) * (lbl_1_bss_7D8.x - sp18.x) + (lbl_1_bss_7D8.z - sp18.z) * (lbl_1_bss_7D8.z - sp18.z));
arg0->rot.y = 10.0f;
arg0->rot.z = sp18.y;
arg0->scale.x = 0.0f;
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
arg0->func = fn_1_E914;
}
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
}
static void fn_1_E914(omObjData *arg0) {
Vec spC;
s32 i;
BoardPlayerPosGet(lbl_1_bss_7E4, &spC);
spC.x += arg0->trans.x * arg0->rot.x / 32.760002f;
spC.z += arg0->trans.z * arg0->rot.x / 32.760002f;
spC.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
arg0->scale.x += 1.0f;
if (sqrtf((lbl_1_bss_7D8.x - spC.x) * (lbl_1_bss_7D8.x - spC.x) + (lbl_1_bss_7D8.z - spC.z) * (lbl_1_bss_7D8.z - spC.z)) < 2.0f) {
spC = lbl_1_bss_7D8;
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10BB0(arg0->work[2]), 0.0f);
lbl_1_bss_7EC = 0.05f;
lbl_1_bss_7E8 = 0.05f;
BoardModelAttrReset(lbl_1_bss_6C4[18], 0x40000002);
BoardModelAttrSet(lbl_1_bss_6C4[18], 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
for (i = 0; i < 4; i++) {
lbl_1_bss_7FC[i]->func = fn_1_FED0;
}
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7B8, 0.0f, 5.0f, 0x40000001);
lbl_1_bss_7D6 = MGSeqCreate(3, 0);
BoardMusStart(1, 0xE, 0x7F, 0);
arg0->func = fn_1_ECD4;
}
BoardPlayerPosSetV(lbl_1_bss_7E4, &spC);
}
static void fn_1_ECD4(omObjData *arg0) {
lbl_1_bss_7EC *= 1.05f;
lbl_1_bss_7E8 *= 1.05f;
if (lbl_1_bss_7EC > 2.0f) {
lbl_1_bss_7EC = 2.0f;
}
if (lbl_1_bss_7E8 > 4.0f) {
lbl_1_bss_7E8 = 4.0f;
}
if (MGSeqStatGet(lbl_1_bss_7D6) == 0) {
lbl_1_bss_7EC = 2.0f;
lbl_1_bss_7E8 = 4.0f;
arg0->func = fn_1_EED8;
lbl_1_bss_7D2 = 5;
lbl_1_bss_7D0 = 60;
lbl_1_bss_7D4 = MGSeqCreate(1, lbl_1_bss_7D2, 0x120, 0x40);
}
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], lbl_1_bss_7EC);
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
fn_1_10CF0(arg0->work[2]);
}
static void fn_1_EEA0(omObjData *arg0, u16 *arg1) {
*arg1 = 0;
if (arg0->work[3] != 0) {
arg0->work[3]--;
} else {
*arg1 |= 0x100;
}
}
static void fn_1_EED8(omObjData *arg0) {
s16 temp_r29;
u16 var_r30;
fn_1_10CF0(arg0->work[2]);
temp_r29 = GWPlayer[lbl_1_bss_7E4].port;
if ((lbl_1_bss_7D0 -= 1) == 0) {
if ((lbl_1_bss_7D2 -= 1) >= 0) {
MGSeqParamSet(lbl_1_bss_7D4, 1, lbl_1_bss_7D2);
}
lbl_1_bss_7D0 = 60;
}
if (GWPlayerCfg[lbl_1_bss_7E4].iscom == 1) {
fn_1_EEA0(arg0, &var_r30);
} else {
var_r30 = HuPadBtnDown[temp_r29];
}
if (lbl_1_bss_7D2 < 0 || (var_r30 & 0x100)) {
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 0.0f);
MGSeqParamSet(lbl_1_bss_7D4, 2, -1);
arg0->scale.y = 0.0f;
arg0->func = fn_1_F09C;
}
}
static void fn_1_F09C(omObjData *arg0) {
float temp_f31;
float var_f30;
temp_f31 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
arg0->scale.y += lbl_1_bss_7E8;
if (arg0->scale.y >= temp_f31 - 150.0f) {
lbl_1_bss_7E8 *= 0.9745f;
if (lbl_1_bss_7E8 < 0.08f) {
lbl_1_bss_7E8 = 0.08f;
}
}
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], lbl_1_bss_7E8);
if (arg0->scale.y >= temp_f31) {
BoardModelMotionSpeedSet(lbl_1_bss_6C4[18], 0.0f);
var_f30 = arg0->scale.y - temp_f31 + BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
if (var_f30 > temp_f31) {
var_f30 -= temp_f31;
}
BoardModelMotionTimeSet(lbl_1_bss_6C4[18], var_f30);
arg0->work[0] = fn_1_1001C(arg0->work[2]);
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
BoardModelPosSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->trans.x, lbl_1_bss_7FC[arg0->work[0]]->trans.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->trans.z);
BoardModelRotSet(lbl_1_bss_6C4[20], lbl_1_bss_7FC[arg0->work[0]]->rot.x, lbl_1_bss_7FC[arg0->work[0]]->rot.y + 1.0f, lbl_1_bss_7FC[arg0->work[0]]->rot.z);
arg0->work[1] = 60;
BoardAudSeqFadeOut(1, 100);
arg0->func = fn_1_F348;
HuAudFXPlay(0x40A);
}
}
static void fn_1_F348(omObjData *arg0) {
if ((arg0->work[1] / 4) & 1) {
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
} else {
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 1);
}
if ((arg0->work[1] -= 1) == 0) {
BoardModelVisibilitySet(lbl_1_bss_6C4[20], 0);
fn_1_101B8(arg0->work[0]);
HuAudFXPlay(0x310);
arg0->func = fn_1_F3F8;
}
}
static void fn_1_F3F8(omObjData *arg0) {
Vec sp18;
Vec spC;
if (lbl_1_bss_7F0->work[0] != 1) {
return;
}
BoardPlayerPosGet(lbl_1_bss_7E4, &sp18);
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
PSVECNormalize(&spC, &spC);
arg0->trans.x = spC.x;
arg0->trans.y = spC.y;
arg0->trans.z = spC.z;
arg0->rot.x = sqrtf((lbl_1_bss_7C4.x - sp18.x) * (lbl_1_bss_7C4.x - sp18.x) + (lbl_1_bss_7C4.z - sp18.z) * (lbl_1_bss_7C4.z - sp18.z));
arg0->scale.y = 20.0f + 40.0f * (arg0->rot.x / 445.0f);
arg0->rot.y = 0.016666668f * (arg0->scale.y / 2) * (arg0->scale.y / 2);
arg0->rot.z = sp18.y;
arg0->scale.x = 0.0f;
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 4, 0.0f, 5.0f, 0);
PSVECSubtract(&lbl_1_bss_7C4, &sp18, &spC);
PSVECNormalize(&spC, &spC);
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10EB8(&spC), 0.0f);
arg0->func = fn_1_F6E8;
}
static void fn_1_F6E8(omObjData *arg0) {
Vec sp8;
BoardPlayerPosGet(lbl_1_bss_7E4, &sp8);
sp8.x += arg0->trans.x * arg0->rot.x / arg0->scale.y;
sp8.z += arg0->trans.z * arg0->rot.x / arg0->scale.y;
sp8.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x;
arg0->scale.x += 1.0f;
if (sp8.y < lbl_1_bss_80C.y || arg0->scale.x >= arg0->scale.y) {
sp8.y = lbl_1_bss_80C.y;
BoardCameraMotionStart(BoardPlayerModelGet(lbl_1_bss_7E4), NULL, 700.0f, -1.0f);
BoardPlayerMotionStart(lbl_1_bss_7E4, 2, 0x40000001);
arg0->func = fn_1_F890;
}
BoardPlayerPosSetV(lbl_1_bss_7E4, &sp8);
}
static void fn_1_F890(omObjData *arg0) {
Vec sp8;
BoardPlayerRotGet(lbl_1_bss_7E4, &sp8);
if (sp8.y == 0.0f) {
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0x40000001);
lbl_1_bss_7F0->work[0] = 0;
lbl_1_bss_7F0->func = fn_1_10820;
arg0->func = fn_1_FA1C;
} else if (sp8.y > 180.0f) {
if (360.0f - sp8.y < 3.0f) {
sp8.y = 0.0f;
} else {
sp8.y += 3.0f;
}
} else {
if (sp8.y < 3.0f) {
sp8.y = 0.0f;
} else {
sp8.y -= 3.0f;
}
}
BoardPlayerRotSetV(lbl_1_bss_7E4, &sp8);
}
static void fn_1_FA1C(omObjData *arg0) {
if (lbl_1_bss_7F0->work[0] == 1) {
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, lbl_1_bss_7BC, 0.0f, 10.0f, 0);
arg0->work[0] = 30;
lbl_1_bss_7A4 = HuAudSStreamPlay(2);
arg0->func = fn_1_FABC;
}
}
static void fn_1_FABC(omObjData *arg0) {
Process *var_r30;
if (arg0->work[0] == 0) {
if (HuAudSStreamStatGet(lbl_1_bss_7A4) == 0) {
var_r30 = HuPrcCreate(fn_1_FB58, 0x2004, 0x1000, 0);
var_r30->user_data = arg0;
BoardAudSeqPause(0, 0, 1000);
arg0->func = NULL;
}
} else {
arg0->work[0]--;
}
}
static void fn_1_FB58(void) {
omObjData *temp_r31;
BoardWinCreate(2, MAKE_MESSID(10, 6), 0);
BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_7F0->work[1]), 0);
BoardWinWait();
BoardWinKill();
temp_r31 = HuPrcCurrentGet()->user_data;
BoardPlayerMotionShiftSet(lbl_1_bss_7E4, 1, 0.0f, 10.0f, 0);
lbl_1_bss_7F0->work[0] = 0;
HuAudFXPlay(0x30D);
HuAudFXFadeOut(lbl_1_bss_7AC, 1000);
lbl_1_bss_7F0->func = fn_1_10AE8;
temp_r31->func = fn_1_FC3C;
HuPrcKill(NULL);
while (TRUE) {
HuPrcVSleep();
}
}
static void fn_1_FC3C(omObjData *arg0) {
Process *var_r31;
if (lbl_1_bss_7F0->work[0] == 1) {
BoardPlayerItemAdd(lbl_1_bss_7E4, lbl_1_bss_7F0->work[1]);
omVibrate(lbl_1_bss_7E4, 12, 6, 6);
var_r31 = HuPrcCreate(fn_1_FCEC, 0x2004, 0x1000, 0);
var_r31->user_data = arg0;
arg0->func = NULL;
}
}
static void fn_1_FCEC(void) {
omObjData *var_r31;
BoardWinCreate(2, MAKE_MESSID(10, 7), 0);
BoardWinWait();
BoardWinKill();
var_r31 = HuPrcCurrentGet()->user_data;
var_r31->func = fn_1_FD3C;
HuPrcKill(NULL);
while (TRUE) {
HuPrcVSleep();
}
}
static void fn_1_FD3C(omObjData *arg0) {
BoardStatusShowSetAll(1);
BoardCameraTargetModelSet(lbl_1_bss_6C4[21]);
BoardCameraOffsetSet(0.0f, 0.0f, 0.0f);
BoardCameraXRotZoomSet(1200.0f, -45.0f);
BoardModelMotionSpeedSet(lbl_1_bss_6C4[17], 1.0f);
Hu3DModelKill(lbl_1_bss_7F0->model[0]);
Hu3DModelKill(lbl_1_bss_7F0->model[1]);
Hu3DModelKill(lbl_1_bss_7F0->model[2]);
omDelObjEx(HuPrcCurrentGet(), lbl_1_bss_7F0);
arg0->func = fn_1_FE44;
}
static void fn_1_FE44(omObjData *arg0) {
if (BoardStatusStopCheck(lbl_1_bss_7E4) && BoardCameraMotionIsDone()) {
lbl_1_bss_7AA = 1;
BoardMGExit();
HuAudFXPlay(0x40F);
BoardModelMotionStart(lbl_1_bss_6C4[21], 0, 0x40000004);
arg0->func = NULL;
}
}
static void fn_1_FED0(omObjData *arg0) {
float temp_f30;
float var_f31;
float var_f29;
temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[18]);
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
var_f31 = 90.0f - 90.0f * arg0->work[2] + 360.0f * (temp_f30 / var_f29);
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
omSetRot(arg0, 0.0f, var_f31, 0.0f);
}
static s16 fn_1_1001C(u32 arg0) {
float var_f29;
float var_f28;
float temp_f27;
float temp_f26;
float var_f31;
float var_f30;
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
temp_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
var_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
var_f30 = var_f30 - (var_f29 / 4) * arg0;
if (var_f30 < 0.0f) {
var_f30 += var_f29;
}
var_f28 = 360.0f * (var_f30 / var_f29);
var_f31 = var_f28 - temp_f27;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
var_f31 /= 90.0f;
return var_f31;
}
static void fn_1_101B8(s16 arg0) {
omObjData *var_r31;
float *var_r30;
float var_f27;
float temp_f26;
float temp_f30;
float temp_f29;
float temp_f28;
float var_f31;
var_r31 = lbl_1_bss_7F0 = omAddObjEx(boardObjMan, 0x165, 3, 0, -1, fn_1_10664);
var_r31->model[0] = lbl_1_bss_7FC[arg0]->model[1];
Hu3DModelAttrReset(var_r31->model[0], 1);
lbl_1_bss_7F0->work[1] = lbl_1_bss_7FC[arg0]->work[1];
lbl_1_bss_7F0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 3 * sizeof(float), MEMORY_DEFAULT_NUM);
var_r30 = lbl_1_bss_7F0->data;
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
omSetSca(var_r31, 0.0f, 0.0f, 0.0f);
temp_f26 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[18]);
var_f27 = 360.0f - 360.0f * (BoardModelMotionTimeGet(lbl_1_bss_6C4[18]) / temp_f26);
var_f31 = 45.0f + var_f27 + 90.0f * arg0;
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
temp_f30 = lbl_1_bss_80C.x - 100.0 * cos(var_f31 * M_PI / 180.0);
temp_f28 = lbl_1_bss_80C.z - 100.0 * sin(var_f31 * M_PI / 180.0);
temp_f29 = lbl_1_bss_80C.y + 66.0f + 1.0f;
omSetTra(var_r31, temp_f30, temp_f29, temp_f28);
var_r31->work[0] = 0;
var_r30[0] = 0.1f;
var_r30[2] = 20.0f;
var_r30[1] = 0.0f;
var_r31->model[1] = Hu3DParticleCreate(lbl_1_bss_7A0, 200);
var_r31->model[2] = Hu3DParticleCreate(lbl_1_bss_7A0, 100);
Hu3DParticleHookSet(var_r31->model[1], fn_1_11064);
Hu3DParticleHookSet(var_r31->model[2], fn_1_11484);
Hu3DParticleColSet(var_r31->model[1], 0xFF, 0xFF, 0);
Hu3DParticleColSet(var_r31->model[2], 0xFF, 0xFF, 0);
Hu3DModelPosSet(var_r31->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelPosSet(var_r31->model[2], temp_f30, temp_f29, temp_f28);
Hu3DParticleBlendModeSet(var_r31->model[1], 1);
Hu3DParticleBlendModeSet(var_r31->model[2], 1);
Hu3DModelLayerSet(var_r31->model[1], 3);
Hu3DModelLayerSet(var_r31->model[2], 3);
lbl_1_bss_7AC = HuAudFXPlay(0x35F);
}
static void fn_1_10664(omObjData *arg0) {
float *temp_r31;
float var_f31;
temp_r31 = arg0->data;
var_f31 = temp_r31[0];
if (arg0->work[0] == 0) {
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
} else {
temp_r31[0] += 0.025f;
}
arg0->trans.y += temp_r31[2];
temp_r31[2] -= 1.0f;
if (temp_r31[2] < 0.0f && arg0->trans.y < lbl_1_bss_80C.y + 66.0f + 1.0f + 90.0f) {
arg0->work[0] = 1;
}
omSetSca(arg0, var_f31, var_f31, var_f31);
} else {
arg0->trans.y += sin(temp_r31[1] * M_PI / 180.0);
temp_r31[1] += 4.0f;
if (temp_r31[1] >= 360.0f) {
temp_r31[1] -= 360.0f;
}
}
}
static void fn_1_10820(omObjData *arg0) {
Vec sp24;
Vec sp18;
Vec spC;
float var_f28;
float *temp_r30;
temp_r30 = arg0->data;
if (arg0->work[0] == 0) {
BoardPlayerPosGet(lbl_1_bss_7E4, &sp24);
sp18.x = arg0->trans.x;
sp18.y = 0.0f;
sp18.z = arg0->trans.z;
sp24.y = 0.0f;
PSVECSubtract(&sp24, &sp18, &spC);
PSVECNormalize(&spC, &spC);
var_f28 = sqrtf((sp24.x - sp18.x) * (sp24.x - sp18.x) + (sp24.z - sp18.z) * (sp24.z - sp18.z));
if (var_f28 < 8.0f) {
arg0->trans.x = sp24.x;
arg0->trans.z = sp24.z;
arg0->work[0] = 1;
} else {
arg0->trans.x += 8.0f * spC.x;
arg0->trans.z += 8.0f * spC.z;
}
}
arg0->trans.y += sin(temp_r30[1] * M_PI / 180.0);
temp_r30[1] += 4.0f;
if (temp_r30[1] >= 360.0f) {
temp_r30[1] -= 360.0f;
}
}
static void fn_1_10AE8(omObjData *arg0) {
float *temp_r31;
temp_r31 = arg0->data;
if (arg0->work[0] == 0) {
temp_r31[0] -= 0.016666668f;
if (temp_r31[0] <= 0.0f) {
temp_r31[0] = 0.0f;
arg0->work[0] = 1;
HuAudFXStop(lbl_1_bss_7AC);
}
arg0->trans.y -= 2.1666667f;
}
omSetSca(arg0, temp_r31[0], temp_r31[0], temp_r31[0]);
}
static float fn_1_10BB0(u32 arg0) {
float var_f30;
float temp_f29;
float var_f31;
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
if (var_f30 < 0.0f) {
var_f30 += temp_f29;
}
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
return var_f31;
}
static void fn_1_10CF0(u32 arg0) {
float var_f30;
float temp_f29;
float var_f31;
float var_f28;
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_6C4[17]), lbl_1_data_F9C[arg0], &lbl_1_bss_7D8);
BoardPlayerPosSetV(lbl_1_bss_7E4, &lbl_1_bss_7D8);
var_f30 = BoardModelMotionTimeGet(lbl_1_bss_6C4[17]);
temp_f29 = BoardModelMotionMaxTimeGet(lbl_1_bss_6C4[17]);
var_f30 = var_f30 - (temp_f29 / 4) * arg0;
if (var_f30 < 0.0f) {
var_f30 += temp_f29;
}
var_f31 = 180.0f + -360.0f * (var_f30 / temp_f29);
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
var_f28 = var_f31;
BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, var_f28, 0.0f);
}
static float fn_1_10EB8(Vec *arg0) {
float var_f31;
if (arg0->x || arg0->z) {
if (arg0->x == 0.0f) {
if (arg0->z > 0.0f) {
return 0.0f;
} else {
return 180.0f;
}
}
if (arg0->z == 0.0f) {
if (arg0->x > 0.0f) {
return 90.0f;
} else {
return 270.0f;
}
}
var_f31 = 180.0 * (atan2(arg0->z, arg0->x) / M_PI);
if (arg0->z < 0.0f) {
var_f31 = 90.0f - var_f31;
} else {
var_f31 = 90.0f - var_f31;
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
}
return var_f31;
}
return -1.0f;
}
static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix) {
HsfanimStruct01 *var_r31;
float temp_f30;
float temp_f29;
float temp_f31;
s32 var_r28;
s32 i;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
particle->unk_00 = 0;
}
temp_f31 = lbl_1_bss_7F0->scale.x;
for (i = 0; i < 30; i++) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk2C == 0.0f) {
break;
}
}
if (var_r28 != particle->unk_30) {
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
temp_f29 = 0.003921569f * (frand() & 0xFF) * 70.0f * temp_f31;
var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sin(temp_f30 * M_PI / 180.0);
var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cos(temp_f30 * M_PI / 180.0);
var_r31->unk34.y = lbl_1_bss_7F0->trans.y + temp_f31 * (-30.0f + 0.003921569f * (frand() & 0xFF) * 60.0f);
var_r31->unk08.x = 0.5f + 0.003921569f * (frand() & 0xFF) * 3.0f;
var_r31->unk08.y = 0.3f + 0.003921569f * (frand() & 0xFF) * 2.0f;
var_r31->unk40.a = 0xB4;
var_r31->unk2C = 15.0f * temp_f31;
}
}
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
if (var_r31->unk2C != 0.0f) {
var_r31->unk34.y -= var_r31->unk08.x;
var_r31->unk2C -= var_r31->unk08.y;
if (var_r31->unk2C <= 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}
static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix) {
HsfanimStruct01 *var_r31;
float temp_f29;
float temp_f30;
float temp_f31;
s32 var_r28;
s32 var_r29;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
particle->unk_00 = 0;
}
if (particle->unk_00 == 0) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
temp_f30 = 0.003921569f * (frand() & 0xFF) * 360.0f;
temp_f31 = 0.003921569f * (frand() & 0xFF) * 50.0f;
var_r31->unk08.x = temp_f31 * cos(temp_f30 * M_PI / 180.0);
var_r31->unk08.y = 2.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
var_r31->unk08.z = temp_f31 * sin(temp_f30 * M_PI / 180.0);
temp_f29 = 60.0f + 20.0f * (frand() & 0xFF) * 0.003921569f;
temp_f31 = 4.0f + 5.0f * (frand() & 0xFF) * 0.003921569f;
var_r31->unk14.x = temp_f31 * sin(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
var_r31->unk14.y = temp_f31 * sin(temp_f29 * M_PI / 180.0);
var_r31->unk14.z = temp_f31 * cos(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0);
var_r31->unk20 = 1.0f;
var_r31->unk40.a = 0xB4;
var_r31->unk2C = 9.0f + 0.003921569f * (frand() & 0xFF) * 4.0f;
}
particle->unk_00 = 1;
}
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (var_r31->unk2C != 0.0f) {
var_r31->unk34.x = var_r31->unk08.x + var_r31->unk14.x * var_r31->unk20;
var_r31->unk34.z = var_r31->unk08.z + var_r31->unk14.z * var_r31->unk20;
var_r31->unk34.y = var_r31->unk08.y + var_r31->unk14.y * var_r31->unk20 - 0.2f * var_r31->unk20 * var_r31->unk20;
var_r31->unk2C -= 0.25f;
var_r31->unk20 += 1.0f;
if (var_r31->unk2C <= 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}

24
src/REL/w02Dll/gamble.c Normal file
View file

@ -0,0 +1,24 @@
#include "REL/w02Dll.h"
Process* lbl_1_bss_50;
s32 lbl_1_bss_54;
void fn_1_2D04();
void fn_1_3938(void) {
lbl_1_bss_50 = NULL;
}
void fn_1_394C(s32 arg0) {
s32 currPlayer;
currPlayer = GWSystem.player_curr;
lbl_1_bss_54 = arg0;
lbl_1_bss_50 = HuPrcChildCreate(fn_1_2D04, 0x2003U, 0x2000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_50, fn_1_3938);
while (lbl_1_bss_50) {
HuPrcVSleep();
}
}

457
src/REL/w02Dll/main.c Normal file
View file

@ -0,0 +1,457 @@
#include "REL/w02Dll.h"
// Temporary defines
#define BOARD_ITEM_MINI 0x0
#define BOARD_ITEM_MEGA 0x1
#define BOARD_ITEM_SUPERMINI 0x2
#define BOARD_ITEM_SUPERMEGA 0x3
#define BOARD_ITEM_HAMMER 0x4
#define BOARD_ITEM_PIPE 0x5
#define BOARD_ITEM_CARD 0x6
#define BOARD_ITEM_SPARKY 0x7
#define BOARD_ITEM_GADDLIGHT 0x8
#define BOARD_ITEM_CHOMPCALL 0x9
#define BOARD_ITEM_SUIT 0xA
#define BOARD_ITEM_BOO 0xB
#define BOARD_ITEM_LAMP 0xC
#define BOARD_ITEM_BAG 0xD
#define BOARD_ITEM_MAX 0xE
#define BOARD_ITEM_NONE -1
/* BSS */
s16 lbl_1_bss_30[0x10]; // Model List
s16 lbl_1_bss_2E;
s16 lbl_1_bss_2C;
Point3d lbl_1_bss_20;
Point3d lbl_1_bss_14;
s32* lbl_1_bss_10;
s16 lbl_1_bss_8[4]; // Item List
Process* lbl_1_bss_4;
u8* lbl_1_bss_0;
/* DATA */
static BoardMapObject lbl_1_data_0[0x10] = {
{{2550.0f, 0.0f, -450.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000C)},
{{-3150.0f, 0.0f, -1350.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000D)},
{{-3150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000E)},
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0008)},
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0009)},
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000A)},
{{-150.0f, 0.0f, 900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x000B)},
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0011)},
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0012)},
{{1350.0f, 0.0f, -300.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0015)},
{{-300.0f, 0.0f, -900.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W02, 0x0016)},
{{1175.0f, 0.0f, -125.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
{{-525.0f, 0.0f, -825.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
{{-2225.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
{{1925.0f, 0.0f, -2100.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)},
{{150.0f, 0.0f, 1650.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x0005)}
};
// Special Models
s16 lbl_1_data_280 = -1;
s16 lbl_1_data_282 = -1;
s16 lbl_1_data_284 = -1;
s16 lbl_1_data_286 = -1;
s32 lbl_1_data_288[] = {
DATA_MAKE_NUM(DATADIR_W02, 0x0004),
DATA_NUM_LISTEND
};
s32 lbl_1_data_290[] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0009),
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0006),
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0007),
DATA_MAKE_NUM(DATADIR_BGUEST, 0x0008),
DATA_NUM_LISTEND,
0x00000000 // Padding
};
/* Functions */
//Actual externs
extern void BoardMusStart(s32, s32, s32, s32);
extern void BoardAudSeqPause(s32, s32, s32);
s8 BoardComPreferItemCheck(s32, s8, s8, s8);
extern void BoardComKeySetLeft();
extern void BoardComKeySetRight();
extern void CharModelDataClose(s16);
extern u32 frand();
extern u32 frandmod(u32);
// function is probably global. only inlined in rels?
inline s32 get_current_board(void) {
return GWSystem.board;
}
void BoardCreate(void) {
s32 i, boardData;
BoardMapObject* modelTransform;
boardData = get_current_board();
lbl_1_bss_0 = GWSystem.board_data;
BoardSpaceInit(0x760000);
lbl_1_data_280 = BoardModelCreate(0x760001, NULL, 0);
fn_8006DDE8(lbl_1_data_280, -1.0f);
BoardModelPosSet(lbl_1_data_280, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_280, 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_data_280, 0.1f);
lbl_1_data_282 = BoardModelCreate(0x760002, NULL, 0);
fn_8006DDE8(lbl_1_data_282, -1.0f);
BoardModelPosSet(lbl_1_data_282, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_282, 0, 0x40000001);
lbl_1_data_284 = BoardModelCreate(0x760003, lbl_1_data_288, 0);
BoardModelPosSet(lbl_1_data_284, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_284, 1, 0x40000001);
lbl_1_data_286 = BoardModelCreate(0x20005, lbl_1_data_290, 0);
BoardModelMotionStart(lbl_1_data_286, 1, 0x40000001);
BoardLightHookSet(fn_1_72C, fn_1_770);
for(i = 0; i < 0x10; i++) {
modelTransform = &lbl_1_data_0[i];
if (modelTransform->data_num != -1) {
if ((i == 0xB) || (i == 0xC) || (i == 0xD) || (i == 0xE) || (i == 0xF)) {
lbl_1_bss_10 = lbl_1_data_290;
} else {
lbl_1_bss_10 = NULL;
}
lbl_1_bss_30[i] = BoardModelCreate(modelTransform->data_num, lbl_1_bss_10, 0);
BoardModelPosSetV(lbl_1_bss_30[i], &modelTransform->pos);
BoardModelRotSetV(lbl_1_bss_30[i], &modelTransform->rot);
BoardModelScaleSetV(lbl_1_bss_30[i], &modelTransform->scale);
BoardModelVisibilitySet(lbl_1_bss_30[i], 1);
if (lbl_1_bss_10 != NULL) {
BoardModelMotionStart(lbl_1_bss_30[i], 1, 0x40000001);
}
}
}
BoardModelAttrSet(lbl_1_bss_30[0], 0x40000002);
BoardModelAttrSet(lbl_1_bss_30[1], 0x40000002);
BoardModelAttrSet(lbl_1_bss_30[2], 0x40000002);
fn_1_BC1C();
fn_1_92C();
BoardModelPosGet(lbl_1_bss_30[13], &lbl_1_bss_20);
BoardModelPosGet(lbl_1_bss_30[14], &lbl_1_bss_14);
lbl_1_bss_2E = BoardModelCreate(0x760010, NULL, 1);
lbl_1_bss_2C = BoardModelCreate(0x760010, NULL, 1);
fn_1_9250();
BoardSpaceWalkEventFuncSet(fn_1_800);
BoardSpaceWalkMiniEventFuncSet(fn_1_1128);
BoardSpaceLandEventFuncSet(fn_1_774);
BoardStarHostSet(lbl_1_data_284);
BoardBooHouseHostSet(lbl_1_data_286);
BoardLotteryHostSet(lbl_1_data_286);
BoardShopHostSet(lbl_1_data_286);
BoardJunctionMaskSet(0xE);
BoardJunctionMaskSet(0x30);
}
void BoardDestroy(void) {
/* Kill Model List */
s32 i;
for (i = 0; i < 0x10; i++) {
if (lbl_1_bss_30[i] != 0) {
BoardModelKill(lbl_1_bss_30[i]);
lbl_1_bss_30[i] = 0;
}
}
/* Kill Special Models */
if (lbl_1_data_286 != -1) {
BoardModelKill(lbl_1_data_286);
lbl_1_data_286 = -1;
}
if (lbl_1_data_284 != -1) {
BoardModelKill(lbl_1_data_284);
lbl_1_data_284 = -1;
}
if (lbl_1_data_280 != -1) {
BoardModelKill(lbl_1_data_280);
lbl_1_data_280 = -1;
}
if (lbl_1_data_282 != -1) {
BoardModelKill(lbl_1_data_282);
lbl_1_data_282 = -1;
}
BoardSpaceDestroy();
}
void fn_1_72C(void) {
s16 var = BoardModelIDGet(lbl_1_data_280);
Hu3DModelLightInfoSet(var, 1);
}
void fn_1_770(void) {
}
/* Decrement current space's [UNKNOWN] flag */
s32 fn_1_774(void) {
u32 unkFlag;
u32 currPlayer;
u32 currSpace;
u32 spaceFlags;
currPlayer = GWSystem.player_curr;
currSpace = GWPlayer[currPlayer].space_curr;
spaceFlags = BoardSpaceFlagGet(0, currSpace);
//temp_r31 = (temp_r)
unkFlag = (spaceFlags & 0x1C0) >> 6;
if (unkFlag != 0) {
unkFlag--;
fn_1_93C8(unkFlag);
}
}
/* Check if can iteract with board object? */
s32 fn_1_800(void) {
BoardSpace* currSpace;
s32 currPlayer;
s32 var_r29;
currPlayer = GWSystem.player_curr;
currSpace = BoardSpaceGet(0, GWPlayer[currPlayer].space_curr);
if ((currSpace->flag & 0x30) != 0) {
// If mega mushroom state return
if (BoardPlayerSizeGet(currPlayer) == 2) {
return 0;
}
// If using the bowser suit return
if (GWPlayer[currPlayer].bowser_suit) {
return 0;
}
if ((currSpace->flag & 0x20) != 0 && (currSpace->flag & 0x10) != 0) {
var_r29 = 2;
} else if ((currSpace->flag & 0x20) != 0) {
var_r29 = 1;
} else {
var_r29 = 0;
}
fn_1_394C(var_r29);
return 1;
}
if ((currSpace->flag & 1) != 0) {
fn_1_E41C();
return 1;
}
return 0;
}
void fn_1_92C(void) {
fn_1_39F4();
fn_1_5CF8();
}
void fn_1_950(void) {
}
void fn_1_954(void) {
HuPrcSleep(0x3C);
BoardMusStart(1, 0x12, 0x7F, 0);
HuPrcEnd();
}
void fn_1_990(void) {
Vec rotation;
Vec offset;
Vec boardSpacePos;
s32 textChoice;
s32 currPlayer;
s32 currSpace;
s32 spaceLinkFlag;
currPlayer = GWSystem.player_curr;
BoardWinCreateChoice(2, 0x130011U, 4, 0);
if (GWPlayer[currPlayer].com) {
if ((s32) (frand() & 1) != 0) {
BoardComKeySetLeft();
} else {
BoardComKeySetRight();
}
}
BoardWinWait();
BoardWinKill();
textChoice = BoardWinChoiceGet();
if ((textChoice == 1) || (textChoice == -1)) {
BoardWinCreate(2, 0x130012U, 4);
BoardWinWait();
BoardWinKill();
BoardMGExit();
while (BoardMGDoneFlagGet() != 1) {
HuPrcVSleep();
}
BoardMGDoneFlagSet(0);
return;
}
BoardAudSeqPause(0, 1, 0x3E8);
HuPrcChildCreate(fn_1_954, 0x2003U, 0x1000U, 0, boardMainProc);
rotation.x = 0.0f;
rotation.y = rotation.z = 0.0f;
offset.y = 135.0f;
offset.x = offset.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_30[8], &rotation, &offset, 1200.0f, 25.0f, 0x15);
currSpace = GWPlayer[currPlayer].space_curr;
spaceLinkFlag = BoardSpaceLinkFlagSearch(0, currSpace, 0x02000000U);
BoardSpacePosGet(0, spaceLinkFlag, &boardSpacePos);
BoardPlayerMoveBetween(currPlayer, currSpace, spaceLinkFlag);
while (GWPlayer[currPlayer].moving) {
HuPrcVSleep();
}
BoardPlayerMotionStart(currPlayer, 1, 0x40000001);
fn_1_3BF4();
while (GWPlayer[currPlayer].moving) {
HuPrcVSleep();
}
while (BoardEventFlagGet() != 0) {
HuPrcVSleep();
}
while (GWPlayer[currPlayer].moving) {
HuPrcVSleep();
}
BoardPlayerMotionStart(currPlayer, 1, 0x40000001);
}
void fn_1_C50(void) {
Vec rotation;
Vec offset;
s32 currSpace;
s32 spaceLinkFlags;
s32 textChoice;
s32 currPlayer;
s32 i, j;
currPlayer = GWSystem.player_curr;
if (BoardPlayerItemCount((s32) currPlayer) == 3) {
BoardWinCreate(2, 0x13001A, 4);
BoardWinWait();
BoardWinKill();
HuPrcEnd();
}
BoardCameraTargetModelSet(lbl_1_bss_30[10]);
BoardCameraMotionWait();
/* Generate three random unique items where
the first item is MINI_MUSHROOM and the
other two are not BOWSER_SUIT or ITEM_BAG.
*/
lbl_1_bss_8[0] = BOARD_ITEM_MINI;
for (i = 1; i < 3;) {
lbl_1_bss_8[i] = frandmod(BOARD_ITEM_MAX);
if (lbl_1_bss_8[i] != BOARD_ITEM_SUIT && lbl_1_bss_8[i] != BOARD_ITEM_BAG) {
for (j = 0; j < i; j++) {
if (lbl_1_bss_8[i] == lbl_1_bss_8[j]) {
lbl_1_bss_8[i] = BOARD_ITEM_NONE;
}
}
if (lbl_1_bss_8[i] != BOARD_ITEM_NONE) {
i++;
}
}
}
fn_1_79BC(lbl_1_bss_8);
HuAudFXPlay(0x43);
BoardWinCreateChoice(2, 0x130016, 4, 0);
if (GWPlayer[currPlayer].com) {
if (BoardComPreferItemCheck(currPlayer, lbl_1_bss_8[0], lbl_1_bss_8[1], lbl_1_bss_8[2]) != -1) {
BoardComKeySetLeft();
} else {
BoardComKeySetRight();
}
}
BoardWinWait();
BoardWinKill();
textChoice = BoardWinChoiceGet();
if ((textChoice == 1) || (textChoice == -1)) {
HuAudFXPlay(0x44);
BoardWinCreate(2, 0x130017, 4);
BoardWinWait();
BoardWinKill();
BoardMGExit();
fn_1_8244(1);
while (BoardMGDoneFlagGet() != 1) {
HuPrcVSleep();
}
BoardMGDoneFlagSet(0);
fn_1_5F90();
HuPrcEnd();
}
rotation.x = -30.0f;
rotation.y = rotation.z = 0.0f;
offset.x = 0.0f;
offset.y = 0.0f;
offset.z = -250.0f;
BoardCameraMotionStartEx(lbl_1_bss_30[10], (Point3d* ) &rotation, (Point3d* ) &offset, 1500.0f, 25.0f, 0x15);
currSpace = GWPlayer[currPlayer].space_curr;
spaceLinkFlags = BoardSpaceLinkFlagSearch(0, currSpace, 0x02000000U);
BoardPlayerMoveBetween(currPlayer, currSpace, spaceLinkFlags);
while (GWPlayer[currPlayer].moving) {
HuPrcVSleep();
}
BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001);
BoardPlayerMotBlendSet(currPlayer, 0xB4, 0xF);
while (BoardPlayerMotBlendCheck(currPlayer) == 0) {
HuPrcVSleep();
}
BoardCameraMotionWait();
fn_1_5D28();
while (BoardEventFlagGet() != 0) {
HuPrcVSleep();
}
fn_1_8244(0);
while (GWPlayer[currPlayer].moving) {
HuPrcVSleep();
}
fn_1_5F90();
BoardPlayerMotionStart((s32) currPlayer, 1, 0x40000001);
HuPrcEnd();
}
void fn_1_1070(void) {
BoardWinKill();
CharModelDataClose(-1);
lbl_1_bss_4 = 0;
}
void fn_1_10A8(void) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070);
while (lbl_1_bss_4) {
HuPrcVSleep();
}
}
s32 fn_1_1128(void) {
u32 spaceFlags;
s16 currSpace;
currSpace = GWPlayer[GWSystem.player_curr].space_curr;
spaceFlags = BoardSpaceFlagGet(0, currSpace) & 0x600000;
BoardDiceDigit2DShowSet(0);
if (spaceFlags & 0x200000) {
fn_1_990();
} else if (spaceFlags & 0x400000) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_C50, 0x2003U, 0x2000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_1070);
while (lbl_1_bss_4) {
HuPrcVSleep();
}
}
BoardDiceDigit2DShowSet(1);
}
void fn_1_121C(u32 mesg) {
BoardWinCreate(2, mesg, 4);
BoardWinWait();
BoardWinKill();
}
f32 const padMain = 0.0f;

584
src/REL/w02Dll/roulette.c Normal file
View file

@ -0,0 +1,584 @@
#include "REL/w02Dll.h"
#include "game/audio.h"
#define ROULETTE_CHOICE_YES 0
#define ROULETTE_CHOICE_NO 1
#define ROULETTE_CHOICE_MAP 2
#define BRIBE_CHOICE_20 0
#define BRIBE_CHOICE_10 1
#define BRIBE_CHOICE_5 2
#define BRIBE_CHOICE_NVM 3
#define BRIBE_CHOICE_INVALID -1
/* RODATA */
extern f32 lbl_1_rodata_408;
extern f32 lbl_1_rodata_40C;
extern f32 lbl_1_rodata_410;
extern f32 lbl_1_rodata_414;
extern f32 lbl_1_rodata_418;
extern f32 lbl_1_rodata_41C;
extern f32 lbl_1_rodata_420;
extern f32 lbl_1_rodata_424;
extern f32 lbl_1_rodata_428;
extern f32 lbl_1_rodata_42C;
extern f32 lbl_1_rodata_430;
extern f32 lbl_1_rodata_434;
extern f32 lbl_1_rodata_438;
extern f32 lbl_1_rodata_43C;
extern f32 lbl_1_rodata_440;
extern f32 lbl_1_rodata_444;
extern f32 lbl_1_rodata_448;
extern f64 lbl_1_rodata_450;
extern f64 lbl_1_rodata_458;
extern f32 lbl_1_rodata_460;
extern f32 lbl_1_rodata_464;
extern f32 lbl_1_rodata_468;
extern f32 lbl_1_rodata_46C;
extern f32 lbl_1_rodata_470;
extern f32 lbl_1_rodata_474;
extern f32 lbl_1_rodata_478;
extern f32 lbl_1_rodata_47C;
extern f64 lbl_1_rodata_480;
extern f64 lbl_1_rodata_488;
extern f32 lbl_1_rodata_490;
extern f32 lbl_1_rodata_494;
extern f64 lbl_1_rodata_498;
extern f64 lbl_1_rodata_4A0;
extern f32 lbl_1_rodata_4A8;
extern f32 lbl_1_rodata_4AC;
extern f32 lbl_1_rodata_4B0;
extern f32 lbl_1_rodata_4B8;
extern f32 lbl_1_rodata_4C0;
extern f32 lbl_1_rodata_4C4;
extern f32 lbl_1_rodata_4C8;
extern f32 lbl_1_rodata_4CC;
extern f64 lbl_1_rodata_4D0;
extern f32 lbl_1_rodata_4D8;
extern f32 lbl_1_rodata_4DC;
/* DATA */
extern s32 lbl_1_data_4D0[];
/* BSS */
extern s32 lbl_1_bss_38C;
extern s16 lbl_1_bss_388;
extern s32 lbl_1_bss_384;
extern f32 lbl_1_bss_380;
//Function Externs
extern s16 BoardBowserSuitModelGet();
extern s16 BoardBowserSuitPlayerModelGet();
extern void BoardComKeySetDown();
extern void BoardComKeySetUp();
extern void omVibrate(s16 player, s16 duration, s16 off, s16 on);
extern u32 frand();
//Local Functions
s32 fn_1_E2AC(void);
void fn_1_E310(f32);
// Unknown Structures
typedef struct UnkPoint {
f32 unk00;
Vec point;
} UnkPoint;
/* FUNCTIONS */
void fn_1_BC1C(void) {
Point3d sp8;
BoardModelPosGet(lbl_1_bss_30[15], &sp8);
sp8.z -= lbl_1_rodata_408;
sp8.y += lbl_1_rodata_40C;
BoardModelPosSetV(lbl_1_bss_30[6], &sp8);
BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002);
BoardModelMotionTimeSet(lbl_1_bss_30[5], lbl_1_rodata_410);
BoardModelRotGet(lbl_1_bss_30[15], &sp8);
sp8.y = lbl_1_rodata_410;
BoardModelRotSetV(lbl_1_bss_30[15], &sp8);
}
void fn_1_BCFC(void) {
s32 spaceLinkFlags;
s32 temp_r30;
s32 temp_r29;
BoardDiceDigit2DShowSet(0);
spaceLinkFlags = BoardSpaceLinkFlagSearch(0, (s32) GWPlayer[lbl_1_bss_388].space_curr, 2U);
BoardPlayerMoveToAsync(lbl_1_bss_388, spaceLinkFlags);
while (GWPlayer[lbl_1_bss_388].moving) {
HuPrcVSleep();
}
BoardRotateDiceNumbers((s32) lbl_1_bss_388);
BoardCameraViewSet(2);
BoardCameraMotionWait();
BoardPlayerMotBlendSet((s32) lbl_1_bss_388, 0x5A, 0xF);
while (BoardPlayerMotBlendCheck((s32) lbl_1_bss_388) == 0) {
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_30[15], lbl_1_rodata_414);
fn_1_121C(0x130000);
HuAudFXPlay(0x44);
temp_r29 = fn_1_BE88();
BoardStatusShowSetAll(0);
fn_1_121C(0x130001);
temp_r30 = fn_1_C108(temp_r29);
fn_1_CD04(temp_r30);
BoardCameraViewSet(1);
BoardStatusShowSetAll(1);
BoardCameraMotionWait();
BoardDiceDigit2DShowSet(1);
HuPrcKill(NULL);
while(TRUE) {
HuPrcVSleep();
}
}
s32 fn_1_BE74(void) {
lbl_1_bss_38C = 0;
}
s32 fn_1_BE88(void) {
s32 coinAmount;
s32 var_r30;
s16 playerCoinRegion;
s32 bribeChoice;
s32 i;
s32 rouletteChoice;
s32 mesg;
var_r30 = -1;
coinAmount = BoardPlayerCoinsGet((s32) lbl_1_bss_388);
if (coinAmount < 5) {
return var_r30;
}
fn_1_121C(0x130002);
do {
BoardWinCreateChoice(2, 0x13001DU, 4, 0);
/* COM has 50% to bribe goomba */
if (GWPlayer[lbl_1_bss_388].com) {
if (frand() & 1) {
BoardComKeySetRight();
} else {
BoardComKeySetLeft();
}
}
BoardWinWait();
BoardWinKill();
rouletteChoice = BoardWinChoiceGet();
// If chose to play roulette
if (rouletteChoice == ROULETTE_CHOICE_YES) {
BoardWinCreateChoice(1, 0x130003U, 4, 0);
playerCoinRegion = 3;
if (coinAmount < 0x14) {
BoardWinChoiceDisable(0);
playerCoinRegion--;
}
if (coinAmount < 0xA) {
BoardWinChoiceDisable(1);
playerCoinRegion--;
}
/* COM always bribes max unless it has 20 or
more coins. Then 50% max, 50% 10 coin bribe. */
if (GWPlayer[lbl_1_bss_388].com) {
if (playerCoinRegion < 2) {
BoardComKeySetUp();
} else if (frand() & 1) {
BoardComKeySetUp();
} else {
BoardComKeySetDown();
}
}
BoardWinWait();
BoardWinKill();
bribeChoice = BoardWinChoiceGet();
if (bribeChoice == BRIBE_CHOICE_INVALID ||
bribeChoice == BRIBE_CHOICE_NVM) {
continue;
}
// Coin amount is now the bribe amount in coins
switch (bribeChoice) {
case BRIBE_CHOICE_20:
mesg = 0x130004;
coinAmount = 0x14;
var_r30 = 0x5A; // 90%
break;
case BRIBE_CHOICE_10:
mesg = 0x130005;
coinAmount = 0xA;
var_r30 = 0x3C; // 60%
break;
case BRIBE_CHOICE_5:
mesg = 0x130006;
coinAmount = 5;
var_r30 = 0x1E; // 30%
break;
}
fn_1_121C(mesg);
for (i = 0; i < coinAmount; i++) {
BoardPlayerCoinsAdd(lbl_1_bss_388, -1);
HuAudFXPlay(0xE);
HuPrcSleep(6);
}
HuAudFXPlay(0xF);
// If chose to view map
} else if (rouletteChoice == ROULETTE_CHOICE_MAP) {
BoardViewMapExec(lbl_1_bss_388);
}
} while (rouletteChoice == ROULETTE_CHOICE_MAP); // While viewing map
if (var_r30 == -1) {
fn_1_121C(0x130007);
}
return var_r30;
}
// https://decomp.me/scratch/rctvo
s32 fn_1_C108(s32 arg0) {
Vec sp34;
Vec sp28;
Vec sp1C;
UnkPoint spC;
f32 var_f27;
f32 var_f26;
f32 var_f25;
f32 var_f28;
f32 var_f29;
f64 var_f30;
f32 var_f31;
s32 var_r26;
s32 var_r27;
s16 var_r28;
s32 var_r30;
s32 var_r29;
s32 i;
if ((s32) frandmod(0x64U) < arg0) {
s32 temp_r25 = fn_1_E2AC();
var_r27 = 4;
var_r29 = frandmod(3U);
if ((s32) frandmod(0x64U) < 0x14) {
var_r29 += 1;
}
var_r29 = var_r29 + (3 - temp_r25) * 4;
} else {
var_r29 = frandmod(0x10U);
var_r27 = frandmod(4U);
}
BoardModelPosGet(lbl_1_bss_30[4], &spC.point);
BoardCameraViewSet(1);
BoardCameraMotionWait();
var_r26 = BoardSpaceFlagSearch(0, 0x800U);
BoardCameraTargetSpaceSet(var_r26);
BoardPlayerMotBlendSet(lbl_1_bss_388, 0xB4, 0xF);
BoardModelRotGet(lbl_1_bss_30[15], &sp34);
for (i = 0; i < 0xF; i++) {
sp34.y -= lbl_1_rodata_418;
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
HuPrcVSleep();
}
sp34.y = lbl_1_rodata_41C;
BoardModelRotSetV(lbl_1_bss_30[15], &sp34);
BoardCameraMotionWait();
lbl_1_bss_384 = HuAudFXPlay(0x41D);
var_r28 = -0x1FFF;
var_f29 = lbl_1_rodata_410;
for (i = 0; i < 0x3C; i++) {
var_f29 -= lbl_1_rodata_420;
fn_1_E310(var_f29);
var_r28 = (s16) ((f32) (s16) var_r28 + lbl_1_rodata_424);
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
HuPrcVSleep();
}
var_f29 = lbl_1_rodata_428;
HuAudFXPitchSet(lbl_1_bss_384, 0);
BoardModelMotionStart(lbl_1_bss_30[15], 2, 0x40000001);
BoardModelPosGet(lbl_1_bss_30[15], &sp34);
for (i = 0; i < 0x1E; i++) {
sp34.z += lbl_1_rodata_42C;
BoardModelPosSetV(lbl_1_bss_30[15], &sp34);
fn_1_E310(var_f29);
HuPrcVSleep();
}
BoardModelMotionStart(lbl_1_bss_30[15], 1, 0x40000001);
while (var_r29) {
fn_1_E310(var_f29);
HuPrcVSleep();
var_r29 -= 1;
}
BoardModelMotionStart(lbl_1_bss_30[15], 3, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_430);
for (i = 0; i < 0xA; i++) {
sp34.z -= lbl_1_rodata_434;
BoardModelPosSetV(lbl_1_bss_30[15], &sp34);
fn_1_E310(var_f29);
HuPrcVSleep();
}
BoardModelMotionStart(lbl_1_bss_30[15], 1, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_438);
HuAudFXPlay(0x41F);
HuAudFXPlay(0x42D);
omVibrate(lbl_1_bss_388, 0xC, 6, 6);
var_f31 = lbl_1_rodata_410;
var_f27 = lbl_1_rodata_43C;
sp1C.x = lbl_1_rodata_410;
sp1C.z = lbl_1_rodata_440;
// Roulette motion and ball ?
while(TRUE) {
sp1C.y = var_f27 - (lbl_1_rodata_444 * (lbl_1_rodata_448 * (var_f31 * var_f31)));
var_f31 += lbl_1_rodata_438;
BoardModelPosGet(lbl_1_bss_30[6], &sp28);
PSVECAdd(&sp28, &sp1C, &sp28);
var_f28 = (sp28.x - spC.point.x) * (sp28.x - spC.point.x) + ((sp28.z - spC.point.z) * (sp28.z - spC.point.z));
if (var_f28 > lbl_1_rodata_410) {
var_f30 = __frsqrte(var_f28);
var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30)));
var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30)));
var_f30 = (lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - (var_f28 * (var_f30 * var_f30))));
spC.unk00 = (var_f28 * var_f30);
var_f26 = spC.unk00;
} else {
var_f26 = var_f28;
}
var_f25 = var_f26;
if (var_f25 >= lbl_1_rodata_460) {
if (sp28.y <= (lbl_1_rodata_464 + spC.point.y)) {
PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C);
PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C);
sp1C.y = lbl_1_rodata_410;
PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, lbl_1_rodata_468);
PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C);
sp28.x = sp1C.x;
sp28.z = sp1C.z;
sp1C.x = lbl_1_rodata_46C;
sp1C.z = lbl_1_rodata_470;
}
}
if (sp28.y < spC.point.y) {
sp28.y = spC.point.y;
if (var_r27 >= 3) {
break;
}
//var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand()));
var_f27 = lbl_1_rodata_418 + (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand()));
var_f31 = lbl_1_rodata_438;
var_r27 += 1;
//var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
sp1C.x = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
sp1C.z = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand()));
HuAudFXPlay(0x41E);
}
BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28);
fn_1_E310(var_f29);
HuPrcVSleep();
}
HuAudFXPlay(0x41E);
PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C);
PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C);
var_f31 = (f32) (lbl_1_rodata_480 * (atan2((f64) -sp1C.z, (f64) sp1C.x) / lbl_1_rodata_488));
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
var_f31 = var_f31 - sp34.y;
if (var_f31 < lbl_1_rodata_410) {
var_f31 += lbl_1_rodata_490;
}
var_r30 = (s32) (var_f31 / lbl_1_rodata_494);
if (fmod(var_f31, lbl_1_rodata_498) > lbl_1_rodata_4A0) {
var_r30 += 1;
}
if (var_r30 >= 0x10) {
var_r30 -= 0x10;
}
sp1C.y = lbl_1_rodata_410;
while(TRUE) {
fn_1_E310(var_f29);
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
var_f31 = (lbl_1_rodata_494 * var_r30) + sp34.y; // TODO: Update rodata for asm change
sp1C.x= cos((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480);
sp1C.z = -sin((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480);
PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468);
PSVECAdd(&sp1C, &spC.point, &sp1C);
sp28.x = sp1C.x;
sp28.z = sp1C.z;
BoardModelPosSetV(lbl_1_bss_30[6], &sp28);
if (sp34.y >= lbl_1_rodata_4A8 &&
sp34.y < lbl_1_rodata_4AC) {
break;
}
HuPrcVSleep();
}
for (i = 0; i < 0x3C; i++) {
var_f29 += lbl_1_rodata_420;
fn_1_E310(var_f29);
BoardModelRotGet(lbl_1_bss_30[4], &sp34);
var_f31 = (lbl_1_rodata_494 * (f32) var_r30) + sp34.y; // TODO: Update rodata for asm change
sp1C.x = (f32) cos((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480);
sp1C.z = (f32) -sin((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480);
PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468);
PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C);
sp28.x = sp1C.x;
sp28.z = sp1C.z;
BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28);
var_r28 = var_r28 + lbl_1_rodata_4B0; // TODO: Weird extra rodata
HuAudFXPitchSet(lbl_1_bss_384, var_r28);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_30[4], lbl_1_rodata_410);
HuAudFXStop(lbl_1_bss_384);
return lbl_1_data_4D0[var_r30];
}
// Place player on space post roulette?
void fn_1_CD04(s32 arg0) {
Vec sp24;
Vec sp18;
Vec spC;
f32 temp_f30;
f32 temp_f29;
f32 var_f31;
s16 var_r25;
u32 var_r26;
s32 var_r27;
s32 var_r29;
s32 var_r28;
s32 var_r30;
BoardSpace* temp_r31;
if (arg0 < 0) {
fn_1_D3AC();
arg0 = fn_1_D8C4();
}
temp_r31 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800));
for (var_r28 = 0; var_r28 < temp_r31->link_cnt; var_r28++) {
var_r29 = temp_r31->link[var_r28];
var_r26 = ( (BoardSpaceFlagGet(0, var_r29) & 0xE) >> 1U);
if ( var_r26 == (arg0 + 2)) {
break;
}
}
BoardSpacePosGet(0, var_r29, &sp24);
BoardModelAttrReset(lbl_1_bss_30[5], 0x40000002);
HuAudFXPlay(0x420);
if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) {
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C0) {
HuPrcVSleep();
}
BoardPlayerScaleGet(lbl_1_bss_388, &spC);
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) {
spC.x -= lbl_1_rodata_448;
spC.y -= lbl_1_rodata_448;
//temp_f1 = spC.z;
spC.z = spC.z - lbl_1_rodata_448;
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
HuPrcVSleep();
}
spC.x = spC.y = spC.z = lbl_1_rodata_4C8;
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
}
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) {
HuPrcVSleep();
}
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
BoardModelVisibilitySet(BoardBowserSuitModelGet(), 0);
BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(), 0);
} else {
BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 0);
}
HuAudFXPlay(0x421);
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4CC) {
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_bss_30[5], &sp18);
temp_f30 = (f32) ((lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488)) / lbl_1_rodata_4D0);
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_408) {
BoardModelRotYSet(lbl_1_bss_30[5], temp_f30 + BoardModelRotYGet(lbl_1_bss_30[5]));
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_30[5], (f32) (lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488)));
omVibrate(lbl_1_bss_388, 0xC, 4, 2);
if (GWPlayer[lbl_1_bss_388].bowser_suit) {
BoardModelVisibilitySet(BoardBowserSuitModelGet(),1);
BoardModelVisibilitySet(BoardBowserSuitPlayerModelGet(),1);
} else {
BoardModelVisibilitySet(BoardPlayerModelGet(lbl_1_bss_388), 1);
}
GWPlayer[lbl_1_bss_388].space_curr =(s16) var_r29;
BoardPlayerPosSetV(lbl_1_bss_388, &sp24);
temp_r31 = BoardSpaceGet(0, var_r29);
for ( var_r30 = 0; var_r30 < (s32) temp_r31->link_cnt; var_r30++) {
if (BoardSpaceTypeGet(0, temp_r31->link[var_r30])) {
break;
}
}
if (var_r30 != (s32) temp_r31->link_cnt) {
BoardSpacePosGet(0, temp_r31->link[var_r30], &sp18);
BoardPlayerRotYSet(lbl_1_bss_388, (f32) (lbl_1_rodata_480 * (atan2(sp18.x - sp24.x, sp18.z - sp24.z) / lbl_1_rodata_488)));
}
if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) {
var_f31 = spC.x;
while (var_f31 < lbl_1_rodata_4DC) {
var_f31 += lbl_1_rodata_4D8;
if (var_f31 > lbl_1_rodata_4DC) {
var_f31 = lbl_1_rodata_4DC;
}
spC.z = var_f31;
spC.y = var_f31;
spC.x = var_f31;
BoardPlayerScaleSetV(lbl_1_bss_388, &spC);
HuPrcVSleep();
}
}
HuAudFXPlay(0x42A);
while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < BoardModelMotionMaxTimeGet(lbl_1_bss_30[5])) {
HuPrcVSleep();
}
HuPrcCreate(&fn_1_DF48, 0x2004, 0x1000, 0);
}
/* Rotate (yaw) of model 4 */
void fn_1_E310(f32 degrees) {
Point3d spC;
lbl_1_bss_380 += degrees;
if (lbl_1_bss_380 >= lbl_1_rodata_490) {
lbl_1_bss_380 -= lbl_1_rodata_490;
}
if (lbl_1_bss_380 < lbl_1_rodata_410) {
lbl_1_bss_380 += lbl_1_rodata_490;
}
BoardModelRotGet(lbl_1_bss_30[4], &spC);
spC.y = lbl_1_bss_380;
BoardModelRotSetV(lbl_1_bss_30[4], &spC);
}

File diff suppressed because it is too large Load diff

View file

@ -16,41 +16,45 @@
#include "game/board/star.h"
#include "game/object.h"
#include "game/board/player.h"
#include "game/board/map_object.h"
#include "math.h"
#include "game/hsfman.h"
void fn_1_740(void);
//function signatures
void fn_1_E0(void);
s32 fn_1_2930(s32 arg0);
void fn_1_884(void);
void fn_1_740(void);
void fn_1_8F0(void);
s32 fn_1_910(void);
s32 fn_1_A74(void);
void fn_1_AF8(void);
void fn_1_DEC(void);
void fn_1_10B0(void);
s32 fn_1_12C8(void);
s32 fn_8006DDE8(s16, f32);
void fn_1_10E4(omObjData* arg0);
s32 fn_1_12C8(void);
s32 fn_1_2930(s32 arg0);
typedef void (*VoidFunc)(void);
extern const VoidFunc _ctors[];
extern const VoidFunc _dtors[];
//Map Objects
s16 lbl_1_bss_C[MAPOBJ_MAX];
//DATA
w03StructUnk0 lbl_1_data_0[] = {
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0004)},
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0005)},
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0006)},
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000B)},
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000B)},
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0010)},
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0011)},
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0012)},
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 4)},
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 5)},
{{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 6)},
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 11)},
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 10)},
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 16)},
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 17)},
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 18)},
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 13)},
};
s16 lbl_1_data_1E0 = -1;
@ -103,10 +107,7 @@ s32 lbl_1_data_26C[] = {
0x0000044C, 0x0000043A, 0x0000043A, 0x0000044E
};
s32 pad_27C[] = {0};
//BSS
s16 lbl_1_bss_C[14];
s32 lbl_1_bss_8;
omObjData* lbl_1_bss_4;
w03State* lbl_1_bss_0;
@ -119,55 +120,63 @@ void BoardCreate(void) {
f32 var_f31;
s32 var_r31;
s32 var_r31_2;
w03StructUnk0* temp_r30;
BoardMapObject* temp_r30;
s32 i;
lbl_1_bss_0 = (w03State*)&GWSystem.board_data;
lbl_1_bss_0->unk3 = 0;
BoardSpaceInit(0x770000);
lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0);
fn_8006DDE8(lbl_1_data_1E0, -1.0f);
BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001);
lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0);
fn_8006DDE8(lbl_1_data_1E8, -1.0f);
BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f);
BoardModelLayerSet(lbl_1_data_1E8, 2);
lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0);
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
for (i = 0; i < 12; i++) {
for (i = 0; i < MAPOBJ_MAX; i++) {
temp_r30 = &lbl_1_data_0[i];
if (temp_r30->datanum != -1) {
if (temp_r30->data_num != -1) {
if ((i == 10) || (i == 11)) {
var_r29 = lbl_1_data_214;
} else {
var_r29 = NULL;
}
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->datanum, var_r29, 0);
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->unk_00);
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->unk_0C);
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->unk_18);
lbl_1_bss_C[i]= BoardModelCreate(temp_r30->data_num, var_r29, 0);
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
}
}
BoardModelMotionStart(lbl_1_bss_C[10], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[11], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000002);
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0x40000002);
fn_1_3058();
fn_1_6494();
fn_1_7ABC();
fn_1_9A7C();
BoardLightHookSet(&fn_1_884, &fn_1_8F0);
BoardSpaceWalkEventFuncSet(&fn_1_910);
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_A74);
@ -180,6 +189,7 @@ void BoardCreate(void) {
BoardJunctionMaskSet(0x3000);
fn_1_CF4();
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0x40000001);
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = lbl_1_data_1EC.unk_10;
var_f31 = lbl_1_data_1EC.unk_14;
@ -189,10 +199,12 @@ void BoardCreate(void) {
var_f31 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1);
}
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f30, var_f31);
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001);
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 0x64);
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 100);
fn_1_785C();
if (lbl_1_bss_0->unk2 != 0) {
for (i = 0; i < 4; i++) {
if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) {
@ -201,6 +213,7 @@ void BoardCreate(void) {
}
}
}
fn_1_DEC();
}
@ -210,22 +223,27 @@ void BoardDestroy(void) {
fn_1_10B0();
fn_1_9A9C();
fn_1_7B58();
for (i = 0; i < 0x0C; i++) {
BoardModelKill(lbl_1_bss_C[i]);
lbl_1_bss_C[i] = -1;
}
if (lbl_1_data_1E6 != -1) {
BoardModelKill(lbl_1_data_1E6);
lbl_1_data_1E6 = -1;
}
if (lbl_1_data_1E4 != -1) {
BoardModelKill(lbl_1_data_1E4);
lbl_1_data_1E4 = -1;
}
if (lbl_1_data_1E0 != -1) {
BoardModelKill(lbl_1_data_1E0);
lbl_1_data_1E0 = -1;
}
if (lbl_1_data_1E2 != -1) {
BoardModelKill(lbl_1_data_1E2);
lbl_1_data_1E2 = -1;
@ -250,6 +268,7 @@ s32 fn_1_910(void) {
cur_player_index = GWSystem.player_curr;
space = GWPlayer[cur_player_index].space_curr;
temp_r3 = BoardSpaceFlagGet(0, space);
if (temp_r3 & 0xC000) {
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].bowser_suit)))) {
return 0;
@ -265,18 +284,21 @@ s32 fn_1_910(void) {
return fn_1_309C();
}
if (temp_r3 & 0x200) {
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].bowser_suit)) != 0)) {
return 0;
}
return fn_1_675C();
}
return 0;
}
s32 fn_1_A74(void) {
s16 space = GWPlayer[GWSystem.player_curr].space_curr;
u32 var = BoardSpaceFlagGet(0, space) & 0x600000;
if (var + -0x200000 == 0) {
fn_1_7BA8();
return;
@ -311,8 +333,10 @@ void fn_1_B5C(s32 arg0) {
var_f28 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1);
}
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f30);
while (1) {
temp = BoardModelMotionTimeGet(lbl_1_bss_C[0]);
if (temp >= var_f29) {
@ -320,6 +344,7 @@ void fn_1_B5C(s32 arg0) {
}
HuPrcVSleep();
}
BoardModelAttrSet(lbl_1_bss_C[0], 0x40000001);
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f31);
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f31, var_f28);
@ -367,7 +392,8 @@ void fn_1_DEC(void) {
BoardCameraPosGet(&sp20);
BoardCameraDirGet(&sp14);
HuAudFXListnerSetEX(&sp20, &sp14, 4800.0f, 36000.0f, 0.0f, 1200.0f, 1200.0f);
for (i = 0; i < 4; i++) {
for (i = 0; i < ARRAY_COUNT(lbl_1_data_22C); i++) {
sp8.x = lbl_1_data_22C[i].x - 3600.0f;
sp8.y = lbl_1_data_22C[i].y;
sp8.z = lbl_1_data_22C[i].z - 3600.0f;
@ -410,6 +436,7 @@ void fn_1_10E4(omObjData* arg0) {
w03UnkStruct2* temp_r29;
temp_r29 = OM_GET_WORK_PTR(arg0, w03UnkStruct2);
if (temp_r29->unk0 != 0 || (BoardIsKill() != 0)) {
for (i = 0; i < ARRAY_COUNT(lbl_1_data_21C); i++) {
if (lbl_1_data_21C[i] != -1) {
@ -421,6 +448,7 @@ void fn_1_10E4(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
BoardCameraDirGet(&sp8);
BoardCameraTargetGet(&sp14);
@ -433,6 +461,7 @@ void fn_1_10E4(omObjData* arg0) {
}
sp14.y += 2000.0f;
if (_CheckFlag(0x10010) == 0) {
if (lbl_1_bss_8 == 0) {
HuAudFXPauseAll(1);
@ -442,5 +471,6 @@ void fn_1_10E4(omObjData* arg0) {
HuAudFXPauseAll(0);
lbl_1_bss_8 = 0;
}
HuAudFXListnerUpdate(&sp14, &sp8);
}

View file

@ -6,10 +6,11 @@
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/space.h"
#include "game/minigame_seq.h"
#include "game/hsfdraw.h"
#include "game/pad.h"
extern u16 HuPadBtnDown[4];
extern s16 lbl_1_bss_C[14];
//structs
typedef struct someBits3 { //make sure this is defined correctly
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
@ -63,21 +64,13 @@ void fn_1_9474(s32 arg0);
void fn_1_97F8(s32 arg0);
void fn_1_9A1C(unkTemp2* arg0);
double sin(double x);
double cos(double x);
double atan2(double y, double x);
extern s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
//DATA
//data
s32 lbl_1_data_450 = -1;
s16 lbl_1_data_454 = -1;
s16 lbl_1_data_456 = -1;
s16 lbl_1_data_458 = -1;
s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1};
//BSS
char lbl_1_bss_150[0x30];
s16 lbl_1_bss_14E;
@ -86,7 +79,6 @@ omObjData* lbl_1_bss_148;
omObjData* lbl_1_bss_144;
Process* lbl_1_bss_140;
void fn_1_7ABC(void) {
lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0);
BoardModelHookSet(lbl_1_bss_C[7], "phei", lbl_1_data_456);
@ -146,25 +138,31 @@ s32 fn_1_7D18(s32 arg0) {
f32 arctan;
BoardWinCreateChoice(2, 0x160015, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
BoardWinKill();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x160018, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardAudSeqPause(0, 1, 1000);
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 21);
space = GWPlayer[arg0].space_curr;
temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000);
BoardPlayerPosGet(arg0, &sp2C);
@ -175,15 +173,19 @@ s32 fn_1_7D18(s32 arg0) {
HuPrcSleep(0x1E);
model = BoardModelIDGet(lbl_1_bss_C[7]);
Hu3DModelObjPosGet(model, "phei", &sp38);
if (GWPlayer[arg0].character == 5) {
var_f31 = 54.000004f;
} else {
var_f31 = 39.0f;
}
sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
BoardPlayerPosGet(arg0, &sp2C);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
BoardPlayerPosGet(arg0, &sp38);
@ -192,10 +194,13 @@ s32 fn_1_7D18(s32 arg0) {
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
HuPrcVSleep();
}
BoardPlayerMotBlendSet(arg0, -0x2D, 7);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
return 1;
}
@ -205,14 +210,18 @@ void fn_1_8140(s32 arg0) {
fn_1_81E0(arg0);
BoardMusStart(1, 0x16, 0x7F, 0);
temp_r31 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r31)) {
HuPrcVSleep();
}
fn_1_9384();
fn_1_84A8(0);
while (lbl_1_bss_144) {
HuPrcVSleep();
}
fn_1_91B8();
}
@ -325,10 +334,12 @@ void fn_1_8530(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk1 != 0) {
temp_r31->unk1--;
return;
}
switch (temp_r31->unk00_bit1) {
case 0:
fn_1_8698(arg0, temp_r31);
@ -364,13 +375,15 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
arg1->unk_04 = -1;
arg1->unk00_bit1 = 1;
temp = BoardModelMotionTimeGet(lbl_1_bss_C[7]);
if (temp == 0.0f) {
temp = 1.0f;
}
if (lbl_1_bss_14E > 30) {
lbl_1_bss_14E = 30;
}
//temp2 =
OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //??
BoardModelAttrReset(lbl_1_data_456, 0x40000002);
BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002);
@ -387,9 +400,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
arg0->rot.y = 16.666666f * arg0->rot.x;
arg0->scale.x = BoardModelMotionMaxTimeGet(lbl_1_bss_C[7]);
HuWinDispOff(lbl_1_data_454);
BoardCameraMotionStartEx(-1, 0, 0, 1900.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(-1, NULL, NULL, 1900.0f, -1.0f, 21);
return;
}
MGSeqParamSet(arg1->unk_04, 1, arg1->unk2);
arg1->unk3 = 60;
}
@ -397,8 +411,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
var_r26 = GWPlayer[arg1->unk00_bit5].port;
var_r28 = 0;
if ((GWPlayer[arg1->unk00_bit5].com) != 0) {
temp_r27 = BoardRandMod(100);
switch (GWPlayer[arg1->unk00_bit5].diff) {
case 0:
if (temp_r27 < 12) {
@ -422,6 +438,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
} else {
var_r28 = HuPadBtnDown[var_r26] & 0x100;
}
if ((var_r28 & 0x100)) {
arg0->trans.y += 0.5f;
if (arg0->trans.y > 2.0f) {
@ -444,19 +461,22 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
}
}
}
if ((lbl_1_data_450 != -1) && (HuAudFXStatusGet(lbl_1_data_450) == 0)) {
lbl_1_data_450 = -1;
}
arg0->trans.x += arg0->trans.y;
if (arg0->trans.x > 3.0f) {
arg0->trans.x = 3.0f;
}
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, arg0->trans.x);
BoardModelMotionSpeedSet(lbl_1_data_456, arg0->trans.x);
}
s8 lbl_1_data_4B0 = -1;
s32 lbl_1_data_4B4[] = {
0x00000440,
0x00000441,
@ -465,7 +485,6 @@ s32 lbl_1_data_4B4[] = {
0x00000444
};
void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
Point3d spC;
f32 temp_f31;
@ -474,6 +493,7 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
BoardModelPosGet(lbl_1_data_456, &spC);
spC.y += 1.6666666f;
if (spC.y >= (arg0->trans.z + arg0->rot.y)) {
spC.y = arg0->trans.z + arg0->rot.y;
BoardModelMotionSpeedSet(lbl_1_bss_C[10], 0.0f);
@ -484,14 +504,17 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
arg1->unk1 = 0x3C;
arg1->unk2 = 0;
}
BoardModelPosSetV(lbl_1_data_456, &spC);
temp_f30 = arg0->scale.x * ((spC.y - arg0->trans.z) / 500.0f);
OSf32tos8(&temp_f30, &temp_r27);
temp_r27 = temp_r27 / 30;
if (lbl_1_data_4B0 != temp_r27) {
lbl_1_data_4B0 = temp_r27;
HuAudFXPlay(lbl_1_data_4B4[temp_r27]);
}
BoardModelMotionTimeSet(lbl_1_bss_C[7], temp_f30);
BoardModelMotionTimeSet(lbl_1_bss_C[10], 0.2f * temp_f30);
BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30);
@ -511,9 +534,12 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
}
BoardAudSeqFadeOut(1, 0x3E8);
}
OSu8tof32(&arg1->unk2, &temp_f31);
BoardModelPosGet(lbl_1_data_456, &sp8);
sp8.y = (sp8.y + (-0.08166666666666668 * temp_f31 * temp_f31));
if (sp8.y < arg0->trans.z) {
sp8.y = arg0->trans.z;
arg1->unk00_bit1 = 3;
@ -527,6 +553,7 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
HuAudFXPlay(0x449);
BoardAudSeqPause(0, 0, 0x3E8);
}
arg1->unk2 += 1;
BoardModelPosSetV(lbl_1_data_456, &sp8);
}
@ -536,6 +563,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
BoardModelRotGet(lbl_1_data_456, &sp8);
arg0->trans.y = BoardDAngleCalc(arg0->trans.y + arg0->trans.z);
if (arg0->trans.y <= 2.0f) {
if (arg0->trans.y >= -2.0) {
arg0->trans.x *= 0.5f;
@ -547,6 +575,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
}
}
}
sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0);
BoardModelRotSetV(lbl_1_data_456, &sp8);
}
@ -559,6 +588,7 @@ void fn_1_91B8(void) {
if (lbl_1_bss_14E == 0) {
lbl_1_bss_14E = 1;
}
temp_r3 = lbl_1_bss_14E / 6;
lbl_1_bss_14C = lbl_1_data_4C8[temp_r3];
}
@ -576,6 +606,7 @@ void fn_1_9230(s32 arg0) {
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
BoardPlayerPosGet(arg0, &sp14);
@ -584,6 +615,7 @@ void fn_1_9230(s32 arg0) {
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[10], 0.0f);
BoardCameraMotionWait();
}
@ -608,18 +640,24 @@ void fn_1_9474(s32 arg0) {
BoardWinWait();
BoardWinKill();
BoardPlayerMotBlendSet(arg0, 0, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
fn_1_97F8(arg0);
while (lbl_1_bss_148) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U);
HuPrcSleep(8);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x160018U, 2);
BoardWinWait();
BoardWinKill();
@ -638,6 +676,7 @@ void fn_1_95B8(omObjData* arg0) {
s32 temp;
temp_r29 = OM_GET_WORK_PTR(arg0, unkTemp2);
if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
fn_1_9A1C(temp_r29);
HuMemDirectFree((void*)temp_r29->unk_0C);
@ -645,6 +684,7 @@ void fn_1_95B8(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
var_r30 = temp_r29->unk_0C;
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
@ -657,6 +697,7 @@ void fn_1_95B8(omObjData* arg0) {
temp_r29->unk00_bit0 = 1;
return;
}
var_r25 = 0;
for (i = 0; i < 20; i++) {
var_r30 = &temp_r29->unk_0C[i];
@ -704,6 +745,7 @@ void fn_1_97F8(s32 arg0) {
BoardPlayerPosGet(arg0, &sp8);
temp_r30->unk8 = (80.0f + sp8.y);
memset(temp_r30->unk_0C, 0, 0x190);
for (i = 0; i < lbl_1_bss_14C; i++) {
if (i == 0) {
var_f31 = 0.0f;
@ -730,5 +772,3 @@ void fn_1_9A1C(unkTemp2* arg0) {
BoardModelKill(temp->unk_02);
}
}
char mg_pad[] = "\0\0\0\0\0\0";

View file

@ -9,14 +9,15 @@
#include "game/board/space.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/sprite.h"
#include "game/board/player.h"
#include "math.h"
#include "game/hsfman.h"
#include "dolphin/os/OSFastCast.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
#include "game/minigame_seq.h"
#include "game/hsfdraw.h"
#include "game/hsfmotion.h"
#include "game/pad.h"
typedef struct someBits {
/* 0x00 */ struct {
@ -56,19 +57,11 @@ typedef struct w03UnkMG {
} w03UnkMG;
//external symbols
extern Process *boardMainProc;
extern s16 lbl_1_bss_C[14];
extern Process *boardObjMan;
extern u16 HuPadBtnDown[4];
//function signatures
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
void BoardCameraQuakeSet(s32 duration, float strength);
s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16);
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
s16 Hu3DMotionShiftIDGet(s16 arg0);
s32 frand(void);
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix);
@ -102,7 +95,7 @@ s32 fn_1_9CF4(s32 arg0);
void fn_1_9F78(void);
void fn_1_9FE4(void);
//DATA
//data
s16 lbl_1_data_4D8 = -1;
s16 lbl_1_data_4DA = -1;
s16 lbl_1_data_4DC = -1;
@ -151,37 +144,46 @@ void fn_1_9AA0(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
while (lbl_1_bss_180 != 0) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
void fn_1_9B30(void) {
fn_1_BDAC();
if (lbl_1_bss_188) {
lbl_1_bss_188;
}
if (lbl_1_bss_184) {
OM_GET_WORK_PTR(lbl_1_bss_184, someBits2)->unk00_bit0 = 1;
}
if (lbl_1_data_4E0 != -1) {
HuAudFXStop(lbl_1_data_4E0);
lbl_1_data_4E0 = -1;
}
if (lbl_1_data_4DC != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC);
lbl_1_data_4DC = -1;
}
if (lbl_1_data_4DA != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA);
lbl_1_data_4DA = -1;
}
if (lbl_1_data_4D8 != -1) {
HuWinKill(lbl_1_data_4D8);
lbl_1_data_4D8 = -1;
}
lbl_1_bss_180 = 0U;
lbl_1_bss_180 = 0;
}
void fn_1_9C8C(void) {
@ -189,10 +191,12 @@ void fn_1_9C8C(void) {
temp_r31 = GWSystem.player_curr;
lbl_1_data_4E0 = -1;
if (fn_1_9CF4(temp_r31) != 0) {
fn_1_A44C(temp_r31);
fn_1_A5E0(temp_r31);
}
HuPrcEnd();
}
@ -211,36 +215,45 @@ s32 fn_1_9CF4(s32 arg0) {
BoardWinKill();
return 0;
}
BoardWinCreateChoice(2, 0x16001A, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x16001B, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardWinKill();
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 21);
spaceCur = GWPlayer[arg0].space_curr;
temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000);
BoardPlayerPosGet(arg0, &sp2C);
BoardSpacePosGet(0, temp_r29, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
PSVECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793)));
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)));
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
HuPrcSleep(0x3C);
fn_1_B0A4(arg0);
@ -269,26 +282,31 @@ void fn_1_9FE4(void) {
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
temp_f30 = (atan2(spC.z, spC.x) / 3.141592653589793 * 180.0);
temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0);
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[11], temp_f30);
BoardModelMotionSpeedSet(lbl_1_bss_C[11], 2.0f);
spC.x /= 20.0f;
spC.z /= 20.0f;
spC.y = 0.0f;
sp30 = sp24;
var_f31 = 0.0f;
while (var_f31 < 20.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
BoardAudSeqPause(0, 1, 0x3E8);
HuAudFXPlay(0x450);
HuAudFXPlay(0x362);
@ -296,23 +314,28 @@ void fn_1_9FE4(void) {
fn_1_B8E8(1);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005);
PSVECSubtract(&sp24, &sp30, &spC);
spC.x /= 60.0f;
spC.z /= 60.0f;
spC.y = 0.0f;
var_f31 = 0.0f;
while (var_f31 < 60.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
temp_f30 = 0.0f;
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001);
}
@ -323,34 +346,44 @@ void fn_1_A44C(s32 arg0) {
BoardMusStart(1, 0x17, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
fn_1_A7A0(arg0);
fn_1_A6B0();
fn_1_ACD8(1);
while (fn_1_AE20() != 0) {
HuPrcVSleep();
}
temp_r29 = fn_1_BBC4() + 0x80000;
BoardWinCreate(2, 0x16001C, 2);
BoardWinInsertMesSet(temp_r29, 0);
BoardWinWait();
fn_1_B8E8(4);
while (fn_1_BB48() != 0) {
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 6, 6);
BoardPlayerItemAdd(arg0, fn_1_BBC4());
fn_1_ACD8(3);
temp_r28 = HuAudSStreamPlay(2);
while (HuAudSStreamStatGet(temp_r28) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 0x3E8);
BoardAudSeqPause(0, 0, 1000);
while (lbl_1_bss_188) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
BoardWinCreate(2, 0x16001D, 2);
BoardWinWait();
@ -367,7 +400,7 @@ void fn_1_A5E0(s32 arg0) {
BoardSpacePosGet(0, spaceCur, &sp8);
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
@ -385,7 +418,7 @@ void fn_1_A6B0(void) {
lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f);
HuWinMesSpeedSet(lbl_1_data_4D8, 0);
HuWinMesSet(lbl_1_data_4D8, 0x16001FU);
HuWinMesSet(lbl_1_data_4D8, 0x16001F);
}
void fn_1_A7A0(s32 arg0) {
@ -414,12 +447,15 @@ void fn_1_A8AC(s32 arg0) {
BoardModelPosGet(lbl_1_bss_C[9], &sp8);
BoardPlayerPosGet(arg0, &sp14);
sp8.y = sp14.y;
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
playerYRot = BoardPlayerRotYGet(arg0) + 180.0f;
BoardPlayerMotBlendSet(arg0, playerYRot, 0xF);
BoardPlayerMotBlendSet(arg0, playerYRot, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
@ -440,6 +476,7 @@ void fn_1_A994(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk00_bit6 == 0) {
if (temp_r31->unk2 != 0) {
temp_r31->unk2--;
@ -453,6 +490,7 @@ void fn_1_A994(omObjData* arg0) {
temp_r31->unk2 = 0x3CU;
}
}
switch (temp_r31->unk00_bit1) {
case 1:
fn_1_AB18(arg0, temp_r31);
@ -517,6 +555,7 @@ void fn_1_ACD8(s32 arg0) {
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 0:
BoardPlayerIdleSet(temp_r31->unk00_bit4);
@ -553,6 +592,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
temp_r29 = lbl_1_data_4E6[arg1[0]];
temp_r28 = lbl_1_data_4E6[arg1[1]];
temp_r30 = lbl_1_data_4E6[arg1[2]];
if (temp_r29 > temp_r28) {
if (temp_r29 > temp_r30) {
var_r31 = 0;
@ -568,6 +608,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
} else {
var_r31 = 0;
}
return var_r31;
}
@ -579,6 +620,7 @@ u32 fn_1_AF24(s32 arg0) {
s8 temp_r0_2;
spC = 0;
switch (GWPlayer[arg0].diff) {
case 3:
var_r30 = 0;
@ -637,7 +679,7 @@ void fn_1_B0A4(s32 arg0) {
temp_r30->unk00_bit1 = 0;
temp_r30->unk00_bit4 = arg0;
for (i = 0; i < 3;) {
for (i = 0; i < ARRAY_COUNT(spC);) {
spC[i] = BoardRandMod(14);
if ((spC[i] != 10) && (spC[i] != 13)) {
for (j = 0; j < i; j++) {
@ -656,19 +698,22 @@ void fn_1_B0A4(s32 arg0) {
fn_1_BBF8();
for (i = 0; i < 3; i++) {
for (i = 0; i < ARRAY_COUNT(spC); i++) {
temp_r29 = spC[i];
temp_r30->unk3[i] = temp_r29;
temp_r30->unk_06[i] = BoardModelCreate(lbl_1_data_514[temp_r29], NULL, 0);
BoardModelHookSet(lbl_1_bss_C[9], lbl_1_data_508[i], temp_r30->unk_06[i]);
BoardModelMotionSpeedSet(temp_r30->unk_06[i], 0.0f);
if (temp_r29 == 0xB) {
if (temp_r29 == 11) {
BoardModelMotionStart(temp_r30->unk_06[i], 0, 0x40000001);
}
if (temp_r29 == 5) {
PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
}
if ((temp_r29 == 6) || (temp_r29 == 7)) {
PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
@ -681,6 +726,7 @@ void fn_1_B350(omObjData* arg0) {
someBits2* temp_r31;
temp_r31 = (someBits2*)&arg0->work[0];
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
BoardModelHookReset(lbl_1_bss_C[9]);
for (i = 0; i < 3; i++) {
@ -779,7 +825,7 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) {
BoardModelPosSetV(temp_r29, &sp8);
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
BoardModelScaleGet(temp_r29, &sp14);
sp14.x = sp14.y = sp14.z = cos(3.141592653589793 * temp_f0 / 180.0);
sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0);
BoardModelScaleSetV(temp_r29, &sp14);
arg1->unk1 += 4;
return;
@ -802,6 +848,7 @@ void fn_1_B8E8(s32 arg0) {
temp_r31 = (someBits2*)&lbl_1_bss_184->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 1:
temp_f31 = 0.31666666f;
@ -840,7 +887,7 @@ void fn_1_BB74(s8* arg0) {
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
s32 i;
for (i = 0; i < 3; i++) {
for (i = 0; i < ARRAY_COUNT(bits->unk3); i++) {
arg0[i] = bits->unk3[i];
}
}
@ -861,7 +908,7 @@ void fn_1_BBF8(void) {
void fn_1_BC7C(s16 arg0) {
ParticleData* particle;
lbl_1_bss_190 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, 2));
lbl_1_bss_190 = HuSprAnimReadFile(0x120000);
HuSprAnimLock(lbl_1_bss_190);
lbl_1_data_4E4 = Hu3DParticleCreate(lbl_1_bss_190, 100);
Hu3DParticleHookSet(lbl_1_data_4E4, fn_1_BE30);
@ -886,7 +933,6 @@ void fn_1_BDAC(void) {
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
Point3d sp8;
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
@ -916,8 +962,8 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
if (j != particle->unk_30) {
temp_f30 = 360.0f * (0.003921569f * (frand() & 0xFF));
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0)));
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (frand() & 0xFF))))));
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * (frand() & 0xFF))));
@ -925,6 +971,7 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
var_r31->unk2C = (15.0f * temp_f31);
}
}
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {

View file

@ -4,17 +4,9 @@
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/hsfdraw.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
s16 BoardModelIDGet(s16 model);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
extern s16 lbl_1_bss_C[14];
extern s16 boardPlayerMdl[4];
//BSS
char lbl_1_bss_130[8];
omObjData* lbl_1_bss_12C;
s16 lbl_1_bss_128;
@ -40,7 +32,7 @@ typedef struct unkWorkStruct {
f32 unk_04;
} unkWorkStruct;
//DATA
//data
s32 lbl_1_data_368[] = {
0x00000105, 0x00000145, 0x00000185,
0x000001C5, 0x00000205, 0x00000245,
@ -61,13 +53,15 @@ void fn_1_63F4(s32 arg0) {
Vec spC;
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
work->unk_04 = 0.0f;
work->unk_04 = 0.0f;
BoardModelPosGet(lbl_1_data_388, &spC);
if (arg0 != 0) {
spC.y = -185.0f;
} else {
spC.y = 10.0f;
}
BoardModelPosSetV(lbl_1_data_388, &spC);
}
@ -82,11 +76,10 @@ void fn_1_6494(void) {
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
BoardModelHookSet(lbl_1_data_38A, "itemhook_R", lbl_1_data_38C);
BoardModelHookSet(lbl_1_data_388, "hei01", lbl_1_data_38A);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
BoardModelPosSetV(lbl_1_data_388, &sp14);
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
@ -101,8 +94,8 @@ s32 fn_1_6698(void) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
return 1;
}
@ -111,9 +104,11 @@ s16 fn_1_675C(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
while ((u32) lbl_1_bss_120 != 0U) {
while (lbl_1_bss_120 != 0) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
return lbl_1_bss_128;
}
@ -123,12 +118,14 @@ void fn_1_67F8(void) {
temp_r31 = GWSystem.player_curr;
lbl_1_bss_128 = 0;
if (fn_1_6898(temp_r31) != 0) {
fn_1_6F9C(temp_r31);
fn_1_6B98(temp_r31);
fn_1_735C(temp_r31);
lbl_1_bss_128 = 1;
}
BoardCameraViewSet(1);
BoardCameraMotionWait();
HuPrcEnd();
@ -170,16 +167,19 @@ s32 fn_1_6898(s32 arg0) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20);
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / 3.141592653589793);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI);
BoardCameraTargetModelSet(lbl_1_data_388);
BoardPlayerMotBlendSet(arg0, temp_f31, 0xF);
BoardPlayerMotBlendSet(arg0, temp_f31, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardCameraTargetModelSet(-1);
BoardWinCreate(2, 0x160009, 2);
BoardWinWait();
temp_r3 = BoardPlayerCoinsGet(arg0);
if (temp_r3 < 5) {
BoardWinCreate(2, 0x16000A, 2);
BoardWinWait();
@ -187,7 +187,7 @@ s32 fn_1_6898(s32 arg0) {
return 0;
}
for (var_r27 = i = 0; i < 6; i++) {
for (var_r27 = i = 0; i < ARRAY_COUNT(lbl_1_data_3B8); i++) {
temp = lbl_1_data_3B8[i].x;
temp2 = lbl_1_data_3B8[i].y;
if (temp_r3 >= temp) {
@ -197,17 +197,22 @@ s32 fn_1_6898(s32 arg0) {
}
}
}
sprintf(lbl_1_bss_130, "%d", var_r27);
j = 0;
while (j == 0) {
BoardWinCreateChoice(2, 0x16000B, 2, 0);
BoardWinInsertMesSet(lbl_1_bss_130, 2);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com != 0) {
fn_1_77E4(arg0);
}
BoardWinWait();
BoardWinKill();
switch (BoardWinChoiceGet()) {
case 0:
j = 1;
@ -222,11 +227,13 @@ s32 fn_1_6898(s32 arg0) {
BoardViewMapExec(arg0);
}
}
for (i = 0; i < var_r27; i++) {
BoardPlayerCoinsAdd(arg0, -1);
HuAudFXPlay(0xE);
HuPrcSleep(6);
}
HuAudFXPlay(0xF);
BoardWinCreate(2, 0x0016000C, 2);
BoardWinWait();
@ -250,17 +257,20 @@ void fn_1_6B98(s32 arg0) {
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = sp8 + 180.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_data_388, &sp24);
BoardSpaceFlagPosGet(0, 0x100, &sp30);
sp18.x = sp30.x + (400.0 * sin(1.5707963267948966));
sp18.z = sp30.z + (400.0 * cos(1.5707963267948966));
sp18.x = sp30.x + (400.0 * sin(M_PI / 2));
sp18.z = sp30.z + (400.0 * cos(M_PI / 2));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
spC.x = spC.x / 120.0f;
@ -269,17 +279,21 @@ void fn_1_6B98(s32 arg0) {
BoardCameraTargetModelSet(lbl_1_data_388);
BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U);
HuPrcSleep(4);
var_r31 = 0;
for (i = 0; i < 0x78U; i++) {
PSVECAdd(&spC, &sp24, &sp24);
temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A);
if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) {
HuAudFXPlay(0x451);
var_r31 = 1;
}
if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) {
var_r31 = 0;
}
BoardModelPosSetV(lbl_1_data_388, &sp24);
HuPrcVSleep();
}
@ -289,18 +303,21 @@ void fn_1_6B98(s32 arg0) {
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = 0.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U);
}
extern s32 lbl_1_data_368[];
extern w03State* lbl_1_bss_0;
// extern w03State* lbl_1_bss_0;
void fn_1_6F9C(s32 arg0) {
Vec sp20;
@ -316,9 +333,11 @@ void fn_1_6F9C(s32 arg0) {
BoardPlayerPosGet(arg0, &sp14);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20);
PSVECSubtract(&sp20, &sp14, &sp8);
sp8.x /= 60.0f;
sp8.z /= 60.0f;
sp8.y = 0.0f;
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 10.0f;
var_f29 = 0.21f;
@ -327,16 +346,18 @@ void fn_1_6F9C(s32 arg0) {
var_f30 = 0.0f;
var_f29 = 0.15f;
}
lbl_1_bss_124 = 1;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
PSVECAdd(&sp14, &sp8, &sp14);
sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31));
if (sp14.y <= sp20.y) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
var_r30 = 1;
}
}
@ -344,14 +365,16 @@ void fn_1_6F9C(s32 arg0) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
HuPrcSleep(10);
BoardPlayerIdleSet(arg0);
if (GWPlayer[arg0].bowser_suit != 0) {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
} else {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
}
BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f);
lbl_1_bss_124 = 0;
}
@ -378,7 +401,7 @@ void fn_1_735C(s32 arg0) {
sp8.y = 0.0f;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 0.25f;
} else {
@ -391,7 +414,7 @@ void fn_1_735C(s32 arg0) {
if (sp14.y <= sp20.y && var_f31 > 48.0f) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
var_r30 = 1;
}
}
@ -401,10 +424,12 @@ void fn_1_735C(s32 arg0) {
BoardPlayerPosSetV(arg0, &sp20);
HuPrcSleep(0xA);
BoardPlayerMotBlendSet(arg0, 0, 0xF);
BoardPlayerMotBlendSet(arg0, 0, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
GWPlayer[arg0].space_curr = temp_r29;
GWPlayer[arg0].space_prev = -1;
@ -421,18 +446,20 @@ void fn_1_767C(omObjData* arg0) {
unkWorkStruct* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct);
if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) {
lbl_1_bss_12C = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
temp_r31->unk_04 += 3.0f;
if (temp_r31->unk_04 >= 360.0f) {
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
}
BoardModelPosGet(lbl_1_data_388, &sp8);
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((3.141592653589793 * (f64) temp_r31->unk_04) / 180.0))));
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0))));
BoardModelPosSetV(lbl_1_data_388, &sp8);
}
}
@ -442,14 +469,15 @@ void fn_1_77E4(s32 arg0) {
s32 var_r30 = 0;
boardIndex = GWSystem.star_pos;
if ((boardIndex == 1) || (boardIndex == 2) || (boardIndex == 3) || (boardIndex == 4)) {
var_r30 = 1;
}
if (var_r30 != 0) {
BoardComKeySetLeft();
return;
}
BoardComKeySetRight();
}
char padRiver[] = "\0\0\0\0";

View file

@ -30,16 +30,20 @@ void fn_1_785C(void) {
lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0];
for (i = 0; i < 5; i++) {
for (i = 0; i < ARRAY_COUNT(temp_r31->unk_00); i++) {
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
temp_r29 = kemuri_strings[i];
if (0.0f == temp_r31->unk_0C) {
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
}
var_f31 = temp_r31->unk_0C * BoardRandFloat();
if (var_f31 < 1.0f) {
var_f31 = 1.0f;
}
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
@ -63,14 +67,14 @@ void fn_1_79E0(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (lbl_1_bss_0->unk3 != 0) {
var_r29 = 0;
} else {
var_r29 = 1;
}
for (i = 0; i < 5; i++) {
for (i = 0; i < ARRAY_COUNT(temp_r30->unk_00); i++) {
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
}
}
char pad[4] = "\0\0\0\0";

View file

@ -28,7 +28,7 @@ void fn_1_2A40(void);
void fn_1_2B44(void);
double atan2(double y, double x);
//DATA
//data
s16 lbl_1_data_280 = -1;
s16 lbl_1_data_282 = -1;
s16 lbl_1_data_284 = -1;
@ -36,9 +36,7 @@ s16 lbl_1_data_286 = -1;
s32 lbl_1_data_288 = -1;
//BSS Extern
extern w03State* lbl_1_bss_0;
extern Process *boardMainProc;
extern s16 lbl_1_bss_C[14];
//BSS
s8 lbl_1_bss_6F;
@ -62,6 +60,7 @@ void fn_1_12C8(void) {
while (lbl_1_bss_28) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
@ -72,6 +71,7 @@ void fn_1_1358(void) {
cur_player_index = GWSystem.player_curr;
unkC = GWPlayer[cur_player_index].space_curr;
lbl_1_bss_2C = 0;
if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) {
lbl_1_bss_6E = 0;
lbl_1_bss_6C = lbl_1_bss_C[3];
@ -79,6 +79,7 @@ void fn_1_1358(void) {
lbl_1_bss_6E = 1;
lbl_1_bss_6C = lbl_1_bss_C[4];
}
if (fn_1_1650(cur_player_index) != 0) {
if (fn_1_1D1C() != 0) {
fn_1_1ED4(cur_player_index);
@ -98,6 +99,7 @@ void fn_1_1358(void) {
fn_1_26E0(cur_player_index);
BoardStatusShowSetAll(1);
}
BoardPlayerPostTurnHookSet(cur_player_index, &fn_1_15E8);
BoardWinKill();
HuPrcEnd();
@ -105,24 +107,29 @@ void fn_1_1358(void) {
void fn_1_152C(void) {
BoardConfettiKill();
if (lbl_1_data_282 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_282);
lbl_1_data_282 = -1;
}
if (lbl_1_data_280 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_280);
lbl_1_data_280 = -1;
}
fn_1_2AC0();
lbl_1_bss_28 = NULL;
}
s32 fn_1_15E8(void) {
BoardModelVisibilitySet(lbl_1_bss_6C, 1);
if (lbl_1_data_284 != -1) {
BoardModelKill(lbl_1_data_284);
lbl_1_data_284 = -1;
}
return 1;
}
@ -148,7 +155,7 @@ s32 fn_1_1650(s32 arg0) {
BoardSpacePosGet(0, temp2, &sp38);
BoardPlayerPosGet(arg0, &sp2C);
PSVECSubtract(&sp38, &sp2C, &sp20);
temp = (atan2(-sp20.x, -sp20.z) / 3.141592653589793) * 180.0f;
temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f;
BoardPlayerRotYSet(arg0, temp);
sp14.x = 0.0f;
sp14.y = 100.0f;
@ -156,7 +163,7 @@ s32 fn_1_1650(s32 arg0) {
sp8.x = -20.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 21);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x28);
while (GWPlayer[arg0].moving) {
@ -175,6 +182,7 @@ s32 fn_1_1650(s32 arg0) {
BoardWinWait();
BoardWinCreateChoice(0, 0x160002, -1, 0);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com) {
if (BoardRandMod(0x64) > 0x32U) {
BoardComKeySetLeft();
@ -182,6 +190,7 @@ s32 fn_1_1650(s32 arg0) {
BoardComKeySetRight();
}
}
BoardWinWait();
lbl_1_bss_6F = BoardWinChoiceGet();
BoardWinKill();
@ -205,26 +214,26 @@ s32 fn_1_1650(s32 arg0) {
return 1;
}
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x62),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x62),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x62),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x62),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x62),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x62),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x62),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x62),
s32 lbl_1_data_290[] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 98),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 98),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 98),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 98),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 98),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 98),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 98),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 98)
};
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x33),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x33),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x33),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x33),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x33),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x33),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x33),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x33),
s32 lbl_1_data_2B0[] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 51),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 51),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 51),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 51),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 51),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 51),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 51),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 51)
};
s32 lbl_1_data_2D0[] = {
@ -247,6 +256,7 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
f32 temp;
temp_r30 = GWPlayer[arg0].character;
if (arg1 != 0) {
lbl_1_data_282 = BoardPlayerMotionCreate(arg0, lbl_1_data_2B0[temp_r30]);
lbl_1_bss_6A = 8;
@ -257,12 +267,15 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
lbl_1_bss_68 = 1;
var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character];
}
lbl_1_data_280 = BoardPlayerMotionCreate(arg0, lbl_1_data_290[temp_r30]);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
BoardPlayerMotBlendSet(arg0, temp, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
HuAudFXPlay(var_r29);
BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0);
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0);
@ -272,7 +285,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
HuPrcVSleep();
}
HuPrcSleep(0x3C);
HuPrcSleep(60);
if (arg1 != 0) {
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0);
@ -281,16 +295,20 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
HuPrcVSleep();
}
}
BoardPlayerIdleSet(arg0);
HuPrcSleep(0x14);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
BoardPlayerMotBlendSet(arg0, temp, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 1, 0x3E8);
BoardAudSeqPause(0, 1, 1000);
BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0);
HuPrcSleep(0xB);
HuPrcSleep(11);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
@ -323,16 +341,20 @@ s32 fn_1_1D1C(void) {
BoardWinCreate(2, 0x160003, 2);
BoardWinWait();
BoardWinKill();
prevTurn = GWSystem.turn - 1;
maxTurn = GWSystem.max_turn;
var_r31 = prevTurn / (maxTurn / 3);
if (var_r31 >= 3) {
var_r31 = 2;
}
modRand = BoardRandMod(100);
if (modRand < sp8[var_r31] ) {
return 1;
}
modRand2 = BoardRandMod(100 - sp8[var_r31]);
if (modRand2 < sp14[var_r31][0]) {
lbl_1_bss_2C = 3;
@ -341,6 +363,7 @@ s32 fn_1_1D1C(void) {
} else {
lbl_1_bss_2C = 1;
}
return 0;
}
@ -373,11 +396,13 @@ void fn_1_1ED4(s32 arg0) {
while (BoardFilterFadePauseCheck() == 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 1000);
BoardWinCreate(2, 0x160004, 2);
BoardWinWait();
@ -401,10 +426,12 @@ void fn_1_20E0(s32 arg0) {
BoardModelPosSetV(lbl_1_data_284, &spC);
BoardFilterFadeOut(0x1E);
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
BoardModelRotYSet(lbl_1_data_284, sp8);
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 4, 2);
BoardModelRotYSet(lbl_1_data_284, 0.0f);
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
@ -426,26 +453,30 @@ void fn_1_20E0(s32 arg0) {
if (lbl_1_bss_30 > 128.0f) {
lbl_1_bss_30 = 128.0f;
}
HuPrcSleep(0x28);
HuPrcSleep(40);
lbl_1_bss_30 = 128.0f;
while (lbl_1_bss_30 > 0.0f) {
HuPrcVSleep();
lbl_1_bss_30 -= 12.0f;
}
if (lbl_1_bss_30 < 0.0f) {
lbl_1_bss_30 = 0.0f;
}
fn_1_2AC0();
for (i = 0; i < 3; i++) {
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 0xD);
BoardCameraMotionStartEx(-1, NULL, NULL, 680.0f, -1.0f, 13);
BoardCameraMotionWait();
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 0xD);
BoardCameraMotionStartEx(-1, NULL, NULL, 1360.0f, -1.0f, 13);
BoardCameraMotionWait();
}
BoardPlayerIdleSet(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
@ -465,7 +496,7 @@ void fn_1_20E0(s32 arg0) {
sp18.x = -20.0f;
sp18.y = 0.0f;
sp18.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 0x3C);
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 60);
BoardCameraMotionWait();
omVibrate(arg0, 0x1E, 6, 6);
HuPrcSleep(0x1E);
@ -476,6 +507,7 @@ void fn_1_20E0(s32 arg0) {
}
BoardCameraQuakeReset();
if (lbl_1_data_288 != 0) {
HuAudFXStop(lbl_1_data_288);
lbl_1_data_288 = -1;
@ -492,7 +524,7 @@ void fn_1_20E0(s32 arg0) {
sp18.x = -20.0f;
sp18.y = 0.0f;
sp18.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 0x3C);
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 60);
BoardCameraMotionWait();
HuPrcSleep(0x3C);
}
@ -507,14 +539,16 @@ void fn_1_26E0(s32 arg0) {
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / 3.141592653589793));
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI));
BoardPlayerRotYSet(arg0, temp);
BoardCameraViewSet(1);
BoardCameraTargetPlayerSet(arg0);
BoardPlayerPosLerpStart(arg0, &sp14, &sp20, 0x28);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardCameraMotionWait();
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
BoardPlayerIdleSet(arg0);
@ -526,8 +560,9 @@ void fn_1_2818(void) {
s16 j;
s16 sp8[3] = {0x0002, 0x003E, 0x007A};
temp_r29 = (4 - lbl_1_bss_2C) * 0x3C;
temp_r29 = (4 - lbl_1_bss_2C) * 60;
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
while (1) {
temp_r30 = BoardModelMotionTimeGet(lbl_1_bss_C[1]);
if (temp_r29 > temp_r30) {
@ -548,6 +583,7 @@ void fn_1_2818(void) {
s32 fn_1_2930(s32 arg0) {
lbl_1_bss_0->unk0--;
if (lbl_1_bss_0->unk0 <= 0) {
lbl_1_bss_0->unk2 = 0;
lbl_1_bss_0->unk0 = 0;
@ -558,6 +594,7 @@ s32 fn_1_2930(s32 arg0) {
fn_1_CF4();
return 1;
}
sprintf(lbl_1_bss_38, "%d", lbl_1_bss_0->unk0);
BoardWinCreate(0, 0x160007, -1);
BoardWinInsertMesSet((s32)lbl_1_bss_38, 1);
@ -579,6 +616,7 @@ void fn_1_2AC0(void) {
HuMemDirectFree(lbl_1_bss_34);
lbl_1_bss_34 = NULL;
}
if (lbl_1_data_286 != -1) {
Hu3DModelKill(lbl_1_data_286);
lbl_1_data_286 = -1;
@ -640,5 +678,3 @@ void fn_1_2B44(void) {
GXPosition2f32(0.0f, 1.0f);
GXSetChanMatColor(GX_COLOR0A0, sp1C);
}
f32 const padStatue = 0.0f;

325
src/REL/w06Dll/main.c Executable file
View file

@ -0,0 +1,325 @@
#include "REL/w06Dll.h"
#include "REL/board_executor.h"
#include "game/audio.h"
#include "game/data.h"
#include "game/flag.h"
#include "game/hsfman.h"
#include "game/object.h"
#include "game/process.h"
#include "game/board/boo_house.h"
#include "game/board/lottery.h"
#include "game/board/main.h"
#include "game/board/map_object.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/shop.h"
#include "game/board/space.h"
#include "game/board/star.h"
#include "dolphin.h"
typedef struct {
struct {
u8 unk00_field0 : 1;
};
s8 unk01[10];
} Bss8Work;
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ Vec unk04;
} Data108Struct; // Size 0x10
static void fn_1_730(void);
static void fn_1_79C(void);
static s32 fn_1_7BC(void);
static s32 fn_1_900(void);
static s32 fn_1_984(void);
static void fn_1_9C0(void);
static void fn_1_B28(void);
static void fn_1_B5C(omObjData *arg0);
s16 lbl_1_bss_C[MAPOBJ_MAX];
static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = {
{ { 450.0f, 200.0f, -2950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 6) },
{ { -1650.0f, 0.0f, 2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 8) },
{ { 2700.0f, 100.0f, -1950.0f }, { 0.0f, -89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
{ { -3000.0f, 0.0f, 2550.0f }, { 0.0f, 89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) },
{ { -1800.0f, 0.0f, 2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) },
{ { 300.0f, 200.0f, -2850.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) }
};
static omObjData *lbl_1_bss_8;
static s32 lbl_1_bss_4;
void *lbl_1_bss_0;
static s16 lbl_1_data_F0 = -1;
static s16 lbl_1_data_F2 = -1;
static s16 lbl_1_data_F4 = -1;
static s16 lbl_1_data_F6 = -1;
static s32 lbl_1_data_F8[] = {
DATA_MAKE_NUM(DATADIR_W06, 18),
-1
};
static s32 lbl_1_data_100[] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 34),
-1
};
static Data108Struct lbl_1_data_108[] = {
0x00000002, { -3359.9998f, 170.0f, -3559.9998f },
0x0000002A, { 3540.0002f, 170.0f, 1320.0f },
0x00000052, { -710.0f, 170.0f, -4580.0f },
0x0000007A, { -3670.0f, 170.0f, 1020.0f },
0x000000A2, { 1970.0001f, 170.0f, -3840.0002f },
0x000000CA, { -3160.0f, 170.0f, -3770.0f },
0x000000F2, { -3500.0f, 170.0f, -2340.0f },
0x0000011A, { -3700.0f, 170.0f, -810.00005f },
0x00000142, { 100.0f, 170.0f, -4100.0f },
0x0000016A, { 3290.0002f, 170.0f, -340.0f }
};
void BoardCreate(void) {
BoardMapObject *temp_r30;
s32 *var_r29;
s32 i;
lbl_1_bss_0 = GWSystem.board_data;
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W06, 0));
lbl_1_data_F0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 1), NULL, 0);
fn_8006DDE8(lbl_1_data_F0, -1.0f);
BoardModelMotionStart(lbl_1_data_F0, 0, 0x40000001);
lbl_1_data_F2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 2), NULL, 0);
fn_8006DDE8(lbl_1_data_F2, -1.0f);
BoardModelPosSet(lbl_1_data_F2, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_F2, 0, 0x40000001);
lbl_1_data_F4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 17), lbl_1_data_F8, 0);
BoardModelPosSet(lbl_1_data_F4, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_F4, 1, 0x40000001);
lbl_1_data_F6 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 33), lbl_1_data_100, 0);
BoardModelPosSet(lbl_1_data_F6, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_F6, 1, 0x40000001);
for (i = 0; i < MAPOBJ_MAX; i++) {
temp_r30 = &lbl_1_data_0[i];
if (temp_r30->data_num != -1) {
if (i == 4 || i == 5) {
var_r29 = lbl_1_data_100;
} else {
var_r29 = NULL;
}
lbl_1_bss_C[i] = BoardModelCreate(temp_r30->data_num, var_r29, 0);
BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos);
BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot);
BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale);
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
}
}
BoardModelMotionStart(lbl_1_bss_C[4], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[5], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0);
BoardModelMotionSpeedSet(lbl_1_bss_C[2], 0.0f);
BoardModelLayerSet(lbl_1_bss_C[2], 1);
BoardModelMotionStart(lbl_1_bss_C[3], 0, 0);
BoardModelMotionSpeedSet(lbl_1_bss_C[3], 0.0f);
BoardModelLayerSet(lbl_1_bss_C[3], 1);
fn_1_D70();
fn_1_4878();
fn_1_7BB0();
fn_1_8F20();
BoardLightHookSet(fn_1_730, fn_1_79C);
BoardSpaceWalkEventFuncSet(fn_1_7BC);
BoardSpaceWalkMiniEventFuncSet(fn_1_900);
BoardSpaceLandEventFuncSet(fn_1_984);
BoardStarHostSet(lbl_1_data_F4);
BoardBooHouseHostSet(lbl_1_data_F6);
BoardLotteryHostSet(lbl_1_data_F6);
BoardShopHostSet(lbl_1_data_F6);
BoardJunctionMaskSet(0x3000);
boardTurnFunc = fn_1_C2B4;
boardStarShowNextHook = fn_1_CD0C;
boardTurnStartFunc = fn_1_9294;
boardStarGiveHook = fn_1_CC90;
boardBowserHook = fn_1_C108;
fn_1_9C0();
}
void BoardDestroy(void) {
s32 i;
fn_1_B28();
boardTurnFunc
= (void*) boardStarShowNextHook
= (void*) boardTurnStartFunc
= (void*) boardStarGiveHook
= (void*) boardBowserHook = NULL;
fn_1_91D8();
fn_1_7F3C();
fn_1_F6C();
fn_1_4A10();
for (i = 0; i < MAPOBJ_MAX; i++) {
BoardModelKill(lbl_1_bss_C[i]);
lbl_1_bss_C[i] = -1;
}
if (lbl_1_data_F6 != -1) {
BoardModelKill(lbl_1_data_F6);
lbl_1_data_F6 = -1;
}
if (lbl_1_data_F4 != -1) {
BoardModelKill(lbl_1_data_F4);
lbl_1_data_F4 = -1;
}
if (lbl_1_data_F0 != -1) {
BoardModelKill(lbl_1_data_F0);
lbl_1_data_F0 = -1;
}
if (lbl_1_data_F2 != -1) {
BoardModelKill(lbl_1_data_F2);
lbl_1_data_F2 = -1;
}
}
static void fn_1_730(void) {
s16 var_r31;
var_r31 = BoardModelIDGet(lbl_1_data_F0);
Hu3DModelLightInfoSet(var_r31, 1);
Hu3DFogSet(4200.0f, 30000.0f, 0xF8, 0x30, 0);
}
static void fn_1_79C(void) {
Hu3DFogClear();
}
static s32 fn_1_7BC(void) {
s32 sp10[] = { 0, 1 };
s32 sp8[] = { 0x300, 0xC0 };
BoardSpace *temp_r31;
s16 temp_r28;
s32 temp_r27;
s32 i;
s32 j;
temp_r27 = GWSystem.player_curr;
temp_r28 = GWPlayer[temp_r27].space_curr;
if (fn_1_92D8(temp_r27, temp_r28) != 0) {
return 1;
}
for (i = 0; i < 2; i++) {
if (BoardSpaceLinkFlagSearch(0, temp_r28, sp8[i]) == -1) {
continue;
}
temp_r31 = BoardSpaceGet(0, temp_r28);
for (j = 0; j < temp_r31->link_cnt; j++) {
if ((BoardSpaceFlagGet(0, temp_r31->link[j]) & 0x04000000) == 0) {
fn_1_8264(sp10[i], temp_r31->link[j]);
return 1;
}
}
}
return 0;
}
static s32 fn_1_900(void) {
s16 var_r30;
s32 temp_r31;
var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
if (temp_r31 == 0x200000) {
fn_1_1054(); // TODO: return?
} else if (temp_r31 == 0x400000) {
fn_1_4A60(); // TODO: return?
}
}
static s32 fn_1_984(void) {
if (BoardPlayerSizeGet(GWSystem.player_curr) != 2) {
fn_1_6EF0(); // TODO: return?
}
}
static void fn_1_9C0(void) {
Vec sp14;
Vec sp8;
omObjData *temp_r3;
Bss8Work *temp_r30;
s32 i;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B5C);
lbl_1_bss_8 = temp_r3;
temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss8Work);
temp_r30->unk00_field0 = 0;
BoardCameraPosGet(&sp14);
BoardCameraDirGet(&sp8);
HuAudFXListnerSetEX(&sp14, &sp8, 6600.0f, 36000.0f, 0.0f, 1650.0f, 1650.0f);
for (i = 0; i < 10; i++) {
temp_r30->unk01[i] = 0;
}
if (!_CheckFlag(FLAG_ID_MAKE(1, 16))) {
if (lbl_1_bss_4 == 0) {
HuAudFXPauseAll(1);
lbl_1_bss_4 = 1;
}
} else if (lbl_1_bss_4 != 0) {
HuAudFXPauseAll(0);
lbl_1_bss_4 = 0;
}
}
static void fn_1_B28(void) {
if (lbl_1_bss_8) {
OM_GET_WORK_PTR(lbl_1_bss_8, Bss8Work)->unk00_field0 = 1;
}
}
static void fn_1_B5C(omObjData *arg0) {
Bss8Work *temp_r30;
Vec sp14;
Vec sp8;
s16 temp_r28;
s16 var_r29;
s16 i;
temp_r30 = OM_GET_WORK_PTR(arg0, Bss8Work);
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
HuAudFXListnerKill();
lbl_1_bss_8 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
temp_r28 = BoardModelMotionTimeGet(lbl_1_data_F0);
BoardCameraDirGet(&sp8);
BoardCameraTargetGet(&sp14);
sp14.y += 2000.0f;
if (!_CheckFlag(FLAG_ID_MAKE(1, 16))) {
if (lbl_1_bss_4 == 0) {
HuAudFXPauseAll(1);
lbl_1_bss_4 = 1;
}
} else if (lbl_1_bss_4 != 0) {
HuAudFXPauseAll(0);
lbl_1_bss_4 = 0;
}
if (!_CheckFlag(FLAG_ID_MAKE(1, 28))) {
for (var_r29 = i = 0; i < 10; i++) {
if (temp_r30->unk01[i] != 0) {
var_r29++;
} else if (temp_r28 == lbl_1_data_108[i].unk00) {
HuAudFXEmiterPlay(0x4A1, &lbl_1_data_108[i].unk04);
temp_r30->unk01[i] = 1;
goto block_20;
}
}
if (var_r29 < 10) {
return;
}
for (i = 0; i < 10; i++) {
temp_r30->unk01[i] = 0;
}
}
block_20:
HuAudFXListnerUpdate(&sp14, &sp8);
}

757
src/REL/w06Dll/mg_coin.c Executable file
View file

@ -0,0 +1,757 @@
#include "REL/w06Dll.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/window.h"
#include "game/board/audio.h"
#include "game/board/com.h"
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/space.h"
#include "game/board/window.h"
#include "dolphin.h"
#include "math.h"
typedef struct {
struct {
u8 unk00_field0 : 1;
u8 unk00_field1 : 4;
u8 unk00_field2 : 1;
};
u8 unk01;
u8 unk02;
char unk03[1];
s16 unk04;
} Bss4CWork;
typedef struct {
struct {
u8 unk00_field0 : 1;
u8 unk00_field1 : 2;
u8 unk00_field2 : 4;
};
u8 unk01;
s16 unk02;
s16 unk04;
} Bss50Work;
// Seems to be the same struct used in w03Dll/mg_coin (unkTemp)
typedef struct {
/* 0x00 */ s8 unk00;
/* 0x01 */ u8 unk01;
/* 0x02 */ s16 unk02;
/* 0x04 */ float unk04;
/* 0x08 */ Vec unk08;
} Bss54WorkData; // Size 0x14
// Seems to be the same struct used in w03Dll/mg_coin (unkTemp2)
typedef struct {
struct {
u8 unk00_field0 : 1;
};
char unk01[3];
s8 unk04;
char unk05[3];
float unk08;
Bss54WorkData *unk0C;
} Bss54Work;
static void fn_1_4B00(void);
static void fn_1_4BA0(void);
static s32 fn_1_4BF8(s32 arg0);
static void fn_1_4FB8(s32 arg0);
static void fn_1_519C(s32 arg0);
static void fn_1_53A0(void);
static void fn_1_5490(s32 arg0);
static void fn_1_56CC(omObjData *arg0);
static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1);
static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1);
static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1);
static void fn_1_5968(Vec *arg0);
static void fn_1_59D0(s32 arg0);
static s32 fn_1_5B0C(void);
static void fn_1_5B54(s32 arg0);
static void fn_1_5CE4(s32 arg0);
static s32 fn_1_5EBC(void);
static void fn_1_5EFC(Vec *arg0);
static void fn_1_5F58(s32 arg0, u32 *arg1);
static void fn_1_606C(omObjData *arg0);
static void fn_1_6A0C(omObjData *arg0);
static void fn_1_6C4C(s32 arg0);
static void fn_1_6E90(Bss54Work *arg0);
static s32 lbl_1_bss_8C;
static char lbl_1_bss_5B[49];
static s8 lbl_1_bss_5A;
static s8 lbl_1_bss_59;
static s8 lbl_1_bss_58;
static omObjData *lbl_1_bss_54;
static omObjData *lbl_1_bss_50;
static omObjData *lbl_1_bss_4C;
static Process *lbl_1_bss_48;
static const u8 lbl_1_rodata_F0[] = {
20, 15, 10, 5, 1
};
static const u8 lbl_1_rodata_F5[] = {
10, 7, 5, 3, 0, 0, 0
};
static s16 lbl_1_data_1D8 = -1;
static s16 lbl_1_data_1DA = -1;
static s16 lbl_1_data_1DC = -1;
void fn_1_4878(void) {
Vec sp8;
float temp_f31;
lbl_1_data_1DC = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 7), NULL, 0);
temp_f31 = 0.3f;
BoardModelPosGet(lbl_1_bss_C[0], &sp8);
sp8.x += 115.0 * sin(M_PI);
sp8.z += 115.0 * cos(M_PI);
sp8.x -= 225.0f;
BoardModelPosSetV(lbl_1_data_1DC, &sp8);
BoardModelRotYSet(lbl_1_data_1DC, 90.0f);
BoardModelScaleSet(lbl_1_data_1DC, temp_f31, temp_f31, temp_f31);
BoardModelMotionStart(lbl_1_data_1DC, 0, 0);
BoardModelMotionSpeedSet(lbl_1_data_1DC, 0.0f);
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
BoardModelMotionSpeedSet(lbl_1_bss_C[0], 0.0f);
}
void fn_1_4A10(void) {
if (lbl_1_data_1DC != -1) {
BoardModelKill(lbl_1_data_1DC);
lbl_1_data_1DC = -1;
}
}
void fn_1_4A60(void) {
lbl_1_bss_8C = 0;
BoardDiceDigit2DShowSet(0);
lbl_1_bss_48 = HuPrcChildCreate(fn_1_4BA0, 0x2003, 0x3800, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_48, fn_1_4B00);
while (lbl_1_bss_48) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
static void fn_1_4B00(void) {
if (lbl_1_data_1DA != -1) {
BoardModelMotionKill(lbl_1_bss_C[5], lbl_1_data_1DA);
lbl_1_data_1DA = -1;
}
if (lbl_1_data_1D8 != -1) {
HuWinKill(lbl_1_data_1D8);
lbl_1_data_1D8 = -1;
}
lbl_1_bss_48 = NULL;
}
static void fn_1_4BA0(void) {
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
if (fn_1_4BF8(temp_r31) != 0) {
fn_1_4FB8(temp_r31);
}
fn_1_519C(temp_r31);
HuPrcEnd();
}
static s32 fn_1_4BF8(s32 arg0) {
Vec sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
BoardWinCreateChoice(2, MAKE_MESSID(48, 26), 6, 0);
if (GWPlayer[arg0].com) {
BoardComKeySetLeft();
}
BoardWinWait();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, MAKE_MESSID(48, 27), 6);
BoardWinWait();
BoardWinKill();
lbl_1_bss_8C = 1;
return 0;
}
BoardWinKill();
sp14.x = 0.0f;
sp14.y = 120.0f;
sp14.z = 0.0f;
sp8.x = -32.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[0], &sp8, &sp14, 1330.0f, -1.0f, 21);
lbl_1_data_1DA = BoardModelMotionCreate(lbl_1_bss_C[5], DATA_MAKE_NUM(DATADIR_W06, 22));
BoardCameraMotionWait();
BoardPlayerPosGet(arg0, &sp2C);
BoardModelPosGet(lbl_1_bss_C[0], &sp38);
sp38.x += 115.0 * sin(M_PI);
sp38.z += 115.0 * cos(M_PI);
PSVECSubtract(&sp38, &sp2C, &sp20);
PSVECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI));
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 40);
BoardModelPosGet(lbl_1_bss_C[5], &sp2C);
BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f);
while (GWPlayer[arg0].moving) {
BoardPlayerPosGet(arg0, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp20.x, sp20.z) / M_PI));
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001);
BoardPlayerIdleSet(arg0);
BoardPlayerRotYSet(arg0, -90.0f);
BoardAudSeqPause(0, 1, 1000);
HuPrcSleep(60);
return 1;
}
static void fn_1_4FB8(s32 arg0) {
s16 temp_r30;
BoardMusStart(1, 0x27, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
fn_1_53A0();
fn_1_5490(arg0);
fn_1_5B54(arg0);
while (TRUE) {
if (fn_1_5EBC() == 4 && fn_1_5B0C() == 4) {
break;
}
HuPrcVSleep();
}
HuWinDispOff(lbl_1_data_1D8);
BoardAudSeqFadeOut(1, 1000);
HuPrcSleep(30);
lbl_1_bss_58 = lbl_1_rodata_F0[lbl_1_bss_5A - 1];
sprintf(lbl_1_bss_5B, "%d", lbl_1_bss_58);
BoardAudSeqPause(0, 0, 1000);
BoardWinCreate(2, MAKE_MESSID(48, 28), 6);
BoardWinInsertMesSet(MAKE_MESSID_PTR(lbl_1_bss_5B), 0);
BoardWinWait();
BoardWinKill();
fn_1_6C4C(arg0);
while (lbl_1_bss_54) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0);
HuPrcSleep(8);
while (!BoardPlayerMotionEndCheck(arg0)) {
HuPrcVSleep();
}
BoardWinCreate(2, MAKE_MESSID(48, 29), 6);
BoardWinWait();
BoardWinKill();
}
static void fn_1_519C(s32 arg0) {
Vec sp20;
Vec sp14;
Vec sp8;
s16 temp_r30;
if (lbl_1_bss_8C == 0) {
temp_r30 = GWPlayer[arg0].space_curr;
BoardPlayerPosGet(arg0, &sp20);
BoardSpacePosGet(0, temp_r30, &sp14);
}
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
if (lbl_1_bss_8C == 0) {
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 40);
BoardModelPosGet(lbl_1_bss_C[5], &sp20);
BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f);
while (GWPlayer[arg0].moving) {
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp14, &sp20, &sp8);
BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp8.x, sp8.z) / M_PI));
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001);
}
BoardModelRotYSet(lbl_1_bss_C[5], 0.0f);
BoardCameraMotionWait();
fn_1_59D0(5);
fn_1_5CE4(5);
}
static void fn_1_53A0(void) {
float sp8[2];
float var_f31;
float var_f30;
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(48, 30));
var_f31 = -10000.0f;
var_f30 = 328.0f;
lbl_1_data_1D8 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(lbl_1_data_1D8, 0.0f);
HuWinMesSpeedSet(lbl_1_data_1D8, 0);
HuWinMesSet(lbl_1_data_1D8, MAKE_MESSID(48, 30));
}
static void fn_1_5490(s32 arg0) {
Vec sp3C;
Vec sp30;
Vec sp24;
Vec sp18;
float temp_f31;
omObjData *temp_r3;
Bss4CWork *temp_r31;
s32 spC[] = {
DATA_MAKE_NUM(DATADIR_W06, 28),
DATA_MAKE_NUM(DATADIR_W06, 29),
-1
};
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_56CC);
lbl_1_bss_4C = temp_r3;
temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss4CWork);
temp_r31->unk00_field0 = 0;
temp_r31->unk02 = 0;
temp_r31->unk00_field2 = 0;
temp_r31->unk00_field1 = 2;
BoardModelPosGet(lbl_1_data_1DC, &sp3C);
sp3C.x += 50.0f;
BoardPlayerPosGet(arg0, &sp30);
sp30.x -= 10.0f;
PSVECSubtract(&sp30, &sp3C, &sp24);
PSVECNormalize(&sp24, &sp18);
temp_r3->trans.x = sp24.x / 60.0f;
temp_r3->trans.y = sp24.y / 60.0f;
temp_r3->trans.z = sp24.z / 60.0f;
temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 27), spC, 0);
temp_f31 = 0.3f;
BoardModelPosSetV(temp_r31->unk04, &sp3C);
BoardModelScaleSet(temp_r31->unk04, temp_f31, temp_f31, temp_f31);
BoardModelVisibilitySet(temp_r31->unk04, 0);
BoardModelRotYSet(temp_r31->unk04, 180.0 * (atan2(sp18.x, sp18.z) / M_PI));
BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001);
BoardModelMotionStart(lbl_1_data_1DC, 0, 0);
}
static void fn_1_56CC(omObjData *arg0) {
Bss4CWork *temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, Bss4CWork);
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
BoardModelKill(temp_r31->unk04);
lbl_1_bss_4C = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk02 != 0) {
temp_r31->unk02--;
return;
}
switch (temp_r31->unk00_field1) {
case 0:
break;
case 1:
fn_1_57DC(arg0, temp_r31);
break;
case 4:
fn_1_58FC(arg0, temp_r31);
break;
case 2:
fn_1_587C(arg0, temp_r31);
break;
case 5:
temp_r31->unk00_field0 = 1;
break;
}
}
static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1) {
Vec sp8;
if (arg1->unk01 == 0) {
fn_1_59D0(3);
return;
}
BoardModelPosGet(arg1->unk04, &sp8);
sp8.x += arg0->trans.x;
sp8.y += arg0->trans.y;
sp8.z += arg0->trans.z;
BoardModelPosSetV(arg1->unk04, &sp8);
arg1->unk01--;
}
static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1) {
if (BoardModelMotionTimeGet(lbl_1_data_1DC) < 32.0f) {
return;
}
arg1->unk00_field1 = 1;
arg1->unk01 = 60;
HuAudFXPlayVolPan(0x49E, 0x7F, 0x20);
BoardModelVisibilitySet(arg1->unk04, 1);
}
static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1) {
if (arg1->unk00_field2 == 0) {
HuAudFXPlay(0x49F);
arg1->unk00_field2 = 1;
}
if (BoardModelMotionEndCheck(arg1->unk04)) {
fn_1_59D0(0);
}
}
static void fn_1_5968(Vec *arg0) {
Bss4CWork *temp_r31;
if (lbl_1_bss_4C && arg0) {
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
BoardModelPosGet(temp_r31->unk04, arg0);
}
}
static void fn_1_59D0(s32 arg0) {
Bss4CWork *temp_r31;
if (!lbl_1_bss_4C) {
return;
}
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
temp_r31->unk00_field1 = arg0;
if (arg0 == 1) {
lbl_1_bss_4C->trans.x = 0.96666666f * sin(90 * M_PI / 180.0);
lbl_1_bss_4C->trans.z = 0.96666666f * cos(90 * M_PI / 180.0);
temp_r31->unk01 = 60;
return;
}
if (arg0 == 0) {
BoardPlayerMotionSpeedSet(temp_r31->unk04, 1.0f);
return;
}
if (arg0 == 4) {
BoardModelMotionShiftSet(temp_r31->unk04, 2, 0.0f, 8.0f, 0);
temp_r31->unk02 = 10;
return;
}
}
static s32 fn_1_5B0C(void) {
Bss4CWork *temp_r31;
if (lbl_1_bss_4C) {
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork);
return temp_r31->unk00_field1;
}
return -1;
}
static s32 lbl_1_data_1E4[8] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 126),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 126),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 126),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 126),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 126),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 126),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 126),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 126)
};
static void fn_1_5B54(s32 arg0) {
Vec sp8;
float var_f31;
omObjData *temp_r3;
Bss50Work *temp_r31;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_606C);
lbl_1_bss_50 = temp_r3;
temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss50Work);
temp_r31->unk00_field0 = 0;
temp_r31->unk00_field1 = arg0;
temp_r31->unk01 = 0;
temp_r31->unk00_field2 = 1;
temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 13), NULL, 0);
temp_r31->unk02 = BoardPlayerMotionCreate(arg0, lbl_1_data_1E4[GWPlayer[arg0].character]);
var_f31 = 0.3f;
BoardModelScaleSet(temp_r31->unk04, var_f31, var_f31, var_f31);
BoardPlayerPosGet(temp_r31->unk00_field1, &sp8);
BoardModelPosSetV(temp_r31->unk04, &sp8);
BoardModelVisibilitySet(temp_r31->unk04, 0);
temp_r3->trans.x = sp8.x;
temp_r3->trans.y = sp8.y;
temp_r3->trans.z = sp8.z;
lbl_1_bss_59 = 0;
lbl_1_bss_5A = 0;
}
static void fn_1_5CE4(s32 arg0) {
Vec sp14;
Vec sp8;
Bss50Work *temp_r31;
if (!lbl_1_bss_50) {
return;
}
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
temp_r31->unk00_field2 = arg0;
if (arg0 == 2) {
temp_r31->unk01 = 60;
BoardPlayerPosGet(temp_r31->unk00_field1, &sp8);
if (lbl_1_bss_5A >= 1) {
BoardModelVisibilitySet(temp_r31->unk04, 1);
}
BoardModelMotionStart(temp_r31->unk04, 0, 0x40000001);
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
omVibrate(temp_r31->unk00_field1, 12, 4, 2);
fn_1_5968(&sp14);
sp8.x = sp14.x + 18.0 * sin(90 * M_PI / 180.0);
sp8.z = sp14.z + 18.0 * cos(90 * M_PI / 180.0);
BoardPlayerPosSetV(temp_r31->unk00_field1, &sp8);
BoardModelPosSetV(temp_r31->unk04, &sp8);
return;
}
if (arg0 == 3) {
BoardModelVisibilitySet(temp_r31->unk04, 0);
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
return;
}
}
static s32 fn_1_5EBC(void) {
Bss50Work *temp_r31;
if (!lbl_1_bss_50) {
return;
}
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
return temp_r31->unk00_field2;
}
static void fn_1_5EFC(Vec *arg0) {
Bss50Work *temp_r31;
if (lbl_1_bss_50) {
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work);
BoardPlayerPosGet(temp_r31->unk00_field1, arg0);
}
}
static void fn_1_5F58(s32 arg0, u32 *arg1) {
u32 var_r31;
s32 var_r28;
s32 temp_r30;
var_r31 = 0;
var_r28 = GWPlayer[arg0].port;
if (GWPlayer[arg0].com) {
temp_r30 = BoardRandMod(100);
switch (GWPlayer[arg0].diff) {
case 0:
if (temp_r30 < 12) {
var_r31 = 0x100;
}
break;
case 1:
if (temp_r30 < 22) {
var_r31 = 0x100;
}
break;
case 2:
if (temp_r30 < 50) {
var_r31 = 0x100;
}
break;
case 3:
var_r31 = 0x100;
break;
}
} else {
var_r31 = HuPadBtnDown[var_r28] & 0x100;
}
*arg1 = var_r31;
}
static void fn_1_606C(omObjData *arg0) {
Vec sp64;
Vec sp58;
u32 var_r18;
Bss50Work *temp_r31;
var_r18 = 0;
temp_r31 = OM_GET_WORK_PTR(arg0, Bss50Work);
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
BoardPlayerMotionKill(temp_r31->unk00_field1, temp_r31->unk02);
BoardModelKill(temp_r31->unk04);
lbl_1_bss_50 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
switch (temp_r31->unk00_field2) {
case 0:
break;
case 1:
if (fn_1_5B0C() == 3) {
fn_1_5CE4(2);
}
break;
case 2:
if (temp_r31->unk01 == 0) {
if (lbl_1_bss_5A >= 5) {
fn_1_5CE4(4);
fn_1_59D0(4);
} else {
fn_1_5CE4(3);
fn_1_59D0(1);
lbl_1_bss_59 = 0;
lbl_1_bss_5A++;
}
} else {
fn_1_5F58(temp_r31->unk00_field1, &var_r18);
if (var_r18 == 0x100) {
lbl_1_bss_59++;
if (lbl_1_bss_5A != 0 && lbl_1_bss_59 >= lbl_1_rodata_F5[lbl_1_bss_5A - 1]) {
fn_1_5CE4(4);
fn_1_59D0(4);
}
BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001);
}
temp_r31->unk01--;
}
break;
case 3:
if (fn_1_5B0C() == 3) {
fn_1_5CE4(2);
return;
}
fn_1_5968(&sp64);
BoardPlayerPosGet(temp_r31->unk00_field1, &sp58);
sp58.x = sp64.x + 18.0 * sin(90 * M_PI / 180.0);
sp58.z = sp64.z + 18.0 * cos(90 * M_PI / 180.0);
BoardPlayerPosSetV(temp_r31->unk00_field1, &sp58);
BoardModelPosSetV(temp_r31->unk04, &sp58);
BoardModelRotYSet(temp_r31->unk04, BoardPlayerRotYGet(temp_r31->unk00_field1));
break;
case 5:
temp_r31->unk00_field0 = 1;
/* fallthrough */
case 4:
BoardPlayerIdleSet(temp_r31->unk00_field1);
BoardPlayerRotYSet(temp_r31->unk00_field1, 0.0f);
BoardModelVisibilitySet(temp_r31->unk04, 0);
fn_1_5CE4(0);
break;
}
}
static void fn_1_6A0C(omObjData *arg0) {
float temp_f31;
Bss54Work *temp_r29;
Bss54WorkData *var_r30;
s32 var_r26;
s32 var_r27;
s32 i;
temp_r29 = OM_GET_WORK_PTR(arg0, Bss54Work);
if (temp_r29->unk00_field0 != 0 || BoardIsKill()) {
fn_1_6E90(temp_r29);
HuMemDirectFree(temp_r29->unk0C);
lbl_1_bss_54 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
var_r30 = temp_r29->unk0C;
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
if (var_r30->unk00 == 0) {
var_r27++;
}
}
if (var_r27 == 20) {
temp_r29->unk00_field0 = 1;
return;
}
var_r26 = 0;
for (i = 0; i < 20; i++) {
var_r30 = &temp_r29->unk0C[i];
if (var_r30->unk00 == 1 && var_r26 == 0) {
var_r30->unk00 = 2;
var_r26 = 1;
}
if (var_r30->unk00 == 2) {
var_r30->unk01++;
OSu8tof32(&var_r30->unk01, &temp_f31);
var_r30->unk04 += 45.0f;
var_r30->unk08.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
if (var_r30->unk08.y < temp_r29->unk08) {
var_r30->unk08.y = temp_r29->unk08;
CharModelCoinEffectCreate(1, &var_r30->unk08);
BoardModelVisibilitySet(var_r30->unk02, 0);
HuAudFXPlay(7);
BoardPlayerCoinsAdd(temp_r29->unk04, 1);
omVibrate(temp_r29->unk04, 12, 6, 6);
var_r30->unk00 = 0;
}
BoardModelPosSetV(var_r30->unk02, &var_r30->unk08);
BoardModelRotYSet(var_r30->unk02, var_r30->unk04);
}
}
}
static void fn_1_6C4C(s32 arg0) {
Vec sp8;
float var_f31;
omObjData *temp_r3;
Bss54Work *temp_r30;
Bss54WorkData *temp_r31;
s32 i;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_6A0C);
lbl_1_bss_54 = temp_r3;
temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss54Work);
temp_r30->unk00_field0 = 0;
temp_r30->unk04 = arg0;
temp_r30->unk0C = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(Bss54WorkData), MEMORY_DEFAULT_NUM);
BoardPlayerPosGet(arg0, &sp8);
temp_r30->unk08 = sp8.y + 80.0f;
memset(temp_r30->unk0C, 0, 20 * sizeof(Bss54WorkData));
for (i = 0; i < lbl_1_bss_58; i++) {
if (i == 0) {
var_f31 = 0.0f;
} else {
var_f31 = BoardRandFloat();
}
temp_r31 = &temp_r30->unk0C[i];
temp_r31->unk00 = 1;
temp_r31->unk08.x = sp8.x + 50.0 * sin(360.0f * var_f31 * M_PI / 180.0);
temp_r31->unk08.z = sp8.z + 50.0 * cos(360.0f * var_f31 * M_PI / 180.0);
temp_r31->unk08.y = sp8.y + 600.0f + 500.0f * BoardRandFloat();
temp_r31->unk01 = 0;
temp_r31->unk04 = 360.0f * BoardRandFloat();
temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1);
}
}
static void fn_1_6E90(Bss54Work *arg0) {
Bss54WorkData *var_r30;
s32 i;
for (i = 0; i < 20; i++) {
var_r30 = &arg0->unk0C[i];
BoardModelKill(var_r30->unk02);
}
}

1196
src/REL/w06Dll/mg_item.c Executable file

File diff suppressed because it is too large Load diff

View file

@ -9,25 +9,25 @@
#include "game/board/tutorial.h"
#include "game/board/main.h"
#include "game/board/boo_house.h"
#include "game/board/map_object.h"
#include "math.h"
//BSS
s16 lbl_1_bss_10[1];
s16 w10ExitWin;
s16 tutorialDoneF;
void* lbl_1_bss_8;
s32 lbl_1_bss_4;
W10BoardWork *boardWork;
//DATA
unkw10Dll lbl_1_data_0[1] = {
//Map Objects
static BoardMapObject mapObjTbl[MAPOBJ_MAX] = {
3300.0f, 100.0f, -900.0f,
0.0f, 0.0f, 0.0f,
1.0f, 1.0f, 1.0f,
DATA_MAKE_NUM(DATADIR_W10, 3)
};
s16 boardMapObjMdl[MAPOBJ_MAX];
s16 tutorialExitWin;
s16 tutorialDoneF;
static s32 *motTbl;
s32 lbl_1_bss_4;
W10BoardWork *boardWork;
static s16 bgMdl = -1;
static s16 fgMdl = -1;
@ -36,8 +36,7 @@ s16 boardShopHostMdl = -1;
s16 boardLotteryHostMdl = -1;
s16 boardBooHouseHostMdl = -1;
//unused?
s32 lbl_1_data_34[] = {
static s32 charMotDirTbl[] = {
DATADIR_MARIOMOT, DATADIR_LUIGIMOT,
DATADIR_PEACHMOT, DATADIR_YOSHIMOT,
DATADIR_WARIOMOT, DATADIR_DONKEYMOT,
@ -76,7 +75,7 @@ void BoardCreate(void)
float size[2];
s32 i;
unkw10Dll* temp_r30;
BoardMapObject *temp_r30;
s32 space;
s32 board;
@ -111,21 +110,21 @@ void BoardCreate(void)
boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0);
BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001);
BoardLightHookSet(LightSetHook, LightResetHook);
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
temp_r30 = &lbl_1_data_0[i];
if (temp_r30->unk24 != -1) {
lbl_1_bss_8 = NULL;
lbl_1_bss_10[i] = BoardModelCreate(temp_r30->unk24, lbl_1_bss_8, 0);
BoardModelPosSetV(lbl_1_bss_10[i], &temp_r30->unk0);
BoardModelRotSetV(lbl_1_bss_10[i], &temp_r30->unk0C);
BoardModelScaleSetV(lbl_1_bss_10[i], &temp_r30->unk18);
BoardModelVisibilitySet(lbl_1_bss_10[i], 1);
if (lbl_1_bss_8 != NULL) {
BoardModelMotionStart(lbl_1_bss_10[i], 0, 0x40000001);
for (i = 0; i < MAPOBJ_MAX; i++) {
temp_r30 = &mapObjTbl[i];
if (temp_r30->data_num != -1) {
motTbl = NULL;
boardMapObjMdl[i] = BoardModelCreate(temp_r30->data_num, motTbl, 0);
BoardModelPosSetV(boardMapObjMdl[i], &temp_r30->pos);
BoardModelRotSetV(boardMapObjMdl[i], &temp_r30->rot);
BoardModelScaleSetV(boardMapObjMdl[i], &temp_r30->scale);
BoardModelVisibilitySet(boardMapObjMdl[i], 1);
if (motTbl != NULL) {
BoardModelMotionStart(boardMapObjMdl[i], 0, 0x40000001);
}
}
}
BoardModelVisibilitySet(lbl_1_bss_10[0], 0);
BoardModelVisibilitySet(boardMapObjMdl[MAPOBJ_MELON], 0);
boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
BoardModelVisibilitySet(boardWork->focus_mdl, 0);
BoardSpaceWalkEventFuncSet(WalkEvent);
@ -136,20 +135,20 @@ void BoardCreate(void)
BoardShopHostSet(boardShopHostMdl);
BoardLotteryHostSet(boardLotteryHostMdl);
HuWinMesMaxSizeGet(1, size, 0x2E003A);
w10ExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
HuWinMesSet(w10ExitWin, 0x2E003A);
HuWinMesSpeedSet(w10ExitWin, 0);
HuWinPriSet(w10ExitWin, 1);
HuWinMesPalSet(w10ExitWin, 7, 0, 0, 0);
tutorialExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
HuWinMesSet(tutorialExitWin, 0x2E003A);
HuWinMesSpeedSet(tutorialExitWin, 0);
HuWinPriSet(tutorialExitWin, 1);
HuWinMesPalSet(tutorialExitWin, 7, 0, 0, 0);
}
void BoardDestroy(void)
{
s32 i;
for (i = 0; i < 1; i++) {
if (lbl_1_bss_10[i] != 0) {
BoardModelKill(lbl_1_bss_10[i]);
lbl_1_bss_10[i] = 0;
if (boardMapObjMdl[i] != 0) {
BoardModelKill(boardMapObjMdl[i]);
boardMapObjMdl[i] = 0;
}
}
if (boardBooHouseHostMdl != -1) {
@ -178,7 +177,7 @@ void BoardDestroy(void)
}
BoardModelKill(boardWork->focus_mdl);
TutorialSprKill();
HuWinKill(w10ExitWin);
HuWinKill(tutorialExitWin);
BoardSpaceDestroy();
}

View file

@ -8,16 +8,16 @@
static s16 sprList[11];
static s16 sprCurr;
void CloseTutorial(void) {
static void CloseTutorial(void) {
s32 port;
s32 i;
if (tutorialDoneF == 0) {
if (WipeStatGet() != 0) {
HuWinDispOff(w10ExitWin);
HuWinDispOff(tutorialExitWin);
return;
}
HuWinDispOn(w10ExitWin);
HuWinDispOn(tutorialExitWin);
if (BoardIsKill() != 0) {
return;
}

View file

@ -2,6 +2,7 @@
#include "game/audio.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/object.h"
#include "game/objsub.h"
@ -84,7 +85,7 @@ static omObjData *battleObj;
static Process *battleProc;
static const s8 battleCoinTbl[] = {
0x05, 0x0A, 0x14, 0x1E, 0x32
5, 10, 20, 30, 50
};
static float battleCursorPosTbl[] = {
@ -133,7 +134,7 @@ void BoardBattleExec(s32 player, s32 space) {
}
static void DestroyBattle(void) {
HuDataDirClose(0x10000);
HuDataDirClose(DATADIR_BBATTLE);
battleProc = NULL;
}
@ -201,13 +202,13 @@ static void ExecBattle(void) {
HuPrcVSleep();
}
_ClearFlag(0x1001C);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuPrcEnd();
}
HuAudFXPlay(0x34A);
omVibrate(GWSystem.player_curr, 0xC, 6, 6);
BoardAudSeqPause(0, 1, 0x1F4);
temp_r22 = BoardDataDirReadAsync(0x10000);
omVibrate(GWSystem.player_curr, 12, 6, 6);
BoardAudSeqPause(0, 1, 500);
temp_r22 = BoardDataDirReadAsync(DATADIR_BBATTLE);
BoardCameraViewSet(3);
BoardCameraMotionWait();
BoardPlayerMotBlendSet(currPlayer, 0, 0xF);
@ -217,7 +218,7 @@ static void ExecBattle(void) {
BoardDataAsyncWait(temp_r22);
SetBattleCoinValue();
BoardMusStart(1, 4, 0x7F, 0);
omVibrate(GWSystem.player_curr, 0xC, 6, 6);
omVibrate(GWSystem.player_curr, 12, 6, 6);
InitExplode();
while (CheckExplode() == 0) {
HuPrcVSleep();
@ -235,13 +236,13 @@ static void ExecBattle(void) {
}
}
if (var_r26 == 0) {
BoardWinCreate(2, 0x20001, 1);
BoardWinCreate(2, MAKE_MESSID(2, 1), 1);
BoardWinWait();
BoardWinKill();
var_r27 = 1;
} else {
HuAudFXPlay(0x4F);
BoardWinCreate(2, 0x20000, 1);
BoardWinCreate(2, MAKE_MESSID(2, 0), 1);
BoardWinWait();
BoardWinKill();
SetBattleBombState(3);
@ -260,7 +261,7 @@ static void ExecBattle(void) {
var_r23 = 1;
}
var_r25 = var_r23;
HuPrcSleep(0x3C);
HuPrcSleep(60);
} else {
var_r25 = -1;
}
@ -279,15 +280,15 @@ static void ExecBattle(void) {
BoardMusVolPanSet(0, 0, 1);
BoardAudSeqPause(0, 0, 1);
if (var_r27 == 0) {
HuDataDirClose(0x70000);
HuDataDirClose(0x20000);
HuDataDirClose(DATADIR_BOARD);
HuDataDirClose(DATADIR_BGUEST);
HuDataDirClose(sp8[GWBoardGet()]);
HuPrcSleep(2);
temp_r28 = battleMGList[battleMGIdx[mgChoice]];
GWMGAvailSet(temp_r28);
GWSystem.mg_next = temp_r28 - 401;
if (_CheckFlag(0xB)) {
var_r24 = 0x140000;
var_r24 = DATADIR_INST;
} else {
var_r24 = mgInfoTbl[temp_r28 - 401].data_dir;
}
@ -375,12 +376,12 @@ static void TakeCoins(void) {
HuAudFXPlay(0xF);
sprintf(totalCoinStr, "%d", var_r30);
if (var_r30 != coinTakeMax * 4) {
var_r24 = 0x20003;
var_r24 = MAKE_MESSID(2, 3);
} else {
var_r24 = 0x20002;
var_r24 = MAKE_MESSID(2, 2);
}
BoardWinCreate(2, var_r24, 1);
BoardWinInsertMesSet((u32) totalCoinStr, 0);
BoardWinInsertMesSet(MAKE_MESSID_PTR(totalCoinStr), 0);
BoardWinWait();
BoardWinKill();
}
@ -403,7 +404,7 @@ static void InitExplode(void) {
temp_r31->unk00_field0 = 0;
temp_r31->unk00_field1 = 0;
temp_r31->unk01 = 0x10;
temp_r31->unk02 = BoardModelCreate(0x20026, NULL, 0);
temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 38), NULL, 0);
BoardModelLayerSet(temp_r31->unk02, 2);
explodeObj->trans.x = sp14.x;
explodeObj->trans.y = sp14.y - 100.0f;
@ -411,7 +412,7 @@ static void InitExplode(void) {
BoardModelPosSet(temp_r31->unk02, explodeObj->trans.x, explodeObj->trans.y, explodeObj->trans.z);
BoardModelMotionStart(temp_r31->unk02, 0, 0x40000001);
for (i = 0; i < 4; i++) {
temp_r31->unk04[i] = BoardModelCreate(0x70066, NULL, 0);
temp_r31->unk04[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 102), NULL, 0);
sp8.x = sp14.x + sp20[i][0];
sp8.y = sp14.y;
sp8.z = sp14.z + sp20[i][1];
@ -534,7 +535,7 @@ static void CreateBattleMain(void) {
}
HuSprGrpPosSet(temp_r31->unk08, 288.0f, 240.0f);
battleObj->trans.x = -308.0f;
BoardFilterFadeInit(0x1E, 0xA0);
BoardFilterFadeInit(30, 0xA0);
}
static void UpdateBattleMain(omObjData *arg0) {
@ -614,7 +615,7 @@ static void ShowBattleGame(BattleWork *arg0, omObjData *arg1) {
float var_r29;
if (arg0->unk01 == 0) {
if (BoardFilterFadePauseCheck() != 0) {
if (BoardFilterFadePauseCheck()) {
arg0->unk01 = 1;
arg1->trans.z = 0.01f;
arg1->trans.y = 0.0f;
@ -711,7 +712,7 @@ static void ShowBattleCoin(BattleWork *arg0, omObjData *arg1) {
while (var_f30 > 180.0f) {
var_f30 -= 180.0f;
}
temp_f29 = 0.8999999761581421 + sin(var_f30 * M_PI / 180.0);
temp_f29 = 0.9f + sin(var_f30 * M_PI / 180.0);
HuSprScaleSet(arg0->unk08, 1, temp_f29, temp_f29);
}
@ -750,7 +751,7 @@ static void VibratePad(BattleWork *arg0, omObjData *arg1) {
s32 i;
for (i = 0; i < 4; i++) {
omVibrate(i, 0xC, 0xC, 0);
omVibrate(i, 12, 0xC, 0);
}
arg0->unk00_field1 = 8;
}

View file

@ -1,16 +1,20 @@
#include "game/board/boo.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/flag.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/space.h"
#include "game/board/window.h"
#include "math.h"
@ -22,8 +26,7 @@ typedef struct {
s8 unk01;
s8 unk02;
char unk03[1];
s16 unk04;
s16 unk06;
s16 unk04[2];
} BooEventWork;
typedef struct {
@ -92,8 +95,6 @@ typedef struct {
float unk04;
} BallTakeCoinWork;
void BoardSpaceCameraSet(u16);
static void ComSetupStealPlayer(s32 arg0);
static void ComSetStealPlayerInput(s32 arg0, s32 arg1);
static void ExecCoinSteal(void);
@ -152,14 +153,14 @@ static omObjData *ballObj;
static omObjData *booEventObj;
static s32 booPlayerMotTbl[8][6] = {
{ 0x0009000B, 0x00090013, 0x0009001B, 0x00090023, 0x0009002B, 0x00090033 },
{ 0x0009000C, 0x00090014, 0x0009001C, 0x00090024, 0x0009002C, 0x00090034 },
{ 0x0009000D, 0x00090015, 0x0009001D, 0x00090025, 0x0009002D, 0x00090035 },
{ 0x0009000E, 0x00090016, 0x0009001E, 0x00090026, 0x0009002E, 0x00090036 },
{ 0x0009000F, 0x00090017, 0x0009001F, 0x00090027, 0x0009002F, 0x00090037 },
{ 0x00090010, 0x00090018, 0x00090020, 0x00090028, 0x00090030, 0x00090038 },
{ 0x00090011, 0x00090019, 0x00090021, 0x00090029, 0x00090031, 0x00090039 },
{ 0x00090012, 0x0009001A, 0x00090022, 0x0009002A, 0x00090032, 0x0009003A }
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 11), DATA_MAKE_NUM(DATADIR_BYOKODORI, 19), DATA_MAKE_NUM(DATADIR_BYOKODORI, 27), DATA_MAKE_NUM(DATADIR_BYOKODORI, 35), DATA_MAKE_NUM(DATADIR_BYOKODORI, 43), DATA_MAKE_NUM(DATADIR_BYOKODORI, 51) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 12), DATA_MAKE_NUM(DATADIR_BYOKODORI, 20), DATA_MAKE_NUM(DATADIR_BYOKODORI, 28), DATA_MAKE_NUM(DATADIR_BYOKODORI, 36), DATA_MAKE_NUM(DATADIR_BYOKODORI, 44), DATA_MAKE_NUM(DATADIR_BYOKODORI, 52) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 13), DATA_MAKE_NUM(DATADIR_BYOKODORI, 21), DATA_MAKE_NUM(DATADIR_BYOKODORI, 29), DATA_MAKE_NUM(DATADIR_BYOKODORI, 37), DATA_MAKE_NUM(DATADIR_BYOKODORI, 45), DATA_MAKE_NUM(DATADIR_BYOKODORI, 53) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 14), DATA_MAKE_NUM(DATADIR_BYOKODORI, 22), DATA_MAKE_NUM(DATADIR_BYOKODORI, 30), DATA_MAKE_NUM(DATADIR_BYOKODORI, 38), DATA_MAKE_NUM(DATADIR_BYOKODORI, 46), DATA_MAKE_NUM(DATADIR_BYOKODORI, 54) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 15), DATA_MAKE_NUM(DATADIR_BYOKODORI, 23), DATA_MAKE_NUM(DATADIR_BYOKODORI, 31), DATA_MAKE_NUM(DATADIR_BYOKODORI, 39), DATA_MAKE_NUM(DATADIR_BYOKODORI, 47), DATA_MAKE_NUM(DATADIR_BYOKODORI, 55) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 16), DATA_MAKE_NUM(DATADIR_BYOKODORI, 24), DATA_MAKE_NUM(DATADIR_BYOKODORI, 32), DATA_MAKE_NUM(DATADIR_BYOKODORI, 40), DATA_MAKE_NUM(DATADIR_BYOKODORI, 48), DATA_MAKE_NUM(DATADIR_BYOKODORI, 56) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 17), DATA_MAKE_NUM(DATADIR_BYOKODORI, 25), DATA_MAKE_NUM(DATADIR_BYOKODORI, 33), DATA_MAKE_NUM(DATADIR_BYOKODORI, 41), DATA_MAKE_NUM(DATADIR_BYOKODORI, 49), DATA_MAKE_NUM(DATADIR_BYOKODORI, 57) },
{ DATA_MAKE_NUM(DATADIR_BYOKODORI, 18), DATA_MAKE_NUM(DATADIR_BYOKODORI, 26), DATA_MAKE_NUM(DATADIR_BYOKODORI, 34), DATA_MAKE_NUM(DATADIR_BYOKODORI, 42), DATA_MAKE_NUM(DATADIR_BYOKODORI, 50), DATA_MAKE_NUM(DATADIR_BYOKODORI, 58) }
};
static s32 booSfxTbl[4][8] = {
@ -182,17 +183,17 @@ static s32 booSfxTbl[4][8] = {
};
static s32 hostMess[] = {
0x0007000E,
0x00070014,
0x0007001A,
0x00070020,
0x00070026,
0x0007002C
MAKE_MESSID(7, 14),
MAKE_MESSID(7, 20),
MAKE_MESSID(7, 26),
MAKE_MESSID(7, 32),
MAKE_MESSID(7, 38),
MAKE_MESSID(7, 44)
};
static s32 ballMdlTbl[] = {
0x00090002,
0x00090006
DATA_MAKE_NUM(DATADIR_BYOKODORI, 2),
DATA_MAKE_NUM(DATADIR_BYOKODORI, 6)
};
s16 BoardBooCreate(s32 arg0, Vec *arg1) {
@ -218,8 +219,8 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1) {
booEventObj->trans.x = spC.x;
booEventObj->trans.y = spC.y;
booEventObj->trans.z = spC.z;
CreateBallMdl(&temp_r31->unk04, &spC);
return temp_r31->unk04;
CreateBallMdl(temp_r31->unk04, &spC);
return temp_r31->unk04[0];
}
void BoardBooKill(void) {
@ -256,19 +257,19 @@ s32 BoardBooStealTypeSet(s32 arg0) {
stealType = -1;
return 0;
}
if (_CheckFlag(0x10018)) {
if (_CheckFlag(FLAG_ID_MAKE(1, 24))) {
var_r25 = BoardWinPortraitGet();
var_r28 = hostMess[GWBoardGet()];
} else {
var_r25 = 3;
var_r28 = 0x120019;
var_r28 = MAKE_MESSID(18, 25);
}
BoardWinCreateChoice(1, var_r28, var_r25, 0);
BoardWinAttrSet(0x10);
if (stealType == 0) {
var_r28 = 0x70030;
var_r28 = MAKE_MESSID(7, 48);
} else {
var_r28 = 0x70031;
var_r28 = MAKE_MESSID(7, 49);
}
BoardWinInsertMesSet(var_r28, 0);
for (i = 0; i < 3; i++) {
@ -312,10 +313,10 @@ static void ComSetupStealPlayer(s32 arg0) {
switch (GWPlayer[arg0].diff) {
case 0:
var_r29 = 0x5F;
var_r29 = 95;
break;
case 1:
var_r29 = 0x32;
var_r29 = 50;
break;
case 2:
var_r29 = 5;
@ -324,7 +325,7 @@ static void ComSetupStealPlayer(s32 arg0) {
var_r29 = 0;
break;
}
var_r22 = BoardRandMod(0x64);
var_r22 = BoardRandMod(100);
if (var_r22 >= var_r29) {
var_r24 = 1;
} else {
@ -400,9 +401,9 @@ s32 BoardBooStealMain(void) {
if (var_r31 != -1) {
stealType = 2;
BoardPlayerItemRemove(stealTarget, var_r31);
var_r30 = 0x70004;
var_r30 = MAKE_MESSID(7, 4);
} else {
var_r30 = 0x70003;
var_r30 = MAKE_MESSID(7, 3);
}
BoardCameraMotionWait();
for (var_r31 = 0; var_r31 < 4; var_r31++) {
@ -411,7 +412,7 @@ s32 BoardBooStealMain(void) {
}
}
CreateBallPlayer();
omVibrate(stealTarget, 0xC, 4, 2);
omVibrate(stealTarget, 12, 4, 2);
SetBallActive(1);
while (!CheckBallKill()) {
HuPrcVSleep();
@ -470,7 +471,7 @@ static void ExecCoinSteal(void) {
SetBallPlayerState(4);
SetBallBooState(3);
punchCount = 0;
HuPrcSleep(0x78);
HuPrcSleep(120);
while (GetBallBooState() != 0) {
HuPrcVSleep();
}
@ -551,7 +552,7 @@ static void CreateBallView(void) {
ballObj = omAddObjEx(boardObjMan, 0x1001, 0, 0, -1, BallMain);
temp_r31 = OM_GET_WORK_PTR(ballObj, BallWork);
temp_r31->unk00_field0 = 0;
temp_r31->unk08 = HuSprAnimMake(0x50, 0x50, 2);
temp_r31->unk08 = HuSprAnimMake(80, 80, 2);
temp_r29 = temp_r31->unk08->bmp;
temp_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x3200, MEMORY_DEFAULT_NUM);
memset(temp_r29->data, 0, 0x3200);
@ -559,7 +560,7 @@ static void CreateBallView(void) {
Hu3DModelLayerSet(temp_r31->unk04, 3);
Hu3DModelCameraSet(temp_r31->unk04, 1);
temp_r31->unk06 = Hu3DProjectionCreate(temp_r31->unk08, 25.0f, 100.0f, 13000.0f);
Hu3DModelProjectionSet(BoardModelIDGet(temp_r28->unk06), temp_r31->unk06);
Hu3DModelProjectionSet(BoardModelIDGet(temp_r28->unk04[1]), temp_r31->unk06);
Hu3DProjectionTPLvlSet(temp_r31->unk06, 0.0f);
ballCameraObj = omAddObjEx(boardObjMan, 0x7E03, 0, 0, -1, UpdateBallCamera);
temp_r30 = OM_GET_WORK_PTR(ballCameraObj, BallCameraWork);
@ -589,7 +590,7 @@ static void SetBallView(s32 arg0) {
BoardSpaceCameraSet(var_r31);
BoardModelCameraSetAll(var_r31);
BoardCameraMaskSet((u16) var_r31);
BoardCameraScissorSet(0, 0, 0x280, 0x1E0);
BoardCameraScissorSet(0, 0, 640, 480);
}
static void SetBallActive(s32 arg0) {
@ -623,7 +624,7 @@ static void BallMain(omObjData *arg0) {
s16 *temp_r29;
if (booKillF != 0 || BoardIsKill() != 0) {
temp_r29 = (s16*) &OM_GET_WORK_PTR(booEventObj, BooEventWork)->unk04;
temp_r29 = OM_GET_WORK_PTR(booEventObj, BooEventWork)->unk04;
Hu3DModelProjectionReset(BoardModelIDGet(temp_r29[1]), temp_r30->unk06);
Hu3DProjectionKill(temp_r30->unk06);
Hu3DModelKill(temp_r30->unk04);
@ -642,8 +643,8 @@ static void BallMain(omObjData *arg0) {
sp14.z = cos(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0);
if (temp_r30->unk01 != 0) {
temp_r30->unk02 += temp_r30->unk01;
if (temp_r30->unk02 > 0xFF) {
temp_r30->unk02 = 0xFF;
if (temp_r30->unk02 > 255) {
temp_r30->unk02 = 255;
temp_r30->unk01 = 0;
} else if (temp_r30->unk02 < 0) {
temp_r30->unk02 = 0;
@ -671,15 +672,15 @@ static void BallRenderHook(void) {
temp_r31 = OM_GET_WORK_PTR(ballObj, BallWork);
sp10.a = sp10.r = sp10.g = sp10.b = 0;
GXSetCopyClear(sp10, -1);
GXSetTexCopySrc(0, 0, 0xA0, 0xA0);
GXSetTexCopyDst(0x50, 0x50, GX_TF_RGB5A3, GX_TRUE);
GXSetTexCopySrc(0, 0, 160, 160);
GXSetTexCopyDst(80, 80, GX_TF_RGB5A3, GX_TRUE);
GXCopyTex(temp_r31->unk08->bmp->data, GX_TRUE);
DCFlushRange(temp_r31->unk08->bmp->data, 0x3200);
DCFlushRange(temp_r31->unk08->bmp->data, 12800);
GXPixModeSync();
C_MTXPerspective(sp68, 25.0f, 1.2f, 100.0f, 13000.0f);
GXSetProjection(sp68, GX_PERSPECTIVE);
GXSetViewport(0.0f, 0.0f, 160.0f, 160.0f, 0.0f, 1.0f);
GXSetScissor(0, 0, 0xA0, 0xA0);
GXSetScissor(0, 0, 160, 160);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
@ -710,8 +711,8 @@ static void BallRenderHook(void) {
sp20.z = 0.0f;
C_MTXLookAt(sp38, &sp2C, &sp20, &sp14);
GXLoadPosMtxImm(sp38, GX_PNMTX0);
sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2000000476837158;
sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333134651184;
sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2f;
sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333f;
sp2C.z = -9000.0f;
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-sp2C.x, -sp2C.y, sp2C.z);
@ -730,7 +731,7 @@ static void ExecBoo(omObjData *arg0) {
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
for (i = 0; i < 2; i++) {
BoardModelKill(((s16*) ((u8*) temp_r30 + 4))[i]);
BoardModelKill(((s16*) temp_r30->unk04)[i]);
}
BoardWinKill();
booEventObj = NULL;
@ -801,8 +802,8 @@ static void CreateBallPlayer(void) {
temp_r30->unk04[i] = BoardPlayerMotionCreate(stealTarget, var_r26);
}
if (stealType == 2) {
temp_r30->unk00 = BoardModelCreate(0x70076, 0, 0);
temp_r30->unk02 = BoardModelCreate(0x70082, 0, 0);
temp_r30->unk00 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 118), 0, 0);
temp_r30->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 130), 0, 0);
BoardModelLayerSet(temp_r30->unk00, 0);
BoardModelLayerSet(temp_r30->unk02, 0);
BoardModelCameraSet(temp_r30->unk00, 1);
@ -911,7 +912,7 @@ static void BallPlayerZoomOut(omObjData *arg0, BallPlayerWork *arg1) {
sp8.x = sp14.x + 120.0 * sin(-M_PI / 2);
sp8.y = sp14.y;
sp8.z = sp14.z + 120.0 * cos(-M_PI / 2);
BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 0x14);
BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 20);
var_r29 = GWPlayer[stealTarget].character;
HuAudFXPlay(booSfxTbl[0][var_r29]);
SetBallPlayerState(3);
@ -933,7 +934,7 @@ static void BallPlayerScare(omObjData *arg0, BallPlayerWork *arg1) {
BoardPlayerMotionShiftSet(stealTarget, temp_r29->unk04[3], 0.0f, 10.0f, 0x40000001);
SetBallPlayerState(0);
} else {
BoardPlayerMotBlendSet(stealTarget, temp_f31, 0xF);
BoardPlayerMotBlendSet(stealTarget, temp_f31, 15);
SetBallPlayerState(2);
}
}
@ -954,25 +955,25 @@ static void BallPlayerPunch(omObjData *arg0, BallPlayerWork *arg1) {
var_r31 = 0;
temp_r29 = arg0->data;
if (GWPlayer[stealTarget].com) {
temp_r30 = BoardRandMod(0x64);
temp_r30 = BoardRandMod(100);
switch (GWPlayer[stealTarget].diff) {
case 0:
if (temp_r30 > 0x5A) {
if (temp_r30 > 90) {
var_r31 = 0x100;
}
break;
case 1:
if (temp_r30 > 0x53) {
if (temp_r30 > 83) {
var_r31 = 0x100;
}
break;
case 2:
if (temp_r30 > 0x4B) {
if (temp_r30 > 75) {
var_r31 = 0x100;
}
break;
case 3:
if (temp_r30 > 0x44) {
if (temp_r30 > 68) {
var_r31 = 0x100;
}
break;
@ -980,7 +981,7 @@ static void BallPlayerPunch(omObjData *arg0, BallPlayerWork *arg1) {
} else {
var_r31 = HuPadBtnDown[GWPlayer[stealTarget].port] & 0x100;
}
if ((var_r31 & 0x100) && GetBallBooState() == 3 && battleTimer < 0x78) {
if ((var_r31 & 0x100) && GetBallBooState() == 3 && battleTimer < 120) {
punchCount++;
}
if (arg1->unk00_field1 != 0) {
@ -1029,13 +1030,13 @@ static void BallPlayerCatch(omObjData *arg0, BallPlayerWork *arg1) {
if (stealType == 0) {
UpdatePlayerCoins();
HuAudFXPlay(booSfxTbl[2][temp_r28]);
omVibrate(stealTarget, 0xC, 4, 2);
omVibrate(stealTarget, 12, 4, 2);
TakeBallCoin();
}
if (stealType == 1) {
BoardPlayerStarsAdd(stealTarget, -1);
HuAudFXPlay(booSfxTbl[2][temp_r28]);
omVibrate(stealTarget, 0xC, 4, 2);
omVibrate(stealTarget, 12, 4, 2);
TakeBallStar();
}
BoardPlayerMotionShiftSet(stealTarget, temp_r27->unk04[0], 0.0f, 10.0f, 0);
@ -1053,11 +1054,11 @@ static void BallPlayerCatch(omObjData *arg0, BallPlayerWork *arg1) {
}
static s32 ballBooMdl[] = {
0x00020013,
0x00020014,
0x00020015,
0x00020016,
0x00020017,
DATA_MAKE_NUM(DATADIR_BGUEST, 19),
DATA_MAKE_NUM(DATADIR_BGUEST, 20),
DATA_MAKE_NUM(DATADIR_BGUEST, 21),
DATA_MAKE_NUM(DATADIR_BGUEST, 22),
DATA_MAKE_NUM(DATADIR_BGUEST, 23),
-1
};
@ -1075,7 +1076,7 @@ static void BallBooCreate(void) {
temp_r31->unk00_field2 = 0;
temp_r31->unk01 = 0;
SetBallBooState(1);
temp_r31->unk04 = BoardModelCreate(0x20012, ballBooMdl, 0);
temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), ballBooMdl, 0);
BoardModelAlphaSet(temp_r31->unk04, 0xFF);
BoardModelLayerSet(temp_r31->unk04, 0);
BoardModelCameraSet(temp_r31->unk04, 1);
@ -1098,7 +1099,7 @@ static void BallBooCreate(void) {
ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 60.0f;
ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 60.0f;
ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 60.0f;
temp_r31->unk02 = 0x3C;
temp_r31->unk02 = 60;
ballBooObj->scale.x = 1.0f;
ballBooObj->scale.z = 1.0f;
sp8.x = sp14.x - ballBooObj->trans.x;
@ -1122,7 +1123,7 @@ static void SetBallBooState(s32 arg0) {
ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 30.0f;
ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 30.0f;
ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 30.0f;
temp_r31->unk02 = 0x1E;
temp_r31->unk02 = 30;
BoardModelMotionShiftSet(temp_r31->unk04, 1, 0.0f, 10.0f, 0x40000001);
}
if (arg0 == 5) {
@ -1210,7 +1211,7 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) {
if (attackTimer != 0) {
attackTimer--;
}
if (battleTimer >= 0x78) {
if (battleTimer >= 120) {
SetBallBooState(4);
return;
}
@ -1221,14 +1222,14 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) {
}
return;
}
if (BoardRandMod(0x64) <= 0x46) {
if (BoardRandMod(100) <= 70) {
BoardModelMotionStart(arg1->unk04, 2, 0);
arg1->unk00_field2 = 1;
if (BoardRandMod(0x64) > 0x32 && attackTimer == 0) {
if (BoardRandMod(100) > 50 && attackTimer == 0) {
temp_r29 = GWPlayer[stealTarget].character;
HuAudFXPlay(booSfxTbl[1][temp_r29]);
omVibrate(stealTarget, 0xC, 6, 6);
attackTimer = 0x30;
omVibrate(stealTarget, 12, 6, 6);
attackTimer = 48;
}
}
}
@ -1236,10 +1237,10 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) {
static void BallBooAttack(omObjData *arg0, BallBooWork *arg1) {
float var_f29;
if (arg1->unk02 < 0x5A) {
if (arg1->unk02 < 90) {
arg1->unk02 += 6;
if (arg1->unk02 >= 0x5A) {
arg1->unk02 = 0x5A;
if (arg1->unk02 >= 90) {
arg1->unk02 = 90;
SetBallBooState(0);
SetBallPlayerState(5);
}
@ -1263,7 +1264,7 @@ static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) {
arg0->rot.x = (sp8.x - arg0->trans.x) / 72.0f;
arg0->rot.y = (sp8.y - arg0->trans.y) / 72.0f;
arg0->rot.z = (sp8.z - arg0->trans.z) / 72.0f;
arg1->unk02 = 0x48;
arg1->unk02 = 72;
}
}
@ -1281,7 +1282,7 @@ static void TakeBallCoin(void) {
ballTakeCoinObj->trans.z = sp8.z;
var_r31 = ballTakeCoinObj->data;
for (i = 0; i < 10; i++, var_r31++) {
var_r31->unk00 = BoardModelCreate(0x7000A, NULL, 1);
var_r31->unk00 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1);
BoardModelCameraSet(var_r31->unk00, 1);
fn_8006DDE8(var_r31->unk00, -1.0f);
BoardModelScaleSet(var_r31->unk00, 0.5f, 0.5f, 0.5f);
@ -1358,7 +1359,7 @@ void TakeBallStar(void) {
temp_r31 = OM_GET_WORK_PTR(ballTakeCoinObj, BallTakeCoinWork);
temp_r31->unk00_field0 = 0;
temp_r31->unk01 = 0;
temp_r31->unk02 = BoardModelCreate(0x7000B, 0, 0);
temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 11), 0, 0);
BoardPlayerPosGet(stealTarget, &sp8);
ballTakeCoinObj->trans.x = sp8.x;
ballTakeCoinObj->trans.y = sp8.y + 150.0f;
@ -1430,27 +1431,27 @@ BOOL BoardBooStealLightCheck(void) {
}
static s8 stealSuccessTbl[][3] = {
{ 0x00, 0x00, 0x00 },
{ 0x01, 0x06, 0x01 },
{ 0x07, 0x07, 0x03 },
{ 0x08, 0x0C, 0x02 },
{ 0x0D, 0x0F, 0x03 },
{ 0x10, 0x12, 0x04 },
{ 0x13, 0x14, 0x06 },
{ 0x15, 0x17, 0x05 },
{ 0x18, 0x1A, 0x06 },
{ 0x1B, 0x1C, 0x07 },
{ 0x1D, 0x1D, 0x08 },
{ 0x1E, 0x63, 0x09 }
{ 0, 0, 0 },
{ 1, 6, 1 },
{ 7, 7, 3 },
{ 8, 12, 2 },
{ 13, 15, 3 },
{ 16, 18, 4 },
{ 19, 20, 6 },
{ 21, 23, 5 },
{ 24, 26, 6 },
{ 27, 28, 7 },
{ 29, 29, 8 },
{ 30, 99, 9 }
};
static s8 stealTbl[][3] = {
{ 0x01, 0x05, 0x0F },
{ 0x06, 0x0F, 0x19 },
{ 0x10, 0x19, 0x1B },
{ 0x1A, 0x23, 0x1E },
{ 0x24, 0x2D, 0x20 },
{ 0x2E, 0x32, 0x23 }
{ 1, 5, 15 },
{ 6, 15, 25 },
{ 16, 25, 27 },
{ 26, 35, 30 },
{ 36, 45, 32 },
{ 46, 50, 35 }
};
static void UpdatePlayerCoins(void) {
@ -1460,12 +1461,12 @@ static void UpdatePlayerCoins(void) {
s32 i;
sp8 = punchCount;
if (punchCount > 0x63) {
punchCount = 0x63;
if (punchCount > 99) {
punchCount = 99;
}
var_r30 = GWSystem.turn;
if (var_r30 > 0x32) {
var_r30 = 0x32;
if (var_r30 > 50) {
var_r30 = 50;
}
for (stealSuccess = i = 0; i < 12; i++) {
if (punchCount >= stealSuccessTbl[i][0] && punchCount <= stealSuccessTbl[i][1]) {

View file

@ -467,8 +467,7 @@ static void DoMGReturnEffect(void)
s32 mess;
s32 mess_char;
for(player=0; player<4; player++) {
s16 gain = GWPlayer[player].coin_gain;
if(gain == 1) {
if(GWPlayerCoinWinGet(player) == 1) {
break;
}
}

View file

@ -121,10 +121,10 @@ static void FortuneMain(void)
HuPrcVSleep();
}
for(i=0; i<4; i++) {
if((int)(GWPlayer[i].team) != 0) {
GWPlayer[i].field08_bit11 = 1;
if(GWPlayerTeamGet(i)) {
GWPlayer[i].team_backup = 1;
} else {
GWPlayer[i].field08_bit11 = 0;
GWPlayer[i].team_backup = 0;
}
if(i == currPlayer) {
GWPlayerCfg[i].group = 0;
@ -158,7 +158,7 @@ static void FortuneMain(void)
if((int)GWSystem.show_com_mg == 0) {
HuPrcSleep(60);
for(i=0; i<4; i++) {
s32 bit11 = GWPlayer[i].field08_bit11;
s32 bit11 = GWPlayer[i].team_backup;
GWPlayer[i].team = bit11;
GWPlayerCfg[i].group = bit11;
}

View file

@ -1,6 +1,7 @@
#include "game/board/item.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
@ -8,6 +9,7 @@
#include "game/objsub.h"
#include "game/pad.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/window.h"
#include "game/wipe.h"
#include "game/board/audio.h"
@ -51,8 +53,6 @@ typedef struct {
} UnkGenieCameraStruct; // Size 0x1C
extern u32 frandmod(u32);
extern void BoardBowserSuitInit(s32);
extern s16 BoardBowserSuitPlayerModelGet(void);
static void ItemProcess(void);
static void RestoreProcess(void);
@ -111,7 +111,10 @@ static AnimData *genieParticleAnim;
static s16 geniePlayerMot[3];
static Process *itemProc;
s32 lbl_801D37A0[2] = { 0x00070075, -1 };
s32 lbl_801D37A0[2] = {
DATA_MAKE_NUM(DATADIR_BOARD, 117),
-1
};
static void (*itemFuncTbl[])(void) = {
ExecItemMini,
@ -148,20 +151,20 @@ static void (*itemRestoreFuncTbl[])(void) = {
};
static s32 itemMdlTbl[] = {
0x0007006D,
0x0007006E,
0x0007006F,
0x00070070,
0x00070071,
0x00070072,
0x00070073,
0x00070074,
0x00070076,
0x00070077,
0x00070078,
0x00070079,
0x0007007A,
0x0007007B
DATA_MAKE_NUM(DATADIR_BOARD, 109),
DATA_MAKE_NUM(DATADIR_BOARD, 110),
DATA_MAKE_NUM(DATADIR_BOARD, 111),
DATA_MAKE_NUM(DATADIR_BOARD, 112),
DATA_MAKE_NUM(DATADIR_BOARD, 113),
DATA_MAKE_NUM(DATADIR_BOARD, 114),
DATA_MAKE_NUM(DATADIR_BOARD, 115),
DATA_MAKE_NUM(DATADIR_BOARD, 116),
DATA_MAKE_NUM(DATADIR_BOARD, 118),
DATA_MAKE_NUM(DATADIR_BOARD, 119),
DATA_MAKE_NUM(DATADIR_BOARD, 120),
DATA_MAKE_NUM(DATADIR_BOARD, 121),
DATA_MAKE_NUM(DATADIR_BOARD, 122),
DATA_MAKE_NUM(DATADIR_BOARD, 123)
};
static s32 forceMoveSfxTbl[] = {
@ -169,14 +172,14 @@ static s32 forceMoveSfxTbl[] = {
};
static s32 callMotTbl[] = {
0x005F0052,
0x001A0052,
0x006D0052,
0x008A0052,
0x00850052,
0x00110052,
0x000D0052,
0x00810052
DATA_MAKE_NUM(DATADIR_MARIOMOT, 82),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 82),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 82),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 82),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 82),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 82),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 82),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 82)
};
static char *callHookTbl[] = {
@ -191,32 +194,32 @@ static char *callHookTbl[] = {
};
static s32 callAttackMotTbl[] = {
0x0075001F,
0x00760005,
0x0077001D,
0x00780009,
0x00790007,
0x007A0013
DATA_MAKE_NUM(DATADIR_W01, 31),
DATA_MAKE_NUM(DATADIR_W02, 5),
DATA_MAKE_NUM(DATADIR_W03, 29),
DATA_MAKE_NUM(DATADIR_W04, 9),
DATA_MAKE_NUM(DATADIR_W05, 7),
DATA_MAKE_NUM(DATADIR_W06, 19)
};
static s32 callAttackMotTbl2[] = {
0x00750020,
0x00760006,
0x0077001E,
0x0078000A,
0x00790008,
0x007A0014
DATA_MAKE_NUM(DATADIR_W01, 32),
DATA_MAKE_NUM(DATADIR_W02, 6),
DATA_MAKE_NUM(DATADIR_W03, 30),
DATA_MAKE_NUM(DATADIR_W04, 10),
DATA_MAKE_NUM(DATADIR_W05, 8),
DATA_MAKE_NUM(DATADIR_W06, 20)
};
static s32 suitMotTbl[][2] = {
{ 0x00040001, 0x00040002 },
{ 0x00040004, 0x00040005 },
{ 0x00040007, 0x00040008 },
{ 0x0004000A, 0x0004000B },
{ 0x0004000D, 0x0004000E },
{ 0x00040010, 0x00040011 },
{ 0x00040013, 0x00040014 },
{ 0x00040016, 0x00040017 }
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 1), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 2) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 4), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 5) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 7), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 8) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 10), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 11) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 13), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 14) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 16), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 17) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 19), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 20) },
{ DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 22), DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 23) }
};
void BoardItemStart(s32 arg0, s32 arg1) {
@ -490,7 +493,7 @@ static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) {
sp20.z += 50.0 * cos(sp14.y * M_PI / 180.0);
sp20.x += 50.0 * sin(sp14.y * M_PI / 180.0);
CharModelEffectCreate(1, &sp20);
HuPrcSleep(0xA);
HuPrcSleep(10);
}
if (suitMdl >= 0) {
BoardModelVisibilitySet(suitMdl, 1);
@ -527,7 +530,7 @@ static s16 ItemGetTarget(void) {
var_r28++;
}
}
HuWinMesMaxSizeGet(1, sp8, 0x12000E);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(18, 14));
temp_r29 = HuWinCreate(-10000.0f, -10000.0f, sp8[0], sp8[1], 0);
if (!GWPlayer[currItemRestore].com) {
winData[temp_r29].active_pad = (1 << GWPlayer[currItemRestore].port);
@ -535,7 +538,7 @@ static s16 ItemGetTarget(void) {
for (var_r31 = 0; var_r31 < var_r27; var_r31++) {
HuWinInsertMesSet(temp_r29, GWPlayerCfg[sp20[var_r31]].character, var_r31);
}
HuWinMesSet(temp_r29, 0x12000E);
HuWinMesSet(temp_r29, MAKE_MESSID(18, 14));
if (GWPlayer[currItemRestore].com) {
var_r26 = 0xF;
} else {
@ -623,7 +626,7 @@ static void ExecItemMini(void) {
omVibrate(currItemRestore, 90, 6, 6);
HuAudFXPlay(0x313);
ItemSizeSet(1);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -640,7 +643,7 @@ static void ExecItemMega(void) {
omVibrate(currItemRestore, 90, 4, 2);
HuAudFXPlay(0x311);
ItemSizeSet(2);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -657,7 +660,7 @@ static void ExecItemMiniSuper(void) {
omVibrate(currItemRestore, 90, 4, 2);
HuAudFXPlay(0x313);
ItemSizeSet(1);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -674,7 +677,7 @@ static void ExecItemMegaSuper(void) {
omVibrate(currItemRestore, 90, 0xC, 0);
HuAudFXPlay(0x311);
ItemSizeSet(2);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -707,13 +710,13 @@ static void ExecItemHammer(void) {
BoardModelScaleSetV(suitMdl, &sp60);
sp6C.x = sp6C.y = sp6C.z = 0.0f;
BoardUiInlineFunc01(&sp6C);
HuWinMesMaxSizeGet(1, sp10, 0x120011);
HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(18, 17));
temp_r28 = HuWinCreate(-10000.0f, 320.0f, sp10[0], sp10[1], 0);
HuWinMesSet(temp_r28, 0x120011);
HuWinMesSet(temp_r28, MAKE_MESSID(18, 17));
HuWinBGTPLvlSet(temp_r28, 0.0f);
HuWinMesSpeedSet(temp_r28, 0);
if (GWPlayer[currItemRestore].com) {
var_r26 = frandmod(0x78) + 0x1E;
var_r26 = frandmod(120) + 30;
}
for (i = 1; i <= 0x12C; i++) {
if (i % 10 == 0) {
@ -740,7 +743,7 @@ static void ExecItemHammer(void) {
BoardModelAttrSet(suitMdl, 0x40000002);
HuAudFXPlay(0x316);
HuWinKill(temp_r28);
omVibrate(temp_r27, 0xC, 6, 6);
omVibrate(temp_r27, 12, 6, 6);
if (var_r30 != 0) {
BoardPlayerAutoSizeSet(temp_r27, 2);
} else {
@ -806,11 +809,11 @@ static void ExecItemPipe(void) {
BoardModelPosSetV(sp30[var_r31], &spE4[var_r31]);
}
if (sp58[0] == sp58[1]) {
HuWinMesMaxSizeGet(1, sp48, 0x120012);
HuWinMesMaxSizeGet(1, sp48, MAKE_MESSID(18, 18));
temp_r28 = HuWinCreate(-10000.0f, -10000.0f, sp48[0], sp48[1], 0);
HuWinMesSet(temp_r28, 0x120012);
HuWinMesSet(temp_r28, MAKE_MESSID(18, 18));
HuWinMesWait(temp_r28);
HuPrcSleep(0xB4);
HuPrcSleep(180);
HuWinKill(temp_r28);
} else {
BoardUiInlineFunc03(sp2C[1]);
@ -819,7 +822,7 @@ static void ExecItemPipe(void) {
BoardModelVisibilitySet(sp30[var_r31], 1);
BoardPlayerPosGet(sp2C[var_r31], &spCC[var_r31]);
}
for (var_r31 = 0; var_r31 < 0x3C; var_r31++) {
for (var_r31 = 0; var_r31 < 60; var_r31++) {
sp9C.y += 0.033333335f;
for (var_r30 = 0; var_r30 < 2; var_r30++) {
BoardModelScaleSetV(sp30[var_r30], &sp9C);
@ -832,7 +835,7 @@ static void ExecItemPipe(void) {
for (var_r31 = 0; var_r31 < 2; var_r31++) {
BoardModelScaleSetV(sp30[var_r31], &sp9C);
}
HuPrcSleep(0xA);
HuPrcSleep(10);
HuAudFXPlay(0x35A);
omVibrate(sp2C[0], 0xC, 4, 2);
var_f30 = 5.0f;
@ -859,7 +862,7 @@ static void ExecItemPipe(void) {
HuPrcVSleep();
}
WipeColorSet(0, 0, 0);
WipeCreate(2, 0, 0x1E);
WipeCreate(2, 0, 30);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -885,7 +888,7 @@ static void ExecItemPipe(void) {
BoardPlayerVoiceEnableSet(sp2C[var_r31], 4, 0);
BoardModelVisibilitySet(BoardPlayerModelGet(sp2C[var_r31]), 0);
}
WipeCreate(1, 0, 0x1E);
WipeCreate(1, 0, 30);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -944,7 +947,7 @@ static void ExecItemPipe(void) {
BoardModelVoiceEnableSet(BoardPlayerModelGet(sp2C[1]), 6, 0);
CharModelLayerSetAll(2);
BoardPlayerIdleSet(sp2C[0]);
for (var_r31 = 0; var_r31 < 0x2D; var_r31++) {
for (var_r31 = 0; var_r31 < 45; var_r31++) {
sp9C.y -= 0.044444446f;
for (var_r30 = 0; var_r30 < 2; var_r30++) {
BoardModelScaleSetV(sp30[var_r30], &sp9C);
@ -955,7 +958,7 @@ static void ExecItemPipe(void) {
BoardModelVisibilitySet(sp30[var_r31], 0);
}
BoardUiInlineFunc03(sp2C[0]);
BoardWinCreate(2, 0x12001D, -1);
BoardWinCreate(2, MAKE_MESSID(18, 29), -1);
BoardWinInsertMesSet(GWPlayerCfg[sp2C[0]].character, 0);
BoardWinInsertMesSet(GWPlayerCfg[sp2C[1]].character, 1);
BoardWinWait();
@ -1105,7 +1108,7 @@ static void ExecItemSwap(void) {
PSVECScale(&sp6C, &sp6C, 0.033333335f);
PSVECSubtract(&sp78, &sp180[var_r31], &sp60);
PSVECScale(&sp60, &sp60, 0.033333335f);
for (var_r30 = 0; var_r30 < 0x1E; var_r30++) {
for (var_r30 = 0; var_r30 < 30; var_r30++) {
BoardModelPosSetV(sp54[var_r31], &sp1A4[var_r31]);
BoardModelPosSetV(sp54[var_r31 + 3], &sp180[var_r31]);
PSVECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]);
@ -1117,9 +1120,9 @@ static void ExecItemSwap(void) {
BoardModelPosSetV(sp54[var_r31], &sp1A4[var_r31]);
BoardModelPosSetV(sp54[var_r31 + 3], &sp180[var_r31]);
}
omVibrate(currItemRestore, 0xB4, 6, 6);
omVibrate(temp_r24, 0xB4, 6, 6);
for (var_r31 = 0; var_r31 < 0x3C; var_r31++) {
omVibrate(currItemRestore, 180, 6, 6);
omVibrate(temp_r24, 180, 6, 6);
for (var_r31 = 0; var_r31 < 60; var_r31++) {
for (var_r30 = 0; var_r30 < var_r28 / 2; var_r30++) {
sp6C = sp1A4[var_r30];
sp6C.x += 3.0 * sin((frand() % 360) * M_PI / 180.0);
@ -1154,7 +1157,7 @@ static void ExecItemSwap(void) {
PSVECScale(&sp6C, &sp6C, 0.033333335f);
PSVECSubtract(&spB4, &sp180[var_r31], &sp60);
PSVECScale(&sp60, &sp60, 0.033333335f);
for (var_r30 = 0; var_r30 < 0x1E; var_r30++) {
for (var_r30 = 0; var_r30 < 30; var_r30++) {
BoardModelPosSetV(sp54[var_r31], &sp1A4[var_r31]);
BoardModelPosSetV(sp54[var_r31 + 3], &sp180[var_r31]);
PSVECAdd(&sp1A4[var_r31], &sp6C, &sp1A4[var_r31]);
@ -1211,7 +1214,7 @@ static void ExecItemSpark(void) {
s32 i;
(void)106.0;
temp_r30 = BoardModelCreate(0x70067, NULL, 0);
temp_r30 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 103), NULL, 0);
BoardModelLayerSet(temp_r30, 3);
BoardModelVisibilitySet(temp_r30, 0);
HuAudFXPlay(0x350);
@ -1271,7 +1274,7 @@ static void ExecItemSpark(void) {
HuPrcVSleep();
}
for (i = 0; i < 4; i++) {
omVibrate(i, 0xC, 4, 2);
omVibrate(i, 12, 4, 2);
}
HuAudFXPlay(0x31C);
BoardModelVisibilitySet(temp_r30, 1);
@ -1280,7 +1283,7 @@ static void ExecItemSpark(void) {
HuPrcVSleep();
}
var_f31 = 255.0f;
for (i = 0; i < 0x2D; i++) {
for (i = 0; i < 45; i++) {
var_f31 -= 5.6666665f;
BoardModelAlphaSet(suitMdl, var_f31);
HuPrcVSleep();
@ -1300,8 +1303,8 @@ static void ExecItemLight(void) {
HuAudFXPlay(0x350);
ItemShowProc(NULL, NULL);
BoardWinCreateChoice(2, 0x12000F, -1, 0);
BoardWinInsertMesSet(0x80008, 3);
BoardWinCreateChoice(2, MAKE_MESSID(18, 15), -1, 0);
BoardWinInsertMesSet(MAKE_MESSID(8, 8), 3);
if (GWPlayer[currItemRestore].com) {
BoardComKeySetRight();
}
@ -1362,9 +1365,9 @@ static void ExecItemWhistle(void) {
var_f31 = 0.003921569f * (frand() & 0xFF) * 360.0f;
spA8.x = spA8.y = spA8.z = 0.5f;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
sp20[var_r31] = BoardModelCreate(0x20027, NULL, 1);
sp20[var_r31] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 39), NULL, 1);
BoardModelLayerSet(sp20[var_r31], 2);
temp_r17 = BoardModelMotionCreate(sp20[var_r31], 0x20028);
temp_r17 = BoardModelMotionCreate(sp20[var_r31], DATA_MAKE_NUM(DATADIR_BGUEST, 40));
BoardModelMotionStart(sp20[var_r31], temp_r17, 0x40000001);
sp28[var_r31] = 120.0f;
spF0[var_r31].x = spB4.x + 120.0 * sin(var_f31 * M_PI / 180.0);
@ -1397,7 +1400,7 @@ static void ExecItemWhistle(void) {
PSVECScale(&sp78, &sp78, 0.03448276f);
BoardPlayerMotionStart(currItemRestore, temp_r23, 0);
BoardPlayerMotionTimeSet(currItemRestore, 1.0f);
for (var_r31 = 0; var_r31 < 0x1D; var_r31++) {
for (var_r31 = 0; var_r31 < 29; var_r31++) {
sp90.y += sp78.y;
sp90.z += sp78.z;
BoardModelPosSetV(suitMdl, &sp90);
@ -1418,7 +1421,7 @@ static void ExecItemWhistle(void) {
HuPrcVSleep();
}
WipeColorSet(0, 0, 0);
WipeCreate(2, 0, 0x3C);
WipeCreate(2, 0, 60);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -1433,7 +1436,7 @@ static void ExecItemWhistle(void) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
BoardModelVisibilitySet(sp20[var_r31], 1);
}
WipeCreate(1, 0, 0x3C);
WipeCreate(1, 0, 60);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -1459,7 +1462,7 @@ static void ExecItemWhistle(void) {
if (var_r27 == 0) {
var_r27 = 1;
for (var_r29 = 0; var_r29 < 4; var_r29++) {
omVibrate(var_r29, 0xC, 6, 6);
omVibrate(var_r29, 12, 6, 6);
}
HuAudFXPlay(0x321);
}
@ -1478,7 +1481,7 @@ static void ExecItemWhistle(void) {
}
BoardModelMotionShiftSet(temp_r28, temp_r20, 0.0f, 5.0f, 0x40000001);
HuAudFXPlay(0x322);
for (var_r29 = 0; var_r29 < 0xB4; var_r29++) {
for (var_r29 = 0; var_r29 < 180; var_r29++) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
sp38[var_r31] += 4.0f;
if (sp38[var_r31] >= 360.0f) {
@ -1495,14 +1498,14 @@ static void ExecItemWhistle(void) {
}
HuPrcVSleep();
}
for (var_r29 = 0; var_r29 < 0x14; var_r29++) {
for (var_r29 = 0; var_r29 < 20; var_r29++) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
spC0[var_r31].y += 4.5f;
BoardModelRotSetV(sp20[var_r31], &spC0[var_r31]);
}
HuPrcVSleep();
}
HuPrcSleep(0x1E);
HuPrcSleep(30);
var_f30 = 35.0f;
var_r26 = 0;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
@ -1536,8 +1539,8 @@ static void ExecItemWhistle(void) {
BoardModelPosSetV(temp_r28, &sp9C);
var_f30 *= 0.945f;
if (sp9C.y >= 500.0f && var_r26 == 0) {
WipeCreate(2, 0, 0x2D);
BoardAudSeqFadeOut(0, 0x3E8);
WipeCreate(2, 0, 45);
BoardAudSeqFadeOut(0, 1000);
var_r26 = 1;
}
}
@ -1572,15 +1575,15 @@ static void ExecItemBowser(void) {
BoardBowserSuitInit(currItemRestore);
suitMdl = BoardBowserSuitModelGet();
temp_r31 = BoardBowserSuitPlayerModelGet();
suitMot[0] = BoardModelMotionCreate(suitMdl, 0x4001C);
suitMot[1] = BoardModelMotionCreate(suitMdl, 0x4001D);
suitMot[0] = BoardModelMotionCreate(suitMdl, DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 28));
suitMot[1] = BoardModelMotionCreate(suitMdl, DATA_MAKE_NUM(DATADIR_BKOOPASUIT, 29));
suitCommonMot[0] = BoardModelMotionCreate(temp_r31, suitMotTbl[GWPlayer[currItemRestore].character][0]);
suitCommonMot[1] = BoardModelMotionCreate(temp_r31, suitMotTbl[GWPlayer[currItemRestore].character][1]);
BoardModelVisibilitySet(temp_r31, 0);
HuAudFXPlay(0x350);
sp20.x = sp20.y = sp20.z = 0.3f;
ItemShowProc(NULL, &sp20);
for (i = 0; i < 0x1E; i++) {
for (i = 0; i < 30; i++) {
sp20.x += 0.023333333f;
sp20.y += 0.023333333f;
sp20.z += 0.023333333f;
@ -1624,8 +1627,8 @@ static void ExecItemBowser(void) {
BoardModelMotionShiftSet(temp_r31, suitCommonMot[0], 0.0f, 5.0f, 0);
HuPrcSleep(0x28);
HuAudPlayerVoicePlay(currItemRestore, 0x129);
omVibrate(currItemRestore, 0xC, 4, 2);
HuPrcSleep(0x3C);
omVibrate(currItemRestore, 12, 4, 2);
HuPrcSleep(60);
BoardModelMotionShiftSet(suitMdl, 0, 0.0f, 5.0f, 0x40000001);
HuPrcKill(NULL);
while (1) {
@ -1634,8 +1637,8 @@ static void ExecItemBowser(void) {
}
static s32 booMotTbl[3] = {
0x00020018,
0x00020016,
DATA_MAKE_NUM(DATADIR_BGUEST, 24),
DATA_MAKE_NUM(DATADIR_BGUEST, 22),
-1
};
@ -1719,9 +1722,9 @@ static void ExecItemBooBall(void) {
s32 var_r30;
s32 var_r31;
BoardAudSeqPause(0, 1, 0x3E8);
BoardAudSeqPause(0, 1, 1000);
suitMdl = BoardBooCreate(currItemRestore, &sp74);
booBallMdl = BoardModelCreate(0x20012, booMotTbl, 0);
booBallMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), booMotTbl, 0);
BoardModelMotionStart(booBallMdl, 1, 0x40000001);
BoardModelLayerSet(booBallMdl, 2);
BoardModelAttrSet(booBallMdl, 2);
@ -1743,11 +1746,11 @@ static void ExecItemBooBall(void) {
sp1C = BoardUiInlineFunc05(&sp80);
BoardMusStart(1, 1, 0x7F, 0);
HuAudFXPlay(0x4C);
BoardWinCreate(2, 0x120015, 3);
BoardWinCreate(2, MAKE_MESSID(18, 21), 3);
BoardWinWait();
BoardWinKill();
if (BoardPlayerCoinsGet(currItemRestore) < 5) {
BoardWinCreate(2, 0x120016, 3);
BoardWinCreate(2, MAKE_MESSID(18, 22), 3);
BoardWinWait();
BoardWinKill();
} else {
@ -1764,7 +1767,7 @@ static void ExecItemBooBall(void) {
}
}
do {
BoardWinCreateChoice(4, 0x120018, 3, 0);
BoardWinCreateChoice(4, MAKE_MESSID(18, 24), 3, 0);
BoardWinAttrSet(0x10);
if (BoardPlayerCoinsGet(currItemRestore) < 50 || var_r28 == 0) {
BoardWinChoiceDisable(1);
@ -1797,47 +1800,47 @@ static void ExecItemBooBall(void) {
sp68.x = 0.0f;
sp68.y = 0.0f;
sp68.z = 0.0f;
BoardCameraMotionStartEx(suitMdl, 0, &sp68, 325.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(suitMdl, NULL, &sp68, 325.0f, -1.0f, 21);
BoardBooStealMain();
BoardCameraViewSet(2);
BoardCameraMotionWait();
ExecItemBooBallInlineFunc02(30);
var_r29 = BoardBooStealValueGet(&spC, &spA);
if (var_r29 == 0) {
var_r30 = 0x7000B;
var_r30 = MAKE_MESSID(7, 11);
} else if (spA == 0) {
var_r30 = 0x70009;
var_r30 = MAKE_MESSID(7, 9);
} else if (spA >= 1 && spA <= 3) {
var_r30 = 0x70008;
var_r30 = MAKE_MESSID(7, 8);
} else if (spA >= 4 && spA <= 6) {
var_r30 = 0x70007;
var_r30 = MAKE_MESSID(7, 7);
} else if (spA >= 7 && spA <= 8) {
var_r30 = 0x70006;
var_r30 = MAKE_MESSID(7, 6);
} else {
var_r30 = 0x70005;
var_r30 = MAKE_MESSID(7, 5);
}
sprintf(booCoinStr, "%d", spC);
HuAudFXPlay(0x4C);
BoardWinCreate(2, var_r30, 3);
BoardWinInsertMesSet((u32) (booCoinStr), 0);
BoardWinInsertMesSet(MAKE_MESSID_PTR(booCoinStr), 0);
BoardWinWait();
BoardWinKill();
BoardStatusShowSetAll(1);
if (var_r29 != 0) {
BoardPlayerMotionShiftSet(currItemRestore, 7, 0.0f, 8.0f, 0);
HuPrcSleep(0x1E);
HuPrcSleep(30);
for (var_r31 = 0; var_r31 < spC; var_r31++) {
BoardPlayerCoinsAdd(currItemRestore, 1);
HuAudFXPlay(7);
HuPrcVSleep();
}
BoardPlayerMotionEndWait(currItemRestore);
HuPrcSleep(0xA);
HuPrcSleep(10);
BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 8.0f, 0x40000001);
}
break;
case 1:
for (var_r31 = 0; var_r31 < 0x32; var_r31++) {
for (var_r31 = 0; var_r31 < 50; var_r31++) {
BoardPlayerCoinsAdd(currItemRestore, -1);
HuAudFXPlay(0xE);
HuPrcSleep(1);
@ -1849,24 +1852,24 @@ static void ExecItemBooBall(void) {
sp68.x = 0.0f;
sp68.y = 0.0f;
sp68.z = 0.0f;
BoardCameraMotionStartEx(suitMdl, 0, &sp68, 325.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(suitMdl, NULL, &sp68, 325.0f, -1.0f, 21);
BoardBooStealMain();
var_r29 = BoardBooStealLightCheck();
BoardCameraViewSet(2);
BoardCameraMotionWait();
ExecItemBooBallInlineFunc02(30);
if (var_r29 != 0) {
var_r30 = 0x7000A;
var_r30 = MAKE_MESSID(7, 10);
} else {
var_r30 = 0x7000B;
var_r30 = MAKE_MESSID(7, 11);
}
HuAudFXPlay(0x4C);
BoardWinCreate(2, var_r30, 3);
BoardWinWait();
BoardWinKill();
BoardStatusShowSetAll(1);
BoardAudSeqFadeOut(1, 0x3E8);
HuPrcSleep(0x17);
BoardAudSeqFadeOut(1, 1000);
HuPrcSleep(23);
if (var_r29 != 0) {
BoardPlayerVoiceEnableSet(currItemRestore, 7, 0);
sp18 = HuAudSStreamPlay(6);
@ -1889,28 +1892,28 @@ static void ExecItemBooBall(void) {
case 2:
case -1:
HuAudFXPlay(0x4C);
BoardWinCreate(2, 0x120017, 3);
BoardWinCreate(2, MAKE_MESSID(18, 23), 3);
BoardWinWait();
BoardWinKill();
break;
}
} while (var_r29 == 3);
}
BoardAudSeqFadeOut(1, 0x3E8);
BoardAudSeqFadeOut(1, 1000);
HuPrcKill(sp1C);
BoardModelPosGet(booBallMdl, &booBallPos);
HuAudFXPlay(0x34F);
ExecItemBooBallInlineFunc01(60);
HuPrcKill(temp_r17);
BoardAudSeqPause(0, 0, 0x3E8);
BoardAudSeqPause(0, 0, 1000);
CharModelLayerSetAll(3);
BoardModelPosGet(suitMdl, &sp74);
CharModelEffectCreate(1, &sp74);
HuAudFXPlay(0x351);
HuPrcSleep(0xA);
HuPrcSleep(10);
BoardModelKill(suitMdl);
BoardModelKill(booBallMdl);
HuPrcSleep(0xF);
HuPrcSleep(15);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -2111,36 +2114,36 @@ static void GenieCameraCalc(UnkGenieCameraStruct *arg0, s32 arg1, float arg2, Ve
}
static s32 armUpMotTbl[] = {
0x005F005C,
0x001A005C,
0x006D005C,
0x008A005C,
0x0085005C,
0x0011005C,
0x000D005C,
0x0081005C
DATA_MAKE_NUM(DATADIR_MARIOMOT, 92),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 92),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 92),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 92),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 92),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 92),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 92),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 92)
};
static s32 scareMotTbl[] = {
0x005F001C,
0x001A001C,
0x006D001C,
0x008A001C,
0x0085001C,
0x0011001C,
0x000D001C,
0x0081001C
DATA_MAKE_NUM(DATADIR_MARIOMOT, 28),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 28),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 28),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 28),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28)
};
static s32 impactMotTbl[] = {
0x005F005E,
0x001A005E,
0x006D005E,
0x008A005E,
0x0085005E,
0x0011005E,
0x000D005E,
0x0081005E
DATA_MAKE_NUM(DATADIR_MARIOMOT, 94),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 94),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 94),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 94),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 94),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 94),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 94),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 94)
};
static UnkGenieCameraStruct cameraDataTbl[] = {
@ -2158,9 +2161,9 @@ static UnkGenieCameraStruct cameraDataTbl[] = {
};
static s32 genieMotTbl[] = {
0x0007007D,
0x0007007E,
0x0007007F,
DATA_MAKE_NUM(DATADIR_BOARD, 125),
DATA_MAKE_NUM(DATADIR_BOARD, 126),
DATA_MAKE_NUM(DATADIR_BOARD, 127),
-1
};
@ -2190,16 +2193,16 @@ static void GenieSceneExec(void) {
BoardStatusShowSet(i, 0);
}
BoardLightResetExec();
temp_r25 = BoardModelCreate(0x70080, NULL, 0);
temp_r25 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 128), NULL, 0);
sp50.x = sp50.y = sp50.z = 0.0f;
BoardModelPosSetV(temp_r25, &sp50);
BoardModelCameraSet(temp_r25, 2);
Hu3DModelAmbSet(BoardModelIDGet(temp_r25), 1.0f, 1.0f, 1.0f);
temp_r24 = BoardModelCreate(0x70081, NULL, 0);
temp_r24 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 129), NULL, 0);
BoardModelPosSetV(temp_r24, &sp50);
BoardModelCameraSet(temp_r24, 2);
Hu3DModelAmbSet(BoardModelIDGet(temp_r24), 1.0f, 1.0f, 1.0f);
temp_r28 = BoardModelCreate(0x7007C, genieMotTbl, 0);
temp_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 124), genieMotTbl, 0);
sp50.x = sp50.y = 0.0f;
sp50.z = 600.0f;
sp44.x = sp44.z = 0.0f;
@ -2244,7 +2247,7 @@ static void GenieSceneExec(void) {
Hu3DModelPosSet(temp_r27, booCamPos.x, booCamPos.y, booCamPos.z - 175.0f);
temp_r23 = Hu3DData[temp_r27].unk_120;
temp_r23->unk_02 = 1;
WipeCreate(1, 0, 0x2D);
WipeCreate(1, 0, 45);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -2252,18 +2255,18 @@ static void GenieSceneExec(void) {
while (temp_r23->unk_02 != 0) {
HuPrcVSleep();
}
HuPrcSleep(0x2D);
HuPrcSleep(45);
HuAudPlayerVoicePlay(currItemRestore, 0x128);
BoardPlayerMotionStart(currItemRestore, geniePlayerMot[1], 0);
BoardPlayerMotionEndWait(currItemRestore);
HuPrcSleep(0x19);
HuPrcSleep(25);
Hu3DModelKill(temp_r27);
for (i = 0; i < 0xA; i++) {
for (i = 0; i < 10; i++) {
genieFov += 4.5f;
HuPrcVSleep();
}
genieFov = 60.0f;
HuPrcSleep(0x5A);
HuPrcSleep(90);
var_f31 = 0.0f;
var_r26 = 0;
while (1) {
@ -2279,7 +2282,7 @@ static void GenieSceneExec(void) {
HuPrcVSleep();
}
GenieCameraCalc(&cameraDataTbl[0], var_r26, 1.0f, &booCamPos, &booCamUp);
HuPrcSleep(0x96);
HuPrcSleep(150);
BoardPlayerIdleSet(currItemRestore);
sp2C = booCamPos;
sp20 = booCamUp;
@ -2290,7 +2293,7 @@ static void GenieSceneExec(void) {
booCamPos.y = booCamUp.y + 950.0f;
booCamPos.z = booCamUp.z + cos(-5 * M_PI / 9) * 1100.0;
HuAudFXPlay(0x356);
BoardWinCreate(2, 0x12001B, -1);
BoardWinCreate(2, MAKE_MESSID(18, 27), -1);
BoardWinWait();
BoardWinKill();
booCamUp = sp20;
@ -2323,7 +2326,7 @@ static void GenieSceneExec(void) {
BoardModelPosSetV(temp_r28, &sp50);
booCamUp.y = sp38.y + 100.0f;
BoardModelMotionStart(temp_r28, 2, 0);
omVibrate(currItemRestore, 0xC, 0xC, 0);
omVibrate(currItemRestore, 12, 0xC, 0);
booCamUp.y = 500.0f;
HuAudFXPlay(0x35B);
HuAudFXPlay((GWPlayer[currItemRestore].character << 6) + 0x123);
@ -2341,8 +2344,8 @@ static void GenieSceneExec(void) {
}
HuPrcVSleep();
}
WipeCreate(2, 0, 0x2D);
BoardAudSeqFadeOut(1, 0x3E8);
WipeCreate(2, 0, 45);
BoardAudSeqFadeOut(1, 1000);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -2379,7 +2382,7 @@ static void ExecItemGenie(void) {
suitMdl = BoardModelCreate(itemMdlTbl[currItem], NULL, 1);
BoardModelLayerSet(suitMdl, 2);
genieParticleAnim = HuSprAnimRead(HuDataSelHeapReadNum(0x70069, MEMORY_DEFAULT_NUM, HEAP_DATA));
genieParticleAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_BOARD, 105));
HuSprAnimLock(genieParticleAnim);
geniePlayerMot[0] = BoardPlayerMotionCreate(currItemRestore, armUpMotTbl[GWPlayer[currItemRestore].character]);
geniePlayerMot[1] = BoardPlayerMotionCreate(currItemRestore, scareMotTbl[GWPlayer[currItemRestore].character]);
@ -2396,11 +2399,11 @@ static void ExecItemGenie(void) {
HuAudFXPlay(0x323);
var_r30 = 0;
while (1) {
if (var_r30 == 0x69) {
if (var_r30 == 105) {
BoardPlayerMotionStart(currItemRestore, geniePlayerMot[0], 0);
}
BoardModelRotGet(suitMdl, &spC);
if (90.0f - spC.y <= sp24.unk14 && 90.0f - spC.y >= 0.0f && var_r30 >= 0x78) {
if (90.0f - spC.y <= sp24.unk14 && 90.0f - spC.y >= 0.0f && var_r30 >= 120) {
break;
}
HuPrcVSleep();
@ -2418,13 +2421,13 @@ static void ExecItemGenie(void) {
BoardModelPosGet(suitMdl, &spC);
Hu3DModelPosSet(temp_r31, spC.x, spC.y, spC.z);
sp8 = Hu3DData[temp_r31].unk_120;
omVibrate(currItemRestore, 0xB5, 6, 6);
HuPrcSleep(0x87);
BoardAudSeqPause(0, 1, 0x3E8);
omVibrate(currItemRestore, 181, 6, 6);
HuPrcSleep(135);
BoardAudSeqPause(0, 1, 1000);
HuAudFXStop(temp_r25);
HuAudFXPauseAll(1);
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(2, 0, 0x2D);
WipeCreate(2, 0, 45);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -2444,8 +2447,8 @@ static void ExecItemGenie(void) {
BoardPlayerPosSetV(currItemRestore, &spC);
BoardCameraMotionWait();
BoardCameraMoveSet(1);
WipeCreate(1, 0, 0x2D);
HuPrcSleep(0xF);
WipeCreate(1, 0, 45);
HuPrcSleep(15);
BoardAudSeqPause(0, 0, 1000);
while (WipeStatGet() != 0) {
HuPrcVSleep();
@ -2467,7 +2470,7 @@ static void ExecItemGenie(void) {
var_f31 += 1.0f;
spC.y += var_f30;
if (spC.y <= sp18.y) {
omVibrate(currItemRestore, 0xC, 6, 6);
omVibrate(currItemRestore, 12, 6, 6);
spC.y = sp18.y;
var_f29 = -var_f30 * 0.2f;
if (fabs(var_f29) <= 5.0) {
@ -2626,19 +2629,19 @@ static void ExecItemBag(void) {
sp3C.unk1C = 0;
HuAudFXPlay(0x350);
temp_r24 = ItemShowProc(&sp3C, NULL);
HuWinMesMaxSizeGet(1, sp10, 0x120014);
HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(18, 20));
temp_r28 = HuWinCreate(-10000.0f, 320.0f, sp10[0], sp10[1], 0);
HuWinMesSet(temp_r28, 0x120014);
HuWinMesSet(temp_r28, MAKE_MESSID(18, 20));
HuWinBGTPLvlSet(temp_r28, 0.0f);
HuWinMesSpeedSet(temp_r28, 0);
var_r26 = frandmod(0x28) + 0x1E;
var_r26 = frandmod(40) + 30;
var_r30 = 0;
sp24.x = sp24.y = sp24.z = 0.0f;
while (var_r30 < temp_r27) {
if (GWPlayerCfg[currItemRestore].iscom == 1) {
if (--var_r26 == 0) {
var_r25 = 0x100;
var_r26 = frandmod(0x28) + 0x1E;
var_r26 = frandmod(40) + 30;
}
} else {
var_r25 = HuPadBtnDown[temp_r23];
@ -2659,13 +2662,13 @@ static void ExecItemBag(void) {
temp_r29->user_data = (void*) sp8[var_r30];
temp_r29 = HuPrcChildCreate(ExecItemBagShow, 0x2004, 0x1000, 0, HuPrcCurrentGet());
temp_r29->user_data = temp_r24;
while (GWPlayer[currItemRestore].field08_bit3) {
while (GWPlayer[currItemRestore].jump) {
HuPrcVSleep();
}
HuPrcChildWatch();
BoardPlayerItemAdd(currItemRestore, itemBagItems[var_r30]);
BoardPlayerMotionShiftSet(currItemRestore, 1, 0.0f, 10.0f, 0x40000001);
HuPrcSleep(0xA);
HuPrcSleep(10);
var_r30++;
}
}
@ -2674,13 +2677,13 @@ static void ExecItemBag(void) {
CharModelLayerSetAll(3);
CharModelEffectCreate(1, &sp30);
HuAudFXPlay(0x351);
HuPrcSleep(0xA);
HuPrcSleep(10);
HuPrcKill(temp_r24);
BoardModelKill(suitMdl);
for (i = 0; i < temp_r27; i++) {
BoardModelKill(sp8[i]);
}
HuPrcSleep(0x1E);
HuPrcSleep(30);
HuPrcKill(NULL);
while (1) {
HuPrcVSleep();
@ -2738,7 +2741,7 @@ static void RestoreItemBowser(void) {
s16 temp_r29;
s16 i;
temp_r31 = BoardModelCreate(0x70063, NULL, 0);
temp_r31 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0);
BoardModelVisibilitySet(temp_r31, 0);
BoardModelLayerSet(temp_r31, 3);
BoardPlayerPosGet(currItemRestore, &sp14);
@ -2752,12 +2755,12 @@ static void RestoreItemBowser(void) {
temp_r29 = BoardBowserSuitPlayerModelGet();
BoardModelMotionShiftSet(suitMdl, suitMot[0], 0.0f, 5.0f, 0);
BoardModelMotionShiftSet(temp_r29, suitCommonMot[0], 0.0f, 5.0f, 0);
HuPrcSleep(0x28);
HuPrcSleep(40);
HuAudPlayerVoicePlay(currItemRestore, 0x129);
HuPrcSleep(0x14);
HuPrcSleep(20);
HuAudFXPlay(0x32B);
BoardModelVisibilitySet(temp_r31, 1);
for (i = 0; i < 0x3C; i++) {
for (i = 0; i < 60; i++) {
sp20.x += 0.15f;
sp20.y += 0.15f;
sp20.z += 0.15f;
@ -2766,14 +2769,14 @@ static void RestoreItemBowser(void) {
}
sp20.x = sp20.y = sp20.z = 9.0f;
BoardModelScaleSetV(temp_r31, &sp20);
HuPrcSleep(0x3C);
HuPrcSleep(60);
HuAudFXPlay(0x313);
BoardModelHookReset(suitMdl);
BoardBowserSuitKill(currItemRestore);
sp8.x = sp8.y = sp8.z = 1.0f;
BoardPlayerScaleSetV(currItemRestore, &sp8);
BoardModelVisibilitySet(BoardPlayerModelGet(currItemRestore), 1);
for (i = 0; i < 0x3C; i++) {
for (i = 0; i < 60; i++) {
sp20.x -= 0.15f;
sp20.y -= 0.15f;
sp20.z -= 0.15f;

View file

@ -690,7 +690,7 @@ static void Last5Main(void)
}
SetLotteryDrawState(1);
SetLast5RouletteState(3);
while(GWPlayer[temp_r30].field08_bit3) {
while(GWPlayer[temp_r30].jump) {
HuPrcVSleep();
}
while(GetLast5RouletteState() != 0) {
@ -1062,7 +1062,7 @@ static void ExecLotteryDraw(void)
Vec player_end;
Vec player_start;
if(GWPlayer[0].field00_bit9 || GWPlayer[1].field00_bit9 || GWPlayer[2].field00_bit9 || GWPlayer[3].field00_bit9) {
if(GWPlayer[0].draw_ticket || GWPlayer[1].draw_ticket || GWPlayer[2].draw_ticket || GWPlayer[3].draw_ticket) {
BoardWinCreate(2, messBase+1, BoardWinPortraitGetStar());
BoardWinWait();
BoardModelPosGet(hostMdl, &host_end);
@ -1257,13 +1257,13 @@ static void InitLotteryTicket(void)
s32 character;
s16 sprite;
s32 member;
u8 ticket_mask;
u8 ticket_player;
omObjData *object;
TicketWork *work;
currTicket = 0;
lotteryTicketObj[0] = lotteryTicketObj[1] = lotteryTicketObj[2] = lotteryTicketObj[3] = NULL;
for(numTickets=i=0; i<4; i++) {
if(!GWPlayer[i].field00_bit9) {
if(!GWPlayer[i].draw_ticket) {
continue;
}
object = omAddObjEx(boardObjMan, 257, 0, 0, -1, UpdateLotteryTicket);
@ -1299,20 +1299,20 @@ static void InitLotteryTicket(void)
HuSprAttrSet(work->group, 4, HUSPR_ATTR_DISPOFF);
HuSprAttrSet(work->group, 4, HUSPR_ATTR_ADDCOL);
HuSprScaleSet(work->group, 4, 1.3f, 1.3f);
ticket_mask = GWPlayer[i].field00_bitA;
ticket_player = GWPlayer[i].ticket_player;
j=3;
while(j>=0) {
s32 player_spr;
j--;
work->character[j] = GWPlayer[ticket_mask & 0x3].character;
work->character[j] = GWPlayer[ticket_player & 0x3].character;
player_spr = playerSprTbl[work->character[j]];
member = j+1;
BoardSpriteCreate(player_spr, 1500, NULL, &sprite);
HuSprGrpMemberSet(work->group, member, sprite);
HuSprAttrSet(work->group, member, HUSPR_ATTR_LINEAR);
HuSprPosSet(work->group, member, playerOfsTbl[j][0], playerOfsTbl[j][1]);
ticket_mask >>= 2;
ticket_player >>= 2;
}
numTickets++;
}

View file

@ -23,8 +23,6 @@
#include "math.h"
void HuSprGrpDrawNoSet(s16 group, s32 draw_no);
#define ABS(x) (((x) < 0) ? -(x) : (x))
typedef struct {
@ -525,7 +523,7 @@ static void ExecLottery(void) {
sp8.x = 0.0f;
sp8.y = 200.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lotteryMdl[0], &sp14, &sp8, 1300.0f, -1.0f, 0x1B);
BoardCameraMotionStartEx(lotteryMdl[0], &sp14, &sp8, 1300.0f, -1.0f, 27);
if (BoardPlayerSizeGet(temp_r31) == 1) {
BoardModelVisibilitySet(lotteryMdl[3], 1);
}
@ -560,7 +558,7 @@ static void ExecLottery(void) {
HuPrcVSleep();
}
BoardModelMotionShiftSet(BoardLotteryHostGet(), lotteryMot[0], 0.0f, 10.0f, 0x40000001);
if (GWPlayer[temp_r31].field00_bit9 == 0 && GWSystem.max_turn - GWSystem.turn >= 5) {
if (GWPlayer[temp_r31].draw_ticket == 0 && GWSystem.max_turn - GWSystem.turn >= 5) {
SetupTicket(temp_r31);
ShowTicket();
var_r27 = 1;
@ -737,7 +735,7 @@ static void ShowTicket(void) {
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
return;
}
sp8 = GWPlayer[GWSystem.player_curr].field00_bitA;
sp8 = GWPlayer[GWSystem.player_curr].ticket_player;
var_r28 = (u8*) &sp8;
temp_r31 = HuSprGrpCreate(4);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKUJIYA, 20), 30001, 0, &spA);
@ -798,8 +796,8 @@ static void SetupTicket(s32 arg0) {
s32 var_r31;
for (var_r30 = var_r31 = 0; var_r31 < 4; var_r31++) {
if (arg0 != var_r31 && GWPlayer[var_r31].field00_bit9 != 0) {
sp8[var_r30] = GWPlayer[var_r31].field00_bitA;
if (arg0 != var_r31 && GWPlayer[var_r31].draw_ticket != 0) {
sp8[var_r30] = GWPlayer[var_r31].ticket_player;
var_r30++;
}
}
@ -815,8 +813,8 @@ static void SetupTicket(s32 arg0) {
break;
}
}
GWPlayer[arg0].field00_bitA = var_r29;
GWPlayer[arg0].field00_bit9 = 1;
GWPlayer[arg0].ticket_player = var_r29;
GWPlayer[arg0].draw_ticket = 1;
}
static void LotteryInlineFunc00(s32 arg0, s32 arg1) {
@ -882,7 +880,7 @@ static void ExecBallGame(void) {
DATA_MAKE_NUM(DATADIR_WARIOMOT, 29),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 29),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 29),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 29),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 29)
};
temp_r27 = GWSystem.player_curr;
@ -890,7 +888,7 @@ static void ExecBallGame(void) {
sp4C.x = 0.0f;
sp4C.y = 210.0f;
sp4C.z = 0.0f;
BoardCameraMotionStartEx(lotteryMdl[0], NULL, &sp4C, 980.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(lotteryMdl[0], NULL, &sp4C, 980.0f, -1.0f, 21);
LotteryInlineFunc00(0, 0);
BoardCameraMotionWait();
BoardWinCreate(2, lotteryMessBase + 1, BoardWinPortraitGet());
@ -1836,7 +1834,7 @@ static void ExecPrize(void) {
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
BoardCameraMotionStartEx(lotteryMdl[0], 0, &sp14, 1300.0f, -1.0f, 21);
BoardCameraMotionStartEx(lotteryMdl[0], NULL, &sp14, 1300.0f, -1.0f, 21);
temp_r30 = GWSystem.player_curr;
BoardStatusShowSetForce(temp_r30);
BoardStatusShowSet(temp_r30, 1);
@ -2039,7 +2037,7 @@ void BoardLotteryTutorialExec(void) {
sp8.x = 0.0f;
sp8.y = 200.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lotteryMdl[0], &sp14, &sp8, 1300.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(lotteryMdl[0], &sp14, &sp8, 1300.0f, -1.0f, 21);
HuAudFXPlay(0x331);
HuAudFXPlay(0x344);
BoardModelMotionStart(lotteryMdl[0], 0, 0);

View file

@ -289,7 +289,7 @@ void BoardSaveInit(s32 board)
GWSystem.player_curr = -1;
GWSystem.bowser_loss = 0;
GWSystem.bowser_event = 0;
GWSystem.unk_32 = 1;
GWSystem.lucky_value = 1;
GWSystem.mg_next = 0;
GWMGTypeSet(0);
GWSystem.unk_38 = 0;
@ -298,12 +298,12 @@ void BoardSaveInit(s32 board)
for(i=0; i<4; i++) {
s32 party_flag;
BoardPlayerAutoSizeSet(i, 0);
GWPlayer[i].field00_bit9 = 0;
GWPlayer[i].draw_ticket = 0;
GWPlayer[i].color = 0;
GWPlayer[i].bowser_suit = 0;
GWPlayer[i].field08_bit3 = 0;
GWPlayer[i].jump = 0;
GWPlayer[i].space_shock = 0;
GWPlayer[i].field02_bit1 = 0;
GWPlayer[i].spark = 0;
GWPlayer[i].show_next = 1;
BoardPlayerCoinsSet(i, 0);
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
@ -322,8 +322,8 @@ void BoardSaveInit(s32 board)
GWPlayer[i].coins_max = 0;
GWPlayer[i].stars_max = 0;
GWPlayer[i].coins_battle = 0;
GWPlayer[i].unk_26 = 0;
GWPlayer[i].coin_gain = 0;
GWPlayer[i].coin_collect = 0;
GWPlayer[i].coin_win = 0;
GWPlayer[i].items[0] = -1;
GWPlayer[i].items[1] = -1;
GWPlayer[i].items[2] = -1;
@ -661,7 +661,7 @@ static void CreateBoard(void)
reset_unk32 = 0;
}
if(!reset_unk32) {
GWSystem.unk_32 = 1;
GWSystem.lucky_value = 1;
}
guest_status = BoardDataDirReadAsync(DATADIR_BGUEST);
if(guest_status != -1) {
@ -1059,7 +1059,7 @@ void BoardCameraNearFarGet(float *near, float *far)
void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target)
{
BoardCameraMotionStartEx(model_target, rot_target, 0, zoom_target, fov_target, 21);
BoardCameraMotionStartEx(model_target, rot_target, NULL, zoom_target, fov_target, 21);
}
void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time)

View file

@ -164,7 +164,7 @@ static void ExecMGSetup(void) {
luckyF = 0;
mgNext = 0;
GWSystem.player_curr = -1;
GWSystem.unk_32 = 1;
GWLuckyValueSet(1);
for (var_r31 = 0; var_r31 < 4; var_r31++) {
activeMG[var_r31].unk_00 = -1;
activeMG[var_r31].unk_04 = 0;
@ -175,7 +175,7 @@ static void ExecMGSetup(void) {
sp54.x = 0.0f;
sp54.y = 150.0f;
sp54.z = 0.0f;
BoardCameraMotionStartEx(-1, NULL, &sp54, 1300.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(-1, NULL, &sp54, 1300.0f, -1.0f, 21);
BoardCameraMotionWait();
WipeCreate(1, 0, 0x15);
@ -219,7 +219,7 @@ static void ExecMGSetup(void) {
while (setupObjGet() != 7) {
HuPrcVSleep();
}
switch (GWSystem.unk_32) {
switch (GWLuckyValueGet()) {
case 1:
var_r30 = luckyMessTbl[GWBoardGet()] + 1;
break;
@ -390,11 +390,11 @@ static void SetupStatusLayout(void) {
for (var_r28 = var_r31 = 0; var_r31 < 4; var_r31++) {
if (GWPlayer[var_r31].color == 2) {
var_r27 = var_r31;
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 0;
var_r28++;
} else {
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 1;
var_r26 = var_r31;
}
@ -415,11 +415,11 @@ static void SetupStatusLayout(void) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (var_r31 == var_r26) {
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 0;
} else {
BoardStatusTargetPosSet(var_r31, &statusLayout1Vs3[var_r29++]);
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 1;
}
}
@ -429,11 +429,11 @@ static void SetupStatusLayout(void) {
for (var_r29 = var_r31 = 0; var_r31 < 4; var_r31++) {
if (GWPlayer[var_r31].color == 2) {
BoardStatusTargetPosSet(var_r31, &statusLayout2Vs2[var_r29++]);
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 0;
} else {
BoardStatusTargetPosSet(var_r31, &statusLayout2Vs2[var_r30++]);
GWPlayer[var_r31].field08_bit11 = GWPlayerTeamGet(var_r31);
GWPlayer[var_r31].team_backup = GWPlayerTeamGet(var_r31);
GWPlayerCfg[var_r31].group = 1;
}
}
@ -923,10 +923,6 @@ static void HideLuckyValue(void) {
HuSprAttrSet(temp_r31->unk_00[0], 9, 4);
}
static inline s32 GWMGUnk32Get(void) {
return GWSystem.unk_32;
}
static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) {
s32 var_r23;
f32 temp_f29;
@ -953,11 +949,11 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) {
arg0->unk_03 = 0;
temp_r3 = BoardRandMod(0x64U);
if (temp_r3 < 0x55) {
GWSystem.unk_32 = 2;
GWLuckyValueSet(2);
return;
}
if (temp_r3 >= 0x5F) return;
GWSystem.unk_32 = 3;
GWLuckyValueSet(3);
return;
case 1:
if (arg0->unk_03 < 0x5A) {
@ -986,7 +982,7 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) {
}
HuSprBankSet(temp_r27->unk_00[0], 9, luckyValue);
if (arg0->unk_08 < 0.05f) {
if (luckyValue != GWMGUnk32Get() - 1) {
if (luckyValue != GWLuckyValueGet() - 1) {
arg0->unk_08 *= 1.0309278f;
return;
}

560
src/game/board/mushroom.c Normal file
View file

@ -0,0 +1,560 @@
#include "game/process.h"
#include "game/gamework_data.h"
#include "game/board/item.h"
#include "game/object.h"
#include "game/board/main.h"
#include "game/board/player.h"
#include "game/board/ui.h"
#include "game/board/model.h"
#include "game/objsub.h"
#include "math.h"
extern s32 boardTutorialData[4];
static void KillMushroom();
static void MushroomMain();
static void KillItemMdl(void);
static void MarkKillBox(void);
static void InitBox(s32 arg0);
static const float boxOfs[2] = {-150.0f, 150.0f};
static omObjData *boxObj[2] = {};
static s16 itemMdl = -1;
static s8 itemResult;
static u8 pickerChoice;
static omObjData* itemGiveObj;
static Process* mushroomProc;
void BoardMushroomExec(s32 arg0) {
omVibrate(arg0, 0xC, 6, 6);
mushroomProc = HuPrcChildCreate(MushroomMain, 0x2003U, 0x3800U, 0, boardMainProc);
HuPrcDestructorSet2(mushroomProc, KillMushroom);
while (mushroomProc != NULL) {
HuPrcVSleep();
}
GWPlayer[arg0].color = 3;
}
typedef struct {
struct {
u8 unk00_field0 : 1;
u8 unk00_field1 : 1;
u8 unk00_field2 : 3;
u8 unk00_field5 : 2;
u8 unk00_field7 : 1;
};
char unk01[1];
s16 unk_02;
s16 unk_04;
s16 unk_06;
f32 unk_08;
} boxObjWork;
static void SetBoxHide(s32 arg0);
static void SetBoxCenter(s32 arg0);
static void SetBoxShow(s32 arg0);
static void WaitBoxOpen(s32 arg0);
static void WaitBoxCenter(s32 arg0);
static s32 CheckBox(void);
static void StartItemGive(s32 arg0);
static void ShowItemMdl(void);
static void WaitItemGive(void);
static void MushroomMain(void) {
Vec sp14[2];
Vec sp8;
s32 temp_r0;
s32 temp_r0_2;
s32 var_r30;
s32 curPlayer;
s8 var_r29;
boxObjWork* box;
s32 var_r27;
s32 var_r26;
s32 i;
var_r29 = -1;
curPlayer = GWSystem.player_curr;
BoardCameraViewSet(3);
HuAudFXPlay(0x34A);
BoardPlayerMotBlendSet(curPlayer, 0, 15);
while (BoardPlayerMotBlendCheck(curPlayer) == 0) {
HuPrcVSleep();
}
BoardCameraMotionWait();
BoardPlayerIdleSet(curPlayer);
if (_CheckFlag(0x1000B) != 0) {
BoardTutorialHookExec(13, 0);
boardTutorialData[0] = 0;
}
if ((GWSystem.max_turn - GWSystem.turn) == 0) {
BoardWinCreate(0, 0x50003U, -1);
BoardWinWait();
BoardWinKill();
} else if (BoardPlayerItemCount(curPlayer) == 3) {
BoardWinCreate(0, 0x50000U, -1);
BoardWinWait();
BoardWinKill();
} else {
while (1) {
InitBox(curPlayer);
while (CheckBox() == 0) {
HuPrcVSleep();
}
for (i = 0; i < 2; i++) {
box = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
BoardModelPosGet(box->unk_02, &sp8);
Hu3D3Dto2D(&sp8, 1, &sp14[i]);
sp14[i].y += 32.0f;
sp14[i].z = 0.0f;
}
if (GWPlayer[curPlayer].com != 0) {
BoardRand();
var_r26 = 0; //inline?
var_r29 = var_r26;
if (_CheckFlag(0x1000BU) != 0) {
var_r29 = 0;
}
}
BoardPickerCreate(curPlayer, 2, &sp14[0], var_r29);
BoardPickerBackFlagSet(0);
while (BoardPickerDoneCheck() == 0) {
HuPrcVSleep();
}
pickerChoice = BoardPickerChoiceGet();
SetBoxShow(pickerChoice);
SetBoxHide(pickerChoice ^ 1);
WaitBoxCenter(pickerChoice);
BoardPlayerMotionStart(curPlayer, 11, 0);
while (BoardPlayerMotionTimeGet(curPlayer) < 27.0f) {
HuPrcVSleep();
}
HuAudFXPlay(0x30C);
StartItemGive(curPlayer);
WaitBoxOpen(pickerChoice);
ShowItemMdl();
SetBoxCenter(pickerChoice);
while (BoardPlayerMotionEndCheck(curPlayer) == 0) {
HuPrcVSleep();
}
WaitItemGive();
if (itemResult != 0) {
var_r27 = 0x50001;
} else {
var_r27 = 0x50002;
}
BoardPlayerMotionShiftSet(curPlayer, 0xC, 0.0f, 4.0f, 0);
HuPrcSleep(4);
BoardWinCreate(0, var_r27, -1);
BoardWinWait();
BoardWinKill();
MarkKillBox();
BoardPlayerMotionEndWait(curPlayer);
BoardPlayerIdleSet(curPlayer);
if (_CheckFlag(0x1000BU) != 0) {
BoardPlayerIdleSet(curPlayer);
BoardTutorialHookExec(14, 0);
if (++boardTutorialData[0] < 2) {
KillItemMdl();
continue;
}
}
break;
}
}
HuPrcEnd();
}
typedef struct {
struct {
u8 unk00_field0 : 1;
u8 unk00_field1 : 1;
u8 unk00_field2 : 3;
u8 unk00_field5 : 2;
u8 unk00_field7 : 1;
};
char unk01[1];
s16 unk_02;
s16 unk_04;
s16 unk_06;
f32 unk_08;
} ItemGiveWork2;
static void KillMushroom(void) {
ItemGiveWork2* temp_r31;
MarkKillBox();
if (itemGiveObj) {
temp_r31 = OM_GET_WORK_PTR(itemGiveObj, ItemGiveWork2);
temp_r31->unk00_field0 = 1;
}
KillItemMdl();
mushroomProc = NULL;
}
typedef struct {
struct {
u8 unk00_field0 : 1;
u8 unk00_field1 : 2;
u8 unk00_field2 : 5;
};
char unk01[1];
s16 unk_02;
f32 unk_04;
f32 unk_08;
} itemObjWork;
static void CenterBox(ItemGiveWork2*, omObjData*);
static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1);
static void HideBox(ItemGiveWork2*, omObjData*);
static void ShowBox(ItemGiveWork2*, omObjData*);
static void BoxMain(omObjData* arg0) {
s32 temp_r0;
ItemGiveWork2* temp_r30;
temp_r30 = OM_GET_WORK_PTR(arg0, ItemGiveWork2);
if ((temp_r30->unk00_field0) || (BoardIsKill() != 0)) {
BoardModelKill(temp_r30->unk_02);
boxObj[temp_r30->unk00_field1] = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
switch (temp_r30->unk00_field2) {
case 0:
ShowBox(temp_r30, arg0);
break;
case 2:
CenterBox(temp_r30, arg0);
break;
case 3:
ExitBox(temp_r30, arg0);
break;
case 4:
HideBox(temp_r30, arg0);
break;
}
BoardModelPosSet(temp_r30->unk_02, arg0->trans.x, arg0->trans.y, arg0->trans.z);
BoardModelRotSet(temp_r30->unk_02, arg0->rot.x, arg0->rot.y, arg0->rot.z);
}
static void ShowBox(ItemGiveWork2* arg0, omObjData* arg1) {
Vec sp8;
BoardPlayerPosGet(arg0->unk00_field5, &sp8);
sp8.y += 300.0f;
if (arg0->unk_08 >= 90.0f) {
arg0->unk_08 = 90.0f;
arg0->unk00_field7 = 1;
arg0->unk00_field2 = 1;
}
OSs16tof32(&arg0->unk_06, &arg1->rot.y);
arg1->trans.y = (sp8.y + (700.0f * cos((M_PI * (f64) arg0->unk_08) / 180.0)));
arg0->unk_08 += 1.5f;
arg0->unk_06 += 30;
}
static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1) {
Vec spC;
s16 sp8;
f32 temp;
sp8 = (arg0->unk_06 % 360);
OSs16tof32(&sp8, &temp);
BoardPlayerPosGet(arg0->unk00_field5, &spC);
spC.y += 300.0f;
if (arg0->unk_08 <= 0.0f) {
arg0->unk_08 = 0.0f;
arg0->unk00_field2 = 1;
}
arg1->trans.y = spC.y + (700.0f * cos((M_PI * arg0->unk_08) / 180.0));
arg1->rot.y = sin((M_PI * temp) / 180.0);
arg0->unk_08 -= 1.5f;
arg0->unk_06 -= 30;
}
static void HideBox(ItemGiveWork2* arg0, omObjData* arg1) {
arg0->unk_04 -= 4;
if (arg0->unk_04 < 0) {
arg0->unk00_field2 = 1;
arg0->unk_04 = 0;
}
BoardModelAlphaSet(arg0->unk_02, arg0->unk_04);
}
static void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) {
Vec sp20;
Vec sp14;
Vec sp8;
sp14.x = arg1->trans.x;
sp14.y = arg1->trans.y;
sp14.z = arg1->trans.z;
BoardPlayerPosGet(arg0->unk00_field5, &sp20);
PSVECSubtract(&sp20, &sp14, &sp8);
PSVECScale(&sp8, &sp8, 0.2f);
PSVECAdd(&sp8, &sp14, &sp14);
if (BoardVecMaxDistXZCheck(&sp20, &sp14, 3.0f) != 0) {
arg1->trans.x = sp20.x;
arg1->trans.z = sp20.z;
arg0->unk00_field2 = 1;
}
arg1->trans.x = sp14.x;
arg1->trans.z = sp14.z;
}
static void InitBox(s32 arg0) {
Vec sp10;
s32 sp8[2] = {0x0007006D, 0x0007006E};
s32 var_r29;
s32 var_r28;
s32 var_r27;
s32 i;
boxObjWork* temp_r31;
BoardPlayerPosGet(arg0, &sp10);
for (i = 0; i < 2; i++) {
boxObj[i] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, BoxMain);
temp_r31 = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
temp_r31->unk00_field0 = 0;
temp_r31->unk00_field7 = 0;
temp_r31->unk00_field5 = arg0;
temp_r31->unk00_field1 = i;
temp_r31->unk00_field2 = 0;
temp_r31->unk_06 = 0;
temp_r31->unk_08 = 0.0f;
temp_r31->unk_04 = 0xFF;
boxObj[i]->trans.x = sp10.x + boxOfs[i];
boxObj[i]->trans.y = 700.0f + sp10.y;
boxObj[i]->trans.z = sp10.z;
boxObj[i]->rot.x = 0.0f;
boxObj[i]->rot.y = 180.0f;
boxObj[i]->rot.z = 0.0f;
temp_r31->unk_02 = BoardModelCreate(0x70005, NULL, 0);
BoardModelPosSet(temp_r31->unk_02, boxObj[i]->trans.x, boxObj[i]->trans.y, boxObj[i]->trans.z);
BoardModelMotionSpeedSet(temp_r31->unk_02, 0.0f);
BoardModelLayerSet(temp_r31->unk_02, 2U);
}
HuAudFXPlay(0x340);
if (BoardRandFloat() < 0.5f) {
var_r28 = 0;
} else {
var_r28 = 1;
}
itemResult = (s8) var_r28;
if (BoardRandFloat() < 0.5f) {
var_r27 = 0;
} else {
var_r27 = 1;
}
var_r29 = var_r27;
if (GWBoardGet() == 8) {
itemResult = 0;
}
if (_CheckFlag(0x1000BU) != 0) {
itemResult = (boardTutorialData[0] ^ 1);
var_r29 = 0;
}
itemMdl = BoardModelCreate(sp8[itemResult], NULL, 0);
BoardModelVisibilitySet(itemMdl, 0);
temp_r31 = OM_GET_WORK_PTR(boxObj[var_r29], boxObjWork);
BoardModelScaleSet(temp_r31->unk_02, 1.5f, 1.5f, 1.5f);
}
static void MarkKillBox(void) {
s32 i;
boxObjWork* temp_r30;
for (i = 0; i < 2; i++) {
if (boxObj[i]) {
temp_r30 = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
temp_r30->unk00_field0 = 1;
}
}
}
static void SetBoxHide(s32 arg0) {
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
temp_r31->unk00_field2 = 3;
}
static void SetBoxCenter(s32 arg0) {
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
temp_r31->unk00_field2 = 4;
HuAudFXPlay(0x341);
}
static void SetBoxShow(s32 arg0) {
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
temp_r31->unk00_field2 = 2;
}
static void WaitBoxOpen(s32 arg0) {
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
BoardModelMotionSpeedSet(temp_r31->unk_02, 2.0f);
do {
HuPrcVSleep();
} while (BoardModelMotionEndCheck(temp_r31->unk_02) == 0);
}
static void WaitBoxCenter(s32 arg0) {
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
while (temp_r31->unk00_field2 != 1) {
HuPrcVSleep();
}
}
static s32 CheckBox(void) {
s32 i;
boxObjWork* box;
for (i = 0; i < 2; i++) {
box = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
if (box->unk00_field7 == 0) {
return 0;
}
}
return 1;
}
static void DoItemGive(omObjData* arg0) {
Vec sp28;
Vec sp1C;
Vec sp10;
s32 sp8[2] = {0, 1};
itemObjWork* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, itemObjWork);
if ((temp_r31->unk00_field0 != 0) || (BoardIsKill() != 0)) {
KillItemMdl();
itemGiveObj = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
BoardModelPosGet(itemMdl, &sp28);
BoardModelRotGet(itemMdl, &sp1C);
BoardPlayerPosGet(temp_r31->unk00_field1, &sp10);
sp10.y += 180.0f;
switch (temp_r31->unk00_field2) {
case 2:
if (temp_r31->unk_02 < 12) {
temp_r31->unk_04 += 1.47f;
sp28.y += temp_r31->unk_04;
} else if (temp_r31->unk_02 <= 24) {
BoardModelRotSet(itemMdl, 30.0f * temp_r31->unk_02, 0.0f, 0.0f);
} else if (temp_r31->unk_02 > 36) {
temp_r31->unk00_field2 = 0;
return;
}
temp_r31->unk_02++;
break;
case 0:
temp_r31->unk_04 += -1.47f;
if (temp_r31->unk_08 > 0.001f) {
temp_r31->unk_08 -= 0.005f;
}
sp28.y += temp_r31->unk_04;
if (sp10.y > sp28.y) {
BoardModelVisibilitySet(itemMdl, 0);
HuAudFXPlay(0x30D);
BoardPlayerItemAdd(temp_r31->unk00_field1, sp8[itemResult]);
temp_r31->unk00_field2 = 1;
}
/* fallthrough */
case 1:
default:
break;
}
BoardModelPosSetV(itemMdl, &sp28);
BoardModelScaleSet(itemMdl, temp_r31->unk_08, temp_r31->unk_08, temp_r31->unk_08);
}
static void StartItemGive(s32 arg0) {
Vec spC;
itemObjWork* temp_r31;
boxObjWork* box;
itemGiveObj = omAddObjEx(boardObjMan, 0x102, 0U, 0U, -1, DoItemGive);
temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
temp_r31->unk00_field0 = 0;
temp_r31->unk00_field1 = arg0;
temp_r31->unk00_field2 = 1;
temp_r31->unk_02 = 0;
temp_r31->unk_04 = 0.0f;
temp_r31->unk_08 = 1.0f;
box = OM_GET_WORK_PTR(boxObj[pickerChoice], boxObjWork);
BoardModelPosGet(box->unk_02, &spC);
BoardModelPosSetV(itemMdl, &spC);
}
static void KillItemMdl(void) {
if (itemMdl != -1) {
BoardModelKill(itemMdl);
itemMdl = -1;
}
}
static void ShowItemMdl(void) {
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
temp_r31->unk00_field2 = 2;
BoardModelVisibilitySet(itemMdl, 1);
}
static void WaitItemGive(void) {
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
while (temp_r31->unk00_field2 != 1) {
HuPrcVSleep();
}
}

View file

@ -114,15 +114,15 @@ static float padConfigPosTbl[4][2] = {
};
static s32 boardLogoTbl[] = {
0x00070057,
0x00070058,
0x00070059,
0x0007005A,
0x0007005B,
0x0007005C,
0x00070057,
0x0007005D,
0x0007005E
DATA_MAKE_NUM(DATADIR_BOARD, 87),
DATA_MAKE_NUM(DATADIR_BOARD, 88),
DATA_MAKE_NUM(DATADIR_BOARD, 89),
DATA_MAKE_NUM(DATADIR_BOARD, 90),
DATA_MAKE_NUM(DATADIR_BOARD, 91),
DATA_MAKE_NUM(DATADIR_BOARD, 92),
DATA_MAKE_NUM(DATADIR_BOARD, 87),
DATA_MAKE_NUM(DATADIR_BOARD, 93),
DATA_MAKE_NUM(DATADIR_BOARD, 94)
};
static float turnDigitPosTbl[] = {
@ -130,14 +130,14 @@ static float turnDigitPosTbl[] = {
};
static s32 boxMdlTbl[] = {
0x00080008,
0x00080009,
0x0008000A,
0x0008000B,
0x0008000C,
0x0008000D,
0x0008000E,
0x0008000F
DATA_MAKE_NUM(DATADIR_BPAUSE, 8),
DATA_MAKE_NUM(DATADIR_BPAUSE, 9),
DATA_MAKE_NUM(DATADIR_BPAUSE, 10),
DATA_MAKE_NUM(DATADIR_BPAUSE, 11),
DATA_MAKE_NUM(DATADIR_BPAUSE, 12),
DATA_MAKE_NUM(DATADIR_BPAUSE, 13),
DATA_MAKE_NUM(DATADIR_BPAUSE, 14),
DATA_MAKE_NUM(DATADIR_BPAUSE, 15)
};
void BoardPauseStart(void) {
@ -168,7 +168,7 @@ static void PauseExit(void) {
DeletePauseScreen();
DeletePauseControlWin();
BoardEventFlagReset();
HuDataDirClose(0x80000);
HuDataDirClose(DATADIR_BPAUSE);
pausePad = -1;
omSysPauseCtrl(0);
if (GWMGExplainGet()) {
@ -177,17 +177,17 @@ static void PauseExit(void) {
_ClearFlag(0xB);
}
if (GWPartyGet() == 0) {
GWGameStat.field10F_bit0 = GWMGExplainGet();
GWGameStat.field10F_bit1 = GWMGShowComGet();
GWGameStat.field10F_bit2 = GWMGListGet();
GWGameStat.field10F_bit4 = GWMessSpeedGet();
GWGameStat.field10F_bit6 = GWSaveModeGet();
GWGameStat.story_pause.explain_mg = GWMGExplainGet();
GWGameStat.story_pause.show_com_mg = GWMGShowComGet();
GWGameStat.story_pause.mg_list = GWMGListGet();
GWGameStat.story_pause.mess_speed = GWMessSpeedGet();
GWGameStat.story_pause.save_mode = GWSaveModeGet();
} else {
GWGameStat.field110_bit0 = GWMGExplainGet();
GWGameStat.field110_bit1 = GWMGShowComGet();
GWGameStat.field110_bit2 = GWMGListGet();
GWGameStat.field110_bit4 = GWMessSpeedGet();
GWGameStat.field110_bit6 = GWSaveModeGet();
GWGameStat.party_pause.explain_mg = GWMGExplainGet();
GWGameStat.party_pause.show_com_mg = GWMGShowComGet();
GWGameStat.party_pause.mg_list = GWMGListGet();
GWGameStat.party_pause.mess_speed = GWMessSpeedGet();
GWGameStat.party_pause.save_mode = GWSaveModeGet();
}
mainProcess = NULL;
}
@ -197,8 +197,8 @@ static void PauseProcess(void) {
pauseQuitF = 0;
mainScreenF = 1;
BoardFilterFadeInit(0x1E, 0xA0);
temp_r31 = BoardDataDirReadAsync(0x80000);
BoardFilterFadeInit(30, 0xA0);
temp_r31 = BoardDataDirReadAsync(DATADIR_BPAUSE);
BoardRollWinDispSet(0);
BoardDiceDigit2DShowSet(0);
BoardStatusItemSet(0);
@ -219,12 +219,12 @@ static void PauseProcess(void) {
DeletePauseScreen();
DeletePauseControlWin();
if (pauseQuitF != 0) {
HuPrcSleep(0x14);
HuPrcSleep(20);
WipeColorSet(0, 0, 0);
BoardKill();
} else {
BoardFilterFadeOut(0x1E);
HuPrcSleep(0x1E);
BoardFilterFadeOut(30);
HuPrcSleep(30);
}
HuPrcEnd();
}
@ -262,28 +262,28 @@ void CreatePauseScreen(void) {
temp_r27->trans.y = -32.0f + boxPosTbl[cursorPos][1];
pauseCursorPos = HuSprGrpCreate(2);
HuSprGrpPosSet(pauseCursorPos, 0.0f, 0.0f);
BoardSpriteCreate(0x70055, 0x2BC, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BOARD, 85), 700, 0, &sp8);
HuSprGrpMemberSet(pauseCursorPos, 0, sp8);
HuSprZRotSet(pauseCursorPos, 0, 45.0f);
HuSprAttrSet(pauseCursorPos, 0, 4);
HuSprAttrSet(pauseCursorPos, 0, 8);
HuSprPosSet(pauseCursorPos, 0, temp_r27->trans.x, temp_r27->trans.y);
BoardSpriteCreate(0x80007, 0x2EE, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 7), 750, 0, &sp8);
HuSprGrpMemberSet(pauseCursorPos, 1, sp8);
HuSprAttrSet(pauseCursorPos, 1, 4);
HuSprAttrSet(pauseCursorPos, 1, 8);
pauseSprGrp = HuSprGrpCreate(7);
HuSprGrpPosSet(pauseSprGrp, 0.0f, 0.0f);
BoardSpriteCreate(boardLogoTbl[GWBoardGet()], 0x384, 0, &sp8);
BoardSpriteCreate(boardLogoTbl[GWBoardGet()], 900, 0, &sp8);
HuSprGrpMemberSet(pauseSprGrp, 0, sp8);
HuSprPosSet(pauseSprGrp, 0, 288.0f, 120.0f);
HuSprAttrSet(pauseSprGrp, 0, 4);
HuSprAttrSet(pauseSprGrp, 0, 8);
BoardSpriteCreate(0x80005, 0x384, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 5), 900, 0, &sp8);
HuSprGrpMemberSet(pauseSprGrp, 1, sp8);
HuSprPosSet(pauseSprGrp, 1, 288.0f, 302.0f);
HuSprAttrSet(pauseSprGrp, 1, 8);
BoardSpriteCreate(0x80004, 0x320, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 4), 800, 0, &sp8);
HuSprGrpMemberSet(pauseSprGrp, 2, sp8);
HuSprZRotSet(pauseSprGrp, 2, -30.0f);
HuSprPosSet(pauseSprGrp, 2, 87.0f, 245.0f);
@ -301,32 +301,32 @@ void CreatePauseScreen(void) {
HuSprBankSet(pauseSprGrp, 2, 1);
}
for (i = 0; i < 4; i++) {
BoardSpriteCreate(0x80006, 0x320, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 6), 800, 0, &sp8);
HuSprGrpMemberSet(pauseSprGrp, i + 3, sp8);
HuSprPosSet(pauseSprGrp, i + 3, turnDigitPosTbl[i], 301.0f);
HuSprAttrSet(pauseSprGrp, i + 3, 8);
HuSprAttrSet(pauseSprGrp, i + 3, 1);
}
padConfigSprGrp = HuSprGrpCreate(0xD);
padConfigSprGrp = HuSprGrpCreate(13);
HuSprGrpPosSet(padConfigSprGrp, 0.0f, 0.0f);
for (i = 0; i < 4; i++) {
BoardSpriteCreate(0x80000, 0x38E, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 0), 910, 0, &sp8);
HuSprGrpMemberSet(padConfigSprGrp, i, sp8);
HuSprAttrSet(padConfigSprGrp, i, 8);
HuSprAttrSet(padConfigSprGrp, i, 1);
BoardSpriteCreate(0x80001, 0x2BC, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 1), 700, 0, &sp8);
HuSprGrpMemberSet(padConfigSprGrp, i + 4, sp8);
HuSprAttrSet(padConfigSprGrp, i + 4, 8);
HuSprAttrSet(padConfigSprGrp, i + 4, 1);
BoardSpriteCreate(0x80002, 0x320, 0, &sp8);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 2), 800, 0, &sp8);
HuSprGrpMemberSet(padConfigSprGrp, i + 8, sp8);
HuSprAttrSet(padConfigSprGrp, i + 8, 8);
HuSprAttrSet(padConfigSprGrp, i + 8, 1);
}
BoardSpriteCreate(0x80003, 0x3E8, 0, &sp8);
HuSprGrpMemberSet(padConfigSprGrp, 0xC, sp8);
HuSprAttrSet(padConfigSprGrp, 0xC, 4);
HuSprDrawNoSet(padConfigSprGrp, 0xC, 0x40);
BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BPAUSE, 3), 1000, 0, &sp8);
HuSprGrpMemberSet(padConfigSprGrp, 12, sp8);
HuSprAttrSet(padConfigSprGrp, 12, 4);
HuSprDrawNoSet(padConfigSprGrp, 12, 0x40);
CreatePadConfigSprite();
ShowPadConfigSprite(0);
hostOldLayer = BoardModelLayerGet(hostMdl);
@ -551,15 +551,15 @@ static void PauseConfigObjFunc(omObjData *arg0) {
switch (boxState[5]) {
case 0:
GWSystem.mess_speed = 2;
GWSystem.mess_delay = 0x30;
GWSystem.mess_delay = 48;
break;
case 1:
GWSystem.mess_speed = 1;
GWSystem.mess_delay = 0x20;
GWSystem.mess_delay = 32;
break;
case 2:
GWSystem.mess_speed = 0;
GWSystem.mess_delay = 0x10;
GWSystem.mess_delay = 16;
break;
}
}
@ -608,14 +608,14 @@ static void UpdatePauseText(s32 arg0) {
switch (arg0) {
case 0:
HuWinMesSet(settingsWin, 0x10001C);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 28));
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (i == GWPlayer[j].port) {
if (GWPlayer[j].com) {
var_r28 = 0x10001E;
var_r28 = MAKE_MESSID(16, 30);
} else {
var_r28 = 0x10001D;
var_r28 = MAKE_MESSID(16, 29);
}
HuWinInsertMesSet(settingsWin, var_r28, i);
break;
@ -625,66 +625,66 @@ static void UpdatePauseText(s32 arg0) {
break;
case 1:
if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, 0x100021);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 33));
} else {
HuWinMesSet(settingsWin, 0x100022);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 34));
}
break;
case 2:
if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, 0x100023);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 35));
} else {
HuWinMesSet(settingsWin, 0x100024);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 36));
}
break;
case 3:
switch (boxState[arg0]) {
case 0:
HuWinMesSet(settingsWin, 0x100026);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 38));
break;
case 1:
HuWinMesSet(settingsWin, 0x100025);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 37));
break;
case 2:
HuWinMesSet(settingsWin, 0x100027);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 39));
break;
}
break;
case 4:
if (boxState[arg0] != 0) {
HuWinMesSet(settingsWin, 0x100028);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 40));
} else {
HuWinMesSet(settingsWin, 0x100029);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 41));
}
break;
case 5:
switch (boxState[arg0]) {
case 0:
HuWinMesSet(settingsWin, 0x10002C);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 44));
break;
case 1:
HuWinMesSet(settingsWin, 0x10002B);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 43));
break;
case 2:
HuWinMesSet(settingsWin, 0x10002A);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 42));
break;
}
break;
case 6:
switch (boxState[arg0]) {
case 0:
HuWinMesSet(settingsWin, 0x10002F);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 47));
break;
case 1:
HuWinMesSet(settingsWin, 0x10002D);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 45));
break;
case 2:
HuWinMesSet(settingsWin, 0x10002E);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 46));
break;
}
break;
case 7:
HuWinMesSet(settingsWin, 0x100030);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 48));
break;
}
}
@ -699,16 +699,16 @@ static void InitPauseQuit(omObjData *arg0, ConfigWork *arg1) {
HuPrcSetStat(quitProcess, 0xC);
HuPrcDestructorSet2(quitProcess, DeletePauseQuit);
arg1->unk01 = 1;
arg1->unk06 = 0xA;
arg1->unk06 = 10;
HuSprAttrSet(pauseCursorPos, 0, 4);
HuSprAttrSet(pauseCursorPos, 1, 4);
break;
case 1:
if (quitWin != -1 && HuWinStatGet(quitWin) == 3) {
if (HuWinChoiceNowGet(quitWin) != 0) {
HuWinMesSet(settingsWin, 0x100033);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 51));
} else {
HuWinMesSet(settingsWin, 0x100032);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 50));
}
}
if (!quitProcess) {
@ -741,7 +741,7 @@ static void PauseQuitProcess(void) {
float sp10[2];
float sp8[2];
HuWinMesMaxSizeGet(1, sp8, 0x100031);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(16, 49));
sp10[0] = -10000.0f;
sp10[1] = 140.0f;
quitWin = HuWinExCreate(sp10[0], sp10[1], sp8[0], sp8[1], -1);
@ -749,10 +749,10 @@ static void PauseQuitProcess(void) {
temp_r31->active_pad = (1 << pausePad);
HuWinExAnimIn(quitWin);
HuWinMesSpeedSet(quitWin, 0);
HuWinMesSet(quitWin, 0x100031);
HuWinMesSet(quitWin, MAKE_MESSID(16, 49));
HuWinMesWait(quitWin);
if (HuWinChoiceGet(quitWin, 0) == 1) {
HuPrcSleep(0x3C);
HuPrcSleep(60);
pauseQuitF = 1;
_SetFlag(0x1001B);
}
@ -764,7 +764,7 @@ static void DeletePauseQuit(void) {
HuWinExCleanup(quitWin);
quitWin = -1;
}
HuDataDirClose(0x80000);
HuDataDirClose(DATADIR_BPAUSE);
quitProcess = NULL;
}
@ -807,7 +807,7 @@ static void CreatePadConfig(omObjData *arg0, ConfigWork *arg1) {
arg0->rot.x = 576.0f;
arg0->rot.y = 112.0f;
arg0->rot.z = (32.0f - arg0->rot.x) / 20.0f;
arg1->unk07 = 0x14;
arg1->unk07 = 20;
ShowPadConfigSprite(1);
HuSprGrpPosSet(padConfigSprGrp, arg0->rot.x, arg0->rot.y);
arg1->unk04 = 0;
@ -864,7 +864,7 @@ static void CursorMovePadConfig(omObjData *arg0, ConfigWork *arg1) {
s32 temp_r29;
u32 temp_r30;
HuWinMesSet(settingsWin, 0x10001F);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 31));
temp_r30 = HuPadDStkRep[pausePad] | HuPadBtnDown[pausePad];
temp_r29 = CheckPort(arg1->unk04);
if (temp_r30 == 0x100) {
@ -910,9 +910,9 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
u32 var_r30;
var_r30 = 0;
if (HuPadStkX[pausePad] < -0x14) {
if (HuPadStkX[pausePad] < -20) {
var_r30 |= 1;
} else if (HuPadStkX[pausePad] > 0x14) {
} else if (HuPadStkX[pausePad] > 20) {
var_r30 |= 2;
}
temp_r29 = CheckPort(arg1->unk04);
@ -921,10 +921,10 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
} else {
var_r27 = 3;
}
HuWinMesSet(settingsWin, 0x100020);
HuWinMesSet(settingsWin, MAKE_MESSID(16, 32));
if (var_r30 != 0) {
if (arg1->unk0C != 0 && arg1->unk0C == var_r30) {
if (arg1->unk09++ < 0xA) {
if (arg1->unk09++ < 10) {
return;
}
} else {
@ -1061,7 +1061,7 @@ static s32 UpdatePauseBox(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
}
var_f29 = arg0->rot.x;
arg0->rot.y = (var_f30 - var_f29) / 30.0f;
arg1->unk07 = 0x1E;
arg1->unk07 = 30;
arg1->unk01 = 2;
}
break;
@ -1161,7 +1161,7 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
}
var_f29 = arg0->rot.x;
arg0->rot.y = (var_f30 - var_f29) / 30.0f;
arg1->unk07 = 0x1E;
arg1->unk07 = 30;
arg1->unk01 = 2;
}
break;
@ -1280,7 +1280,7 @@ static void CreatePauseControlWin(void) {
float var_f30;
u32 var_r31;
var_r31 = 0x100035;
var_r31 = MAKE_MESSID(16, 53);
HuWinMesMaxSizeGet(1, sp8, var_r31);
var_f31 = 152.0f;
var_f30 = 280.0f;
@ -1290,9 +1290,9 @@ static void CreatePauseControlWin(void) {
HuWinMesSet(settingsControlWin, var_r31);
HuWinDispOff(settingsControlWin);
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
var_r31 = 0x100049;
var_r31 = MAKE_MESSID(16, 73);
} else {
var_r31 = 0x100034;
var_r31 = MAKE_MESSID(16, 52);
}
HuWinMesMaxSizeGet(1, sp8, var_r31);
var_f31 = -10000.0f;
@ -1418,7 +1418,7 @@ static void CreatePadConfigSprite(void) {
break;
}
}
temp_f31 = i * 0x60 + 0xB2;
temp_f31 = i * 96 + 178;
temp_f30 = 64.0f;
temp_r28 = GWPlayer[j].character;
temp_r27 = GWPlayer[j].diff;
@ -1434,7 +1434,7 @@ static void CreatePadConfigSprite(void) {
HuSprPosSet(padConfigSprGrp, i + 4, temp_f31, temp_f30);
HuSprPosSet(padConfigSprGrp, i + 8, temp_f31, temp_f30);
}
HuSprPosSet(padConfigSprGrp, 0xC, 260.0f, 64.0f);
HuSprPosSet(padConfigSprGrp, 12, 260.0f, 64.0f);
HuSprGrpPosSet(padConfigSprGrp, 0.0f, 0.0f);
}
@ -1455,9 +1455,9 @@ static void ShowPadConfigSprite(s32 arg0) {
}
}
if (arg0 != 0) {
HuSprAttrReset(padConfigSprGrp, 0xC, 4);
HuSprAttrReset(padConfigSprGrp, 12, 4);
} else {
HuSprAttrSet(padConfigSprGrp, 0xC, 4);
HuSprAttrSet(padConfigSprGrp, 12, 4);
}
}

View file

@ -188,8 +188,8 @@ void BoardPlayerInit(void) {
BoardPlayerSizeSet(var_r31, 0);
GWPlayer[var_r31].color = 0;
GWPlayer[var_r31].bowser_suit = 0;
GWPlayer[var_r31].field00_bit9 = 0;
GWPlayer[var_r31].field08_bit3 = 0;
GWPlayer[var_r31].draw_ticket = 0;
GWPlayer[var_r31].jump = 0;
}
return;
}
@ -212,7 +212,6 @@ void BoardPlayerModelInit(void) {
s32 temp_r24;
s16 temp_r3;
s32 temp_r4;
PlayerState* temp_r22;
PlayerState* temp_r27;
s32 ro0[8] = { 0x5E0000, 0x190000, 0x6C0000, 0x890000, 0x840000, 0x100000, 0xC0000, 0x800000 };
@ -222,9 +221,9 @@ void BoardPlayerModelInit(void) {
memset(&boardPlayerMdl, 0, 8);
suitMdl = -1;
suitPlayerMdl = -1;
if ((_CheckFlag(0x10005U) != 0) || ((_CheckFlag(0x10006U) != 0) && (temp_r4 = GWSystem.board, temp_r4 == 5))) {
if ((_CheckFlag(0x10005U) != 0) || (_CheckFlag(0x10006U) && (GWBoardGet() == 5))) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
temp_r25 = GWPlayer[var_r31].field08_bit11;
temp_r25 = GWPlayer[var_r31].team_backup;
GWPlayer[var_r31].team = temp_r25;
GWPlayerCfg[var_r31].group = temp_r25;
}
@ -234,8 +233,7 @@ void BoardPlayerModelInit(void) {
postTurnHook[var_r31] = 0;
motDoneF[var_r31] = 0;
diceJumpObj[var_r31] = 0;
temp_r22 = &GWPlayer[var_r31];
temp_r27 = temp_r22;
temp_r27 = BoardPlayerGet(var_r31);
temp_r29 = GWPlayerCfg[var_r31].character;
temp_r27->player_idx = var_r31;
GWPlayer[var_r31].character = temp_r29;
@ -725,7 +723,7 @@ void BoardPlayerTurnRollExec(s32 arg0) {
s32 temp_r30;
GWPlayer[arg0].roll = 0;
GWPlayer[arg0].field08_bit7 = 1;
GWPlayer[arg0].num_dice = 1;
BoardPauseDisableSet(0);
do {
temp_r30 = BoardRollExec(arg0);
@ -1686,7 +1684,7 @@ void BoardPlayerDiceJumpStart(s32 arg0) {
temp_r31->field00_bit3 = 0;
temp_r31->unk_08 = 0.0f;
temp_r31->unk_0C = sp8.y;
GWPlayer[arg0].field08_bit3 = 1;
GWPlayer[arg0].jump = 1;
}
s32 BoardPlayerDiceJumpCheck(s32 arg0) {
@ -1710,7 +1708,7 @@ static void DiceJumpFunc(omObjData* arg0) {
temp_r31 = OM_GET_WORK_PTR(arg0, bitcopy2);
if ((temp_r31->field00_bit0 != 0) || (BoardIsKill() != 0)) {
GWPlayer[temp_r31->field00_bit1].field08_bit3 = 0;
GWPlayer[temp_r31->field00_bit1].jump = 0;
BoardPlayerIdleSet(temp_r31->field00_bit1);
diceJumpObj[temp_r31->field00_bit1] = 0;
omDelObjEx(HuPrcCurrentGet(), arg0);
@ -1784,7 +1782,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
temp_r26 = OM_GET_WORK_PTR(temp_r3, bitcopy2);
temp_r26->field00_bit0 = 1;
for (var_r19 = 0; var_r19 < 0xB4U; var_r19++) {
for (var_r19 = 0; var_r19 < 180; var_r19++) {
if (BoardPlayerMotBlendCheck(arg0) != 0)
break;
HuPrcVSleep();
@ -1813,9 +1811,9 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
temp_r26->field00_bit0 = 1;
return;
}
if (abs(sp1C) <= 0x5A) {
if (abs(sp1C) <= 90) {
var_r20 = boardMotTbl[var_r18];
} else if (abs(sp1C) <= 0xB4) {
} else if (abs(sp1C) <= 180) {
var_r20 = boardMotRevTbl[var_r18];
} else {
temp_r26->field00_bit0 = 1;
@ -1824,7 +1822,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
temp_r26->unk_04h = BoardPlayerMotionCreate(arg0, var_r20);
OSs16tof32(&arg2, &var_f27);
temp_f26 = var_f27 / 59.0f;
if (0.0f != temp_f26) {
if (temp_f26 != 0.0f) {
var_f27 = 1.0f / temp_f26;
} else {
var_f27 = 1.0f;
@ -1832,7 +1830,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) {
if (GWPlayer[arg0].bowser_suit != 0) {
BoardBowserSuitMotionSetWalk();
BoardModelMotionSpeedSet(BoardBowserSuitModelGet(), var_f27 / 2);
} else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 0x2D) {
} else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 45) {
var_r22 = temp_r26->unk_04h;
BoardPlayerMotionShiftSet(arg0, var_r22, var_f24, var_f21, 0);
BoardPlayerMotionSpeedSet(arg0, var_f27);
@ -2256,7 +2254,7 @@ void UpdateBowserSuit(omObjData* arg0) {
void BoardPlayerSparkSet(s32 arg0) {
s16 currSpace = GWPlayer[arg0].space_curr;
GWPlayer[arg0].field02_bit1 = 1;
GWPlayer[arg0].spark = 1;
GWPlayer[arg0].space_shock = currSpace;
}
@ -2423,11 +2421,11 @@ static s32 DoSparkSpace(s32 player, s32 pause_cam)
static void RemoveSparkSpace(s32 player)
{
if(GWPlayer[player].field02_bit1) {
if(GWPlayer[player].spark) {
BoardWinCreate(0, 0x12001C, -1);
BoardWinWait();
BoardWinKill();
GWPlayer[player].field02_bit1 = 0;
GWPlayer[player].spark = 0;
GWPlayer[player].space_shock = 0;
}
}

View file

@ -154,7 +154,7 @@ s32 BoardRollExec(s32 arg0) {
if (GWPlayer[rollPlayer].bowser_suit != 0) {
diceSize = 3;
}
GWPlayer[arg0].field08_bit7 = numDice;
GWPlayer[arg0].num_dice = numDice;
rollProc = HuPrcChildCreate(RollMain, 0x2005, 0x6000, 0, boardMainProc);
HuPrcDestructorSet2(rollProc, RollDestroy);
while (rollProc != NULL) {
@ -262,7 +262,7 @@ static void RollMain(void) {
HuPrcVSleep();
}
DiceSetHit(i);
while (GWPlayer[rollPlayer].field08_bit3 != 0) {
while (GWPlayer[rollPlayer].jump != 0) {
HuPrcVSleep();
}
}

View file

@ -269,7 +269,7 @@ static void ExecShop(void) {
sp8.x = 0.0f;
sp8.y = 170.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(shopMdlPtr[0], &sp14, &sp8, 1360.0f, -1.0f, 0x1B);
BoardCameraMotionStartEx(shopMdlPtr[0], &sp14, &sp8, 1360.0f, -1.0f, 27);
HuAudFXPlay(0x330);
HuAudFXPlay(0x32D);
PopupShop();
@ -1144,7 +1144,7 @@ void BoardShopTutorialExec(s32 arg0) {
sp18.x = 0.0f;
sp18.y = 170.0f;
sp18.z = 0.0f;
BoardCameraMotionStartEx(shopMdlPtr[0], &sp24, &sp18, 1360.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(shopMdlPtr[0], &sp24, &sp18, 1360.0f, -1.0f, 21);
HuAudFXPlay(0x330);
HuAudFXPlay(0x32D);
PopupShop();

View file

@ -8,6 +8,7 @@
#include "game/hsfman.h"
#include "game/msm.h"
#include "game/objsub.h"
#include "game/window.h"
#include "game/wipe.h"
#include "game/board/audio.h"
#include "game/board/com.h"
@ -72,27 +73,27 @@ static s16 starParman = -1;
static s16 hostMdl = -1;
const s32 lbl_8011E040[9] = {
0x000C0000,
0x000C0009,
0x000C0012,
0x000C001B,
0x000C0024,
0x000C002D,
0x000C0000,
0x000C0000,
0x000C0000
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 9),
MAKE_MESSID(12, 18),
MAKE_MESSID(12, 27),
MAKE_MESSID(12, 36),
MAKE_MESSID(12, 45),
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 0),
MAKE_MESSID(12, 0)
};
const s32 lbl_8011E064[9][2] = {
{ 0x00150022, 0x00150028 },
{ 0x00150023, 0x00150029 },
{ 0x00150024, 0x0015002A },
{ 0x00150025, 0x0015002B },
{ 0x00150026, 0x0015002C },
{ 0x00150027, 0x0015002D },
{ 0x00150022, 0x00150028 },
{ 0x00150022, 0x00150028 },
{ 0x00150022, 0x00150028 }
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 35), MAKE_MESSID(21, 41) },
{ MAKE_MESSID(21, 36), MAKE_MESSID(21, 42) },
{ MAKE_MESSID(21, 37), MAKE_MESSID(21, 43) },
{ MAKE_MESSID(21, 38), MAKE_MESSID(21, 44) },
{ MAKE_MESSID(21, 39), MAKE_MESSID(21, 45) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) },
{ MAKE_MESSID(21, 34), MAKE_MESSID(21, 40) }
};
s32 boardStarSndTbl[] = {
@ -106,16 +107,13 @@ s32 boardStarSndTbl[] = {
0x000002E0
};
static s32 hostMotTbl[][2] = {
{ 0x00750021, 0x0007009D },
{ 0x00760007, 0x0007009E },
{ 0x0077001F, 0x0007009F },
{ 0x0078000B, 0x000700A0 },
{ 0x00790009, 0x000700A1 },
{ 0x007A0015, 0x000700A2 },
{ 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000 },
{ 0x00000000, 0x00000000 }
static s32 hostMotTbl[9][2] = {
{ DATA_MAKE_NUM(DATADIR_W01, 33), DATA_MAKE_NUM(DATADIR_BOARD, 157) },
{ DATA_MAKE_NUM(DATADIR_W02, 7), DATA_MAKE_NUM(DATADIR_BOARD, 158) },
{ DATA_MAKE_NUM(DATADIR_W03, 31), DATA_MAKE_NUM(DATADIR_BOARD, 159) },
{ DATA_MAKE_NUM(DATADIR_W04, 11), DATA_MAKE_NUM(DATADIR_BOARD, 160) },
{ DATA_MAKE_NUM(DATADIR_W05, 9), DATA_MAKE_NUM(DATADIR_BOARD, 161) },
{ DATA_MAKE_NUM(DATADIR_W06, 21), DATA_MAKE_NUM(DATADIR_BOARD, 162) }
};
static HsfanimStruct00 starEffParam = {
@ -219,9 +217,9 @@ static void ExecStar(void) {
var_f28 = BoardDAngleCalc(temp_f30 - temp_f29);
}
if (var_f28 > 90.0f) {
var_r25 = 0x1E;
var_r25 = 30;
} else {
var_r25 = 0xF;
var_r25 = 15;
}
BoardPlayerMotBlendSet(temp_r31, temp_f30, var_r25);
temp_f27 = BoardModelRotYGet(temp_r30);
@ -340,9 +338,9 @@ block_A:
}
_SetFlag(0x10017);
BoardModelMotionShiftSet(temp_r30, hostMot[0], 0.0f, 10.0f, 0);
HuPrcSleep(0x1E);
HuPrcSleep(30);
starDoneF = 1;
BoardAudSeqFadeOut(0, 0x3E8);
BoardAudSeqFadeOut(0, 1000);
BoardModelPosGet(temp_r30, &sp24);
sp24.y += 130.0f;
BoardStarGive(temp_r31, &sp24);
@ -438,7 +436,7 @@ static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) {
if (arg0->unk02 < 16.0f) {
arg0->unk02 += 2.0f;
if (arg0->unk02 > 16.0f) {
arg0->unk02 = 0x10;
arg0->unk02 = 16;
}
}
OSs8tof32(&arg0->unk02, &var_f31);
@ -472,7 +470,7 @@ static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) {
BoardPlayerPosGet(arg0->unk00_field3, &sp8);
if (arg0->unk00_field2 == 0) {
if (BoardModelMotionTimeGet(arg0->unk0C) >= 50.0f) {
BoardModelMotionStartEndSet(arg0->unk0C, 0x32, 0x96);
BoardModelMotionStartEndSet(arg0->unk0C, 50, 150);
arg0->unk00_field2 = 1;
}
}
@ -520,7 +518,7 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) {
arg1->scale.y = arg1->scale.x;
arg1->scale.z = arg1->scale.x;
} else {
omVibrate(arg0->unk00_field3, 0xC, 0xC, 0);
omVibrate(arg0->unk00_field3, 12, 0xC, 0);
arg0->unk00_field0 = 1;
arg0->unk01 = 4;
arg1->scale.x = arg1->scale.y = arg1->scale.z = 0.001f;
@ -542,7 +540,7 @@ static void InitGiveStarEffect(void) {
s16 temp_r3;
void *var_r30;
var_r30 = HuDataSelHeapReadNum(0x120001, MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r30 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 1), MEMORY_DEFAULT_NUM, HEAP_DATA);
starEffAnim = HuSprAnimRead(var_r30);
starParman = Hu3DParManCreate(starEffAnim, 0x64, &starEffParam);
Hu3DParManAttrSet(starParman, 0x64);
@ -550,7 +548,7 @@ static void InitGiveStarEffect(void) {
temp_r3 = Hu3DParManModelIDGet(starParman);
Hu3DParticleBlendModeSet(temp_r3, 1);
Hu3DModelLayerSet(temp_r3, 2);
HuDataDirClose(0x120000);
HuDataDirClose(DATADIR_EFFECT);
}
static void KillGiveStarEffect(void) {
@ -579,7 +577,7 @@ static inline void StarInlineFunc02(void) {
GiveStarWork *temp_r29 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
temp_r29->unk00_field1 = 1;
temp_r29->unk04 = 0x2D;
temp_r29->unk04 = 45;
temp_r29->unk08 = 0;
temp_r29->unk01 = 2;
}
@ -605,7 +603,7 @@ void BoardStarGive(s32 arg0, Vec *arg1) {
temp_r31->unk06 = 0;
temp_r31->unk02 = 0;
temp_r31->unk08 = 0;
temp_r31->unk0C = BoardModelCreate(0x7000B, NULL, 0);
temp_r31->unk0C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 11), NULL, 0);
BoardModelVisibilitySet(temp_r31->unk0C, 0);
BoardModelPassSet(temp_r31->unk0C, 0);
BoardModelMotionSpeedSet(temp_r31->unk0C, 0.0f);
@ -628,7 +626,7 @@ void BoardStarGive(s32 arg0, Vec *arg1) {
HuAudFXPlay(boardStarSndTbl[GWPlayer[arg0].character]);
BoardPlayerStarsAdd(arg0, 1);
HuAudFXPlay(8);
HuPrcSleep(0xA);
HuPrcSleep(10);
if (_CheckFlag(0x1000B)) {
BoardPlayerMotionEndWait(arg0);
} else {
@ -665,12 +663,12 @@ void BoardStarShowNext(s32 arg0) {
var_r26 = &wipeData;
if (var_r26->mode == 0) {
WipeColorSet(0, 0, 0);
WipeCreate(2, 0, 0x15);
WipeCreate(2, 0, 21);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
} else {
HuPrcSleep(0x12);
HuPrcSleep(18);
}
BoardStatusItemSet(0);
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarGiveHook) {
@ -729,7 +727,7 @@ void BoardStarShowNext(s32 arg0) {
BoardCameraMotionWait();
BoardCameraMoveSet(1);
HuPrcSleep(1);
WipeCreate(1, 0, 0x15);
WipeCreate(1, 0, 21);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -744,7 +742,7 @@ void BoardStarShowNext(s32 arg0) {
while (!BoardViewMoveCheck()) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
HuPrcSleep(30);
BoardWinKill();
HuPrcSleep(3);
if (var_r28 == 0) {
@ -758,9 +756,9 @@ void BoardStarShowNext(s32 arg0) {
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarShowNextHook) {
boardStarShowNextHook();
}
BoardAudSeqFadeOut(1, 0x3E8);
BoardAudSeqFadeOut(1, 1000);
WipeColorSet(0, 0, 0);
WipeCreate(2, 0, 0x15);
WipeCreate(2, 0, 21);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
@ -776,7 +774,7 @@ void BoardStarShowNext(s32 arg0) {
BoardCameraMotionWait();
BoardCameraMoveSet(1);
BoardStatusItemSet(1);
WipeCreate(1, 0, 0x15);
WipeCreate(1, 0, 21);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}

View file

@ -293,7 +293,7 @@ static void FocusStart(void) {
sp8.x = -22.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(camFocus, &sp8, 0, 1500.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(camFocus, &sp8, NULL, 1500.0f, -1.0f, 21);
}
static void CreatePlayerStart(void) {

View file

@ -364,7 +364,7 @@ static void SetTargetView(void) {
sp8.x = -45.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 0x15);
BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 21);
BoardCameraMotionWait();
} else {
BoardModelPosSet(focusMdl, 0.0f, 0.0f, 0.0f);

206
src/game/code_8003FF68.c Normal file
View file

@ -0,0 +1,206 @@
#include "game/data.h"
#include "game/hsfman.h"
#include "game/process.h"
#include "game/hsfmotion.h"
#include "game/esprite.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef struct unkArg0 {
/* 0x00 */ u32 unk_00;
/* 0x04 */ s16 unk_04;
/* 0x06 */ s16 unk_06;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
/* 0x0C */ Vec pos;
/* 0x18 */ Vec rot;
/* 0x24 */ Vec scale;
} unkArg0;
typedef struct unkCode_8003FF68 {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
} unkCode_8003FF68;
//func signatures
void fn_8004040C();
//bss
s16 lbl_80192060[0x80];
s16 lbl_80192160[0x80];
s16 lbl_80192260[0x80];
//sbss
char lbl_801D3DA0[8];
//data
s16 lbl_801D35C0[] = {
0x000D, 0x0026,
0x0008, 0x0017
};
s16 lbl_801D35C8[] = {
0x0005, 0x001E,
0x0001, 0x000F
};
s16 lbl_801D35D0[] = {
0x000D, 0x0019,
0x000B, 0x001A
};
s16 lbl_801D35D8[] = {
0x000C, 0x0022,
0x000A, 0x001B
};
s16* lbl_80130100[] = {
lbl_801D35C0,
lbl_801D35C8,
lbl_801D35D0,
lbl_801D35C0,
lbl_801D35D8,
lbl_801D35C0,
lbl_801D35C0,
lbl_801D35C0
};
void fn_8003FF68(unkArg0* arg0) {
ModelData* temp_r27;
s16 model;
s16 j, i;
unkArg0* var_r31;
void* temp;
var_r31 = arg0;
for (i = 0; i < ARRAY_COUNT(lbl_80192060); i++) {
lbl_80192060[i] = lbl_80192160[i] = -1;
}
for (j = 0; var_r31->unk_00 != -1U; var_r31++, j++) {
if (var_r31->unk_06 == 0) {
temp = HuDataSelHeapReadNum(var_r31->unk_00, 0x10000000, HEAP_DATA);
model = Hu3DModelCreate(temp);
lbl_80192060[j] = model;
Hu3DModelAttrSet(model, var_r31->unk_04);
Hu3DModelPosSetV(model, &var_r31->pos);
Hu3DModelRotSetV(model, &var_r31->rot);
Hu3DModelScaleSetV(model, &var_r31->scale);
temp_r27 = &Hu3DData[model];
if (temp_r27->unk_08 != -1) {
lbl_80192160[j] = temp_r27->unk_08;
}
} else if (var_r31->unk_06 == 1) {
temp = HuDataSelHeapReadNum(var_r31->unk_00, 0x10000000, HEAP_DATA);
lbl_80192160[j] = Hu3DMotionCreate(temp);
}
}
var_r31 = arg0;
for (j = 0; var_r31->unk_00 != 0; var_r31++, j++) {
if (var_r31->unk_06 == 2) {
model = Hu3DModelLink(lbl_80192060[var_r31->unk_08]);
lbl_80192060[j] = model;
Hu3DModelAttrSet(model, var_r31->unk_04);
Hu3DModelPosSetV(model, &var_r31->pos);
Hu3DModelRotSetV(model, &var_r31->rot);
Hu3DModelScaleSetV(model, &var_r31->scale);
}
if (var_r31->unk_0A != -1) {
Hu3DMotionSet(lbl_80192060[j], lbl_80192160[var_r31->unk_0A]);
}
}
//reg alloc hack
(void)j;
(void)j;
(void)j;
}
typedef struct unkArg0_2 {
u32 unk0;
s16 unk4;
s16 unk6;
f32 unk8;
f32 unkC;
u8 unk10;
u8 unk11;
u8 unk12;
u8 unk13;
} unkArg0_2;
void fn_800401D0(unkArg0_2* arg0) {
s16 spr;
s16 j;
s16 i;
unkArg0_2* var_r31;
var_r31 = arg0;
for (i = 0; i < ARRAY_COUNT(lbl_80192260); i++) {
lbl_80192260[i] = -1;
}
for (j = 0; var_r31->unk0 != 0; j++, var_r31++) {
spr = espEntry(var_r31->unk0, 100, 0);
lbl_80192260[j] = spr;
espPosSet(spr, var_r31->unk8, var_r31->unkC);
espColorSet(spr, var_r31->unk10, var_r31->unk11, var_r31->unk12);
espTPLvlSet(spr, var_r31->unk13 / 255.0f);
espPriSet(spr, var_r31->unk6);
espAttrSet(spr, var_r31->unk4);
}
}
void fn_800402FC(void) {
s16 i;
for (i = 0; i < ARRAY_COUNT(lbl_80192260); i++) {
if (lbl_80192260[i] != -1) {
espKill(lbl_80192260[i]);
}
}
}
void fn_80040374(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
Process* process;
unkCode_8003FF68* temp_r3;
process = HuPrcChildCreate(fn_8004040C, 1, 0x1000, 0, HuPrcCurrentGet());
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkCode_8003FF68), 0x10000000);
process->user_data = temp_r3;
temp_r3->unk0 = arg0;
temp_r3->unk2 = arg1;
temp_r3->unk4 = arg2;
temp_r3->unk6 = arg3;
}
typedef struct UnkUserData {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
} UnkUserData;
void fn_8004040C(void) {
ModelData* temp_r30;
s16* temp_r29;
UnkUserData* temp_r31;
Process* process;
process = HuPrcCurrentGet();
temp_r31 = (UnkUserData*)process->user_data;
temp_r30 = &Hu3DData[temp_r31->unk4];
temp_r29 = lbl_80130100[temp_r31->unk0];
while (1) {
if (temp_r30->unk_08 == temp_r31->unk6 &&
(temp_r30->unk_64 == (temp_r29[temp_r31->unk2 * 2] & 0xFFE) ||
temp_r30->unk_64 == (temp_r29[temp_r31->unk2 * 2 + 1] & 0xFFE))) {
HuAudFXPlay(0);
}
HuPrcVSleep();
}
}

View file

@ -15,7 +15,7 @@ static u8 *GetFlagPtr(u32 flag)
return ret;
}
u32 _CheckFlag(u32 flag)
s32 _CheckFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;

View file

@ -105,11 +105,15 @@ static inline void ResetFlag(GameStat *game_stat)
game_stat->field10E_bit4 = 0;
game_stat->field10E_bit5 = 0;
game_stat->field10E_bit6 = 0;
game_stat->field10F_bit0 = game_stat->field110_bit0 = 1;
game_stat->field10F_bit1 = game_stat->field110_bit1 = 1;
game_stat->field10F_bit2 = game_stat->field110_bit2 = 0;
game_stat->field10F_bit4 = game_stat->field110_bit4 = 1;
game_stat->field10F_bit6 = game_stat->field110_bit6 = 0;
}
static inline void ResetPauseConfig(GameStat *game_stat)
{
game_stat->story_pause.explain_mg = game_stat->party_pause.explain_mg = 1;
game_stat->story_pause.show_com_mg = game_stat->party_pause.show_com_mg = 1;
game_stat->story_pause.mg_list = game_stat->party_pause.mg_list = 0;
game_stat->story_pause.mess_speed = game_stat->party_pause.mess_speed = 1;
game_stat->story_pause.save_mode = game_stat->party_pause.save_mode = 0;
}
void GWGameStatReset(void)
@ -130,6 +134,7 @@ void GWGameStatReset(void)
ResetBoardRecord(game_stat);
ResetPresent(game_stat);
ResetFlag(game_stat);
ResetPauseConfig(game_stat);
memcpy(&GWGameStat, &GWGameStatDefault, sizeof(GameStat));
ResetBoardSettings();
}

View file

@ -74,7 +74,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
var_r29 = temp_r27->attribute;
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
if (strcmp(arg2, var_r29->bitmap->name) == 0) {
if (var_r29->unk04 == 0) {
if (!var_r29->unk04) {
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48);
var_r29->unk04 = var_r30;
var_r30->unk00 = 0;
@ -92,7 +92,7 @@ s16 Hu3DAnimCreate(void *arg0, s16 arg1, char *arg2) {
OSReport("Error: Not Found TexAnim Name\n");
return -1;
}
if (arg0 == 0) {
if (!arg0) {
var_r31->unk10 = NULL;
} else {
var_r31->unk10 = HuSprAnimRead(arg0);
@ -131,7 +131,7 @@ s16 Hu3DAnimLink(s16 arg0, s16 arg1, char *arg2) {
var_r29 = temp_r27->attribute;
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
if (strcmp(arg2, var_r29->bitmap->name) == 0) {
if (var_r29->unk04 == 0) {
if (!var_r29->unk04) {
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg1].unk_48);
var_r29->unk04 = var_r30;
} else {
@ -234,7 +234,7 @@ void Hu3DAnimBankSet(s16 arg0, s32 arg1) {
temp_r31->unk04 = temp_r31->unk08 = 0.0f;
}
void Hu3DAnmNoSet(s16 arg0, s32 arg1) {
void Hu3DAnmNoSet(s16 arg0, u16 arg1) {
Hu3DTexAnimDataStruct *temp_r31 = &Hu3DTexAnimData[arg0];
temp_r31->unk04 = arg1;
@ -378,7 +378,7 @@ s16 Hu3DTexScrollCreate(s16 arg0, char *arg1) {
var_r29 = temp_r27->attribute;
for (i = var_r25 = 0; i < temp_r27->attributeCnt; i++, var_r29++) {
if (strcmp(arg1, var_r29->bitmap->name) == 0) {
if (var_r29->unk04 == 0) {
if (!var_r29->unk04) {
var_r30 = HuMemDirectMallocNum(HEAP_DATA, sizeof(HsfanimStruct01), (u32) Hu3DData[arg0].unk_48);
var_r29->unk04 = var_r30;
var_r30->unk00 = 0;
@ -865,7 +865,7 @@ s16 Hu3DParManCreate(AnimData *arg0, s16 arg1, HsfanimStruct00 *arg2) {
s16 var_r30;
for (var_r30 = 0; var_r30 < 64; var_r30++) {
if (parManProc[var_r30] == 0) {
if (!parManProc[var_r30]) {
break;
}
}
@ -907,7 +907,7 @@ s16 Hu3DParManLink(s16 arg0, HsfanimStruct00 *arg1) {
s16 var_r30;
for (var_r30 = 0; var_r30 < 64; var_r30++) {
if (parManProc[var_r30] == 0) {
if (!parManProc[var_r30]) {
break;
}
}

View file

@ -457,7 +457,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) {
temp_r31 = &Hu3DCamera[i];
C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
PSMTXMultVec(sp1C, arg0, &sp10);
temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * 1.2000000476837158;
temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * 1.2f;
temp_f30 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z;
arg2->x = 288.0f + sp10.x * (288.0f / -temp_f31);
arg2->y = 240.0f + sp10.y * (240.0f / temp_f30);

4075
src/game/kerent.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -1199,11 +1199,8 @@ void omGameSysInit(Process *objman) {
omSysPauseEnable(0);
for (i = 0; i < 4; i++) {
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[i].coin_gain = 0;
}
GWPlayer[i].unk_26 = 0;
GWPlayerCoinWinSet(i, 0);
GWPlayerCoinCollectSet(i, 0);
}
if (mgPracticeEnableF != 0) {