diff --git a/config/GMPE01_00/rels/option/splits.txt b/config/GMPE01_00/rels/option/splits.txt index 79b7fd34..76104ddb 100644 --- a/config/GMPE01_00/rels/option/splits.txt +++ b/config/GMPE01_00/rels/option/splits.txt @@ -51,11 +51,11 @@ REL/option/sound.c: .bss start:0x00000038 end:0x00000040 REL/option/record.c: - .text start:0x000080E4 end:0x0000A3B0 + .text start:0x000080E4 end:0x0000A44C .rodata start:0x000013C0 end:0x000019D0 .data start:0x00000210 end:0x00000254 .bss start:0x00000040 end:0x00000044 REL/option/window.c: - .text start:0x0000A3B0 end:0x0000A9AC + .text start:0x0000A44C end:0x0000A9AC .rodata start:0x000019D0 end:0x000019F0 diff --git a/config/GMPE01_00/rels/option/symbols.txt b/config/GMPE01_00/rels/option/symbols.txt index 7be52769..d5ad45af 100644 --- a/config/GMPE01_00/rels/option/symbols.txt +++ b/config/GMPE01_00/rels/option/symbols.txt @@ -2,14 +2,14 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ModuleProlog = .text:0x000000A0; // type:function size:0xC0 fn_1_160 = .text:0x00000160; // type:function size:0x110 -fn_1_270 = .text:0x00000270; // type:function size:0xE4 -fn_1_354 = .text:0x00000354; // type:function size:0x114 -fn_1_468 = .text:0x00000468; // type:function size:0xE8 +fn_1_270 = .text:0x00000270; // type:function size:0xE4 scope:local +fn_1_354 = .text:0x00000354; // type:function size:0x114 scope:local +fn_1_468 = .text:0x00000468; // type:function size:0xE8 scope:local fn_1_550 = .text:0x00000550; // type:function size:0x34 fn_1_584 = .text:0x00000584; // type:function size:0x34 fn_1_5B8 = .text:0x000005B8; // type:function size:0x34 -fn_1_5EC = .text:0x000005EC; // type:function size:0xFC -fn_1_6E8 = .text:0x000006E8; // type:function size:0x110 +fn_1_5EC = .text:0x000005EC; // type:function size:0xFC scope:local +fn_1_6E8 = .text:0x000006E8; // type:function size:0x110 scope:local fn_1_7F8 = .text:0x000007F8; // type:function size:0x244 fn_1_A3C = .text:0x00000A3C; // type:function size:0x30 fn_1_A6C = .text:0x00000A6C; // type:function size:0x84 @@ -17,360 +17,360 @@ fn_1_AF0 = .text:0x00000AF0; // type:function size:0x84 fn_1_B74 = .text:0x00000B74; // type:function size:0x84 fn_1_BF8 = .text:0x00000BF8; // type:function size:0x30 fn_1_C28 = .text:0x00000C28; // type:function size:0x30 -fn_1_C58 = .text:0x00000C58; // type:function size:0x30 +fn_1_C58 = .text:0x00000C58; // type:function size:0x30 scope:local fn_1_C88 = .text:0x00000C88; // type:function size:0x30 fn_1_CB8 = .text:0x00000CB8; // type:function size:0x8C -fn_1_D44 = .text:0x00000D44; // type:function size:0x28 -fn_1_D6C = .text:0x00000D6C; // type:function size:0x578 -fn_1_12E4 = .text:0x000012E4; // type:function size:0x200 -fn_1_14E4 = .text:0x000014E4; // type:function size:0xC0 +fn_1_D44 = .text:0x00000D44; // type:function size:0x28 scope:local +fn_1_D6C = .text:0x00000D6C; // type:function size:0x578 scope:local +fn_1_12E4 = .text:0x000012E4; // type:function size:0x200 scope:local +fn_1_14E4 = .text:0x000014E4; // type:function size:0xC0 scope:local fn_1_15A4 = .text:0x000015A4; // type:function size:0x1F4 fn_1_1798 = .text:0x00001798; // type:function size:0xAC -fn_1_1844 = .text:0x00001844; // type:function size:0x1E8 +fn_1_1844 = .text:0x00001844; // type:function size:0x1E8 scope:local fn_1_1A2C = .text:0x00001A2C; // type:function size:0x44 fn_1_1A70 = .text:0x00001A70; // type:function size:0x1C -fn_1_1A8C = .text:0x00001A8C; // type:function size:0x5FC -fn_1_2088 = .text:0x00002088; // type:function size:0x88 -fn_1_2110 = .text:0x00002110; // type:function size:0x34 -fn_1_2144 = .text:0x00002144; // type:function size:0x80 -fn_1_21C4 = .text:0x000021C4; // type:function size:0x34 +fn_1_1A8C = .text:0x00001A8C; // type:function size:0x5FC scope:local +fn_1_2088 = .text:0x00002088; // type:function size:0x88 scope:local +fn_1_2110 = .text:0x00002110; // type:function size:0x34 scope:local +fn_1_2144 = .text:0x00002144; // type:function size:0x80 scope:local +fn_1_21C4 = .text:0x000021C4; // type:function size:0x34 scope:local fn_1_21F8 = .text:0x000021F8; // type:function size:0x224 fn_1_241C = .text:0x0000241C; // type:function size:0x8C -fn_1_24A8 = .text:0x000024A8; // type:function size:0x44 -fn_1_24EC = .text:0x000024EC; // type:function size:0x1C +fn_1_24A8 = .text:0x000024A8; // type:function size:0x44 scope:local +fn_1_24EC = .text:0x000024EC; // type:function size:0x1C scope:local fn_1_2508 = .text:0x00002508; // type:function size:0xA4 -fn_1_25AC = .text:0x000025AC; // type:function size:0x46C -fn_1_2A18 = .text:0x00002A18; // type:function size:0x2E8 -fn_1_2D00 = .text:0x00002D00; // type:function size:0x104 +fn_1_25AC = .text:0x000025AC; // type:function size:0x46C scope:local +fn_1_2A18 = .text:0x00002A18; // type:function size:0x2E8 scope:local +fn_1_2D00 = .text:0x00002D00; // type:function size:0x104 scope:local fn_1_2E04 = .text:0x00002E04; // type:function size:0x148 fn_1_2F4C = .text:0x00002F4C; // type:function size:0x64 -fn_1_2FB0 = .text:0x00002FB0; // type:function size:0x1A8 +fn_1_2FB0 = .text:0x00002FB0; // type:function size:0x1A8 scope:local fn_1_3158 = .text:0x00003158; // type:function size:0xD4 fn_1_322C = .text:0x0000322C; // type:function size:0x64 fn_1_3290 = .text:0x00003290; // type:function size:0x44 fn_1_32D4 = .text:0x000032D4; // type:function size:0x1C -fn_1_32F0 = .text:0x000032F0; // type:function size:0x4BC -fn_1_37AC = .text:0x000037AC; // type:function size:0xBC -fn_1_3868 = .text:0x00003868; // type:function size:0x54 -fn_1_38BC = .text:0x000038BC; // type:function size:0xD0 -fn_1_398C = .text:0x0000398C; // type:function size:0x54 -fn_1_39E0 = .text:0x000039E0; // type:function size:0x128 -fn_1_3B08 = .text:0x00003B08; // type:function size:0x84 -fn_1_3B8C = .text:0x00003B8C; // type:function size:0x54 -fn_1_3BE0 = .text:0x00003BE0; // type:function size:0x8C -fn_1_3C6C = .text:0x00003C6C; // type:function size:0x94 -fn_1_3D00 = .text:0x00003D00; // type:function size:0x54 +fn_1_32F0 = .text:0x000032F0; // type:function size:0x4BC scope:local +fn_1_37AC = .text:0x000037AC; // type:function size:0xBC scope:local +fn_1_3868 = .text:0x00003868; // type:function size:0x54 scope:local +fn_1_38BC = .text:0x000038BC; // type:function size:0xD0 scope:local +fn_1_398C = .text:0x0000398C; // type:function size:0x54 scope:local +fn_1_39E0 = .text:0x000039E0; // type:function size:0x128 scope:local +fn_1_3B08 = .text:0x00003B08; // type:function size:0x84 scope:local +fn_1_3B8C = .text:0x00003B8C; // type:function size:0x54 scope:local +fn_1_3BE0 = .text:0x00003BE0; // type:function size:0x8C scope:local +fn_1_3C6C = .text:0x00003C6C; // type:function size:0x94 scope:local +fn_1_3D00 = .text:0x00003D00; // type:function size:0x54 scope:local fn_1_3D54 = .text:0x00003D54; // type:function size:0xC8 fn_1_3E1C = .text:0x00003E1C; // type:function size:0xB4 fn_1_3ED0 = .text:0x00003ED0; // type:function size:0x58 -fn_1_3F28 = .text:0x00003F28; // type:function size:0xAC -fn_1_3FD4 = .text:0x00003FD4; // type:function size:0x54 +fn_1_3F28 = .text:0x00003F28; // type:function size:0xAC scope:local +fn_1_3FD4 = .text:0x00003FD4; // type:function size:0x54 scope:local fn_1_4028 = .text:0x00004028; // type:function size:0x2B4 fn_1_42DC = .text:0x000042DC; // type:function size:0xAC fn_1_4388 = .text:0x00004388; // type:function size:0x44 fn_1_43CC = .text:0x000043CC; // type:function size:0x1C -fn_1_43E8 = .text:0x000043E8; // type:function size:0x270 -fn_1_4658 = .text:0x00004658; // type:function size:0x424 -fn_1_4A7C = .text:0x00004A7C; // type:function size:0x3D4 -fn_1_4E50 = .text:0x00004E50; // type:function size:0x93C -fn_1_578C = .text:0x0000578C; // type:function size:0x8B8 -fn_1_6044 = .text:0x00006044; // type:function size:0xF8 -fn_1_613C = .text:0x0000613C; // type:function size:0x64 -fn_1_61A0 = .text:0x000061A0; // type:function size:0xFC -fn_1_629C = .text:0x0000629C; // type:function size:0x54 -fn_1_62F0 = .text:0x000062F0; // type:function size:0xFC -fn_1_63EC = .text:0x000063EC; // type:function size:0x54 -fn_1_6440 = .text:0x00006440; // type:function size:0x94 -fn_1_64D4 = .text:0x000064D4; // type:function size:0x54 -fn_1_6528 = .text:0x00006528; // type:function size:0x118 -fn_1_6640 = .text:0x00006640; // type:function size:0x54 -fn_1_6694 = .text:0x00006694; // type:function size:0x38 -fn_1_66CC = .text:0x000066CC; // type:function size:0x38 -fn_1_6704 = .text:0x00006704; // type:function size:0xC4 -fn_1_67C8 = .text:0x000067C8; // type:function size:0x60 -fn_1_6828 = .text:0x00006828; // type:function size:0x1E4 -fn_1_6A0C = .text:0x00006A0C; // type:function size:0x74 -fn_1_6A80 = .text:0x00006A80; // type:function size:0x1DC -fn_1_6C5C = .text:0x00006C5C; // type:function size:0x74 -fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x1D4 -fn_1_6EA4 = .text:0x00006EA4; // type:function size:0xA4 -fn_1_6F48 = .text:0x00006F48; // type:function size:0x1D4 -fn_1_711C = .text:0x0000711C; // type:function size:0xA4 -fn_1_71C0 = .text:0x000071C0; // type:function size:0xE8 -fn_1_72A8 = .text:0x000072A8; // type:function size:0x68 -fn_1_7310 = .text:0x00007310; // type:function size:0x400 -fn_1_7710 = .text:0x00007710; // type:function size:0x190 -fn_1_78A0 = .text:0x000078A0; // type:function size:0x60 -fn_1_7900 = .text:0x00007900; // type:function size:0x3C -fn_1_793C = .text:0x0000793C; // type:function size:0x5C4 -fn_1_7F00 = .text:0x00007F00; // type:function size:0x148 -fn_1_8048 = .text:0x00008048; // type:function size:0x9C +fn_1_43E8 = .text:0x000043E8; // type:function size:0x270 scope:local +fn_1_4658 = .text:0x00004658; // type:function size:0x424 scope:local +fn_1_4A7C = .text:0x00004A7C; // type:function size:0x3D4 scope:local +fn_1_4E50 = .text:0x00004E50; // type:function size:0x93C scope:local +fn_1_578C = .text:0x0000578C; // type:function size:0x8B8 scope:local +fn_1_6044 = .text:0x00006044; // type:function size:0xF8 scope:local +fn_1_613C = .text:0x0000613C; // type:function size:0x64 scope:local +fn_1_61A0 = .text:0x000061A0; // type:function size:0xFC scope:local +fn_1_629C = .text:0x0000629C; // type:function size:0x54 scope:local +fn_1_62F0 = .text:0x000062F0; // type:function size:0xFC scope:local +fn_1_63EC = .text:0x000063EC; // type:function size:0x54 scope:local +fn_1_6440 = .text:0x00006440; // type:function size:0x94 scope:local +fn_1_64D4 = .text:0x000064D4; // type:function size:0x54 scope:local +fn_1_6528 = .text:0x00006528; // type:function size:0x118 scope:local +fn_1_6640 = .text:0x00006640; // type:function size:0x54 scope:local +fn_1_6694 = .text:0x00006694; // type:function size:0x38 scope:local +fn_1_66CC = .text:0x000066CC; // type:function size:0x38 scope:local +fn_1_6704 = .text:0x00006704; // type:function size:0xC4 scope:local +fn_1_67C8 = .text:0x000067C8; // type:function size:0x60 scope:local +fn_1_6828 = .text:0x00006828; // type:function size:0x1E4 scope:local +fn_1_6A0C = .text:0x00006A0C; // type:function size:0x74 scope:local +fn_1_6A80 = .text:0x00006A80; // type:function size:0x1DC scope:local +fn_1_6C5C = .text:0x00006C5C; // type:function size:0x74 scope:local +fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x1D4 scope:local +fn_1_6EA4 = .text:0x00006EA4; // type:function size:0xA4 scope:local +fn_1_6F48 = .text:0x00006F48; // type:function size:0x1D4 scope:local +fn_1_711C = .text:0x0000711C; // type:function size:0xA4 scope:local +fn_1_71C0 = .text:0x000071C0; // type:function size:0xE8 scope:local +fn_1_72A8 = .text:0x000072A8; // type:function size:0x68 scope:local +fn_1_7310 = .text:0x00007310; // type:function size:0x400 scope:local +fn_1_7710 = .text:0x00007710; // type:function size:0x190 scope:local +fn_1_78A0 = .text:0x000078A0; // type:function size:0x60 scope:local +fn_1_7900 = .text:0x00007900; // type:function size:0x3C scope:local +fn_1_793C = .text:0x0000793C; // type:function size:0x5C4 scope:local +fn_1_7F00 = .text:0x00007F00; // type:function size:0x148 scope:local +fn_1_8048 = .text:0x00008048; // type:function size:0x9C scope:local fn_1_80E4 = .text:0x000080E4; // type:function size:0x178 fn_1_825C = .text:0x0000825C; // type:function size:0x54 fn_1_82B0 = .text:0x000082B0; // type:function size:0x44 fn_1_82F4 = .text:0x000082F4; // type:function size:0x1C -fn_1_8310 = .text:0x00008310; // type:function size:0x778 -fn_1_8A88 = .text:0x00008A88; // type:function size:0xD0 -fn_1_8B58 = .text:0x00008B58; // type:function size:0x54 -fn_1_8BAC = .text:0x00008BAC; // type:function size:0xD8 -fn_1_8C84 = .text:0x00008C84; // type:function size:0xFC -fn_1_8D80 = .text:0x00008D80; // type:function size:0x54 -fn_1_8DD4 = .text:0x00008DD4; // type:function size:0xC4 -fn_1_8E98 = .text:0x00008E98; // type:function size:0x60 -fn_1_8EF8 = .text:0x00008EF8; // type:function size:0x40 -fn_1_8F38 = .text:0x00008F38; // type:function size:0x77C -fn_1_96B4 = .text:0x000096B4; // type:function size:0x9C -fn_1_9750 = .text:0x00009750; // type:function size:0x344 -fn_1_9A94 = .text:0x00009A94; // type:function size:0x7C -fn_1_9B10 = .text:0x00009B10; // type:function size:0x8A0 -fn_1_A3B0 = .text:0x0000A3B0; // type:function size:0x9C +fn_1_8310 = .text:0x00008310; // type:function size:0x778 scope:local +fn_1_8A88 = .text:0x00008A88; // type:function size:0xD0 scope:local +fn_1_8B58 = .text:0x00008B58; // type:function size:0x54 scope:local +fn_1_8BAC = .text:0x00008BAC; // type:function size:0xD8 scope:local +fn_1_8C84 = .text:0x00008C84; // type:function size:0xFC scope:local +fn_1_8D80 = .text:0x00008D80; // type:function size:0x54 scope:local +fn_1_8DD4 = .text:0x00008DD4; // type:function size:0xC4 scope:local +fn_1_8E98 = .text:0x00008E98; // type:function size:0x60 scope:local +fn_1_8EF8 = .text:0x00008EF8; // type:function size:0x40 scope:local +fn_1_8F38 = .text:0x00008F38; // type:function size:0x77C scope:local +fn_1_96B4 = .text:0x000096B4; // type:function size:0x9C scope:local +fn_1_9750 = .text:0x00009750; // type:function size:0x344 scope:local +fn_1_9A94 = .text:0x00009A94; // type:function size:0x7C scope:local +fn_1_9B10 = .text:0x00009B10; // type:function size:0x8A0 scope:local +fn_1_A3B0 = .text:0x0000A3B0; // type:function size:0x9C scope:local fn_1_A44C = .text:0x0000A44C; // type:function size:0x260 fn_1_A6AC = .text:0x0000A6AC; // type:function size:0x40 fn_1_A6EC = .text:0x0000A6EC; // type:function size:0x18 fn_1_A704 = .text:0x0000A704; // type:function size:0x18 fn_1_A71C = .text:0x0000A71C; // type:function size:0x54 -fn_1_A770 = .text:0x0000A770; // type:function size:0x40 +fn_1_A770 = .text:0x0000A770; // type:function size:0x40 scope:local fn_1_A7B0 = .text:0x0000A7B0; // type:function size:0x40 fn_1_A7F0 = .text:0x0000A7F0; // type:function size:0x38 fn_1_A828 = .text:0x0000A828; // type:function size:0x38 -fn_1_A860 = .text:0x0000A860; // type:function size:0x20 +fn_1_A860 = .text:0x0000A860; // type:function size:0x20 scope:local fn_1_A880 = .text:0x0000A880; // type:function size:0x24 -fn_1_A8A4 = .text:0x0000A8A4; // type:function size:0x108 +fn_1_A8A4 = .text:0x0000A8A4; // type:function size:0x108 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0xC data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x38 -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8C0 -lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x30 -lbl_1_rodata_AD0 = .rodata:0x00000AD0; // type:object size:0x780 -lbl_1_rodata_1250 = .rodata:0x00001250; // type:object size:0x4 data:float -lbl_1_rodata_1254 = .rodata:0x00001254; // type:object size:0x4 data:float -lbl_1_rodata_1258 = .rodata:0x00001258; // type:object size:0x4 data:float -lbl_1_rodata_125C = .rodata:0x0000125C; // type:object size:0x4 data:float -lbl_1_rodata_1260 = .rodata:0x00001260; // type:object size:0x4 data:float -lbl_1_rodata_1264 = .rodata:0x00001264; // type:object size:0x4 data:float -lbl_1_rodata_1268 = .rodata:0x00001268; // type:object size:0x4 data:float -lbl_1_rodata_1270 = .rodata:0x00001270; // type:object size:0x8 data:double -lbl_1_rodata_1278 = .rodata:0x00001278; // type:object size:0x8 -lbl_1_rodata_1280 = .rodata:0x00001280; // type:object size:0x8 -lbl_1_rodata_1288 = .rodata:0x00001288; // type:object size:0x8 -lbl_1_rodata_1290 = .rodata:0x00001290; // type:object size:0x4 data:float -lbl_1_rodata_1294 = .rodata:0x00001294; // type:object size:0x4 data:float -lbl_1_rodata_1298 = .rodata:0x00001298; // type:object size:0x4 data:float -lbl_1_rodata_129C = .rodata:0x0000129C; // type:object size:0x4 data:float -lbl_1_rodata_12A0 = .rodata:0x000012A0; // type:object size:0x4 data:float -lbl_1_rodata_12A4 = .rodata:0x000012A4; // type:object size:0x4 data:float -lbl_1_rodata_12A8 = .rodata:0x000012A8; // type:object size:0x4 data:float -lbl_1_rodata_12AC = .rodata:0x000012AC; // type:object size:0x4 data:float -lbl_1_rodata_12B0 = .rodata:0x000012B0; // type:object size:0x4 data:float -lbl_1_rodata_12B4 = .rodata:0x000012B4; // type:object size:0x4 data:float -lbl_1_rodata_12B8 = .rodata:0x000012B8; // type:object size:0x4 data:float -lbl_1_rodata_12BC = .rodata:0x000012BC; // type:object size:0x4 data:float -lbl_1_rodata_12C0 = .rodata:0x000012C0; // type:object size:0x4 data:float -lbl_1_rodata_12C4 = .rodata:0x000012C4; // type:object size:0x4 data:float -lbl_1_rodata_12C8 = .rodata:0x000012C8; // type:object size:0x4 data:float -lbl_1_rodata_12CC = .rodata:0x000012CC; // type:object size:0x4 data:float -lbl_1_rodata_12D0 = .rodata:0x000012D0; // type:object size:0x24 -lbl_1_rodata_12F4 = .rodata:0x000012F4; // type:object size:0x4 data:float -lbl_1_rodata_12F8 = .rodata:0x000012F8; // type:object size:0x4 data:float -lbl_1_rodata_12FC = .rodata:0x000012FC; // type:object size:0x4 data:float -lbl_1_rodata_1300 = .rodata:0x00001300; // type:object size:0x4 data:float -lbl_1_rodata_1304 = .rodata:0x00001304; // type:object size:0x4 data:float -lbl_1_rodata_1308 = .rodata:0x00001308; // type:object size:0x1C -lbl_1_rodata_1324 = .rodata:0x00001324; // type:object size:0x4 data:float -lbl_1_rodata_1328 = .rodata:0x00001328; // type:object size:0x4 data:float -lbl_1_rodata_132C = .rodata:0x0000132C; // type:object size:0x4 data:float -lbl_1_rodata_1330 = .rodata:0x00001330; // type:object size:0x14 -lbl_1_rodata_1344 = .rodata:0x00001344; // type:object size:0x4 data:float -lbl_1_rodata_1348 = .rodata:0x00001348; // type:object size:0x4 data:float -lbl_1_rodata_134C = .rodata:0x0000134C; // type:object size:0x4 -lbl_1_rodata_1350 = .rodata:0x00001350; // type:object size:0x8 -lbl_1_rodata_1358 = .rodata:0x00001358; // type:object size:0x8 data:double -lbl_1_rodata_1360 = .rodata:0x00001360; // type:object size:0x8 data:double -lbl_1_rodata_1368 = .rodata:0x00001368; // type:object size:0x4 data:float -lbl_1_rodata_136C = .rodata:0x0000136C; // type:object size:0x4 data:float -lbl_1_rodata_1370 = .rodata:0x00001370; // type:object size:0x8 data:double -lbl_1_rodata_1378 = .rodata:0x00001378; // type:object size:0x8 data:double -lbl_1_rodata_1380 = .rodata:0x00001380; // type:object size:0x4 data:float -lbl_1_rodata_1384 = .rodata:0x00001384; // type:object size:0x4 data:float -lbl_1_rodata_1388 = .rodata:0x00001388; // type:object size:0x8 data:double -lbl_1_rodata_1390 = .rodata:0x00001390; // type:object size:0x4 data:float -lbl_1_rodata_1394 = .rodata:0x00001394; // type:object size:0x4 data:float -lbl_1_rodata_1398 = .rodata:0x00001398; // type:object size:0x4 data:float -lbl_1_rodata_139C = .rodata:0x0000139C; // type:object size:0x4 data:float -lbl_1_rodata_13A0 = .rodata:0x000013A0; // type:object size:0x8 data:double -lbl_1_rodata_13A8 = .rodata:0x000013A8; // type:object size:0x8 data:double -lbl_1_rodata_13B0 = .rodata:0x000013B0; // type:object size:0x4 data:float -lbl_1_rodata_13B4 = .rodata:0x000013B4; // type:object size:0x4 data:float -lbl_1_rodata_13B8 = .rodata:0x000013B8; // type:object size:0x8 data:float -lbl_1_rodata_13C0 = .rodata:0x000013C0; // type:object size:0x18 -lbl_1_rodata_13D8 = .rodata:0x000013D8; // type:object size:0x4 data:float -lbl_1_rodata_13DC = .rodata:0x000013DC; // type:object size:0x4 data:float -lbl_1_rodata_13E0 = .rodata:0x000013E0; // type:object size:0x4 data:float -lbl_1_rodata_13E4 = .rodata:0x000013E4; // type:object size:0x4 data:float -lbl_1_rodata_13E8 = .rodata:0x000013E8; // type:object size:0x4 data:float -lbl_1_rodata_13EC = .rodata:0x000013EC; // type:object size:0x4 data:float -lbl_1_rodata_13F0 = .rodata:0x000013F0; // type:object size:0x4 data:float -lbl_1_rodata_13F4 = .rodata:0x000013F4; // type:object size:0x4 data:float -lbl_1_rodata_13F8 = .rodata:0x000013F8; // type:object size:0x8 data:double -lbl_1_rodata_1400 = .rodata:0x00001400; // type:object size:0x8 data:double -lbl_1_rodata_1408 = .rodata:0x00001408; // type:object size:0x4 data:float -lbl_1_rodata_140C = .rodata:0x0000140C; // type:object size:0x4 data:float -lbl_1_rodata_1410 = .rodata:0x00001410; // type:object size:0x4 data:float -lbl_1_rodata_1414 = .rodata:0x00001414; // type:object size:0x4 data:float -lbl_1_rodata_1418 = .rodata:0x00001418; // type:object size:0x4 data:float -lbl_1_rodata_1420 = .rodata:0x00001420; // type:object size:0x8 data:double -lbl_1_rodata_1428 = .rodata:0x00001428; // type:object size:0x4 data:float -lbl_1_rodata_142C = .rodata:0x0000142C; // type:object size:0x4 data:float -lbl_1_rodata_1430 = .rodata:0x00001430; // type:object size:0x4 data:float -lbl_1_rodata_1434 = .rodata:0x00001434; // type:object size:0x4 data:float -lbl_1_rodata_1438 = .rodata:0x00001438; // type:object size:0x4 data:float -lbl_1_rodata_143C = .rodata:0x0000143C; // type:object size:0x264 -lbl_1_rodata_16A0 = .rodata:0x000016A0; // type:object size:0x4 data:float -lbl_1_rodata_16A4 = .rodata:0x000016A4; // type:object size:0x4 data:float -lbl_1_rodata_16A8 = .rodata:0x000016A8; // type:object size:0x4 data:float -lbl_1_rodata_16AC = .rodata:0x000016AC; // type:object size:0x4 data:float -lbl_1_rodata_16B0 = .rodata:0x000016B0; // type:object size:0x4 data:float -lbl_1_rodata_16B4 = .rodata:0x000016B4; // type:object size:0x4 data:float -lbl_1_rodata_16B8 = .rodata:0x000016B8; // type:object size:0x4 data:float -lbl_1_rodata_16BC = .rodata:0x000016BC; // type:object size:0x4 data:float -lbl_1_rodata_16C0 = .rodata:0x000016C0; // type:object size:0x4 data:float -lbl_1_rodata_16C4 = .rodata:0x000016C4; // type:object size:0x4 data:float -lbl_1_rodata_16C8 = .rodata:0x000016C8; // type:object size:0x4 data:float -lbl_1_rodata_16CC = .rodata:0x000016CC; // type:object size:0x4 data:float -lbl_1_rodata_16D0 = .rodata:0x000016D0; // type:object size:0x4 data:float -lbl_1_rodata_16D4 = .rodata:0x000016D4; // type:object size:0x4 data:float -lbl_1_rodata_16D8 = .rodata:0x000016D8; // type:object size:0x4 data:float -lbl_1_rodata_16DC = .rodata:0x000016DC; // type:object size:0x4 data:float -lbl_1_rodata_16E0 = .rodata:0x000016E0; // type:object size:0x4 data:float -lbl_1_rodata_16E4 = .rodata:0x000016E4; // type:object size:0x4 data:float -lbl_1_rodata_16E8 = .rodata:0x000016E8; // type:object size:0x4 data:float -lbl_1_rodata_16EC = .rodata:0x000016EC; // type:object size:0x4 data:float -lbl_1_rodata_16F0 = .rodata:0x000016F0; // type:object size:0x4 data:float -lbl_1_rodata_16F4 = .rodata:0x000016F4; // type:object size:0x4 data:float -lbl_1_rodata_16F8 = .rodata:0x000016F8; // type:object size:0xD4 -lbl_1_rodata_17CC = .rodata:0x000017CC; // type:object size:0x4 data:float -lbl_1_rodata_17D0 = .rodata:0x000017D0; // type:object size:0x4 data:float -lbl_1_rodata_17D4 = .rodata:0x000017D4; // type:object size:0x4 data:float -lbl_1_rodata_17D8 = .rodata:0x000017D8; // type:object size:0x4 data:float -lbl_1_rodata_17DC = .rodata:0x000017DC; // type:object size:0x4 data:float -lbl_1_rodata_17E0 = .rodata:0x000017E0; // type:object size:0x4 data:float -lbl_1_rodata_17E4 = .rodata:0x000017E4; // type:object size:0x4 data:float -lbl_1_rodata_17E8 = .rodata:0x000017E8; // type:object size:0x84 -lbl_1_rodata_186C = .rodata:0x0000186C; // type:object size:0x48 -lbl_1_rodata_18B4 = .rodata:0x000018B4; // type:object size:0x4 data:float -lbl_1_rodata_18B8 = .rodata:0x000018B8; // type:object size:0x4 data:float -lbl_1_rodata_18BC = .rodata:0x000018BC; // type:object size:0x4 data:float -lbl_1_rodata_18C0 = .rodata:0x000018C0; // type:object size:0x4 data:float -lbl_1_rodata_18C4 = .rodata:0x000018C4; // type:object size:0x4 data:float -lbl_1_rodata_18C8 = .rodata:0x000018C8; // type:object size:0x108 -lbl_1_rodata_19D0 = .rodata:0x000019D0; // type:object size:0x4 data:float -lbl_1_rodata_19D4 = .rodata:0x000019D4; // type:object size:0x4 data:float -lbl_1_rodata_19D8 = .rodata:0x000019D8; // type:object size:0x4 data:float -lbl_1_rodata_19DC = .rodata:0x000019DC; // type:object size:0x4 data:float -lbl_1_rodata_19E0 = .rodata:0x000019E0; // type:object size:0x4 data:float -lbl_1_rodata_19E4 = .rodata:0x000019E4; // type:object size:0x4 data:float -lbl_1_rodata_19E8 = .rodata:0x000019E8; // type:object size:0x4 data:float -lbl_1_rodata_19EC = .rodata:0x000019EC; // type:object size:0x4 data:float -lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1B data:string -lbl_1_data_37 = .data:0x00000037; // type:object size:0x1B data:string -lbl_1_data_52 = .data:0x00000052; // type:object size:0x16 data:string -lbl_1_data_68 = .data:0x00000068; // type:object size:0x8 data:4byte +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0xC scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x38 scope:local +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8C0 scope:local +lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x30 scope:local +lbl_1_rodata_AD0 = .rodata:0x00000AD0; // type:object size:0x780 scope:local +lbl_1_rodata_1250 = .rodata:0x00001250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1254 = .rodata:0x00001254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1258 = .rodata:0x00001258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_125C = .rodata:0x0000125C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1260 = .rodata:0x00001260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1264 = .rodata:0x00001264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1268 = .rodata:0x00001268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1270 = .rodata:0x00001270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1278 = .rodata:0x00001278; // type:object size:0x8 scope:local +lbl_1_rodata_1280 = .rodata:0x00001280; // type:object size:0x8 scope:local +lbl_1_rodata_1288 = .rodata:0x00001288; // type:object size:0x8 scope:local +lbl_1_rodata_1290 = .rodata:0x00001290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1294 = .rodata:0x00001294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1298 = .rodata:0x00001298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_129C = .rodata:0x0000129C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A0 = .rodata:0x000012A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A4 = .rodata:0x000012A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12A8 = .rodata:0x000012A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12AC = .rodata:0x000012AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B0 = .rodata:0x000012B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B4 = .rodata:0x000012B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12B8 = .rodata:0x000012B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12BC = .rodata:0x000012BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C0 = .rodata:0x000012C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C4 = .rodata:0x000012C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C8 = .rodata:0x000012C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12CC = .rodata:0x000012CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12D0 = .rodata:0x000012D0; // type:object size:0x24 scope:local +lbl_1_rodata_12F4 = .rodata:0x000012F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12F8 = .rodata:0x000012F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12FC = .rodata:0x000012FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1300 = .rodata:0x00001300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1304 = .rodata:0x00001304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1308 = .rodata:0x00001308; // type:object size:0x1C scope:local +lbl_1_rodata_1324 = .rodata:0x00001324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1328 = .rodata:0x00001328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_132C = .rodata:0x0000132C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1330 = .rodata:0x00001330; // type:object size:0x14 scope:local +lbl_1_rodata_1344 = .rodata:0x00001344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1348 = .rodata:0x00001348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134C = .rodata:0x0000134C; // type:object size:0x4 scope:local +lbl_1_rodata_1350 = .rodata:0x00001350; // type:object size:0x8 scope:local +lbl_1_rodata_1358 = .rodata:0x00001358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1360 = .rodata:0x00001360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1368 = .rodata:0x00001368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_136C = .rodata:0x0000136C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1370 = .rodata:0x00001370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1378 = .rodata:0x00001378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1380 = .rodata:0x00001380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1384 = .rodata:0x00001384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1388 = .rodata:0x00001388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1390 = .rodata:0x00001390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1394 = .rodata:0x00001394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1398 = .rodata:0x00001398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_139C = .rodata:0x0000139C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13A0 = .rodata:0x000013A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_13A8 = .rodata:0x000013A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_13B0 = .rodata:0x000013B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13B4 = .rodata:0x000013B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13B8 = .rodata:0x000013B8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_13C0 = .rodata:0x000013C0; // type:object size:0x18 scope:local +lbl_1_rodata_13D8 = .rodata:0x000013D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13DC = .rodata:0x000013DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E0 = .rodata:0x000013E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E4 = .rodata:0x000013E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13E8 = .rodata:0x000013E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13EC = .rodata:0x000013EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F0 = .rodata:0x000013F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F4 = .rodata:0x000013F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13F8 = .rodata:0x000013F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1400 = .rodata:0x00001400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1408 = .rodata:0x00001408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140C = .rodata:0x0000140C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1410 = .rodata:0x00001410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1414 = .rodata:0x00001414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1418 = .rodata:0x00001418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1420 = .rodata:0x00001420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1428 = .rodata:0x00001428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_142C = .rodata:0x0000142C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1430 = .rodata:0x00001430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1434 = .rodata:0x00001434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1438 = .rodata:0x00001438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_143C = .rodata:0x0000143C; // type:object size:0x264 scope:local +lbl_1_rodata_16A0 = .rodata:0x000016A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16A4 = .rodata:0x000016A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16A8 = .rodata:0x000016A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16AC = .rodata:0x000016AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B0 = .rodata:0x000016B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B4 = .rodata:0x000016B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16B8 = .rodata:0x000016B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16BC = .rodata:0x000016BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C0 = .rodata:0x000016C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C4 = .rodata:0x000016C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C8 = .rodata:0x000016C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16CC = .rodata:0x000016CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D0 = .rodata:0x000016D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D4 = .rodata:0x000016D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16D8 = .rodata:0x000016D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16DC = .rodata:0x000016DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E0 = .rodata:0x000016E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E4 = .rodata:0x000016E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16E8 = .rodata:0x000016E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16EC = .rodata:0x000016EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16F0 = .rodata:0x000016F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16F4 = .rodata:0x000016F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16F8 = .rodata:0x000016F8; // type:object size:0xD4 scope:local +lbl_1_rodata_17CC = .rodata:0x000017CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D0 = .rodata:0x000017D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D4 = .rodata:0x000017D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17D8 = .rodata:0x000017D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17DC = .rodata:0x000017DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17E0 = .rodata:0x000017E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17E4 = .rodata:0x000017E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17E8 = .rodata:0x000017E8; // type:object size:0x84 scope:local +lbl_1_rodata_186C = .rodata:0x0000186C; // type:object size:0x48 scope:local +lbl_1_rodata_18B4 = .rodata:0x000018B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18B8 = .rodata:0x000018B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18BC = .rodata:0x000018BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C0 = .rodata:0x000018C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C4 = .rodata:0x000018C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C8 = .rodata:0x000018C8; // type:object size:0x108 scope:local +lbl_1_rodata_19D0 = .rodata:0x000019D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19D4 = .rodata:0x000019D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19D8 = .rodata:0x000019D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19DC = .rodata:0x000019DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19E0 = .rodata:0x000019E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19E4 = .rodata:0x000019E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19E8 = .rodata:0x000019E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19EC = .rodata:0x000019EC; // type:object size:0x4 scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1B scope:local data:string +lbl_1_data_37 = .data:0x00000037; // type:object size:0x1B scope:local data:string +lbl_1_data_52 = .data:0x00000052; // type:object size:0x16 scope:local data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x8 scope:local data:4byte jumptable_1_data_70 = .data:0x00000070; // type:object size:0x24 scope:local -lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 data:4byte -lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x1C -lbl_1_data_BC = .data:0x000000BC; // type:object size:0x24 +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:4byte +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x1C scope:local +lbl_1_data_BC = .data:0x000000BC; // type:object size:0x24 scope:local jumptable_1_data_E0 = .data:0x000000E0; // type:object size:0x24 scope:local -lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 data:4byte -lbl_1_data_110 = .data:0x00000110; // type:object size:0x8 -lbl_1_data_118 = .data:0x00000118; // type:object size:0x38 data:4byte -lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 data:4byte -lbl_1_data_168 = .data:0x00000168; // type:object size:0xC +lbl_1_data_108 = .data:0x00000108; // type:object size:0x8 scope:local data:4byte +lbl_1_data_110 = .data:0x00000110; // type:object size:0x8 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x38 scope:local data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 scope:local data:4byte +lbl_1_data_168 = .data:0x00000168; // type:object size:0xC scope:local jumptable_1_data_174 = .data:0x00000174; // type:object size:0x24 scope:local jumptable_1_data_198 = .data:0x00000198; // type:object size:0x24 scope:local -lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4C -lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 -lbl_1_data_210 = .data:0x00000210; // type:object size:0x8 data:4byte +lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4C scope:local +lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 scope:local +lbl_1_data_210 = .data:0x00000210; // type:object size:0x8 scope:local data:4byte jumptable_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local jumptable_1_data_234 = .data:0x00000234; // type:object size:0x20 scope:local -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte diff --git a/configure.py b/configure.py index 8fab5fe5..c6aa359f 100644 --- a/configure.py +++ b/configure.py @@ -1029,15 +1029,15 @@ config.libs = [ Rel('option', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/option/scene.c"), - Object(NonMatching, "REL/option/camera.c"), - Object(NonMatching, "REL/option/room.c"), - Object(NonMatching, "REL/option/guide.c"), - Object(NonMatching, "REL/option/state.c"), - Object(NonMatching, "REL/option/rumble.c"), - Object(NonMatching, "REL/option/sound.c"), - Object(NonMatching, "REL/option/record.c"), - Object(NonMatching, "REL/option/window.c"), + Object(Matching, "REL/option/scene.c"), + Object(Matching, "REL/option/camera.c"), + Object(Matching, "REL/option/room.c"), + Object(Matching, "REL/option/guide.c"), + Object(Matching, "REL/option/state.c"), + Object(Matching, "REL/option/rumble.c"), + Object(Matching, "REL/option/sound.c"), + Object(Matching, "REL/option/record.c"), + Object(Matching, "REL/option/window.c"), } ), Rel('present', diff --git a/include/REL/option.h b/include/REL/option.h new file mode 100755 index 00000000..e8ff30b5 --- /dev/null +++ b/include/REL/option.h @@ -0,0 +1,80 @@ +#include "game/object.h" + +#include "dolphin/types.h" + +typedef struct { + /* 0x00 */ Process *unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ u32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} UnkWindowDataStruct; // Size 0x24 + +void fn_1_160(s16 arg0, s32 arg1, s32 arg2); +s32 fn_1_550(u16 arg0); +s32 fn_1_584(u16 arg0); +s32 fn_1_5B8(u16 arg0); + +omObjData *fn_1_7F8(void); +void fn_1_A3C(omObjData *arg0); +void fn_1_A6C(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4); +void fn_1_AF0(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4); +void fn_1_B74(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4); +float fn_1_BF8(omObjData *arg0); +float fn_1_C28(omObjData *arg0); +void fn_1_C88(omObjData *arg0, float *arg1, float *arg2, float *arg3); +s32 fn_1_CB8(omObjData *arg0); + +omObjData *fn_1_15A4(void); +void fn_1_1798(omObjData *arg0); +void fn_1_1A2C(omObjData *arg0, s32 arg1); +s32 fn_1_1A70(omObjData *arg0); + +omObjData *fn_1_21F8(void); +void fn_1_241C(omObjData *arg0); +void fn_1_2508(omObjData *arg0, float arg1, float arg2, s32 arg3); + +omObjData *fn_1_2E04(void); +void fn_1_2F4C(omObjData *arg0); + +omObjData *fn_1_3158(void); +void fn_1_322C(omObjData *arg0); +void fn_1_3290(omObjData *arg0, s32 arg1); +s32 fn_1_32D4(omObjData *arg0); +void fn_1_3D54(omObjData *arg0); +void fn_1_3E1C(omObjData *arg0); +s32 fn_1_3ED0(omObjData *arg0); + +omObjData *fn_1_4028(void); +void fn_1_42DC(omObjData *arg0); +void fn_1_4388(omObjData *arg0, s32 arg1); +s32 fn_1_43CC(omObjData *arg0); + +omObjData *fn_1_80E4(void); +void fn_1_825C(omObjData *arg0); +void fn_1_82B0(omObjData *arg0, s32 arg1); +s32 fn_1_82F4(omObjData *arg0); + +UnkWindowDataStruct *fn_1_A44C(s32 arg0); +void fn_1_A6AC(UnkWindowDataStruct *arg0); +void fn_1_A6EC(UnkWindowDataStruct *arg0); +void fn_1_A704(UnkWindowDataStruct *arg0); +void fn_1_A71C(UnkWindowDataStruct *arg0, s32 arg1); +void fn_1_A7B0(UnkWindowDataStruct *arg0, float arg1, float arg2); +void fn_1_A7F0(UnkWindowDataStruct *arg0); +void fn_1_A828(UnkWindowDataStruct *arg0); +void fn_1_A880(UnkWindowDataStruct *arg0, s32 arg1); + +extern Process *lbl_1_bss_8; +extern omObjData *lbl_1_bss_10; +extern omObjData *lbl_1_bss_18; +extern omObjData *lbl_1_bss_20; +extern omObjData *lbl_1_bss_28; +extern omObjData *lbl_1_bss_30; +extern omObjData *lbl_1_bss_38; +extern omObjData *lbl_1_bss_40; diff --git a/src/REL/option/camera.c b/src/REL/option/camera.c new file mode 100755 index 00000000..a9d3d31d --- /dev/null +++ b/src/REL/option/camera.c @@ -0,0 +1,237 @@ +#include "REL/option.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ Vec unk0C; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ Vec unk2C; + /* 0x38 */ Vec unk38; + /* 0x44 */ char unk44[0xC]; + /* 0x50 */ float unk50; + /* 0x54 */ float unk54; + /* 0x58 */ Vec unk58; + /* 0x64 */ Vec unk64; + /* 0x70 */ char unk70[0xC]; + /* 0x7C */ float unk7C; + /* 0x80 */ float unk80; + /* 0x84 */ float unk84; + /* 0x88 */ float unk88; + /* 0x8C */ float unk8C; + /* 0x90 */ float unk90; + /* 0x94 */ float unk94; + /* 0x98 */ float unk98; +} UnkCameraDataStruct; // Size 0x9C + +static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3); +static void fn_1_D44(omObjData *arg0); +static void fn_1_D6C(omObjData *arg0); +static void fn_1_12E4(omObjData *arg0); +static void fn_1_14E4(omObjData *arg0); + +omObjData *lbl_1_bss_10; + +static float pad_04_00000000_data[] = { + 0.0f, 500.0f, 0.0f, + 0.0f, -1.0f, 0.0f +}; + +static s32 pad_04_00000018_data = -1; + +omObjData *fn_1_7F8(void) { + omObjData *var_r30; + UnkCameraDataStruct *temp_r31; + + var_r30 = omAddObjEx(lbl_1_bss_8, 1001, 0, 0, 3, fn_1_D44); + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkCameraDataStruct), MEMORY_DEFAULT_NUM); + var_r30->data = temp_r31; + temp_r31->unk00.x = 0.0f; + temp_r31->unk00.y = 0.0f; + temp_r31->unk00.z = 0.0f; + temp_r31->unk0C.x = 0.0f; + temp_r31->unk0C.y = 0.0f; + temp_r31->unk0C.z = 0.0f; + temp_r31->unk18 = 0.0f; + temp_r31->unk1C = 1.0f; + temp_r31->unk20 = 0.0f; + temp_r31->unk24 = 0.0f; + temp_r31->unk28 = 0.0f; + temp_r31->unk8C = 1.0f; + temp_r31->unk84 = 1.0f; + temp_r31->unk94 = 1.0f; + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f); + fn_1_B74(var_r30, 600.0f, 60.0f, 120.0f, 1); + fn_1_A6C(var_r30, 180.0f, 120.0f, 0.0f, 1); + return var_r30; +} + +void fn_1_A3C(omObjData *arg0) { + HuMemDirectFree(arg0->data); +} + +void fn_1_A6C(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + temp_r31->unk58.x = arg1; + temp_r31->unk58.y = arg2; + temp_r31->unk58.z = arg3; + temp_r31->unk2C = temp_r31->unk00; + temp_r31->unk84 = 0.0f; + temp_r31->unk88 = 1.0f / arg4; +} + +void fn_1_AF0(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + temp_r31->unk64.x = arg1; + temp_r31->unk64.y = arg2; + temp_r31->unk64.z = arg3; + temp_r31->unk38 = temp_r31->unk0C; + temp_r31->unk8C = 0.0f; + temp_r31->unk90 = 1.0f / arg4; +} + +void fn_1_B74(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + temp_r31->unk64.y = arg3; + temp_r31->unk7C = arg1; + temp_r31->unk80 = arg2; + temp_r31->unk38.y = temp_r31->unk0C.y; + temp_r31->unk50 = temp_r31->unk24; + temp_r31->unk54 = temp_r31->unk28; + temp_r31->unk94 = 0.0f; + temp_r31->unk98 = 1.0f / arg4; +} + +float fn_1_BF8(omObjData *arg0) { + UnkCameraDataStruct *temp_r31 = arg0->data; + float temp_f31; + + temp_f31 = temp_r31->unk24; + return temp_f31; +} + +float fn_1_C28(omObjData *arg0) { + UnkCameraDataStruct *temp_r31 = arg0->data; + float temp_f31; + + temp_f31 = temp_r31->unk28; + return temp_f31; +} + +static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + *arg1 = temp_r31->unk00.x; + *arg2 = temp_r31->unk00.y; + *arg3 = temp_r31->unk00.z; +} + +void fn_1_C88(omObjData *arg0, float *arg1, float *arg2, float *arg3) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + *arg1 = temp_r31->unk0C.x; + *arg2 = temp_r31->unk0C.y; + *arg3 = temp_r31->unk0C.z; +} + +s32 fn_1_CB8(omObjData *arg0) { + UnkCameraDataStruct *temp_r31 = arg0->data; + s32 var_r30 = 1; + s32 var_r29 = 1; + + if (!(temp_r31->unk8C < 1.0f) && !(temp_r31->unk94 < 1.0f)) { + var_r29 = 0; + } + if (var_r29 == 0 && !(temp_r31->unk84 < 1.0f)) { + var_r30 = 0; + } + return var_r30; +} + +static void fn_1_D44(omObjData *arg0) { + fn_1_D6C(arg0); +} + +static void fn_1_D6C(omObjData *arg0) { + UnkCameraDataStruct *temp_r31 = arg0->data; + float temp_f28; + float temp_f31; + float temp_f30; + + if (temp_r31->unk84 < 1.0f) { + temp_f28 = sin(90.0f * temp_r31->unk84 * M_PI / 180.0); + temp_r31->unk00.x = temp_r31->unk2C.x + temp_f28 * (temp_r31->unk58.x - temp_r31->unk2C.x); + temp_r31->unk00.y = temp_r31->unk2C.y + temp_f28 * (temp_r31->unk58.y - temp_r31->unk2C.y); + temp_r31->unk00.z = temp_r31->unk2C.z + temp_f28 * (temp_r31->unk58.z - temp_r31->unk2C.z); + if ((temp_r31->unk84 += temp_r31->unk88) >= 1.0f) { + temp_r31->unk00 = temp_r31->unk58; + } + } + if (temp_r31->unk8C < 1.0f) { + temp_f28 = sin(90.0f * temp_r31->unk8C * M_PI / 180.0); + temp_r31->unk0C.x = temp_r31->unk38.x + temp_f28 * (temp_r31->unk64.x - temp_r31->unk38.x); + temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y); + temp_r31->unk0C.z = temp_r31->unk38.z + temp_f28 * (temp_r31->unk64.z - temp_r31->unk38.z); + if ((temp_r31->unk8C += temp_r31->unk90) >= 1.0f) { + temp_r31->unk0C = temp_r31->unk64; + } + } + if (temp_r31->unk94 < 1.0f) { + temp_f28 = sin(90.0f * temp_r31->unk94 * M_PI / 180.0); + temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y); + temp_r31->unk24 = temp_r31->unk50 + temp_f28 * (temp_r31->unk7C - temp_r31->unk50); + temp_r31->unk28 = temp_r31->unk54 + temp_f28 * (temp_r31->unk80 - temp_r31->unk54); + if ((temp_r31->unk94 += temp_r31->unk98) >= 1.0f) { + temp_r31->unk0C.y = temp_r31->unk64.y; + temp_r31->unk24 = temp_r31->unk7C; + temp_r31->unk28 = temp_r31->unk80; + } + temp_r31->unk0C.x = temp_r31->unk24 * -sin(temp_r31->unk28 * M_PI / 180.0); + temp_r31->unk0C.z = temp_r31->unk24 * cos(temp_r31->unk28 * M_PI / 180.0); + } + temp_f31 = temp_r31->unk0C.x - temp_r31->unk00.x; + temp_f30 = temp_r31->unk0C.z - temp_r31->unk00.z; + temp_r31->unk24 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + temp_r31->unk28 = fmod(-(180.0 * (atan2(temp_f31, temp_f30) / M_PI)), 360.0); + if (temp_r31->unk28 < 0.0f) { + temp_r31->unk28 += 360.0f; + } + Hu3DCameraPosSet(1, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z, temp_r31->unk18, temp_r31->unk1C, temp_r31->unk20, temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z); +} + +static void fn_1_12E4(omObjData *arg0) { + UnkCameraDataStruct *temp_r31; + + if (HuPadBtn[0] & 0xF) { + temp_r31 = arg0->data; + temp_r31->unk0C.x += 0.5f * HuPadStkX[0]; + temp_r31->unk0C.y += 0.5f * HuPadStkY[0]; + temp_r31->unk00.z += 0.5f * HuPadTrigL[0]; + temp_r31->unk00.z -= 0.5f * HuPadTrigR[0]; + temp_r31->unk00.x += 0.5f * HuPadSubStkY[0]; + temp_r31->unk00.y += 0.5f * HuPadSubStkX[0]; + } +} + +static void fn_1_14E4(omObjData *arg0) { + UnkCameraDataStruct *temp_r31 = arg0->data; + + print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z); + print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); + print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", temp_r31->unk24, temp_r31->unk28); +} diff --git a/src/REL/option/guide.c b/src/REL/option/guide.c new file mode 100755 index 00000000..4a8d1639 --- /dev/null +++ b/src/REL/option/guide.c @@ -0,0 +1,230 @@ +#include "REL/option.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; + /* 0x08 */ Vec unk08; + /* 0x14 */ Vec unk14; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ char unk48[0xC]; + /* 0x54 */ float unk54; + /* 0x58 */ float unk58; + /* 0x5C */ s32 unk5C; + /* 0x60 */ s32 unk60; +} UnkGuideDataStruct; // Size 0x64 + +static void fn_1_24A8(omObjData *arg0, s32 arg1); +static s32 fn_1_24EC(omObjData *arg0); +static void fn_1_25AC(omObjData *arg0); +static void fn_1_2A18(omObjData *arg0); +static float fn_1_2D00(float arg0, float arg1, float arg2); + +omObjData *lbl_1_bss_20; + +static const s32 lbl_1_rodata_E0[] = { + DATA_MAKE_NUM(DATADIR_OPTION, 16), + DATA_MAKE_NUM(DATADIR_OPTION, 17), + DATA_MAKE_NUM(DATADIR_OPTION, 18) +}; + +static omObjFunc lbl_1_data_98[] = { + NULL, + fn_1_25AC +}; + +omObjData *fn_1_21F8(void) { + omObjData *var_r31; + UnkGuideDataStruct *temp_r30; + s32 i; + + var_r31 = omAddObjEx(lbl_1_bss_8, 1002, 1, 3, 2, NULL); + temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkGuideDataStruct), MEMORY_DEFAULT_NUM); + var_r31->data = temp_r30; + temp_r30->unk08.x = -298.59f; + temp_r30->unk08.z = 298.21f; + temp_r30->unk08.y = 0.0f; + temp_r30->unk20 = 0.0f; + temp_r30->unk24 = 134.42f; + temp_r30->unk28 = 0.0f; + temp_r30->unk2C = 0.0f; + temp_r30->unk34 = 0.0f; + temp_r30->unk30 = 0.0f; + var_r31->model[0] = Hu3DModelCreateFile(0x69000C); + Hu3DModelLayerSet(var_r31->model[0], 1); + for (i = 0; i < 3; i++) { + var_r31->motion[i] = Hu3DJointMotion(var_r31->model[0], HuDataSelHeapReadNum(lbl_1_rodata_E0[i], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + temp_r30->unk5C = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[2], 1, 0xC); + temp_r30->unk60 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[1], 0, 0xC); + CharModelLayerSetAll(1); + Hu3DModelShadowSet(var_r31->model[0]); + Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[0], 0.0f, 8.0f, 0x40000001); + fn_1_24A8(var_r31, 0); + fn_1_2A18(var_r31); + return var_r31; +} + +void fn_1_241C(omObjData *arg0) { + UnkGuideDataStruct *temp_r29 = arg0->data; + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } + for (i = 0; i < 3; i++) { + Hu3DMotionKill(arg0->motion[i]); + } + HuMemDirectFree(temp_r29); +} + +static void fn_1_24A8(omObjData *arg0, s32 arg1) { + UnkGuideDataStruct *temp_r31 = arg0->data; + + temp_r31->unk00 = arg1; + arg0->func = lbl_1_data_98[arg1]; + arg0->unk10 = 0; + arg0->unk10 = 0; +} + +static s32 fn_1_24EC(omObjData *arg0) { + UnkGuideDataStruct *temp_r31 = arg0->data; + + return temp_r31->unk00; +} + +void fn_1_2508(omObjData *arg0, float arg1, float arg2, s32 arg3) { + UnkGuideDataStruct *temp_r31 = arg0->data; + + temp_r31->unk40 = arg1; + temp_r31->unk44 = arg2; + temp_r31->unk54 = 0.0f; + temp_r31->unk58 = 1.0f / arg3; + temp_r31->unk04 = 0; + fn_1_24A8(arg0, 1); +} + +static void fn_1_25AC(omObjData *arg0) { + UnkGuideDataStruct *temp_r31 = arg0->data; + float var_f31; + float var_f30; + + switch (arg0->unk10) { + case 0: + temp_r31->unk3C = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0); + if (temp_r31->unk3C < 0.0f) { + temp_r31->unk3C += 360.0f; + } + arg0->unk10 = 1; + /* fallthrough */ + case 1: + var_f30 = sin(90.0f * temp_r31->unk54 * M_PI / 180.0); + var_f31 = temp_r31->unk3C + var_f30 * (temp_r31->unk40 - temp_r31->unk3C); + temp_r31->unk14.x = temp_r31->unk44 * -sin(var_f31 * M_PI / 180.0); + temp_r31->unk14.z = temp_r31->unk44 * cos(var_f31 * M_PI / 180.0); + temp_r31->unk14.y = 0.0f; + temp_r31->unk2C = temp_r31->unk14.x - temp_r31->unk08.x; + temp_r31->unk34 = temp_r31->unk14.z - temp_r31->unk08.z; + if (temp_r31->unk54 <= 0.0f) { + temp_r31->unk2C = 0.0f; + temp_r31->unk34 = 0.0f; + temp_r31->unk08 = temp_r31->unk14; + } + if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) { + break; + } + var_f31 = fmod(-(180.0 * (atan2(temp_r31->unk08.x, temp_r31->unk08.z) / M_PI)), 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + temp_r31->unk14.x = 422.0 * -sin(var_f31 * M_PI / 180.0); + temp_r31->unk14.z = 422.0 * cos(var_f31 * M_PI / 180.0); + temp_r31->unk2C = (temp_r31->unk14.x - temp_r31->unk08.x) / 10.0f; + temp_r31->unk34 = (temp_r31->unk14.z - temp_r31->unk08.z) / 10.0f; + temp_r31->unk58 = 0.1f; + temp_r31->unk54 = 0.0f; + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if ((temp_r31->unk54 += temp_r31->unk58) < 1.0f) { + break; + } + arg0->unk10 = 3; + /* fallthrough */ + case 3: + temp_r31->unk08 = temp_r31->unk14; + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + temp_r31->unk34 = 0.0f; + fn_1_2A18(arg0); + fn_1_24A8(arg0, 0); + break; + } + fn_1_2A18(arg0); +} + +static void fn_1_2A18(omObjData *arg0) { + UnkGuideDataStruct *temp_r31 = arg0->data; + s16 var_r29; + + var_r29 = 0; + temp_r31->unk38 = sqrtf(temp_r31->unk2C * temp_r31->unk2C + temp_r31->unk34 * temp_r31->unk34); + if (0.001f <= temp_r31->unk38) { + if (14.0f <= temp_r31->unk38) { + temp_r31->unk2C /= temp_r31->unk38; + temp_r31->unk34 /= temp_r31->unk38; + temp_r31->unk38 = 14.0f; + temp_r31->unk2C = 14.0f * temp_r31->unk2C; + temp_r31->unk34 = 14.0f * temp_r31->unk34; + } + temp_r31->unk24 = fn_1_2D00(temp_r31->unk24, 180.0 * (atan2(temp_r31->unk2C, temp_r31->unk34) / M_PI), 0.4f); + if (8.0f <= temp_r31->unk38) { + var_r29 = 2; + } else { + var_r29 = 1; + } + } + temp_r31->unk08.x += temp_r31->unk2C; + temp_r31->unk08.z += temp_r31->unk34; + if (temp_r31->unk04 != var_r29) { + Hu3DMotionShiftSet(*arg0->model, arg0->motion[var_r29], 0.0f, 8.0f, 0x40000001); + temp_r31->unk04 = var_r29; + } + omSetTra(arg0, temp_r31->unk08.x, temp_r31->unk08.y, temp_r31->unk08.z); + omSetRot(arg0, temp_r31->unk20, temp_r31->unk24, temp_r31->unk28); +} + +static float fn_1_2D00(float arg0, float arg1, float arg2) { + float var_f30; + float var_f31; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} diff --git a/src/REL/option/record.c b/src/REL/option/record.c new file mode 100755 index 00000000..ed576f6a --- /dev/null +++ b/src/REL/option/record.c @@ -0,0 +1,794 @@ +#include "REL/option.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/window.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04[8]; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; +} UnkRecordDataStruct00; // Size 0x2C + +typedef struct { + /* 0x000 */ omObjData *unk00; + /* 0x004 */ omObjData *unk04; + /* 0x008 */ UnkWindowDataStruct *unk08[10]; + /* 0x030 */ s32 unk30; + /* 0x034 */ s16 unk34[153]; + /* 0x166 */ char unk166[6]; + /* 0x16C */ s32 unk16C; + /* 0x170 */ s32 unk170; + /* 0x174 */ s32 unk174; + /* 0x178 */ UnkRecordDataStruct00 unk178[6]; + /* 0x280 */ s32 unk280[6]; + /* 0x298 */ s32 unk298; + /* 0x29C */ s32 unk29C; +} UnkRecordDataStruct01; // Size 0x2A0 + +static void fn_1_8310(omObjData *arg0); +static omObjData *fn_1_8A88(void); +static void fn_1_8B58(omObjData *arg0); +static void fn_1_8BAC(omObjData *arg0, s32 arg1); +static omObjData *fn_1_8C84(void); +static void fn_1_8D80(omObjData *arg0); +static void fn_1_8DD4(omObjData *arg0); +static void fn_1_8E98(omObjData *arg0); +static s32 fn_1_8EF8(s32 arg0, s32 arg1); +static void fn_1_8F38(omObjData *arg0, s32 arg1); +static void fn_1_96B4(omObjData *arg0); +static void fn_1_9750(omObjData *arg0); +static void fn_1_9A94(omObjData *arg0); +static void fn_1_9B10(omObjData *arg0, s32 arg1); +static void fn_1_A3B0(omObjData *arg0); + +omObjData *lbl_1_bss_40; + +static const s32 lbl_1_rodata_13C0[] = { 0, 1, 2, 3, 5, 10 }; + +static omObjFunc lbl_1_data_210[] = { + NULL, + fn_1_8310 +}; + +omObjData *fn_1_80E4(void) { + omObjData *temp_r29; + UnkRecordDataStruct01 *temp_r3; + s32 i; + s32 j; + + temp_r29 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRecordDataStruct01), MEMORY_DEFAULT_NUM); + temp_r29->data = temp_r3; + for (i = 0; i < 6; i++) { + temp_r3->unk178[i].unk00 = GWBoardPlayCountGet(i); + temp_r3->unk178[i].unk28 = GWBoardMaxStarsGet(i); + temp_r3->unk178[i].unk24 = GWBoardMaxCoinsGet(i); + for (j = 0; j < 8; j++) { + temp_r3->unk178[i].unk04[j] = GWBoardWinCountGet(j, i); + } + } + for (i = 0; i < 6; i++) { + temp_r3->unk280[i] = GWMGRecordGet(lbl_1_rodata_13C0[i]); + } + temp_r3->unk170 = 0; + temp_r3->unk174 = 0; + temp_r3->unk16C = 0; + temp_r3->unk00 = fn_1_8A88(); + temp_r3->unk04 = fn_1_8C84(); + fn_1_8DD4(temp_r29); + fn_1_82B0(temp_r29, 0); + return temp_r29; +} + +void fn_1_825C(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + + fn_1_8B58(temp_r31->unk00); + fn_1_8D80(temp_r31->unk04); + fn_1_8E98(arg0); + HuMemDirectFree(temp_r31); +} + +void fn_1_82B0(omObjData *arg0, s32 arg1) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + + temp_r31->unk30 = arg1; + arg0->func = lbl_1_data_210[arg1]; + arg0->unk10 = 0; + arg0->unk10 = 0; +} + +s32 fn_1_82F4(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + + return temp_r31->unk30; +} + +static void fn_1_8310(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + Vec sp8; + s32 i; + + switch (arg0->unk10) { + case 0: + temp_r31->unk08[0] = fn_1_A44C(0); + temp_r31->unk08[1] = fn_1_A44C(1); + for (i = 0; i < 8; i++) { + temp_r31->unk08[i + 2] = fn_1_A44C(3); + } + fn_1_AF0(lbl_1_bss_10, 519.0f, 125.0f, 300.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, 308.98f, 125.0f, 178.74f, 0x28); + temp_r31->unk170 = 0; + temp_r31->unk174 = 0; + temp_r31->unk298 = 0; + arg0->unk10 = 1; + /* fallthrough */ + case 1: + if (fn_1_CB8(lbl_1_bss_10) != 0) { + break; + } + fn_1_3D54(lbl_1_bss_30); + espBankSet(temp_r31->unk34[47], 0); + espBankSet(temp_r31->unk34[48], 2); + espPosSet(temp_r31->unk34[47], 46.0f, 240.0f); + espPosSet(temp_r31->unk34[48], 494.0f, 240.0f); + if (temp_r31->unk16C == 0) { + fn_1_160(temp_r31->unk34[47], 1, 10); + fn_1_160(temp_r31->unk34[48], 1, 10); + temp_r31->unk29C = 0; + } + arg0->unk10 = 2; + /* fallthrough */ + case 2: + fn_1_96B4(arg0); + fn_1_A3B0(arg0); + fn_1_9A94(arg0); + switch (temp_r31->unk16C) { + case 0: + if (temp_r31->unk170 < 6) { + fn_1_8F38(arg0, temp_r31->unk170); + } else { + fn_1_9750(arg0); + } + fn_1_A6EC(temp_r31->unk08[0]); + fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 5)); + break; + case 1: + fn_1_9B10(arg0, temp_r31->unk174); + fn_1_A6EC(temp_r31->unk08[0]); + fn_1_A71C(temp_r31->unk08[0], MAKE_MESSID(47, 6)); + break; + } + fn_1_A6EC(temp_r31->unk08[1]); + fn_1_A71C(temp_r31->unk08[1], MAKE_MESSID(47, 169)); + if (temp_r31->unk298 == 0) { + Hu3DModelAttrReset(temp_r31->unk04->model[0], 1); + temp_r31->unk298 = 1; + } + sp8.x = 505.0 * -sin(305 * M_PI / 180.0); + sp8.z = 505.0 * cos(305 * M_PI / 180.0); + sp8.y = 144.0f - 14.0f * temp_r31->unk16C; + omSetTra(temp_r31->unk04, sp8.x, sp8.y, sp8.z); + arg0->unk10 = 3; + /* fallthrough */ + case 3: + if (temp_r31->unk29C > 0) { + temp_r31->unk29C--; + break; + } + espBankSet(temp_r31->unk34[47], 0); + espBankSet(temp_r31->unk34[48], 2); + arg0->unk10 = 4; + /* fallthrough */ + case 4: + if (temp_r31->unk08[1]->unk20 != 0) { + break; + } + if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + arg0->unk10 = 5; + } else if (fn_1_584(8) != 0 && temp_r31->unk16C == 1) { + temp_r31->unk16C = 0; + temp_r31->unk170 = 0; + fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C); + fn_1_160(temp_r31->unk34[47], 1, 5); + fn_1_160(temp_r31->unk34[48], 1, 5); + temp_r31->unk29C = 5; + HuAudFXPlay(0x83F); + arg0->unk10 = 2; + } else if (fn_1_584(4) != 0 && temp_r31->unk16C == 0) { + temp_r31->unk16C = 1; + temp_r31->unk174 = 0; + fn_1_8BAC(temp_r31->unk00, temp_r31->unk16C); + fn_1_160(temp_r31->unk34[47], 0, 5); + fn_1_160(temp_r31->unk34[48], 0, 5); + temp_r31->unk29C = 5; + HuAudFXPlay(0x83F); + arg0->unk10 = 2; + } else { + switch (temp_r31->unk16C) { + case 0: + if (fn_1_550(0x40) != 0) { + if (--temp_r31->unk170 < 0) { + temp_r31->unk170 = 6; + } + if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) { + temp_r31->unk170--; + } + HuAudFXPlay(0x840); + espBankSet(temp_r31->unk34[47], 1); + temp_r31->unk29C = 0xA; + arg0->unk10 = 2; + return; + } + if (fn_1_550(0x20) != 0) { + if (++temp_r31->unk170 >= 7) { + temp_r31->unk170 = 0; + } + if (GWGameStat.open_w06 == 0 && temp_r31->unk170 == 5) { + temp_r31->unk170++; + } + HuAudFXPlay(0x840); + espBankSet(temp_r31->unk34[48], 3); + temp_r31->unk29C = 0xA; + arg0->unk10 = 2; + } + break; + case 1: + break; + } + } + break; + case 5: + fn_1_3E1C(lbl_1_bss_30); + if (temp_r31->unk16C == 0) { + fn_1_160(temp_r31->unk34[47], 0, 10); + fn_1_160(temp_r31->unk34[48], 0, 10); + } + fn_1_A704(temp_r31->unk08[0]); + fn_1_A704(temp_r31->unk08[1]); + Hu3DModelAttrSet(temp_r31->unk04->model[0], 1); + arg0->unk10 = 6; + /* fallthrough */ + case 6: + if (temp_r31->unk08[1]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) { + for (i = 0; i < 10; i++) { + fn_1_A6AC(temp_r31->unk08[i]); + } + fn_1_96B4(arg0); + fn_1_A3B0(arg0); + fn_1_9A94(arg0); + fn_1_AF0(lbl_1_bss_10, 519.62f, 120.0f, 300.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28); + fn_1_82B0(arg0, 0); + } + break; + } +} + +static omObjData *fn_1_8A88(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x690001); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000002); + Hu3DModelLayerSet(temp_r31->model[0], 0); + Hu3DMotionStartEndSet(temp_r31->model[0], 0.0f, 6.0f); + Hu3DMotionTimeSet(temp_r31->model[0], 6.0f); + return temp_r31; +} + +static void fn_1_8B58(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static void fn_1_8BAC(omObjData *arg0, s32 arg1) { + s16 temp_r31 = arg0->model[0]; + + switch (arg1) { + case 0: + Hu3DMotionStartEndSet(temp_r31, 0.0f, 6.0f); + Hu3DMotionTimeSet(temp_r31, 0.0f); + break; + case 1: + Hu3DMotionStartEndSet(temp_r31, 6.0f, 12.0f); + Hu3DMotionTimeSet(temp_r31, 6.0f); + break; + } + Hu3DModelAttrReset(arg0->model[0], 0x40000002); +} + +static omObjData *fn_1_8C84(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000E); + Hu3DModelLayerSet(temp_r31->model[0], 2); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + omSetRot(temp_r31, 30.0f, 190.0f, 0.0f); + omSetSca(temp_r31, 0.6f, 0.6f, 0.6f); + Hu3DModelAttrSet(temp_r31->model[0], 1); + return temp_r31; +} + +static void fn_1_8D80(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static const s32 lbl_1_rodata_143C[153] = { + DATA_MAKE_NUM(DATADIR_OPTION, 55), + DATA_MAKE_NUM(DATADIR_OPTION, 56), + DATA_MAKE_NUM(DATADIR_OPTION, 57), + DATA_MAKE_NUM(DATADIR_OPTION, 58), + DATA_MAKE_NUM(DATADIR_OPTION, 59), + DATA_MAKE_NUM(DATADIR_OPTION, 60), + DATA_MAKE_NUM(DATADIR_OPTION, 61), + DATA_MAKE_NUM(DATADIR_OPTION, 62), + DATA_MAKE_NUM(DATADIR_OPTION, 50), + DATA_MAKE_NUM(DATADIR_OPTION, 51), + DATA_MAKE_NUM(DATADIR_OPTION, 66), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 52), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 53), + DATA_MAKE_NUM(DATADIR_OPTION, 49), + DATA_MAKE_NUM(DATADIR_OPTION, 49), + DATA_MAKE_NUM(DATADIR_OPTION, 19), + DATA_MAKE_NUM(DATADIR_OPTION, 20), + DATA_MAKE_NUM(DATADIR_OPTION, 21), + DATA_MAKE_NUM(DATADIR_OPTION, 22), + DATA_MAKE_NUM(DATADIR_OPTION, 23), + DATA_MAKE_NUM(DATADIR_OPTION, 24), + DATA_MAKE_NUM(DATADIR_OPTION, 25), + DATA_MAKE_NUM(DATADIR_OPTION, 26), + DATA_MAKE_NUM(DATADIR_OPTION, 27), + DATA_MAKE_NUM(DATADIR_OPTION, 28), + DATA_MAKE_NUM(DATADIR_OPTION, 29), + DATA_MAKE_NUM(DATADIR_OPTION, 30), + DATA_MAKE_NUM(DATADIR_OPTION, 31), + DATA_MAKE_NUM(DATADIR_OPTION, 32), + DATA_MAKE_NUM(DATADIR_OPTION, 33), + DATA_MAKE_NUM(DATADIR_OPTION, 34), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54), + DATA_MAKE_NUM(DATADIR_OPTION, 54) +}; + +static void fn_1_8DD4(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 153; i++) { + temp_r31->unk34[i] = espEntry(lbl_1_rodata_143C[i], 0, 0); + espDrawNoSet(temp_r31->unk34[i], 0x40); + espDispOff(temp_r31->unk34[i]); + } + espBankSet(temp_r31->unk34[47], 0); + espBankSet(temp_r31->unk34[48], 2); + HuSprExecLayerSet(0x40, 1); +} + +static void fn_1_8E98(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 153; i++) { + espKill(temp_r31->unk34[i]); + } +} + +static s32 fn_1_8EF8(s32 arg0, s32 arg1) { + s32 var_r31; + + var_r31 = 1; + while (arg1-- != 0) { + var_r31 *= 10; + } + return (arg0 % (var_r31 * 10)) / var_r31; +} + +static void fn_1_8F38(omObjData *arg0, s32 arg1) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 temp_r28; + s32 i; + s32 j; + + espPosSet(temp_r31->unk34[arg1], 275.0f, 72.0f); + temp_r28 = temp_r31->unk178[temp_r31->unk170].unk00; + for (i = 0; i < 4; i++) { + espPosSet(temp_r31->unk34[i + 11], 323.0f + 20.0f * i, 116.0f); + if (temp_r28 > 999) { + espBankSet(temp_r31->unk34[i + 11], i + 10); + } else { + espBankSet(temp_r31->unk34[i + 11], fn_1_8EF8(temp_r28, 3 - i)); + } + } + espPosSet(temp_r31->unk34[8], 416.0f, 120.0f); + temp_r28 = temp_r31->unk178[temp_r31->unk170].unk24; + for (i = 0; i < 4; i++) { + espPosSet(temp_r31->unk34[i + 15], 364.0f + 20.0f * i, 268.0f); + if (temp_r28 > 999) { + espBankSet(temp_r31->unk34[i + 15], i + 10); + } else { + espBankSet(temp_r31->unk34[i + 15], fn_1_8EF8(temp_r28, 3 - i)); + } + } + espPosSet(temp_r31->unk34[9], 456.0f, 268.0f); + temp_r28 = temp_r31->unk178[temp_r31->unk170].unk28; + for (i = 0; i < 4; i++) { + espPosSet(temp_r31->unk34[i + 19], 364.0f + 20.0f * i, 312.0f); + if (temp_r28 > 999) { + espBankSet(temp_r31->unk34[i + 19], i + 10); + } else { + espBankSet(temp_r31->unk34[i + 19], fn_1_8EF8(temp_r28, 3 - i)); + } + } + espPosSet(temp_r31->unk34[10], 456.0f, 312.0f); + for (i = 0; i < 8; i++) { + espPosSet(temp_r31->unk34[i + 49], 92.0f + 50.0f * i, 200.0f); + for (j = 0; j < 3; j++) { + espPosSet(temp_r31->unk34[i * 3 + 23 + j], 80.0f + 50.0f * i + 12.0f * j, 230.0f); + espBankSet(temp_r31->unk34[i * 3 + 23 + j], fn_1_8EF8(temp_r31->unk178[temp_r31->unk170].unk04[i], 2 - j)); + } + } + espPosSet(temp_r31->unk34[47], 48.0f, 240.0f); + espPosSet(temp_r31->unk34[48], 492.0f, 240.0f); + espDispOn(temp_r31->unk34[arg1]); + for (i = 0; i < 4; i++) { + espDispOn(temp_r31->unk34[i + 11]); + } + espDispOn(temp_r31->unk34[8]); + for (i = 0; i < 4; i++) { + espDispOn(temp_r31->unk34[i + 15]); + } + espDispOn(temp_r31->unk34[9]); + for (i = 0; i < 4; i++) { + espDispOn(temp_r31->unk34[i + 19]); + } + espDispOn(temp_r31->unk34[10]); + for (i = 0; i < 8; i++) { + espDispOn(temp_r31->unk34[i + 49]); + for (j = 0; j < 3; j++) { + espDispOn(temp_r31->unk34[i * 3 + 23 + j]); + } + } + for (i = 0; i < 4; i++) { + fn_1_A7F0(temp_r31->unk08[i + 2]); + } + fn_1_A7B0(temp_r31->unk08[2], 64.0f, 96.0f); + fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 19)); + fn_1_A7B0(temp_r31->unk08[3], 64.0f, 140.0f); + fn_1_A71C(temp_r31->unk08[3], MAKE_MESSID(47, 20)); + fn_1_A7B0(temp_r31->unk08[4], 64.0f, 248.0f); + fn_1_A71C(temp_r31->unk08[4], MAKE_MESSID(47, 21)); + fn_1_A7B0(temp_r31->unk08[5], 64.0f, 292.0f); + fn_1_A71C(temp_r31->unk08[5], MAKE_MESSID(47, 22)); +} + +static const s32 lbl_1_rodata_16F8[53] = { + 0, 1, 2, 3, 4, 5, 49, 50, 51, 52, + 53, 54, 55, 56, 8, 9, 10, 11, 12, 13, + 14, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 38, 39, 40, 35, 36, 37, 41, + 42, 43, 44, 45, 46, 15, 16, 17, 18, 19, + 20, 21, 22 +}; + +static void fn_1_96B4(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 53; i++) { + espDispOff(temp_r31->unk34[lbl_1_rodata_16F8[i]]); + } + for (i = 0; i < 4; i++) { + fn_1_A828(temp_r31->unk08[i + 2]); + } +} + +static void fn_1_9750(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 var_r27; + s32 i; + s32 j; + + espPosSet(temp_r31->unk34[6], 275.0f, 72.0f); + for (i = 0; i < 8; i++) { + espPosSet(temp_r31->unk34[i + 57], 148.0f + 80.0f * (i % 4), 172.0f + 104.0f * (i / 4)); + for (j = 0, var_r27 = 0; j < 6; j++) { + var_r27 += temp_r31->unk178[j].unk04[i]; + } + for (j = 0; j < 3; j++) { + espPosSet(temp_r31->unk34[i * 3 + 65 + j], 132.0f + 80.0f * (i % 4) + 16.0f * j, 218.0f + 104.0f * (i / 4)); + espBankSet(temp_r31->unk34[i * 3 + 65 + j], fn_1_8EF8(var_r27, 2 - j)); + } + } + espDispOn(temp_r31->unk34[6]); + for (i = 0; i < 8; i++) { + espDispOn(temp_r31->unk34[i + 57]); + for (j = 0; j < 3; j++) { + espDispOn(temp_r31->unk34[i * 3 + 65 + j]); + } + } + fn_1_A7B0(temp_r31->unk08[2], 136.0f, 96.0f); + fn_1_A71C(temp_r31->unk08[2], MAKE_MESSID(47, 23)); + fn_1_A7F0(temp_r31->unk08[2]); +} + +static const s32 lbl_1_rodata_17E8[33] = { + 6, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88 +}; + +static void fn_1_9A94(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 33; i++) { + espDispOff(temp_r31->unk34[lbl_1_rodata_17E8[i]]); + } + fn_1_A828(temp_r31->unk08[2]); +} + +static const s32 lbl_1_rodata_186C[6][3] = { + { 0x00000195, MAKE_MESSID(23, 5), 0 }, + { 0x00000197, MAKE_MESSID(23, 7), 1 }, + { 0x000001AB, MAKE_MESSID(23, 27), 0 }, + { 0x000001B0, MAKE_MESSID(23, 32), 0 }, + { 0x000001BB, MAKE_MESSID(23, 43), 0 }, + { 0x000001C8, MAKE_MESSID(23, 54), 0 } +}; + +static void fn_1_9B10(omObjData *arg0, s32 arg1) { + UnkRecordDataStruct01 *temp_r31 = arg0->data; + s32 temp_r25; + s32 temp_r27; + s32 var_r28; + s32 var_r26; + s32 var_r17; + s32 sp5C; + s32 sp58; + s32 sp54; + s32 sp50; + s32 sp4C; + s32 i; + s32 j; + + espPosSet(temp_r31->unk34[7], 275.0f, 72.0f); + espPosSet(temp_r31->unk34[47], 48.0f, 240.0f); + espPosSet(temp_r31->unk34[48], 492.0f, 240.0f); + espDispOn(temp_r31->unk34[7]); + for (i = 0; i < 8; i++) { + sp50 = 0; + temp_r27 = i + arg1 * 8; + if (temp_r27 >= 6) { + break; + } + sp54 = GWMGAvailGet(lbl_1_rodata_186C[temp_r27][0]); + temp_r25 = temp_r31->unk280[temp_r27]; + if (sp54 != 0) { + switch (lbl_1_rodata_186C[temp_r27][2]) { + case 1: + for (j = 0; j < 8; j++) { + var_r17 = fn_1_8EF8(temp_r25, 7 - j); + if (var_r17 != 0 || sp50 != 0 || j >= 7) { + espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i); + espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r17); + espDispOn(temp_r31->unk34[i * 8 + 89 + j]); + sp50 = 1; + } + } + break; + case 0: + sp5C = temp_r25 / 3600; + sp58 = (temp_r25 % 3600) / 60; + var_r26 = (temp_r25 % 3600) % 60; + if (lbl_1_rodata_186C[temp_r27][0] == 0x195 || lbl_1_rodata_186C[temp_r27][0] == 0x1B0) { + var_r26 *= 1.6916667f; + } else { + var_r26 *= 1.6666666f; + } + for (j = 1; j < 8; j++) { + espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i); + switch (j) { + case 0: + var_r28 = fn_1_8EF8(sp5C, 1); + break; + case 1: + var_r28 = fn_1_8EF8(sp5C, 0); + break; + case 3: + var_r28 = fn_1_8EF8(sp58, 1); + break; + case 4: + var_r28 = fn_1_8EF8(sp58, 0); + break; + case 6: + var_r28 = fn_1_8EF8(var_r26, 1); + break; + case 7: + var_r28 = fn_1_8EF8(var_r26, 0); + break; + case 2: + var_r28 = 11; + break; + case 5: + var_r28 = 12; + break; + } + espBankSet(temp_r31->unk34[i * 8 + 89 + j], var_r28); + espDispOn(temp_r31->unk34[i * 8 + 89 + j]); + } + break; + } + } else { + for (j = 0; j < 8; j++) { + espPosSet(temp_r31->unk34[i * 8 + 89 + j], 336.0f + 16.0f * j, 116.0f + 40.0f * i); + espBankSet(temp_r31->unk34[i * 8 + 89 + j], 0); + espDispOn(temp_r31->unk34[i * 8 + 89 + j]); + } + } + fn_1_A7B0(temp_r31->unk08[i + 2], 60.0f, 96.0f + 40.0f * i); + sp4C = (sp54 != 0) ? lbl_1_rodata_186C[temp_r27][1] : MAKE_MESSID(35, 0); + fn_1_A71C(temp_r31->unk08[i + 2], sp4C); + fn_1_A7F0(temp_r31->unk08[i + 2]); + } +} + +static const s32 lbl_1_rodata_18C8[65] = { + 7, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152 +}; + +static void fn_1_A3B0(omObjData *arg0) { + UnkRecordDataStruct01 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 65; i++) { + espDispOff(temp_r30->unk34[lbl_1_rodata_18C8[i]]); + } + for (i = 0; i < 8; i++) { + fn_1_A828(temp_r30->unk08[i + 2]); + } +} diff --git a/src/REL/option/room.c b/src/REL/option/room.c new file mode 100755 index 00000000..df159da8 --- /dev/null +++ b/src/REL/option/room.c @@ -0,0 +1,246 @@ +#include "REL/option.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/process.h" +#include "game/window.h" + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ omObjData *unk04; + /* 0x08 */ omObjData *unk08; + /* 0x0C */ omObjData *unk0C; + /* 0x10 */ UnkWindowDataStruct *unk10; + /* 0x14 */ UnkWindowDataStruct *unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s16 unk20; + /* 0x22 */ char unk22[6]; + /* 0x28 */ s32 unk28; +} UnkRoomDataStruct; // Size 0x2C + +static void fn_1_1844(omObjData *arg0, s32 arg1); +static void fn_1_1A8C(omObjData *arg0); +static omObjData *fn_1_2088(void); +static void fn_1_2110(omObjData *arg0); +static omObjData *fn_1_2144(void); +static void fn_1_21C4(omObjData *arg0); + +omObjData *lbl_1_bss_18; + +static omObjFunc lbl_1_data_68[] = { + NULL, + fn_1_1A8C +}; + +omObjData *fn_1_15A4(void) { + omObjData *var_r30; + UnkRoomDataStruct *temp_r31; + + var_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL); + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRoomDataStruct), MEMORY_DEFAULT_NUM); + var_r30->data = temp_r31; + temp_r31->unk18 = 0; + temp_r31->unk20 = -1; + temp_r31->unk28 = 0; + fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1); + temp_r31->unk00 = fn_1_2088(); + lbl_1_bss_38 = fn_1_4028(); + lbl_1_bss_40 = fn_1_80E4(); + lbl_1_bss_30 = fn_1_3158(); + lbl_1_bss_20 = fn_1_21F8(); + temp_r31->unk04 = fn_1_2144(); + temp_r31->unk08 = fn_1_2144(); + temp_r31->unk0C = fn_1_2144(); + omSetRot(temp_r31->unk04, 0.0f, 0.0f, 0.0f); + omSetRot(temp_r31->unk08, 0.0f, 120.0f, 0.0f); + omSetRot(temp_r31->unk0C, 0.0f, 240.0f, 0.0f); + temp_r31->unk10 = fn_1_A44C(0); + temp_r31->unk14 = fn_1_A44C(1); + return var_r30; +} + +void fn_1_1798(omObjData *arg0) { + UnkRoomDataStruct *temp_r31 = arg0->data; + + fn_1_2110(temp_r31->unk00); + fn_1_42DC(lbl_1_bss_38); + fn_1_322C(lbl_1_bss_30); + fn_1_825C(lbl_1_bss_40); + fn_1_241C(lbl_1_bss_20); + fn_1_21C4(temp_r31->unk04); + fn_1_21C4(temp_r31->unk08); + fn_1_21C4(temp_r31->unk0C); + fn_1_A6AC(temp_r31->unk10); + fn_1_A6AC(temp_r31->unk14); + HuMemDirectFree(temp_r31); +} + +static const float lbl_1_rodata_BC[3] = { 45.0f, 165.0f, 285.0f }; + +static void fn_1_1844(omObjData *arg0, s32 arg1) { + UnkRoomDataStruct *temp_r31 = arg0->data; + float sp10; + float spC; + float sp8; + float var_f31; + + temp_r31->unk18 += (arg1 == 0) ? -1 : 1; + if (temp_r31->unk18 < 0) { + temp_r31->unk18 = 2; + } else if (temp_r31->unk18 >= 3) { + temp_r31->unk18 = 0; + } + fn_1_C88(lbl_1_bss_10, &sp10, &spC, &sp8); + fn_1_B74(lbl_1_bss_10, fn_1_BF8(lbl_1_bss_10), fn_1_C28(lbl_1_bss_10) + (arg1 == 0 ? -120.0f : 120.0f), spC, 0x60); + if (temp_r31->unk18 == 2 && arg1 == 0) { + var_f31 = lbl_1_rodata_BC[2] - 360.0f; + } else if (temp_r31->unk18 == 0 && arg1 == 1) { + var_f31 = 360.0f + lbl_1_rodata_BC[0]; + } else { + var_f31 = lbl_1_rodata_BC[temp_r31->unk18]; + } + fn_1_2508(lbl_1_bss_20, var_f31, 430.0f, 0x60); +} + +void fn_1_1A2C(omObjData *arg0, s32 arg1) { + UnkRoomDataStruct *temp_r31 = arg0->data; + + temp_r31->unk1C = arg1; + arg0->func = lbl_1_data_68[arg1]; + arg0->unk10 = 0; + arg0->unk10 = 0; +} + +s32 fn_1_1A70(omObjData *arg0) { + UnkRoomDataStruct *temp_r31 = arg0->data; + + return temp_r31->unk1C; +} + +static const s32 lbl_1_rodata_D4[] = { + MAKE_MESSID(47, 1), + MAKE_MESSID(47, 7), + MAKE_MESSID(47, 4) +}; + +static void fn_1_1A8C(omObjData *arg0) { + UnkRoomDataStruct *temp_r31 = arg0->data; + + switch (arg0->unk10) { + case 0: + if (temp_r31->unk28 == 0) { + fn_1_B74(lbl_1_bss_10, 600.0f, 60.0f, 120.0f, 1); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 1); + temp_r31->unk28 = 1; + } + arg0->unk10 = 1; + /* fallthrough */ + case 1: + if (fn_1_CB8(lbl_1_bss_10) != 0) { + break; + } + fn_1_A6EC(temp_r31->unk10); + fn_1_A71C(temp_r31->unk10, lbl_1_rodata_D4[temp_r31->unk18]); + fn_1_A6EC(temp_r31->unk14); + fn_1_A71C(temp_r31->unk14, MAKE_MESSID(47, 14)); + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) { + if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + arg0->unk10 = 7; + } else if (fn_1_584(1) != 0) { + fn_1_1844(arg0, 0); + fn_1_A704(temp_r31->unk10); + fn_1_A704(temp_r31->unk14); + HuAudFXPlay(0); + arg0->unk10 = 1; + } else if (fn_1_584(2) != 0) { + fn_1_1844(arg0, 1); + fn_1_A704(temp_r31->unk10); + fn_1_A704(temp_r31->unk14); + HuAudFXPlay(0); + arg0->unk10 = 1; + } else if (fn_1_550(0x100) != 0) { + fn_1_A704(temp_r31->unk10); + fn_1_A704(temp_r31->unk14); + HuAudFXPlay(2); + arg0->unk10 = 3; + } + } + break; + case 3: + if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) { + switch (temp_r31->unk18) { + case 0: + fn_1_3290(lbl_1_bss_30, 1); + arg0->unk10 = 4; + break; + case 1: + fn_1_4388(lbl_1_bss_38, 1); + arg0->unk10 = 5; + break; + case 2: + fn_1_82B0(lbl_1_bss_40, 1); + arg0->unk10 = 6; + break; + } + } + break; + case 4: + if (fn_1_32D4(lbl_1_bss_30) == 0) { + arg0->unk10 = 1; + } + break; + case 5: + if (fn_1_43CC(lbl_1_bss_38) == 0) { + arg0->unk10 = 1; + } + break; + case 6: + if (fn_1_82F4(lbl_1_bss_40) == 0) { + arg0->unk10 = 1; + } + break; + case 7: + fn_1_A704(temp_r31->unk10); + fn_1_A704(temp_r31->unk14); + arg0->unk10 = 8; + /* fallthrough */ + case 8: + if (temp_r31->unk10->unk20 == 0 && temp_r31->unk14->unk20 == 0) { + fn_1_1A2C(arg0, 0); + } + break; + } +} + +static omObjData *fn_1_2088(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x690000); + Hu3DModelLayerSet(temp_r31->model[0], 0); + Hu3DModelShadowMapSet(temp_r31->model[0]); + return temp_r31; +} + +static void fn_1_2110(omObjData *arg0) { + Hu3DModelKill(arg0->model[0]); +} + +static omObjData *fn_1_2144(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + Hu3DModelLayerSet(temp_r31->model[0], 0); + temp_r31->model[0] = Hu3DModelCreateFile(0x690006); + return temp_r31; +} + +static void fn_1_21C4(omObjData *arg0) { + Hu3DModelKill(arg0->model[0]); +} diff --git a/src/REL/option/rumble.c b/src/REL/option/rumble.c new file mode 100755 index 00000000..7261e288 --- /dev/null +++ b/src/REL/option/rumble.c @@ -0,0 +1,336 @@ +#include "REL/option.h" +#include "game/audio.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/pad.h" +#include "game/window.h" + +typedef struct { + /* 0x00 */ omObjData *unk00; + /* 0x04 */ omObjData *unk04; + /* 0x08 */ omObjData *unk08; + /* 0x0C */ omObjData *unk0C; + /* 0x10 */ omObjData *unk10; + /* 0x14 */ UnkWindowDataStruct *unk14[2]; + /* 0x20 */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; +} UnkRumbleDataStruct; // Size 0x2C + +static void fn_1_32F0(omObjData *arg0); +static omObjData *fn_1_37AC(void); +static void fn_1_3868(omObjData *arg0); +static omObjData *fn_1_38BC(void); +static void fn_1_398C(omObjData *arg0); +static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2); +static omObjData *fn_1_3B08(void); +static void fn_1_3B8C(omObjData *arg0); +static void fn_1_3BE0(omObjData *arg0, s32 arg1); +static omObjData *fn_1_3C6C(void); +static void fn_1_3D00(omObjData *arg0); +static omObjData *fn_1_3F28(void); +static void fn_1_3FD4(omObjData *arg0); + +omObjData *lbl_1_bss_30; + +static omObjFunc lbl_1_data_108[] = { + NULL, + fn_1_32F0 +}; + +omObjData *fn_1_3158(void) { + omObjData *temp_r30; + UnkRumbleDataStruct *temp_r3; + + temp_r30 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkRumbleDataStruct), MEMORY_DEFAULT_NUM); + temp_r30->data = temp_r3; + temp_r3->unk20 = GWGameStat.rumble; + temp_r3->unk00 = fn_1_38BC(); + fn_1_39E0(temp_r3->unk00, temp_r3->unk20, 0); + temp_r3->unk04 = fn_1_3B08(); + fn_1_3BE0(temp_r3->unk04, temp_r3->unk20); + temp_r3->unk08 = fn_1_3C6C(); + temp_r3->unk10 = fn_1_3F28(); + temp_r3->unk0C = fn_1_37AC(); + fn_1_3290(temp_r30, 0); + return temp_r30; +} + +void fn_1_322C(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + + fn_1_3868(temp_r31->unk0C); + fn_1_398C(temp_r31->unk00); + fn_1_3B8C(temp_r31->unk04); + fn_1_3FD4(temp_r31->unk10); + fn_1_3D00(temp_r31->unk08); + HuMemDirectFree(temp_r31); +} + +void fn_1_3290(omObjData *arg0, s32 arg1) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + + temp_r31->unk1C = arg1; + arg0->func = lbl_1_data_108[arg1]; + arg0->unk10 = 0; + arg0->unk10 = 0; +} + +s32 fn_1_32D4(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + + return temp_r31->unk1C; +} + +static void fn_1_32F0(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + s32 i; + + switch (arg0->unk10) { + case 0: + temp_r31->unk14[0] = fn_1_A44C(0); + temp_r31->unk14[1] = fn_1_A44C(1); + fn_1_AF0(lbl_1_bss_10, -519.62f, 135.0f, 300.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, -315.64f, 135.0f, 182.25f, 0x28); + fn_1_3D54(arg0); + Hu3DModelLayerSet(temp_r31->unk08->model[0], 1); + temp_r31->unk24 = 0; + arg0->unk10 = 1; + /* fallthrough */ + case 1: + if (fn_1_CB8(lbl_1_bss_10) != 0) { + break; + } + if (temp_r31->unk24 == 0) { + Hu3DModelAttrReset(temp_r31->unk0C->model[0], 1); + temp_r31->unk24 = 1; + Hu3DModelHookSet(temp_r31->unk00->model[0], "target", temp_r31->unk0C->model[0]); + } + fn_1_A6EC(temp_r31->unk14[1]); + fn_1_A71C(temp_r31->unk14[1], MAKE_MESSID(47, 15)); + fn_1_A6EC(temp_r31->unk14[0]); + if (temp_r31->unk20 != 0) { + fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 2)); + } else { + fn_1_A71C(temp_r31->unk14[0], MAKE_MESSID(47, 3)); + } + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk14[0]->unk20 == 0 && temp_r31->unk14[1]->unk20 == 0) { + if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + arg0->unk10 = 4; + } else if (fn_1_584(8) != 0 && temp_r31->unk20 == 0) { + fn_1_39E0(temp_r31->unk00, 1, 1); + temp_r31->unk20 = 1; + temp_r31->unk28 = 0; + GWGameStat.rumble = 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; + GWGameStat.rumble = 0; + HuPadRumbleAllStop(); + arg0->unk10 = 3; + } + } + break; + case 3: + if (temp_r31->unk28++ >= 60) { + HuAudFXPlay(0x83C); + fn_1_3BE0(temp_r31->unk04, temp_r31->unk20); + if (temp_r31->unk20 != 0) { + HuPadRumbleSet(0, 0x3C, 0xA, 5); + Hu3DMotionTimeSet(temp_r31->unk10->model[0], 0.0f); + Hu3DModelAttrReset(temp_r31->unk10->model[0], 1); + } else { + Hu3DModelAttrSet(temp_r31->unk10->model[0], 1); + } + arg0->unk10 = 1; + } + break; + case 4: + fn_1_A704(temp_r31->unk14[1]); + fn_1_A704(temp_r31->unk14[0]); + Hu3DModelAttrSet(temp_r31->unk0C->model[0], 1); + fn_1_3E1C(arg0); + arg0->unk10 = 5; + /* fallthrough */ + case 5: + if (temp_r31->unk14[1]->unk20 == 0 && temp_r31->unk14[0]->unk20 == 0 && fn_1_3ED0(lbl_1_bss_30) == 0) { + for (i = 0; i < 2; i++) { + fn_1_A6AC(temp_r31->unk14[i]); + } + Hu3DModelHookReset(temp_r31->unk00->model[0]); + fn_1_AF0(lbl_1_bss_10, -519.62f, 120.0f, 300.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28); + fn_1_3290(arg0, 0); + } + break; + } +} + +static omObjData *fn_1_37AC(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000F); + Hu3DModelLayerSet(temp_r31->model[0], 3); + omSetRot(temp_r31, 0.0f, 180.0f, 0.0f); + Hu3DModelAttrSet(temp_r31->model[0], 1); + return temp_r31; +} + +static void fn_1_3868(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static omObjData *fn_1_38BC(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x690002); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000002); + if (GWGameStat.rumble != 0) { + Hu3DMotionTimeSet(temp_r31->model[0], 60.0f); + } else { + Hu3DMotionTimeSet(temp_r31->model[0], 0.0f); + } + return temp_r31; +} + +static void fn_1_398C(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static void fn_1_39E0(omObjData *arg0, s32 arg1, s32 arg2) { + s16 temp_r31 = arg0->model[0]; + + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrReset(arg0->model[0], 0x40000001); + if (arg1 != 0) { + Hu3DMotionStartEndSet(temp_r31, 60.0f, 120.0f); + if (arg2 != 0) { + Hu3DMotionTimeSet(temp_r31, 60.0f); + } else { + Hu3DMotionTimeSet(temp_r31, 119.0f); + } + } else { + Hu3DMotionStartEndSet(temp_r31, 0.0f, 60.0f); + if (arg2 != 0) { + Hu3DMotionTimeSet(temp_r31, 0.0f); + } else { + Hu3DMotionTimeSet(temp_r31, 59.0f); + } + } +} + +static omObjData *fn_1_3B08(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x690009); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + return temp_r31; +} + +static void fn_1_3B8C(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static void fn_1_3BE0(omObjData *arg0, s32 arg1) { + if (arg1 != 0) { + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + } else { + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelAttrReset(arg0->model[0], 0x40000001); + } +} + +static omObjData *fn_1_3C6C(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000A); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000002); + Hu3DModelLayerSet(temp_r31->model[0], 2); + return temp_r31; +} + +static void fn_1_3D00(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +void fn_1_3D54(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + s16 temp_r30 = temp_r31->unk08->model[0]; + + Hu3DMotionStartEndSet(temp_r30, 0.0f, 40.0f); + Hu3DMotionTimeSet(temp_r30, 0.0f); + Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002); + Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001); + Hu3DModelLayerSet(temp_r31->unk08->model[0], 2); + HuAudFXPlay(0x83D); +} + +void fn_1_3E1C(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + s16 temp_r30 = temp_r31->unk08->model[0]; + + Hu3DMotionStartEndSet(temp_r30, 40.0f, 80.0f); + Hu3DMotionTimeSet(temp_r30, 40.0f); + Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000002); + Hu3DModelAttrReset(temp_r31->unk08->model[0], 0x40000001); + HuAudFXPlay(0x83E); +} + +s32 fn_1_3ED0(omObjData *arg0) { + UnkRumbleDataStruct *temp_r31 = arg0->data; + s16 temp_r30 = temp_r31->unk08->model[0]; + + return !Hu3DMotionEndCheck(temp_r30); +} + +static omObjData *fn_1_3F28(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000B); + if (GWGameStat.rumble != 0) { + Hu3DModelAttrReset(temp_r31->model[0], 1); + } else { + Hu3DModelAttrSet(temp_r31->model[0], 1); + } + return temp_r31; +} + +static void fn_1_3FD4(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} diff --git a/src/REL/option/scene.c b/src/REL/option/scene.c new file mode 100755 index 00000000..8a24add2 --- /dev/null +++ b/src/REL/option/scene.c @@ -0,0 +1,206 @@ +#include "REL/option.h" +#include "REL/executor.h" +#include "game/audio.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "rel_sqrt_consts.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ char unk02[2]; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; +} UnkSceneDataStruct; // Size 0xC + +static void fn_1_270(void); +static void fn_1_354(s16 arg0, s32 arg1, s32 arg2); +static void fn_1_468(void); +static void fn_1_5EC(omObjData *arg0); +static void fn_1_6E8(void); + +Process *lbl_1_bss_8; +static omObjData *lbl_1_bss_4; +static s32 lbl_1_bss_0; + +void ModuleProlog(void) { + lbl_1_bss_8 = omInitObjMan(0x40, 0x2000); + omGameSysInit(lbl_1_bss_8); + HuWinInit(1); + lbl_1_bss_0 = GWGameStat.rumble; + lbl_1_bss_4 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 0, fn_1_5EC); + lbl_1_bss_4->unk10 = 0; + lbl_1_bss_28 = fn_1_2E04(); +} + +void fn_1_160(s16 arg0, s32 arg1, s32 arg2) { + UnkSceneDataStruct *temp_r31; + Process *temp_r30; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk08 = 1.0f / arg2; + if (arg1 != 0) { + temp_r31->unk08 = temp_r31->unk08; + temp_r31->unk04 = 0.0f; + } else { + temp_r31->unk08 = -temp_r31->unk08; + temp_r31->unk04 = 1.0f; + } + espDispOn(temp_r31->unk00); + espTPLvlSet(temp_r31->unk00, temp_r31->unk04); + temp_r30 = HuPrcChildCreate(fn_1_270, 0x3000, 0x1500, 0, HuPrcCurrentGet()); + temp_r30->user_data = temp_r31; +} + +static void fn_1_270(void) { + UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data; + + while (1) { + temp_r31->unk04 += temp_r31->unk08; + if (temp_r31->unk04 > 1.0f) { + temp_r31->unk04 = 1.0f; + break; + } + if (temp_r31->unk04 < 0.0f) { + temp_r31->unk04 = 0.0f; + break; + } + espTPLvlSet(temp_r31->unk00, temp_r31->unk04); + HuPrcVSleep(); + } + espTPLvlSet(temp_r31->unk00, temp_r31->unk04); + if (temp_r31->unk04 <= 0.0f) { + espDispOff(temp_r31->unk00); + } + HuMemDirectFree(temp_r31); + HuPrcEnd(); +} + +static void fn_1_354(s16 arg0, s32 arg1, s32 arg2) { + UnkSceneDataStruct *temp_r31; + Process *temp_r30; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSceneDataStruct), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk08 = 1.0f / arg2; + if (arg1 != 0) { + temp_r31->unk08 = temp_r31->unk08; + temp_r31->unk04 = 0.0f; + } else { + temp_r31->unk08 = -temp_r31->unk08; + temp_r31->unk04 = 1.0f; + } + Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04); + temp_r30 = HuPrcChildCreate(fn_1_468, 0x3000, 0x1500, 0, HuPrcCurrentGet()); + temp_r30->user_data = temp_r31; +} + +static void fn_1_468(void) { + UnkSceneDataStruct *temp_r31 = HuPrcCurrentGet()->user_data; + + while (1) { + temp_r31->unk04 += temp_r31->unk08; + if (temp_r31->unk04 > 1.0f) { + temp_r31->unk04 = 1.0f; + break; + } + if (temp_r31->unk04 < 0.0f) { + temp_r31->unk04 = 0.0f; + break; + } + Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04); + HuPrcVSleep(); + } + Hu3DModelTPLvlSet(temp_r31->unk00, temp_r31->unk04); + if (temp_r31->unk04 <= 0.0f) { + Hu3DModelAttrSet(temp_r31->unk00, 1); + } + HuMemDirectFree(temp_r31); + HuPrcEnd(); +} + +s32 fn_1_550(u16 arg0) { + u32 temp_r31 = HuPadBtnDown[0] & arg0; + + return (temp_r31 != 0); +} + +s32 fn_1_584(u16 arg0) { + u32 temp_r31 = HuPadDStkRep[0] & arg0; + + return (temp_r31 != 0); +} + +s32 fn_1_5B8(u16 arg0) { + u32 temp_r31 = HuPadDStk[0] & arg0; + + return (temp_r31 != 0); +} + +static void fn_1_5EC(omObjData *arg0) { + switch (arg0->unk10) { + case 0: + arg0->unk10 = 1; + /* fallthrough */ + case 1: + if (omSysExitReq == 0) { + break; + } + arg0->unk10 = 2; + /* fallthrough */ + case 2: + WipeCreate(2, 0, 0x3C); + HuAudFadeOut(1000); + arg0->unk10 = 3; + /* fallthrough */ + case 3: + if (WipeStatGet() == 0) { + fn_1_2F4C(lbl_1_bss_28); + if (lbl_1_bss_0 != GWGameStat.rumble) { + omSysExitReq = 0; + fn_1_6E8(); + } + omOvlReturnEx(1, 1); + } + break; + } +} + +static void fn_1_6E8(void) { + s16 temp_r31; + + if (SLSaveFlagGet() == 0) { + return; + } + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + espInit(); + HuPrcVSleep(); + temp_r31 = espEntry(0x860020, 0x1388, 0); + espPosSet(temp_r31, 288.0f, 240.0f); + espAttrReset(temp_r31, 4); + Hu3DBGColorSet(0, 0, 0); + WipeCreate(1, 0, 0xA); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + SLCommonSet(); + if (SLSave() == 0) { + GWSystem.save_mode = 1; + } + WipeCreate(2, 0, 0x14); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } +} diff --git a/src/REL/option/sound.c b/src/REL/option/sound.c new file mode 100755 index 00000000..75fbe8f4 --- /dev/null +++ b/src/REL/option/sound.c @@ -0,0 +1,1654 @@ +#include "REL/option.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/msm.h" +#include "game/process.h" +#include "game/window.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + /* 0x000 */ omObjData *unk00[26]; + /* 0x068 */ UnkWindowDataStruct *unk68[13]; + /* 0x09C */ s32 unk9C; + /* 0x0A0 */ s16 unkA0[19]; + /* 0x0C6 */ char unkC6[2]; + /* 0x0C8 */ s32 unkC8; + /* 0x0CC */ s32 unkCC; + /* 0x0D0 */ s32 unkD0; + /* 0x0D4 */ s32 unkD4; + /* 0x0D8 */ s32 unkD8; + /* 0x0DC */ s32 unkDC; + /* 0x0E0 */ s16 unkE0; + /* 0x0E2 */ char unkE2[2]; + /* 0x0E4 */ s32 unkE4; + /* 0x0E8 */ s32 unkE8; + /* 0x0EC */ s32 unkEC; + /* 0x0F0 */ s16 unkF0; + /* 0x0F2 */ s16 unkF2; + /* 0x0F4 */ s16 unkF4; + /* 0x0F6 */ s16 unkF6; + /* 0x0F8 */ s32 unkF8; + /* 0x0FC */ s32 unkFC; + /* 0x100 */ s32 unk100; + /* 0x104 */ float unk104; + /* 0x108 */ float unk108; + /* 0x10C */ Process *unk10C; +} UnkSoundDataStruct00; // Size 0x110 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; +} UnkSoundDataStruct01; // Size 0x14 + +typedef struct { + /* 0x00 */ BOOL unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s16 unk08; + /* 0x0A */ s16 unk0A; + /* 0x0C */ s32 unk0C; +} lbl_1_rodata_1E0_Data; // Size 0x10 + +static void fn_1_43E8(omObjData *arg0); +static void fn_1_4658(omObjData *arg0); +static void fn_1_4A7C(omObjData *arg0); +static void fn_1_4E50(omObjData *arg0); +static void fn_1_578C(omObjData *arg0); +static void fn_1_6044(omObjData *arg0, s32 arg1); +static void fn_1_613C(omObjData *arg0); +static omObjData *fn_1_61A0(void); +static void fn_1_629C(omObjData *arg0); +static omObjData *fn_1_62F0(void); +static void fn_1_63EC(omObjData *arg0); +static omObjData *fn_1_6440(void); +static void fn_1_64D4(omObjData *arg0); +static omObjData *fn_1_6528(s32 arg0, s32 arg1); +static void fn_1_6640(omObjData *arg0); +static void fn_1_6694(omObjData *arg0); +static void fn_1_66CC(omObjData *arg0); +static void fn_1_6704(omObjData *arg0); +static void fn_1_67C8(omObjData *arg0); +static void fn_1_6828(omObjData *arg0); +static void fn_1_6A0C(omObjData *arg0); +static void fn_1_6A80(omObjData *arg0); +static void fn_1_6C5C(omObjData *arg0); +static void fn_1_6CD0(omObjData *arg0, s32 arg1); +static void fn_1_6EA4(omObjData *arg0); +static void fn_1_6F48(omObjData *arg0, s32 arg1); +static void fn_1_711C(omObjData *arg0); +static omObjData *fn_1_71C0(s32 arg0); +static void fn_1_72A8(omObjData *arg0); +static void fn_1_7310(omObjData *arg0); +static void fn_1_7710(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3); +static void fn_1_78A0(omObjData *arg0); +static void fn_1_7900(omObjData *arg0); +static void fn_1_793C(void); +static void fn_1_7F00(omObjData *arg0); +static void fn_1_8048(omObjData *arg0); + +omObjData *lbl_1_bss_38; + +static const s32 lbl_1_rodata_1A8[] = { + MAKE_MESSID(47, 70), + MAKE_MESSID(47, 81), + MAKE_MESSID(47, 172), + MAKE_MESSID(47, 92), + MAKE_MESSID(47, 101), + MAKE_MESSID(47, 109), + MAKE_MESSID(47, 119), + MAKE_MESSID(47, 173), + MAKE_MESSID(47, 174), + MAKE_MESSID(47, 129), + MAKE_MESSID(47, 140), + MAKE_MESSID(47, 149), + MAKE_MESSID(47, 156), + MAKE_MESSID(47, 176) +}; + +static const lbl_1_rodata_1E0_Data lbl_1_rodata_1E0[14][10] = { + { + { TRUE, MAKE_MESSID(47, 71), 1, 0, 20 }, + { TRUE, MAKE_MESSID(47, 72), 2, 79, 43 }, + { TRUE, MAKE_MESSID(47, 73), 3, 81, 44 }, + { TRUE, MAKE_MESSID(47, 74), 29, 80, 45 }, + { TRUE, MAKE_MESSID(47, 76), 30, 82, 47 }, + { TRUE, MAKE_MESSID(47, 78), 1, 0, 12 }, + { TRUE, MAKE_MESSID(47, 77), 4, 83, 48 }, + { TRUE, MAKE_MESSID(47, 80), 11, 90, 40 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 79), 1, 0, 5 }, + { TRUE, MAKE_MESSID(47, 170), 33, 0, 12 }, + { TRUE, MAKE_MESSID(47, 82), 33, 0, 7 }, + { TRUE, MAKE_MESSID(47, 83), 33, 0, 4 }, + { TRUE, MAKE_MESSID(47, 171), 33, 0, 10 }, + { TRUE, MAKE_MESSID(47, 84), 33, 0, 9 }, + { TRUE, MAKE_MESSID(47, 85), 33, 0, 1 }, + { TRUE, MAKE_MESSID(47, 86), 33, 0, 3 }, + { TRUE, MAKE_MESSID(47, 87), 33, 0, 2 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 88), 33, 0, 5 }, + { TRUE, MAKE_MESSID(47, 89), 33, 0, 6 }, + { TRUE, MAKE_MESSID(47, 90), 33, 0, 11 }, + { TRUE, MAKE_MESSID(47, 91), 33, 0, 8 }, + { TRUE, MAKE_MESSID(47, 125), 1, 0, 2 }, + { TRUE, MAKE_MESSID(47, 126), 1, 0, 6 }, + { TRUE, MAKE_MESSID(47, 127), 1, 0, 9 }, + { TRUE, MAKE_MESSID(47, 128), 1, 0, 10 }, + { TRUE, MAKE_MESSID(47, 124), 12, 93, 49 }, + { TRUE, MAKE_MESSID(47, 123), 12, 93, 50 } + }, + { + { TRUE, MAKE_MESSID(47, 93), 5, 84, 13 }, + { TRUE, MAKE_MESSID(47, 94), 5, 84, 14 }, + { TRUE, MAKE_MESSID(47, 95), 5, 84, 15 }, + { TRUE, MAKE_MESSID(47, 96), 5, 84, 16 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 97), 6, 85, 17 }, + { TRUE, MAKE_MESSID(47, 98), 6, 85, 18 }, + { TRUE, MAKE_MESSID(47, 99), 6, 85, 19 }, + { TRUE, MAKE_MESSID(47, 100), 6, 85, 20 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 102), 7, 86, 21 }, + { TRUE, MAKE_MESSID(47, 103), 7, 86, 22 }, + { TRUE, MAKE_MESSID(47, 104), 7, 86, 23 }, + { TRUE, MAKE_MESSID(47, 105), 7, 86, 24 }, + { TRUE, MAKE_MESSID(47, 106), 7, 86, 25 }, + { TRUE, MAKE_MESSID(47, 107), 7, 86, 26 }, + { TRUE, MAKE_MESSID(47, 108), 7, 86, 27 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 110), 8, 87, 28 }, + { TRUE, MAKE_MESSID(47, 111), 8, 87, 30 }, + { TRUE, MAKE_MESSID(47, 112), 8, 87, 29 }, + { TRUE, MAKE_MESSID(47, 113), 8, 87, 31 }, + { TRUE, MAKE_MESSID(47, 114), 8, 87, 32 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 115), 9, 88, 33 }, + { TRUE, MAKE_MESSID(47, 116), 9, 88, 34 }, + { TRUE, MAKE_MESSID(47, 117), 9, 88, 35 }, + { TRUE, MAKE_MESSID(47, 118), 9, 88, 36 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 120), 10, 89, 37 }, + { TRUE, MAKE_MESSID(47, 121), 10, 89, 38 }, + { TRUE, MAKE_MESSID(47, 122), 10, 89, 39 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 130), 13, 94, 59 }, + { TRUE, MAKE_MESSID(47, 131), 13, 94, 57 }, + { TRUE, MAKE_MESSID(47, 132), 14, 95, 67 }, + { TRUE, MAKE_MESSID(47, 133), 15, 96, 68 }, + { TRUE, MAKE_MESSID(47, 134), 16, 97, 69 }, + { TRUE, MAKE_MESSID(47, 135), 17, 98, 70 }, + { TRUE, MAKE_MESSID(47, 136), 18, 99, 71 }, + { TRUE, MAKE_MESSID(47, 137), 19, 100, 72 }, + { TRUE, MAKE_MESSID(47, 138), 20, 101, 73 }, + { TRUE, MAKE_MESSID(47, 139), 21, 102, 74 } + }, + { + { TRUE, MAKE_MESSID(47, 141), 22, 103, 75 }, + { TRUE, MAKE_MESSID(47, 142), 23, 104, 76 }, + { TRUE, MAKE_MESSID(47, 143), 24, 105, 77 }, + { TRUE, MAKE_MESSID(47, 144), 13, 94, 58 }, + { TRUE, MAKE_MESSID(47, 175), 13, 94, 60 }, + { TRUE, MAKE_MESSID(47, 145), 1, 0, 1 }, + { TRUE, MAKE_MESSID(47, 146), 1, 0, 3 }, + { TRUE, MAKE_MESSID(47, 147), 1, 0, 4 }, + { TRUE, MAKE_MESSID(47, 148), 1, 0, 11 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 152), 25, 106, 61 }, + { TRUE, MAKE_MESSID(47, 150), 25, 106, 62 }, + { TRUE, MAKE_MESSID(47, 151), 25, 106, 63 }, + { TRUE, MAKE_MESSID(47, 155), 26, 107, 65 }, + { TRUE, MAKE_MESSID(47, 153), 26, 107, 64 }, + { TRUE, MAKE_MESSID(47, 154), 26, 107, 66 }, + { TRUE, MAKE_MESSID(47, 164), 1, 0, 13 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 157), 27, 108, 51 }, + { TRUE, MAKE_MESSID(47, 158), 27, 108, 53 }, + { TRUE, MAKE_MESSID(47, 159), 27, 108, 54 }, + { TRUE, MAKE_MESSID(47, 160), 27, 108, 52 }, + { TRUE, MAKE_MESSID(47, 161), 27, 108, 55 }, + { TRUE, MAKE_MESSID(47, 162), 27, 108, 56 }, + { TRUE, MAKE_MESSID(47, 163), 1, 0, 7 }, + { TRUE, MAKE_MESSID(47, 165), 1, 0, 22 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 177), 32, 92, 46 }, + { TRUE, MAKE_MESSID(47, 178), 31, 91, 41 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 }, + { FALSE, MAKE_MESSID(47, 69), 0, 0, 0 } + } +}; + +static const s32 lbl_1_rodata_AA0[12] = { + MAKE_MESSID( 0, 0), + MAKE_MESSID( 0, 1), + MAKE_MESSID( 0, 2), + MAKE_MESSID( 0, 3), + MAKE_MESSID( 0, 4), + MAKE_MESSID( 0, 5), + MAKE_MESSID( 0, 6), + MAKE_MESSID( 0, 7), + MAKE_MESSID(47, 34), + MAKE_MESSID(47, 44), + MAKE_MESSID(47, 55), + MAKE_MESSID(47, 62) +}; + +static const lbl_1_rodata_1E0_Data lbl_1_rodata_AD0[12][10] = { + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2217 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2219 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2216 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2223 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2220 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2221 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2222 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2218 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2208 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2210 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2207 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2214 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2211 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2212 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2213 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2209 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2226 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2228 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2225 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2232 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2229 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2230 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2231 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2227 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2253 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2255 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2252 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2259 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2256 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2257 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2258 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2254 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2244 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2246 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2243 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2250 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2247 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2248 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2249 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2245 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2199 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2201 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2198 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2205 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2202 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2203 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2204 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2200 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2190 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2192 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2189 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2196 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2193 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2194 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2195 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2191 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 26), 28, 109, 2235 }, + { TRUE, MAKE_MESSID(47, 27), 28, 109, 2237 }, + { TRUE, MAKE_MESSID(47, 28), 28, 109, 2234 }, + { TRUE, MAKE_MESSID(47, 29), 28, 109, 2241 }, + { TRUE, MAKE_MESSID(47, 30), 28, 109, 2238 }, + { TRUE, MAKE_MESSID(47, 31), 28, 109, 2239 }, + { TRUE, MAKE_MESSID(47, 32), 28, 109, 2240 }, + { TRUE, MAKE_MESSID(47, 33), 28, 109, 2236 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 35), 28, 109, 54 }, + { TRUE, MAKE_MESSID(47, 36), 28, 109, 55 }, + { TRUE, MAKE_MESSID(47, 37), 28, 109, 56 }, + { TRUE, MAKE_MESSID(47, 38), 28, 109, 67 }, + { TRUE, MAKE_MESSID(47, 39), 28, 109, 68 }, + { TRUE, MAKE_MESSID(47, 40), 28, 109, 69 }, + { TRUE, MAKE_MESSID(47, 41), 28, 109, 64 }, + { TRUE, MAKE_MESSID(47, 42), 28, 109, 65 }, + { TRUE, MAKE_MESSID(47, 43), 28, 109, 66 }, + { FALSE, MAKE_MESSID(47, 24), 0, 0, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 45), 28, 109, 75 }, + { TRUE, MAKE_MESSID(47, 46), 28, 109, 76 }, + { TRUE, MAKE_MESSID(47, 47), 28, 109, 77 }, + { TRUE, MAKE_MESSID(47, 48), 28, 109, 70 }, + { TRUE, MAKE_MESSID(47, 49), 28, 109, 71 }, + { TRUE, MAKE_MESSID(47, 50), 28, 109, 72 }, + { TRUE, MAKE_MESSID(47, 51), 28, 109, 58 }, + { TRUE, MAKE_MESSID(47, 52), 28, 109, 59 }, + { TRUE, MAKE_MESSID(47, 53), 28, 109, 60 }, + { TRUE, MAKE_MESSID(47, 54), 28, 109, 61 } + }, + { + { TRUE, MAKE_MESSID(47, 56), 28, 109, 62 }, + { TRUE, MAKE_MESSID(47, 57), 28, 109, 63 }, + { TRUE, MAKE_MESSID(47, 58), 28, 109, 79 }, + { TRUE, MAKE_MESSID(47, 59), 28, 109, 80 }, + { TRUE, MAKE_MESSID(47, 60), 28, 109, 73 }, + { TRUE, MAKE_MESSID(47, 61), 28, 109, 74 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + }, + { + { TRUE, MAKE_MESSID(47, 63), 28, 109, 36 }, + { TRUE, MAKE_MESSID(47, 64), 28, 109, 37 }, + { TRUE, MAKE_MESSID(47, 65), 28, 109, 38 }, + { TRUE, MAKE_MESSID(47, 67), 28, 109, 40 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 }, + { FALSE, MAKE_MESSID(47, 24), 28, 109, 0 } + } +}; + +static s32 lbl_1_data_118[14] = { + 1, 1, 1, 0, + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 0 +}; + +static omObjFunc lbl_1_data_150[] = { + NULL, + fn_1_43E8, + fn_1_4658, + fn_1_4A7C, + fn_1_4E50, + fn_1_578C +}; + +static s32 lbl_1_data_168[] = { + MAKE_MESSID(47, 8), + MAKE_MESSID(47, 10), + MAKE_MESSID(47, 9) +}; + +omObjData *fn_1_4028(void) { + omObjData *temp_r29; + UnkSoundDataStruct00 *temp_r3; + s32 i; + + temp_r29 = omAddObjEx(lbl_1_bss_8, 1003, 0, 0, 1, NULL); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSoundDataStruct00), MEMORY_DEFAULT_NUM); + temp_r29->data = temp_r3; + temp_r3->unkCC = 0; + temp_r3->unkE8 = 0; + temp_r3->unkE4 = 0; + temp_r3->unkF0 = -2; + temp_r3->unkF2 = -1; + temp_r3->unkF4 = -1; + temp_r3->unkF6 = -1; + temp_r3->unk10C = NULL; + switch (GWGameStat.sound_mode) { + case 0: + temp_r3->unkD0 = 1; + break; + case 2: + default: + temp_r3->unkD0 = 0; + break; + } + temp_r3->unk00[0] = fn_1_6440(); + for (i = 0; i < 6; i++) { + temp_r3->unk00[i + 1] = fn_1_6528(i % 3, (i / 3) > 0); + } + fn_1_613C(temp_r29); + temp_r3->unk00[7] = fn_1_61A0(); + temp_r3->unk00[8] = fn_1_62F0(); + for (i = 0; i < 16; i++) { + temp_r3->unk00[i + 10] = fn_1_71C0((i / 8) == 0 ? 0 : 1); + } + fn_1_6704(temp_r29); + fn_1_4388(temp_r29, 0); + for (i = 0; i < 6; i++) { + lbl_1_data_118[i + 3] = (GWGameStat.board_play_count[i] != 0) ? 1 : 0; + } + lbl_1_data_118[11] = (GWGameStat.field10E_bit6 != 0) ? 1 : 0; + lbl_1_data_118[12] = (GWGameStat.field10E_bit6 != 0) ? 1 : 0; + lbl_1_data_118[13] = (GWGameStat.field10E_bit6 != 0) ? 1 : 0; + return temp_r29; +} + +void fn_1_42DC(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + s32 i; + + fn_1_629C(temp_r31->unk00[7]); + fn_1_63EC(temp_r31->unk00[8]); + fn_1_64D4(temp_r31->unk00[0]); + for (i = 0; i < 6; i++) { + fn_1_6640(temp_r31->unk00[i + 1]); + } + for (i = 0; i < 16; i++) { + fn_1_72A8(temp_r31->unk00[i + 10]); + } + fn_1_67C8(arg0); + HuMemDirectFree(temp_r31); +} + +void fn_1_4388(omObjData *arg0, s32 arg1) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + temp_r31->unk9C = arg1; + arg0->func = lbl_1_data_150[arg1]; + arg0->unk10 = 0; + arg0->unk10 = 0; +} + +s32 fn_1_43CC(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + return temp_r31->unk9C; +} + +static void fn_1_43E8(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + s32 i; + + switch (arg0->unk10) { + case 0: + if (temp_r30->unkE8 == 0) { + temp_r30->unk68[0] = fn_1_A44C(0); + temp_r30->unk68[1] = fn_1_A44C(1); + temp_r30->unk68[2] = fn_1_A44C(2); + for (i = 0; i < 10; i++) { + temp_r30->unk68[i + 3] = fn_1_A44C(3); + } + fn_1_AF0(lbl_1_bss_10, 0.0f, 120.0f, -600.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, -350.0f, 0x28); + temp_r30->unkE8 = 1; + temp_r30->unkCC = 0; + temp_r30->unkE4 = 0; + arg0->unk10 = 1; + } else { + arg0->unk10 = 2; + } + break; + case 1: + if (fn_1_CB8(lbl_1_bss_10) == 0) { + fn_1_4388(arg0, 2); + } + break; + case 2: + for (i = 0; i < 13; i++) { + fn_1_A6AC(temp_r30->unk68[i]); + } + fn_1_AF0(lbl_1_bss_10, 0.0f, 120.0f, -600.0f, 0x28); + fn_1_A6C(lbl_1_bss_10, 0.0f, 120.0f, 0.0f, 0x28); + temp_r30->unkE8 = 0; + temp_r30->unkE4 = 0; + fn_1_4388(arg0, 0); + break; + } +} + +static void fn_1_4658(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + switch (arg0->unk10) { + case 0: + fn_1_613C(arg0); + temp_r31->unkD8 = temp_r31->unkCC; + if (temp_r31->unkE4 == 0) { + fn_1_3D54(lbl_1_bss_30); + } else { + fn_1_6C5C(arg0); + fn_1_6EA4(arg0); + fn_1_711C(arg0); + } + temp_r31->unkE4 = 0; + temp_r31->unkEC = 0; + arg0->unk10 = 1; + /* fallthrough */ + case 1: + fn_1_6828(arg0); + fn_1_A6EC(temp_r31->unk68[1]); + fn_1_A71C(temp_r31->unk68[1], MAKE_MESSID(47, 168)); + fn_1_A6EC(temp_r31->unk68[0]); + fn_1_A71C(temp_r31->unk68[0], lbl_1_data_168[temp_r31->unkD8]); + if (temp_r31->unkEC == 0) { + Hu3DModelAttrReset(temp_r31->unk00[7]->model[0], 1); + temp_r31->unkEC = 1; + } + omSetTra(temp_r31->unk00[7], -34.0f + 40.0f * temp_r31->unkD8, 120.0f, -500.0f); + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + if (fn_1_550(0x100) != 0) { + temp_r31->unkCC = temp_r31->unkD8; + temp_r31->unkE4 = 1; + fn_1_6044(arg0, temp_r31->unkCC); + HuAudFXPlay(2); + arg0->unk10 = 3; + } else if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + arg0->unk10 = 3; + } else if (fn_1_584(1) != 0 && temp_r31->unkD8 > 0) { + temp_r31->unkD8--; + HuAudFXPlay(0); + arg0->unk10 = 1; + } else if (fn_1_584(2) != 0 && temp_r31->unkD8 < 2) { + temp_r31->unkD8++; + HuAudFXPlay(0); + arg0->unk10 = 1; + } + } + break; + case 3: + fn_1_A704(temp_r31->unk68[1]); + fn_1_A704(temp_r31->unk68[0]); + if (temp_r31->unkE4 == 0) { + fn_1_3E1C(lbl_1_bss_30); + } + Hu3DModelAttrSet(temp_r31->unk00[7]->model[0], 1); + arg0->unk10 = 4; + /* fallthrough */ + case 4: + if ((temp_r31->unkE4 != 0 || fn_1_3ED0(lbl_1_bss_30) == 0) && temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + if (temp_r31->unkE4 != 0) { + switch (temp_r31->unkCC) { + case 0: + fn_1_4388(arg0, 3); + break; + case 1: + fn_1_4388(arg0, 4); + break; + case 2: + fn_1_4388(arg0, 5); + break; + } + } else { + fn_1_6A0C(arg0); + fn_1_4388(arg0, 1); + } + } + break; + } +} + +static const s32 lbl_1_rodata_1278[] = { 2, 0 }; +static const s32 lbl_1_rodata_1280[] = { 1, 0 }; + +static const s32 lbl_1_rodata_1288[] = { + MAKE_MESSID(47, 11), + MAKE_MESSID(47, 12) +}; + +static void fn_1_4A7C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + Vec sp8; + + switch (arg0->unk10) { + case 0: + fn_1_6A0C(arg0); + temp_r31->unkE4 = 0; + temp_r31->unkD8 = temp_r31->unkD0; + temp_r31->unkEC = 0; + temp_r31->unkE4 = 0; + fn_1_78A0(arg0); + arg0->unk10 = 1; + /* fallthrough */ + case 1: + fn_1_6A80(arg0); + fn_1_A6EC(temp_r31->unk68[1]); + fn_1_A71C(temp_r31->unk68[1], MAKE_MESSID(47, 168)); + fn_1_A6EC(temp_r31->unk68[0]); + fn_1_A71C(temp_r31->unk68[0], lbl_1_rodata_1288[temp_r31->unkD0]); + if (temp_r31->unkEC == 0) { + Hu3DModelAttrReset(temp_r31->unk00[8]->model[0], 1); + temp_r31->unkEC = 1; + } + sp8.x = -38.0f; + sp8.y = 140.0f - 15.0f * temp_r31->unkD8; + sp8.z = -500.0f; + omSetTra(temp_r31->unk00[8], sp8.x, sp8.y, sp8.z); + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + if (fn_1_550(0x100) != 0) { + temp_r31->unkD0 = temp_r31->unkD8; + if (temp_r31->unkD0 == 0) { + HuAudFXPlay(0x841); + } else { + HuAudFXPlay(0x842); + } + GWGameStat.sound_mode = lbl_1_rodata_1278[temp_r31->unkD8]; + msmSysSetOutputMode(lbl_1_rodata_1278[temp_r31->unkD8]); + OSSetSoundMode(lbl_1_rodata_1280[temp_r31->unkD8]); + temp_r31->unkE4 = 1; + fn_1_6A80(arg0); + temp_r31->unkC8 = 0; + arg0->unk10 = 3; + } else if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + arg0->unk10 = 4; + } else if (fn_1_584(8) != 0 && temp_r31->unkD8 > 0) { + temp_r31->unkD8--; + HuAudFXPlay(0); + arg0->unk10 = 1; + } else if (fn_1_584(4) != 0 && temp_r31->unkD8 < 1) { + temp_r31->unkD8++; + HuAudFXPlay(0); + arg0->unk10 = 1; + } + } + break; + case 3: + if (temp_r31->unkC8++ >= 60) { + arg0->unk10 = 4; + return; + } + break; + case 4: + fn_1_7900(arg0); + fn_1_A704(temp_r31->unk68[1]); + fn_1_A704(temp_r31->unk68[0]); + Hu3DModelAttrSet(temp_r31->unk00[8]->model[0], 1); + arg0->unk10 = 5; + /* fallthrough */ + case 5: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + temp_r31->unkE4 = 0; + fn_1_6A80(arg0); + temp_r31->unkE4 = 1; + fn_1_4388(arg0, 2); + } + break; + } +} + +static void fn_1_4E50(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + s32 var_r28; + s32 var_r29; + s32 sp8; + + sp8 = temp_r31->unkD8; + switch (arg0->unk10) { + case 0: + fn_1_6A0C(arg0); + temp_r31->unkD4 = 0; + temp_r31->unk100 = 0; + temp_r31->unkFC = 0; + espBankSet(temp_r31->unkA0[14], 0); + espBankSet(temp_r31->unkA0[15], 2); + espPosSet(temp_r31->unkA0[14], 36.0f, 222.0f); + espPosSet(temp_r31->unkA0[15], 544.0f, 222.0f); + fn_1_160(temp_r31->unkA0[14], 1, 5); + fn_1_160(temp_r31->unkA0[15], 1, 5); + temp_r31->unkF8 = 0; + arg0->unk10 = 1; + /* fallthrough */ + case 1: + temp_r31->unkD8 = 0; + temp_r31->unkDC = 0; + if (temp_r31->unkFC != 0) { + do { + temp_r31->unkD4 += temp_r31->unkFC; + if (temp_r31->unkD4 >= 14) { + temp_r31->unkD4 = 0; + } else if (temp_r31->unkD4 < 0) { + temp_r31->unkD4 = 13; + } + } while (lbl_1_data_118[temp_r31->unkD4] == 0); + HuAudFXPlay(0x840); + if (temp_r31->unkFC > 0) { + espBankSet(temp_r31->unkA0[15], 3); + } else { + espBankSet(temp_r31->unkA0[14], 1); + } + temp_r31->unkF8 = 5; + temp_r31->unkFC = 0; + } + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk100 != 0) { + var_r29 = temp_r31->unkD8 + temp_r31->unk100; + if (var_r29 > 9) { + var_r29 = 9; + } else if (var_r29 < 0) { + var_r29 = 0; + } + if (!lbl_1_rodata_1E0[temp_r31->unkD4][var_r29].unk00) { + if (temp_r31->unkD8 < 5) { + for (var_r28 = var_r29; var_r28 >= 5; var_r28--) { + if (lbl_1_rodata_1E0[temp_r31->unkD4][var_r28].unk00) { + var_r29 = var_r28; + break; + } + } + if (var_r28 < 5) { + var_r29 = temp_r31->unkD8; + } + } else { + var_r29 = temp_r31->unkD8; + } + } + temp_r31->unkDC = temp_r31->unkD8; + if (temp_r31->unkD8 != var_r29) { + temp_r31->unkD8 = var_r29; + HuAudFXPlay(0x840); + } + temp_r31->unk100 = 0; + } + arg0->unk10 = 3; + /* fallthrough */ + case 3: + fn_1_6CD0(arg0, temp_r31->unkD4); + fn_1_A6EC(temp_r31->unk68[0]); + fn_1_A71C(temp_r31->unk68[0], MAKE_MESSID(47, 10)); + fn_1_A6EC(temp_r31->unk68[1]); + fn_1_A71C(temp_r31->unk68[1], MAKE_MESSID(47, 18)); + espDispOn(temp_r31->unkA0[18]); + temp_r31->unk104 = 0.0f; + temp_r31->unk108 = 0.0625f; + if (temp_r31->unkF8 > 0) { + arg0->unk10 = 5; + } else { + arg0->unk10 = 4; + } + /* fallthrough */ + case 4: + temp_f31 = 166.0f + 244.0f * (temp_r31->unkDC / 5); + temp_f30 = 144.0f + 29.0f * (temp_r31->unkDC % 5); + temp_f27 = 166.0f + 244.0f * (temp_r31->unkD8 / 5); + temp_f26 = 144.0f + 29.0f * (temp_r31->unkD8 % 5); + temp_f29 = temp_f31 + temp_r31->unk104 * (temp_f27 - temp_f31); + temp_f28 = temp_f30 + temp_r31->unk104 * (temp_f26 - temp_f30); + espPosSet(temp_r31->unkA0[18], temp_f29, temp_f28); + if ((temp_r31->unk104 += temp_r31->unk108) < 1.0f) { + break; + } + espPosSet(temp_r31->unkA0[18], 166.0f + 244.0f * (temp_r31->unkD8 / 5), 144.0f + 29.0f * (temp_r31->unkD8 % 5)); + arg0->unk10 = 6; + break; + case 5: + if (temp_r31->unkF8 > 0) { + temp_r31->unkF8--; + break; + } + espBankSet(temp_r31->unkA0[14], 0); + espBankSet(temp_r31->unkA0[15], 2); + arg0->unk10 = 6; + /* fallthrough */ + case 6: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + if (fn_1_550(0x100) != 0) { + if (temp_r31->unkF0 == -2) { + HuAudFadeOut(0x64); + temp_r31->unkF0 = -1; + } else if (temp_r31->unkF0 != -1) { + HuAudSeqFadeOut(temp_r31->unkF0, 0x64); + temp_r31->unkF0 = -1; + } + fn_1_7F00(arg0); + } else if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + temp_r31->unkC8 = 0; + arg0->unk10 = 7; + } else { + if (fn_1_5B8(1) != 0 && temp_r31->unkD8 >= 5) { + temp_r31->unk100 -= 5; + } else if (fn_1_5B8(2) != 0 && temp_r31->unkD8 < 5) { + temp_r31->unk100 += 5; + } + if (fn_1_5B8(8) != 0 && temp_r31->unkD8 % 5 > 0) { + temp_r31->unk100--; + } else if (fn_1_5B8(4) != 0 && temp_r31->unkD8 % 5 < 4) { + temp_r31->unk100++; + } + if (temp_r31->unk100 != 0) { + arg0->unk10 = 2; + } else if (fn_1_550(0x40) != 0) { + temp_r31->unkFC = -1; + } else if (fn_1_550(0x20) != 0) { + temp_r31->unkFC = 1; + } + if (temp_r31->unkFC != 0) { + arg0->unk10 = 1; + } + } + } + break; + case 7: + fn_1_A704(temp_r31->unk68[1]); + fn_1_A704(temp_r31->unk68[0]); + fn_1_8048(arg0); + fn_1_160(temp_r31->unkA0[14], 0, 5); + fn_1_160(temp_r31->unkA0[15], 0, 5); + arg0->unk10 = 8; + /* fallthrough */ + case 8: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + espDispOff(temp_r31->unkA0[18]); + if (temp_r31->unkF0 == -1) { + temp_r31->unkF0 = HuAudSeqPlay(0x2D); + } + fn_1_4388(arg0, 2); + } + break; + } +} + +static void fn_1_578C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + s32 var_r28; + s32 var_r29; + + switch (arg0->unk10) { + case 0: + fn_1_6A0C(arg0); + temp_r31->unkD4 = 0; + temp_r31->unk100 = 0; + temp_r31->unkFC = 0; + espBankSet(temp_r31->unkA0[14], 0); + espBankSet(temp_r31->unkA0[15], 2); + espPosSet(temp_r31->unkA0[14], 36.0f, 222.0f); + espPosSet(temp_r31->unkA0[15], 544.0f, 222.0f); + fn_1_160(temp_r31->unkA0[14], 1, 5); + fn_1_160(temp_r31->unkA0[15], 1, 5); + temp_r31->unkF8 = 0; + arg0->unk10 = 3; + /* fallthrough */ + case 1: + temp_r31->unkD8 = 0; + temp_r31->unkDC = 0; + if (temp_r31->unkFC != 0) { + temp_r31->unkD4 += temp_r31->unkFC; + if (temp_r31->unkD4 > 11) { + temp_r31->unkD4 = 0; + } else if (temp_r31->unkD4 < 0) { + temp_r31->unkD4 = 11; + } + HuAudFXPlay(0x840); + if (temp_r31->unkFC > 0) { + espBankSet(temp_r31->unkA0[15], 3); + } else { + espBankSet(temp_r31->unkA0[14], 1); + } + temp_r31->unkF8 = 5; + temp_r31->unkFC = 0; + } + arg0->unk10 = 2; + /* fallthrough */ + case 2: + if (temp_r31->unk100 != 0) { + var_r29 = temp_r31->unkD8 + temp_r31->unk100; + if (var_r29 > 9) { + var_r29 = 9; + } else if (var_r29 < 0) { + var_r29 = 0; + } + if (!lbl_1_rodata_AD0[temp_r31->unkD4][var_r29].unk00) { + if (temp_r31->unkD8 < 5) { + for (var_r28 = var_r29; var_r28 >= 5; var_r28--) { + if (lbl_1_rodata_AD0[temp_r31->unkD4][var_r28].unk00) { + var_r29 = var_r28; + break; + } + } + if (var_r28 < 5) { + var_r29 = temp_r31->unkD8; + } + } else { + var_r29 = temp_r31->unkD8; + } + } + temp_r31->unkDC = temp_r31->unkD8; + if (temp_r31->unkD8 != var_r29) { + temp_r31->unkD8 = var_r29; + HuAudFXPlay(0x840); + } + temp_r31->unk100 = 0; + } + arg0->unk10 = 3; + /* fallthrough */ + case 3: + fn_1_6F48(arg0, temp_r31->unkD4); + fn_1_A6EC(temp_r31->unk68[0]); + fn_1_A71C(temp_r31->unk68[0], MAKE_MESSID(47, 9)); + fn_1_A6EC(temp_r31->unk68[1]); + fn_1_A71C(temp_r31->unk68[1], MAKE_MESSID(47, 18)); + espDispOn(temp_r31->unkA0[18]); + temp_r31->unk104 = 0.0f; + temp_r31->unk108 = 0.0625f; + if (temp_r31->unkF8 > 0) { + arg0->unk10 = 5; + } else { + arg0->unk10 = 4; + } + /* fallthrough */ + case 4: + temp_f31 = 166.0f + 244.0f * (temp_r31->unkDC / 5); + temp_f30 = 144.0f + 29.0f * (temp_r31->unkDC % 5); + temp_f27 = 166.0f + 244.0f * (temp_r31->unkD8 / 5); + temp_f26 = 144.0f + 29.0f * (temp_r31->unkD8 % 5); + temp_f29 = temp_f31 + temp_r31->unk104 * (temp_f27 - temp_f31); + temp_f28 = temp_f30 + temp_r31->unk104 * (temp_f26 - temp_f30); + espPosSet(temp_r31->unkA0[18], temp_f29, temp_f28); + if ((temp_r31->unk104 += temp_r31->unk108) < 1.0f) { + break; + } + espPosSet(temp_r31->unkA0[18], 166.0f + 244.0f * (temp_r31->unkD8 / 5), 144.0f + 29.0f * (temp_r31->unkD8 % 5)); + arg0->unk10 = 6; + break; + case 5: + if (temp_r31->unkF8 > 0) { + temp_r31->unkF8--; + break; + } + espBankSet(temp_r31->unkA0[14], 0); + espBankSet(temp_r31->unkA0[15], 2); + arg0->unk10 = 6; + /* fallthrough */ + case 6: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + if (fn_1_550(0x100) != 0) { + fn_1_7F00(arg0); + } else if (fn_1_550(0x200) != 0) { + HuAudFXPlay(3); + temp_r31->unkC8 = 0; + arg0->unk10 = 7; + } else { + if (fn_1_5B8(1) != 0 && temp_r31->unkD8 >= 5) { + temp_r31->unk100 -= 5; + } else if (fn_1_5B8(2) != 0 && temp_r31->unkD8 < 5) { + temp_r31->unk100 += 5; + } + if (fn_1_5B8(8) != 0 && temp_r31->unkD8 % 5 > 0) { + temp_r31->unk100--; + } else if (fn_1_5B8(4) != 0 && temp_r31->unkD8 % 5 < 4) { + temp_r31->unk100++; + } + if (temp_r31->unk100 != 0) { + arg0->unk10 = 2; + } else if (fn_1_550(0x40) != 0) { + temp_r31->unkFC = -1; + } else if (fn_1_550(0x20) != 0) { + temp_r31->unkFC = 1; + } + if (temp_r31->unkFC != 0) { + arg0->unk10 = 1; + } + } + } + break; + case 7: + fn_1_A704(temp_r31->unk68[1]); + fn_1_A704(temp_r31->unk68[0]); + fn_1_8048(arg0); + fn_1_160(temp_r31->unkA0[14], 0, 5); + fn_1_160(temp_r31->unkA0[15], 0, 5); + arg0->unk10 = 8; + /* fallthrough */ + case 8: + if (temp_r31->unk68[0]->unk20 == 0 && temp_r31->unk68[1]->unk20 == 0) { + espDispOff(temp_r31->unkA0[18]); + fn_1_4388(arg0, 2); + } + break; + } +} + +static void fn_1_6044(omObjData *arg0, s32 arg1) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + switch (arg1) { + case 0: + fn_1_6694(temp_r31->unk00[1]); + fn_1_6694(temp_r31->unk00[5]); + fn_1_6694(temp_r31->unk00[6]); + fn_1_66CC(temp_r31->unk00[4]); + fn_1_66CC(temp_r31->unk00[2]); + fn_1_66CC(temp_r31->unk00[3]); + break; + case 1: + fn_1_6694(temp_r31->unk00[4]); + fn_1_6694(temp_r31->unk00[2]); + fn_1_6694(temp_r31->unk00[6]); + fn_1_66CC(temp_r31->unk00[1]); + fn_1_66CC(temp_r31->unk00[5]); + fn_1_66CC(temp_r31->unk00[3]); + break; + case 2: + fn_1_6694(temp_r31->unk00[4]); + fn_1_6694(temp_r31->unk00[5]); + fn_1_6694(temp_r31->unk00[3]); + fn_1_66CC(temp_r31->unk00[1]); + fn_1_66CC(temp_r31->unk00[2]); + fn_1_66CC(temp_r31->unk00[6]); + break; + } +} + +static void fn_1_613C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + fn_1_6694(temp_r31->unk00[4]); + fn_1_6694(temp_r31->unk00[5]); + fn_1_6694(temp_r31->unk00[6]); + fn_1_66CC(temp_r31->unk00[1]); + fn_1_66CC(temp_r31->unk00[2]); + fn_1_66CC(temp_r31->unk00[3]); +} + +static omObjData *fn_1_61A0(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000D); + Hu3DModelLayerSet(temp_r31->model[0], 2); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + omSetRot(temp_r31, -80.0f, 45.0f, 0.0f); + omSetSca(temp_r31, 0.6f, 0.6f, 0.6f); + Hu3DModelAttrSet(temp_r31->model[0], 1); + return temp_r31; +} + +static void fn_1_629C(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static omObjData *fn_1_62F0(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x69000E); + Hu3DModelLayerSet(temp_r31->model[0], 2); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + omSetRot(temp_r31, 0.0f, -90.0f, 0.0f); + omSetSca(temp_r31, 0.6f, 0.6f, 0.6f); + Hu3DModelAttrSet(temp_r31->model[0], 1); + return temp_r31; +} + +static void fn_1_63EC(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static omObjData *fn_1_6440(void) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r31->model[0] = Hu3DModelCreateFile(0x690003); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + Hu3DModelLayerSet(temp_r31->model[0], 0); + return temp_r31; +} + +static void fn_1_64D4(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static const Vec lbl_1_rodata_12D0[3] = { + { -40.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 40.0f, 0.0f, 0.0f } +}; + +static omObjData *fn_1_6528(s32 arg0, s32 arg1) { + omObjData *temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + if (arg1 != 0) { + temp_r31->model[0] = Hu3DModelCreateFile(0x690005); + } else { + temp_r31->model[0] = Hu3DModelCreateFile(0x690004); + } + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + Hu3DModelLayerSet(temp_r31->model[0], 0); + omSetTra(temp_r31, lbl_1_rodata_12D0[arg0].x, lbl_1_rodata_12D0[arg0].y, lbl_1_rodata_12D0[arg0].z); + return temp_r31; +} + +static void fn_1_6640(omObjData *arg0) { + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } +} + +static void fn_1_6694(omObjData *arg0) { + Hu3DModelAttrReset(arg0->model[0], 1); +} + +static void fn_1_66CC(omObjData *arg0) { + Hu3DModelAttrSet(arg0->model[0], 1); +} + +static s32 lbl_1_data_1BC[] = { + DATA_MAKE_NUM(DATADIR_OPTION, 38), + DATA_MAKE_NUM(DATADIR_OPTION, 39), + DATA_MAKE_NUM(DATADIR_OPTION, 40), + DATA_MAKE_NUM(DATADIR_OPTION, 35), + DATA_MAKE_NUM(DATADIR_OPTION, 36), + DATA_MAKE_NUM(DATADIR_OPTION, 37), + DATA_MAKE_NUM(DATADIR_OPTION, 41), + DATA_MAKE_NUM(DATADIR_OPTION, 43), + DATA_MAKE_NUM(DATADIR_OPTION, 42), + DATA_MAKE_NUM(DATADIR_OPTION, 44), + DATA_MAKE_NUM(DATADIR_OPTION, 45), + DATA_MAKE_NUM(DATADIR_OPTION, 46), + DATA_MAKE_NUM(DATADIR_OPTION, 47), + DATA_MAKE_NUM(DATADIR_OPTION, 48), + DATA_MAKE_NUM(DATADIR_OPTION, 49), + DATA_MAKE_NUM(DATADIR_OPTION, 49), + DATA_MAKE_NUM(DATADIR_OPTION, 63), + DATA_MAKE_NUM(DATADIR_OPTION, 64), + DATA_MAKE_NUM(DATADIR_OPTION, 65) +}; + +static void fn_1_6704(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 19; i++) { + temp_r31->unkA0[i] = espEntry(lbl_1_data_1BC[i], 0, 0); + espDrawNoSet(temp_r31->unkA0[i], 0x40); + espDispOff(temp_r31->unkA0[i]); + } + espBankSet(temp_r31->unkA0[14], 0); + espBankSet(temp_r31->unkA0[15], 2); + HuSprExecLayerSet(0x40, 1); +} + +static void fn_1_67C8(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + s32 i; + + for (i = 0; i < 19; i++) { + espKill(temp_r31->unkA0[i]); + } +} + +static void fn_1_6828(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + float temp_f31 = 288.0f; + float temp_f30 = 188.0f; + + espPosSet(temp_r31->unkA0[12], 288.0f, 72.0f); + espPosSet(temp_r31->unkA0[0], temp_f31 + -112.0f, temp_f30); + espPosSet(temp_r31->unkA0[3], temp_f31 + -112.0f, temp_f30); + espPosSet(temp_r31->unkA0[1], temp_f31, temp_f30); + espPosSet(temp_r31->unkA0[4], temp_f31, temp_f30); + espPosSet(temp_r31->unkA0[2], temp_f31 + 112.0f, temp_f30); + espPosSet(temp_r31->unkA0[5], temp_f31 + 112.0f, temp_f30); + espDispOn(temp_r31->unkA0[12]); + switch (temp_r31->unkD8) { + case 0: + espDispOn(temp_r31->unkA0[3]); + espDispOn(temp_r31->unkA0[1]); + espDispOn(temp_r31->unkA0[2]); + espDispOff(temp_r31->unkA0[0]); + espDispOff(temp_r31->unkA0[4]); + espDispOff(temp_r31->unkA0[5]); + break; + case 1: + espDispOn(temp_r31->unkA0[0]); + espDispOn(temp_r31->unkA0[4]); + espDispOn(temp_r31->unkA0[2]); + espDispOff(temp_r31->unkA0[3]); + espDispOff(temp_r31->unkA0[1]); + espDispOff(temp_r31->unkA0[5]); + break; + case 2: + espDispOn(temp_r31->unkA0[0]); + espDispOn(temp_r31->unkA0[1]); + espDispOn(temp_r31->unkA0[5]); + espDispOff(temp_r31->unkA0[3]); + espDispOff(temp_r31->unkA0[4]); + espDispOff(temp_r31->unkA0[2]); + break; + } +} + +static const s32 lbl_1_rodata_1308[] = { 12, 0, 1, 2, 3, 4, 5 }; + +static void fn_1_6A0C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 7; i++) { + espDispOff(temp_r30->unkA0[lbl_1_rodata_1308[i]]); + } +} + +static void fn_1_6A80(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + float temp_f31 = 290.0f; + float temp_f30 = 192.0f; + + espPosSet(temp_r31->unkA0[13], 288.0f, 72.0f); + espPosSet(temp_r31->unkA0[6], temp_f31, temp_f30 - 32.0f); + espPosSet(temp_r31->unkA0[7], temp_f31, temp_f30 - 32.0f); + espPosSet(temp_r31->unkA0[8], temp_f31, temp_f30 + 32.0f); + espPosSet(temp_r31->unkA0[9], temp_f31, temp_f30 + 32.0f); + switch (temp_r31->unkD8) { + case 0: + espPosSet(temp_r31->unkA0[17], temp_f31, temp_f30 - 32.0f); + break; + case 1: + espPosSet(temp_r31->unkA0[17], temp_f31, temp_f30 + 32.0f); + break; + } + espDispOn(temp_r31->unkA0[13]); + switch (temp_r31->unkD8) { + case 0: + espDispOn(temp_r31->unkA0[6]); + espDispOn(temp_r31->unkA0[9]); + espDispOff(temp_r31->unkA0[7]); + espDispOff(temp_r31->unkA0[8]); + break; + case 1: + espDispOn(temp_r31->unkA0[7]); + espDispOn(temp_r31->unkA0[8]); + espDispOff(temp_r31->unkA0[6]); + espDispOff(temp_r31->unkA0[9]); + break; + } + if (temp_r31->unkE4 != 0) { + espDispOn(temp_r31->unkA0[17]); + } else { + espDispOff(temp_r31->unkA0[17]); + } +} + +static const s32 lbl_1_rodata_1330[] = { 13, 6, 7, 8, 9 }; + +static void fn_1_6C5C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 5; i++) { + espDispOff(temp_r30->unkA0[lbl_1_rodata_1330[i]]); + } +} + +static void fn_1_6CD0(omObjData *arg0, s32 arg1) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + s32 i; + + espPosSet(temp_r31->unkA0[10], 288.0f, 72.0f); + espDispOn(temp_r31->unkA0[10]); + fn_1_A7F0(temp_r31->unk68[2]); + for (i = 0; i < 10; i++) { + fn_1_A7F0(temp_r31->unk68[i + 3]); + fn_1_A7B0(temp_r31->unk68[i + 3], 52.0f + 244.0f * (i / 5), 124.0f + 29.0f * (i % 5)); + } + fn_1_A71C(temp_r31->unk68[2], lbl_1_rodata_1A8[arg1]); + for (i = 0; i < 10; i++) { + fn_1_A71C(temp_r31->unk68[i + 3], lbl_1_rodata_1E0[arg1][i].unk04); + } +} + +static const s32 lbl_1_rodata_134C[] = { 10 }; + +static void fn_1_6EA4(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 1; i++) { + espDispOff(temp_r30->unkA0[lbl_1_rodata_134C[i]]); + } + fn_1_A828(temp_r30->unk68[2]); + for (i = 0; i < 10; i++) { + fn_1_A828(temp_r30->unk68[i + 3]); + } +} + +static void fn_1_6F48(omObjData *arg0, s32 arg1) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + s32 i; + + espPosSet(temp_r31->unkA0[11], 288.0f, 72.0f); + espDispOn(temp_r31->unkA0[11]); + fn_1_A7F0(temp_r31->unk68[2]); + for (i = 0; i < 10; i++) { + fn_1_A7F0(temp_r31->unk68[i + 3]); + fn_1_A7B0(temp_r31->unk68[i + 3], 52.0f + 244.0f * (i / 5), 124.0f + 29.0f * (i % 5)); + } + fn_1_A71C(temp_r31->unk68[2], lbl_1_rodata_AA0[arg1]); + for (i = 0; i < 10; i++) { + fn_1_A71C(temp_r31->unk68[i + 3], lbl_1_rodata_AD0[arg1][i].unk04); + } +} + +static const s32 lbl_1_rodata_1350[] = { 11, 0 }; + +static void fn_1_711C(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 1; i++) { + espDispOff(temp_r30->unkA0[lbl_1_rodata_1350[i]]); + } + fn_1_A828(temp_r30->unk68[2]); + for (i = 0; i < 10; i++) { + fn_1_A828(temp_r30->unk68[i + 3]); + } +} + +static s32 lbl_1_data_208[] = { + DATA_MAKE_NUM(DATADIR_OPTION, 7), + DATA_MAKE_NUM(DATADIR_OPTION, 8) +}; + +static omObjData *fn_1_71C0(s32 arg0) { + omObjData *temp_r31; + UnkSoundDataStruct01 *temp_r3; + + temp_r31 = omAddObjEx(lbl_1_bss_8, 1003, 1, 0, 1, NULL); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkSoundDataStruct01), MEMORY_DEFAULT_NUM); + temp_r31->data = temp_r3; + temp_r3->unk00 = 0; + temp_r3->unk04 = arg0; + temp_r31->model[0] = Hu3DModelCreateFile(lbl_1_data_208[arg0]); + Hu3DModelAttrSet(temp_r31->model[0], 0x40000001); + Hu3DModelLayerSet(temp_r31->model[0], 2); + Hu3DModelAttrReset(temp_r31->model[0], 2); + return temp_r31; +} + +static void fn_1_72A8(omObjData *arg0) { + UnkSoundDataStruct01 *temp_r30 = arg0->data; + s32 i; + + for (i = 0; i < 1; i++) { + Hu3DModelKill(arg0->model[i]); + } + HuMemDirectFree(temp_r30); +} + +static void fn_1_7310(omObjData *arg0) { + UnkSoundDataStruct01 *temp_r31 = arg0->data; + float temp_f31; + float temp_f30; + float var_f29; + float var_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + + Hu3DModelAttrReset(arg0->model[0], 1); + temp_f31 = sin(45.0f * temp_r31->unk0C * M_PI / 180.0); + temp_f31 = temp_f31 * temp_f31; + switch (temp_r31->unk08) { + case 0: + var_f29 = 174.5f + 7.0f * temp_f31; + var_f28 = -15.0 + 30.0 * sin(1440.0f * temp_f31 * M_PI / 180.0); + break; + case 1: + var_f29 = 185.5f - (7.0f * temp_f31); + var_f28 = 15.0 - 30.0 * sin(1440.0f * temp_f31 * M_PI / 180.0); + break; + } + temp_f23 = sin(180.0f * temp_r31->unk0C * M_PI / 180.0); + temp_f27 = 500.0f - 25.0f * temp_f31; + temp_f26 = temp_f27 * -sin(var_f29 * M_PI / 180.0); + temp_f25 = temp_f27 * cos(var_f29 * M_PI / 180.0); + temp_f24 = 160.0f - 15.0f * temp_r31->unk0C; + temp_f30 = 0.5 + 2.0 * sin(90.0f * temp_f31 * M_PI / 180.0); + omSetTra(arg0, temp_f26, temp_f24, temp_f25); + Hu3DModelTPLvlSet(arg0->model[0], temp_f23); + omSetSca(arg0, temp_f30, temp_f30, temp_f30); + omSetRot(arg0, 0.0f, 0.0f, var_f28); + if ((temp_r31->unk0C += temp_r31->unk10) < 1.0f) { + return; + } + temp_r31->unk00 = 0; + Hu3DModelAttrSet(arg0->model[0], 1); + arg0->func = NULL; + arg0->unk10 = 0; +} + +static void fn_1_7710(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3) { + omObjData *var_r30; + UnkSoundDataStruct01 *var_r31; + s32 i; + + for (i = 0; i < 16; i++) { + var_r30 = ((UnkSoundDataStruct00*) arg0->data)->unk00[i + 10]; + var_r31 = var_r30->data; + if (var_r31->unk00 == 0 && var_r31->unk04 == arg1) { + break; + } + } + if (i != 16) { + Hu3DMotionTimeSet(var_r30->model[0], 2.0f * arg3); + Hu3DMotionStartEndSet(var_r30->model[0], 2.0f * arg3, 2.0f * arg3 + 1.0f); + var_r31->unk00 = 1; + var_r31->unk08 = arg2; + var_r31->unk0C = 0.0f; + var_r31->unk10 = 0.011111111f; + var_r30->func = fn_1_7310; + var_r30->unk10 = 0; + } +} + +static void fn_1_78A0(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + temp_r31->unk10C = HuPrcChildCreate(fn_1_793C, 0x64, 0x2000, 0, HuPrcCurrentGet()); + temp_r31->unk10C->user_data = arg0; +} + +static void fn_1_7900(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + HuPrcKill(temp_r31->unk10C); +} + +static void fn_1_793C(void) { + omObjData *temp_r26; + UnkSoundDataStruct00 *sp8; + s32 var_r21; + s32 temp_r31; + + temp_r26 = HuPrcCurrentGet()->user_data; + sp8 = temp_r26->data; + while (1) { + switch (sp8->unkD8) { + case 0: + var_r21 = 1; + temp_r31 = frandmod(7); + fn_1_7710(temp_r26, var_r21, 0, temp_r31); + var_r21 = 0; + temp_r31 = frandmod(7); + fn_1_7710(temp_r26, var_r21, 1, temp_r31); + break; + case 1: + var_r21 = 0; + temp_r31 = frandmod(7); + fn_1_7710(temp_r26, var_r21, 0, temp_r31); + fn_1_7710(temp_r26, var_r21, 1, temp_r31); + break; + } + HuPrcSleep(0x18); + } +} + +static void fn_1_7F00(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r30 = arg0->data; + lbl_1_rodata_1E0_Data *var_r31; + + if (temp_r30->unkCC == 1) { + var_r31 = (lbl_1_rodata_1E0_Data*) &lbl_1_rodata_1E0[temp_r30->unkD4][temp_r30->unkD8]; + } else { + var_r31 = (lbl_1_rodata_1E0_Data*) &lbl_1_rodata_AD0[temp_r30->unkD4][temp_r30->unkD8]; + } + if (var_r31->unk00 != 0) { + fn_1_8048(arg0); + switch (var_r31->unk08) { + case 1: + temp_r30->unkF4 = HuAudSStreamPlay(var_r31->unk0C); + break; + case 28: + if (var_r31->unk0A != temp_r30->unkE0) { + HuAudSndGrpSetSet(var_r31->unk0A); + } + temp_r30->unkF6 = HuAudFXPlay(var_r31->unk0C); + break; + default: + if (var_r31->unk0A != temp_r30->unkE0 && var_r31->unk0A != 2) { + HuAudSndGrpSetSet(var_r31->unk0A); + } + temp_r30->unkF2 = HuAudSeqPlay(var_r31->unk0C); + break; + } + temp_r30->unkE0 = var_r31->unk0A; + HuPrcSleep(40); + } +} + +static void fn_1_8048(omObjData *arg0) { + UnkSoundDataStruct00 *temp_r31 = arg0->data; + + if (temp_r31->unkF2 != -1) { + HuAudSeqFadeOut(temp_r31->unkF2, 0x64); + temp_r31->unkF2 = -1; + } + if (temp_r31->unkF4 != -1) { + HuAudSStreamFadeOut(temp_r31->unkF4, 0x64); + temp_r31->unkF4 = -1; + } + if (temp_r31->unkF6 != -1) { + HuAudFXFadeOut(temp_r31->unkF6, 0x64); + temp_r31->unkF6 = -1; + } + HuPrcSleep(20); +} diff --git a/src/REL/option/state.c b/src/REL/option/state.c new file mode 100755 index 00000000..b9714e13 --- /dev/null +++ b/src/REL/option/state.c @@ -0,0 +1,126 @@ +#include "REL/option.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "dolphin.h" + +typedef struct { + /* 0x00 */ UnkWindowDataStruct *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s16 unk08; + /* 0x0A */ char unk0A[2]; +} UnkStateDataStruct; // Size 0xC + +typedef struct { + Vec unk00; + Vec unk0C; + GXColor unk18; +} UnkLightDataStruct; // Size 0x1C + +static void fn_1_2FB0(omObjData *arg0); + +omObjData *lbl_1_bss_28; + +static UnkLightDataStruct lbl_1_data_A0 = { + { 0.0f, 300.0f, 0.0f }, + { 0.0f, -300.0f, -600.0f }, + { 0xFF, 0xFF, 0xFF, 0xFF } +}; + +static Vec lbl_1_data_BC[3] = { + { 0.0f, 3000.0f, 1.0f }, + { 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f } +}; + +omObjData *fn_1_2E04(void) { + omObjData *var_r30; + UnkStateDataStruct *temp_r3; + LightData *sp8; + + var_r30 = omAddObjEx(lbl_1_bss_8, 1000, 0, 0, 4, fn_1_2FB0); + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkStateDataStruct), MEMORY_DEFAULT_NUM); + var_r30->data = temp_r3; + lbl_1_bss_10 = fn_1_7F8(); + lbl_1_bss_18 = fn_1_15A4(); + temp_r3->unk00 = fn_1_A44C(0); + Hu3DLighInit(); + temp_r3->unk08 = Hu3DGLightCreateV(&lbl_1_data_A0.unk00, &lbl_1_data_A0.unk0C, &lbl_1_data_A0.unk18); + Hu3DGLightInfinitytSet(temp_r3->unk08); + sp8 = &Hu3DGlobalLight[temp_r3->unk08]; + Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); + Hu3DShadowTPLvlSet(0.45f); + Hu3DShadowPosSet(&lbl_1_data_BC[0], &lbl_1_data_BC[1], &lbl_1_data_BC[2]); + return var_r30; +} + +void fn_1_2F4C(omObjData *arg0) { + UnkStateDataStruct *temp_r31 = arg0->data; + + fn_1_A3C(lbl_1_bss_10); + fn_1_1798(lbl_1_bss_18); + fn_1_A6AC(temp_r31->unk00); + HuMemDirectFree(temp_r31); +} + +static void fn_1_2FB0(omObjData *arg0) { + UnkStateDataStruct *temp_r31 = arg0->data; + + switch (arg0->unk10) { + case 0: + arg0->unk10 = 1; + /* fallthrough */ + case 1: + WipeCreate(1, -1, 0x3C); + arg0->unk10 = 2; + break; + case 2: + if (WipeStatGet() != 0 || temp_r31->unk00->unk20 != 0) { + break; + } + fn_1_1A2C(lbl_1_bss_18, 1); + arg0->unk10 = 3; + /* fallthrough */ + case 3: + if (fn_1_1A70(lbl_1_bss_18) != 0) { + break; + } + arg0->unk10 = 4; + /* fallthrough */ + case 4: + fn_1_A6EC(temp_r31->unk00); + fn_1_A71C(temp_r31->unk00, MAKE_MESSID(47, 167)); + arg0->unk10 = 5; + /* fallthrough */ + case 5: + if (temp_r31->unk00->unk20 != 0) { + break; + } + fn_1_A880(temp_r31->unk00, 1); + arg0->unk10 = 6; + /* fallthrough */ + case 6: + if (temp_r31->unk00->unk20 != 0) { + break; + } + fn_1_A704(temp_r31->unk00); + if (temp_r31->unk00->unk1C == 0) { + temp_r31->unk04 = 0; + arg0->unk10 = 7; + } else { + arg0->unk10 = 2; + } + break; + case 7: + arg0->unk10 = 8; + temp_r31->unk04 = 0; + /* fallthrough */ + case 8: + if (temp_r31->unk00->unk20 == 0 && temp_r31->unk04++ >= 60) { + omSysExitReq = 1; + } + break; + } +} diff --git a/src/REL/option/window.c b/src/REL/option/window.c new file mode 100755 index 00000000..ec1311f0 --- /dev/null +++ b/src/REL/option/window.c @@ -0,0 +1,148 @@ +#include "REL/option.h" +#include "game/esprite.h" +#include "game/memory.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" + +static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2); +static void fn_1_A860(UnkWindowDataStruct *arg0); +static void fn_1_A8A4(void); + +UnkWindowDataStruct *fn_1_A44C(s32 arg0) { + UnkWindowDataStruct *temp_r31; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWindowDataStruct), MEMORY_DEFAULT_NUM); + temp_r31->unk18 = 0; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk20 = 0; + temp_r31->unk00 = HuPrcChildCreate(fn_1_A8A4, 0x2000, 0x2000, 0, lbl_1_bss_8); + temp_r31->unk00->user_data = temp_r31; + temp_r31->unk08 = arg0; + switch (temp_r31->unk08) { + case 0: + temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1); + HuWinBGTPLvlSet(temp_r31->unk04, 0.8f); + HuWinMesSpeedSet(temp_r31->unk04, 0); + HuWinMesPalSet(temp_r31->unk04, 7, 0, 0, 0); + break; + case 1: + temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 326.0f, 480, 40, -1, 0); + HuWinAttrSet(temp_r31->unk04, 0x800); + HuWinBGTPLvlSet(temp_r31->unk04, 0.0f); + HuWinMesSpeedSet(temp_r31->unk04, 0); + break; + case 2: + temp_r31->unk04 = HuWinExCreateStyled(-10000.0f, 88.0f, 224, 34, -1, 0); + HuWinAttrSet(temp_r31->unk04, 0x800); + HuWinBGTPLvlSet(temp_r31->unk04, 0.0f); + HuWinMesSpeedSet(temp_r31->unk04, 0); + break; + case 3: + temp_r31->unk04 = HuWinExCreateStyled(175.0f, 100.0f, 300, 34, -1, 0); + HuWinBGTPLvlSet(temp_r31->unk04, 0.0f); + HuWinMesSpeedSet(temp_r31->unk04, 0); + break; + } + HuWinDrawNoSet(temp_r31->unk04, 0x3F); + fn_1_A828(temp_r31); + HuSprExecLayerSet(0x3F, 2); + return temp_r31; +} + +void fn_1_A6AC(UnkWindowDataStruct *arg0) { + HuWinExCleanup(arg0->unk04); + HuPrcKill(arg0->unk00); + HuMemDirectFree(arg0); +} + +void fn_1_A6EC(UnkWindowDataStruct *arg0) { + if (arg0->unk0C == 0) { + arg0->unk20 = 1; + } +} + +void fn_1_A704(UnkWindowDataStruct *arg0) { + if (arg0->unk0C != 0) { + arg0->unk20 = 2; + } +} + +void fn_1_A71C(UnkWindowDataStruct *arg0, s32 arg1) { + if (arg0->unk20 == 0) { + HuWinMesSet(arg0->unk04, arg1); + } else { + arg0->unk18 = arg1; + } +} + +static void fn_1_A770(UnkWindowDataStruct *arg0, s32 arg1, s16 arg2) { + HuWinInsertMesSet(arg0->unk04, arg1, arg2); +} + +void fn_1_A7B0(UnkWindowDataStruct *arg0, float arg1, float arg2) { + HuWinPosSet(arg0->unk04, arg1, arg2); +} + +void fn_1_A7F0(UnkWindowDataStruct *arg0) { + HuWinDispOn(arg0->unk04); + arg0->unk0C = 1; +} + +void fn_1_A828(UnkWindowDataStruct *arg0) { + HuWinDispOff(arg0->unk04); + arg0->unk0C = 0; +} + +static void fn_1_A860(UnkWindowDataStruct *arg0) { + if (arg0->unk20 == 0) { + arg0->unk20 = 3; + } + arg0->unk10 = 1; +} + +void fn_1_A880(UnkWindowDataStruct *arg0, s32 arg1) { + if (arg0->unk20 == 0) { + arg0->unk20 = 4; + } + arg0->unk14 = 1; + arg0->unk1C = arg1; +} + +static void fn_1_A8A4(void) { + UnkWindowDataStruct *temp_r31 = HuPrcCurrentGet()->user_data; + + while (1) { + switch (temp_r31->unk20) { + case 1: + fn_1_A7F0(temp_r31); + HuWinExAnimIn(temp_r31->unk04); + break; + case 2: + HuWinExAnimOut(temp_r31->unk04); + fn_1_A828(temp_r31); + break; + case 3: + HuWinMesWait(temp_r31->unk04); + temp_r31->unk10 = 0; + break; + case 4: + temp_r31->unk1C = HuWinChoiceGet(temp_r31->unk04, temp_r31->unk1C); + temp_r31->unk14 = 0; + break; + } + if (temp_r31->unk18 != 0) { + HuWinMesSet(temp_r31->unk04, temp_r31->unk18); + temp_r31->unk18 = 0; + } + temp_r31->unk20 = 0; + if (temp_r31->unk10 != 0) { + temp_r31->unk20 = 3; + } + if (temp_r31->unk14 != 0) { + temp_r31->unk20 = 4; + } + HuPrcVSleep(); + } +} diff --git a/src/game/board/battle.c b/src/game/board/battle.c index 491d5c22..94630e3a 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -150,15 +150,15 @@ static void ExecBattle(void) { MgInfo *var_r29; s32 var_r27 = 0; s32 sp8[] = { - 0x00750000, - 0x00760000, - 0x00770000, - 0x00780000, - 0x00790000, - 0x007A0000, - 0x007B0000, - 0x007C0000, - 0x007D0000 + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_W20, + DATADIR_W21 }; var_r29 = mgInfoTbl; @@ -498,17 +498,17 @@ static void CreateBattleMain(void) { s32 i; BattleWork *temp_r31; s32 spC[] = { - 0x00010000, - 0x00010001, - 0x00010002, - 0x00010003, - 0x00010003, - 0x00010004, - 0x00010005, - 0x00010006, - 0x00010007, - 0x00010008, - 0x00010009 + DATA_MAKE_NUM(DATADIR_BBATTLE, 0), + DATA_MAKE_NUM(DATADIR_BBATTLE, 1), + DATA_MAKE_NUM(DATADIR_BBATTLE, 2), + DATA_MAKE_NUM(DATADIR_BBATTLE, 3), + DATA_MAKE_NUM(DATADIR_BBATTLE, 3), + DATA_MAKE_NUM(DATADIR_BBATTLE, 4), + DATA_MAKE_NUM(DATADIR_BBATTLE, 5), + DATA_MAKE_NUM(DATADIR_BBATTLE, 6), + DATA_MAKE_NUM(DATADIR_BBATTLE, 7), + DATA_MAKE_NUM(DATADIR_BBATTLE, 8), + DATA_MAKE_NUM(DATADIR_BBATTLE, 9) }; battleObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, UpdateBattleMain); @@ -774,24 +774,24 @@ static void SetBattleBombState(s32 arg0) { static s8 battleChanceTbl[][3][5] = { { - { 0x0A, 0x55, 0x05, 0x00, 0x00 }, - { 0x0A, 0x4B, 0x0F, 0x00, 0x00 }, - { 0x0A, 0x41, 0x19, 0x00, 0x00 }, + { 10, 85, 5, 0, 0 }, + { 10, 75, 15, 0, 0 }, + { 10, 65, 25, 0, 0 }, }, { - { 0x05, 0x46, 0x14, 0x05, 0x00 }, - { 0x05, 0x3C, 0x19, 0x0A, 0x00 }, - { 0x05, 0x32, 0x1E, 0x0A, 0x00 }, + { 5, 70, 20, 5, 0 }, + { 5, 60, 25, 10, 0 }, + { 5, 50, 30, 10, 0 }, }, { - { 0x05, 0x3C, 0x14, 0x0A, 0x05 }, - { 0x05, 0x2D, 0x1E, 0x0F, 0x05 }, - { 0x05, 0x23, 0x1E, 0x14, 0x0A }, + { 5, 60, 20, 10, 5 }, + { 5, 45, 30, 15, 5 }, + { 5, 35, 30, 20, 10 }, }, { - { 0x05, 0x2D, 0x1E, 0x0F, 0x05 }, - { 0x05, 0x1E, 0x23, 0x14, 0x0A }, - { 0x05, 0x14, 0x23, 0x19, 0x0F } + { 5, 45, 30, 15, 5 }, + { 5, 30, 35, 20, 10 }, + { 5, 20, 35, 25, 15 } } };