From 36948439b26c34a9313972eb0b9c126b3ea68581 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Wed, 8 May 2024 17:53:15 -0700 Subject: [PATCH] Matched REL/m403 + some code cleanup --- config/GMPE01_00/rels/m403Dll/symbols.txt | 474 +++--- configure.py | 4 +- include/REL/m403Dll.h | 21 + include/game/hsfanim.h | 2 +- include/game/hsfman.h | 4 +- src/REL/m402Dll/main.c | 36 +- src/REL/m403Dll/main.c | 1592 +++++++++++++++++++++ src/REL/m403Dll/scene.c | 1024 +++++++++++++ src/REL/option/rumble.c | 4 +- src/REL/present/present.c | 8 +- src/REL/w01Dll/main.c | 16 +- src/REL/w04Dll/big_boo.c | 8 +- src/REL/w06Dll/bowser.c | 12 +- src/game/board/item.c | 18 +- src/game/board/pause.c | 18 +- src/game/board/star.c | 8 +- src/game/board/start.c | 10 +- src/game/hsfman.c | 12 +- src/game/saveload.c | 48 +- 19 files changed, 2967 insertions(+), 352 deletions(-) create mode 100755 include/REL/m403Dll.h create mode 100755 src/REL/m403Dll/main.c create mode 100755 src/REL/m403Dll/scene.c diff --git a/config/GMPE01_00/rels/m403Dll/symbols.txt b/config/GMPE01_00/rels/m403Dll/symbols.txt index 312ab162..d46cc4f0 100644 --- a/config/GMPE01_00/rels/m403Dll/symbols.txt +++ b/config/GMPE01_00/rels/m403Dll/symbols.txt @@ -1,256 +1,256 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ModuleProlog = .text:0x000000A0; // type:function size:0x384 -fn_1_424 = .text:0x00000424; // type:function size:0x20 -fn_1_444 = .text:0x00000444; // type:function size:0x3E8 -fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 -fn_1_1214 = .text:0x00001214; // type:function size:0x60 -fn_1_1274 = .text:0x00001274; // type:function size:0x1EC -fn_1_1460 = .text:0x00001460; // type:function size:0x278 -fn_1_16D8 = .text:0x000016D8; // type:function size:0x104 -fn_1_17DC = .text:0x000017DC; // type:function size:0x274 -fn_1_1A50 = .text:0x00001A50; // type:function size:0xA0 -fn_1_1AF0 = .text:0x00001AF0; // type:function size:0x2B8 -fn_1_1DA8 = .text:0x00001DA8; // type:function size:0x28 -fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x388 -fn_1_2158 = .text:0x00002158; // type:function size:0x14C -fn_1_22A4 = .text:0x000022A4; // type:function size:0x2F4 -fn_1_2598 = .text:0x00002598; // type:function size:0xA44 -fn_1_2FDC = .text:0x00002FDC; // type:function size:0x824 -fn_1_3800 = .text:0x00003800; // type:function size:0x94 -fn_1_3894 = .text:0x00003894; // type:function size:0x2EC -fn_1_3B80 = .text:0x00003B80; // type:function size:0x1EC -fn_1_3D6C = .text:0x00003D6C; // type:function size:0xE0 -fn_1_3E4C = .text:0x00003E4C; // type:function size:0x1C0 -fn_1_400C = .text:0x0000400C; // type:function size:0x9C -fn_1_40A8 = .text:0x000040A8; // type:function size:0x480 -fn_1_4528 = .text:0x00004528; // type:function size:0x54 -fn_1_457C = .text:0x0000457C; // type:function size:0x168 -fn_1_46E4 = .text:0x000046E4; // type:function size:0x120 -fn_1_4804 = .text:0x00004804; // type:function size:0x30C -fn_1_4B10 = .text:0x00004B10; // type:function size:0x78 -fn_1_4B88 = .text:0x00004B88; // type:function size:0x11C -fn_1_4CA4 = .text:0x00004CA4; // type:function size:0x78 -fn_1_4D1C = .text:0x00004D1C; // type:function size:0x2D8 -fn_1_4FF4 = .text:0x00004FF4; // type:function size:0x2B8 -fn_1_52AC = .text:0x000052AC; // type:function size:0x154 -fn_1_5400 = .text:0x00005400; // type:function size:0x3E0 -fn_1_57E0 = .text:0x000057E0; // type:function size:0x214 -fn_1_59F4 = .text:0x000059F4; // type:function size:0x198 -fn_1_5B8C = .text:0x00005B8C; // type:function size:0xD8 -fn_1_5C64 = .text:0x00005C64; // type:function size:0xBC -fn_1_5D20 = .text:0x00005D20; // type:function size:0x33C -fn_1_605C = .text:0x0000605C; // type:function size:0x4B0 +fn_1_424 = .text:0x00000424; // type:function size:0x20 scope:local +fn_1_444 = .text:0x00000444; // type:function size:0x3E8 scope:local +fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 scope:local +fn_1_1214 = .text:0x00001214; // type:function size:0x60 scope:local +fn_1_1274 = .text:0x00001274; // type:function size:0x1EC scope:local +fn_1_1460 = .text:0x00001460; // type:function size:0x278 scope:local +fn_1_16D8 = .text:0x000016D8; // type:function size:0x104 scope:local +fn_1_17DC = .text:0x000017DC; // type:function size:0x274 scope:local +fn_1_1A50 = .text:0x00001A50; // type:function size:0xA0 scope:local +fn_1_1AF0 = .text:0x00001AF0; // type:function size:0x2B8 scope:local +fn_1_1DA8 = .text:0x00001DA8; // type:function size:0x28 scope:local +fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x388 scope:local +fn_1_2158 = .text:0x00002158; // type:function size:0x14C scope:local +fn_1_22A4 = .text:0x000022A4; // type:function size:0x2F4 scope:local +fn_1_2598 = .text:0x00002598; // type:function size:0xA44 scope:local +fn_1_2FDC = .text:0x00002FDC; // type:function size:0x824 scope:local +fn_1_3800 = .text:0x00003800; // type:function size:0x94 scope:local +fn_1_3894 = .text:0x00003894; // type:function size:0x2EC scope:local +fn_1_3B80 = .text:0x00003B80; // type:function size:0x1EC scope:local +fn_1_3D6C = .text:0x00003D6C; // type:function size:0xE0 scope:local +fn_1_3E4C = .text:0x00003E4C; // type:function size:0x1C0 scope:local +fn_1_400C = .text:0x0000400C; // type:function size:0x9C scope:local +fn_1_40A8 = .text:0x000040A8; // type:function size:0x480 scope:local +fn_1_4528 = .text:0x00004528; // type:function size:0x54 scope:local +fn_1_457C = .text:0x0000457C; // type:function size:0x168 scope:local +fn_1_46E4 = .text:0x000046E4; // type:function size:0x120 scope:local +fn_1_4804 = .text:0x00004804; // type:function size:0x30C scope:local +fn_1_4B10 = .text:0x00004B10; // type:function size:0x78 scope:local +fn_1_4B88 = .text:0x00004B88; // type:function size:0x11C scope:local +fn_1_4CA4 = .text:0x00004CA4; // type:function size:0x78 scope:local +fn_1_4D1C = .text:0x00004D1C; // type:function size:0x2D8 scope:local +fn_1_4FF4 = .text:0x00004FF4; // type:function size:0x2B8 scope:local +fn_1_52AC = .text:0x000052AC; // type:function size:0x154 scope:local +fn_1_5400 = .text:0x00005400; // type:function size:0x3E0 scope:local +fn_1_57E0 = .text:0x000057E0; // type:function size:0x214 scope:local +fn_1_59F4 = .text:0x000059F4; // type:function size:0x198 scope:local +fn_1_5B8C = .text:0x00005B8C; // type:function size:0xD8 scope:local +fn_1_5C64 = .text:0x00005C64; // type:function size:0xBC scope:local +fn_1_5D20 = .text:0x00005D20; // type:function size:0x33C scope:local +fn_1_605C = .text:0x0000605C; // type:function size:0x4B0 scope:local fn_1_650C = .text:0x0000650C; // type:function size:0x260 fn_1_676C = .text:0x0000676C; // type:function size:0x20 -fn_1_678C = .text:0x0000678C; // type:function size:0x84 -fn_1_6810 = .text:0x00006810; // type:function size:0x4 -fn_1_6814 = .text:0x00006814; // type:function size:0x16C -fn_1_6980 = .text:0x00006980; // type:function size:0x318 -fn_1_6C98 = .text:0x00006C98; // type:function size:0x240 -fn_1_6ED8 = .text:0x00006ED8; // type:function size:0x110 -fn_1_6FE8 = .text:0x00006FE8; // type:function size:0x400 -fn_1_73E8 = .text:0x000073E8; // type:function size:0x5B4 -fn_1_799C = .text:0x0000799C; // type:function size:0xFC -fn_1_7A98 = .text:0x00007A98; // type:function size:0x88 -fn_1_7B20 = .text:0x00007B20; // type:function size:0xB4 -fn_1_7BD4 = .text:0x00007BD4; // type:function size:0x4C -fn_1_7C20 = .text:0x00007C20; // type:function size:0x10 +fn_1_678C = .text:0x0000678C; // type:function size:0x84 scope:local +fn_1_6810 = .text:0x00006810; // type:function size:0x4 scope:local +fn_1_6814 = .text:0x00006814; // type:function size:0x16C scope:local +fn_1_6980 = .text:0x00006980; // type:function size:0x318 scope:local +fn_1_6C98 = .text:0x00006C98; // type:function size:0x240 scope:local +fn_1_6ED8 = .text:0x00006ED8; // type:function size:0x110 scope:local +fn_1_6FE8 = .text:0x00006FE8; // type:function size:0x400 scope:local +fn_1_73E8 = .text:0x000073E8; // type:function size:0x5B4 scope:local +fn_1_799C = .text:0x0000799C; // type:function size:0xFC scope:local +fn_1_7A98 = .text:0x00007A98; // type:function size:0x88 scope:local +fn_1_7B20 = .text:0x00007B20; // type:function size:0xB4 scope:local +fn_1_7BD4 = .text:0x00007BD4; // type:function size:0x4C scope:local +fn_1_7C20 = .text:0x00007C20; // type:function size:0x10 scope:local fn_1_7C30 = .text:0x00007C30; // type:function size:0x20 fn_1_7C50 = .text:0x00007C50; // type:function size:0x10 fn_1_7C60 = .text:0x00007C60; // type:function size:0xA4 -fn_1_7D04 = .text:0x00007D04; // type:function size:0x274 +fn_1_7D04 = .text:0x00007D04; // type:function size:0x274 scope:local fn_1_7F78 = .text:0x00007F78; // type:function size:0x15C fn_1_80D4 = .text:0x000080D4; // type:function size:0x180 -fn_1_8254 = .text:0x00008254; // type:function size:0x10 +fn_1_8254 = .text:0x00008254; // type:function size:0x10 scope:local fn_1_8264 = .text:0x00008264; // type:function size:0x10 -fn_1_8274 = .text:0x00008274; // type:function size:0x5C +fn_1_8274 = .text:0x00008274; // type:function size:0x5C scope:local fn_1_82D0 = .text:0x000082D0; // type:function size:0x1A0 fn_1_8470 = .text:0x00008470; // type:function size:0x200 fn_1_8670 = .text:0x00008670; // type:function size:0x30 fn_1_86A0 = .text:0x000086A0; // type:function size:0x8CC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x9 data:byte -lbl_1_rodata_A9 = .rodata:0x000000A9; // type:object size:0xB data:byte -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size: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:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte -lbl_1_data_4 = .data:0x00000004; // type:object size:0xC -lbl_1_data_10 = .data:0x00000010; // type:object size:0xC -lbl_1_data_1C = .data:0x0000001C; // type:object size:0x28 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 -lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x20 +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x9 scope:local data:byte +lbl_1_rodata_A9 = .rodata:0x000000A9; // type:object size:0x9 scope:local data:byte +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 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_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC scope:local data:float +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x4 scope:local +lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 scope:local data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 scope:local data:4byte +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x20 scope:local jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local -lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 -lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 -lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 -lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte -lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 -lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 -lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 -lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 -lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 -lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 -lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 -lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 -lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 -lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 -lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 -lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 -lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC data:4byte -lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC data:4byte -lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 data:4byte -lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 -lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 -lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 -lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 -lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x18 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte -lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:2byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0xC data:2byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte -lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 data:2byte -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte -lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 data:2byte -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x18 -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte -lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte -lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:float -lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte -lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte -lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte -lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte -lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte -lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x14 -lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte -lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 scope:local +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 scope:local data:float +lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 scope:local data:float +lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 scope:local data:float +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 scope:local data:4byte +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 scope:local data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 scope:local data:float +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 scope:local data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 scope:local data:float +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 scope:local data:float +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 scope:local data:float +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 scope:local data:float +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 scope:local data:float +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 scope:local data:float +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 scope:local data:float +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 scope:local data:float +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 scope:local data:float +lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 scope:local +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 scope:local data:float +lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC scope:local data:4byte +lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC scope:local data:4byte +lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 scope:local data:4byte +lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 scope:local +lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 scope:local +lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 scope:local data:float +lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 scope:local +lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x18 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0xC scope:local data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 scope:local +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x18 scope:local +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x14 scope:local +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 scope:local data:4byte diff --git a/configure.py b/configure.py index c26c011b..9a835e91 100644 --- a/configure.py +++ b/configure.py @@ -808,8 +808,8 @@ config.libs = [ Rel('m403Dll', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m403Dll/main.c"), - Object(NonMatching, "REL/m403Dll/scene.c"), + Object(Matching, "REL/m403Dll/main.c"), + Object(Matching, "REL/m403Dll/scene.c"), } ), Rel('m404Dll', diff --git a/include/REL/m403Dll.h b/include/REL/m403Dll.h new file mode 100755 index 00000000..287c2294 --- /dev/null +++ b/include/REL/m403Dll.h @@ -0,0 +1,21 @@ +#ifndef M403DLL_H +#define M403DLL_H + +#include "game/process.h" + +#include "dolphin.h" + +void fn_1_650C(Process *arg0); +void fn_1_676C(void); +void fn_1_7C30(float arg0); +void fn_1_7C50(s32 arg0); +void fn_1_7C60(void); +float fn_1_7F78(float arg0, float arg1); +float fn_1_80D4(Vec *arg0, float arg1); +s32 fn_1_8264(void); +s32 fn_1_82D0(Vec *arg0); +s32 fn_1_8470(Vec *arg0); +void fn_1_8670(s32 arg0); +s32 fn_1_86A0(Vec *arg0, Vec *arg1); + +#endif diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index edfe1862..e06f19f9 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -41,7 +41,7 @@ typedef struct particle_data { /* 0x28 */ float unk_28; /* 0x2C */ u8 unk_2C; /* 0x2D */ u8 unk_2D; - /* 0x2E */ char unk_2E[2]; + /* 0x2E */ s16 unk_2E; /* 0x30 */ s16 unk_30; /* 0x32 */ char unk_32[2]; /* 0x34 */ u32 unk_34; diff --git a/include/game/hsfman.h b/include/game/hsfman.h index b0481822..f90b11db 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -191,8 +191,8 @@ void Hu3DGLightSpotSet(s16, u16, f32); void Hu3DLLightSpotSet(s16, s16, u16, f32); void Hu3DGLightInfinitytSet(s16); void Hu3DLLightInfinitytSet(s16, s16); -void Hu3DGLightPointSet(s16, u16, f32, f32); -void Hu3DLLightPointSet(s16, s16, u16, f32, f32); +void Hu3DGLightPointSet(s16, f32, f32, u16); +void Hu3DLLightPointSet(s16, s16, f32, f32, u16); void Hu3DGLightKill(s16); void Hu3DLLightKill(s16, s16); void Hu3DLightAllKill(void); diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c index 0099633c..6b21f7cf 100755 --- a/src/REL/m402Dll/main.c +++ b/src/REL/m402Dll/main.c @@ -751,24 +751,6 @@ static void fn_1_1F58(s32 arg0) { lbl_1_bss_1A4 = -1; } -static inline float fn_1_1FC4InlineFunc(float arg0, float arg1, float arg2) { - float var_f29; - float var_f27; - - var_f29 = fmod(arg1 - arg0, 360.0); - if (0.0f > var_f29) { - var_f29 += 360.0f; - } - if (180.0f < var_f29) { - var_f29 -= 360.0f; - } - var_f27 = fmod(arg0 + var_f29 * arg2, 360.0); - if (0.0f > var_f27) { - var_f27 += 360.0f; - } - return var_f27; -} - static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { Vec sp18; float var_f28; @@ -789,7 +771,7 @@ static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { sp18.x = 10.0f * sp18.x; sp18.z = 10.0f * sp18.z; } - *arg1 = fn_1_1FC4InlineFunc(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); if (8.0f <= var_f28) { var_r30 = 2; } else { @@ -943,7 +925,6 @@ static void fn_1_3204(omObjData *arg0) { omObjData *temp_r29; UnkData234Struct *temp_r28; u16 var_r26; - s32 temp_r20; temp_r31 = arg0->data; if (lbl_1_bss_58->work[0] == 1007) { @@ -960,10 +941,7 @@ static void fn_1_3204(omObjData *arg0) { } Hu3DMotionSpeedSet(arg0->model[0], 1.0f); if (lbl_1_bss_26 == temp_r31->unk54) { - temp_r20 = temp_r31->unk54; - if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { - GWPlayer[temp_r20].coin_win = 10; - } + GWPlayerCoinWinSet(temp_r31->unk54, 10); } arg0->func = fn_1_43D8; return; @@ -1243,7 +1221,7 @@ static void fn_1_43D8(omObjData *arg0) { arg0->func = fn_1_3204; } break; - + case 2010: if (temp_r31->unk54 == lbl_1_bss_26) { temp_r31->unk4C = 2012; @@ -1259,10 +1237,10 @@ static void fn_1_43D8(omObjData *arg0) { fn_1_2B30(temp_r31, arg0, temp_r30); } break; - - case 2011: - break; - + + case 2011: + break; + case 2012: temp_r31->unk1C -= temp_r31->unk20; if (0.0f > temp_r31->unk1C) { diff --git a/src/REL/m403Dll/main.c b/src/REL/m403Dll/main.c new file mode 100755 index 00000000..4447b3ac --- /dev/null +++ b/src/REL/m403Dll/main.c @@ -0,0 +1,1592 @@ +#include "REL/m403Dll.h" +#include "REL/executor.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "ext_math.h" +#include "rel_sqrt_consts.h" + +typedef struct { + /* 0x000 */ u8 unk00; + /* 0x001 */ char unk01[3]; + /* 0x004 */ Vec unk04; + /* 0x010 */ Vec unk10; + /* 0x01C */ Vec unk1C; + /* 0x028 */ Vec unk28; + /* 0x034 */ Vec unk34; + /* 0x040 */ Vec unk40; + /* 0x04C */ Vec unk4C; + /* 0x058 */ Vec unk58; + /* 0x064 */ Vec unk64; + /* 0x070 */ Vec unk70; + /* 0x07C */ Vec unk7C; + /* 0x088 */ float unk88[3][3]; + /* 0x0AC */ Vec unkAC; + /* 0x0B8 */ Vec unkB8; + /* 0x0C4 */ Vec unkC4; + /* 0x0D0 */ float unkD0[3][3]; + /* 0x0F4 */ float unkF4[3]; + /* 0x100 */ float unk100[3]; + /* 0x10C */ float unk10C[3]; + /* 0x118 */ float unk118[3]; + /* 0x124 */ float unk124[3]; + /* 0x130 */ float unk130; + /* 0x134 */ float unk134; + /* 0x138 */ float unk138; + /* 0x13C */ float unk13C; + /* 0x140 */ float unk140; + /* 0x144 */ float unk144; + /* 0x148 */ float unk148; +} Unkm403Struct_00; // Size 0x14C + +typedef struct { + /* 0x00 */ u8 unk00; + /* 0x01 */ u8 unk01; + /* 0x02 */ u8 unk02; + /* 0x03 */ u8 unk03; + /* 0x04 */ u8 unk04; + /* 0x05 */ u8 unk05; + /* 0x06 */ u8 unk06; + /* 0x07 */ u8 unk07; + /* 0x08 */ char unk08[2]; + /* 0x0A */ u8 unk0A; + /* 0x0B */ char unk0B[1]; + /* 0x0C */ u8 unk0C; + /* 0x0D */ u8 unk0D; + /* 0x0E */ u8 unk0E; + /* 0x0F */ char unk0F[1]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + /* 0x14 */ s16 unk14; + /* 0x16 */ s16 unk16; + /* 0x18 */ s16 unk18; + /* 0x1A */ s16 unk1A; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ Vec unk2C; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ Vec unk50; + /* 0x5C */ s16 unk5C; // Start of a struct of size 0x40 (memset)? + /* 0x5E */ s16 unk5E; + /* 0x60 */ float unk60; + /* 0x64 */ float unk64; + /* 0x68 */ char unk68[0x34]; + /* 0x9C */ u8 unk9C; + /* 0x9D */ char unk9D[3]; + /* 0xA0 */ s32 unkA0; +} Unkm403Struct_01; // Size 0xA4 + +static void fn_1_424(omObjData *arg0); +static void fn_1_444(omObjData *arg0); +static void fn_1_82C(omObjData *arg0); +static void fn_1_1214(omObjData *arg0); +static void fn_1_1274(omObjData *arg0); +static void fn_1_1460(omObjData *arg0); +static void fn_1_16D8(omObjData *arg0); +static void fn_1_17DC(omObjData *arg0); +static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3); +static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6); +static void fn_1_1DA8(float arg0); +static void fn_1_1DD0(omObjData *arg0); +static void fn_1_2158(omObjData *arg0); +static void fn_1_22A4(omObjData *arg0); +static void fn_1_2598(omObjData *arg0); +static void fn_1_2FDC(omObjData *arg0); +static void fn_1_3800(void); +static s32 fn_1_3894(void); +static void fn_1_3B80(omObjData *arg0); +static void fn_1_3D6C(Vec *arg0, Vec *arg1); +static void fn_1_3E4C(omObjData *arg0); +static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2); +static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix); +static s32 fn_1_4528(void); +static float fn_1_457C(float arg0, float arg1, float arg2); +static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3); +static void fn_1_4804(float *arg0, float *arg1); +static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3); +static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4); +static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3); +static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4); +static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3); +static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4); +static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3); +static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5); +static float fn_1_59F4(Vec *arg0); +static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3); +static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2); +static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2); +static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4); + +static omObjData *lbl_1_bss_50; +static omObjData *lbl_1_bss_4C; +static omObjData *lbl_1_bss_48; +static omObjData *lbl_1_bss_44; +static omObjData *lbl_1_bss_34[4]; +static u16 lbl_1_bss_30; +static s16 lbl_1_bss_2E; +static s16 lbl_1_bss_2C; +static s16 lbl_1_bss_2A; +static s16 lbl_1_bss_28; +static s16 lbl_1_bss_1C[6]; +static s16 lbl_1_bss_18[2]; +static u8 lbl_1_bss_10_unused[8]; +static s32 lbl_1_bss_C; +static u8 lbl_1_bss_6_unused[6]; +static s16 lbl_1_bss_4; +static s16 lbl_1_bss_2; +static s16 lbl_1_bss_0; + +static s16 lbl_1_data_0 = -1; +static Vec lbl_1_data_4 = { 0.0f, 4000.0f, 4000.0f }; +static Vec lbl_1_data_10 = { 0.0f, -0.7f, -0.6f }; +static GXColor lbl_1_data_1C = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_20_unused = { 0.0f, 4000.0f, -2000.0f }; +static Vec lbl_1_data_2C_unused = { 0.0f, 1.0f, 0.0f }; +static u8 lbl_1_data_38_unused[0xC] = { 0 }; + +void ModuleProlog(void) { + LightData *var_r28; + Process *temp_r31; + omObjData *var_r29; + s32 temp_r27; + s32 var_r26; + s32 i; + + OSReport("******* M403ObjectSetup *********\n"); + Hu3DLighInit(); + var_r26 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_1C); + Hu3DGLightInfinitytSet(var_r26); + var_r28 = &Hu3DGlobalLight[0]; + var_r28->unk_00 |= 0x8000; + temp_r31 = omInitObjMan(50, 0x2000); + temp_r27 = frand() & 0x1F; + for (i = 0; i < temp_r27; i++) { + fn_1_4528(); + } + CRot.x = -23.5f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 320.0f; + Center.z = 147.0f; + CZoom = 1720.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 400.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_4C = omAddObjEx(temp_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_50 = omAddObjEx(temp_r31, 0x10, 8, 0, -1, fn_1_424); + lbl_1_bss_44 = omAddObjEx(temp_r31, 0x20, 16, 0, -1, fn_1_1274); + lbl_1_bss_48 = omAddObjEx(temp_r31, 0x50, 16, 0, -1, fn_1_16D8); + omAddObjEx(temp_r31, 0x60, 0, 0, -1, fn_1_3B80); + fn_1_650C(temp_r31); + fn_1_7C50(3); + omMakeGroupEx(temp_r31, 0, 4); + omGetGroupMemberListEx(temp_r31, 0); + for (i = 0; i < 4; i++) { + var_r29 = omAddObjEx(temp_r31, 0x30, 2, 8, 0, fn_1_1DD0); + lbl_1_bss_34[i] = var_r29; + var_r29->work[0] = i; + var_r29->work[1] = i; + } + omGameSysInit(temp_r31); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudSndGrpSet(0x1C); + lbl_1_bss_2 = 0; + if (GWMGRecordGet(9) == 0U) { + GWMGRecordSet(9, 5); + } +} + +static void fn_1_424(omObjData *arg0) { + lbl_1_bss_30 = 0; + arg0->func = fn_1_444; +} + +static void fn_1_444(omObjData *arg0) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + switch (lbl_1_bss_30) { + case 0: + sp2C.x = 0.0f; + sp2C.y = 0.0f; + sp2C.z = -50.0f; + sp20.x = -90.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2200.0f; + fn_1_1A50(1.0f, &sp2C, &sp20, var_f31); + lbl_1_bss_28 = 60; + lbl_1_bss_30++; + break; + case 1: + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 2: + if (lbl_1_bss_28 == 0) { + fn_1_7C60(); + lbl_1_bss_28 = 90; + sp2C.x = 200.0f; + sp2C.y = 100.0f; + sp2C.z = -50.0f; + sp20.x = -50.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2000.0f; + sp14.x = 0.0f; + sp14.y = 320.0f; + sp14.z = 147.0f; + sp8.x = -23.5f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f30 = 1720.0f; + fn_1_1AF0(180.0f, &sp14, &sp8, var_f30, &sp2C, &sp20, var_f31); + } + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 3: + if (lbl_1_bss_28 == 0) { + lbl_1_bss_28 = 90; + } + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 4: + lbl_1_bss_30 = 5; + lbl_1_bss_2E = lbl_1_bss_2C = -1; + arg0->func = fn_1_82C; + HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M403, 19), MEMORY_DEFAULT_NUM)); + break; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } +} + +static s32 lbl_1_data_68 = -1; + +s32 lbl_1_data_6C[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 1), + DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), + DATA_MAKE_NUM(DATADIR_MGCONST, 4), + DATA_MAKE_NUM(DATADIR_MGCONST, 5), + DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7) +}; + +static void fn_1_82C(omObjData *arg0) { + Vec sp1C; + Vec sp10; + float var_f31; + s16 sp8[4]; + s32 var_r30; + s32 var_r27; + s32 var_r29; + s32 i; + + switch (lbl_1_bss_30) { + case 5: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2A = 1800; + lbl_1_bss_2C = MGSeqStartCreate(); + MGSeqPosSet(lbl_1_bss_2C, 320.0f, 240.0f); + } else if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + lbl_1_bss_30++; + lbl_1_bss_28 = 0; + lbl_1_data_0 = 4; + if (lbl_1_bss_2 != 0) { + sp1C.x = 476.0f; + sp1C.y = 64.0f; + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 2, 0); + lbl_1_bss_1C[0] = var_r30; + espPosSet(var_r30, sp1C.x + 32.0f, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 2, 0); + lbl_1_bss_1C[1] = var_r30; + espPosSet(var_r30, sp1C.x + 56.0f, sp1C.y); + var_r30 = espEntry(lbl_1_data_6C[GWPlayerCfg[lbl_1_bss_4].character], 1, 0); + lbl_1_bss_1C[2] = var_r30; + espPosSet(var_r30, sp1C.x, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 22), 3, 0); + lbl_1_bss_1C[3] = var_r30; + espPosSet(var_r30, sp1C.x + 36.0f, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 23), 4, 0); + lbl_1_bss_1C[4] = var_r30; + espColorSet(var_r30, 0, 0, 0); + espTPLvlSet(var_r30, 0.5); + espPosSet(var_r30, sp1C.x + 36.0f, sp1C.y); + } + } + if (lbl_1_data_68 == -1 && (MGSeqStatGet(lbl_1_bss_2C) & 0x10)) { + lbl_1_data_68 = HuAudSeqPlay(0x48); + } + break; + case 6: + var_r29 = 0; + if (lbl_1_bss_2 != 0) { + if (((Unkm403Struct_01*) lbl_1_bss_34[lbl_1_bss_4]->data)->unk07 == 0 && fn_1_8264() == 0) { + var_r29++; + } + } else if (lbl_1_data_0 <= 1 && fn_1_8264() == 0) { + var_r29++; + } + if (lbl_1_bss_2 != 0) { + espBankSet(lbl_1_bss_1C[0], lbl_1_bss_0 / 10); + espBankSet(lbl_1_bss_1C[1], lbl_1_bss_0 % 10); + } + if (var_r29 != 0) { + lbl_1_bss_30++; + } + break; + case 7: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2C = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_2C, 320.0f, 240.0f); + MGSeqKill(lbl_1_bss_2E); + HuAudSeqFadeOut(lbl_1_data_68, 100); + break; + } + if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + if (lbl_1_bss_2 == 0) { + if (lbl_1_data_0 != 0) { + for (i = 0; i < 4; i++) { + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + break; + } + } + sp1C.x = lbl_1_bss_34[i]->trans.x; + sp1C.y = 100.0f; + sp1C.z = lbl_1_bss_34[i]->trans.z; + sp10.x = -18.0f; + sp10.y = 0.0f; + sp10.z = 0.0f; + var_f31 = 600.0f; + fn_1_1A50(45.0f, &sp1C, &sp10, var_f31); + } + lbl_1_bss_30 = 9; + lbl_1_bss_28 = 90; + break; + } + if (GWMGRecordGet(9) < lbl_1_bss_0 - 1) { + GWMGRecordSet(9, lbl_1_bss_0 - 1); + lbl_1_bss_30 = 8; + break; + } + lbl_1_bss_2C = -1; + lbl_1_bss_30 = 11; + lbl_1_bss_28 = 150; + } + break; + case 8: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2C = MGSeqRecordCreate(lbl_1_bss_0 - 1); + break; + } + if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + lbl_1_bss_28 = 150; + lbl_1_bss_30 = 11; + } + break; + case 9: + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 10: + if (lbl_1_bss_2C == -1) { + if (lbl_1_data_0 == 0) { + lbl_1_bss_2C = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } else { + for (i = 0; i < 4; i++) { + sp8[i] = -1; + } + for (i = 0, var_r27 = 0; i < 4; i++) { + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + GWPlayerCoinWinAdd(i, 10); + sp8[var_r27++] = GWPlayerCfg[i].character; + } + } + lbl_1_bss_2C = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + lbl_1_bss_2C = -1; + lbl_1_bss_28 = 210; + lbl_1_bss_30++; + break; + case 11: + if (--lbl_1_bss_28 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } + break; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } +} + +static void fn_1_1214(omObjData *arg0) { + if (WipeStatGet() == 0) { + fn_1_676C(); + CharModelKill(-1); + MGSeqKill(lbl_1_bss_2E); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +static void fn_1_1274(omObjData *arg0) { + Hu3DLightAllKill(); + lbl_1_bss_18[0] = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_1C); + Hu3DGLightStaticSet(lbl_1_bss_18[0], 1); + Hu3DGLightInfinitytSet(lbl_1_bss_18[0]); + lbl_1_bss_18[1] = Hu3DGLightCreate(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0, 0, 0); + Hu3DGLightStaticSet(lbl_1_bss_18[1], 1); + Hu3DGLightPointSet(lbl_1_bss_18[1], 0.0f, 0.0f, 3); + Hu3DGLightColorSet(lbl_1_bss_18[0], 0, 0, 0, 0xFF); + Hu3DGLightPosSet(lbl_1_bss_18[1], -1470.0f, 800.0f, -2000.0f, 0.0f, -1.0f, 0.0f); + Hu3DGLightColorSet(lbl_1_bss_18[1], 0, 0, 0, 0xFF); + Hu3DGLightPointSet(lbl_1_bss_18[1], 1200.0f, 0.6f, 3); + arg0->func = fn_1_1460; +} + +static void fn_1_1460(omObjData *arg0) { + s8 sp11[] = { 1, 0, 2, 1, 0, 3, 2, 1, 0 }; + s8 sp8[] = { 1, 1, 2, 2, 2, 3, 3, 3, 3 }; + s32 var_r30; + + switch (lbl_1_bss_30) { + case 0: + break; + case 1: + Hu3DGLightColorSet(lbl_1_bss_18[0], 0xF0, 0xF0, 0xF0, 0xFF); + break; + case 2: + break; + case 3: + Hu3DGLightColorSet(lbl_1_bss_18[1], 0xFF, 0xE0, 0xD0, 0xFF); + break; + case 4: + break; + case 5: + arg0->work[0] = 30; + arg0->work[1] = 17; + lbl_1_bss_C = 1; + break; + case 6: + if (fn_1_8264() != 0) { + break; + } + if (lbl_1_bss_C == 0) { + lbl_1_bss_C = 30; + lbl_1_bss_0++; + } + lbl_1_bss_C--; + if (lbl_1_bss_C == 0) { + var_r30 = (arg0->work[1] - 2) / 2; + if (var_r30 < 0) { + var_r30 = 0; + } + fn_1_8670(sp11[var_r30]); + fn_1_7C50(sp8[var_r30]); + fn_1_7C30(0.01f * arg0->work[0]); + arg0->work[0] += 5; + if (arg0->work[1] > 2) { + arg0->work[1]--; + } + } + break; + } +} + +static void fn_1_16D8(omObjData *arg0) { + Unkm403Struct_00 *temp_r3; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + arg0->data = temp_r3; + temp_r3->unk148 = temp_r3->unk144 = 0.0f; + temp_r3->unk140 = 1.0f; + temp_r3->unk10.x = temp_r3->unk28.x = -23.5f; + temp_r3->unk10.y = temp_r3->unk28.y = 0.0f; + temp_r3->unk10.z = temp_r3->unk28.z = 0.0f; + temp_r3->unk04.x = temp_r3->unk1C.x = 0.0f; + temp_r3->unk04.y = temp_r3->unk1C.y = 320.0f; + temp_r3->unk04.z = temp_r3->unk1C.z = 147.0f; + temp_r3->unk130 = temp_r3->unk134 = 1720.0f; + arg0->func = fn_1_17DC; +} + +static void fn_1_17DC(omObjData *arg0) { + Unkm403Struct_00 *temp_r31; + float temp_f31; + + temp_r31 = arg0->data; + if (temp_r31->unk148 > 0.0f) { + temp_r31->unk148 -= temp_r31->unk140; + temp_f31 = (temp_r31->unk144 - temp_r31->unk148) / temp_r31->unk144; + temp_f31 = sind(90.0f * temp_f31); + if (temp_r31->unk00 == 0) { + temp_r31->unk04.x = temp_r31->unk1C.x + temp_f31 * (temp_r31->unk34.x - temp_r31->unk1C.x); + temp_r31->unk04.y = temp_r31->unk1C.y + temp_f31 * (temp_r31->unk34.y - temp_r31->unk1C.y); + temp_r31->unk04.z = temp_r31->unk1C.z + temp_f31 * (temp_r31->unk34.z - temp_r31->unk1C.z); + temp_r31->unk10.x = temp_r31->unk28.x + temp_f31 * (temp_r31->unk40.x - temp_r31->unk28.x); + temp_r31->unk10.y = temp_r31->unk28.y + temp_f31 * (temp_r31->unk40.y - temp_r31->unk28.y); + temp_r31->unk10.z = temp_r31->unk28.z + temp_f31 * (temp_r31->unk40.z - temp_r31->unk28.z); + temp_r31->unk130 = temp_r31->unk134 + temp_f31 * (temp_r31->unk138 - temp_r31->unk134); + } else { + fn_1_57E0(2.0f * temp_f31, &temp_r31->unk04, temp_r31->unkF4, &temp_r31->unk64, temp_r31->unk88, 3); + fn_1_57E0(2.0f * temp_f31, &temp_r31->unk10, temp_r31->unk100, &temp_r31->unkAC, temp_r31->unkD0, 3); + temp_r31->unk130 = fn_1_52AC(2.0f * temp_f31, temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); + } + } + CRot.x = temp_r31->unk10.x; + CRot.y = temp_r31->unk10.y; + CRot.z = temp_r31->unk10.z; + Center.x = temp_r31->unk04.x; + Center.y = temp_r31->unk04.y; + Center.z = temp_r31->unk04.z; + CZoom = temp_r31->unk130; +} + +static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk00 = 0; + temp_r31->unk144 = arg0; + temp_r31->unk148 = arg0; + temp_r31->unk1C = temp_r31->unk04; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = arg1->y; + temp_r31->unk34.z = arg1->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg2->x; + temp_r31->unk40.y = arg2->y; + temp_r31->unk40.z = arg2->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg3; +} + +static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk00 = 1; + temp_r31->unk148 = temp_r31->unk144 = arg0; + temp_r31->unk1C = temp_r31->unk04; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = arg1->y; + temp_r31->unk34.z = arg1->z; + temp_r31->unk4C.x = arg4->x; + temp_r31->unk4C.y = arg4->y; + temp_r31->unk4C.z = arg4->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg2->x; + temp_r31->unk40.y = arg2->y; + temp_r31->unk40.z = arg2->z; + temp_r31->unk58.x = arg5->x; + temp_r31->unk58.y = arg5->y; + temp_r31->unk58.z = arg5->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg3; + temp_r31->unk13C = arg6; + temp_r31->unk64 = temp_r31->unk1C; + temp_r31->unk70 = temp_r31->unk4C; + temp_r31->unk7C = temp_r31->unk34; + temp_r31->unkAC = temp_r31->unk28; + temp_r31->unkB8 = temp_r31->unk58; + temp_r31->unkC4 = temp_r31->unk40; + temp_r31->unk10C[0] = temp_r31->unk134; + temp_r31->unk10C[1] = temp_r31->unk13C; + temp_r31->unk10C[2] = temp_r31->unk138; + temp_r31->unk124[0] = 0.0f; + temp_r31->unk124[1] = ABS(temp_r31->unk10C[1] - temp_r31->unk10C[0]); + temp_r31->unk124[2] = ABS(temp_r31->unk10C[2] - temp_r31->unk10C[1]) + temp_r31->unk124[1]; + fn_1_5400(temp_r31->unkF4, &temp_r31->unk64, temp_r31->unk88, 3); + fn_1_5400(temp_r31->unk100, &temp_r31->unkAC, temp_r31->unkD0, 3); + fn_1_4FF4(temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); +} + +static void fn_1_1DA8(float arg0) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk140 = arg0; +} + +static s32 lbl_1_data_C4[] = { + 0, 2, 3, 8, 10, 9, 23, 24 +}; + +static Vec lbl_1_data_E4[] = { + { -300.0f, 2200.0f, 0.0f }, + { -100.0f, 2200.0f, 0.0f }, + { 100.0f, 2200.0f, 0.0f }, + { 300.0f, 2200.0f, 0.0f } +}; + +static float lbl_1_data_114[] = { + 40.0f, 40.0f, 40.0f, 40.0f, + 40.0f, 100.0f, 40.0f, 80.0f +}; + +static float lbl_1_data_134[] = { + 160.0f, 160.0f, 180.0f, 160.0f, + 160.0f, 180.0f, 180.0f, 200.0f +}; + +static u32 lbl_1_data_154 = 0x41C64E6D; + +static void fn_1_1DD0(omObjData *arg0) { + Unkm403Struct_01 *temp_r3; + s32 temp_r27; + s32 i; + s32 temp_r28; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + arg0->data = temp_r3; + temp_r3->unk00 = arg0->work[0]; + temp_r3->unk01 = GWPlayerCfg[temp_r3->unk00].character; + temp_r3->unk02 = temp_r3->unk00 >> 1; + temp_r3->unk03 = temp_r3->unk00 & 1; + temp_r3->unk04 = GWPlayerCfg[temp_r3->unk00].pad_idx; + temp_r3->unk05 = GWPlayerCfg[temp_r3->unk00].iscom; + temp_r3->unk06 = GWPlayerCfg[temp_r3->unk00].diff; + temp_r3->unk18 = temp_r3->unk1A = 0; + temp_r3->unk07 = 1; + temp_r3->unk0C = 1; + temp_r3->unk0D = 0; + temp_r3->unk0E = 0; + temp_r3->unk0A = 0; + temp_r3->unk9C = 0; + temp_r27 = arg0->work[1]; + temp_r3->unk2C.x = lbl_1_data_E4[temp_r27].x; + temp_r3->unk2C.y = lbl_1_data_E4[temp_r27].y + 100.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r3->unk2C.z = lbl_1_data_E4[temp_r27].z; + temp_r3->unk44 = temp_r3->unk48 = temp_r3->unk4C = 0.0f; + temp_r3->unk38 = temp_r3->unk3C = temp_r3->unk40 = 0.0f; + temp_r3->unk20 = temp_r3->unk3C; + temp_r3->unk24 = 0.0f; + temp_r3->unk1C = 0.0f; + temp_r3->unk28 = 1.0f; + memset(&temp_r3->unk5C, 0, 0x40); + temp_r3->unkA0 = 1; + if (lbl_1_bss_2 != 0 && temp_r3->unk05 == 0) { + lbl_1_bss_4 = temp_r3->unk00; + } + temp_r28 = CharModelCreate(temp_r3->unk01, 4); + arg0->model[0] = temp_r28; + Hu3DModelAttrSet(temp_r28, 0x40000001); + Hu3DModelShadowSet(temp_r28); + for (i = 0; i < 8; i++) { + arg0->motion[i] = CharModelMotionCreate(temp_r3->unk01, lbl_1_data_C4[i]); + } + CharModelMotionDataClose(temp_r3->unk01); + CharModelMotionSet(temp_r3->unk01, arg0->motion[temp_r3->unk18]); + omSetTra(arg0, temp_r3->unk2C.x, temp_r3->unk2C.y, temp_r3->unk2C.z); + Hu3DModelPosSet(temp_r28, temp_r3->unk2C.x, temp_r3->unk2C.y, temp_r3->unk2C.z); + Hu3DModelRotSet(temp_r28, 0.0f, 30.0f, 0.0f); + CharModelStepTypeSet(temp_r3->unk01, 1); + CharModelVoiceEnableSet(temp_r3->unk01, arg0->motion[3], 0); + arg0->func = fn_1_2158; +} + +static void fn_1_2158(omObjData *arg0) { + Unkm403Struct_01 *temp_r31; + s32 sp8; + + sp8 = arg0->model[0]; + temp_r31 = arg0->data; + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + switch (lbl_1_bss_30) { + case 3: + break; + case 2: + if (lbl_1_bss_28 < 60.0f) { + break; + } + /* fallthrough */ + case 1: + temp_r31->unk18 = 3; + temp_r31->unk48 = 0.0f; + temp_r31->unk0C = 0; + break; + case 5: + arg0->func = fn_1_22A4; + break; + } + if (temp_r31->unk2C.y < 10.0f) { + omVibrate(temp_r31->unk00, 12, 6, 6); + temp_r31->unk2C.y = 10.0f; + temp_r31->unk0C = 1; + } + fn_1_2FDC(arg0); +} + +static void fn_1_22A4(omObjData *arg0) { + Unkm403Struct_01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + + temp_r29 = arg0->model[0]; + temp_r31 = arg0->data; + if (temp_r31->unk07 != 0) { + if (lbl_1_bss_30 == 6 && !(temp_r31->unk07 & 2)) { + if (temp_r31->unk05 != 0) { + fn_1_2598(arg0); + } else { + temp_r31->unk10 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk12 = HuPadStkY[temp_r31->unk04]; + temp_r31->unk14 = HuPadBtnDown[temp_r31->unk04]; + temp_r31->unk16 = HuPadBtn[temp_r31->unk04]; + } + } else { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + } + switch (lbl_1_bss_30) { + case 5: + case 6: + break; + case 7: + case 9: + arg0->scale.y += 0.2f * (1.0f - arg0->scale.y); + temp_r31->unk3C = fn_1_457C(temp_r31->unk3C, 0.0f, 0.9f); + break; + case 10: + if (temp_r31->unk18 != 6) { + temp_r31->unk18 = 6; + } + break; + } + if (temp_r31->unk07 & 2) { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + if (arg0->scale.y < 0.2f) { + omVibrate(temp_r31->unk00, 12, 4, 2); + HuAudFXPlay(0x523); + temp_r31->unk07 = 0; + Hu3DModelShadowReset(temp_r29); + Hu3DModelAttrSet(temp_r29, 1); + lbl_1_data_0--; + temp_r28 = fn_1_400C(DATA_MAKE_NUM(DATADIR_M403, 19), 100, fn_1_40A8); + Hu3DModelPosSet(temp_r28, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + Hu3DModelLayerSet(temp_r28, 2); + } + } + if (fn_1_8264() != 0) { + temp_r31->unkA0 = 0; + } else if (!(temp_r31->unk07 & 2) && temp_r31->unkA0 == 0) { + omVibrate(temp_r31->unk00, 12, 6, 6); + temp_r31->unkA0 = 1; + } + fn_1_2FDC(arg0); + } +} + +static void fn_1_2598(omObjData *arg0) { + Vec sp38[6]; + Vec sp14; + Vec sp8; + float sp20[6]; + float var_f31; + float var_f30; + float temp_f29; + float var_f28; + Unkm403Struct_01 *temp_r31; + s16 var_r27; + s16 var_r26; + s16 var_r21; + s16 var_r20; + s16 temp_r28; + s32 var_r23; + s32 var_r22; + s32 var_r25; + s32 temp_r24; + s32 var_r29; + s32 i; + + var_r22 = 0; + for (i = 0, var_r29 = 0; i < 4; i++) { + temp_r31 = lbl_1_bss_34[i]->data; + if (temp_r31->unk05 == 0 && temp_r31->unk07 != 0) { + break; + } + } + temp_r31 = arg0->data; + if (i >= 4 && temp_r31->unk9C == 0) { + var_r22 = 1; + } + temp_r28 = temp_r31->unk06; + var_r27 = var_r26 = var_r21 = var_r20 = 0; + switch (temp_r31->unk5C) { + case 0: + if (fn_1_8264() != 0) { + temp_r31->unk5C = 1; + } + break; + case 1: + temp_r31->unk5C = 2; + temp_r31->unk5E = (s32) (60.0f * (1.2f - 0.2f * temp_r28) * (fn_1_4528() / 65536.0f)); + temp_r31->unk60 = 500.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk64 = 200.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + var_r27 = temp_r31->unk10; + var_r26 = temp_r31->unk12; + break; + case 2: + sp8.x = temp_r31->unk60 - temp_r31->unk2C.x; + sp8.y = 0.0f; + sp8.z = temp_r31->unk64 - temp_r31->unk2C.z; + var_f31 = fn_1_59F4(&sp8); + if (var_f31 < 20.0f) { + temp_r31->unk5C = 3; + } else { + if (var_f31 >= 100.0f) { + var_f28 = 0.8f; + } else { + var_f28 = 0.4f; + } + var_f30 = fn_1_457C(temp_r31->unk3C, atan2d(sp8.x, sp8.z), var_f28); + temp_f29 = 48.0f + 4.0f * temp_r28; + var_r27 = temp_f29 * sind(var_f30); + var_r26 = temp_f29 * -cosd(var_f30); + if (fn_1_8264() == 0) { + temp_r31->unk5C = 0; + if (temp_r31->unk5E == 0) { + temp_r31->unk5E = -1; + } + } else if (temp_r31->unk5E >= 0) { + if (temp_r31->unk5E == 0) { + if (var_f31 < 150.0f && temp_r31->unk0E != 0) { + temp_r31->unk5C = 3; + } else if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + temp_r31->unk5C = 4; + } else { + temp_r31->unk5C = 1; + } + } else { + temp_r31->unk5E--; + } + } + } + break; + case 3: + sp8.x = temp_r31->unk60 - temp_r31->unk2C.x; + sp8.y = 0.0f; + sp8.z = temp_r31->unk64 - temp_r31->unk2C.z; + if (fn_1_59F4(&sp8) >= 30.000002f && temp_r31->unk0E == 0) { + temp_r31->unk5C = 2; + } else if (fn_1_8264() == 0) { + temp_r31->unk5C = 0; + } else { + if (temp_r31->unk5E > 0) { + temp_r31->unk5E--; + } + if (temp_r31->unk5E == 0) { + if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + temp_r31->unk5C = 4; + } else { + temp_r31->unk5C = 1; + } + } + } + break; + case 4: + temp_r24 = fn_1_82D0(&sp38[0]); + for (i = 0; i < temp_r24; i++) { + PSVECSubtract(&sp38[i], &temp_r31->unk2C, &sp8); + sp20[i] = PSVECMag(&sp8); + } + for (i = 0; i < temp_r24 - 1; i++) { + for (var_r29 = i + 1; var_r29 < temp_r24; var_r29++) { + if (sp20[i] > sp20[var_r29]) { + sp14 = sp38[i]; + sp38[i] = sp38[var_r29]; + sp38[var_r29] = sp14; + var_f31 = sp20[i]; + sp20[i] = sp20[var_r29]; + sp20[var_r29] = var_f31; + } + } + } + var_r25 = 1000; + var_r23 = var_r25 * (fn_1_4528() / 65536.0f); + for (i = 0; i < temp_r24 - 1; i++) { + var_r25 = var_r25 * (5.0f + temp_r28) * 0.1f; + var_r23 -= var_r25; + if (var_r23 < 0) { + break; + } + } + temp_r31->unk60 = sp38[i].x + 100.0f * (0.5f - 0.15f * temp_r28) * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk64 = sp38[i].z + 100.0f * (0.5f - 0.15f * temp_r28) * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk5C = 2; + temp_r31->unk5E = -1; + var_r27 = temp_r31->unk10; + var_r26 = temp_r31->unk12; + break; + } + temp_r31->unk10 = var_r27; + temp_r31->unk12 = var_r26; + temp_r31->unk14 = var_r21; + temp_r31->unk16 = var_r20; +} + +static void fn_1_2FDC(omObjData *arg0) { + float var_f29; + Unkm403Struct_01 *temp_r31; + s32 temp_r25; + s16 var_r27; + s16 var_r28; + s16 temp_r30; + s16 temp_r29; + s16 spA; + s16 sp8; + + temp_r31 = arg0->data; + temp_r25 = arg0->model[0]; + var_r28 = temp_r31->unk18; + temp_r31->unk50 = temp_r31->unk2C; + temp_r30 = temp_r31->unk10; + temp_r29 = temp_r31->unk12; + spA = temp_r31->unk14; + sp8 = temp_r31->unk16; + switch (temp_r31->unk18) { + case 0: + case 1: + case 2: + temp_r31->unk1C = 0.14f * sqrtf(temp_r30 * temp_r30 + temp_r29 * temp_r29); + if (temp_r31->unk1C > 0.1f) { + if (temp_r31->unk1C >= 6.0f) { + var_r28 = 2; + var_r27 = 1; + } else { + var_r28 = 1; + var_r27 = 1; + } + var_f29 = atan2d(temp_r30, -temp_r29); + temp_r31->unk3C = fn_1_457C(temp_r31->unk3C, var_f29, 0.5f); + temp_r31->unk20 = temp_r31->unk3C; + temp_r31->unk24 += 1.0f; + if (temp_r31->unk24 >= 0.5f * temp_r31->unk28) { + temp_r31->unk24 -= 0.5f * temp_r31->unk28; + } + temp_r31->unk1C *= 1.0 + 0.25 * cosd(90.0f * (temp_r31->unk24 / (0.5f * temp_r31->unk28))); + } else { + temp_r31->unk24 = 0.0f; + temp_r31->unk1C = 0.0f; + var_r28 = 0; + var_r27 = 1; + } + temp_r31->unk48 = -2.4333334f; + break; + case 3: + var_r27 = 0; + if (Hu3DData[temp_r25].unk_0C == -1 && CharModelMotionEndCheck(temp_r31->unk01)) { + temp_r31->unk48 += -2.4333334f; + } else { + temp_r31->unk48 = 0.0f; + } + if (temp_r31->unk0C != 0) { + if (temp_r31->unk0D != 0) { + temp_r31->unk48 = 0.0f; + temp_r31->unk0D = 0; + var_r28 = 5; + var_r27 = 0; + } else { + temp_r31->unk48 *= -0.1f; + temp_r31->unk0C = 0; + var_r28 = 4; + var_r27 = 0; + } + } + break; + case 4: + temp_r31->unk48 += -2.4333334f; + if (temp_r31->unk0C != 0 && CharModelMotionEndCheck(temp_r31->unk01)) { + var_r28 = 5; + var_r27 = 0; + } + break; + case 5: + if (CharModelMotionEndCheck(temp_r31->unk01)) { + var_r28 = 0; + var_r27 = 1; + } + break; + case 6: + case 7: + var_r27 = 0; + temp_r31->unk48 = -2.4333334f; + break; + } + if (temp_r31->unk07 & 4) { + if (temp_r31->unk0A & 2) { + Hu3DModelAttrSet(temp_r25, 1); + } else { + Hu3DModelAttrReset(temp_r25, 1); + } + if (--temp_r31->unk0A == 0) { + temp_r31->unk07 &= ~4; + } + } + temp_r31->unk44 = temp_r31->unk1C * sind(temp_r31->unk20); + temp_r31->unk4C = temp_r31->unk1C * cosd(temp_r31->unk20); + temp_r31->unk2C.x += temp_r31->unk44; + if (temp_r31->unk0C == 0) { + temp_r31->unk2C.y += temp_r31->unk48; + } + temp_r31->unk2C.z += temp_r31->unk4C; + if (var_r28 != temp_r31->unk1A) { + temp_r31->unk1A = var_r28; + temp_r31->unk18 = var_r28; + CharModelMotionShiftSet(temp_r31->unk01, arg0->motion[temp_r31->unk18], 0.0f, 8.0f, var_r27); + temp_r31->unk28 = CharModelMotionMaxTimeGet(temp_r31->unk01); + } + omSetTra(arg0, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + omSetRot(arg0, temp_r31->unk38, temp_r31->unk3C, temp_r31->unk40); +} + +static void fn_1_3800(void) { + s32 var_r29; + s32 i; + Unkm403Struct_01 *temp_r30; + + var_r29 = 0; + for (i = 0; i < 4; i++) { + temp_r30 = lbl_1_bss_34[i]->data; + if (temp_r30->unk07 != 0) { + temp_r30->unk0E = 0; + } + } + while (fn_1_3894() != 0 && var_r29 < 50) { + var_r29++; + } +} + +static s32 fn_1_3894(void) { + Vec sp14[4]; + Vec sp8; + float var_f31; + float var_f30; + s32 var_r26; + omObjData* temp_r25; + Unkm403Struct_01 *temp_r28; + Unkm403Struct_01 *temp_r27; + Unkm403Struct_01 *temp_r31; + s32 i; + s32 j; + + var_r26 = 0; + for (i = 0; i < 4; i++) { + sp14[i].x = sp14[i].y = sp14[i].z = 0.0f; + } + for (i = 0; i < 3; i++) { + temp_r28 = lbl_1_bss_34[i]->data; + if (temp_r28->unk07 != 0) { + for (j = i + 1; j < 4; j++) { + temp_r27 = lbl_1_bss_34[j]->data; + if (temp_r27->unk07 != 0) { + PSVECSubtract(&temp_r28->unk2C, &temp_r27->unk2C, &sp8); + var_f31 = PSVECMag(&sp8); + if (var_f31 < 80.0f) { + PSVECNormalize(&sp8, &sp8); + var_f30 = 0.0001f + 0.5f * (80.0f - var_f31); + PSVECScale(&sp8, &sp8, var_f30); + PSVECAdd(&sp14[i], &sp8, &sp14[i]); + PSVECSubtract(&sp14[j], &sp8, &sp14[j]); + temp_r28->unk0E++; + temp_r27->unk0E++; + var_r26++; + } + } + } + } + } + for (i = 0; i < 4; i++) { + temp_r25 = lbl_1_bss_34[i]; + temp_r31 = temp_r25->data; + if (temp_r31->unk07 != 0) { + PSVECAdd(&temp_r31->unk2C, &sp14[i], &temp_r31->unk2C); + if (temp_r31->unk2C.x > 660.0f) { + temp_r31->unk2C.x = 660.0f; + } + if (temp_r31->unk2C.x < -660.0f) { + temp_r31->unk2C.x = -660.0f; + } + if (temp_r31->unk2C.z > 360.0f) { + temp_r31->unk2C.z = 360.0f; + } + if (temp_r31->unk2C.z < -360.0f) { + temp_r31->unk2C.z = -360.0f; + } + omSetTra(temp_r25, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + } + } + return var_r26; +} + +static void fn_1_3B80(omObjData *arg0) { + s32 sp8[4]; + s32 var_r30; + s32 i; + + if (lbl_1_bss_30 < 6) { + return; + } + if (fn_1_8264() != 0) { + for (i = 0; i < 4; i++) { + fn_1_3E4C(lbl_1_bss_34[i]); + } + } else { + for (i = 0, var_r30 = 0; i < 4; i++) { + ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 0; + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + sp8[var_r30++] = i; + } + } + if (var_r30 != 0) { + i = sp8[(s32) (var_r30 * (fn_1_4528() / 65536.0f))]; + ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 1; + } + } + fn_1_3800(); +} + +static void fn_1_3D6C(Vec *arg0, Vec *arg1) { + Vec sp18[6]; + Vec spC; + float var_f31; + float var_f30; + s32 temp_r30; + s32 i; + + temp_r30 = fn_1_8470(sp18); + var_f31 = 2000.0f; + for (i = 0; i < temp_r30; i++) { + PSVECSubtract(&sp18[i], arg0, &spC); + var_f30 = PSVECMag(&spC); + if (var_f30 >= var_f31) { + continue; + } + var_f31 = var_f30; + *arg1 = sp18[i]; + } +} + +static void fn_1_3E4C(omObjData *arg0) { + Vec sp8; + float var_f30; + float var_f31; + Unkm403Struct_01 *temp_r31; + + temp_r31 = arg0->data; + if (temp_r31->unk07 != 0) { + var_f30 = fn_1_80D4(&temp_r31->unk2C, lbl_1_data_114[temp_r31->unk01]) - 10.0f; + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + if (!(temp_r31->unk07 & 2)) { + var_f31 = 1.0f; + if (var_f30 < lbl_1_data_134[temp_r31->unk01]) { + if (fn_1_86A0(&temp_r31->unk2C, &sp8) != 0) { + temp_r31->unk2C.x = sp8.x; + temp_r31->unk2C.z = sp8.z; + } else { + if (fn_1_7F78(temp_r31->unk2C.x, temp_r31->unk2C.z) - 10.0f < 100.0f) { + temp_r31->unk07 |= 2; + } + var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; + } + } + } else { + var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; + } + if (arg0->scale.y < var_f31) { + var_f31 = arg0->scale.y + 0.2f * (var_f31 - arg0->scale.y); + } + arg0->scale.y = var_f31; + } +} + +static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2) { + AnimData *var_r29; + ParticleData *temp_r31; + s32 temp_r30; + + var_r29 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + temp_r30 = Hu3DParticleCreate(var_r29, arg1); + Hu3DParticleHookSet(temp_r30, arg2); + temp_r31 = Hu3DData[temp_r30].unk_120; + temp_r31->unk_2E = temp_r30; + temp_r31->unk_00 = temp_r31->unk_02 = 0; + return temp_r30; +} + +static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix) { + float temp_f31; + float temp_f30; + float temp_f29; + HsfanimStruct01 *var_r31; + s16 sp8; + s32 i; + + sp8 = 0; + switch (particle->unk_00) { + case 0: + temp_f29 = 360.0f / particle->unk_30; + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk08.x = sind(temp_f29 * i) * (1.0f + 6.0f * ((fn_1_4528() - 0x8000) / 32768.0f) * 0.1f); + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = cosd(temp_f29 * i) * (1.0f + 6.0f * ((fn_1_4528() - 0x8000) / 32768.0f) * 0.1f); + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 0.0f; + var_r31->unk34.z = 0.0f; + } + particle->unk_02 = 30; + particle->unk_00++; + /* fallthrough */ + case 1: + particle->unk_02--; + temp_f31 = (30.0f - particle->unk_02) / 30.0f; + temp_f30 = particle->unk_02 / 30.0f; + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk34.x += 5.0f * temp_f30 * var_r31->unk08.x; + var_r31->unk34.y = 20.0f; + var_r31->unk34.z += 5.0f * temp_f30 * var_r31->unk08.z; + var_r31->unk2C = 20.0f + 60.0f * temp_f31; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 64.0f * (1.0f - temp_f31 * temp_f31); + } + if (particle->unk_02 == 0) { + particle->unk_00++; + } + break; + case 2: + Hu3DModelKill(particle->unk_2E); + return; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +static s32 fn_1_4528(void) { + lbl_1_data_154 *= 0x41C64E6D; + lbl_1_data_154 += 0x3039; + return lbl_1_data_154 >> 16; +} + +static float fn_1_457C(float arg0, float arg1, float arg2) { + float var_f31; + + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } else if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + if (arg1 > 180.0f) { + arg1 -= 360.0f; + } else if (arg1 <= -180.0f) { + arg1 += 360.0f; + } + var_f31 = arg0 - arg1; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg0 = arg1 + var_f31 * arg2; + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } else if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + return arg0; +} + +static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3) { + Mtx sp38; + Mtx sp8; + + if (arg3 != 0.0f) { + PSMTXRotRad(arg0, 'Z', MTXDegToRad(arg3)); + } else { + PSMTXIdentity(arg0); + } + if (arg1 != 0.0f) { + PSMTXRotRad(sp38, 'X', MTXDegToRad(arg1)); + PSMTXConcat(sp38, arg0, arg0); + } + if (arg2 != 0.0f) { + PSMTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); + PSMTXConcat(sp8, arg0, arg0); + } +} + +static void fn_1_4804(float *arg0, float *arg1) { + float temp_f29; + float var_f28; + double var_f30; + + arg1[0] = atan2d(arg0[10], arg0[6]); + arg1[2] = atan2d(arg0[0], arg0[1]); + temp_f29 = -arg0[2]; + if (1.0 - temp_f29 * temp_f29 < 0.0) { + var_f30 = -(1.0 - temp_f29 * temp_f29); + } else { + var_f30 = 1.0 - temp_f29 * temp_f29; + } + var_f28 = sqrtf(var_f30); + if (arg1[0] > 90.0f && arg1[0] < 270.0f && arg1[2] > 90.0f && arg1[2] < 270.0f) { + arg1[0] = fmod(180.0f + arg1[0], 360.0); + arg1[2] = fmod(180.0f + arg1[2], 360.0); + var_f28 = -var_f28; + } + arg1[1] = atan2d(var_f28, temp_f29); +} + +static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3) { + float temp_f31; + float var_f30; + + temp_f31 = 1.0 - arg0; + var_f30 = temp_f31 * temp_f31 * arg1 + temp_f31 * arg0 * arg2 * 2.0 + arg0 * arg0 * arg3; + return var_f30; +} + +static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { + s32 i; + + for (i = 0; i < 3; i++) { + *(arg3++) = fn_1_4B10(arg4, *(arg0++), *(arg1++), *(arg2++)); + } +} + +static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3) { + float var_f31 = 2.0 * ((arg0 - 1.0) * arg1 + (1.0 - 2.0 * arg0) * arg2 + arg0 * arg3); + return var_f31; +} + +static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { + float spC[3]; + float var_f29; + s32 i; + + for (i = 0; i < 3; i++) { + spC[i] = fn_1_4CA4(arg4, *(arg0++), *(arg1++), *(arg2++)); + } + var_f29 = VECMagPoint(spC[0], spC[1], spC[2]); + if (var_f29) { + var_f29 = 1.0 / var_f29; + for (i = 0; i < 3; i++) { + *(arg3++) = var_f29 * spC[i]; + } + } else { + *(arg3++) = 0.0f; + *(arg3++) = 0.0f; + *(arg3++) = 1.0f; + } +} + +static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) { + float sp48[16]; + float sp8[16]; + double temp_f31; + s32 i; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + for (i = 0; i < arg3 - 1; i++) { + sp48[i] = arg0[i + 1] - arg0[i]; + if (sp48[i] == 0.0f) { + sp8[i + 1] = 0.0f; + } else { + sp8[i + 1] = (arg1[i + 1] - arg1[i]) / sp48[i]; + } + } + arg2[1] = sp8[2] - sp8[1]; + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + for (i = 1; i < arg3 - 2; i++) { + temp_f31 = sp48[i] / sp8[i]; + arg2[i + 1] = sp8[i + 2] - sp8[i + 1] - temp_f31 * arg2[i]; + sp8[i + 1] = 2.0f * (arg0[i + 2] - arg0[i]) - temp_f31 * sp48[i]; + } + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + for (i = arg3 - 2; i > 0; i--) { + if (sp8[i] == 0.0f) { + arg2[i] = 0.0f; + } else { + arg2[i] = (arg2[i] - sp48[i] * arg2[i + 1]) / sp8[i]; + } + } +} + +static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4) { + float temp_f31; + float temp_f30; + float var_f29; + s32 temp_r31; + + temp_r31 = arg0; + arg0 -= temp_r31; + temp_f31 = arg1[temp_r31 + 1] - arg1[temp_r31]; + temp_f30 = temp_f31 * arg0; + var_f29 = arg2[temp_r31] + temp_f30 * (temp_f30 * (3.0f * arg3[temp_r31] + temp_f30 * (arg3[temp_r31 + 1] - arg3[temp_r31]) / temp_f31) + ((arg2[temp_r31 + 1] - arg2[temp_r31]) / temp_f31 - temp_f31 * (2.0f * arg3[temp_r31] + arg3[temp_r31 + 1]))); + if (temp_f31 == 0.0f) { + var_f29 = arg2[temp_r31]; + } + return var_f29; +} + +static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) { + Vec sp8; + float temp_f31; + float spD4[16]; + float sp94[16]; + s32 j; + s32 i; + + arg0[0] = 0.0f; + for (i = 1; i < arg3; i++) { + PSVECSubtract(&arg1[i], &arg1[i - 1], &sp8); + arg0[i] = arg0[i - 1] + PSVECMag(&sp8); + } + for (j = 0; j < 3; j++) { + for (i = 0; i < arg3; i++) { + spD4[i] = ((float*) &arg1[i])[j]; + } + fn_1_4FF4(arg0, spD4, sp94, arg3); + for (i = 0; i < arg3; i++) { + arg2[i][j] = sp94[i]; + } + } +} + +static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5) { + float sp48[16]; + float sp8[16]; + s32 i; + s32 j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < arg5; j++) { + sp48[j] = ((float*) &arg3[j])[i]; + sp8[j] = arg4[j][i]; + } + ((float*) arg1)[i] = fn_1_52AC(arg0, arg2, sp48, sp8, arg5); + } +} + +static float fn_1_59F4(Vec *arg0) { + float var_f30; + float var_f29; + + var_f30 = arg0->x * arg0->x + arg0->y * arg0->y + arg0->z * arg0->z; + var_f30 = sqrtf(var_f30); + if (var_f30 != 0.0f) { + var_f29 = 1.0f / var_f30; + arg0->x *= var_f29; + arg0->y *= var_f29; + arg0->z *= var_f29; + } else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return var_f30; +} + +static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3) { + if (arg3 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg3 = 0.0f; + } else if (arg3 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg3 = 1.0f; + } else { + arg2->x = arg0.x + arg3 * arg1.x; + arg2->y = arg0.y + arg3 * arg1.y; + arg2->z = arg0.z + arg3 * arg1.z; + } +} + +static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2) { + float var_f31; + float temp_f30; + + var_f31 = arg2.x * (arg1.x - arg0.x) + arg2.y * (arg1.y - arg0.y) + arg2.z * (arg1.z - arg0.z); + temp_f30 = -(arg2.x * arg2.x + arg2.y * arg2.y + arg2.z * arg2.z); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} + +static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2) { + Vec sp44; + float var_f31; + + if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { + return (arg0->x - arg1->x) * (arg0->x - arg1->x) + (arg0->y - arg1->y) * (arg0->y - arg1->y) + (arg0->z - arg1->z) * (arg0->z - arg1->z); + } + var_f31 = fn_1_5C64(*arg0, *arg1, *arg2); + fn_1_5B8C(*arg1, *arg2, &sp44, var_f31); + return (arg0->x - sp44.x) * (arg0->x - sp44.x) + (arg0->y - sp44.y) * (arg0->y - sp44.y) + (arg0->z - sp44.z) * (arg0->z - sp44.z); +} + +static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { + float var_f27; + + if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { + return (arg0->x - arg1->x) * (arg0->x - arg1->x) + (arg0->y - arg1->y) * (arg0->y - arg1->y) + (arg0->z - arg1->z) * (arg0->z - arg1->z); + } + var_f27 = fn_1_5C64(*arg0, *arg1, *arg2); + fn_1_5B8C(*arg1, *arg2, arg3, var_f27); + arg4->x = arg3->x - arg0->x; + arg4->y = arg3->y - arg0->y; + arg4->z = arg3->z - arg0->z; + return fn_1_59F4(arg4); +} diff --git a/src/REL/m403Dll/scene.c b/src/REL/m403Dll/scene.c new file mode 100755 index 00000000..71a7f6cf --- /dev/null +++ b/src/REL/m403Dll/scene.c @@ -0,0 +1,1024 @@ +#include "REL/m403Dll.h" +#include "game/audio.h" +#include "game/frand.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" + +#include "ext_math.h" + +typedef struct { + struct { + u8 unk00_field0 : 1; + }; + char unk01[3]; + s32 unk04; + float unk08; + s32 unk0C[6]; + s32 unk24[12]; +} UnkBss9CData; // Size 0x54 + +static void fn_1_678C(omObjData *arg0); +static void fn_1_6810(omObjData *arg0); +static void fn_1_6814(omObjData *arg0); +static void fn_1_6980(omObjData *arg0); +static void fn_1_6C98(omObjData *arg0); +static void fn_1_6ED8(omObjData *arg0); +static void fn_1_6FE8(omObjData *arg0); +static void fn_1_73E8(omObjData *arg0); +static void fn_1_799C(void); +static void fn_1_7A98(s16 arg0); +static s32 fn_1_7B20(float arg0, float arg1); +static void fn_1_7BD4(s32 arg0, Vec *arg1); +static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1); +static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2); +static s32 fn_1_8254(void); +static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1); + +static omObjData *lbl_1_bss_B4; +static omObjData *lbl_1_bss_B0; +static omObjData *lbl_1_bss_9C[5]; +static s32 lbl_1_bss_98; +static s32 lbl_1_bss_94; +static s32 lbl_1_bss_90; +static s32 lbl_1_bss_8C; +static s32 lbl_1_bss_88; +static s32 lbl_1_bss_84; +static float lbl_1_bss_80; +static s32 lbl_1_bss_7C; +static s32 lbl_1_bss_78; +static s32 lbl_1_bss_74; +static s32 lbl_1_bss_70; +static s32 lbl_1_bss_58[6]; + +static Vec lbl_1_data_158[] = { + { 92.39f, 0.0f, 38.27f }, + { 100.0f, 0.0f, 0.0f }, + { 92.39f, 0.0f, -38.27f }, + { 70.71f, 0.0f, -70.71f }, + { 38.27f, 0.0f, -92.39f }, + { 0.0f, 0.0f, -100.0f }, + { -38.27f, 0.0f, -92.39f }, + { -70.71f, 0.0f, -70.71f }, + { -92.39f, 0.0f, -38.27f }, + { -100.0f, 0.0f, 0.0f }, + { -92.39f, 0.0f, 38.27f }, + { -70.71f, 0.0f, 70.71f }, + { -38.27f, 0.0f, 92.39f }, + { 0.0f, 0.0f, 100.0f }, + { 38.27f, 0.0f, 92.39f }, + { 70.71f, 0.0f, 70.71f } +}; + +static Vec lbl_1_data_218[] = { + { 55.43f, 0.0f, 22.96f }, + { 60.0f, 0.0f, 0.0f }, + { 55.43f, 0.0f, -22.96f }, + { 42.43f, 0.0f, -42.43f }, + { 22.96f, 0.0f, -55.43f }, + { 0.0f, 0.0f, -60.0f }, + { -22.96f, 0.0f, -55.43f }, + { -42.43f, 0.0f, -42.43f }, + { -55.43f, 0.0f, -22.96f }, + { -60.0f, 0.0f, 0.0f }, + { -55.43f, 0.0f, 22.96f }, + { -42.43f, 0.0f, 42.43f }, + { -22.96f, 0.0f, 55.43f }, + { 0.0f, 0.0f, 60.0f }, + { 22.96f, 0.0f, 55.43f }, + { 42.43f, 0.0f, 42.43f } +}; + +static Vec lbl_1_data_2D8[] = { + { 38.79f, 0.0f, -53.4f }, + { 0.0f, 0.0f, -120.0f }, + { -38.79f, 0.0f, -53.4f }, + { -114.13f, 0.0f, -37.08f }, + { -62.77f, 0.0f, 20.4f }, + { -70.53f, 0.0f, 97.08f }, + { 0.0f, 0.0f, 66.0f }, + { 70.53f, 0.0f, 97.08f }, + { 62.77f, 0.0f, 20.4f }, + { 114.13f, 0.0f, -37.08f } +}; + +static Vec lbl_1_data_350[] = { + { 21.34f, 0.0f, -29.37f }, + { 0.0f, 0.0f, -66.0f }, + { -21.34f, 0.0f, -29.37f }, + { -62.77f, 0.0f, -20.4f }, + { -34.52f, 0.0f, 11.22f }, + { -38.79f, 0.0f, 53.4f }, + { 0.0f, 0.0f, 36.3f }, + { 38.79f, 0.0f, 53.4f }, + { 34.52f, 0.0f, 11.22f }, + { 62.77f, 0.0f, -20.4f } +}; + +static Vec lbl_1_data_3C8[] = { + { 110.87f, 0.0f, 45.92f }, + { 120.0f, 0.0f, 0.0f }, + { 110.87f, 0.0f, -45.92f }, + { 84.85f, 0.0f, -84.85f }, + { 45.92f, 0.0f, -110.87f }, + { 0.0f, 0.0f, -120.0f }, + { -45.92f, 0.0f, -110.87f }, + { -84.85f, 0.0f, -84.85f }, + { -110.87f, 0.0f, -45.92f }, + { -120.0f, 0.0f, 0.0f }, + { -110.87f, 0.0f, 45.92f }, + { -84.85f, 0.0f, 84.85f }, + { -45.92f, 0.0f, 110.87f }, + { 0.0f, 0.0f, 120.0f }, + { 45.92f, 0.0f, 110.87f }, + { 84.85f, 0.0f, 84.85f } +}; + +static Vec lbl_1_data_488[] = { + { 73.17f, 0.0f, 30.31f }, + { 79.2f, 0.0f, 0.0f }, + { 73.17f, 0.0f, -30.31f }, + { 56.0f, 0.0f, -56.0f }, + { 30.31f, 0.0f, -73.17f }, + { 0.0f, 0.0f, -79.2f }, + { -30.31f, 0.0f, -73.17f }, + { -56.0f, 0.0f, -56.0f }, + { -73.17f, 0.0f, -30.31f }, + { -79.2f, 0.0f, 0.0f }, + { -73.17f, 0.0f, 30.31f }, + { -56.0f, 0.0f, 56.0f }, + { -30.31f, 0.0f, 73.17f }, + { 0.0f, 0.0f, 79.2f }, + { 30.31f, 0.0f, 73.17f }, + { 56.0f, 0.0f, 56.0f } +}; + +static Vec lbl_1_data_548[] = { + { 48.49f, 0.0f, -66.74f }, + { 0.0f, 0.0f, -150.0f }, + { -48.49f, 0.0f, -66.74f }, + { -142.66f, 0.0f, -46.35f }, + { -78.46f, 0.0f, 25.49f }, + { -88.17f, 0.0f, 121.35f }, + { 0.0f, 0.0f, 82.5f }, + { 88.17f, 0.0f, 121.35f }, + { 78.46f, 0.0f, 25.49f }, + { 142.66f, 0.0f, -46.35f } +}; + +static Vec lbl_1_data_5C0[] = { + { 29.09f, 0.0f, -40.05f }, + { 0.0f, 0.0f, -90.0f }, + { -29.09f, 0.0f, -40.05f }, + { -85.59f, 0.0f, -27.81f }, + { -47.08f, 0.0f, 15.3f }, + { -52.9f, 0.0f, 72.81f }, + { 0.0f, 0.0f, 49.5f }, + { 52.9f, 0.0f, 72.81f }, + { 47.08f, 0.0f, 15.3f }, + { 85.59f, 0.0f, -27.81f } +}; + +static Vec lbl_1_data_638[] = { + { 129.1f, 0.0f, 54.6f }, + { 140.0f, 0.0f, 0.0f }, + { 129.3f, 0.0f, -53.6f }, + { 99.0f, 0.0f, -99.0f }, + { 53.6f, 0.0f, -129.3f }, + { 0.0f, 0.0f, -140.0f }, + { -53.6f, 0.0f, -129.3f }, + { -99.0f, 0.0f, -99.0f }, + { -129.4f, 0.0f, -53.5f }, + { -140.0f, 0.0f, 0.0f }, + { -136.0f, 0.0f, 20.4f }, + { -102.1f, 0.0f, -7.6f }, + { -70.0f, 0.0f, -14.0f }, + { -37.8f, 0.0f, -7.6f }, + { -10.6f, 0.0f, 10.6f }, + { 7.6f, 0.0f, 37.8f }, + { 14.0f, 0.0f, 70.0f }, + { 7.6f, 0.0f, 102.2f }, + { -20.4f, 0.0f, 136.0f }, + { 0.1f, 0.0f, 140.1f }, + { 53.9f, 0.0f, 129.5f }, + { 99.5f, 0.0f, 99.0f } +}; + +static Vec lbl_1_data_740[] = { + { 95.9f, 0.0f, 42.9f }, + { 106.6f, 0.0f, 0.4f }, + { 98.4f, 0.0f, -37.2f }, + { 81.7f, 0.0f, -65.9f }, + { 55.4f, 0.0f, -89.6f }, + { 11.5f, 0.0f, -101.7f }, + { -24.5f, 0.0f, -99.9f }, + { -60.9f, 0.0f, -88.6f }, + { -98.7f, 0.0f, -64.4f }, + { -110.4f, 0.0f, -41.5f }, + { -110.4f, 0.0f, -30.8f }, + { -90.4f, 0.0f, -42.3f }, + { -53.8f, 0.0f, -48.5f }, + { -14.6f, 0.0f, -40.5f }, + { 17.1f, 0.0f, -16.3f }, + { 35.8f, 0.0f, 28.2f }, + { 35.8f, 0.0f, 65.6f }, + { 24.7f, 0.0f, 101.6f }, + { 19.6f, 0.0f, 114.6f }, + { 34.9f, 0.0f, 114.5f }, + { 62.9f, 0.0f, 99.0f }, + { 83.0f, 0.0f, 73.2f } +}; + +static Vec lbl_1_data_848[] = { + { 110.9f, 0.0f, 45.9f }, + { 120.0f, 0.0f, 0.0f }, + { 110.9f, 0.0f, -45.8f }, + { 84.8f, 0.0f, -84.9f }, + { 45.9f, 0.0f, -110.9f }, + { 0.0f, 0.0f, -120.0f }, + { -45.9f, 0.0f, -110.9f }, + { -84.9f, 0.0f, -84.8f }, + { -110.9f, 0.0f, -45.9f }, + { -120.0f, 0.0f, 0.0f }, + { -116.5f, 0.0f, 17.5f }, + { -87.6f, 0.0f, -6.6f }, + { -60.0f, 0.0f, -12.0f }, + { -32.4f, 0.0f, -6.5f }, + { -9.1f, 0.0f, 9.1f }, + { 6.5f, 0.0f, 32.5f }, + { 12.0f, 0.0f, 60.0f }, + { 6.5f, 0.0f, 87.6f }, + { -17.5f, 0.0f, 116.5f }, + { 0.0f, 0.0f, 120.0f }, + { 45.9f, 0.0f, 110.9f }, + { 84.8f, 0.0f, 84.9f } +}; + +static Vec lbl_1_data_950[] = { + { 80.0f, 0.0f, 31.0f }, + { 83.9f, 0.0f, -0.1f }, + { 77.2f, 0.0f, -31.7f }, + { 60.4f, 0.0f, -56.8f }, + { 35.6f, 0.0f, -77.4f }, + { -0.5f, 0.0f, -84.1f }, + { -31.5f, 0.0f, -82.9f }, + { -58.9f, 0.0f, -71.4f }, + { -86.3f, 0.0f, -49.4f }, + { -91.5f, 0.0f, -36.4f }, + { -91.5f, 0.0f, -27.3f }, + { -82.1f, 0.0f, -29.8f }, + { -54.7f, 0.0f, -36.2f }, + { -21.9f, 0.0f, -30.9f }, + { 13.3f, 0.0f, -10.2f }, + { 28.3f, 0.0f, 18.3f }, + { 33.4f, 0.0f, 58.4f }, + { 28.0f, 0.0f, 81.6f }, + { 20.7f, 0.0f, 93.3f }, + { 30.4f, 0.0f, 93.3f }, + { 55.4f, 0.0f, 82.2f }, + { 70.4f, 0.0f, 59.3f } +}; + +static s32 lbl_1_data_A58[] = { + DATA_MAKE_NUM(DATADIR_M403, 4), + DATA_MAKE_NUM(DATADIR_M403, 5), + DATA_MAKE_NUM(DATADIR_M403, 6), + DATA_MAKE_NUM(DATADIR_M403, 9), + DATA_MAKE_NUM(DATADIR_M403, 12), + DATA_MAKE_NUM(DATADIR_M403, 15), + DATA_MAKE_NUM(DATADIR_M403, 7), + DATA_MAKE_NUM(DATADIR_M403, 8), + DATA_MAKE_NUM(DATADIR_M403, 10), + DATA_MAKE_NUM(DATADIR_M403, 11), + DATA_MAKE_NUM(DATADIR_M403, 13), + DATA_MAKE_NUM(DATADIR_M403, 14) +}; + +static Vec lbl_1_data_A88[] = { + { -400.0f, 0.0f, 300.0f }, + { 0.0f, 0.0f, 300.0f }, + { 400.0f, 0.0f, 300.0f }, + { -400.0f, 0.0f, 700.0f }, + { 0.0f, 0.0f, 700.0f }, + { 400.0f, 0.0f, 700.0f } +}; + +static s32 lbl_1_data_AD0[] = { 6, 8, 10 }; +static s32 lbl_1_data_ADC[] = { 7, 9, 11 }; +static s32 lbl_1_data_AE8[] = { 1, 2, 3, 4, 5 }; + +static Vec *lbl_1_data_AFC[] = { + lbl_1_data_3C8, + lbl_1_data_158, + lbl_1_data_548, + lbl_1_data_2D8, + lbl_1_data_638, + lbl_1_data_848 +}; + +static s32 lbl_1_data_B14[] = { + 16, 16, 10, 10, 22, 22 +}; + +static Vec lbl_1_data_B2C[] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, -20.0f }, + { 0.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f } +}; + +static Vec *lbl_1_data_B74[][2] = { + { lbl_1_data_3C8, lbl_1_data_488 }, + { lbl_1_data_158, lbl_1_data_218 }, + { lbl_1_data_548, lbl_1_data_5C0 }, + { lbl_1_data_2D8, lbl_1_data_350 }, + { lbl_1_data_638, lbl_1_data_740 }, + { lbl_1_data_848, lbl_1_data_950 } +}; + +static s32 lbl_1_data_BA4[] = { + 16, 16, 10, 10, 22, 22 +}; + +void fn_1_650C(Process *arg0) { + Vec sp20; + Vec sp14; + Vec sp8; + s32 i; + + sp20.x = 0.0f; + sp20.y = 3000.0f; + sp20.z = 50.0f; + sp14.x = 0.0f; + sp14.y = 1.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + lbl_1_bss_B4 = omAddObjEx(arg0, 10, 2, 0, -1, fn_1_678C); + lbl_1_bss_B0 = omAddObjEx(arg0, 12, 4, 0, -1, fn_1_6814); + for (i = 0; i < 5; i++) { + lbl_1_bss_9C[i] = omAddObjEx(arg0, 14, 7, 0, -1, fn_1_6C98); + } + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.65f); + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + lbl_1_bss_98 = 0; + lbl_1_bss_94 = lbl_1_bss_90 = 2; + lbl_1_bss_84 = 0; + lbl_1_bss_88 = 0; + lbl_1_bss_80 = 0.75f; + lbl_1_bss_74 = 3; + lbl_1_bss_70 = 0; + lbl_1_bss_7C = 0; + lbl_1_bss_78 = 0; + memset(lbl_1_bss_58, 0, sizeof(lbl_1_bss_58)); +} + +void fn_1_676C(void) { + fn_1_799C(); +} + +static void fn_1_678C(omObjData *arg0) { + arg0->stat |= 0x100; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 16)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 17)); + arg0->func = fn_1_6810; +} + +static void fn_1_6810(omObjData *arg0) { +} + +static void fn_1_6814(omObjData *arg0) { + arg0->stat |= 0x100; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 0)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 3)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 1)); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 2)); + Hu3DMotionSpeedSet(arg0->model[2], 0.0f); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -500.0f); + Hu3DData[arg0->model[3]].unk_94 = 0.0f; + Hu3DData[arg0->model[3]].unk_98 = 2.0f; + arg0->work[3] = 30; + arg0->func = fn_1_6980; +} + +static void fn_1_6980(omObjData *arg0) { + ModelData *var_r30; + UnkBss9CData *var_r29; + + if (lbl_1_bss_7C != 0) { + if (lbl_1_bss_78 == 0) { + if (arg0->work[0] < 60.0f) { + arg0->work[0]++; + var_r30 = &Hu3DData[arg0->model[1]]; + var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; + } else { + lbl_1_bss_78 ^= 1; + lbl_1_bss_7C = 0; + } + } else if (arg0->work[0] != 0) { + arg0->work[0]--; + var_r30 = &Hu3DData[arg0->model[1]]; + var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; + } else { + lbl_1_bss_78 ^= 1; + lbl_1_bss_7C = 0; + } + } + var_r29 = lbl_1_bss_9C[lbl_1_bss_94]->data; + if (lbl_1_bss_8C != 0) { + lbl_1_bss_8C = 0; + lbl_1_bss_88 = 1; + } + if (lbl_1_bss_94 != lbl_1_bss_90) { + lbl_1_bss_88 = 0; + lbl_1_bss_84 = 0; + } + lbl_1_bss_90 = lbl_1_bss_94; + if (var_r29->unk00_field0 != 0) { + lbl_1_bss_94 = (lbl_1_bss_94 + 1) % 5; + lbl_1_bss_84 = 1; + } + if (arg0->work[3] != 0) { + if (--arg0->work[3] == 0) { + HuAudFXPlay(0x521); + } + } +} + +static void fn_1_6C98(omObjData *arg0) { + UnkBss9CData *var_r29; + s32 i; + + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r29), MEMORY_DEFAULT_NUM); + arg0->data = var_r29; + memset(arg0->data, 0, sizeof(*var_r29)); + for (i = 0; i < 12; i++) { + var_r29->unk24[i] = -1; + } + for (i = 0; i < 12U; i++) { + var_r29->unk24[i] = Hu3DModelCreateFile(lbl_1_data_A58[i]); + Hu3DModelAttrSet(var_r29->unk24[i], 1); + } + arg0->model[0] = var_r29->unk24[0]; + Hu3DModelAttrReset(arg0->model[0], 1); + var_r29->unk00_field0 = 0; + var_r29->unk04 = 4 - lbl_1_bss_98; + fn_1_6FE8(arg0); + arg0->trans.y = 5.0f; + arg0->trans.z = -500.0f; + switch (var_r29->unk04) { + case 0: + case 1: + break; + case 2: + for (i = 0; i < 7; i++) { + Hu3DModelShadowSet(arg0->model[i]); + } + break; + case 3: + for (i = 0; i < 7; i++) { + Hu3DModelShadowMapSet(arg0->model[i]); + } + arg0->trans.y = 2.5f; + break; + case 4: + for (i = 0; i < 7; i++) { + Hu3DModelShadowMapSet(arg0->model[i]); + } + arg0->trans.y = 0.0f; + break; + } + fn_1_6ED8(arg0); + lbl_1_bss_98++; + arg0->func = fn_1_73E8; +} + +static void fn_1_6ED8(omObjData *arg0) { + Mtx sp38; + Mtx sp8; + s32 i; + + PSMTXTrans(sp38, arg0->trans.x, arg0->trans.y, arg0->trans.z); + mtxRot(sp8, arg0->rot.x, arg0->rot.y, arg0->rot.z); + PSMTXConcat(sp38, sp8, sp38); + for (i = 0; i < 6; i++) { + PSMTXTrans(sp8, lbl_1_data_A88[i].x, lbl_1_data_A88[i].y, lbl_1_data_A88[i].z); + PSMTXConcat(sp38, sp8, sp8); + Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[i + 1], arg0->rot.x, arg0->rot.y, arg0->rot.z); + } +} + +static void fn_1_6FE8(omObjData *arg0) { + UnkBss9CData *temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 var_r24; + s32 var_r25; + s32 var_r26; + s32 sp8[6]; + s32 i; + + temp_r30 = arg0->data; + for (i = 0; i < 100; i++) { + temp_r29 = (frand8() * 3) >> 8; + temp_r28 = (frand8() * 3) >> 8; + var_r26 = lbl_1_data_AD0[temp_r29]; + lbl_1_data_AD0[temp_r29] = lbl_1_data_AD0[temp_r28]; + lbl_1_data_AD0[temp_r28] = var_r26; + temp_r29 = (frand8() * 3) >> 8; + temp_r28 = (frand8() * 3) >> 8; + var_r26 = lbl_1_data_ADC[temp_r29]; + lbl_1_data_ADC[temp_r29] = lbl_1_data_ADC[temp_r28]; + lbl_1_data_ADC[temp_r28] = var_r26; + temp_r29 = (frand8() * 5) >> 8; + temp_r28 = (frand8() * 5) >> 8; + var_r26 = lbl_1_data_AE8[temp_r29]; + lbl_1_data_AE8[temp_r29] = lbl_1_data_AE8[temp_r28]; + lbl_1_data_AE8[temp_r28] = var_r26; + } + var_r25 = 0; + for (i = 0; i < 6; i++) { + if (lbl_1_bss_58[i] < 6) { + sp8[var_r25++] = i; + } + } + for (i = 0; i < 100; i++) { + temp_r29 = (var_r25 * frand8()) >> 8; + temp_r28 = (var_r25 * frand8()) >> 8; + var_r26 = sp8[temp_r29]; + sp8[temp_r29] = sp8[temp_r28]; + sp8[temp_r28] = var_r26; + } + for (i = 0; i < 6; i++) { + temp_r30->unk0C[i] = 0; + } + for (i = 0; i < lbl_1_bss_70; i++) { + temp_r30->unk0C[sp8[i]] = lbl_1_data_ADC[i]; + } + for (; i < lbl_1_bss_74; i++) { + temp_r30->unk0C[sp8[i]] = lbl_1_data_AD0[i]; + } + var_r24 = 0; + for (i = 0; i < 6; i++) { + if (temp_r30->unk0C[i] == 0) { + temp_r30->unk0C[i] = lbl_1_data_AE8[var_r24++]; + } + } + memcpy(lbl_1_bss_58, &temp_r30->unk0C, sizeof(temp_r30->unk0C)); + for (i = 0; i < 6; i++) { + if (arg0->model[i + 1] >= 0) { + Hu3DModelAttrSet(arg0->model[i + 1], 1); + } + } + for (i = 0; i < 6; i++) { + arg0->model[i + 1] = temp_r30->unk24[temp_r30->unk0C[i]]; + Hu3DModelAttrReset(arg0->model[i + 1], 1); + } +} + +static void fn_1_73E8(omObjData *arg0) { + UnkBss9CData *temp_r30; + ModelData *var_r27; + s32 i; + + temp_r30 = arg0->data; + if (lbl_1_bss_88 == 0) { + if (lbl_1_bss_7C != 0 && temp_r30->unk04 < 3) { + var_r27 = &Hu3DData[lbl_1_bss_B0->model[1]]; + arg0->rot.x = var_r27->rot.x; + switch (temp_r30->unk04) { + case 0: + arg0->trans.z = -500.0f + 2.5f * lbl_1_bss_B0->work[0] / 60.0f; + break; + case 1: + arg0->trans.z = -500.0f + 5.0f * lbl_1_bss_B0->work[0] / 60.0f; + break; + case 2: + arg0->trans.z = -500.0f + 7.5f * lbl_1_bss_B0->work[0] / 60.0f; + break; + } + } else { + return; + } + } else { + switch (temp_r30->unk04) { + case 0: + if (lbl_1_bss_84 != 0) { + arg0->trans.z = -495.0f; + temp_r30->unk04++; + } + break; + case 1: + if (lbl_1_bss_84 != 0) { + arg0->trans.z = -492.5f; + temp_r30->unk00_field0 = 0; + temp_r30->unk04++; + temp_r30->unk08 = 0.0f; + for (i = 0; i < 7; i++) { + Hu3DModelShadowSet(arg0->model[i]); + } + } + break; + case 2: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04++; + arg0->trans.y = 2.5f; + for (i = 0; i < 7; i++) { + Hu3DModelShadowReset(arg0->model[i]); + Hu3DModelShadowMapSet(arg0->model[i]); + } + } else { + temp_r30->unk08 += lbl_1_bss_80; + if (temp_r30->unk08 > 90.0f) { + temp_r30->unk00_field0 = 1; + temp_r30->unk08 = 90.0f; + HuAudFXPlay(0x522); + } + arg0->rot.x = -120.0 * cosd(temp_r30->unk08); + arg0->trans.z = 7.5 * cosd(temp_r30->unk08) + -500.0; + } + break; + case 3: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04++; + arg0->trans.y = 0.0f; + } + break; + case 4: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04 = 0; + arg0->trans.y = 5.0f; + arg0->trans.z = -497.5f; + arg0->rot.x = -120.0f; + for (i = 0; i < 7; i++) { + fn_1_7A98(arg0->model[i]); + } + fn_1_6FE8(arg0); + } + break; + } + } + fn_1_6ED8(arg0); +} + +static void fn_1_799C(void) { + omObjData* temp_r30; + UnkBss9CData *temp_r29; + s32 i; + s32 j; + + for (i = 0; i < 5; i++) { + temp_r30 = lbl_1_bss_9C[i]; + temp_r29 = temp_r30->data; + if (temp_r29 != NULL) { + for (j = 0; j < 12; j++) { + if (temp_r29->unk24[j] >= 0) { + Hu3DModelKill(temp_r29->unk24[j]); + } + } + HuMemDirectFree(temp_r29); + lbl_1_bss_9C[i]->data = NULL; + } + for (i = 0; i < temp_r30->mdlcnt; i++) { + temp_r30->model[i] = -1; + } + } +} + +static void fn_1_7A98(s16 arg0) { + s16 i; + HsfData *temp_r31; + HsfObject *var_r28; + HsfObject *var_r30; + HsfConstData *temp_r27; + + temp_r31 = Hu3DData[arg0].hsfData; + var_r28 = temp_r31->object; + for (i = 0; i < temp_r31->objectCnt; i++, var_r28++) { + var_r30 = var_r28; + if (var_r30->constData) { + temp_r27 = var_r30->constData; + temp_r27->flags &= ~8; + } + } +} + +static s32 fn_1_7B20(float arg0, float arg1) { + s32 var_r31; + s32 var_r30; + + var_r31 = (arg0 + 600.0f) / 400.0f; + var_r30 = (arg1 + 400.0f) / 400.0f; + if (var_r31 < 0) { + var_r31 = 0; + } else if (var_r31 > 2) { + var_r31 = 2; + } + if (var_r30 < 0) { + var_r30 = 0; + } else if (var_r30 > 1) { + var_r30 = 1; + } + return var_r31 + var_r30 * 3; +} + +static void fn_1_7BD4(s32 arg0, Vec *arg1) { + arg1->x = lbl_1_data_A88[arg0].x; + arg1->y = lbl_1_data_A88[arg0].y; + arg1->z = lbl_1_data_A88[arg0].z; +} + +static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1) { + return arg0->unk0C[arg1]; +} + +void fn_1_7C30(float arg0) { + lbl_1_bss_8C = 1; + lbl_1_bss_80 = arg0; +} + +void fn_1_7C50(s32 arg0) { + lbl_1_bss_74 = arg0; +} + +void fn_1_7C60(void) { + float var_f30; + + lbl_1_bss_7C = 1; + var_f30 = (lbl_1_bss_78 == 0) ? 1.6666666f : -1.6666666f; + Hu3DMotionSpeedSet(lbl_1_bss_B0->model[2], var_f30); + HuAudFXPlay(0x524); +} + +static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) { + Mtx sp4C; + Mtx sp1C; + Vec sp10; + Vec *var_r30; + s32 temp_r28; + s32 temp_r21; + s32 temp_r23; + omObjData *temp_r31; + UnkBss9CData *var_r22; + s32 i; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + var_r22 = temp_r31->data; + temp_r21 = fn_1_7B20(arg0, arg1); + temp_r28 = fn_1_7C20(var_r22, temp_r21); + if (temp_r28 < 6) { + return 0; + } + temp_r28 -= 6; + fn_1_7BD4(temp_r21, &sp10); + sp10 = lbl_1_data_A88[temp_r21]; + PSMTXTrans(sp4C, temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + mtxRot(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); + PSMTXConcat(sp4C, sp1C, sp4C); + PSMTXTrans(sp1C, sp10.x, sp10.y, sp10.z); + PSMTXConcat(sp4C, sp1C, sp4C); + var_r30 = lbl_1_data_AFC[temp_r28]; + temp_r23 = lbl_1_data_B14[temp_r28]; + for (i = 0; i < temp_r23; i++) { + PSMTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); + PSMTXConcat(sp4C, sp1C, sp1C); + arg2->x = sp1C[0][3]; + arg2->y = sp1C[1][3]; + arg2->z = sp1C[2][3]; + arg2++; + var_r30++; + } + return temp_r23; +} + +float fn_1_7F78(float arg0, float arg1) { + float temp_f30; + float var_f31; + omObjData *temp_r31; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_f30 = -(arg1 - temp_r31->trans.z); + if (cosd(temp_r31->rot.x) <= 0.0) { + var_f31 = 9999.0f; + } else { + var_f31 = temp_f30 * sind(temp_r31->rot.x) / cosd(temp_r31->rot.x); + if (var_f31 > 9999.0f) { + var_f31 = 9999.0f; + } + } + return var_f31; +} + +float fn_1_80D4(Vec *arg0, float arg1) { + return fn_1_7F78(0.0f, arg0->z - arg1); +} + +static s32 fn_1_8254(void) { + return lbl_1_bss_7C; +} + +s32 fn_1_8264(void) { + return lbl_1_bss_88; +} + +static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1) { + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 6; i++) { + if (arg0->unk0C[i] >= 6) { + arg1[var_r30++] = i; + } + } + return var_r30; +} + +s32 fn_1_82D0(Vec *arg0) { + omObjData *temp_r31; + UnkBss9CData *temp_r28; + s32 sp8[6]; + s32 var_r26; + s32 temp_r27; + s32 i; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r28 = temp_r31->data; + var_r26 = fn_1_8274(temp_r28, sp8); + for (i = 0; i < var_r26; i++) { + fn_1_7BD4(sp8[i], arg0); + temp_r27 = fn_1_7C20(temp_r28, sp8[i]) - 6; + arg0->x += temp_r31->trans.x + lbl_1_data_B2C[temp_r27].x; + arg0->y += temp_r31->trans.y + lbl_1_data_B2C[temp_r27].y; + arg0->z += temp_r31->trans.z + lbl_1_data_B2C[temp_r27].z; + arg0++; + } + return var_r26; +} + +s32 fn_1_8470(Vec *arg0) { + Mtx sp50; + Mtx sp20; + omObjData* temp_r30; + UnkBss9CData *temp_r27; + s32 sp8[6]; + s32 temp_r26; + s32 var_r25; + s32 i; + + temp_r30 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r27 = temp_r30->data; + var_r25 = fn_1_8274(temp_r27, sp8); + PSMTXTrans(sp50, temp_r30->trans.x, temp_r30->trans.y, temp_r30->trans.z); + mtxRot(sp20, temp_r30->rot.x, temp_r30->rot.y, temp_r30->rot.z); + PSMTXConcat(sp50, sp20, sp50); + for (i = 0; i < var_r25; i++) { + fn_1_7BD4(sp8[i], arg0); + temp_r26 = fn_1_7C20(temp_r27, sp8[i]) - 6; + arg0->x += lbl_1_data_B2C[temp_r26].x; + arg0->y += lbl_1_data_B2C[temp_r26].y; + arg0->z += lbl_1_data_B2C[temp_r26].z; + PSMTXTrans(sp20, arg0->x, arg0->y, arg0->z); + PSMTXConcat(sp50, sp20, sp20); + arg0->x = sp20[0][3]; + arg0->y = sp20[1][3]; + arg0->z = sp20[2][3]; + arg0++; + } + return var_r25; +} + +void fn_1_8670(s32 arg0) { + if (arg0 > lbl_1_bss_74) { + arg0 = lbl_1_bss_74; + } + lbl_1_bss_70 = arg0; +} + +s32 fn_1_86A0(Vec *arg0, Vec *arg1) { + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float var_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + s32 temp_r17; + s32 temp_r21; + s32 temp_r24; + s32 temp_r27; + s32 var_r20; + Vec *temp_r29; + Vec *temp_r30; + omObjData *temp_r28; + UnkBss9CData *temp_r18; + s32 i; + + temp_r28 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r18 = temp_r28->data; + if (temp_r28->rot.x > 0.0f || temp_r28->rot.x <= -90.0f) { + return 0; + } + PSVECSubtract(arg0, &temp_r28->trans, &sp3C); + sp3C.z /= cosd(temp_r28->rot.x); + temp_r17 = fn_1_7B20(arg0->x, arg0->z); + temp_r24 = fn_1_7C20(temp_r18, temp_r17); + if (temp_r24 < 6) { + return 0; + } + temp_r24 -= 6; + sp48 = lbl_1_data_A88[temp_r17]; + PSVECSubtract(&sp3C, &sp48, &sp3C); + temp_r30 = lbl_1_data_B74[temp_r24][0]; + temp_r29 = lbl_1_data_B74[temp_r24][1]; + temp_r21 = lbl_1_data_BA4[temp_r24]; + for (i = 0; i < temp_r21; i++) { + temp_r27 = (i + 1) % temp_r21; + PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + PSVECSubtract(&sp3C, &temp_r30[temp_r27], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r29[temp_r27], &temp_r30[temp_r27], &sp24); + PSVECSubtract(&sp3C, &temp_r29[temp_r27], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r29[i], &temp_r29[temp_r27], &sp24); + PSVECSubtract(&sp3C, &temp_r29[i], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r30[i], &temp_r29[i], &sp24); + PSVECSubtract(&sp3C, &temp_r30[i], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + temp_f30 = (sp3C.x * sp24.x - sp24.x * temp_r30[i].x + sp3C.y * sp24.y - sp24.y * temp_r30[i].y + sp3C.z * sp24.z - sp24.z * temp_r30[i].z) / (sp24.x * sp24.x + sp24.y * sp24.y + sp24.z * sp24.z); + sp30.x = temp_r30[i].x + temp_f30 * sp24.x; + sp30.y = temp_r30[i].y + temp_f30 * sp24.y; + sp30.z = temp_r30[i].z + temp_f30 * sp24.z; + PSVECSubtract(&sp30, &sp3C, &spC); + temp_f28 = PSVECMag(&spC); + PSVECSubtract(&temp_r29[temp_r27], &temp_r29[i], &sp18); + temp_f29 = (sp3C.x * sp18.x - sp18.x * temp_r29[i].x + sp3C.y * sp18.y - sp18.y * temp_r29[i].y + sp3C.z * sp18.z - sp18.z * temp_r29[i].z) / (sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z); + sp30.x = temp_r29[i].x + temp_f29 * sp18.x; + sp30.y = temp_r29[i].y + temp_f29 * sp18.y; + sp30.z = temp_r29[i].z + temp_f29 * sp18.z; + PSVECSubtract(&sp30, &sp3C, &spC); + temp_f27 = PSVECMag(&spC); + if (temp_f28 == 0.0f) { + var_f31 = temp_f30; + } else if (temp_f27 == 0.0f) { + var_f31 = temp_f29; + } else { + temp_f26 = 1.0f - temp_f28 / (temp_f28 + temp_f27); + var_f31 = temp_f30 * temp_f26 + temp_f29 * (1.0f - temp_f26); + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + sp3C.x = temp_r29[i].x + var_f31 * sp18.x; + sp3C.y = temp_r29[i].y + var_f31 * sp18.y; + sp3C.z = temp_r29[i].z + var_f31 * sp18.z; + arg1->x = temp_r28->trans.x + sp48.x + sp3C.x; + arg1->y = temp_r28->trans.y + sp48.y + sp3C.y; + arg1->z = temp_r28->trans.z + (sp48.z + sp3C.z) * cosd(temp_r28->rot.x); + return 1; + } + var_r20 = 0; + for (i = 0; i < temp_r21; i++) { + temp_r27 = (i + 1) % temp_r21; + var_f31 = (sp3C.z - temp_r30[i].z) / (temp_r30[temp_r27].z - temp_r30[i].z); + spC.x = temp_r30[i].x + var_f31 * (temp_r30[temp_r27].x - temp_r30[i].x); + if (var_f31 >= 0.0f && var_f31 < 1.0f && spC.x > sp3C.x) { + var_r20++; + } + } + if (var_r20 & 1) { + arg1->x = arg0->x; + arg1->y = arg0->y; + arg1->z = arg0->z; + return 1; + } + return 0; +} diff --git a/src/REL/option/rumble.c b/src/REL/option/rumble.c index 2b21ac52..5bb0ae3a 100755 --- a/src/REL/option/rumble.c +++ b/src/REL/option/rumble.c @@ -129,13 +129,13 @@ static void fn_1_32F0(omObjData *arg0) { fn_1_39E0(temp_r31->unk00, 1, 1); temp_r31->unk20 = 1; temp_r31->unk28 = 0; - GWRumbleSet(1); + GWRumbleSet(1); arg0->unk10 = 3; } else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) { fn_1_39E0(temp_r31->unk00, 0, 1); temp_r31->unk20 = 0; temp_r31->unk28 = 0; - GWRumbleSet(0); + GWRumbleSet(0); arg0->unk10 = 3; } } diff --git a/src/REL/present/present.c b/src/REL/present/present.c index 8598cf4b..458235f4 100644 --- a/src/REL/present/present.c +++ b/src/REL/present/present.c @@ -84,10 +84,10 @@ static const UnkPresentNestedOuterStruct lbl_1_rodata_2B8[] = { }, { 0x0000000B, { { 0x00000062, 0xFFFFFFFF, 0x00320036, 0x00320072 }, { 0x00000063, 0xFFFFFFFF, 0x00320037, 0x00320073 }, { 0x00000064, 0xFFFFFFFF, 0x00320038, 0x00320074 }, { 0x00000065, 0xFFFFFFFF, 0x00320039, 0x00320075 }, - { 0x00000066, 0xFFFFFFFF, 0x0032003A, 0x00320076 }, { 0x00000067, 0xFFFFFFFF, 0x0032003B, 0x00320077 }, - { 0x00000068, 0xFFFFFFFF, 0x0032003C, 0x00320078 }, { 0x00000069, 0xFFFFFFFF, 0x0032003D, 0x00320079 }, - { 0x0000006A, 0xFFFFFFFF, 0x0032003E, 0x0032007A }, { 0x0000006B, 0xFFFFFFFF, 0x0032003F, 0x0032007B }, - { 0x0000006C, 0xFFFFFFFF, 0x00320040, 0x0032007C } + { 0x00000066, 0xFFFFFFFF, 0x0032003A, 0x00320076 }, { 0x00000067, 0xFFFFFFFF, 0x0032003B, 0x00320077 }, + { 0x00000068, 0xFFFFFFFF, 0x0032003C, 0x00320078 }, { 0x00000069, 0xFFFFFFFF, 0x0032003D, 0x00320079 }, + { 0x0000006A, 0xFFFFFFFF, 0x0032003E, 0x0032007A }, { 0x0000006B, 0xFFFFFFFF, 0x0032003F, 0x0032007B }, + { 0x0000006C, 0xFFFFFFFF, 0x00320040, 0x0032007C } }, }, }; diff --git a/src/REL/w01Dll/main.c b/src/REL/w01Dll/main.c index c17f0a58..615dce8c 100755 --- a/src/REL/w01Dll/main.c +++ b/src/REL/w01Dll/main.c @@ -1114,7 +1114,7 @@ static void fn_1_3624(void) { } temp_r19 = HuAudFXPlay(0x40C); fn_1_4774(); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); lbl_1_bss_6B0 = 1; HuAudFXPlay(0x413); while (TRUE) { @@ -1163,7 +1163,7 @@ static void fn_1_3624(void) { lbl_1_bss_660.x = lbl_1_bss_660.z = 0.0f; BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); HuAudFXPlay(0x401); temp_f28 = (-lbl_1_bss_63C - lbl_1_bss_660.y) / 30.0f; for (i = 0; i < 30; i++) { @@ -1213,7 +1213,7 @@ static void fn_1_45F4(void) { BoardAudSeqPause(0, 0, 1000); BoardCameraMoveSet(1); BoardCameraMotionWait(); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1316,7 +1316,7 @@ static s32 fn_1_48B4(void) { HuAudFXPlay(0x402); BoardStatusShowSetAll(0); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1930,7 +1930,7 @@ static void fn_1_77EC(s32 arg0, s32 arg1) { static void fn_1_7894(void) { lbl_1_bss_6B1 = 1; WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1987,7 +1987,7 @@ static void fn_1_7A64(void) { fn_1_852C(); BoardModelMotionSpeedSet(lbl_1_bss_6AE, lbl_1_bss_670); BoardCameraMotionWait(); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); lbl_1_bss_6B0 = 1; temp_r19 = HuAudFXPlay(0x412); while (TRUE) { @@ -2005,13 +2005,13 @@ static void fn_1_7A64(void) { if (lbl_1_bss_0->unk00_field0 == 0) { if (BoardModelMotionTimeGet(lbl_1_bss_6AE) <= 20.0f && var_r28 == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } } else { if (BoardModelMotionTimeGet(lbl_1_bss_6AE) >= lbl_1_bss_644 - 20.0f && var_r28 == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } } diff --git a/src/REL/w04Dll/big_boo.c b/src/REL/w04Dll/big_boo.c index 4e897c0f..ff859078 100755 --- a/src/REL/w04Dll/big_boo.c +++ b/src/REL/w04Dll/big_boo.c @@ -301,7 +301,7 @@ static void fn_1_68D8(void) { HuPrcVSleep(); } BoardModelAlphaSet(lbl_1_bss_274, 0); - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); WipeColorSet(0, 0, 0); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -384,7 +384,7 @@ static void fn_1_6CF8(void) { BoardCameraXRotZoomSet(1600.0f, -5.0f); lbl_1_bss_104 = HuPrcChildCreate(fn_1_75D8, 0x2003, 0x1000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_104, fn_1_757C); - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -417,7 +417,7 @@ static void fn_1_7300(void) { s32 i; s32 j; - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -453,7 +453,7 @@ static void fn_1_7300(void) { sp8.x = sp8.y = sp8.z = 3.0f; BoardModelScaleSetV(lbl_1_bss_274, &sp8); BoardModelPosSetV(lbl_1_bss_274, &lbl_1_bss_108); - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/REL/w06Dll/bowser.c b/src/REL/w06Dll/bowser.c index e0a282bf..acc1bb8b 100755 --- a/src/REL/w06Dll/bowser.c +++ b/src/REL/w06Dll/bowser.c @@ -317,7 +317,7 @@ static void fn_1_95AC(s32 arg0) { HuPrcVSleep(); } WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 1, 1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); HuPrcSleep(2); BoardCameraMoveSet(0); BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 0); @@ -334,7 +334,7 @@ static void fn_1_95AC(s32 arg0) { sp38.z = sp2C.z; BoardPlayerPosSetV(arg0, &sp38); BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 1); - WipeCreate(1, 1, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -553,7 +553,7 @@ static void fn_1_A408(s32 arg0) { _SetFlag(FLAG_ID_MAKE(1, 28)); _SetFlag(FLAG_ID_MAKE(1, 14)); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -669,7 +669,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardCameraMotionStartEx(lbl_1_data_49A, &spC, &sp18, 2000.0f, -1.0f, 2); BoardCameraMotionWait(); BoardCameraTargetModelSet(-1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1048,7 +1048,7 @@ static void fn_1_C40C(void) { sp20.y += 250.0f; BoardModelPosSetV(lbl_1_data_4A0, &sp20); BoardModelScaleSet(lbl_1_data_4A0, 10.0f, 10.0f, 10.0f); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1083,7 +1083,7 @@ static void fn_1_C40C(void) { BoardWinKill(); BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/item.c b/src/game/board/item.c index 949e4983..e9486df6 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -863,7 +863,7 @@ static void ExecItemPipe(void) { HuPrcVSleep(); } WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -889,7 +889,7 @@ static void ExecItemPipe(void) { BoardPlayerVoiceEnableSet(sp2C[var_r31], 4, 0); BoardModelVisibilitySet(BoardPlayerModelGet(sp2C[var_r31]), 0); } - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1422,7 +1422,7 @@ static void ExecItemWhistle(void) { HuPrcVSleep(); } WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1437,7 +1437,7 @@ static void ExecItemWhistle(void) { for (var_r31 = 0; var_r31 < 4; var_r31++) { BoardModelVisibilitySet(sp20[var_r31], 1); } - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1540,7 +1540,7 @@ static void ExecItemWhistle(void) { BoardModelPosSetV(temp_r28, &sp9C); var_f30 *= 0.945f; if (sp9C.y >= 500.0f && var_r26 == 0) { - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); BoardAudSeqFadeOut(0, 1000); var_r26 = 1; } @@ -2248,7 +2248,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, 45); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 45); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -2345,7 +2345,7 @@ static void GenieSceneExec(void) { } HuPrcVSleep(); } - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); BoardAudSeqFadeOut(1, 1000); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -2428,7 +2428,7 @@ static void ExecItemGenie(void) { HuAudFXStop(temp_r25); HuAudFXPauseAll(1); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -2448,7 +2448,7 @@ static void ExecItemGenie(void) { BoardPlayerPosSetV(currItemRestore, &spC); BoardCameraMotionWait(); BoardCameraMoveSet(1); - WipeCreate(1, 0, 45); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 45); HuPrcSleep(15); BoardAudSeqPause(0, 0, 1000); while (WipeStatGet() != 0) { diff --git a/src/game/board/pause.c b/src/game/board/pause.c index a3b6a10d..3bdcbfe3 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -506,13 +506,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 1: if (UpdatePauseBox(arg0, temp_r31, 1) != 0) { - GWMGExplainSet(boxState[1]); + GWMGExplainSet(boxState[1]); } UpdatePauseText(cursorPos); break; case 2: if (UpdatePauseBox(arg0, temp_r31, 2) != 0) { - GWMGShowComSet(boxState[2]); + GWMGShowComSet(boxState[2]); } UpdatePauseText(cursorPos); break; @@ -534,7 +534,7 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 4: if (UpdatePauseBox(arg0, temp_r31, 4) != 0) { - GWRumbleSet(boxState[4]); + GWRumbleSet(boxState[4]); } UpdatePauseText(cursorPos); break; @@ -542,13 +542,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 5) != 0) { switch (boxState[5]) { case 0: - GWMessSpeedSet(2); + GWMessSpeedSet(2); break; case 1: - GWMessSpeedSet(1); + GWMessSpeedSet(1); break; case 2: - GWMessSpeedSet(0); + GWMessSpeedSet(0); break; } } @@ -562,13 +562,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 6) != 0) { switch (boxState[6]) { case 0: - GWSaveModeSet(1); + GWSaveModeSet(1); break; case 1: - GWSaveModeSet(0); + GWSaveModeSet(0); break; case 2: - GWSaveModeSet(2); + GWSaveModeSet(2); break; } } diff --git a/src/game/board/star.c b/src/game/board/star.c index 2c246d38..79f3e8fa 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -663,7 +663,7 @@ void BoardStarShowNext(s32 arg0) { var_r26 = &wipeData; if (var_r26->mode == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -727,7 +727,7 @@ void BoardStarShowNext(s32 arg0) { BoardCameraMotionWait(); BoardCameraMoveSet(1); HuPrcSleep(1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -758,7 +758,7 @@ void BoardStarShowNext(s32 arg0) { } BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -774,7 +774,7 @@ void BoardStarShowNext(s32 arg0) { BoardCameraMotionWait(); BoardCameraMoveSet(1); BoardStatusItemSet(1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/start.c b/src/game/board/start.c index 0f0ea6a7..5013d43a 100755 --- a/src/game/board/start.c +++ b/src/game/board/start.c @@ -148,7 +148,7 @@ static void ExecStart(void) { InitCamera(); CreateTapWin(); InitHost(); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -172,7 +172,7 @@ static void ExecStart(void) { if (_CheckFlag(0x1000B)) { BoardTutorialHookExec(4, 0); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 0x15); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -188,7 +188,7 @@ static void ExecStart(void) { BoardCameraMotionWait(); BoardCameraMoveSet(1); BoardModelVisibilitySet(BoardStarHostMdlGet(), 0); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -197,7 +197,7 @@ static void ExecStart(void) { BoardCameraNearFarSet(100.0f, 13000.0f); if (GWBoardGet() == 7 || GWBoardGet() == 8) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 0x15); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -213,7 +213,7 @@ static void ExecStart(void) { BoardCameraViewSet(2); BoardCameraMotionWait(); BoardCameraMoveSet(1); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 91f52d18..2108aeb2 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -1500,7 +1500,7 @@ void Hu3DLLightInfinitytSet(s16 dataIndex, s16 lightIndex) { Hu3DLightInfinitytSet(light); } -inline void Hu3DLightPointSet(LightData *light, u16 arg1, f32 arg8, f32 arg9) { +inline void Hu3DLightPointSet(LightData *light, f32 arg8, f32 arg9, u16 arg1) { light->unk_00 &= 0xFF00; light->unk_00 |= 2; light->unk_04 = arg8; @@ -1508,19 +1508,19 @@ inline void Hu3DLightPointSet(LightData *light, u16 arg1, f32 arg8, f32 arg9) { light->unk_02 = arg1; } -void Hu3DGLightPointSet(s16 arg0, u16 arg1, f32 arg8, f32 arg9) { +void Hu3DGLightPointSet(s16 arg0, f32 arg8, f32 arg9, u16 arg1) { LightData* light = &Hu3DGlobalLight[arg0]; - Hu3DLightPointSet(light, arg1, arg8, arg9); + Hu3DLightPointSet(light, arg8, arg9, arg1); } -void Hu3DLLightPointSet(s16 arg0, s16 arg1, u16 arg2, f32 arg8, f32 arg9) { +void Hu3DLLightPointSet(s16 arg0, s16 arg1, f32 arg8, f32 arg9, u16 arg2) { ModelData* data; LightData* light; data = &Hu3DData[arg0]; light = &Hu3DLocalLight[data->unk_38[arg1]]; - Hu3DLightPointSet(light, arg2, arg8, arg9); + Hu3DLightPointSet(light, arg8, arg9, arg2); } void Hu3DGLightKill(s16 index) { @@ -1755,7 +1755,7 @@ s32 Hu3DModelLightInfoSet(s16 arg0, s16 arg1) { Hu3DGLightSpotSet(sp12, 2, var_r18->light.cutoff); break; case 1: - Hu3DGLightPointSet(sp12, 2, var_r18->data.base.scale.x - var_r18->data.base.rot.z, 1.0f); + Hu3DGLightPointSet(sp12, var_r18->data.base.scale.x - var_r18->data.base.rot.z, 1.0f, 2); Hu3DGLightPosSet(sp12, var_r18->light.pos.x, var_r18->light.pos.y, var_r18->light.pos.z, var_r18->light.target.x, var_r18->light.target.y, var_r18->light.target.z); break; case 2: diff --git a/src/game/saveload.c b/src/game/saveload.c index 1b717efc..a7fe736c 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -152,7 +152,7 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { } _SetFlag(FLAG_ID_MAKE(3, 0)); result = HuCardWrite(&curFileInfo, addr, size, 0); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + _ClearFlag(FLAG_ID_MAKE(3, 0)); if (result < 0) { HuWinExAnimOut(window); HuWinExCleanup(window); @@ -552,18 +552,18 @@ s32 SLStatSet(s32 reportF) { } return CARD_RESULT_FATAL_ERROR; } - CARDSetCommentAddress(&stat, 0); - CARDSetIconAddress(&stat, 64); - CARDSetBannerFormat(&stat, CARD_STAT_BANNER_C8); - CARDSetIconFormat(&stat, 0, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 1, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 2, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 3, CARD_STAT_ICON_C8); + CARDSetCommentAddress(&stat, 0); + CARDSetIconAddress(&stat, 64); + CARDSetBannerFormat(&stat, CARD_STAT_BANNER_C8); + CARDSetIconFormat(&stat, 0, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 1, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 2, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 3, CARD_STAT_ICON_C8); CARDSetIconSpeed(&stat, 0, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 1, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 2, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 3, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 4, CARD_STAT_SPEED_END); + CARDSetIconSpeed(&stat, 1, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 2, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 3, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 4, CARD_STAT_SPEED_END); CARDSetIconAnim(&stat, CARD_STAT_ANIM_LOOP); result = CARDSetStatus(curSlotNo, fileNo, &stat); @@ -706,43 +706,43 @@ s16 SLMessOut(s16 mess) { slot_mess = 0; has_choice = 0; HuWinInit(1); - SLKillSaveWin(); + SLKillSaveWin(); switch (mess) { case 0: save_mess = MAKE_MESSID(16, 2); break; - + case 1: save_mess = MAKE_MESSID(16, 83); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 2: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 74); break; - + case 3: save_mess = MAKE_MESSID(16, 74); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 4: save_mess = MAKE_MESSID(16, 74); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 5: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 4); has_choice = 1; break; - + case 6: save_mess = MAKE_MESSID(16, 54); break; @@ -751,30 +751,30 @@ s16 SLMessOut(s16 mess) { slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 55); break; - + case 8: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 57); break; - + case 9: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 69); break; - + case 10: save_mess = MAKE_MESSID(16, 70); has_choice = 1; break; - + case 11: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 72); break; - + case 12: save_mess = MAKE_MESSID(16, 80); break;