Merge branch 'main' into main

This commit is contained in:
CreateSource 2024-01-21 13:25:40 -05:00 committed by GitHub
commit 83df5dfe18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
110 changed files with 11426 additions and 1767 deletions

2
.gitignore vendored
View file

@ -10,4 +10,4 @@ orig/*/*
!orig/*/.gitkeep !orig/*/.gitkeep
/*.txt /*.txt
ctx.c ctx.c
tools/output/* tools/output/*

View file

@ -9,7 +9,7 @@ Sections:
REL/executor.c: REL/executor.c:
.text start:0x00000000 end:0x000000A0 .text start:0x00000000 end:0x000000A0
REL/bootDll/bootDll.c: REL/bootDll/main.c:
.text start:0x000000A0 end:0x00002944 .text start:0x000000A0 end:0x00002944
.rodata start:0x00000000 end:0x000000DC .rodata start:0x00000000 end:0x000000DC
.data start:0x00000000 end:0x000000A0 .data start:0x00000000 end:0x000000A0

View file

@ -5,3 +5,9 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/m405Dll/main.c:
.text start:0x00000000 end:0x0000B734
.rodata start:0x00000000 end:0x000001F0
.data start:0x00000000 end:0x000004B4
.bss start:0x00000000 end:0x0000079C

View file

@ -5,3 +5,24 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/executor.c:
.text start:0x00000000 end:0x000000A0
REL/m406Dll/main.c:
.text start:0x000000A0 end:0x00002308
.rodata start:0x00000000 end:0x00000080
.data start:0x00000000 end:0x000000F0
.bss start:0x00000000 end:0x00000030
REL/m406Dll/map.c:
.text start:0x00002308 end:0x0000D65C
.rodata start:0x00000080 end:0x000002B8
.data start:0x000000F0 end:0x00000960
.bss start:0x00000030 end:0x000000D8
REL/m406Dll/player.c:
.text start:0x0000D65C end:0x00014724
.rodata start:0x000002B8 end:0x0000043C
.data start:0x00000960 end:0x00001230
.bss start:0x000000D8 end:0x000001FC

View file

@ -1,6 +1,6 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
fn_1_A0 = .text:0x000000A0; // type:function size:0x318 ModuleProlog = .text:0x000000A0; // type:function size:0x318
fn_1_3B8 = .text:0x000003B8; // type:function size:0x54 fn_1_3B8 = .text:0x000003B8; // type:function size:0x54
fn_1_40C = .text:0x0000040C; // type:function size:0xD00 fn_1_40C = .text:0x0000040C; // type:function size:0xD00
fn_1_110C = .text:0x0000110C; // type:function size:0x5C fn_1_110C = .text:0x0000110C; // type:function size:0x5C
@ -357,11 +357,11 @@ lbl_1_data_838 = .data:0x00000838; // type:object size:0xC
lbl_1_data_844 = .data:0x00000844; // type:object size:0xC lbl_1_data_844 = .data:0x00000844; // type:object size:0xC
lbl_1_data_850 = .data:0x00000850; // type:object size:0x20 lbl_1_data_850 = .data:0x00000850; // type:object size:0x20
lbl_1_data_870 = .data:0x00000870; // type:object size:0x1F data:string lbl_1_data_870 = .data:0x00000870; // type:object size:0x1F data:string
lbl_1_data_88F = .data:0x0000088F; // type:object size:0x1 data:byte lbl_1_data_88F = .data:0x0000088F; // type:object size:0x4 data:byte
lbl_1_data_893 = .data:0x00000893; // type:object size:0x1 data:byte lbl_1_data_893 = .data:0x00000893; // type:object size:0x4 data:byte
lbl_1_data_897 = .data:0x00000897; // type:object size:0x1 data:byte lbl_1_data_897 = .data:0x00000897; // type:object size:0x4 data:byte
lbl_1_data_89B = .data:0x0000089B; // type:object size:0x1 data:byte lbl_1_data_89B = .data:0x0000089B; // type:object size:0x4 data:byte
lbl_1_data_89F = .data:0x0000089F; // type:object size:0x5 data:byte lbl_1_data_89F = .data:0x0000089F; // type:object size:0x4 data:byte
lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x10 lbl_1_data_8A4 = .data:0x000008A4; // type:object size:0x10
lbl_1_data_8B4 = .data:0x000008B4; // type:object size:0x10 lbl_1_data_8B4 = .data:0x000008B4; // type:object size:0x10
lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0xC lbl_1_data_8C4 = .data:0x000008C4; // type:object size:0xC

View file

@ -5,3 +5,53 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/executor.c:
.text start:0x00000000 end:0x000000A0
REL/m407dll/player.c:
.text start:0x000000A0 end:0x000014F0
.rodata start:0x00000000 end:0x000000B8
.data start:0x00000000 end:0x00000198
.bss start:0x00000000 end:0x00000020
REL/m407dll/map.c:
.text start:0x000014F0 end:0x00001B1C
.rodata start:0x000000B8 end:0x000000D8
.data start:0x00000198 end:0x00000228
.bss start:0x00000020 end:0x00000030
REL/m407dll/camera.c:
.text start:0x00001B1C end:0x00002354
.rodata start:0x000000D8 end:0x00000120
.bss start:0x00000030 end:0x00000038
REL/m407dll/whomp.c:
.text start:0x00002354 end:0x00003AC8
.rodata start:0x00000120 end:0x00000168
.data start:0x00000228 end:0x00000278
.bss start:0x00000038 end:0x000037C8
REL/m407dll/whomp_score.c:
.text start:0x00003AC8 end:0x000041CC
.rodata start:0x00000168 end:0x00000188
.data start:0x00000278 end:0x00000288
.bss start:0x000037C8 end:0x000037E0
REL/m407dll/effect.c:
.text start:0x000041CC end:0x00004980
.rodata start:0x00000188 end:0x00000190
.data start:0x00000288 end:0x000002A8
.bss start:0x000037E0 end:0x00003978
REL/m407dll/main.c:
.text start:0x00004980 end:0x00005C5C
.rodata start:0x00000190 end:0x000001F0
.data start:0x000002A8 end:0x00000360
.bss start:0x00003978 end:0x00003988
REL/m407dll/score.c:
.text start:0x00005C5C end:0x00006404
.rodata start:0x000001F0 end:0x00000220
.data start:0x00000360 end:0x0000036C
.bss start:0x00003988 end:0x00003990

View file

@ -1,6 +1,6 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
fn_1_A0 = .text:0x000000A0; // type:function size:0x54 ModuleProlog = .text:0x000000A0; // type:function size:0x54
fn_1_F4 = .text:0x000000F4; // type:function size:0xA0 fn_1_F4 = .text:0x000000F4; // type:function size:0xA0
fn_1_194 = .text:0x00000194; // type:function size:0x50 fn_1_194 = .text:0x00000194; // type:function size:0x50
fn_1_1E4 = .text:0x000001E4; // type:function size:0x54 fn_1_1E4 = .text:0x000001E4; // type:function size:0x54
@ -196,7 +196,7 @@ lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte
lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:float lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float
@ -210,24 +210,24 @@ lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x100 lbl_1_data_0 = .data:0x00000000; // type:object size:0x100
lbl_1_data_100 = .data:0x00000100; // type:object size:0x20 lbl_1_data_100 = .data:0x00000100; // type:object size:0x20
lbl_1_data_120 = .data:0x00000120; // type:object size:0x1C lbl_1_data_120 = .data:0x00000120; // type:object size:0x19 data:string
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x20 lbl_1_data_13C = .data:0x0000013C; // type:object size:0x20
lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28
lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 lbl_1_data_184 = .data:0x00000184; // type:object size:0x8
lbl_1_data_18C = .data:0x0000018C; // type:object size:0xC lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB data:string
lbl_1_data_198 = .data:0x00000198; // type:object size:0x34 data:4byte lbl_1_data_198 = .data:0x00000198; // type:object size:0x34 data:4byte
lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x30 lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x30
lbl_1_data_1FC = .data:0x000001FC; // type:object size:0xC data:float lbl_1_data_1FC = .data:0x000001FC; // type:object size:0xC data:float
lbl_1_data_208 = .data:0x00000208; // type:object size:0xC lbl_1_data_208 = .data:0x00000208; // type:object size:0xC
lbl_1_data_214 = .data:0x00000214; // type:object size:0x4 lbl_1_data_214 = .data:0x00000214; // type:object size:0x4
lbl_1_data_218 = .data:0x00000218; // type:object size:0x10 lbl_1_data_218 = .data:0x00000218; // type:object size:0xC
lbl_1_data_228 = .data:0x00000228; // type:object size:0x10 data:4byte lbl_1_data_228 = .data:0x00000228; // type:object size:0x10 data:4byte
lbl_1_data_238 = .data:0x00000238; // type:object size:0x20 data:4byte lbl_1_data_238 = .data:0x00000238; // type:object size:0x20 data:4byte
lbl_1_data_258 = .data:0x00000258; // type:object size:0x14 lbl_1_data_258 = .data:0x00000258; // type:object size:0x14
lbl_1_data_26C = .data:0x0000026C; // type:object size:0xC lbl_1_data_26C = .data:0x0000026C; // type:object size:0xB data:string
lbl_1_data_278 = .data:0x00000278; // type:object size:0x10 lbl_1_data_278 = .data:0x00000278; // type:object size:0xC
lbl_1_data_288 = .data:0x00000288; // type:object size:0x14 lbl_1_data_288 = .data:0x00000288; // type:object size:0x14
lbl_1_data_29C = .data:0x0000029C; // type:object size:0xC lbl_1_data_29C = .data:0x0000029C; // type:object size:0x8
lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x34 lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x34
lbl_1_data_2DC = .data:0x000002DC; // type:object size:0x10 lbl_1_data_2DC = .data:0x000002DC; // type:object size:0x10
lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xC lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xC
@ -245,7 +245,7 @@ lbl_1_data_358 = .data:0x00000358; // type:object size:0x8
lbl_1_data_360 = .data:0x00000360; // type:object size:0xC lbl_1_data_360 = .data:0x00000360; // type:object size:0xC
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte
@ -259,13 +259,13 @@ lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x2 data:2byte
lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x1E30 data:2byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x1E30 data:2byte
lbl_1_bss_1E98 = .bss:0x00001E98; // type:object size:0xF18 lbl_1_bss_1E98 = .bss:0x00001E98; // type:object size:0xF18
lbl_1_bss_2DB0 = .bss:0x00002DB0; // type:object size:0xA10 lbl_1_bss_2DB0 = .bss:0x00002DB0; // type:object size:0xA10
lbl_1_bss_37C0 = .bss:0x000037C0; // type:object size:0x8 data:4byte lbl_1_bss_37C0 = .bss:0x000037C0; // type:object size:0x4 data:4byte
lbl_1_bss_37C8 = .bss:0x000037C8; // type:object size:0x10 lbl_1_bss_37C8 = .bss:0x000037C8; // type:object size:0x10
lbl_1_bss_37D8 = .bss:0x000037D8; // type:object size:0x8 data:4byte lbl_1_bss_37D8 = .bss:0x000037D8; // type:object size:0x4 data:4byte
lbl_1_bss_37E0 = .bss:0x000037E0; // type:object size:0x190 lbl_1_bss_37E0 = .bss:0x000037E0; // type:object size:0x190
lbl_1_bss_3970 = .bss:0x00003970; // type:object size:0x8 data:4byte lbl_1_bss_3970 = .bss:0x00003970; // type:object size:0x4 data:4byte
lbl_1_bss_3978 = .bss:0x00003978; // type:object size:0x2 data:2byte lbl_1_bss_3978 = .bss:0x00003978; // type:object size:0x2 data:2byte
lbl_1_bss_397C = .bss:0x0000397C; // type:object size:0x4 data:4byte lbl_1_bss_397C = .bss:0x0000397C; // type:object size:0x4 data:4byte
lbl_1_bss_3980 = .bss:0x00003980; // type:object size:0x8 data:4byte lbl_1_bss_3980 = .bss:0x00003980; // type:object size:0x4 data:4byte
lbl_1_bss_3988 = .bss:0x00003988; // type:object size:0x4 data:4byte lbl_1_bss_3988 = .bss:0x00003988; // type:object size:0x4 data:4byte
lbl_1_bss_398C = .bss:0x0000398C; // type:object size:0x4 data:4byte lbl_1_bss_398C = .bss:0x0000398C; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,12 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/executor.c:
.text start:0x00000000 end:0x000000A0
REL/messDll/main.c:
.text start:0x000000A0 end:0x000014A0
.rodata start:0x00000000 end:0x00000078
.data start:0x00000000 end:0x00000460
.bss start:0x00000000 end:0x00000038

View file

@ -1,6 +1,6 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
fn_1_A0 = .text:0x000000A0; // type:function size:0x21C ModuleProlog = .text:0x000000A0; // type:function size:0x21C
fn_1_2BC = .text:0x000002BC; // type:function size:0x44 fn_1_2BC = .text:0x000002BC; // type:function size:0x44
fn_1_300 = .text:0x00000300; // type:function size:0xB88 fn_1_300 = .text:0x00000300; // type:function size:0xB88
fn_1_E88 = .text:0x00000E88; // type:function size:0x328 fn_1_E88 = .text:0x00000E88; // type:function size:0x328

View file

@ -5,3 +5,50 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/mstory2Dll/main.c:
.text start:0x00000000 end:0x00007DB0
.rodata start:0x00000000 end:0x00000118
.data start:0x00000000 end:0x000003A0
.bss start:0x00000000 end:0x00000078
REL/mstory2Dll/board_entrance.c:
.text start:0x00007DB0 end:0x0000B37C
.rodata start:0x00000118 end:0x000001A8
.data start:0x000003A0 end:0x00000520
.bss start:0x00000078 end:0x00000298
REL/mstory2Dll/board_clear.c:
.text start:0x0000B37C end:0x0000E570
.rodata start:0x000001A8 end:0x00000248
.data start:0x00000520 end:0x00000698
.bss start:0x00000298 end:0x000004E0
REL/mstory2Dll/board_miss.c:
.text start:0x0000E570 end:0x000123C8
.rodata start:0x00000248 end:0x00000310
.data start:0x00000698 end:0x00000D50
.bss start:0x000004E0 end:0x00000790
REL/mstory2Dll/mg_clear.c:
.text start:0x000123C8 end:0x00016060
.rodata start:0x00000310 end:0x000003D0
.data start:0x00000D50 end:0x00000DB8
.bss start:0x00000790 end:0x00000968
REL/mstory2Dll/mg_miss.c:
.text start:0x00016060 end:0x000186D0
.rodata start:0x000003D0 end:0x00000440
.data start:0x00000DB8 end:0x00000EF8
.bss start:0x00000968 end:0x00000B38
REL/mstory2Dll/ending.c:
.text start:0x000186D0 end:0x0001B560
.rodata start:0x00000440 end:0x000004B8
.data start:0x00000EF8 end:0x00001113
.bss start:0x00000B38 end:0x00000D10
REL/mstory2Dll/save.c:
.text start:0x0001B560 end:0x0001B95C
.rodata start:0x000004B8 end:0x000004C8
.bss start:0x00000D10 end:0x00000D18

View file

@ -537,7 +537,8 @@ lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12
lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_308 = .data:0x00000308; // type:object size:0x20
lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 lbl_1_data_328 = .data:0x00000328; // type:object size:0x60
lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string
lbl_1_data_399 = .data:0x00000399; // type:object size:0x33 lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 data:string
lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C
lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10
lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte
lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte
@ -555,7 +556,7 @@ lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string
lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string
lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string
lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF data:string
lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string
lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string
lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string
@ -572,7 +573,8 @@ lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string
lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string
lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string
lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 lbl_1_data_668 = .data:0x00000668; // type:object size:0x30
lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C
lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20
lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string
lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string
lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string
@ -588,7 +590,7 @@ lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string
lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string
lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string
lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C
lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30
lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0
lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10
lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte
@ -610,7 +612,7 @@ lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string
lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string
lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string
lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string
lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 data:string
lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string
lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string
lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string
@ -625,7 +627,7 @@ lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string
lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string
lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string
lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string
lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C data:string
lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10
lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte
lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte
@ -654,8 +656,10 @@ lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string
lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string
lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20
lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x20 data:4byte
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x44 data:float
lbl_1_bss_68 = .bss:0x00000068; // type:object size:0xC data:float
lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte
lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x40 data:4byte
lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte
@ -680,7 +684,7 @@ lbl_1_bss_5E8 = .bss:0x000005E8; // type:object size:0x28 data:4byte
lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte lbl_1_bss_610 = .bss:0x00000610; // type:object size:0x28 data:4byte
lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte lbl_1_bss_638 = .bss:0x00000638; // type:object size:0x28 data:4byte
lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte lbl_1_bss_660 = .bss:0x00000660; // type:object size:0x28 data:4byte
lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x108 data:float lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x104 data:float
lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte lbl_1_bss_790 = .bss:0x00000790; // type:object size:0x4 data:4byte
lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte lbl_1_bss_794 = .bss:0x00000794; // type:object size:0x4 data:4byte
lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte lbl_1_bss_798 = .bss:0x00000798; // type:object size:0x28 data:4byte
@ -688,7 +692,7 @@ lbl_1_bss_7C0 = .bss:0x000007C0; // type:object size:0x28 data:4byte
lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte lbl_1_bss_7E8 = .bss:0x000007E8; // type:object size:0x28 data:4byte
lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte lbl_1_bss_810 = .bss:0x00000810; // type:object size:0x28 data:4byte
lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte lbl_1_bss_838 = .bss:0x00000838; // type:object size:0x28 data:4byte
lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x108 data:4byte lbl_1_bss_860 = .bss:0x00000860; // type:object size:0x104 data:4byte
lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte lbl_1_bss_968 = .bss:0x00000968; // type:object size:0x4 data:4byte
lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte lbl_1_bss_96C = .bss:0x0000096C; // type:object size:0x28 data:4byte
lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte lbl_1_bss_994 = .bss:0x00000994; // type:object size:0x28 data:4byte

View file

@ -5,3 +5,27 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/mstory3Dll/main.c:
.text start:0x00000000 end:0x00006A78
.rodata start:0x00000000 end:0x00000110
.data start:0x00000000 end:0x00000130
.bss start:0x00000000 end:0x00000058
REL/mstory3Dll/result_seq.c:
.text start:0x00006A78 end:0x000157F0
.rodata start:0x00000110 end:0x00000418
.data start:0x00000130 end:0x000007E0
.bss start:0x00000058 end:0x000018D0
REL/mstory3Dll/result.c:
.text start:0x000157F0 end:0x0001DED8
.rodata start:0x00000418 end:0x000005D0
.data start:0x000007E0 end:0x00000A90
.bss start:0x000018D0 end:0x00001CE8
REL/mstory3Dll/win_effect.c:
.text start:0x0001DED8 end:0x0001F100
.rodata start:0x000005D0 end:0x00000644
.data start:0x00000A90 end:0x00000AAB
.bss start:0x00001CE8 end:0x00001D50

View file

@ -345,7 +345,7 @@ lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float
lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float
lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x2C data:4byte lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 data:4byte
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 data:byte lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 data:byte
lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float
@ -442,14 +442,14 @@ lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double
lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 lbl_1_data_0 = .data:0x00000000; // type:object size:0x70
lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 data:string lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 data:string
lbl_1_data_95 = .data:0x00000095; // type:object size:0xF lbl_1_data_95 = .data:0x00000095; // type:object size:0xD data:string
lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8
lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 data:string lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 data:string
lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 data:string lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 data:string
lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 data:string lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 data:string
lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A data:string lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A data:string
lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A data:string lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A data:string
lbl_1_data_11B = .data:0x0000011B; // type:object size:0x15 lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE data:string
lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float
lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 lbl_1_data_160 = .data:0x00000160; // type:object size:0x50
lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50
@ -465,11 +465,11 @@ lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 data:string
lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF data:string lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF data:string
lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C data:string lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C data:string
lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D data:string lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D data:string
lbl_1_data_346 = .data:0x00000346; // type:object size:0x1E lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C data:string
lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte
lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC
lbl_1_data_378 = .data:0x00000378; // type:object size:0xF data:string lbl_1_data_378 = .data:0x00000378; // type:object size:0xF data:string
lbl_1_data_387 = .data:0x00000387; // type:object size:0x11 lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 data:string
jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local
lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 data:string lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 data:string
lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 data:string lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 data:string
@ -485,7 +485,7 @@ lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 data:string
lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 data:string lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 data:string
lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12 lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12
lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 lbl_1_data_504 = .data:0x00000504; // type:object size:0x288
lbl_1_data_78C = .data:0x0000078C; // type:object size:0x54 lbl_1_data_78C = .data:0x0000078C; // type:object size:0x5
lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 data:string lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 data:string
lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 data:string lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 data:string
lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 data:string lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 data:string
@ -508,7 +508,8 @@ lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x1B
lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 data:string lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 data:string
lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 data:string lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x54 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte
lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte
lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,9 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/mstory4Dll/main.c:
.text start:0x00000000 end:0x00001A2C
.rodata start:0x00000000 end:0x00000048
.data start:0x00000000 end:0x000006F6
.bss start:0x00000000 end:0x00000018

View file

@ -5,3 +5,39 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/mstoryDll/main.c:
.text start:0x00000000 end:0x00006AFC
.rodata start:0x00000000 end:0x00000100
.data start:0x00000000 end:0x00000190
.bss start:0x00000000 end:0x00000058
REL/mstoryDll/board_clear.c:
.text start:0x00006AFC end:0x0000A830
.rodata start:0x00000100 end:0x00000268
.data start:0x00000190 end:0x00000388
.bss start:0x00000058 end:0x000002C8
REL/mstoryDll/board_miss.c:
.text start:0x0000A830 end:0x0000E710
.rodata start:0x00000268 end:0x000003B8
.data start:0x00000388 end:0x00000570
.bss start:0x000002C8 end:0x00000558
REL/mstoryDll/mg_clear.c:
.text start:0x0000E710 end:0x00011624
.rodata start:0x000003B8 end:0x000004E0
.data start:0x00000570 end:0x00000AF8
.bss start:0x00000558 end:0x00000710
REL/mstoryDll/mg_miss.c:
.text start:0x00011624 end:0x00013B48
.rodata start:0x000004E0 end:0x000005A8
.data start:0x00000AF8 end:0x00000C50
.bss start:0x00000710 end:0x000008B8
REL/mstoryDll/save.c:
.text start:0x00013B48 end:0x000141A0
.rodata start:0x000005A8 end:0x000005B8
.data start:0x00000C50 end:0x00000C98
.bss start:0x000008B8 end:0x000008C0

View file

@ -277,7 +277,7 @@ lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte
lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 data:byte lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:byte
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float
lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float
@ -390,7 +390,7 @@ lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string
lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string
lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string
lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string
lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE data:string
lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_190 = .data:0x00000190; // type:object size:0x50
lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C
lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string
@ -406,8 +406,8 @@ lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string
lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string
lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string
lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string
lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A data:string
lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 lbl_1_data_354 = .data:0x00000354; // type:object size:0x30
lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C
lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string
@ -424,7 +424,7 @@ lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string
lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string
lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string
lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string
lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 data:string
lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_540 = .data:0x00000540; // type:object size:0x30
lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0
lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50
@ -445,7 +445,7 @@ lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string
lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string
lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string
lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string
lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 data:string
lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C
lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string
lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string
@ -459,10 +459,11 @@ lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string
lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string
lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string
lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string
lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A data:string
lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x54 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0xC data:4byte
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte
lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte
lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,23 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/executor.c:
.text start:0x00000000 end:0x000000A0
REL/resultDll/main.c:
.text start:0x000000A0 end:0x00006490
.rodata start:0x00000000 end:0x00000160
.data start:0x00000000 end:0x000004E8
.bss start:0x00000000 end:0x00000190
REL/resultDll/battle.c:
.text start:0x00006490 end:0x00008FF8
.rodata start:0x00000160 end:0x00000220
.data start:0x000004E8 end:0x000008B8
.bss start:0x00000190 end:0x00001ADC
REL/resultDll/datalist.c:
.text start:0x00008FF8 end:0x0000942C
.rodata start:0x00000220 end:0x00000230
.data start:0x000008B8 end:0x00000918

View file

@ -1,6 +1,6 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
fn_1_A0 = .text:0x000000A0; // type:function size:0x438 ModuleProlog = .text:0x000000A0; // type:function size:0x438
fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0 fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0
fn_1_888 = .text:0x00000888; // type:function size:0x2F0 fn_1_888 = .text:0x00000888; // type:function size:0x2F0
fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4 fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4
@ -145,11 +145,12 @@ lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30 lbl_1_data_408 = .data:0x00000408; // type:object size:0x30
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10 lbl_1_data_438 = .data:0x00000438; // type:object size:0x10
lbl_1_data_448 = .data:0x00000448; // type:object size:0x8 lbl_1_data_448 = .data:0x00000448; // type:object size:0x8
lbl_1_data_450 = .data:0x00000450; // type:object size:0x38 lbl_1_data_450 = .data:0x00000450; // type:object size:0x18
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30 lbl_1_data_488 = .data:0x00000488; // type:object size:0x30
lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 data:string lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 data:string lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 data:string
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xE lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB data:string
lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270 lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28 lbl_1_data_758 = .data:0x00000758; // type:object size:0x28
lbl_1_data_780 = .data:0x00000780; // type:object size:0x70 lbl_1_data_780 = .data:0x00000780; // type:object size:0x70
@ -160,7 +161,7 @@ lbl_1_data_860 = .data:0x00000860; // type:object size:0x20
lbl_1_data_880 = .data:0x00000880; // type:object size:0x20 lbl_1_data_880 = .data:0x00000880; // type:object size:0x20
lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte
lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 data:string lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 data:string
lbl_1_data_8AE = .data:0x000008AE; // type:object size:0xA lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 data:string
lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60 lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
@ -187,7 +188,7 @@ lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte
lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte
lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte
lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte
lbl_1_bss_184 = .bss:0x00000184; // type:object size:0xC data:4byte lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x8 data:4byte
lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte
lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680 lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680
lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x14 lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x14

View file

@ -5,3 +5,9 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/safDll/main.c:
.text start:0x00000000 end:0x000003AC
.rodata start:0x00000000 end:0x00000024
.data start:0x00000000 end:0x00000039
.bss start:0x00000000 end:0x00000300

View file

@ -9,7 +9,7 @@ Sections:
REL/executor.c: REL/executor.c:
.text start:0x00000000 end:0x000000A0 .text start:0x00000000 end:0x000000A0
REL/selmenuDll/selmenuDll.c: REL/selmenuDll/main.c:
.text start:0x000000A0 end:0x00005198 .text start:0x000000A0 end:0x00005198
.rodata start:0x00000000 end:0x00000084 .rodata start:0x00000000 end:0x00000084
.data start:0x00000000 end:0x00000B3F .data start:0x00000000 end:0x00000B3F

View file

@ -9,7 +9,7 @@ Sections:
REL/executor.c: REL/executor.c:
.text start:0x00000000 end:0x000000A0 .text start:0x00000000 end:0x000000A0
REL/staffDll/staffDll.c: REL/staffDll/main.c:
.text start:0x000000A0 end:0x00001290 .text start:0x000000A0 end:0x00001290
.rodata start:0x00000000 end:0x00000094 .rodata start:0x00000000 end:0x00000094
.data start:0x00000000 end:0x00001178 .data start:0x00000000 end:0x00001178

View file

@ -9,7 +9,7 @@ Sections:
REL/executor.c: REL/executor.c:
.text start:0x00000000 end:0x000000A0 .text start:0x00000000 end:0x000000A0
REL/subchrselDll/subchrselDll.c: REL/subchrselDll/main.c:
.text start:0x000000A0 end:0x000007B8 .text start:0x000000A0 end:0x000007B8
.rodata start:0x00000000 end:0x00000018 .rodata start:0x00000000 end:0x00000018
.data start:0x00000000 end:0x000000E1 .data start:0x00000000 end:0x000000E1

View file

@ -10,14 +10,14 @@ REL/board_executor.c:
.text start:0x00000000 end:0x000000E0 .text start:0x00000000 end:0x000000E0
REL/w03Dll/main.c: REL/w03Dll/main.c:
.text start:0x000000E0 end:0x000010E4 .text start:0x000000E0 end:0x000012C8
.rodata start:0x00000000 end:0x00000030 .rodata start:0x00000000 end:0x00000038
.data start:0x00000000 end:0x00000280 .data start:0x00000000 end:0x00000280
.bss start:0x00000000 end:0x00000028 .bss start:0x00000000 end:0x00000028
REL/w03Dll/statue.c: REL/w03Dll/statue.c:
.text start:0x000010E4 end:0x00003058 .text start:0x000012C8 end:0x00003058
.rodata start:0x00000030 end:0x000000D8 .rodata start:0x00000038 end:0x000000D8
.data start:0x00000280 end:0x00000310 .data start:0x00000280 end:0x00000310
.bss start:0x00000028 end:0x00000070 .bss start:0x00000028 end:0x00000070
@ -31,12 +31,13 @@ REL/w03Dll/river.c:
.text start:0x000063F4 end:0x0000785C .text start:0x000063F4 end:0x0000785C
.rodata start:0x00000218 end:0x000002A8 .rodata start:0x00000218 end:0x000002A8
.data start:0x00000368 end:0x00000410 .data start:0x00000368 end:0x00000410
.bss start:0x00000120 end:0x00000140 .bss start:0x00000120 end:0x00000138
REL/w03Dll/smoke.c: REL/w03Dll/smoke.c:
.text start:0x0000785C end:0x00007ABC .text start:0x0000785C end:0x00007ABC
.rodata start:0x000002A8 end:0x000002B0 .rodata start:0x000002A8 end:0x000002B0
.data start:0x00000410 end:0x00000450 .data start:0x00000410 end:0x00000450
.bss start:0x00000138 end:0x00000140
REL/w03Dll/mg_coin.c: REL/w03Dll/mg_coin.c:
.text start:0x00007ABC end:0x00009A7C .text start:0x00007ABC end:0x00009A7C

View file

@ -126,41 +126,41 @@ fn_1_BDAC = .text:0x0000BDAC; // type:function size:0x84
fn_1_BE30 = .text:0x0000BE30; // type:function size:0x418 fn_1_BE30 = .text:0x0000BE30; // type:function size:0x418
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 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 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 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 data:float lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 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 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 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 data:float lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float
lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float
lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC data:4byte lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0xC scope:local data:4byte
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x24 data:4byte lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x24 scope:local data:4byte
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 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 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 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 data:float lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x6 data:2byte lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x6 scope:local data:2byte
lbl_1_rodata_BE = .rodata:0x000000BE; // type:object size:0x1 data:byte lbl_1_rodata_BE = .rodata:0x000000BE; // type:object size:0x1 scope:local data:byte
lbl_1_rodata_C2 = .rodata:0x000000C2; // type:object size:0x6 data:byte lbl_1_rodata_C2 = .rodata:0x000000C2; // type:object size:0x6 scope:local data:byte
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 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 data:float lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:float lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:float
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float
lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
@ -222,36 +222,36 @@ lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:float lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float
lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float
lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float
lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float
lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float
lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float
lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
@ -290,43 +290,43 @@ lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float
lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float
lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float
lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float
lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double
lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double
lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double
lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E0 lbl_1_data_0 = .data:0x00000000; // type:object size:0x1E0
lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x2 data:2byte lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x2 data:2byte
lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x2 data:2byte lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0x2 data:2byte
@ -366,18 +366,18 @@ lbl_1_data_388 = .data:0x00000388; // type:object size:0x2 data:2byte
lbl_1_data_38A = .data:0x0000038A; // type:object size:0x2 data:2byte lbl_1_data_38A = .data:0x0000038A; // type:object size:0x2 data:2byte
lbl_1_data_38C = .data:0x0000038C; // type:object size:0x2 data:2byte lbl_1_data_38C = .data:0x0000038C; // type:object size:0x2 data:2byte
lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 lbl_1_data_390 = .data:0x00000390; // type:object size:0x10
lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0xB data:string lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0xB scope:local data:string
lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x6 data:string lbl_1_data_3AB = .data:0x000003AB; // type:object size:0x6 scope:local data:string
lbl_1_data_3B1 = .data:0x000003B1; // type:object size:0x7 lbl_1_data_3B1 = .data:0x000003B1; // type:object size:0x7 scope:local
lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x48 lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x48
lbl_1_data_400 = .data:0x00000400; // type:object size:0x3 data:string lbl_1_data_400 = .data:0x00000400; // type:object size:0x3 scope:local data:string
lbl_1_data_403 = .data:0x00000403; // type:object size:0xD lbl_1_data_403 = .data:0x00000403; // type:object size:0xD scope:local
lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 data:string lbl_1_data_410 = .data:0x00000410; // type:object size:0x8 scope:local data:string
lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 data:string lbl_1_data_418 = .data:0x00000418; // type:object size:0x8 scope:local data:string
lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 data:string lbl_1_data_420 = .data:0x00000420; // type:object size:0x8 scope:local data:string
lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 data:string lbl_1_data_428 = .data:0x00000428; // type:object size:0x8 scope:local data:string
lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 data:string lbl_1_data_430 = .data:0x00000430; // type:object size:0x8 scope:local data:string
lbl_1_data_438 = .data:0x00000438; // type:object size:0x18 lbl_1_data_438 = .data:0x00000438; // type:object size:0x18 scope:local
lbl_1_data_450 = .data:0x00000450; // type:object size:0x4 data:4byte lbl_1_data_450 = .data:0x00000450; // type:object size:0x4 data:4byte
lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte
lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte
@ -396,10 +396,10 @@ lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x2 data:2byte
lbl_1_data_4E0 = .data:0x000004E0; // type:object size:0x4 data:4byte lbl_1_data_4E0 = .data:0x000004E0; // type:object size:0x4 data:4byte
lbl_1_data_4E4 = .data:0x000004E4; // type:object size:0x2 data:2byte lbl_1_data_4E4 = .data:0x000004E4; // type:object size:0x2 data:2byte
lbl_1_data_4E6 = .data:0x000004E6; // type:object size:0xE lbl_1_data_4E6 = .data:0x000004E6; // type:object size:0xE
lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x5 data:string lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x5 scope:local data:string
lbl_1_data_4F9 = .data:0x000004F9; // type:object size:0x6 data:string lbl_1_data_4F9 = .data:0x000004F9; // type:object size:0x6 scope:local data:string
lbl_1_data_4FF = .data:0x000004FF; // type:object size:0x9 lbl_1_data_4FF = .data:0x000004FF; // type:object size:0x9 scope:local
lbl_1_data_508 = .data:0x00000508; // type:object size:0xC lbl_1_data_508 = .data:0x00000508; // type:object size:0xC scope:local
lbl_1_data_514 = .data:0x00000514; // type:object size:0x38 lbl_1_data_514 = .data:0x00000514; // type:object size:0x38
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,42 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
REL/w04Dll/main.c:
.text start:0x000000E0 end:0x000012FC
.rodata start:0x00000000 end:0x00000040
.data start:0x00000000 end:0x00000298
.bss start:0x00000000 end:0x00000038
REL/w04Dll/bridge.c:
.text start:0x000012FC end:0x00002044
.rodata start:0x00000040 end:0x00000098
.data start:0x00000298 end:0x000002D0
.bss start:0x00000038 end:0x00000048
REL/w04Dll/boo_event.c:
.text start:0x00002044 end:0x00006024
.rodata start:0x00000098 end:0x00000180
.data start:0x000002D0 end:0x000003A8
.bss start:0x00000048 end:0x00000100
REL/w04Dll/big_boo.c:
.text start:0x00006024 end:0x0000A0F8
.rodata start:0x00000180 end:0x000002C0
.data start:0x000003A8 end:0x000004F0
.bss start:0x00000100 end:0x00000288
REL/w04Dll/mg_item.c:
.text start:0x0000A0F8 end:0x0000C7A0
.rodata start:0x000002C0 end:0x000003A0
.data start:0x000004F0 end:0x00000588
.bss start:0x00000288 end:0x000002B0
REL/w04Dll/mg_coin.c:
.text start:0x0000C7A0 end:0x0000EA0C
.rodata start:0x000003A0 end:0x00000428
.data start:0x00000588 end:0x0000063F
.bss start:0x000002B0 end:0x00000328

View file

@ -1,8 +1,8 @@
fn_1_0 = .text:0x00000000; // type:function size:0x30 InitBoard = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
fn_1_E0 = .text:0x000000E0; // type:function size:0x514 BoardCreate = .text:0x000000E0; // type:function size:0x514
fn_1_5F4 = .text:0x000005F4; // type:function size:0x15C BoardDestroy = .text:0x000005F4; // type:function size:0x15C
fn_1_750 = .text:0x00000750; // type:function size:0x44 fn_1_750 = .text:0x00000750; // type:function size:0x44
fn_1_794 = .text:0x00000794; // type:function size:0x4 fn_1_794 = .text:0x00000794; // type:function size:0x4
fn_1_798 = .text:0x00000798; // type:function size:0x64 fn_1_798 = .text:0x00000798; // type:function size:0x64
@ -326,7 +326,7 @@ lbl_1_data_288 = .data:0x00000288; // type:object size:0x8
lbl_1_data_290 = .data:0x00000290; // type:object size:0x8 lbl_1_data_290 = .data:0x00000290; // type:object size:0x8
lbl_1_data_298 = .data:0x00000298; // type:object size:0x8 lbl_1_data_298 = .data:0x00000298; // type:object size:0x8
lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0xC lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0xC
lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x24 lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x20
lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x20 lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x20
lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte
lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20
@ -340,12 +340,12 @@ lbl_1_data_358 = .data:0x00000358; // type:object size:0x10
lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 data:string lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 data:string
lbl_1_data_370 = .data:0x00000370; // type:object size:0x12 data:string lbl_1_data_370 = .data:0x00000370; // type:object size:0x12 data:string
lbl_1_data_382 = .data:0x00000382; // type:object size:0x11 data:string lbl_1_data_382 = .data:0x00000382; // type:object size:0x11 data:string
lbl_1_data_393 = .data:0x00000393; // type:object size:0x15 lbl_1_data_393 = .data:0x00000393; // type:object size:0x10
lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 data:string lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 data:string
lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 data:string lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 data:string
lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 data:string lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 data:string
lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 data:string lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 data:string
lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x8 lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x5 data:string
lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 data:4byte lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 data:4byte
lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14 lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14
lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20 lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20
@ -356,8 +356,8 @@ lbl_1_data_45F = .data:0x0000045F; // type:object size:0x2 data:string
lbl_1_data_461 = .data:0x00000461; // type:object size:0xC data:string lbl_1_data_461 = .data:0x00000461; // type:object size:0xC data:string
lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B
lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 data:string lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 data:string
lbl_1_data_48B = .data:0x0000048B; // type:object size:0x11 lbl_1_data_48B = .data:0x0000048B; // type:object size:0xF data:string
lbl_1_data_49C = .data:0x0000049C; // type:object size:0x54 lbl_1_data_49C = .data:0x0000049C; // type:object size:0x50
lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 data:string lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 data:string
lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 data:string lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 data:string
lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 data:string lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 data:string
@ -388,7 +388,7 @@ lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x24 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x20 data:2byte
lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte
lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte
@ -410,7 +410,7 @@ lbl_1_bss_C4 = .bss:0x000000C4; // type:object size:0x10
lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10 lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10 lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10
lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 data:2byte lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 data:2byte
lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x6 data:2byte lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x2 data:2byte
lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte
lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte
lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC
@ -427,7 +427,7 @@ lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 data:4byte
lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 data:2byte lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 data:2byte
lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 data:2byte lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 data:2byte
lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 data:2byte lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 data:2byte
lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x6 data:2byte lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x2 data:2byte
lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 data:4byte lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 data:4byte
lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 data:4byte lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 data:4byte
lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:float lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:float

View file

@ -5,3 +5,42 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
REL/w05Dll/main.c:
.text start:0x000000E0 end:0x000013D4
.rodata start:0x00000000 end:0x00000048
.data start:0x00000000 end:0x00000150
.bss start:0x00000000 end:0x00000028
REL/w05Dll/hotel.c:
.text start:0x000013D4 end:0x00002B40
.rodata start:0x00000048 end:0x00000090
.data start:0x00000150 end:0x000001A8
.bss start:0x00000028 end:0x00000030
REL/w05Dll/monkey.c:
.text start:0x00002B40 end:0x00003F74
.rodata start:0x00000090 end:0x000000F8
.data start:0x000001A8 end:0x00000200
.bss start:0x00000030 end:0x00000058
REL/w05Dll/dolphin.c:
.text start:0x00003F74 end:0x00006B28
.rodata start:0x000000F8 end:0x000001A8
.data start:0x00000200 end:0x00000310
.bss start:0x00000058 end:0x00000078
REL/w05Dll/mg_item.c:
.text start:0x00006B28 end:0x00009680
.rodata start:0x000001A8 end:0x00000268
.data start:0x00000310 end:0x00000450
.bss start:0x00000078 end:0x000000B8
REL/w05Dll/mg_coin.c:
.text start:0x00009680 end:0x0000B644
.rodata start:0x00000268 end:0x00000300
.data start:0x00000450 end:0x000004C7
.bss start:0x000000B8 end:0x00000108

View file

@ -1,8 +1,8 @@
fn_1_0 = .text:0x00000000; // type:function size:0x30 InitBoard = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
fn_1_E0 = .text:0x000000E0; // type:function size:0x4D8 BoardCreate = .text:0x000000E0; // type:function size:0x4D8
fn_1_5B8 = .text:0x000005B8; // type:function size:0x18C BoardDestroy = .text:0x000005B8; // type:function size:0x18C
fn_1_744 = .text:0x00000744; // type:function size:0x44 fn_1_744 = .text:0x00000744; // type:function size:0x44
fn_1_788 = .text:0x00000788; // type:function size:0x4 fn_1_788 = .text:0x00000788; // type:function size:0x4
fn_1_78C = .text:0x0000078C; // type:function size:0xA0 fn_1_78C = .text:0x0000078C; // type:function size:0xA0
@ -256,10 +256,10 @@ lbl_1_data_144 = .data:0x00000144; // type:object size:0x8
lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4
lbl_1_data_150 = .data:0x00000150; // type:object size:0x14 lbl_1_data_150 = .data:0x00000150; // type:object size:0x14
lbl_1_data_164 = .data:0x00000164; // type:object size:0x2 data:2byte lbl_1_data_164 = .data:0x00000164; // type:object size:0x2 data:2byte
lbl_1_data_166 = .data:0x00000166; // type:object size:0xA lbl_1_data_166 = .data:0x00000166; // type:object size:0x7 data:string
lbl_1_data_170 = .data:0x00000170; // type:object size:0x10 lbl_1_data_170 = .data:0x00000170; // type:object size:0x10
lbl_1_data_180 = .data:0x00000180; // type:object size:0x4 data:4byte lbl_1_data_180 = .data:0x00000180; // type:object size:0x4 data:4byte
lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string
lbl_1_data_188 = .data:0x00000188; // type:object size:0x10 lbl_1_data_188 = .data:0x00000188; // type:object size:0x10
lbl_1_data_198 = .data:0x00000198; // type:object size:0x8 lbl_1_data_198 = .data:0x00000198; // type:object size:0x8
lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x8 data:string lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x8 data:string
@ -271,19 +271,19 @@ lbl_1_data_1CC = .data:0x000001CC; // type:object size:0xC
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x8 data:string lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x8 data:string
lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x8 data:string lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x8 data:string
lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xA data:string lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xA data:string
lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xB data:string
lbl_1_data_200 = .data:0x00000200; // type:object size:0x8 data:string lbl_1_data_200 = .data:0x00000200; // type:object size:0x8 data:string
lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 data:string lbl_1_data_208 = .data:0x00000208; // type:object size:0x8 data:string
lbl_1_data_210 = .data:0x00000210; // type:object size:0x6 data:string lbl_1_data_210 = .data:0x00000210; // type:object size:0x6 data:string
lbl_1_data_216 = .data:0x00000216; // type:object size:0x6 data:string lbl_1_data_216 = .data:0x00000216; // type:object size:0x6 data:string
lbl_1_data_21C = .data:0x0000021C; // type:object size:0x7 data:string lbl_1_data_21C = .data:0x0000021C; // type:object size:0x7 data:string
lbl_1_data_223 = .data:0x00000223; // type:object size:0x9 lbl_1_data_223 = .data:0x00000223; // type:object size:0x7 data:string
lbl_1_data_22C = .data:0x0000022C; // type:object size:0x18 lbl_1_data_22C = .data:0x0000022C; // type:object size:0x18
lbl_1_data_244 = .data:0x00000244; // type:object size:0x18 lbl_1_data_244 = .data:0x00000244; // type:object size:0x18
lbl_1_data_25C = .data:0x0000025C; // type:object size:0x48 lbl_1_data_25C = .data:0x0000025C; // type:object size:0x48
lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x48 lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x48
lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x8 lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x8
lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x1C lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x18
lbl_1_data_310 = .data:0x00000310; // type:object size:0x8 lbl_1_data_310 = .data:0x00000310; // type:object size:0x8
lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 data:string lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 data:string
lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 data:string lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 data:string
@ -291,8 +291,9 @@ lbl_1_data_326 = .data:0x00000326; // type:object size:0xA
lbl_1_data_330 = .data:0x00000330; // type:object size:0xC lbl_1_data_330 = .data:0x00000330; // type:object size:0xC
lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 data:string lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 data:string
lbl_1_data_343 = .data:0x00000343; // type:object size:0xD data:string lbl_1_data_343 = .data:0x00000343; // type:object size:0xD data:string
lbl_1_data_350 = .data:0x00000350; // type:object size:0xF0 lbl_1_data_350 = .data:0x00000350; // type:object size:0x38
lbl_1_data_440 = .data:0x00000440; // type:object size:0x10 lbl_1_data_388 = .data:0x00000388; // type:object size:0xB8
lbl_1_data_440 = .data:0x00000440; // type:object size:0xC
lbl_1_data_450 = .data:0x00000450; // type:object size:0x6 data:string lbl_1_data_450 = .data:0x00000450; // type:object size:0x6 data:string
lbl_1_data_456 = .data:0x00000456; // type:object size:0x7 data:string lbl_1_data_456 = .data:0x00000456; // type:object size:0x7 data:string
lbl_1_data_45D = .data:0x0000045D; // type:object size:0x7 data:string lbl_1_data_45D = .data:0x0000045D; // type:object size:0x7 data:string
@ -312,20 +313,20 @@ lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:2byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x14 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0xE data:2byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:2byte lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:2byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x8 data:2byte
lbl_1_bss_38 = .bss:0x00000038; // type:object size:0xC data:float lbl_1_bss_38 = .bss:0x00000038; // type:object size:0xC data:float
lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x2 data:2byte
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x2 data:2byte
lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x2 data:2byte
lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x2 data:2byte
lbl_1_bss_4E = .bss:0x0000004E; // type:object size:0xA data:2byte lbl_1_bss_4E = .bss:0x0000004E; // type:object size:0x4 data:2byte
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0xC lbl_1_bss_58 = .bss:0x00000058; // type:object size:0xC
lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte
lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte
lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x6 lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x6
lbl_1_bss_72 = .bss:0x00000072; // type:object size:0x6 data:2byte lbl_1_bss_72 = .bss:0x00000072; // type:object size:0x4 data:2byte
lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte
lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0xC lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0xC
lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,42 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
REL/w06Dll/main.c:
.text start:0x000000E0 end:0x00000D70
.rodata start:0x00000000 end:0x00000040
.data start:0x00000000 end:0x000001A8
.bss start:0x00000000 end:0x00000018
REL/w06Dll/mg_item.c:
.text start:0x00000D70 end:0x00004878
.rodata start:0x00000040 end:0x000000F0
.data start:0x000001A8 end:0x000001D8
.bss start:0x00000018 end:0x00000048
REL/w06Dll/mg_coin.c:
.text start:0x00004878 end:0x00006EF0
.rodata start:0x000000F0 end:0x000001B0
.data start:0x000001D8 end:0x00000208
.bss start:0x00000048 end:0x00000090
REL/w06Dll/fire.c:
.text start:0x00006EF0 end:0x00007BB0
.rodata start:0x000001B0 end:0x000001E8
.data start:0x00000208 end:0x00000418
.bss start:0x00000090 end:0x000000C8
REL/w06Dll/bridge.c:
.text start:0x00007BB0 end:0x00008F20
.rodata start:0x000001E8 end:0x00000228
.data start:0x00000418 end:0x00000498
.bss start:0x000000C8 end:0x000000E8
REL/w06Dll/bowser.c:
.text start:0x00008F20 end:0x0000D0A4
.rodata start:0x00000228 end:0x000002D8
.data start:0x00000498 end:0x00000541
.bss start:0x000000E8 end:0x000000F5

View file

@ -1,8 +1,8 @@
fn_1_0 = .text:0x00000000; // type:function size:0x30 InitBoard = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
fn_1_E0 = .text:0x000000E0; // type:function size:0x4C4 BoardCreate = .text:0x000000E0; // type:function size:0x4C4
fn_1_5A4 = .text:0x000005A4; // type:function size:0x18C BoardDestroy = .text:0x000005A4; // type:function size:0x18C
fn_1_730 = .text:0x00000730; // type:function size:0x6C fn_1_730 = .text:0x00000730; // type:function size:0x6C
fn_1_79C = .text:0x0000079C; // type:function size:0x20 fn_1_79C = .text:0x0000079C; // type:function size:0x20
fn_1_7BC = .text:0x000007BC; // type:function size:0x144 fn_1_7BC = .text:0x000007BC; // type:function size:0x144
@ -145,11 +145,11 @@ lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
lbl_1_rodata_78 = .rodata:0x00000078; // 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_80 = .rodata:0x00000080; // type:object size:0x8 data:double
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x1 data:byte lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x2 data:byte
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x1 data:byte lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x3 data:byte
lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 data:2byte lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 data:2byte
lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x1 data:byte lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x3 data:byte
lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 data:2byte lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 data:2byte
lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
@ -282,12 +282,12 @@ lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3
lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 data:2byte lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 data:2byte
lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC
lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 data:string lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 data:string
lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0x13 lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0xE
lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte
lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte
lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 data:2byte lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 data:2byte
lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6 lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6
lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x20
lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 lbl_1_data_208 = .data:0x00000208; // type:object size:0x20
lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 data:byte lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 data:byte
lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte
@ -310,7 +310,9 @@ lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 data:string
lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 data:string lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 data:string
lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 data:string lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 data:string
lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 data:string lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 data:string
lbl_1_data_380 = .data:0x00000380; // type:object size:0x98 lbl_1_data_380 = .data:0x00000380; // type:object size:0x11 data:string
lbl_1_data_394 = .data:0x00000394; // type:object size:0x38
lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x4C
lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 data:2byte lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 data:2byte
lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18
lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 lbl_1_data_434 = .data:0x00000434; // type:object size:0x18
@ -344,7 +346,7 @@ lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x1 data:byte
lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 data:byte lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 data:byte
lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte
lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6
lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:2byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x6 data:2byte
lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte
lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte
lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte

View file

@ -5,3 +5,12 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
REL/w21Dll/main.c:
.text start:0x000000E0 end:0x00000678
.rodata start:0x00000000 end:0x00000030
.data start:0x00000000 end:0x00000034
.bss start:0x00000000 end:0x0000000E

View file

@ -1,8 +1,8 @@
fn_1_0 = .text:0x00000000; // type:function size:0x30 InitBoard = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
fn_1_E0 = .text:0x000000E0; // type:function size:0x2B0 BoardCreate = .text:0x000000E0; // type:function size:0x2B0
fn_1_390 = .text:0x00000390; // type:function size:0xBC BoardDestroy = .text:0x00000390; // type:function size:0xBC
fn_1_44C = .text:0x0000044C; // type:function size:0x44 fn_1_44C = .text:0x0000044C; // type:function size:0x44
fn_1_490 = .text:0x00000490; // type:function size:0x4 fn_1_490 = .text:0x00000490; // type:function size:0x4
fn_1_494 = .text:0x00000494; // type:function size:0x4 fn_1_494 = .text:0x00000494; // type:function size:0x4
@ -22,6 +22,8 @@ lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte
lbl_1_data_2 = .data:0x00000002; // type:object size:0x2 data:2byte lbl_1_data_2 = .data:0x00000002; // type:object size:0x2 data:2byte
lbl_1_data_6 = .data:0x00000006; // type:object size:0x2 data:2byte lbl_1_data_6 = .data:0x00000006; // type:object size:0x2 data:2byte
lbl_1_data_8 = .data:0x00000008; // type:object size:0x24 data:2byte lbl_1_data_8 = .data:0x00000008; // type:object size:0x2 data:2byte
lbl_1_data_A = .data:0x0000000A; // type:object size:0x22 data:2byte
lbl_1_data_2C = .data:0x0000002C; // type:object size:0x8 lbl_1_data_2C = .data:0x0000002C; // type:object size:0x8
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xE lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x6

View file

@ -4,3 +4,11 @@ Sections:
.dtors type:rodata align:4 .dtors type:rodata align:4
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
REL/board_executor.c:
.text start:0x00000000 end:0x000000E0
REL/w21Dll/main.c:
.text start:0x000000E0 end:0x000003E0
.rodata start:0x00000000 end:0x00000018
.data start:0x00000000 end:0x00000010

View file

@ -1,8 +1,8 @@
fn_1_0 = .text:0x00000000; // type:function size:0x30 InitBoard = .text:0x00000000; // type:function size:0x30 scope:local
_prolog = .text:0x00000030; // type:function size:0x64 scope:global _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
fn_1_E0 = .text:0x000000E0; // type:function size:0x1D4 BoardCreate = .text:0x000000E0; // type:function size:0x1D4
fn_1_2B4 = .text:0x000002B4; // type:function size:0xB8 BoardDestroy = .text:0x000002B4; // type:function size:0xB8
fn_1_36C = .text:0x0000036C; // type:function size:0x44 fn_1_36C = .text:0x0000036C; // type:function size:0x44
fn_1_3B0 = .text:0x000003B0; // type:function size:0x20 fn_1_3B0 = .text:0x000003B0; // type:function size:0x20
fn_1_3D0 = .text:0x000003D0; // type:function size:0x8 fn_1_3D0 = .text:0x000003D0; // type:function size:0x8

View file

@ -5,3 +5,23 @@ Sections:
.rodata type:rodata align:8 .rodata type:rodata align:8
.data type:data align:8 .data type:data align:8
.bss type:bss align:8 .bss type:bss align:8
REL/executor.c:
.text start:0x00000000 end:0x000000A0
REL/ztardll/main.c:
.text start:0x000000A0 end:0x00007754
.rodata start:0x00000000 end:0x000001B8
.data start:0x00000000 end:0x000000B0
.bss start:0x00000000 end:0x00000070
REL/ztardll/font.c:
.text start:0x00007754 end:0x00007C00
.rodata start:0x000001B8 end:0x000001C0
.data start:0x000000B0 end:0x000003C8
REL/ztardll/select.c:
.text start:0x00007C00 end:0x0001236C
.rodata start:0x000001C0 end:0x00000298
.data start:0x000003C8 end:0x00000674
.bss start:0x00000070 end:0x000002D8

View file

@ -1,6 +1,6 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
fn_1_A0 = .text:0x000000A0; // type:function size:0x384 ModuleProlog = .text:0x000000A0; // type:function size:0x384
fn_1_424 = .text:0x00000424; // type:function size:0x1350 fn_1_424 = .text:0x00000424; // type:function size:0x1350
fn_1_1774 = .text:0x00001774; // type:function size:0x57C fn_1_1774 = .text:0x00001774; // type:function size:0x57C
fn_1_1CF0 = .text:0x00001CF0; // type:function size:0xB0 fn_1_1CF0 = .text:0x00001CF0; // type:function size:0xB0
@ -201,16 +201,16 @@ lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x38 data:4byte lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x38 data:4byte
lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 data:string lbl_1_data_0 = .data:0x00000000; // type:object size:0x22 data:string
lbl_1_data_22 = .data:0x00000022; // type:object size:0xA lbl_1_data_22 = .data:0x00000022; // type:object size:0x8
lbl_1_data_2C = .data:0x0000002C; // type:object size:0x18 lbl_1_data_2C = .data:0x0000002C; // type:object size:0x18
lbl_1_data_44 = .data:0x00000044; // type:object size:0x6 lbl_1_data_44 = .data:0x00000044; // type:object size:0x6
lbl_1_data_4A = .data:0x0000004A; // type:object size:0xC lbl_1_data_4A = .data:0x0000004A; // type:object size:0xC
lbl_1_data_56 = .data:0x00000056; // type:object size:0xE data:wstring lbl_1_data_56 = .data:0x00000056; // type:object size:0xE data:2byte
lbl_1_data_64 = .data:0x00000064; // type:object size:0x20 lbl_1_data_64 = .data:0x00000064; // type:object size:0x20
lbl_1_data_84 = .data:0x00000084; // type:object size:0x10 lbl_1_data_84 = .data:0x00000084; // type:object size:0x10
lbl_1_data_94 = .data:0x00000094; // type:object size:0xC lbl_1_data_94 = .data:0x00000094; // type:object size:0xC
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA data:string
lbl_1_data_AA = .data:0x000000AA; // type:object size:0x6 lbl_1_data_AA = .data:0x000000AA; // type:object size:0x4 data:string
lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x318 lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x318
lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x20 lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x20
lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x20 lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x20

View file

@ -359,7 +359,7 @@ game/board/com.c:
.sdata start:0x801D36F0 end:0x801D36F8 .sdata start:0x801D36F0 end:0x801D36F8
.sdata2 start:0x801D5328 end:0x801D5350 .sdata2 start:0x801D5328 end:0x801D5350
game/board/overhead.c: game/board/view.c:
.text start:0x800729A4 end:0x80073FF4 .text start:0x800729A4 end:0x80073FF4
.rodata start:0x8011DED0 end:0x8011DEF0 .rodata start:0x8011DED0 end:0x8011DEF0
.data start:0x80139BC8 end:0x80139CC8 .data start:0x80139BC8 end:0x80139CC8
@ -407,14 +407,14 @@ game/board/warp.c:
.sbss start:0x801D4028 end:0x801D4040 .sbss start:0x801D4028 end:0x801D4040
.sdata2 start:0x801D5730 end:0x801D5780 .sdata2 start:0x801D5730 end:0x801D5780
game/board/char_roulette.c: game/board/char_wheel.c:
.text start:0x800816CC end:0x80082C90 .text start:0x800816CC end:0x80082C90
.data start:0x8013A248 end:0x8013A2B0 .data start:0x8013A248 end:0x8013A2B0
.sdata start:0x801D3758 end:0x801D3760 .sdata start:0x801D3758 end:0x801D3760
.sbss start:0x801D4040 end:0x801D4060 .sbss start:0x801D4040 end:0x801D4060
.sdata2 start:0x801D5780 end:0x801D5810 .sdata2 start:0x801D5780 end:0x801D5810
game/board/mushroom_space.c: game/board/mushroom.c:
.text start:0x80082C90 end:0x80083EDC .text start:0x80082C90 end:0x80083EDC
.sdata start:0x801D3760 end:0x801D3770 .sdata start:0x801D3760 end:0x801D3770
.sbss start:0x801D4060 end:0x801D4070 .sbss start:0x801D4060 end:0x801D4070
@ -429,7 +429,7 @@ game/board/star.c:
.sbss start:0x801D4070 end:0x801D4088 .sbss start:0x801D4070 end:0x801D4088
.sdata2 start:0x801D5898 end:0x801D5938 .sdata2 start:0x801D5898 end:0x801D5938
game/board/dice_roll.c: game/board/roll.c:
.text start:0x80085CC8 end:0x80088368 .text start:0x80085CC8 end:0x80088368
.rodata start:0x8011E0B0 end:0x8011E118 .rodata start:0x8011E0B0 end:0x8011E118
.data start:0x8013A368 end:0x8013A408 .data start:0x8013A368 end:0x8013A408
@ -447,7 +447,7 @@ game/board/ui.c:
.sbss start:0x801D40A8 end:0x801D40E0 .sbss start:0x801D40A8 end:0x801D40E0
.sdata2 start:0x801D59E0 end:0x801D5AA0 .sdata2 start:0x801D59E0 end:0x801D5AA0
game/board/hidden_block.c: game/board/block.c:
.text start:0x8008DF68 end:0x8008EE28 .text start:0x8008DF68 end:0x8008EE28
.rodata start:0x8011E200 end:0x8011E220 .rodata start:0x8011E200 end:0x8011E220
.data start:0x8013A608 end:0x8013A620 .data start:0x8013A608 end:0x8013A620
@ -483,7 +483,7 @@ game/board/battle.c:
.sbss start:0x801D4178 end:0x801D41A0 .sbss start:0x801D4178 end:0x801D41A0
.sdata2 start:0x801D5DE0 end:0x801D5E88 .sdata2 start:0x801D5DE0 end:0x801D5E88
game/board/fortune_space.c: game/board/fortune.c:
.text start:0x8009D148 end:0x8009DFD0 .text start:0x8009D148 end:0x8009DFD0
.rodata start:0x8011E380 end:0x8011E3A8 .rodata start:0x8011E380 end:0x8011E3A8
.data start:0x8013AB10 end:0x8013AB28 .data start:0x8013AB10 end:0x8013AB28
@ -519,7 +519,7 @@ game/board/boo_house.c:
game/board/start.c: game/board/start.c:
.text start:0x800A6EE4 end:0x800A9708 .text start:0x800A6EE4 end:0x800A9708
.rodata start:0x8011E3D0 end:0x8011E3F0 .rodata start:0x8011E3D0 end:0x8011E3F0
.data start:0x8013AF70 end:0x8013B1F8 .data start:0x8013AF70 end:0x8013B0D8
.bss start:0x801A4CD8 end:0x801A4CF0 .bss start:0x801A4CD8 end:0x801A4CF0
.sdata start:0x801D3840 end:0x801D3850 .sdata start:0x801D3840 end:0x801D3850
.sbss start:0x801D4230 end:0x801D4240 .sbss start:0x801D4230 end:0x801D4240
@ -528,9 +528,9 @@ game/board/start.c:
game/board/last5.c: game/board/last5.c:
.text start:0x800A9708 end:0x800ADB84 .text start:0x800A9708 end:0x800ADB84
.rodata start:0x8011E3F0 end:0x8011E430 .rodata start:0x8011E3F0 end:0x8011E430
.data start:0x8013B1F8 end:0x8013B3F0 .data start:0x8013B0D8 end:0x8013B3F0
.bss start:0x801A4CF0 end:0x801A4D38 .bss start:0x801A4CF0 end:0x801A4D38
.sdata start:0x801D3850 end:0x801D38B8 .sdata start:0x801D3850 end:0x801D38A8
.sbss start:0x801D4240 end:0x801D4260 .sbss start:0x801D4240 end:0x801D4260
.sdata2 start:0x801D6198 end:0x801D6298 .sdata2 start:0x801D6198 end:0x801D6298
@ -538,6 +538,7 @@ game/board/pause.c:
.text start:0x800ADB84 end:0x800B1974 .text start:0x800ADB84 end:0x800B1974
.data start:0x8013B3F0 end:0x8013B518 .data start:0x8013B3F0 end:0x8013B518
.bss start:0x801A4D38 end:0x801A4D68 .bss start:0x801A4D38 end:0x801A4D68
.sdata start:0x801D38A8 end:0x801D38B8
.sbss start:0x801D4260 end:0x801D4280 .sbss start:0x801D4260 end:0x801D4280
.sdata2 start:0x801D6298 end:0x801D6350 .sdata2 start:0x801D6298 end:0x801D6350

File diff suppressed because it is too large Load diff

View file

@ -317,7 +317,7 @@ config.libs = [
Object(Matching, "game/decode.c"), Object(Matching, "game/decode.c"),
Object(Matching, "game/font.c"), Object(Matching, "game/font.c"),
Object(Matching, "game/init.c"), Object(Matching, "game/init.c"),
Object(NonMatching, "game/jmp.c"), Object(Matching, "game/jmp.c"),
Object(Matching, "game/malloc.c"), Object(Matching, "game/malloc.c"),
Object(Matching, "game/memory.c"), Object(Matching, "game/memory.c"),
Object(Matching, "game/printfunc.c"), Object(Matching, "game/printfunc.c"),
@ -327,9 +327,9 @@ config.libs = [
Object(Matching, "game/hsfload.c"), Object(Matching, "game/hsfload.c"),
Object(NonMatching, "game/hsfdraw.c"), Object(NonMatching, "game/hsfdraw.c"),
Object(Matching, "game/hsfman.c"), Object(Matching, "game/hsfman.c"),
Object(NonMatching, "game/hsfmotion.c"), Object(Matching, "game/hsfmotion.c"),
Object(Matching, "game/hsfanim.c"), Object(Matching, "game/hsfanim.c"),
Object(NonMatching, "game/hsfex.c"), Object(Matching, "game/hsfex.c"),
Object(Matching, "game/perf.c"), Object(Matching, "game/perf.c"),
Object(Matching, "game/objmain.c"), Object(Matching, "game/objmain.c"),
Object(NonMatching, "game/fault.c"), Object(NonMatching, "game/fault.c"),
@ -338,13 +338,13 @@ config.libs = [
Object(NonMatching, "game/objdll.c"), Object(NonMatching, "game/objdll.c"),
Object(Matching, "game/frand.c"), Object(Matching, "game/frand.c"),
Object(Matching, "game/audio.c"), Object(Matching, "game/audio.c"),
Object(NonMatching, "game/EnvelopeExec.c"), Object(Matching, "game/EnvelopeExec.c"),
Object(NonMatching, "game/minigame_seq.c"), Object(NonMatching, "game/minigame_seq.c"),
Object(Matching, "game/ovllist.c"), Object(Matching, "game/ovllist.c"),
Object(NonMatching, "game/esprite.c"), Object(Matching, "game/esprite.c"),
Object(NonMatching, "game/code_8003FF68.c"), Object(NonMatching, "game/code_8003FF68.c"),
Object(NonMatching, "game/ClusterExec.c"), Object(Matching, "game/ClusterExec.c"),
Object(NonMatching, "game/ShapeExec.c"), Object(Matching, "game/ShapeExec.c"),
Object(Matching, "game/wipe.c"), Object(Matching, "game/wipe.c"),
Object(Matching, "game/window.c"), Object(Matching, "game/window.c"),
Object(Matching, "game/messdata.c"), Object(Matching, "game/messdata.c"),
@ -352,35 +352,35 @@ config.libs = [
Object(Matching, "game/armem.c"), Object(Matching, "game/armem.c"),
Object(NonMatching, "game/chrman.c"), Object(NonMatching, "game/chrman.c"),
Object(NonMatching, "game/mapspace.c"), Object(NonMatching, "game/mapspace.c"),
Object(NonMatching, "game/THPSimple.c"), Object(Matching, "game/THPSimple.c"),
Object(NonMatching, "game/THPDraw.c"), Object(Matching, "game/THPDraw.c"),
Object(NonMatching, "game/thpmain.c"), Object(Matching, "game/thpmain.c"),
Object(NonMatching, "game/objsub.c"), Object(NonMatching, "game/objsub.c"),
Object(Matching, "game/flag.c"), Object(Matching, "game/flag.c"),
Object(Matching, "game/saveload.c"), Object(Matching, "game/saveload.c"),
Object(NonMatching, "game/sreset.c"), Object(NonMatching, "game/sreset.c"),
Object(NonMatching, "game/board/main.c"), Object(Matching, "game/board/main.c"),
Object(NonMatching, "game/board/player.c"), Object(NonMatching, "game/board/player.c"),
Object(NonMatching, "game/board/model.c"), Object(Matching, "game/board/model.c"),
Object(Matching, "game/board/window.c"), Object(Matching, "game/board/window.c"),
Object(NonMatching, "game/board/audio.c"), Object(NonMatching, "game/board/audio.c"),
Object(NonMatching, "game/board/com.c"), Object(NonMatching, "game/board/com.c"),
Object(NonMatching, "game/board/overhead.c"), Object(NonMatching, "game/board/view.c"),
Object(NonMatching, "game/board/space.c"), Object(NonMatching, "game/board/space.c"),
Object(NonMatching, "game/board/shop.c"), Object(NonMatching, "game/board/shop.c"),
Object(NonMatching, "game/board/lottery.c"), Object(NonMatching, "game/board/lottery.c"),
Object(Matching, "game/board/basic_space.c"), Object(Matching, "game/board/basic_space.c"),
Object(Matching, "game/board/warp.c"), Object(Matching, "game/board/warp.c"),
Object(NonMatching, "game/board/char_roulette.c"), Object(NonMatching, "game/board/char_wheel.c"),
Object(NonMatching, "game/board/mushroom_space.c"), Object(NonMatching, "game/board/mushroom.c"),
Object(NonMatching, "game/board/star.c"), Object(NonMatching, "game/board/star.c"),
Object(NonMatching, "game/board/dice_roll.c"), Object(NonMatching, "game/board/roll.c"),
Object(NonMatching, "game/board/ui.c"), Object(NonMatching, "game/board/ui.c"),
Object(NonMatching, "game/board/hidden_block.c"), Object(NonMatching, "game/board/block.c"),
Object(NonMatching, "game/board/item.c"), Object(NonMatching, "game/board/item.c"),
Object(NonMatching, "game/board/bowser.c"), Object(NonMatching, "game/board/bowser.c"),
Object(NonMatching, "game/board/battle.c"), Object(NonMatching, "game/board/battle.c"),
Object(NonMatching, "game/board/fortune_space.c"), Object(NonMatching, "game/board/fortune.c"),
Object(NonMatching, "game/board/boo.c"), Object(NonMatching, "game/board/boo.c"),
Object(NonMatching, "game/board/mg_setup.c"), Object(NonMatching, "game/board/mg_setup.c"),
Object(NonMatching, "game/board/boo_house.c"), Object(NonMatching, "game/board/boo_house.c"),
@ -767,7 +767,7 @@ config.libs = [
Rel('bootDll', Rel('bootDll',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/bootDll/bootDll.c"), Object(NonMatching, "REL/bootDll/main.c"),
Object(Matching, "REL/bootDll/nintendo_data.c"), Object(Matching, "REL/bootDll/nintendo_data.c"),
} }
), ),
@ -810,12 +810,44 @@ config.libs = [
Object(NonMatching, "REL/m404Dll/main.c"), Object(NonMatching, "REL/m404Dll/main.c"),
} }
), ),
Rel('m405Dll',
objects = {
Object(NonMatching, "REL/m405Dll/main.c"),
}
),
Rel('m406Dll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/m406Dll/main.c"),
Object(NonMatching, "REL/m406Dll/map.c"),
Object(NonMatching, "REL/m406Dll/player.c"),
}
),
Rel('m407dll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/m407dll/player.c"),
Object(NonMatching, "REL/m407dll/map.c"),
Object(NonMatching, "REL/m407dll/camera.c"),
Object(NonMatching, "REL/m407dll/whomp.c"),
Object(NonMatching, "REL/m407dll/whomp_score.c"),
Object(NonMatching, "REL/m407dll/effect.c"),
Object(NonMatching, "REL/m407dll/main.c"),
Object(NonMatching, "REL/m407dll/score.c"),
}
),
Rel('mentDll', Rel('mentDll',
objects = { objects = {
Object(NonMatching, "REL/mentDll/common.c"), Object(NonMatching, "REL/mentDll/common.c"),
Object(NonMatching, "REL/mentDll/main.c"), Object(NonMatching, "REL/mentDll/main.c"),
} }
), ),
Rel('messDll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/messDll/main.c"),
}
),
Rel('mgmodedll', Rel('mgmodedll',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
@ -846,6 +878,41 @@ config.libs = [
Object(NonMatching, "REL/mpexDll/mgname.c"), Object(NonMatching, "REL/mpexDll/mgname.c"),
} }
), ),
Rel('mstory2Dll',
objects = {
Object(NonMatching, "REL/mstory2Dll/main.c"),
Object(NonMatching, "REL/mstory2Dll/board_entrance.c"),
Object(NonMatching, "REL/mstory2Dll/board_clear.c"),
Object(NonMatching, "REL/mstory2Dll/board_miss.c"),
Object(NonMatching, "REL/mstory2Dll/mg_clear.c"),
Object(NonMatching, "REL/mstory2Dll/mg_miss.c"),
Object(NonMatching, "REL/mstory2Dll/ending.c"),
Object(NonMatching, "REL/mstory2Dll/save.c"),
}
),
Rel('mstory3Dll',
objects = {
Object(NonMatching, "REL/mstory3Dll/main.c"),
Object(NonMatching, "REL/mstory3Dll/result_seq.c"),
Object(NonMatching, "REL/mstory3Dll/result.c"),
Object(NonMatching, "REL/mstory3Dll/win_effect.c"),
}
),
Rel('mstory4Dll',
objects = {
Object(NonMatching, "REL/mstory4Dll/main.c"),
}
),
Rel('mstoryDll',
objects = {
Object(NonMatching, "REL/mstoryDll/main.c"),
Object(NonMatching, "REL/mstoryDll/board_clear.c"),
Object(NonMatching, "REL/mstoryDll/board_miss.c"),
Object(NonMatching, "REL/mstoryDll/mg_clear.c"),
Object(NonMatching, "REL/mstoryDll/mg_miss.c"),
Object(NonMatching, "REL/mstoryDll/save.c"),
}
),
Rel('option', Rel('option',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
@ -870,22 +937,35 @@ config.libs = [
Object(NonMatching, "REL/present/common.c"), Object(NonMatching, "REL/present/common.c"),
} }
), ),
Rel('resultDll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/resultDll/main.c"),
Object(NonMatching, "REL/resultDll/battle.c"),
Object(NonMatching, "REL/resultDll/datalist.c"),
}
),
Rel('safDll',
objects = {
Object(NonMatching, "REL/safDll/main.c"),
}
),
Rel('selmenuDll', Rel('selmenuDll',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/selmenuDll/selmenuDll.c"), Object(NonMatching, "REL/selmenuDll/main.c"),
} }
), ),
Rel('staffDll', Rel('staffDll',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/staffDll/staffDll.c"), Object(NonMatching, "REL/staffDll/main.c"),
} }
), ),
Rel('subchrselDll', Rel('subchrselDll',
objects = { objects = {
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/subchrselDll/subchrselDll.c"), Object(Matching, "REL/subchrselDll/main.c"),
} }
), ),
Rel('w01Dll', Rel('w01Dll',
@ -911,13 +991,46 @@ config.libs = [
Rel('w03Dll', Rel('w03Dll',
objects = { objects = {
Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w03Dll/main.c"), Object(Matching, "REL/w03Dll/main.c"),
Object(NonMatching, "REL/w03Dll/statue.c"), Object(Matching, "REL/w03Dll/statue.c"),
Object(NonMatching, "REL/w03Dll/condor.c"), Object(NonMatching, "REL/w03Dll/condor.c"),
Object(NonMatching, "REL/w03Dll/river.c"), Object(Matching, "REL/w03Dll/river.c"),
Object(NonMatching, "REL/w03Dll/smoke.c"), Object(Matching, "REL/w03Dll/smoke.c"),
Object(NonMatching, "REL/w03Dll/mg_coin.c"), Object(NonMatching, "REL/w03Dll/mg_coin.c"),
Object(NonMatching, "REL/w03Dll/mg_item.c"), Object(Matching, "REL/w03Dll/mg_item.c"),
}
),
Rel('w04Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w04Dll/main.c"),
Object(NonMatching, "REL/w04Dll/bridge.c"),
Object(NonMatching, "REL/w04Dll/boo_event.c"),
Object(NonMatching, "REL/w04Dll/big_boo.c"),
Object(NonMatching, "REL/w04Dll/mg_item.c"),
Object(NonMatching, "REL/w04Dll/mg_coin.c"),
}
),
Rel('w05Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w05Dll/main.c"),
Object(NonMatching, "REL/w05Dll/hotel.c"),
Object(NonMatching, "REL/w05Dll/monkey.c"),
Object(NonMatching, "REL/w05Dll/dolphin.c"),
Object(NonMatching, "REL/w05Dll/mg_item.c"),
Object(NonMatching, "REL/w05Dll/mg_coin.c"),
}
),
Rel('w05Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w06Dll/main.c"),
Object(NonMatching, "REL/w06Dll/mg_item.c"),
Object(NonMatching, "REL/w06Dll/mg_coin.c"),
Object(NonMatching, "REL/w06Dll/fire.c"),
Object(NonMatching, "REL/w06Dll/bridge.c"),
Object(NonMatching, "REL/w06Dll/bowser.c"),
} }
), ),
Rel('w10Dll', Rel('w10Dll',
@ -929,6 +1042,26 @@ config.libs = [
Object(Matching, "REL/w10Dll/tutorial.c"), Object(Matching, "REL/w10Dll/tutorial.c"),
} }
), ),
Rel('w20Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w20Dll/main.c"),
}
),
Rel('w21Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w21Dll/main.c"),
}
),
Rel('ztardll',
objects = {
Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/ztardll/main.c"),
Object(NonMatching, "REL/ztardll/font.c"),
Object(NonMatching, "REL/ztardll/select.c"),
}
),
] ]
if args.mode == "configure": if args.mode == "configure":

29
include/REL/w03Dll.h Normal file
View file

@ -0,0 +1,29 @@
#include "game/gamework_data.h"
#include "dolphin.h"
#include "REL/executor.h"
#include "game/process.h"
#include "game/window.h"
#include "game/object.h"
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef struct w03StructUnk0 {
/* 0x00 */ Vec unk_00;
/* 0x0C */ Vec unk_0C;
/* 0x18 */ Vec unk_18;
/* 0x24 */ s32 datanum;
} w03StructUnk0;
typedef struct w03UnkStruct2{
u8 unk0 : 1;
} w03UnkStruct2;
typedef struct w03State {
s8 unk0;
u8 unk1;
u8 unk2;
s8 unk3;
u16 unk4;
u16 unk6;
s16 unk8;
} w03State;

View file

@ -3,18 +3,28 @@
#include "dolphin.h" #include "dolphin.h"
#ifndef _BOARD_SPACE_EVENT_FUNC
#define _BOARD_SPACE_EVENT_FUNC
typedef s32 (*BoardSpaceEventFunc)(void);
#endif
#ifndef _BOARD_MAIN_H
typedef void (*BoardLightHook)(void);
#endif
void BoardCameraTargetModelSet(s16 model); void BoardCameraTargetModelSet(s16 model);
void BoardCameraMotionStartEx(s16, Vec *, Vec *, f32, f32, s16); void BoardCameraMotionStartEx(s16, Vec *, Vec *, f32, f32, s16);
void BoardCameraMotionWait(void); void BoardCameraMotionWait(void);
void fn_8007A360(s32); s32 BoardSpacePosGet(s32, s32, Vec*);
void fn_8007F894(void); void BoardShopTutorialExec(s32);
void BoardLotteryTutorialExec(void);
s16 BoardStarHostMdlGet(void); s16 BoardStarHostMdlGet(void);
void BoardStatusShowSetAll(s32); void BoardStatusShowSetAll(s32);
void fn_800A4C88(void); void BoardMGSetupTutorialExec(void);
void fn_800A6B10(void); void BoardBooHouseTutorialExec(void);
void BoardStatusItemSet(s32); void BoardStatusItemSet(s32);
void BoardTutorialItemSet(s32); void BoardTutorialItemSet(s32);
void fn_80082AAC(s32); void BoardCharWheelSetTarget(s32);
void BoardTutorialDirInputSet(s32, s32, s32); void BoardTutorialDirInputSet(s32, s32, s32);
void BoardSpaceStarSetIndex(s32); void BoardSpaceStarSetIndex(s32);
void BoardModelRotYSet(s16, f32); void BoardModelRotYSet(s16, f32);
@ -23,7 +33,7 @@ void BoardModelLayerSet(s16, u8);
void BoardTutorialHostSet(s16); void BoardTutorialHostSet(s16);
s16 BoardModelIDGet(s16); s16 BoardModelIDGet(s16);
void BoardModelScaleSetV(s16, Vec*); void BoardModelScaleSetV(s16, Vec*);
void BoardLightHookSet(void*, void*); void BoardLightHookSet(BoardLightHook set, BoardLightHook reset);
s16 BoardModelCreate(s32, void*, s32); s16 BoardModelCreate(s32, void*, s32);
void BoardModelKill(s16); void BoardModelKill(s16);
void fn_8006DDE8(s16, f32); void fn_8006DDE8(s16, f32);
@ -33,18 +43,26 @@ void BoardModelPosSetV(s16, Vec*);
void BoardModelPosSet(s16, f32, f32, f32); void BoardModelPosSet(s16, f32, f32, f32);
void BoardModelRotSetV(s16 arg0, Vec* arg1); void BoardModelRotSetV(s16 arg0, Vec* arg1);
void BoardModelVisibilitySet(s16, s32); void BoardModelVisibilitySet(s16, s32);
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
s32 BoardSpaceFlagSearch(s32, u32);
void BoardSpaceInit(s32); void BoardSpaceInit(s32);
void BoardSpaceDestroy(void); void BoardSpaceDestroy(void);
void fn_80077AAC(s16); void BoardShopHostSet(s16);
void fn_8007A83C(s16); void BoardLotteryHostSet(s16);
void fn_80083EDC(s16); void BoardStarHostSet(s16);
void fn_800A4F6C(s16); void BoardBooHouseHostSet(s16);
void BoardTutorialHookSet(void*); void BoardTutorialHookSet(void*);
void BoardTutorialBlockSetPos(s32, s32); void BoardTutorialBlockSetPos(s32, s32);
s32 BoardCameraRotGet(Vec*); s32 BoardCameraRotGet(Vec*);
void BoardModelScaleSet(s16, f32, f32, f32); void BoardModelScaleSet(s16, f32, f32, f32);
s32 BoardIsKill(void); s32 BoardIsKill(void);
void BoardModelMtxSet(s16, Mtx); void BoardModelMtxSet(s16, Mtx*);
void BoardModelRotSet(s16, f32, f32, f32); void BoardModelRotSet(s16, f32, f32, f32);
void BoardBowserExec(s32 player, s32 space);
void BoardBattleExec(s32 player, s32 space);
void BoardFortuneExec(s32 player, s32 space);
#endif #endif

View file

@ -149,6 +149,18 @@ static inline void GXColor1x8(u8 index) {
GXWGFifo.u8 = index; GXWGFifo.u8 = index;
} }
static inline void GXPosition1x16(u16 index) {
GXWGFifo.u16 = index;
}
static inline void GXColor1x16(u16 index) {
GXWGFifo.u16 = index;
}
static inline void GXTexCoord1x16(u16 index) {
GXWGFifo.u16 = index;
}
static inline void GXEnd(void) {} static inline void GXEnd(void) {}
#endif #endif

View file

@ -76,6 +76,24 @@ static inline u8 __OSf32tou8(register f32 inF)
static inline void OSf32tou8(f32 *f, u8 *out) { *out = __OSf32tou8(*f); } static inline void OSf32tou8(f32 *f, u8 *out) { *out = __OSf32tou8(*f); }
static inline s8 __OSf32tos8(register f32 inF)
{
u32 tmp;
register u32 *tmpPtr = &tmp;
register s8 out;
// clang-format off
asm {
psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_S8
lbz out, 0(tmpPtr)
extsb out, out //HACK to match fast cast inlines
}
// clang-format on
return out;
}
static inline void OSf32tos8(f32 *f, s8 *out) { *out = __OSf32tos8(*f); }
static inline u16 __OSf32tou16(register f32 inF) static inline u16 __OSf32tou16(register f32 inF)
{ {
u32 tmp; u32 tmp;

View file

@ -0,0 +1,13 @@
#ifndef _GAME_CLUSTER_EXEC_H
#define _GAME_CLUSTER_EXEC_H
#include "game/hsfformat.h"
#include "game/hsfman.h"
float GetClusterCurve(HsfTrack *arg0, float arg1);
float GetClusterWeightCurve(HsfTrack *arg0, float arg1);
void SetClusterMain(HsfCluster *arg0);
void ClusterProc(ModelData *arg0);
void ClusterMotionExec(ModelData *arg0);
#endif

View file

@ -0,0 +1,12 @@
#ifndef _GAME_ENVELOPE_EXEC_H
#define _GAME_ENVELOPE_EXEC_H
#include "game/hsfformat.h"
void InitEnvelope(HsfData *arg0);
void EnvelopeProc(HsfData *arg0);
void InitVtxParm(HsfData *arg0);
extern Vec *Vertextop;
#endif

8
include/game/ShapeExec.h Executable file
View file

@ -0,0 +1,8 @@
#ifndef _GAME_SHAPE_EXEC_H
#define _GAME_SHAPE_EXEC_H
#include "game/hsfformat.h"
void ShapeProc(HsfData *arg0);
#endif

10
include/game/THPDraw.h Executable file
View file

@ -0,0 +1,10 @@
#ifndef _GAME_THPDRAW_H
#define _GAME_THPDRAW_H
#include "dolphin.h"
void THPGXRestore(void);
void THPGXYuv2RgbSetup(GXRenderModeObj *obj, GXColor *arg1, Mtx arg2);
void THPGXYuv2RgbDraw(u32 *yImage, u32 *uImage, u32 *vImage, s16 x, s16 y, s16 texWidth, s16 texHeight, s16 polyWidth, s16 polyHeight);
#endif

84
include/game/THPSimple.h Executable file
View file

@ -0,0 +1,84 @@
#ifndef _GAME_THPSIMPLE_H
#define _GAME_THPSIMPLE_H
#include "dolphin.h"
#include "dolphin/thp/THPFile.h"
#include "dolphin/thp/THPInfo.h"
// THPReadBuffer?
typedef struct {
/* 0x00 */ s32 *unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
} UnkThpStruct01; // Size 0xC
typedef struct {
/* 0x00 */ void *unk00;
/* 0x04 */ void *unk04;
/* 0x08 */ void *unk08;
/* 0x0C */ s32 unk0C;
} UnkThpStruct02; // Size 0x10
typedef struct {
/* 0x00 */ void *unk00;
/* 0x04 */ void *unk04;
/* 0x08 */ u32 unk08;
} UnkThpStruct03; // Size 0xC
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ u32 unk04;
} UnkThpStruct04; // Size 8
typedef struct {
/* 0x000 */ DVDFileInfo unk00;
/* 0x03C */ THPHeader unk3C;
/* 0x06C */ THPFrameCompInfo unk6C;
/* 0x080 */ UnkThpStruct04 unk80;
/* 0x088 */ u8 unk88[0xC];
/* 0x094 */ void *unk94;
/* 0x098 */ s32 unk98;
/* 0x09C */ u8 unk9C;
/* 0x09D */ u8 unk9D;
/* 0x09E */ u8 unk9E;
/* 0x09F */ u8 unk9F;
/* 0x0A0 */ s32 unkA0;
/* 0x0A4 */ s32 unkA4;
/* 0x0A8 */ u32 unkA8;
/* 0x0AC */ s32 unkAC;
/* 0x0B0 */ s32 unkB0;
/* 0x0B4 */ s32 unkB4;
/* 0x0B8 */ s32 unkB8;
/* 0x0BC */ float unkBC;
/* 0x0C0 */ float unkC0;
/* 0x0C4 */ float unkC4;
/* 0x0C8 */ s32 unkC8;
/* 0x0CC */ UnkThpStruct01 unkCC[10];
/* 0x144 */ UnkThpStruct02 unk144[2];
/* 0x164 */ UnkThpStruct03 unk164[4];
/* 0x194 */ s32 unk194;
/* 0x198 */ s32 unk198;
/* 0x19C */ u8 unk19C;
/* 0x19D */ char unk19D[1];
/* 0x19E */ s16 unk19E;
} UnkThpStruct10; // Size 0x1A0
s32 THPSimpleInit(s32 arg0);
void THPSimpleQuit(void);
s32 THPSimpleOpen(char *arg0);
s32 THPSimpleClose(void);
s32 THPSimpleCalcNeedMemory(void);
s32 THPSimpleSetBuffer(void *arg0);
s32 THPSimplePreLoad(s32 arg0);
void THPSimpleAudioStart(void);
void THPSimpleAudioStop(void);
s32 THPSimpleLoadStop(void);
s32 THPSimpleDecode(void);
s32 THPSimpleDrawCurrentFrame(GXRenderModeObj *arg0, GXColor *arg1, Mtx arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6);
s32 THPSimpleGetVideoInfo(UnkThpStruct04 *arg0);
s32 THPSimpleGetTotalFrame(void);
s32 THPSimpleSetVolume(s32 left, s32 right);
extern UnkThpStruct10 SimpleControl;
#endif

View file

@ -18,8 +18,8 @@ void HuAudFXStop(s32 arg0);
void HuAudFXAllStop(void); void HuAudFXAllStop(void);
void HuAudFXFadeOut(s32 arg0, s32 arg1); void HuAudFXFadeOut(s32 arg0, s32 arg1);
void HuAudFXPanning(s32 arg0, s16 arg1); void HuAudFXPanning(s32 arg0, s16 arg1);
void HuAudFXListnerSet(s32 arg0, s32 arg1, float arg2, float arg3); void HuAudFXListnerSet(Vec* arg0, Vec* arg1, float arg2, float arg3);
void HuAudFXListnerSetEX(s32 arg0, s32 arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6); void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6);
void HuAudFXListnerUpdate(s32 arg0, s32 arg1); void HuAudFXListnerUpdate(s32 arg0, s32 arg1);
s32 HuAudFXEmiterPlay(s32 arg0, Vec *arg1); s32 HuAudFXEmiterPlay(s32 arg0, Vec *arg1);
void HuAudFXEmiterUpDate(s32 arg0, Vec *arg1); void HuAudFXEmiterUpDate(s32 arg0, Vec *arg1);

View file

@ -3,8 +3,8 @@
#include "dolphin.h" #include "dolphin.h"
void BoardEventLandBlue(s32, s16); void BoardEventLandBlue(s32, s32);
void BoardEventLandRed(s32, s16); void BoardEventLandRed(s32, s32);
s8 BoardCoinChgCreate(Vec*, s8); s8 BoardCoinChgCreate(Vec*, s8);
s32 BoardCoinChgExist(s32); s32 BoardCoinChgExist(s32);
void BoardCoinChgHide(s32); void BoardCoinChgHide(s32);

View file

@ -58,8 +58,7 @@ static inline s32 BoardCurrGet()
static inline s32 BoardPartyFlagGet() static inline s32 BoardPartyFlagGet()
{ {
s32 value = GWSystem.party; return GWSystem.party;
return value;
} }
extern BoardCameraData boardCamera; extern BoardCameraData boardCamera;
@ -73,17 +72,27 @@ typedef void (*BoardFunc)(void);
typedef void (*BoardLightHook)(void); typedef void (*BoardLightHook)(void);
typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera); typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera);
typedef void (*BoardTurnStartHook)(s32 player, s32 space);
extern BoardTurnStartHook boardTurnStartFunc;
extern BoardFunc boardTurnFunc;
extern BoardLightHook boardLightResetHook;
extern BoardLightHook boardLightSetHook;
void BoardCommonInit(BoardFunc create, BoardFunc destroy); void BoardCommonInit(BoardFunc create, BoardFunc destroy);
void BoardKill(void); void BoardKill(void);
s32 BoardIsKill(void); s32 BoardIsKill(void);
void BoardPauseEnableSet(s32 value); void BoardPauseDisableSet(s32 value);
s32 BoardPauseEnableGet(); s32 BoardPauseDisableGet();
void BoardSaveInit(s32 board); void BoardSaveInit(s32 board);
void BoardStoryConfigSet(s32 mg_type, s32 diff_story); void BoardStoryConfigSet(s32 mg_type, s32 diff_story);
void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_type, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap); void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_type, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap);
BOOL BoardTurnNext(void); s32 BoardTurnNext(void);
void BoardNextOvlSet(OverlayID overlay); void BoardNextOvlSet(OverlayID overlay);
s32 BoardStartCheck(void); s32 BoardStartCheck(void);
void BoardLightHookSet(BoardLightHook set, BoardLightHook reset);
void BoardLightSetExec(void);
void BoardLightResetExec(void);
void BoardCameraBackup(void); void BoardCameraBackup(void);
void BoardCameraRestore(void); void BoardCameraRestore(void);
void BoardCameraScissorSet(s32 x, s32 y, s32 w, s32 h); void BoardCameraScissorSet(s32 x, s32 y, s32 w, s32 h);
@ -117,6 +126,14 @@ s32 BoardCameraCullCheck(Vec *point, float radius);
s32 BoardCameraMotionIsDone(void); s32 BoardCameraMotionIsDone(void);
void BoardCameraMotionWait(void); void BoardCameraMotionWait(void);
void BoardCameraInit(void); void BoardCameraInit(void);
void BoardMGDoneFlagSet(s32 flag);
s32 BoardMGDoneFlagGet();
void BoardMGExit(void);
void BoardMGCreate(s32 arg0);
void BoardEventFlagSet(void);
void BoardEventFlagReset(void);
s32 BoardEventFlagGet(void);
void BoardMTXCalcLookAt(Mtx dest, Vec *eye, Vec *up, Vec *target);
float BoardArcSin(float value); float BoardArcSin(float value);
float BoardArcCos(float value); float BoardArcCos(float value);
void BoardRandInit(void); void BoardRandInit(void);
@ -125,7 +142,21 @@ u32 BoardRandMod(u32 value);
float BoardRandFloat(void); float BoardRandFloat(void);
float BoardVecDistXZCalc(Vec *vec1, Vec *vec2); float BoardVecDistXZCalc(Vec *vec1, Vec *vec2);
s32 BoardVecMaxDistXZCheck(Vec *vec1, Vec *vec2, float max_dist); s32 BoardVecMaxDistXZCheck(Vec *vec1, Vec *vec2, float max_dist);
void BoardDAngleCalcVec(Vec *vec1);
float BoardDAngleCalc(float value);
s32 BoardDAngleCalcRange(float *value, float min, float range);
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist); s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
void BoardFilterFadeOut(s16 len);
void BoardFilterFadeInit(s16 len, u8 max_alpha);
s32 BoardFilterFadePauseCheck(void);
s32 BoardFilterFadeCheck(void);
void BoardConfettiCreate(Vec *pos, s16 count, float range);
void BoardConfettiKill(void);
void BoardConfettiStop(void);
void BoardLast5GfxInit(void);
void BoardLast5GfxShowSet(s32 show);
void BoardTauntInit(void);
void BoardTauntKill(void);
s32 BoardDataDirReadAsync(s32 data_num); s32 BoardDataDirReadAsync(s32 data_num);
void BoardDataAsyncWait(s32 status); void BoardDataAsyncWait(s32 status);

View file

@ -0,0 +1,58 @@
#ifndef _BOARD_WARP_H
#define _BOARD_WARP_H
#include "game/hsfman.h"
#include "game/data.h"
typedef struct board_model_param {
s32 data_num;
struct {
u8 field04_bit0 : 2;
u8 visible : 1;
u8 link : 1;
u8 start_mot : 1;
u8 pause : 1;
};
s16 unk6;
} BoardModelParam;
void BoardModelInit(void);
void BoardModelKillAll(void);
void BoardModelDummyUpdate(void);
void BoardModelVisibilityUpdate(void);
void BoardModelHideSetAll(s32 flag);
void BoardModelAmbSetAll(float r, float g, float b);
void BoardModelCameraSetAll(u16 camera);
s16 BoardModelCreate(s32 data_num, s32 *mot_list, s32 link);
s16 BoardModelCreateCharacter(s32 character, s32 data_num, s32 *mot_list, s32 link);
s16 BoardModelCreateParam(BoardModelParam *param, Vec *pos, Vec *rot);
void BoardModelKill(s16 model);
s16 BoardModelIDGet(s16 model);
s32 fn_8006DC1C(s16 model, s32 arg1);
s32 BoardModelPassSet(s16 model, s32 pass);
s32 BoardModelAmbSet(s16 model, float r, float g, float b);
s32 BoardModelExistCheck(s16 model, s32 arg1);
s32 BoardModelExistDupe(s16 model, s32 arg1);
s32 fn_8006DDE8(s16 model, float arg1);
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
s32 BoardModelMotionSpeedSet(s16 model, float speed);
s32 BoardModelPosSet(s16 model, float x, float y, float z);
s32 BoardModelPosSetV(s16 model, Vec *pos);
s32 BoardModelRotSet(s16 model, float x, float y, float z);
s32 BoardModelRotSetV(s16 model, Vec *rot);
s32 BoardModelScaleSet(s16 model, float x, float y, float z);
s32 BoardModelScaleSetV(s16 model, Vec *scale);
s32 BoardModelPosGet(s16 model, Vec *dst);
s32 BoardModelRotGet(s16 model, Vec *dst);
s32 BoardModelScaleGet(s16 model, Vec *dst);
s32 BoardModelVisibilitySet(s16 model, s32 flag);
s32 BoardModelVisibilityGet(s16 model);
s32 BoardModelCameraSet(s16 model, u16 camera);
s32 BoardModelLayerSet(s16 model, u8 layer);
s32 BoardModelLayerGet(s16 model);
void BoardModelLayerSetAll(s32 layer);
s32 BoardModelHookSet(s16 model, char *name, s16 hook);
s32 BoardModelHookReset(s16 model);
s32 BoardModelHookObjReset(s16 model, char *name);
#endif

View file

@ -113,10 +113,15 @@ void BoardDiceDigit2DUpdateEnable(s32);
void BoardPlayerMoveTo(s32, s16); void BoardPlayerMoveTo(s32, s16);
void BoardPlayerZoomRestore(s32); void BoardPlayerZoomRestore(s32);
void BoardRotateDiceNumbers(s32); void BoardRotateDiceNumbers(s32);
s32 DoDebugMove(s32, s16*);
s32 DoSparkSpace(s32, s16*); s32 DoSparkSpace(s32, s16*);
s32 ExecJunction(s32, s16*);
s32 MegaPlayerPassFunc(s32, s16); s32 MegaPlayerPassFunc(s32, s16);
s32 BoardPlayerAnimBlendCheck(s32); s32 BoardPlayerAnimBlendCheck(s32);
void BoardPlayerCoinsSet(s32 player, s32 value);
s32 BoardPlayerSizeGet(s32 player);
void BoardPlayerAutoSizeSet(s32 player, s32 value);
void BoardPlayerMotionStart(s32, s32, s32);
void BoardPlayerMotionShiftSet(s32 player, s32 arg1, float start, float end, u32 attr);
void BoardPlayerRotYSet(s32 player, float rot_y);
void BoardPlayerZoomRestore(s32 player);
#endif #endif

View file

@ -5,7 +5,10 @@
#define BOARD_SPACE_LINKMAX 4 #define BOARD_SPACE_LINKMAX 4
#ifndef _BOARD_SPACE_EVENT_FUNC
#define _BOARD_SPACE_EVENT_FUNC
typedef s32 (*BoardSpaceEventFunc)(void); typedef s32 (*BoardSpaceEventFunc)(void);
#endif
typedef struct board_space { typedef struct board_space {
Vec pos; Vec pos;
@ -22,8 +25,7 @@ void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
s32 BoardSpaceWalkEventExec(void); s32 BoardSpaceWalkEventExec(void);
s32 BoardSpaceWalkMiniEventExec(void); s32 BoardSpaceWalkMiniEventExec(void);
s16 BoardSpaceCountGet(s32 layer); s32 BoardSpaceCountGet(s32 layer);
s16 BoardSpaceCountGet(s32 layer);
BoardSpace *BoardSpaceGet(s32 layer, s32 index); BoardSpace *BoardSpaceGet(s32 layer, s32 index);
void BoardSpaceAttrSet(s32 layer, u32 attr); void BoardSpaceAttrSet(s32 layer, u32 attr);
void BoardSpaceAttrReset(s32 layer, u32 attr); void BoardSpaceAttrReset(s32 layer, u32 attr);
@ -32,6 +34,7 @@ s32 BoardSpaceTypeGet(s32 layer, s32 index);
void BoardSpaceTypeSet(s32 layer, s32 index, s32 type); void BoardSpaceTypeSet(s32 layer, s32 index, s32 type);
s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos); s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos);
void BoardSpaceCornerPosGet(s32 index, s32 corner, Vec *pos); void BoardSpaceCornerPosGet(s32 index, s32 corner, Vec *pos);
s32 BoardSpaceRotGet(s32 layer, s32 index, Vec *rot);
s32 BoardSpaceFlagSearch(s32 layer, u32 flag); s32 BoardSpaceFlagSearch(s32 layer, u32 flag);
s32 BoardSpaceFlagPosGet(s32 layer, u32 flag, Vec *pos); s32 BoardSpaceFlagPosGet(s32 layer, u32 flag, Vec *pos);
s32 BoardSpaceLinkFlagSearch(s32 layer, s32 index, u32 flag); s32 BoardSpaceLinkFlagSearch(s32 layer, s32 index, u32 flag);
@ -39,7 +42,7 @@ s32 BoardSpaceLinkTypeListGet(s32 layer, s32 index, s32 type, s16 *list);
s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list); s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list);
s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type); s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type);
s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale); s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale);
void BoardSpaceStarSet(s32 space); void BoardSpaceHostSet(s32 space);
void BoardSpaceStarSetIndex(s32 index); void BoardSpaceStarSetIndex(s32 index);
s32 BoardSpaceStarGetNext(void); s32 BoardSpaceStarGetNext(void);
s32 BoardSpaceStarGetRandom(s32 excl_pos); s32 BoardSpaceStarGetRandom(s32 excl_pos);
@ -48,5 +51,6 @@ s32 BoardSpaceStarGet(s32 index);
s32 BoardSpaceStarGetCurr(void); s32 BoardSpaceStarGetCurr(void);
s32 BoardSpaceStarCheck(s32 index); s32 BoardSpaceStarCheck(s32 index);
void BoardSpaceLandExec(s32 player, s32 space); void BoardSpaceLandExec(s32 player, s32 space);
void BoardSpaceBlockPosSet(void);
#endif #endif

View file

@ -4,6 +4,6 @@
#include "game/process.h" #include "game/process.h"
#include "game/wipe.h" #include "game/wipe.h"
void BoardWarpExec(s32 player, s16 space); void BoardWarpExec(s32 player, s32 space);
#endif #endif

View file

@ -17,8 +17,8 @@ void BoardWinCreate(s32 pos, u32 mess, s32 portrait);
void BoardWinInsertMesSet(u32 value, s32 index); void BoardWinInsertMesSet(u32 value, s32 index);
void BoardWinWait(void); void BoardWinWait(void);
void BoardWinKill(void); void BoardWinKill(void);
void BoardWinSetAttr(s32 attr); void BoardWinAttrSet(s32 attr);
void BoardWinResetAttr(s32 attr); void BoardWinAttrReset(s32 attr);
void BoardWinChoiceDisable(s32 choice); void BoardWinChoiceDisable(s32 choice);
void BoardWinKeyWait(void); void BoardWinKeyWait(void);
int BoardWinSpeedGet(void); int BoardWinSpeedGet(void);

24
include/game/esprite.h Executable file
View file

@ -0,0 +1,24 @@
#ifndef _GAME_ESPRITE_H
#define _GAME_ESPRITE_H
#include "dolphin.h"
void espInit(void);
s16 espEntry(s32 arg0, s16 arg1, s16 arg2);
void espKill(s16 arg0);
s16 espGrpIDGet(void);
void espDispOn(s16 arg0);
void espDispOff(s16 arg0);
void espAttrSet(s16 arg0, u16 arg1);
void espAttrReset(s16 arg0, u16 arg1);
void espPosSet(s16 arg0, float arg1, float arg2);
void espScaleSet(s16 arg0, float arg1, float arg2);
void espZRotSet(s16 arg0, float arg1);
void espTPLvlSet(s16 arg0, float arg1);
void espColorSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3);
void espSpeedSet(s16 arg0, float arg1);
void espBankSet(s16 arg0, s16 arg1);
void espDrawNoSet(s16 arg0, s16 arg1);
void espPriSet(s16 arg0, s16 arg1);
#endif

View file

@ -46,7 +46,7 @@ typedef struct system_state {
/* 0x32 */ s8 unk_32; /* 0x32 */ s8 unk_32;
/* 0x34 */ u16 mg_next; /* 0x34 */ u16 mg_next;
/* 0x36 */ s16 mg_next_extra; /* 0x36 */ s16 mg_next_extra;
/* 0x38 */ s16 unk_38; /* 0x38 */ u16 unk_38;
/* 0x3A */ u8 flag[3][16]; /* 0x3A */ u8 flag[3][16];
/* 0x6A */ u8 unk_6A[0x72]; /* 0x6A */ u8 unk_6A[0x72];
} SystemState; //8018fcf8, sizeof 0xDC } SystemState; //8018fcf8, sizeof 0xDC
@ -105,7 +105,7 @@ typedef struct player_state {
typedef struct game_stat { typedef struct game_stat {
/* 0x0 */ s16 unk_00; /* 0x0 */ s16 unk_00;
/* 0x2 */ s8 language; /* 0x2 */ u8 language;
/* 0x3 */ u8 sound_mode; /* 0x3 */ u8 sound_mode;
/* 0x4 */ s8 rumble; /* 0x4 */ s8 rumble;
/* 0x6 */ u16 total_stars; /* 0x6 */ u16 total_stars;
@ -147,4 +147,19 @@ extern PlayerState GWPlayer[4];
extern SystemState GWSystem; extern SystemState GWSystem;
extern GameStat GWGameStat; extern GameStat GWGameStat;
static inline s32 GWLanguageGet(void)
{
return GWGameStat.language;
}
static inline s32 GWMGTypeGet()
{
return GWSystem.mg_type;
}
static inline s32 GWMessSpeedGet()
{
return GWSystem.mess_speed;
}
#endif #endif

View file

@ -4,6 +4,30 @@
#include "game/hsfman.h" #include "game/hsfman.h"
#include "dolphin.h" #include "dolphin.h"
typedef struct model_data ModelData;
typedef struct {
/* 0x00 */ u16 unk00;
/* 0x02 */ s16 unk02;
/* 0x04 */ s16 unk04;
/* 0x06 */ char unk06[2];
/* 0x08 */ float unk08;
/* 0x0C */ float unk0C;
/* 0x10 */ float unk10;
/* 0x14 */ float unk14;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x2C */ float unk2C;
/* 0x30 */ float unk30;
/* 0x34 */ float unk34;
/* 0x38 */ float unk38;
/* 0x3C */ HsfBitmap *unk3C;
/* 0x40 */ char unk40[4];
} HsfdrawStruct01; // Size 0x44
void Hu3DDrawPreInit(void); void Hu3DDrawPreInit(void);
void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2); void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2);
s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2); s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2);
@ -25,4 +49,13 @@ HsfObject *Hu3DObjDuplicate(HsfData *arg0, u32 arg1);
void Hu3DModelObjDrawInit(void); void Hu3DModelObjDrawInit(void);
void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2); void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2);
extern u32 totalPolyCnt;
extern u32 totalPolyCnted;
extern u32 totalMatCnt;
extern u32 totalMatCnted;
extern u32 totalTexCnt;
extern u32 totalTexCnted;
extern u32 totalTexCacheCnt;
extern u32 totalTexCacheCnted;
#endif #endif

15
include/game/hsfex.h Normal file
View file

@ -0,0 +1,15 @@
#ifndef _GAME_HSFEX_H
#define _GAME_HSFEX_H
#include "dolphin.h"
void CamMotionEx2(s16 arg0, s16 arg1, float arg2, s16 arg3);
void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5, s16 arg6);
float InterpolateBMLine(float *arg0, float *arg1, float arg2);
void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2);
void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2);
void Hu3DMtxTransGet(Mtx arg0, Vec *arg1);
void Hu3DMtxRotGet(Mtx arg0, Vec *arg1);
void Hu3DMtxScaleGet(Mtx arg0, Vec *arg1);
#endif

View file

@ -238,10 +238,12 @@ typedef struct hsf_cluster {
char *name[2]; char *name[2];
union { union {
char *targetName; char *targetName;
u32 target; s32 target;
}; };
HsfPart *part; HsfPart *part;
u8 unk10[132]; float unk10;
float unk14[1]; // unknown array size
u8 unk18[124];
u8 adjusted; u8 adjusted;
u8 unk95; u8 unk95;
u16 type; u16 type;
@ -269,7 +271,7 @@ typedef struct hsf_object_data {
HsfVector3f min; HsfVector3f min;
HsfVector3f max; HsfVector3f max;
float baseMorph; float baseMorph;
float *morphWeight[33]; float morphWeight[33];
} mesh; } mesh;
struct hsf_object *replica; struct hsf_object *replica;
}; };
@ -339,9 +341,23 @@ typedef struct hsf_bitmap_keyframe {
typedef struct hsf_track { typedef struct hsf_track {
u8 type; u8 type;
u8 start; u8 start;
u16 target; union {
u16 param; u16 target;
u16 channel; s16 target_s16;
};
union {
s32 unk04;
struct {
union {
s16 param;
u16 param_u16;
};
union {
u16 channel;
s16 channel_s16;
};
};
};
u16 curveType; u16 curveType;
u16 numKeyframes; u16 numKeyframes;
union { union {
@ -352,7 +368,7 @@ typedef struct hsf_track {
typedef struct hsf_motion { typedef struct hsf_motion {
char *name; char *name;
u32 numTracks; s32 numTracks;
HsfTrack *track; HsfTrack *track;
float len; float len;
} HsfMotion; } HsfMotion;

View file

@ -1,20 +1,17 @@
#ifndef _GAME_HSFMAN_H #ifndef _GAME_HSFMAN_H
#define _GAME_HSFMAN_H #define _GAME_HSFMAN_H
#include "math.h"
#include "game/memory.h"
#include "game/hsfanim.h" #include "game/hsfanim.h"
#include "game/hsfformat.h" #include "game/hsfformat.h"
#include "game/sprite.h"
#include "game/init.h"
#include "game/data.h"
#include "game/memory.h" #include "game/memory.h"
#include "dolphin/gx/GXVert.h" #include "game/data.h"
#define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA))) #define Hu3DModelCreateFile(data_id) (Hu3DModelCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
typedef struct particle_data ParticleData; typedef struct particle_data ParticleData;
typedef void (*ModelHookFunc)(struct model_data *, Mtx);
typedef struct model_data { typedef struct model_data {
u8 unk_00; u8 unk_00;
u8 unk_01; u8 unk_01;
@ -41,12 +38,27 @@ typedef struct model_data {
u32 motion_attr; u32 motion_attr;
Point3d unk_58; Point3d unk_58;
f32 unk_64; f32 unk_64;
Point3d unk_68; f32 unk_68;
f32 unk_6C;
f32 unk_70;
f32 unk_74; f32 unk_74;
char unk_78[0x1C]; f32 unk_78;
f32 unk_7C;
f32 unk_80;
f32 unk_84;
f32 unk_88;
f32 unk_8C;
f32 unk_90;
f32 unk_94; f32 unk_94;
char unk_98[0x2C]; f32 unk_98;
HsfData *hsfData; f32 unk_9C;
f32 unk_A0;
f32 unk_A4[4];
f32 unk_B4[4];
union {
HsfData *hsfData;
ModelHookFunc hook;
};
HsfData *unk_C8; HsfData *unk_C8;
Vec pos; Vec pos;
Vec rot; Vec rot;
@ -97,11 +109,6 @@ typedef struct shadow_data {
Mtx unk_38; Mtx unk_38;
Mtx unk_68; Mtx unk_68;
} ShadowData; // sizeof 0x98 } ShadowData; // sizeof 0x98
typedef struct motion_data {
s16 unk_00;
s16 unk_02;
HsfData *unk_04;
} MotionData;
typedef struct light_data { typedef struct light_data {
s16 unk_00; s16 unk_00;
s16 unk_02; s16 unk_02;
@ -114,49 +121,7 @@ typedef struct light_data {
GXColor color; GXColor color;
} LightData; } LightData;
extern void ClusterMotionExec(ModelData*); /* extern */
extern void ClusterProc(ModelData*); /* extern */
extern void EnvelopeProc(HsfData*); /* extern */
extern void GXWaitDrawDone(); /* extern */ extern void GXWaitDrawDone(); /* extern */
extern void Hu3DAnimExec(); /* extern */
extern void Hu3DCameraMotionExec(s16); /* extern */
extern void Hu3DDraw(ModelData*, Mtx, Vec*); /* extern */
extern void Hu3DDrawPost(); /* extern */
extern void Hu3DDrawPreInit(); /* extern */
extern void Hu3DMotionNext(s16); /* extern */
extern void Hu3DShadowExec(); /* extern */
extern void Hu3DSubMotionExec(s16); /* extern */
extern void HuPerfBegin(s32); /* extern */
extern void HuPerfEnd(s32); /* extern */
extern void HuSprBegin(void); /* extern */
extern void HuSprDispInit(void); /* extern */
extern void HuSprExec(s16); /* extern */
extern void HuSprFinish(void); /* extern */
extern void InitVtxParm(HsfData*); /* extern */
extern void ShapeProc(HsfData*); /* extern */
extern void mtxRot(Mtx, f32, f32, f32); /* extern */
extern void mtxScaleCat(Mtx, f32, f32, f32); /* extern */
extern void mtxTransCat(Mtx, f32, f32, f32);
extern void Hu3DAnimInit(void);
extern void Hu3DMotionInit(void);
extern void Hu3DParManInit(void);
extern void Hu3DMotionClusterSet(s16, s16); /* extern */
extern void Hu3DMotionExec(s16, s16, f32, s32);
extern f32 Hu3DMotionMaxTimeGet(s16); /* extern */
extern s16 Hu3DMotionModelCreate(s16); /* extern */
extern void Hu3DMotionShapeSet(s16, s16); /* extern */
extern void MakeDisplayList(s16, HsfData*); /* extern */
extern void ClusterAdjustObject(HsfData*, HsfData*); /* extern */
extern HsfObject* Hu3DObjDuplicate(HsfData*, u32); /* extern */
extern void Hu3DAnimModelKill(s16); /* extern */
extern void Hu3DGLightKill(s16); /* extern */
extern void Hu3DLLightKill(s16, s16); /* extern */
extern s32 Hu3DMotionKill(s16);
extern void Hu3DModelKill(s16);
extern void Hu3DParManAllKill(void);
extern f32 Hu3DMotionMotionMaxTimeGet(s16);
extern void Hu3DMotionStartEndSet(s16, f32, f32);
extern void Hu3DMotionTimeSet(s16, f32);
extern void GXInitSpecularDir(GXLightObj*, f32, f32, f32); extern void GXInitSpecularDir(GXLightObj*, f32, f32, f32);
void Hu3DInit(void); void Hu3DInit(void);
@ -169,14 +134,14 @@ void Hu3DPauseSet(s32);
void Hu3DNoSyncSet(s32); void Hu3DNoSyncSet(s32);
s16 Hu3DModelCreate(void *); s16 Hu3DModelCreate(void *);
s16 Hu3DModelLink(s16); s16 Hu3DModelLink(s16);
s16 Hu3DHookFuncCreate(HsfData*); s16 Hu3DHookFuncCreate(ModelHookFunc);
void Hu3DModelAllKill(void); void Hu3DModelAllKill(void);
void Hu3DModelPosSet(s16, f32, f32, f32); void Hu3DModelPosSet(s16, f32, f32, f32);
void Hu3DModelPosSetV(s16, Vec); void Hu3DModelPosSetV(s16, Vec *);
void Hu3DModelRotSet(s16, f32, f32, f32); void Hu3DModelRotSet(s16, f32, f32, f32);
void Hu3DModelRotSetV(s16, Vec); void Hu3DModelRotSetV(s16, Vec *);
void Hu3DModelScaleSet(s16, f32, f32, f32); void Hu3DModelScaleSet(s16, f32, f32, f32);
void Hu3DModelScaleSetV(s16, Vec); void Hu3DModelScaleSetV(s16, Vec *);
void Hu3DModelAttrSet(s16, u32); void Hu3DModelAttrSet(s16, u32);
void Hu3DModelAttrReset(s16, u32); void Hu3DModelAttrReset(s16, u32);
u32 Hu3DModelAttrGet(s16); u32 Hu3DModelAttrGet(s16);
@ -278,13 +243,4 @@ extern s16 Hu3DCameraNo;
extern s16 Hu3DCameraBit; extern s16 Hu3DCameraBit;
extern s16 Hu3DPauseF; extern s16 Hu3DPauseF;
extern MotionData Hu3DMotion[0x100];
extern u32 totalMatCnt;
extern u32 totalMatCnted;
extern u32 totalPolyCnt;
extern u32 totalPolyCnted;
extern u32 totalTexCacheCnt;
extern u32 totalTexCacheCnted;
extern u32 totalTexCnt;
extern u32 totalTexCnted;
#endif #endif

76
include/game/hsfmotion.h Normal file
View file

@ -0,0 +1,76 @@
#ifndef _GAME_HSFMOTION_H
#define _GAME_HSFMOTION_H
#include "dolphin.h"
#include "game/hsfformat.h"
typedef struct motion_data {
s16 unk_00;
s16 unk_02;
HsfData *unk_04;
} MotionData;
typedef struct {
/* 0x00 */ float unk00;
/* 0x04 */ HsfBitmap *unk04;
} UnknownHsfMotionStruct01; // Size 8
void Hu3DMotionInit(void);
s16 Hu3DMotionCreate(void *arg0);
s16 Hu3DMotionModelCreate(s16 arg0);
s32 Hu3DMotionKill(s16 arg0);
void Hu3DMotionAllKill(void);
void Hu3DMotionSet(s16 arg0, s16 arg1);
void Hu3DMotionOverlaySet(s16 arg0, s16 arg1);
void Hu3DMotionOverlayReset(s16 arg0);
float Hu3DMotionOverlayTimeGet(s16 arg0);
void Hu3DMotionOverlayTimeSet(s16 arg0, float arg1);
void Hu3DMotionOverlaySpeedSet(s16 arg0, float arg1);
void Hu3DMotionShiftSet(s16 arg0, s16 arg1, float arg2, float arg3, u32 arg4);
void Hu3DMotionShapeSet(s16 arg0, s16 arg1);
s16 Hu3DMotionShapeIDGet(s16 arg0);
void Hu3DMotionShapeSpeedSet(s16 arg0, float arg1);
void Hu3DMotionShapeTimeSet(s16 arg0, float arg1);
float Hu3DMotionShapeMaxTimeGet(s16 arg0);
void Hu3DMotionShapeStartEndSet(s16 arg0, float arg1, float arg2);
s16 Hu3DMotionClusterSet(s16 arg0, s16 arg1);
s16 Hu3DMotionClusterNoSet(s16 arg0, s16 arg1, s16 arg2);
void Hu3DMotionShapeReset(s16 arg0);
void Hu3DMotionClusterReset(s16 arg0, s16 arg1);
s16 Hu3DMotionIDGet(s16 arg0);
s16 Hu3DMotionShiftIDGet(s16 arg0);
void Hu3DMotionTimeSet(s16 arg0, float arg1);
float Hu3DMotionTimeGet(s16 arg0);
float Hu3DMotionShiftTimeGet(s16 arg0);
float Hu3DMotionMaxTimeGet(s16 arg0);
float Hu3DMotionShiftMaxTimeGet(s16 arg0);
void Hu3DMotionShiftStartEndSet(s16 arg0, float arg1, float arg2);
float Hu3DMotionMotionMaxTimeGet(s16 arg0);
void Hu3DMotionStartEndSet(s16 arg0, float arg1, float arg2);
s32 Hu3DMotionEndCheck(s16 arg0);
void Hu3DMotionSpeedSet(s16 arg0, float arg1);
void Hu3DMotionShiftSpeedSet(s16 arg0, float arg1);
void Hu3DMotionNoMotSet(s16 arg0, char *arg1, u32 arg2);
void Hu3DMotionNoMotReset(s16 arg0, char *arg1, u32 arg2);
void Hu3DMotionForceSet(s16 arg0, char *arg1, u32 arg2, float arg3);
void Hu3DMotionNext(s16 arg0);
void Hu3DMotionExec(s16 arg0, s16 arg1, float arg2, s32 arg3);
void Hu3DCameraMotionExec(s16 arg0);
void Hu3DSubMotionExec(s16 arg0);
float *GetObjTRXPtr(HsfObject *arg0, u16 arg1);
void SetObjMatMotion(s16 arg0, HsfTrack *arg1, float arg2);
void SetObjAttrMotion(s16 arg0, HsfTrack *arg1, float arg2);
void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2);
void SetObjLightMotion(s16 arg0, HsfTrack *arg1, float arg2);
float GetCurve(HsfTrack *arg0, float arg1);
float GetConstant(s32 arg0, float *arg1, float arg2);
float GetLinear(s32 arg0, float arg1[][2], float arg2);
float GetBezier(s32 arg0, HsfTrack *arg1, float arg2);
HsfBitmap *GetBitMap(s32 arg0, UnknownHsfMotionStruct01 *arg1, float arg2);
s16 Hu3DJointMotion(s16 arg0, void *arg1);
void JointModel_Motion(s16 arg0, s16 arg1);
void Hu3DMotionCalc(s16 arg0);
extern MotionData Hu3DMotion[256];
#endif

19
include/game/jmp.h Executable file
View file

@ -0,0 +1,19 @@
#ifndef _GAME_JMP_H
#define _GAME_JMP_H
#include "dolphin.h"
typedef struct jump_buf {
u32 lr;
u32 cr;
u32 sp;
u32 r2;
u32 pad;
u32 regs[19];
double flt_regs[19];
} jmp_buf;
int gcsetjmp(jmp_buf *jump);
int gclongjmp(jmp_buf *jump, int status);
#endif

View file

@ -54,7 +54,7 @@ void msmMusStop(s32 arg0, s32 arg1);
s32 msmMusPlay(s32 arg0, s32 arg1); s32 msmMusPlay(s32 arg0, s32 arg1);
void msmSeDelListener(void); void msmSeDelListener(void);
void msmSeUpdataListener(s32 arg0, s32 arg1); void msmSeUpdataListener(s32 arg0, s32 arg1);
void msmSeSetListener(s32 arg0, s32 arg1, float arg2, float arg3, UnkMsmStruct_02 *arg4); void msmSeSetListener(Vec* arg0, Vec* arg1, float arg2, float arg3, UnkMsmStruct_02 *arg4);
s32 msmSeGetEntryID(s32 arg0, void *arg1); s32 msmSeGetEntryID(s32 arg0, void *arg1);
s32 msmSeGetNumPlay(s32 arg0); s32 msmSeGetNumPlay(s32 arg0);
s32 msmSeGetStatus(s32 arg0); s32 msmSeGetStatus(s32 arg0);

View file

@ -22,6 +22,9 @@ typedef enum {
#define OM_STAT_NOPAUSE 0x20 #define OM_STAT_NOPAUSE 0x20
#define OM_STAT_MODEL_PAUSED 0x100 #define OM_STAT_MODEL_PAUSED 0x100
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
typedef void (*omObjFunc)(struct om_obj_data *); typedef void (*omObjFunc)(struct om_obj_data *);
typedef struct om_ovl_his_data { typedef struct om_ovl_his_data {

View file

@ -1,6 +1,7 @@
#ifndef _GAME_PROCESS_H #ifndef _GAME_PROCESS_H
#define _GAME_PROCESS_H #define _GAME_PROCESS_H
#include "game/jmp.h"
#include "dolphin/types.h" #include "dolphin/types.h"
#define PROCESS_STAT_PAUSE 0x1 #define PROCESS_STAT_PAUSE 0x1
@ -8,16 +9,6 @@
#define PROCESS_STAT_PAUSE_EN 0x4 #define PROCESS_STAT_PAUSE_EN 0x4
#define PROCESS_STAT_UPAUSE_EN 0x8 #define PROCESS_STAT_UPAUSE_EN 0x8
typedef struct jump_buf {
u32 lr;
u32 cr;
u32 sp;
u32 r2;
u32 pad;
u32 regs[19];
double flt_regs[19];
} jmp_buf;
typedef struct process { typedef struct process {
struct process *next; struct process *next;
struct process *prev; struct process *prev;

View file

@ -10,9 +10,9 @@ s16 HuTHP3DCreate(char *path, s16 loop);
void HuTHPStop(void); void HuTHPStop(void);
void HuTHPClose(void); void HuTHPClose(void);
void HuTHPRestart(void); void HuTHPRestart(void);
int HuTHPEndCheck(void); BOOL HuTHPEndCheck(void);
int HuTHPFrameGet(void); s32 HuTHPFrameGet(void);
int HuTHPTotalFrameGet(void); s32 HuTHPTotalFrameGet(void);
void HuTHPSetVolume(int left, int right); void HuTHPSetVolume(s32 left, s32 right);
#endif #endif

View file

@ -73,6 +73,7 @@ _MATH_INLINE float sinf(float x) { return (float)sin((double)x); }
_MATH_INLINE float cosf(float x) { return (float)cos((double)x); } _MATH_INLINE float cosf(float x) { return (float)cos((double)x); }
_MATH_INLINE float atan2f(float y, float x) { return (float)atan2((double)y, (double)x); } _MATH_INLINE float atan2f(float y, float x) { return (float)atan2((double)y, (double)x); }
_MATH_INLINE float atanf(float x) { return (float)atan((double)x); } _MATH_INLINE float atanf(float x) { return (float)atan((double)x); }
_MATH_INLINE float asinf(float x) { return (float)asin((double)x); }
_MATH_INLINE float fmodf(float x, float m) { return (float)fmod((double)x, (double)m); } _MATH_INLINE float fmodf(float x, float m) { return (float)fmod((double)x, (double)m); }

View file

@ -3,28 +3,23 @@
#include "dolphin.h" #include "dolphin.h"
void Hu3D2Dto3D(Vec*, s32, Vec*);
void HuAudFadeOut(s32 arg0);
void Hu3DModelPosSet(s16 index, float x, float y, float z);
void Hu3DModelRotSet(s16 index, float x, float y, float z);
void Hu3DModelScaleSet(s16 index, float x, float y, float z);
void espInit(void);
void espScaleSet(s16, f32, f32);
s16 espEntry(s32, s32, s32);
void espDispOff(s16);
void espKill(s16);
void espDispOn(s16);
void espPosSet(s16, f32, f32);
void HuAudFXListnerKill(void);
void HuAudDllSndGrpSet(u16 ovl);
void HuAudVoiceInit(s16 ovl);
void MGSeqKillAll(void); void MGSeqKillAll(void);
void MGSeqPracticeStart(void); void MGSeqPracticeStart(void);
void fn_8004D6F4(s16 arg); void CharMotionClose(s16 character);
void CharModelClose(s16 character);
void CharModelKill(s16 character);
s16 CharModelCreate(s16 character, s16 lod);
s16 CharMotionCreate(s16 character, s32 data_num);
void CharModelMotionSet(s16 character, s16 motion);
float CharModelMotionMaxTimeGet(s16 character);
float CharModelMotionTimeGet(s16 character);
void CharModelMotionShiftSet(s16 model, s16 motion, float time, float shift_time, u32 attr);
void CharModelMotionTimeSet(s16 character, float time);
void CharModelMotionSpeedSet(s16 character, float speed);
void CharMotionKill(s16 character, s32 motion);
void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag);
s32 CharModelMotionEndCheck(s16 character);
#endif #endif

View file

@ -1,4 +1,4 @@
#include "common.h" #include "game/gamework_data.h"
#include "game/process.h" #include "game/process.h"
#include "game/data.h" #include "game/data.h"
#include "game/sprite.h" #include "game/sprite.h"
@ -19,7 +19,7 @@
extern int SystemInitF; extern int SystemInitF;
static Process *objman; static Process *objman[2];
Vec lbl_1_bss_3C[2]; Vec lbl_1_bss_3C[2];
Vec lbl_1_bss_24[2]; Vec lbl_1_bss_24[2];
float lbl_1_bss_1C[2]; float lbl_1_bss_1C[2];
@ -42,11 +42,13 @@ static BOOL TitleProc(void);
void *logoReadNintendo(void); void *logoReadNintendo(void);
#define M_PI 3.141592653589793
void ModuleProlog(void) void ModuleProlog(void)
{ {
omOvlHisData *history; omOvlHisData *history;
OSReport("******* Boot ObjectSetup *********\n"); OSReport("******* Boot ObjectSetup *********\n");
objman = omInitObjMan(50, 8192); objman[0] = omInitObjMan(50, 8192);
lbl_1_bss_3C[0].x = -67; lbl_1_bss_3C[0].x = -67;
lbl_1_bss_3C[0].y = 40; lbl_1_bss_3C[0].y = 40;
lbl_1_bss_3C[0].z = 0; lbl_1_bss_3C[0].z = 0;
@ -384,9 +386,62 @@ void fn_1_1178(void)
} }
} }
void fn_1_152C(void) //NON_MATCHING, only one in file
{ void fn_1_152C(void) {
Point3d temp_f0;
Point3d temp_f0_4;
Point3d temp_f0_7;
Point3d sp8;
f32 temp_f31;
s32 var_r30;
s8 temp_r31;
if ((HuPadBtnDown[0] & 0x800)) {
if (lbl_1_bss_0 != 0) {
var_r30 = 0;
} else {
var_r30 = 1;
}
lbl_1_bss_0 = var_r30;
}
if (lbl_1_bss_0 != 0) {
lbl_1_bss_3C->y += 0.1f * HuPadStkX[0];
lbl_1_bss_3C->x += 0.1f * HuPadStkY[0];
*lbl_1_bss_1C += HuPadTrigL[0] / 2;
*lbl_1_bss_1C -= HuPadTrigR[0] / 2;
if (*lbl_1_bss_1C < 100.0f) {
*lbl_1_bss_1C = 100.0f;
}
temp_f0.x = lbl_1_bss_24->x + (*lbl_1_bss_1C * (sin((M_PI * lbl_1_bss_3C->y) / 180.0) * cos((M_PI * lbl_1_bss_3C->x) / 180.0)));
temp_f0.y = (lbl_1_bss_24->y + (*lbl_1_bss_1C * -sin((M_PI * lbl_1_bss_3C->x) / 180.0)));
temp_f0.z = (lbl_1_bss_24->z + (*lbl_1_bss_1C * (cos((M_PI * lbl_1_bss_3C->y) / 180.0) * cos((M_PI * lbl_1_bss_3C->x) / 180.0))));
temp_f0_4.x = lbl_1_bss_24->x - temp_f0.x;
temp_f0_4.y = lbl_1_bss_24->y - temp_f0.y;
temp_f0_4.z = lbl_1_bss_24->z - temp_f0.z;
temp_f0_7.x = (sin((M_PI * lbl_1_bss_3C->y) / 180.0) * sin((M_PI * lbl_1_bss_3C->x) / 180.0));
temp_f0_7.y = cos((M_PI * lbl_1_bss_3C->x) / 180.0);
temp_f0_7.z = (cos((M_PI * lbl_1_bss_3C->y) / 180.0) * sin((M_PI * lbl_1_bss_3C->x) / 180.0));
temp_f31 = lbl_1_bss_3C->z;
sp8.x = ((temp_f0_7.x * ((temp_f0_4.x * temp_f0_4.x) + ((1.0f - (temp_f0_4.x * temp_f0_4.x)) * cos((M_PI * temp_f31) / 180.0)))) + temp_f0_7.y * (((temp_f0_4.x * temp_f0_4.y) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.z * sin((M_PI * temp_f31) / 180.0)) + temp_f0_7.z * (((temp_f0_4.x * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.y * sin((M_PI * temp_f31) / 180.0)));
sp8.y = ((temp_f0_7.y * ((temp_f0_4.y * temp_f0_4.y) + ((1.0f - (temp_f0_4.y * temp_f0_4.y)) * cos((M_PI * temp_f31) / 180.0)))) + temp_f0_7.x * (((temp_f0_4.x * temp_f0_4.y) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.z * sin((M_PI * temp_f31) / 180.0)) + temp_f0_7.z * (((temp_f0_4.y * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.x * sin((M_PI * temp_f31) / 180.0)));
sp8.z = ((temp_f0_7.z * (temp_f0_4.z * temp_f0_4.z + ((1.0f - (temp_f0_4.z * temp_f0_4.z)) * cos((M_PI * temp_f31) / 180.0)))) + (temp_f0_7.x * (((temp_f0_4.x * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) - temp_f0_4.y * sin((M_PI * temp_f31) / 180.0))) + temp_f0_7.y * (((temp_f0_4.y * temp_f0_4.z) * (1.0 - cos((M_PI * temp_f31) / 180.0))) + temp_f0_4.x * sin((M_PI * temp_f31) / 180.0)));
PSVECCrossProduct(&temp_f0_7, &temp_f0_4, &temp_f0_4);
PSVECNormalize(&temp_f0_4, &temp_f0_4);
temp_r31 = (HuPadSubStkX[0] & 0xF8);
if (temp_r31 != 0) {
lbl_1_bss_24->x += 0.05f * (temp_f0_4.x * temp_r31);
lbl_1_bss_24->y += 0.05f * (temp_f0_4.y * temp_r31);
lbl_1_bss_24->z += 0.05f * (temp_f0_4.z * temp_r31);
}
PSVECNormalize(&sp8, &temp_f0_4);
temp_r31 = -(HuPadSubStkY[0] & 0xF8);
if (temp_r31 != 0) {
lbl_1_bss_24->x += 0.05f * (temp_f0_4.x * temp_r31);
lbl_1_bss_24->y += 0.05f * (temp_f0_4.y * temp_r31);
lbl_1_bss_24->z += 0.05f * (temp_f0_4.z * temp_r31);
}
}
} }
static void TitleInit(void) static void TitleInit(void)
@ -486,5 +541,6 @@ static BOOL TitleProc(void)
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN);
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN); HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN);
fn_1_152C();
return 0; return 0;
} }

View file

@ -1,5 +1,6 @@
#include "common.h" #include "game/audio.h"
#include "game/object.h" #include "game/object.h"
#include "game/gamework_data.h"
#include "game/printfunc.h" #include "game/printfunc.h"
#include "game/pad.h" #include "game/pad.h"
#include "game/wipe.h" #include "game/wipe.h"

View file

@ -1,75 +0,0 @@
#include "common.h"
#include "dolphin.h"
#include "REL/executor.h"
#include "game/process.h"
#include "game/data.h"
//DATA file1
s16 lbl_1_data_280 = -1;
s16 lbl_1_data_282 = -1;
s16 lbl_1_data_284 = -1;
s16 lbl_1_data_286 = -1;
s32 lbl_1_data_288 = -1;
//char lbl_1_data_28C[] = "%d";
//shouldn't use MAKE_DATA_NUM
s32 lbl_1_data_290[] = {
MAKE_DATA_NUM(0x005F, 0x0062),
MAKE_DATA_NUM(0x001A, 0x0062),
MAKE_DATA_NUM(0x006D, 0x0062),
MAKE_DATA_NUM(0x008A, 0x0062),
MAKE_DATA_NUM(0x0085, 0x0062),
MAKE_DATA_NUM(0x0011, 0x0062),
MAKE_DATA_NUM(0x000D, 0x0062),
MAKE_DATA_NUM(0x0081, 0x0062),
};
//shouldn't use MAKE_DATA_NUM
s32 lbl_1_data_2B0[] = {
MAKE_DATA_NUM(0x005F, 0x0033),
MAKE_DATA_NUM(0x001A, 0x0033),
MAKE_DATA_NUM(0x006D, 0x0033),
MAKE_DATA_NUM(0x008A, 0x0033),
MAKE_DATA_NUM(0x0085, 0x0033),
MAKE_DATA_NUM(0x0011, 0x0033),
MAKE_DATA_NUM(0x000D, 0x0033),
MAKE_DATA_NUM(0x0081, 0x0033),
};
s32 lbl_1_data_2D0[] = {
0x125, 0x165, 0x1A5, 0x1E5, 0x225, 0x265, 0x2A5, 0x2E5
};
s32 lbl_1_data_2F0[] = {
0x12E, 0x16E, 0x1AE, 0x1EE, 0x22E, 0x26E, 0x2AE, 0x2EE
};
s16 lbl_1_data_310 = -1;
s16 lbl_1_data_312 = -1;
s16 lbl_1_data_314 = -1;
s16 lbl_1_data_316 = -1;
s32 lbl_1_data_318[] = {
MAKE_DATA_NUM(0x0077, 0x0016),
MAKE_DATA_NUM(0x0077, 0x0017),
MAKE_DATA_NUM(0x0077, 0x0018),
MAKE_DATA_NUM(0x0077, 0x0019),
MAKE_DATA_NUM(0x0077, 0x001A),
DATA_NUM_LISTEND
};
char lbl_1_data_330[] = "itemhook_oya";
char lbl_1_data_33D[] = "jyanA";
char lbl_1_data_343[] = "jyanB";
char* lbl_1_data_34C[] = {
&lbl_1_data_33D, &lbl_1_data_343
};
char lbl_1_data_354[] = "coin";
char* lbl_1_data_35C[] = {
&lbl_1_data_33D, &lbl_1_data_343
};

View file

@ -1,38 +1,52 @@
#include "common.h"
#include "dolphin.h" #include "dolphin.h"
#include "REL/executor.h" #include "REL/executor.h"
#include "game/process.h" #include "game/process.h"
#include "game/data.h" #include "game/data.h"
#include "game/gamework_data.h"
#include "REL/w03Dll.h"
#include "game/board/space.h"
#include "game/object.h"
#include "game/board/player.h"
#include "math.h"
#include "board_unsplit.h"
#include "game/hsfman.h"
void BoardModelPosSet(s16, f32, f32, f32);
s32 BoardModelMotionStart(s16, s32, s32);
void fn_8005B150(void*, void*); void fn_8005B150(void*, void*);
void fn_1_740(void); void fn_1_740(void);
void fn_1_E0(void); void fn_1_E0(void);
void fn_1_2930(void);
void fn_1_884(void);
void fn_1_8F0(void);
s32 fn_1_910(void);
s32 fn_1_A74(void);
void fn_1_AF8(void);
void fn_1_DEC(void);
void fn_1_10B0(void);
s32 fn_1_12C8(void);
void fn_8006DDE8(s16, f32);
void fn_1_10E4(omObjData* arg0);
extern Process *boardObjMan;
typedef void (*VoidFunc)(void); typedef void (*VoidFunc)(void);
extern const VoidFunc _ctors[]; extern const VoidFunc _ctors[];
extern const VoidFunc _dtors[]; extern const VoidFunc _dtors[];
typedef struct w03StructUnk0 {
/* 0x00 */ Vec unk_00;
/* 0x0C */ Vec unk_0C;
/* 0x18 */ Vec unk_18;
/* 0x24 */ s32 datanum;
} w03StructUnk0;
typedef struct w03State { f32 BoardModelMotionTimeGet(s16);
s8 unk0; s16 BoardModelCreate(s32, void*, s32);
u8 unk1; void BoardModelKill(s16);
u8 unk2; void BoardModelMotionStartEndSet(s16, s32, s32);
s8 unk3; void Hu3DFogSet(f32, f32, u8, u8, u8);
u16 unk4; void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6);
u16 unk6; u8 WipeStatGet(void);
s16 unk8;
} w03State;
//DATA //DATA
w03StructUnk0 lbl_1_data_0[] = { w03StructUnk0 lbl_1_data_0[] = {
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0004)}, {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0004)},
{{145.099f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0005)}, {{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0005)},
{{-2004.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0006)}, {{-1548.14f, -1148.76f, -1095.54f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0006)},
{{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)}, {{1050.0f, 50.0f, -1810.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)},
{{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)}, {{-1950.0f, 50.0f, 1790.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000B)},
{{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000A)}, {{1050.0f, 0.0f, -1750.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000A)},
@ -44,11 +58,11 @@ w03StructUnk0 lbl_1_data_0[] = {
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)}, {{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)},
}; };
s16 lbl_1_data_1E0 = 1; s16 lbl_1_data_1E0 = -1;
s16 lbl_1_data_1E2 = 1; s16 lbl_1_data_1E2 = -1;
s16 lbl_1_data_1E4 = 1; s16 lbl_1_data_1E4 = -1;
s16 lbl_1_data_1E6 = 1; s16 lbl_1_data_1E6 = -1;
s16 lbl_1_data_1E8 = 1; s16 lbl_1_data_1E8 = -1;
typedef struct w03StructUnk1 { typedef struct w03StructUnk1 {
f32 unk_00; f32 unk_00;
@ -65,12 +79,12 @@ w03StructUnk1 lbl_1_data_1EC = {
0.0f, 118.0f, 120.0f, 180.0f, 180.0f, 240.0f, 240.0f, 300.0f 0.0f, 118.0f, 120.0f, 180.0f, 180.0f, 240.0f, 240.0f, 300.0f
}; };
s32 lbl_1_data_20C = { s32 lbl_1_data_20C[] = {
MAKE_DATA_NUM(0x0077, 0x001C), MAKE_DATA_NUM(0x0077, 0x001C),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
s32 lbl_1_data_214 = { s32 lbl_1_data_214[] = {
MAKE_DATA_NUM(0x0002, 0x000E), MAKE_DATA_NUM(0x0002, 0x000E),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
@ -94,35 +108,18 @@ s32 lbl_1_data_26C[] = {
0x0000044C, 0x0000043A, 0x0000043A, 0x0000044E 0x0000044C, 0x0000043A, 0x0000043A, 0x0000044E
}; };
s32 pad_27C[] = {0};
//BSS //BSS
s16 lbl_1_bss_C[14];
s32 lbl_1_bss_8;
omObjData* lbl_1_bss_4;
w03State* lbl_1_bss_0; w03State* lbl_1_bss_0;
void fn_1_CF4(void); void fn_1_CF4(void);
void fn_1_0(void) { void BoardCreate(void) {
fn_8005B150(&fn_1_E0, &fn_1_740); s32* var_r29;
}
int _prolog(void) {
const VoidFunc* ctors = _ctors;
while (*ctors != 0) {
(**ctors)();
ctors++;
}
fn_8005B150(&fn_1_E0, &fn_1_740);
return 0;
}
void _epilog(void) {
const VoidFunc* dtors = _dtors;
while (*dtors != 0) {
(**dtors)();
dtors++;
}
}
void fn_1_E0(void) {
Vec* var_r29;
f32 var_f30; f32 var_f30;
f32 var_f31; f32 var_f31;
s32 var_r31; s32 var_r31;
@ -132,62 +129,62 @@ void fn_1_E0(void) {
lbl_1_bss_0 = (w03State*)&GWSystem.board_data; lbl_1_bss_0 = (w03State*)&GWSystem.board_data;
lbl_1_bss_0->unk3 = 0; lbl_1_bss_0->unk3 = 0;
fn_800772EC(0x770000); BoardSpaceInit(0x770000);
lbl_1_data_1E0 = fn_8006D9A4(0x770001, NULL, 0); lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0);
fn_8006DDE8(lbl_1_data_1E0, -1.0f); fn_8006DDE8(lbl_1_data_1E0, -1.0f);
fn_8006F1A8(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f);
fn_8006E2B8(lbl_1_data_1E0, 0, 0x40000001); BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001);
lbl_1_data_1E8 = fn_8006D9A4(0x770003, NULL, 0); lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0);
fn_8006DDE8(lbl_1_data_1E8, -1.0f); fn_8006DDE8(lbl_1_data_1E8, -1.0f);
fn_8006F1A8(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f);
fn_8006F61C(lbl_1_data_1E8, 2); BoardModelLayerSet(lbl_1_data_1E8, 2);
lbl_1_data_1E2 = fn_8006D9A4(0x770002, NULL, 0); lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0);
fn_8006DDE8(lbl_1_data_1E2, -1.0f); fn_8006DDE8(lbl_1_data_1E2, -1.0f);
fn_8006F1A8(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
fn_8006E2B8(lbl_1_data_1E2, 0, 0x40000001); BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
lbl_1_data_1E4 = fn_8006D9A4(0x77001B, &lbl_1_data_20C, 0); lbl_1_data_1E4 = BoardModelCreate(0x77001B, &lbl_1_data_20C, 0);
fn_8006F1A8(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
fn_8006E2B8(lbl_1_data_1E4, 1, 0x40000001); BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
lbl_1_data_1E6 = fn_8006D9A4(0x2000D, &lbl_1_data_214, 0); lbl_1_data_1E6 = BoardModelCreate(0x2000D, &lbl_1_data_214, 0);
fn_8006F1A8(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
fn_8006E2B8(lbl_1_data_1E6, 1, 0x40000001); BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
for (i = 0; i < 0xC; i++) { for (i = 0; i < 12; i++) {
temp_r30 = &lbl_1_data_0[i]; temp_r30 = &lbl_1_data_0[i];
if (temp_r30->datanum != -1) { if (temp_r30->datanum != -1) {
if ((i == 10) || (i == 11)) { if ((i == 10) || (i == 11)) {
var_r29 = &lbl_1_data_214; var_r29 = lbl_1_data_214;
} else { } else {
var_r29 = NULL; var_r29 = NULL;
} }
lbl_1_bss_C[i]= fn_8006D9A4(temp_r30->datanum, var_r29, 0); lbl_1_bss_C[i]= BoardModelCreate(temp_r30->datanum, var_r29, 0);
fn_8006F158(lbl_1_bss_C[i], temp_r30); BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->unk_00);
fn_8006F220(lbl_1_bss_C[i], &temp_r30->unk_0C); BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->unk_0C);
fn_8006F2E8(lbl_1_bss_C[i], &temp_r30->unk_18); BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->unk_18);
fn_8006F50C(lbl_1_bss_C[i], 1); BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
} }
} }
fn_8006E2B8(lbl_1_bss_C[10], 1, 0x40000001); BoardModelMotionStart(lbl_1_bss_C[10], 1, 0x40000001);
fn_8006E2B8(lbl_1_bss_C[11], 1, 0x40000001); BoardModelMotionStart(lbl_1_bss_C[11], 1, 0x40000001);
fn_8006E2B8(lbl_1_bss_C[7], 0, 0x40000002); BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
fn_8006E2B8(lbl_1_bss_C[9], 0, 0x40000002); BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000002);
fn_8006E2B8(lbl_1_bss_C[1], 0, 0x40000002); BoardModelMotionStart(lbl_1_bss_C[1], 0, 0x40000002);
fn_1_3058(); fn_1_3058();
fn_1_6494(); fn_1_6494();
fn_1_7ABC(); fn_1_7ABC();
fn_1_9A7C(); fn_1_9A7C();
fn_8005D10C(&fn_1_884, &fn_1_8F0); BoardLightHookSet(&fn_1_884, &fn_1_8F0);
fn_80073FF4(&fn_1_910); BoardSpaceWalkEventFuncSet(&fn_1_910);
fn_80073FFC(&fn_1_A74); BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_A74);
fn_80074004(&fn_1_AF8); BoardSpaceLandEventFuncSet((void*)&fn_1_AF8);
fn_80083EDC(lbl_1_data_1E4); BoardStarHostSet(lbl_1_data_1E4);
fn_800A4F6C(lbl_1_data_1E6); BoardBooHouseHostSet(lbl_1_data_1E6);
fn_8007A83C(lbl_1_data_1E6); BoardLotteryHostSet(lbl_1_data_1E6);
fn_80077AAC(lbl_1_data_1E6); BoardShopHostSet(lbl_1_data_1E6);
fn_80064D84(0x0000C000); BoardJunctionMaskSet(0x0000C000);
fn_80064D84(0x3000); BoardJunctionMaskSet(0x3000);
fn_1_CF4(); fn_1_CF4();
fn_8006E2B8(lbl_1_bss_C[0], 0, 0x40000001); BoardModelMotionStart(lbl_1_bss_C[0], 0, 0x40000001);
if (lbl_1_bss_0->unk0 != 0) { if (lbl_1_bss_0->unk0 != 0) {
var_f30 = lbl_1_data_1EC.unk_10; var_f30 = lbl_1_data_1EC.unk_10;
var_f31 = lbl_1_data_1EC.unk_14; var_f31 = lbl_1_data_1EC.unk_14;
@ -197,14 +194,14 @@ void fn_1_E0(void) {
var_f31 = lbl_1_data_1EC.unk_04; var_f31 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1); fn_1_63F4(1);
} }
fn_8006E0B0(lbl_1_bss_C[0], var_f30, var_f31); BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f30, var_f31);
fn_8006E2B8(lbl_1_bss_C[2], 0, 0x40000001); BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001);
fn_8006E0B0(lbl_1_bss_C[2], 1, 0x64); BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 0x64);
fn_1_785C(); fn_1_785C();
if (lbl_1_bss_0->unk2 != 0) { if (lbl_1_bss_0->unk2 != 0) {
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) { if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) {
fn_80064338(i, &fn_1_2930); BoardPlayerPreTurnHookSet(i, &fn_1_2930);
break; break;
} }
} }
@ -212,41 +209,38 @@ void fn_1_E0(void) {
fn_1_DEC(); fn_1_DEC();
} }
void fn_1_740(void) { void BoardDestroy(void) {
s32 i; s32 i;
fn_1_10B0(); fn_1_10B0();
fn_1_9A9C(); fn_1_9A9C();
fn_1_7B58(); fn_1_7B58();
for (i = 0; i < 0x0C; i++) { for (i = 0; i < 0x0C; i++) {
fn_8006DB90(lbl_1_bss_C[i]); BoardModelKill(lbl_1_bss_C[i]);
lbl_1_bss_C[i] = -1; lbl_1_bss_C[i] = -1;
} }
if (lbl_1_data_1E6 != -1) { if (lbl_1_data_1E6 != -1) {
fn_8006DB90(lbl_1_data_1E6); BoardModelKill(lbl_1_data_1E6);
lbl_1_data_1E6 = -1; lbl_1_data_1E6 = -1;
} }
if (lbl_1_data_1E4 != -1) { if (lbl_1_data_1E4 != -1) {
fn_8006DB90(lbl_1_data_1E4); BoardModelKill(lbl_1_data_1E4);
lbl_1_data_1E4 = -1; lbl_1_data_1E4 = -1;
} }
if (lbl_1_data_1E0 != -1) { if (lbl_1_data_1E0 != -1) {
fn_8006DB90(lbl_1_data_1E0); BoardModelKill(lbl_1_data_1E0);
lbl_1_data_1E0 = -1; lbl_1_data_1E0 = -1;
} }
if (lbl_1_data_1E2 != -1) { if (lbl_1_data_1E2 != -1) {
fn_8006DB90(lbl_1_data_1E2); BoardModelKill(lbl_1_data_1E2);
lbl_1_data_1E2 = -1; lbl_1_data_1E2 = -1;
} }
} }
extern f32 lbl_1_rodata_18;
extern f32 lbl_1_rodata_1C;
void fn_1_884(void) { void fn_1_884(void) {
s32 var = fn_8006DBD4(lbl_1_data_1E0); s16 var = BoardModelIDGet(lbl_1_data_1E0);
Hu3DModelLightInfoSet(var, 1); Hu3DModelLightInfoSet(var, 1);
Hu3DFogSet(lbl_1_rodata_18, lbl_1_rodata_1C, 0xE4U, 0xF0U, 0xFFU); Hu3DFogSet(5000.0f, 30000.0f, 0xE4U, 0xF0U, 0xFFU);
} }
void fn_1_8F0(void) { void fn_1_8F0(void) {
@ -256,13 +250,13 @@ void fn_1_8F0(void) {
s32 fn_1_910(void) { s32 fn_1_910(void) {
u32 temp_r3; u32 temp_r3;
s32 cur_player_index; s32 cur_player_index;
s32 unkC; s32 space;
cur_player_index = GWSystem.player_curr; cur_player_index = GWSystem.player_curr;
unkC = GWPlayer[cur_player_index].unkC; space = GWPlayer[cur_player_index].space_curr;
temp_r3 = fn_80074138(0, unkC); temp_r3 = BoardSpaceFlagGet(0, space);
if (temp_r3 & 0xC000) { if (temp_r3 & 0xC000) {
if ((fn_8006413C(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].placement >> 4U) & 1))) { if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].bowser_suit)))) {
return 0; return 0;
} }
if (temp_r3 & 0x4000) { if (temp_r3 & 0x4000) {
@ -277,7 +271,7 @@ s32 fn_1_910(void) {
return fn_1_309C(); return fn_1_309C();
} }
if (temp_r3 & 0x200) { if (temp_r3 & 0x200) {
if ((fn_8006413C(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].placement >> 4U) & 1) != 0)) { if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].bowser_suit)) != 0)) {
return 0; return 0;
} }
return fn_1_675C(); return fn_1_675C();
@ -285,9 +279,9 @@ s32 fn_1_910(void) {
return 0; return 0;
} }
void fn_1_A74(void) { s32 fn_1_A74(void) {
s16 temp = GWPlayer[GWSystem.player_curr].unkC; s16 space = GWPlayer[GWSystem.player_curr].space_curr;
u32 var = fn_80074138(0, temp) & 0x600000; u32 var = BoardSpaceFlagGet(0, space) & 0x600000;
if (var + -0x200000 == 0) { if (var + -0x200000 == 0) {
fn_1_7BA8(); fn_1_7BA8();
return; return;
@ -298,8 +292,8 @@ void fn_1_A74(void) {
} }
void fn_1_AF8(void) { void fn_1_AF8(void) {
if ((fn_8006413C(GWSystem.player_curr) == 0) && (fn_1_12C8() != 0) && (lbl_1_bss_0->unk2 != 0)) { if ((BoardPlayerSizeGet(GWSystem.player_curr) == 0) && (fn_1_12C8() != 0) && (lbl_1_bss_0->unk2 != 0)) {
fn_80064D84(0xC00); BoardJunctionMaskSet(0xC00);
} }
} }
void fn_1_B5C(s32 arg0) { void fn_1_B5C(s32 arg0) {
@ -322,38 +316,38 @@ void fn_1_B5C(s32 arg0) {
var_f28 = lbl_1_data_1EC.unk_04; var_f28 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1); fn_1_63F4(1);
} }
fn_8006E2B8(lbl_1_bss_C[0], 0, 0); BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
fn_8006E674(lbl_1_bss_C[0], var_f30); BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f30);
while (1) { while (1) {
temp = fn_8006E6F8(lbl_1_bss_C[0]); temp = BoardModelMotionTimeGet(lbl_1_bss_C[0]);
if (temp >= var_f29) { if (temp >= var_f29) {
break; break;
} }
HuPrcVSleep(); HuPrcVSleep();
} }
fn_8006E5C4(lbl_1_bss_C[0], 0x40000001); BoardModelAttrSet(lbl_1_bss_C[0], 0x40000001);
fn_8006E674(lbl_1_bss_C[0], var_f31); BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f31);
fn_8006E0B0(lbl_1_bss_C[0], (s32) var_f31, (s32) var_f28); BoardModelMotionStartEndSet(lbl_1_bss_C[0], (s32) var_f31, (s32) var_f28);
} }
void fn_1_CF4(void) { void fn_1_CF4(void) {
s16 var; s16 var;
s32 i, j; s32 i, j;
spaceData* temp_r28; BoardSpace* temp_r28;
spaceData* temp_r31; BoardSpace* temp_r31;
for (i = 0; i < fn_800740B4(0); i++) { for (i = 0; i < BoardSpaceCountGet(0); i++) {
var = i + 1; var = i + 1;
temp_r31 = fn_800740C4(0, var); temp_r31 = BoardSpaceGet(0, var);
for (j = 0; j < temp_r31->num_links; j++) { for (j = 0; j < temp_r31->link_cnt; j++) {
if (fn_80074138(0, temp_r31->links[j]) & 0xC00) { if (BoardSpaceFlagGet(0, temp_r31->link[j]) & 0xC00) {
temp_r28 = fn_800740C4(0, temp_r31->links[j]); temp_r28 = BoardSpaceGet(0, temp_r31->link[j]);
if (lbl_1_bss_0->unk0 != 0) { if (lbl_1_bss_0->unk0 != 0) {
temp_r28->flag |= 0x04000000; temp_r28->flag |= 0x04000000;
fn_80064D84(0xC00); BoardJunctionMaskSet(0xC00);
} else { } else {
temp_r28->flag &= ~0x04000000; temp_r28->flag &= ~0x04000000;
fn_80064D94(0xC00); BoardJunctionMaskReset(0xC00);
} }
} }
} }
@ -370,14 +364,14 @@ void fn_1_DEC(void) {
w03UnkStruct2* temp_r29; w03UnkStruct2* temp_r29;
s32 i; s32 i;
temp_r3 = omAddObjEx(lbl_801D3ED4, 0x101, 0, 0, -1, &fn_1_10E4); temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, &fn_1_10E4);
lbl_1_bss_4 = temp_r3; lbl_1_bss_4 = temp_r3;
temp_r29 = (w03UnkStruct2*)&temp_r3->work[0]; temp_r29 = OM_GET_WORK_PTR(temp_r3, w03UnkStruct2);
temp_r29->unk0 = 0; temp_r29->unk0 = 0;
lbl_1_bss_8 = 0; lbl_1_bss_8 = 0;
fn_8005D530(&sp20); BoardCameraPosGet(&sp20);
fn_8005D628(&sp14); BoardCameraDirGet(&sp14);
HuAudFXListnerSetEX(&sp20, &sp14, 1200.0f, 4800.0f, 36000.0f, 0.0f, 1200.0f); HuAudFXListnerSetEX(&sp20, &sp14, 4800.0f, 36000.0f, 0.0f, 1200.0f, 1200.0f);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
sp8.x = lbl_1_data_22C[i].x - 3600.0f; sp8.x = lbl_1_data_22C[i].x - 3600.0f;
sp8.y = lbl_1_data_22C[i].y; sp8.y = lbl_1_data_22C[i].y;
@ -410,7 +404,7 @@ void fn_1_DEC(void) {
void fn_1_10B0(void) { void fn_1_10B0(void) {
if (lbl_1_bss_4) { if (lbl_1_bss_4) {
((w03UnkStruct2*)&lbl_1_bss_4->work[0])->unk0 = 1; OM_GET_WORK_PTR(lbl_1_bss_4, w03UnkStruct2)->unk0 = 1;
} }
} }
@ -420,9 +414,9 @@ void fn_1_10E4(omObjData* arg0) {
s32 i; s32 i;
w03UnkStruct2* temp_r29; w03UnkStruct2* temp_r29;
temp_r29 = (w03UnkStruct2*)&arg0->work[0]; temp_r29 = OM_GET_WORK_PTR(arg0, w03UnkStruct2);
if (temp_r29->unk0 != 0 || (fn_8005B6A8() != 0)) { if (temp_r29->unk0 != 0 || (BoardIsKill() != 0)) {
for (i = 0; i < 4; i++) { for (i = 0; i < ARRAY_COUNT(lbl_1_data_21C); i++) {
if (lbl_1_data_21C[i] != -1) { if (lbl_1_data_21C[i] != -1) {
HuAudFXFadeOut(lbl_1_data_21C[i], 100); HuAudFXFadeOut(lbl_1_data_21C[i], 100);
} }
@ -432,8 +426,8 @@ void fn_1_10E4(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0); omDelObjEx(HuPrcCurrentGet(), arg0);
return; return;
} }
fn_8005D628(&sp8); BoardCameraDirGet(&sp8);
fn_8005D578(&sp14); BoardCameraTargetGet(&sp14);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if ((WipeStatGet() != 0) || (_CheckFlag(0x1001C) != 0)) { if ((WipeStatGet() != 0) || (_CheckFlag(0x1001C) != 0)) {
@ -454,4 +448,6 @@ void fn_1_10E4(omObjData* arg0) {
lbl_1_bss_8 = 0; lbl_1_bss_8 = 0;
} }
HuAudFXListnerUpdate(&sp14, &sp8); HuAudFXListnerUpdate(&sp14, &sp8);
} }
f32 const padMain = 0.0f;

956
src/REL/w03Dll/mg_item.c Normal file
View file

@ -0,0 +1,956 @@
#include "dolphin.h"
#include "REL/executor.h"
#include "game/process.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "REL/w03Dll.h"
#include "game/board/space.h"
#include "game/object.h"
#include "game/board/player.h"
// #include "math.h"
#include "board_unsplit.h"
#include "game/hsfman.h"
#include "dolphin/os/OSFastCast.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
typedef struct someBits {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
u8 unk00_bit1 : 3;
u8 unk00_bit4 : 2;
u8 unk00_bit6 : 1;
u8 unk00_bit7 : 1;
};
u8 unk1;
u8 unk2;
u8 unk3;
s16 unk4;
s16 unk_06[3];
} someBits;
typedef struct someBits2 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
u8 unk00_bit1 : 3;
u8 unk00_bit4 : 2;
u8 unk00_bit6 : 1;
u8 unk00_bit7 : 1;
};
s8 unk1;
s8 unk2;
u8 unk3[3];
s16 unk_06[3];
} someBits2;
typedef struct w03UnkMG {
/* 0x00 */ char unk_00[0x10];
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s16 unk_14;
/* 0x16 */ s16 unk_16;
} w03UnkMG;
//external symbols
extern Process *boardMainProc;
extern s16 lbl_1_bss_C[14];
extern Process *boardObjMan;
extern u16 HuPadBtnDown[4];
//function signatures
s32 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
void BoardCameraQuakeSet(s32 duration, float strength);
s16 MGSeqCreate(s32, ...);
u8 MGSeqGetStat(s16);
void omVibrate(s16, s16, s16, s16);
void BoardPlayerMotBlendSet(s32, s32, s32);
f32 BoardPlayerRotYGet(s32);
f32 BoardModelMotionTimeGet(s16);
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
s32 BoardModelScaleGet(s16 model, Vec *dst);
s32 BoardModelMotionTimeSet(s16 model, float time);
s32 BoardDAngleCalcRange(float *value, float min, float range);
u32 BoardRandMod(u32 value);
void BoardModelMotionStartEndSet(s16, s32, s32);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
s32 BoardModelPosGet(s16 model, Vec *dst);
s16 Hu3DMotionShiftIDGet(s16 arg0);
f32 BoardPlayerMotionTimeGet(s32);
s32 frand(void);
void fn_1_BE30(s32 arg0, ParticleData* arg1);
void fn_1_BDAC(void);
void fn_1_BC7C(s16 arg0);
void fn_1_BBF8(void);
s32 fn_1_BBC4(void);
void fn_1_BB74(s8* arg0);
s32 fn_1_BB48(void);
void fn_1_B8E8(s32 arg0);
void fn_1_B748(omObjData* arg0, someBits2* arg1);
void fn_1_B688(omObjData* arg0, someBits2* arg1);
void fn_1_B4AC(omObjData* arg0, someBits2* arg1);
void fn_1_B350(omObjData* arg0);
void fn_1_B0A4(s32 arg0);
u32 fn_1_AF24(s32 arg0);
s32 fn_1_AE4C(s32 arg0, s8* arg1);
s32 fn_1_AE20(void);
void fn_1_ACD8(s32 arg0);
void fn_1_ABD0(omObjData* arg0, someBits* arg1);
void fn_1_AB18(omObjData* arg0, someBits* arg1);
void fn_1_A8AC(s32 arg0);
void fn_1_A7A0(s32 arg0);
void fn_1_A994(omObjData* arg0);
void fn_1_A5E0(s32 arg0);
void fn_1_A6B0(void);
void fn_1_A44C(s32 arg0);
void fn_1_9C8C(void);
void fn_1_9B30(void);
s32 fn_1_9CF4(s32 arg0);
void fn_1_9F78(void);
void fn_1_9FE4(void);
//DATA
s16 lbl_1_data_4D8 = -1;
s16 lbl_1_data_4DA = -1;
s16 lbl_1_data_4DC = -1;
s32 lbl_1_data_4E0 = -1;
s16 lbl_1_data_4E4 = -1;
s8 lbl_1_data_4E6[] = {1, 1, 3, 3, 2, 2, 2, 1, 2, 3, 0, 4, 5, 0};
char itemString[] = "item";
char item1String[] = "item1";
char item2String[] = "item2";
char* lbl_1_data_508[] = {
itemString, item1String, item2String
};
s32 lbl_1_data_514[] = {
MAKE_DATA_NUM(7, 0x6D),
MAKE_DATA_NUM(7, 0x6E),
MAKE_DATA_NUM(7, 0x6F),
MAKE_DATA_NUM(7, 0x70),
MAKE_DATA_NUM(7, 0x71),
MAKE_DATA_NUM(7, 0x72),
MAKE_DATA_NUM(7, 0x73),
MAKE_DATA_NUM(7, 0x74),
MAKE_DATA_NUM(7, 0x76),
MAKE_DATA_NUM(7, 0x77),
MAKE_DATA_NUM(7, 0x78),
MAKE_DATA_NUM(7, 0x79),
MAKE_DATA_NUM(7, 0x7A),
MAKE_DATA_NUM(7, 0x7B),
};
//BSS
s8 lbl_1_bss_194[3];
AnimData* lbl_1_bss_190;
s8 lbl_1_bss_18C;
omObjData* lbl_1_bss_188;
omObjData* lbl_1_bss_184;
Process* lbl_1_bss_180;
void fn_1_9A7C(void) {
fn_1_BBF8();
}
void fn_1_9A9C(void) {
}
void fn_1_9AA0(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
while (lbl_1_bss_180 != 0) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
void fn_1_9B30(void) {
fn_1_BDAC();
if (lbl_1_bss_188) {
lbl_1_bss_188;
}
if (lbl_1_bss_184) {
OM_GET_WORK_PTR(lbl_1_bss_184, someBits2)->unk00_bit0 = 1;
}
if (lbl_1_data_4E0 != -1) {
HuAudFXStop(lbl_1_data_4E0);
lbl_1_data_4E0 = -1;
}
if (lbl_1_data_4DC != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC);
lbl_1_data_4DC = -1;
}
if (lbl_1_data_4DA != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA);
lbl_1_data_4DA = -1;
}
if (lbl_1_data_4D8 != -1) {
HuWinKill(lbl_1_data_4D8);
lbl_1_data_4D8 = -1;
}
lbl_1_bss_180 = 0U;
}
void fn_1_9C8C(void) {
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
lbl_1_data_4E0 = -1;
if (fn_1_9CF4(temp_r31) != 0) {
fn_1_A44C(temp_r31);
fn_1_A5E0(temp_r31);
}
HuPrcEnd();
}
s32 fn_1_9CF4(s32 arg0) {
Vec sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
s16 spaceCur;
s16 temp_r29;
if (BoardPlayerItemCount(arg0) == 3) {
BoardWinCreate(2, 0x16001E, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardWinCreateChoice(2, 0x16001A, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x16001B, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardWinKill();
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
spaceCur = GWPlayer[arg0].space_curr;
temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000);
BoardPlayerPosGet(arg0, &sp2C);
BoardSpacePosGet(0, temp_r29, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
PSVECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793)));
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardRotateDiceNumbers(arg0);
HuPrcSleep(0x3C);
fn_1_B0A4(arg0);
fn_1_9F78();
fn_1_9FE4();
fn_1_A8AC(arg0);
return 1;
}
void fn_1_9F78(void) {
lbl_1_data_4DA = BoardModelMotionCreate(lbl_1_bss_C[11], 0x770023);
lbl_1_data_4DC = BoardModelMotionCreate(lbl_1_bss_C[11], 0x770024);
}
void fn_1_9FE4(void) {
Vec sp30;
Vec sp24;
Vec sp18;
Vec spC;
f32 sp8;
f32 temp_f30;
f32 var_f31;
BoardModelPosGet(lbl_1_bss_C[11], &sp24);
sp18.x = (-3179.800048828125 + (200.0 * sin(0.0)));
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
temp_f30 = (atan2(spC.z, spC.x) / 3.141592653589793 * 180.0);
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[11], temp_f30);
BoardModelMotionSpeedSet(lbl_1_bss_C[11], 2.0f);
spC.x /= 20.0f;
spC.z /= 20.0f;
spC.y = 0.0f;
sp30 = sp24;
var_f31 = 0.0f;
while (var_f31 < 20.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
BoardAudSeqPause(0, 1, 0x3E8);
HuAudFXPlay(0x450);
HuAudFXPlay(0x362);
BoardCameraQuakeSet(3, 100.0f);
fn_1_B8E8(1);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005);
PSVECSubtract(&sp24, &sp30, &spC);
spC.x /= 60.0f;
spC.z /= 60.0f;
spC.y = 0.0f;
var_f31 = 0.0f;
while (var_f31 < 60.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
temp_f30 = 0.0f;
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001);
}
void fn_1_A44C(s32 arg0) {
s16 temp_r30;
s32 temp_r29;
s32 temp_r28;
BoardMusStart(1, 0x17, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0U);
while (MGSeqGetStat(temp_r30) != 0) {
HuPrcVSleep();
}
fn_1_A7A0(arg0);
fn_1_A6B0();
fn_1_ACD8(1);
while (fn_1_AE20() != 0) {
HuPrcVSleep();
}
temp_r29 = fn_1_BBC4() + 0x80000;
BoardWinCreate(2, 0x16001C, 2);
BoardWinInsertMesSet(temp_r29, 0);
BoardWinWait();
fn_1_B8E8(4);
while (fn_1_BB48() != 0) {
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 6, 6);
BoardPlayerItemAdd(arg0, fn_1_BBC4());
fn_1_ACD8(3);
temp_r28 = HuAudSStreamPlay(2);
while (HuAudSStreamStatGet(temp_r28) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 0x3E8);
while (lbl_1_bss_188) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
BoardWinCreate(2, 0x16001D, 2);
BoardWinWait();
BoardWinKill();
}
void fn_1_A5E0(s32 arg0) {
Vec sp14;
Vec sp8;
s16 spaceCur;
spaceCur = GWPlayer[arg0].space_curr;
BoardPlayerPosGet(arg0, &sp14);
BoardSpacePosGet(0, spaceCur, &sp8);
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[11], 0.0f);
BoardCameraMotionWait();
}
void fn_1_A6B0(void) {
f32 sp8[2];
f32 val1, val2;
HuWinMesMaxSizeGet(1, sp8, 0x16001F);
val1 = -10000.0f;
val2 = 392.0f;
lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f);
HuWinMesSpeedSet(lbl_1_data_4D8, 0);
HuWinMesSet(lbl_1_data_4D8, 0x16001FU);
}
void fn_1_A7A0(s32 arg0) {
someBits* temp_r31;
omObjData* temp_r3;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_A994);
lbl_1_bss_188 = temp_r3;
temp_r31 = (someBits*)&temp_r3->work[0];
temp_r31->unk00_bit0 = 0;
temp_r31->unk00_bit6 = 0;
temp_r31->unk00_bit4 = arg0;
temp_r31->unk00_bit1 = 0;
temp_r31->unk1 = 5U;
temp_r31->unk2 = 0x3C;
temp_r31->unk4 = MGSeqCreate(1, temp_r31->unk1, 0x120, 0x40);
fn_1_BB74(lbl_1_bss_194);
lbl_1_bss_18C = fn_1_AE4C(arg0, lbl_1_bss_194);
}
void fn_1_A8AC(s32 arg0) {
Vec sp14;
Vec sp8;
f32 playerYRot;
BoardModelPosGet(lbl_1_bss_C[9], &sp8);
BoardPlayerPosGet(arg0, &sp14);
sp8.y = sp14.y;
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
playerYRot = BoardPlayerRotYGet(arg0) + 180.0f;
BoardPlayerMotBlendSet(arg0, playerYRot, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
}
void fn_1_A994(omObjData* arg0) {
s32 temp_r0;
someBits* temp_r31;
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
if ((temp_r31->unk00_bit0 != 0)|| (BoardIsKill() != 0)) {
if (temp_r31->unk4 != -1) {
MGSeqSetParam(temp_r31->unk4, 2, -1U);
temp_r31->unk4 = -1;
}
lbl_1_bss_188 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk00_bit6 == 0) {
if (temp_r31->unk2 != 0) {
temp_r31->unk2--;
} else {
if (temp_r31->unk1 != 0) {
temp_r31->unk1--;
} else {
fn_1_ACD8(2);
}
MGSeqSetParam(temp_r31->unk4, 1, temp_r31->unk1);
temp_r31->unk2 = 0x3CU;
}
}
switch (temp_r31->unk00_bit1) {
case 1:
fn_1_AB18(arg0, temp_r31);
return;
case 2:
fn_1_ABD0(arg0, temp_r31);
return;
case 3:
if (BoardPlayerMotionEndCheck(temp_r31->unk00_bit4) != 0) {
temp_r31->unk00_bit0 = 1;
}
case 0:
break;
}
}
void fn_1_AB18(omObjData* arg0, someBits* arg1) {
u32 var_r31 = 0;
if (GWPlayer[arg1->unk00_bit4].com != 0) {
var_r31 = fn_1_AF24(arg1->unk00_bit4);
} else {
var_r31 = HuPadBtnDown[GWPlayer[arg1->unk00_bit4].port];
}
if (var_r31 == 0x100) {
fn_1_ACD8(2);
}
}
//TODO properly use inlines
void fn_1_ABD0(omObjData* arg0, someBits* arg1) {
s16 boardModelID;
PlayerState* playerStateCopy;
s32 bit;
PlayerState* playerState;
s16 temp, temp2;
bit = arg1->unk00_bit4;
playerState = &GWPlayer[bit];
playerStateCopy = playerState;
temp = boardPlayerMdl[playerStateCopy->player_idx];
temp2 = temp;
boardModelID = BoardModelIDGet(temp2);
if (Hu3DMotionShiftIDGet(boardModelID) == -1) {
if (!(arg1->unk00_bit7)) {
if (BoardPlayerMotionTimeGet(arg1->unk00_bit4) >= 27.0f) {
arg1->unk00_bit7 = 1;
BoardAudSeqFadeOut(1, 0x64);
fn_1_B8E8(2);
return;
}
}
if (BoardPlayerMotionEndCheck(arg1->unk00_bit4)) {
fn_1_ACD8(0);
}
}
}
void fn_1_ACD8(s32 arg0) {
someBits* temp_r31;
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 0:
BoardRotateDiceNumbers(temp_r31->unk00_bit4);
return;
case 2:
temp_r31->unk00_bit6 = 1;
if (lbl_1_data_4D8 != -1) {
HuWinKill(lbl_1_data_4D8);
lbl_1_data_4D8 = -1;
}
if (temp_r31->unk4 != -1) {
MGSeqSetParam(temp_r31->unk4, 2, -1U);
temp_r31->unk4 = -1;
}
BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 0xB, 0.0f, 10.0f, 0);
return;
case 3:
BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 7, 0.0f, 10.0f, 0);
break;
}
}
s32 fn_1_AE20(void) {
someBits* temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
return temp_r31->unk00_bit1;
}
s32 fn_1_AE4C(s32 arg0, s8* arg1) {
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 var_r31;
temp_r29 = lbl_1_data_4E6[arg1[0]];
temp_r28 = lbl_1_data_4E6[arg1[1]];
temp_r30 = lbl_1_data_4E6[arg1[2]];
if (temp_r29 > temp_r28) {
if (temp_r29 > temp_r30) {
var_r31 = 0;
} else if (temp_r30 > temp_r28) {
var_r31 = 2;
} else {
var_r31 = 1;
}
} else if (temp_r28 > temp_r30) {
var_r31 = 1;
} else if (temp_r30 > temp_r29) {
var_r31 = 2;
} else {
var_r31 = 0;
}
return var_r31;
}
u32 fn_1_AF24(s32 arg0) {
s32 spC;
s32 sp8;
s16 temp_r31;
s16 var_r30;
s8 temp_r0_2;
spC = 0;
switch (GWPlayer[arg0].diff) {
case 3:
var_r30 = 0;
break;
case 2:
var_r30 = 5;
break;
case 1:
var_r30 = 15;
break;
case 0:
var_r30 = 40;
break;
}
if ((var_r30 != 0) && (BoardRandMod(100) < var_r30)) {
return 0x100U;
}
temp_r31 = BoardModelMotionTimeGet(lbl_1_bss_C[9]);
switch (lbl_1_bss_18C) {
case 0:
if ((temp_r31 < 33) || (temp_r31 > 35)) {
break;
}
return 0x100U;
case 1:
if (((temp_r31 >= 40) && (temp_r31 <= 42)) || ((temp_r31 >= 20) && (temp_r31 <= 22))) {
return 0x100U;
}
break;
case 2:
if (temp_r31 >= 50) {
return 0x100U;
}
break;
}
return 0;
}
void fn_1_B0A4(s32 arg0) {
Mtx sp18;
s32 spC[3];
s32 j;
s32 i;
s32 var_r31_2;
s32 temp_r29;
someBits2* temp_r30;
omObjData* temp_r3;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, (void*)fn_1_B350);
lbl_1_bss_184 = (void*)temp_r3;
temp_r30 = (someBits2*)&temp_r3->work[0];
temp_r30->unk00_bit0 = 0;
temp_r30->unk00_bit1 = 0;
temp_r30->unk00_bit4 = arg0;
for (i = 0; i < 3;) {
spC[i] = BoardRandMod(14);
if ((spC[i] != 10) && (spC[i] != 13)) {
for (j = 0; j < i; j++) {
if (spC[i] == spC[j]) {
spC[i] = -1;
}
}
if (spC[i] == -1) {
continue;
}
} else {
continue;
}
i++;
}
fn_1_BBF8();
for (i = 0; i < 3; i++) {
temp_r29 = spC[i];
temp_r30->unk3[i] = temp_r29;
temp_r30->unk_06[i] = BoardModelCreate(lbl_1_data_514[temp_r29], NULL, 0);
BoardModelHookSet(lbl_1_bss_C[9], lbl_1_data_508[i], temp_r30->unk_06[i]);
BoardModelMotionSpeedSet(temp_r30->unk_06[i], 0.0f);
if (temp_r29 == 0xB) {
BoardModelMotionStart(temp_r30->unk_06[i], 0, 0x40000001);
}
if (temp_r29 == 5) {
PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
}
if ((temp_r29 == 6) || (temp_r29 == 7)) {
PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
}
}
}
void fn_1_B350(omObjData* arg0) {
s32 i;
someBits2* temp_r31;
temp_r31 = (someBits2*)&arg0->work[0];
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
BoardModelHookReset(lbl_1_bss_C[9]);
for (i = 0; i < 3; i++) {
BoardModelKill(temp_r31->unk_06[i]);
}
fn_1_BBF8();
omDelObjEx(HuPrcCurrentGet(), arg0);
lbl_1_bss_184 = NULL;
return;
}
switch (temp_r31->unk00_bit1) {
case 1:
if (!(BoardModelMotionTimeGet(lbl_1_bss_C[9]) < 20.0f)) {
BoardModelMotionStartEndSet(lbl_1_bss_C[9], 0x14, 0x3A);
fn_1_B8E8(0);
return;
}
case 0:
break;
case 2:
fn_1_B4AC(arg0, temp_r31);
return;
case 3:
fn_1_B688(arg0, temp_r31);
return;
case 4:
fn_1_B748(arg0, temp_r31);
break;
}
}
void fn_1_B4AC(omObjData* arg0, someBits2* arg1) {
Point3d sp20;
Point3d sp14;
Point3d sp8;
f32 temp_f31;
s8 temp_r0;
s32 i;
arg1->unk2 = -1;
for (i = 0; i < 3; i++) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[9]), lbl_1_data_508[i], &sp20);
BoardPlayerPosGet(arg1->unk00_bit4, &sp14);
sp14.y += 66.0f;
if (BoardVecMinDistCheck(&sp20, &sp14, 100.0f) != 0) {
sp8 = sp20;
arg1->unk2 = i;
break;
}
}
HuAudFXPlay(0x30C);
BoardModelHookObjReset(lbl_1_bss_C[9], lbl_1_data_508[arg1->unk2]);
temp_f31 = BoardModelMotionTimeGet(lbl_1_bss_C[9]);
BoardModelMotionShiftSet(lbl_1_bss_C[9], 0, 15.0f, 10.0f, 0x40000004U);
BoardModelMotionSpeedSet(lbl_1_bss_C[9], 0.5f);
BoardModelMotionTimeSet(lbl_1_bss_C[9], temp_f31);
BoardModelPosSetV(arg1->unk_06[arg1->unk2], &sp8);
fn_1_B8E8(3);
fn_1_BC7C(arg1->unk_06[arg1->unk2]);
}
void fn_1_B688(omObjData* arg0, someBits2* arg1) {
Point3d sp8;
if (arg1->unk1-- != 0) {
BoardModelPosGet(arg1->unk_06[arg1->unk2], &sp8);
sp8.x = sp8.x + arg0->trans.x;
sp8.y += arg0->trans.y;
sp8.z = sp8.z + arg0->trans.z;
BoardModelPosSetV(arg1->unk_06[arg1->unk2], &sp8);
return;
}
fn_1_B8E8(0);
}
void fn_1_B748(omObjData* arg0, someBits2* arg1) {
Vec sp14;
Point3d sp8;
f32 temp_f0;
s16 temp_r29;
temp_r29 = arg1->unk_06[arg1->unk2];
if (arg1->unk1 == 0) {
HuAudFXPlay(781);
}
if (arg1->unk1 < 90) {
f32 temp;
temp_f0 = __OSu8tof32((u8*)&arg1->unk1);
BoardModelPosGet(temp_r29, &sp8);
sp8.y += arg0->trans.y;
BoardModelPosSetV(temp_r29, &sp8);
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
BoardModelScaleGet(temp_r29, &sp14);
sp14.x = sp14.y = sp14.z = cos(3.141592653589793 * temp_f0 / 180.0);
BoardModelScaleSetV(temp_r29, &sp14);
arg1->unk1 += 4;
return;
}
if (lbl_1_data_4E0 != -1) {
HuAudFXStop(lbl_1_data_4E0);
lbl_1_data_4E0 = -1;
}
fn_1_B8E8(0);
}
void fn_1_B8E8(s32 arg0) {
Point3d sp14;
Point3d sp8;
f32 temp_f31;
someBits2* temp_r31;
f32 temp;
temp_r31 = (someBits2*)&lbl_1_bss_184->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 1:
temp_f31 = 0.31666666f;
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_bss_C[9], temp_f31);
BoardModelMotionTimeSet(lbl_1_bss_C[9], 8.0f);
return;
case 2:
temp_r31->unk00_bit6 = 1;
return;
case 3:
lbl_1_data_4E0 = HuAudFXPlay(0x35F);
BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8);
BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14);
temp = 50.0f + sp8.y;
lbl_1_bss_184->trans.x = (sp14.x - sp8.x) / 10.0f;
lbl_1_bss_184->trans.z = (sp14.z - sp8.z) / 10.0f;
lbl_1_bss_184->trans.y = (temp - sp8.y) / 10.0f;
temp_r31->unk1 = 10;
return;
case 4:
BoardPlayerPosGet(temp_r31->unk00_bit4, &sp14);
sp14.y += 30.000002f;
BoardModelPosGet(temp_r31->unk_06[temp_r31->unk2], &sp8);
lbl_1_bss_184->trans.y = (sp14.y - sp8.y) / 22.0f;
temp_r31->unk1 = 0;
}
}
s32 fn_1_BB48(void) {
someBits2* temp = (someBits2*)&lbl_1_bss_184->work[0];
return temp->unk00_bit1;
}
void fn_1_BB74(s8* arg0) {
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
s32 i;
for (i = 0; i < 3; i++) {
arg0[i] = bits->unk3[i];
}
}
s32 fn_1_BBC4(void) {
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
return bits->unk3[bits->unk2];
}
void fn_1_BBF8(void) {
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0);
BoardModelMotionSpeedSet(lbl_1_bss_C[9], 0.0f);
BoardModelMotionTimeSet(lbl_1_bss_C[9], 0.0f);
BoardModelAttrReset(lbl_1_bss_C[9], 0x40000004);
}
void fn_1_BC7C(s16 arg0) {
ParticleData* particle;
lbl_1_bss_190 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, 2));
HuSprAnimLock(lbl_1_bss_190);
lbl_1_data_4E4 = Hu3DParticleCreate(lbl_1_bss_190, 100);
Hu3DParticleHookSet(lbl_1_data_4E4, fn_1_BE30);
Hu3DParticleColSet(lbl_1_data_4E4, 0xFF, 0xFF, 0);
Hu3DModelPosSet(lbl_1_data_4E4, 0.0f, 0.0f, 0.0f);
Hu3DParticleBlendModeSet(lbl_1_data_4E4, 1);
Hu3DModelLayerSet(lbl_1_data_4E4, 2);
particle = Hu3DData[lbl_1_data_4E4].unk_120;
particle->unk_02 = arg0;
}
void fn_1_BDAC(void) {
if (lbl_1_data_4E4 != -1) {
Hu3DModelKill(lbl_1_data_4E4);
lbl_1_data_4E4 = -1;
}
if (lbl_1_bss_190) {
HuSprAnimKill(lbl_1_bss_190);
lbl_1_bss_190 = NULL;
}
}
void fn_1_BE30(s32 arg0, ParticleData* arg1) {
Point3d sp8;
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
HsfanimStruct01* var_r31;
s32 i, j;
if (arg1->unk_34 == 0U) {
var_r31 = arg1->unk_48;
for (i = 0; i < arg1->unk_30; i++, var_r31++) {
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
arg1->unk_00 = 0;
}
BoardModelScaleGet(arg1->unk_02, &sp8);
temp_f31 = sp8.x;
BoardModelPosGet(arg1->unk_02, &sp8);
for (i = 0; i < 0x16; i++) {
var_r31 = arg1->unk_48;
for (j = 0; j < arg1->unk_30; j++, var_r31++) {
if (0.0f == var_r31->unk2C) {
break;
}
}
if (j != arg1->unk_30) {
temp_f30 = 360.0f * (0.003921569f * (frand() & 0xFF));
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (frand() & 0xFF))))));
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk40.a = 180;
var_r31->unk2C = (15.0f * temp_f31);
}
}
var_r31 = arg1->unk_48;
for (i = 0; i < arg1->unk_30; i++, var_r31++) {
if (0.0f != var_r31->unk2C) {
var_r31->unk34.y = (var_r31->unk34.y - var_r31->unk08.x);
var_r31->unk2C = (var_r31->unk2C - var_r31->unk08.y);
if (var_r31->unk2C <= 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}

477
src/REL/w03Dll/river.c Normal file
View file

@ -0,0 +1,477 @@
#include "dolphin.h"
#include "game/object.h"
#include "REL/w03Dll.h"
#include "board_unsplit.h"
#include "game/board/main.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
s16 BoardModelIDGet(s16 model);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
void BoardPlayerMotBlendSet(s32, s32, s32);
float BoardModelMotionTimeGet(s16 model);
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
void BoardPlayerPosSet(s32, f32, f32, f32);
s32 BoardModelHookSet(s16 model, char *name, s16 hook);
void BoardPlayerMotionShiftSet(s32, s32, f32, f32, s32);
#define OM_GET_WORK_PTR(object, type) ((type *)(&((object)->work[0])))
extern s16 lbl_1_bss_C[14];
extern s16 boardPlayerMdl[4];
char lbl_1_bss_130[8];
omObjData* lbl_1_bss_12C;
s16 lbl_1_bss_128;
s32 lbl_1_bss_124;
Process* lbl_1_bss_120;
//function signatures
void fn_1_67F8(void);
void fn_1_6884(void);
void fn_1_767C(omObjData* arg0);
s32 fn_1_6898(s32 arg0);
void fn_1_6B98(s32 arg0);
void fn_1_6F9C(s32 arg0);
void fn_1_767C(omObjData* arg0);
void fn_1_735C(s32 arg0);
void fn_1_77E4(s32 arg0);
typedef struct unkWorkStruct {
struct {
u8 temp1 : 1;
};
s8 unk_01[3];
f32 unk_04;
} unkWorkStruct;
//DATA
s32 lbl_1_data_368[] = {
0x00000105, 0x00000145, 0x00000185,
0x000001C5, 0x00000205, 0x00000245,
0x00000285, 0x000002C5
};
s16 lbl_1_data_388 = -1;
s16 lbl_1_data_38A = -1;
s16 lbl_1_data_38C = -1;
s32 lbl_1_data_390[] = {
0x00770026,
0x00770027,
0x00770028,
-1
};
char itemhook_RString[] = "itemhook_R";
char hei01String[] = "hei01";
char ikadaString[] = "ikada";
typedef struct unkPos {
s32 x;
s32 y;
s32 z;
} unkPos;
unkPos lbl_1_data_3B8[6] = {
{5, 20, 5},
{21, 35, 7},
{31, 50, 10},
{51, 80, 15},
{81, 100, 17},
{101, 999, 20},
};
void fn_1_63F4(s32 arg0) {
Vec spC;
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
work->unk_04 = 0.0f;
BoardModelPosGet(lbl_1_data_388, &spC);
if (arg0 != 0) {
spC.y = -185.0f;
} else {
spC.y = 10.0f;
}
BoardModelPosSetV(lbl_1_data_388, &spC);
}
void fn_1_6494(void) {
Vec sp14;
Vec sp8;
unkWorkStruct* temp_r31;
lbl_1_data_388 = BoardModelCreate(0x77000E, NULL, 0);
lbl_1_data_38C = BoardModelCreate(0x77000F, NULL, 0);
lbl_1_data_38A = BoardModelCreate(0x2000D, &lbl_1_data_390[0], 0);
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
BoardModelHookSet(lbl_1_data_38A, itemhook_RString, lbl_1_data_38C);
BoardModelHookSet(lbl_1_data_388, hei01String, lbl_1_data_38A);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), ikadaString, &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
BoardModelPosSetV(lbl_1_data_388, &sp14);
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
temp_r31->temp1 = 0;
temp_r31->unk_04 = 0.0f;
lbl_1_bss_124 = 0;
}
s32 fn_1_6698(void) {
Vec sp14;
Vec sp8;
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), ikadaString, &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
return 1;
}
s16 fn_1_675C(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
while ((u32) lbl_1_bss_120 != 0U) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
return lbl_1_bss_128;
}
void fn_1_67F8(void) {
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
lbl_1_bss_128 = 0;
if (fn_1_6898(temp_r31) != 0) {
fn_1_6F9C(temp_r31);
fn_1_6B98(temp_r31);
fn_1_735C(temp_r31);
lbl_1_bss_128 = 1;
}
BoardCameraViewSet(1);
BoardCameraMotionWait();
HuPrcEnd();
}
void fn_1_6884(void) {
lbl_1_bss_120 = 0;
}
s32 fn_1_6898(s32 arg0) {
Vec sp20;
Vec sp14;
Vec sp8;
f32 temp_f31;
s32 var_r27;
s32 temp_r3;
s32 i, j;
s32 temp, temp2;
BoardRotateDiceNumbers(arg0);
BoardCameraViewSet(2);
BoardCameraMotionWait();
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), hei01String, &sp20);
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / 3.141592653589793);
BoardCameraTargetModelSet(lbl_1_data_388);
BoardPlayerMotBlendSet(arg0, temp_f31, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardCameraTargetModelSet(-1);
BoardWinCreate(2, 0x160009, 2);
BoardWinWait();
temp_r3 = BoardPlayerCoinsGet(arg0);
if (temp_r3 < 5) {
BoardWinCreate(2, 0x16000A, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
for (var_r27 = i = 0; i < 6; i++) {
temp = lbl_1_data_3B8[i].x;
temp2 = lbl_1_data_3B8[i].y;
if (temp_r3 >= temp) {
if (temp_r3 <= temp2) {
var_r27 = lbl_1_data_3B8[i].z;
break;
}
}
}
sprintf(lbl_1_bss_130, "%d", var_r27);
j = 0;
while (j == 0) {
BoardWinCreateChoice(2, 0x16000B, 2, 0);
BoardWinInsertMesSet(lbl_1_bss_130, 2);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com != 0) {
fn_1_77E4(arg0);
}
BoardWinWait();
BoardWinKill();
switch (BoardWinChoiceGet()) {
case 0:
j = 1;
break;
case 1:
case -1:
BoardWinCreate(2, 0x16000E, 2);
BoardWinWait();
BoardWinKill();
return 0;
default:
BoardViewMapExec(arg0);
}
}
for (i = 0; i < var_r27; i++) {
BoardPlayerCoinsAdd(arg0, -1);
HuAudFXPlay(0xE);
HuPrcSleep(6);
}
HuAudFXPlay(0xF);
BoardWinCreate(2, 0x0016000C, 2);
BoardWinWait();
BoardWinKill();
return 1;
}
float BoardModelRotYGet(s16 model);
s32 BoardDAngleCalcRange(float *value, float min, float range);
float BoardModelRotYGet(s16 model);
void fn_1_6B98(s32 arg0) {
Vec sp30;
Point3d sp24;
Vec sp18;
Point3d spC;
f32 sp8;
f32 temp_f1;
f32 temp_f31;
s16 var_r31;
s16 i;
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = sp8 + 180.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_data_388, &sp24);
BoardSpaceFlagPosGet(0, 0x100, &sp30);
sp18.x = sp30.x + (400.0 * sin(1.5707963267948966));
sp18.z = sp30.z + (400.0 * cos(1.5707963267948966));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
spC.x = spC.x / 120.0f;
spC.y /= 120.0f;
spC.z = spC.z / 120.0f;
BoardCameraTargetModelSet(lbl_1_data_388);
BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U);
HuPrcSleep(4);
var_r31 = 0;
for (i = 0; i < 0x78U; i++) {
PSVECAdd(&spC, &sp24, &sp24);
temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A);
if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) {
HuAudFXPlay(0x451);
var_r31 = 1;
}
if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) {
var_r31 = 0;
}
BoardModelPosSetV(lbl_1_data_388, &sp24);
HuPrcVSleep();
}
BoardModelPosSetV(lbl_1_data_388, &sp18);
BoardCameraTargetModelSet(-1);
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = 0.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U);
}
extern s32 lbl_1_data_368[];
extern w03State* lbl_1_bss_0;
static inline PlayerState *BoardPlayerGet(s32 player) {
return &GWPlayer[player];
}
static inline s16 BoardPlayerModelGet(s32 player) {
PlayerState *player_ptr = BoardPlayerGet(player);
return boardPlayerMdl[player_ptr->player_idx];
}
void fn_1_6F9C(s32 arg0) {
Vec sp20;
Vec sp14;
Vec sp8;
f32 var_f30;
f32 var_f29;
f32 var_f31;
s32 temp_r4;
s32 var_r30;
s16 model;
BoardPlayerPosGet(arg0, &sp14);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20);
PSVECSubtract(&sp20, &sp14, &sp8);
sp8.x /= 60.0f;
sp8.z /= 60.0f;
sp8.y = 0.0f;
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 10.0f;
var_f29 = 0.21f;
sp14.y += sp20.y;
} else {
var_f30 = 0.0f;
var_f29 = 0.15f;
}
lbl_1_bss_124 = 1;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
PSVECAdd(&sp14, &sp8, &sp14);
sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31));
if (sp14.y <= sp20.y) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
var_r30 = 1;
}
}
BoardPlayerPosSetV(arg0, &sp14);
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
HuPrcSleep(10);
BoardRotateDiceNumbers(arg0);
if (GWPlayer[arg0].bowser_suit != 0) {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
} else {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
}
BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f);
lbl_1_bss_124 = 0;
}
void fn_1_735C(s32 arg0) {
Vec sp20;
Vec sp14;
Point3d sp8;
f32 temp_f1;
f32 var_f30;
f32 var_f31;
s32 temp_r29;
s32 temp_r4;
s32 var_r30;
temp_r29 = BoardSpaceFlagPosGet(0, 0x100, &sp20);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp14);
BoardPlayerPosSetV(arg0, &sp14);
BoardModelHookObjReset(lbl_1_data_388, "chara01");
PSVECSubtract(&sp20, &sp14, &sp8);
sp8.x = sp8.x / 60.0f;
sp8.z = sp8.z / 60.0f;
sp8.y = 0.0f;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 0.25f;
} else {
var_f30 = 0.2f;
}
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
PSVECAdd(&sp14, &sp8, &sp14);
sp14.y += 20.0f + (var_f30 * (-0.08166667f * var_f31 * var_f31));
if (sp14.y <= sp20.y && var_f31 > 48.0f) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
var_r30 = 1;
}
}
BoardPlayerPosSetV(arg0, &sp14);
HuPrcVSleep();
}
BoardPlayerPosSetV(arg0, &sp20);
HuPrcSleep(0xA);
BoardPlayerMotBlendSet(arg0, 0, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardRotateDiceNumbers(arg0);
GWPlayer[arg0].space_curr = temp_r29;
GWPlayer[arg0].space_prev = -1;
BoardPlayerPostTurnHookSet(arg0, fn_1_6698);
BoardWinCreate(2, 0x16000D, 2);
BoardWinWait();
BoardWinKill();
}
void fn_1_767C(omObjData* arg0) {
Point3d sp8;
s32 temp_r30;
unkWorkStruct* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct);
if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) {
lbl_1_bss_12C = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
temp_r31->unk_04 += 3.0f;
if (temp_r31->unk_04 >= 360.0f) {
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
}
BoardModelPosGet(lbl_1_data_388, &sp8);
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((3.141592653589793 * (f64) temp_r31->unk_04) / 180.0))));
BoardModelPosSetV(lbl_1_data_388, &sp8);
}
}
void fn_1_77E4(s32 arg0) {
s32 boardIndex;
s32 var_r30 = 0;
boardIndex = GWSystem.star_pos;
if ((boardIndex == 1) || (boardIndex == 2) || (boardIndex == 3) || (boardIndex == 4)) {
var_r30 = 1;
}
if (var_r30 != 0) {
BoardComKeySetLeft();
return;
}
BoardComKeySetRight();
}
char padRiver[] = "\0\0\0\0";

83
src/REL/w03Dll/smoke.c Normal file
View file

@ -0,0 +1,83 @@
#include "dolphin.h"
#include "game/object.h"
#include "REL/w03Dll.h"
#include "board_unsplit.h"
#include "game/board/main.h"
typedef struct w03UnkWorkStruct {
s16 unk_00[5];
char unk_0A[2];
f32 unk_0C;
} w03UnkWorkStruct;
extern w03State* lbl_1_bss_0;
omObjData* lbl_1_bss_138[2];
extern Process *boardObjMan;
extern s16 lbl_1_data_1E0;
void fn_1_79E0(omObjData* arg0);
f32 BoardModelMotionMaxTimeGet(s16);
char kemuri1[] = "kemuri1";
char kemuri2[] = "kemuri2";
char kemuri3[] = "kemuri3";
char kemuri4[] = "kemuri4";
char kemuri5[] = "kemuri5";
char* kemuri_strings[] = {
kemuri1, kemuri2, kemuri3,
kemuri4, kemuri5
};
void fn_1_785C(void) {
f32 var_f31;
s32 i;
w03UnkWorkStruct* temp_r31;
char* temp_r29;
lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0];
for (i = 0; i < 5; i++) {
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
temp_r29 = kemuri_strings[i];
if (0.0f == temp_r31->unk_0C) {
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
}
var_f31 = temp_r31->unk_0C * BoardRandFloat();
if (var_f31 < 1.0f) {
var_f31 = 1.0f;
}
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
BoardModelLayerSet(temp_r31->unk_00[i], 2);
BoardModelPassSet(temp_r31->unk_00[i], 0);
}
}
void fn_1_79E0(omObjData* arg0) {
s32 var_r29;
s32 i;
w03UnkWorkStruct* temp_r30;
temp_r30 = (w03UnkWorkStruct*)&arg0->work[0];
if (BoardIsKill() != 0) {
for (i = 0; i < 5; i++) {
BoardModelKill(temp_r30->unk_00[i]);
}
lbl_1_bss_138[0] = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (lbl_1_bss_0->unk3 != 0) {
var_r29 = 0;
} else {
var_r29 = 1;
}
for (i = 0; i < 5; i++) {
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
}
}
char pad[4] = "\0\0\0\0";

651
src/REL/w03Dll/statue.c Normal file
View file

@ -0,0 +1,651 @@
#include "dolphin.h"
#include "REL/executor.h"
#include "game/process.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "REL/w03Dll.h"
#include "game/audio.h"
#include "game/board/space.h"
#include "game/board/player.h"
#include "board_unsplit.h"
#include "game/hsfman.h"
#include "game/board/main.h"
void fn_1_1358(void);
void fn_1_152C(void);
s32 fn_1_15E8(void);
s32 fn_1_1650(s32 arg0);
void fn_1_19DC(s32 arg0, s32 arg1);
s32 fn_1_1D1C(void);
void fn_1_1ED4(s32 arg0);
void fn_1_20E0(s32 arg0);
void fn_1_26E0(s32 arg0);
void fn_1_2AC0(void);
void fn_1_2818(void);
void fn_1_2A40(void);
void fn_1_2B44(void);
s32 BoardDAngleCalcRange(f32*, f32, f32);
s32 BoardPlayerMotBlendCheck(s32);
void BoardPlayerMotBlendSet(s32, s32, s32);
f32 BoardPlayerRotYGet(s32);
void BoardConfettiCreate(Point3d*, s16, f32);
double atan2(double y, double x);
void omVibrate(s16, s16, s16, s16);
f32 BoardModelMotionTimeGet(s16);
//DATA
s16 lbl_1_data_280 = -1;
s16 lbl_1_data_282 = -1;
s16 lbl_1_data_284 = -1;
s16 lbl_1_data_286 = -1;
s32 lbl_1_data_288 = -1;
char lbl_1_data_28C[] = "%d";
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
MAKE_DATA_NUM(0x5F, 0x62),
MAKE_DATA_NUM(0x1A, 0x62),
MAKE_DATA_NUM(0x6D, 0x62),
MAKE_DATA_NUM(0x8A, 0x62),
MAKE_DATA_NUM(0x85, 0x62),
MAKE_DATA_NUM(0x11, 0x62),
MAKE_DATA_NUM(0x0D, 0x62),
MAKE_DATA_NUM(0x81, 0x62),
};
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
MAKE_DATA_NUM(0x5F, 0x33),
MAKE_DATA_NUM(0x1A, 0x33),
MAKE_DATA_NUM(0x6D, 0x33),
MAKE_DATA_NUM(0x8A, 0x33),
MAKE_DATA_NUM(0x85, 0x33),
MAKE_DATA_NUM(0x11, 0x33),
MAKE_DATA_NUM(0x0D, 0x33),
MAKE_DATA_NUM(0x81, 0x33),
};
s32 lbl_1_data_2D0[] = {
0x00000125, 0x00000165, 0x000001A5,
0x000001E5, 0x00000225, 0x00000265,
0x000002A5, 0x000002E5
};
s32 lbl_1_data_2F0[] = {
0x0000012E, 0x0000016E, 0x000001AE,
0x000001EE, 0x0000022E, 0x0000026E,
0x000002AE, 0x000002EE
};
//BSS Extern
extern w03State* lbl_1_bss_0;
extern Process *boardMainProc;
extern s16 lbl_1_bss_C[14];
//BSS
s8 lbl_1_bss_6F;
s8 lbl_1_bss_6E;
s16 lbl_1_bss_6C;
s16 lbl_1_bss_6A;
s16 lbl_1_bss_68;
GXTexObj lbl_1_bss_48;
char lbl_1_bss_44[4];
char lbl_1_bss_38[12];
void* lbl_1_bss_34;
f32 lbl_1_bss_30;
s8 lbl_1_bss_2C;
Process* lbl_1_bss_28;
s32 fn_1_12C8(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_28 = HuPrcChildCreate(&fn_1_1358, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_28, &fn_1_152C);
while (lbl_1_bss_28) {
HuPrcVSleep();
}
return BoardDiceDigit2DShowSet(1);
}
void fn_1_1358(void) {
s32 cur_player_index;
s32 unkC;
cur_player_index = GWSystem.player_curr;
unkC = GWPlayer[cur_player_index].space_curr;
lbl_1_bss_2C = 0;
if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) {
lbl_1_bss_6E = 0;
lbl_1_bss_6C = lbl_1_bss_C[3];
} else {
lbl_1_bss_6E = 1;
lbl_1_bss_6C = lbl_1_bss_C[4];
}
if (fn_1_1650(cur_player_index) != 0) {
if (fn_1_1D1C() != 0) {
fn_1_1ED4(cur_player_index);
} else {
fn_1_20E0(cur_player_index);
}
if (lbl_1_bss_2C) {
sprintf(lbl_1_bss_44, lbl_1_data_28C, lbl_1_bss_2C);
BoardWinCreate(0, 0x160006, -1);
BoardWinInsertMesSet((s32)lbl_1_bss_44, 0);
BoardWinWait();
BoardWinKill();
lbl_1_bss_0->unk2 = 1 << cur_player_index;
lbl_1_bss_0->unk0 = lbl_1_bss_2C;
fn_1_CF4();
}
fn_1_26E0(cur_player_index);
BoardStatusShowSetAll(1);
}
BoardPlayerPostTurnHookSet(cur_player_index, &fn_1_15E8);
BoardWinKill();
HuPrcEnd();
}
void fn_1_152C(void) {
BoardConfettiKill();
if (lbl_1_data_282 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_282);
lbl_1_data_282 = -1;
}
if (lbl_1_data_280 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_280);
lbl_1_data_280 = -1;
}
fn_1_2AC0();
lbl_1_bss_28 = NULL;
}
s32 fn_1_15E8(void) {
BoardModelVisibilitySet(lbl_1_bss_6C, 1);
if (lbl_1_data_284 != -1) {
BoardModelKill(lbl_1_data_284);
lbl_1_data_284 = -1;
}
return 1;
}
s32 fn_1_1650(s32 arg0) {
Point3d sp38;
Point3d sp2C;
Point3d sp20;
Point3d sp14;
Point3d sp8;
f32 temp;
s32 temp2;
BoardRotateDiceNumbers(arg0);
if (lbl_1_bss_0->unk2) {
BoardWinCreate(0, 0x160000, -1);
BoardWinWait();
BoardWinKill();
return 0;
}
temp2 = BoardSpaceLinkFlagSearch(0, GWPlayer[arg0].space_curr, 0x02000000);
BoardSpacePosGet(0, temp2, &sp38);
BoardPlayerPosGet(arg0, &sp2C);
PSVECSubtract(&sp38, &sp2C, &sp20);
temp = (atan2(-sp20.x, -sp20.z) / 3.141592653589793) * 180.0f;
BoardPlayerRotYSet(arg0, temp);
sp14.x = 0.0f;
sp14.y = 100.0f;
sp14.z = 0.0f;
sp8.x = -20.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp8, &sp14, 1360.0f, -1.0f, 0x15);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x28);
while (GWPlayer[arg0].moving) {
HuPrcVSleep();
}
BoardStatusShowSetAll(0);
BoardPlayerMotBlendSet(arg0, 0xB4, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardRotateDiceNumbers(arg0);
BoardWinCreate(2, 0x160001, 2);
BoardWinWait();
BoardWinCreateChoice(0, 0x160002, -1, 0);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com) {
if (BoardRandMod(0x64) > 0x32U) {
BoardComKeySetLeft();
} else {
BoardComKeySetRight();
}
}
BoardWinWait();
lbl_1_bss_6F = BoardWinChoiceGet();
BoardWinKill();
fn_1_19DC(arg0, lbl_1_bss_6F);
BoardFilterFadeInit(0x1E, 0xA0);
BoardMusStart(1, 0x19, 0x7F, 0);
HuAudFXPlay(0x435);
sp8.y = BoardModelRotYGet(lbl_1_bss_6C);
while (BoardDAngleCalcRange(&sp8.y, 180.0f, 2.0f) == 0) {
BoardModelRotYSet(lbl_1_bss_6C, sp8.y);
HuPrcVSleep();
}
HuAudFXPlay(0x445);
BoardModelRotYSet(lbl_1_bss_6C, 180.0f);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
return 1;
}
void fn_1_19DC(s32 arg0, s32 arg1) {
s32 temp_r30;
s32 temp_r5;
s32 temp_r5_2;
s32 var_r29;
f32 temp;
temp_r30 = GWPlayer[arg0].character;
if (arg1 != 0) {
lbl_1_data_282 = BoardPlayerMotionCreate(arg0, lbl_1_data_2B0[temp_r30]);
lbl_1_bss_6A = 8;
lbl_1_bss_68 = lbl_1_data_282;
var_r29 = lbl_1_data_2F0[GWPlayer[arg0].character];
} else {
lbl_1_bss_6A = 7;
lbl_1_bss_68 = 1;
var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character];
}
lbl_1_data_280 = BoardPlayerMotionCreate(arg0, lbl_1_data_290[temp_r30]);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
HuAudFXPlay(var_r29);
BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0);
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0);
HuPrcSleep(9);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
HuPrcSleep(0x3C);
if (arg1 != 0) {
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0);
HuPrcSleep(9);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
}
BoardRotateDiceNumbers(arg0);
HuPrcSleep(0x14);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 1, 0x3E8);
BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0);
HuPrcSleep(0xB);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
}
s32 fn_1_1D1C(void) {
s32 sp34;
s32 sp30;
s32 sp2C;
s32 sp28;
s32 sp24;
s32 sp20;
s32 modRand2;
s32 var_r31;
s32 temp2;
s32 modRand;
s32 prevTurn;
s32 maxTurn;
s32 sp8[3] = { 70, 50, 45 };
s32 sp14[3][3] = {
{3, 5, 22},
{5, 10, 35},
{5, 15, 35}
};
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x160003, 2);
BoardWinWait();
BoardWinKill();
prevTurn = GWSystem.turn - 1;
maxTurn = GWSystem.max_turn;
var_r31 = prevTurn / (maxTurn / 3);
if (var_r31 >= 3) {
var_r31 = 2;
}
modRand = BoardRandMod(100);
if (modRand < sp8[var_r31] ) {
return 1;
}
modRand2 = BoardRandMod(100 - sp8[var_r31]);
if (modRand2 < sp14[var_r31][0]) {
lbl_1_bss_2C = 3;
} else if (modRand2 < sp14[var_r31][1]) {
lbl_1_bss_2C = 2;
} else {
lbl_1_bss_2C = 1;
}
return 0;
}
void fn_1_1ED4(s32 arg0) {
Point3d spC;
f32 sp8;
lbl_1_data_284 = BoardModelCreate(0x77000C, NULL, 0);
BoardModelVisibilitySet(lbl_1_data_284, 0);
BoardModelVisibilitySet(lbl_1_bss_6C, 0);
BoardModelPosGet(lbl_1_bss_6C, &spC);
BoardModelVisibilitySet(lbl_1_data_284, 1);
BoardModelPosSetV(lbl_1_data_284, &spC);
BoardFilterFadeOut(0x1E);
BoardPlayerPosGet(arg0, &spC);
spC.y += 700.0f;
BoardConfettiCreate(&spC, 0x64, 300.0f);
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
BoardModelRotYSet(lbl_1_data_284, sp8);
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 4, 2);
BoardMusStart(1, 0x1A, 0x7F, 0);
BoardModelRotYSet(lbl_1_data_284, 0.0f);
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
while (BoardFilterFadePauseCheck() == 0) {
HuPrcVSleep();
}
BoardRotateDiceNumbers(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 1000);
BoardWinCreate(2, 0x160004, 2);
BoardWinWait();
BoardWinKill();
BoardConfettiStop();
}
void fn_1_20E0(s32 arg0) {
Point3d sp24;
Point3d sp18;
Point3d spC;
f32 sp8;
f32 var_f31;
s32 i;
lbl_1_data_284 = BoardModelCreate(0x77000D, NULL, 0);
BoardModelVisibilitySet(lbl_1_data_284, 0);
BoardModelVisibilitySet(lbl_1_bss_6C, 0);
BoardModelPosGet(lbl_1_bss_6C, &spC);
BoardModelVisibilitySet(lbl_1_data_284, 1);
BoardModelPosSetV(lbl_1_data_284, &spC);
BoardFilterFadeOut(0x1E);
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
BoardModelRotYSet(lbl_1_data_284, sp8);
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 4, 2);
BoardModelRotYSet(lbl_1_data_284, 0.0f);
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
while (BoardFilterFadePauseCheck() == 0) {
HuPrcVSleep();
}
BoardMusStart(1, 0x1B, 0x7F, 0);
HuAudFXPlay(0x44A);
fn_1_2A40();
lbl_1_bss_30 = 0.0f;
while (lbl_1_bss_30 < 128.0f) {
HuPrcVSleep();
lbl_1_bss_30 += 12.0f;
}
if (lbl_1_bss_30 > 128.0f) {
lbl_1_bss_30 = 128.0f;
}
HuPrcSleep(0x28);
lbl_1_bss_30 = 128.0f;
while (lbl_1_bss_30 > 0.0f) {
HuPrcVSleep();
lbl_1_bss_30 -= 12.0f;
}
if (lbl_1_bss_30 < 0.0f) {
lbl_1_bss_30 = 0.0f;
}
fn_1_2AC0();
for (i = 0; i < 3; i++) {
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 0xD);
BoardCameraMotionWait();
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 0xD);
BoardCameraMotionWait();
}
BoardRotateDiceNumbers(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 1000);
BoardWinCreate(2, 0x160005, 2);
BoardWinWait();
BoardCameraQuakeSet(0x8CA0, 100.0f);
omVibrate(arg0, 0xE10, 4, 2);
lbl_1_data_288 = HuAudFXPlay(0x436);
BoardCameraViewSet(1);
HuPrcSleep(0x3C);
BoardCameraMotionWait();
sp24.x = 0.0f;
sp24.y = 100.0f;
sp24.z = 0.0f;
sp18.x = -20.0f;
sp18.y = 0.0f;
sp18.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[1], &sp18, &sp24, 3000.0f, -1.0f, 0x3C);
BoardCameraMotionWait();
omVibrate(arg0, 0x1E, 6, 6);
HuPrcSleep(0x1E);
for (var_f31 = 100.0f; var_f31 > 0.0f; var_f31 -= 2.0f) {
BoardCameraQuakeSet(0xA, var_f31);
HuPrcVSleep();
}
BoardCameraQuakeReset();
if (lbl_1_data_288 != 0) {
HuAudFXStop(lbl_1_data_288);
lbl_1_data_288 = -1;
}
fn_1_2818();
omVibrate(arg0, 0xC, 0xC, 0);
HuAudFXPlay(0x438);
fn_1_B5C(1);
HuPrcSleep(0x3C);
sp24.x = 0.0f;
sp24.y = 100.0f;
sp24.z = 0.0f;
sp18.x = -20.0f;
sp18.y = 0.0f;
sp18.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_6C, &sp18, &sp24, 1360.0f, -1.0f, 0x3C);
BoardCameraMotionWait();
HuPrcSleep(0x3C);
}
void fn_1_26E0(s32 arg0) {
Point3d sp20;
Point3d sp14;
Point3d sp8;
f32 temp;
BoardSpacePosGet(0, GWPlayer[arg0].space_curr, &sp20);
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / 3.141592653589793));
BoardPlayerRotYSet(arg0, temp);
BoardCameraViewSet(1);
BoardCameraTargetPlayerSet(arg0);
BoardPlayerPosLerpStart(arg0, &sp14, &sp20, 0x28);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardCameraMotionWait();
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
BoardRotateDiceNumbers(arg0);
}
void fn_1_2818(void) {
s16 temp_r29;
s16 temp_r30;
s16 j;
s16 sp8[3] = {0x0002, 0x003E, 0x007A};
temp_r29 = (4 - lbl_1_bss_2C) * 0x3C;
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
while (1) {
temp_r30 = BoardModelMotionTimeGet(lbl_1_bss_C[1]);
if (temp_r29 > temp_r30) {
for (j = 0; j < ARRAY_COUNT(sp8); j++) {
if (temp_r30 == sp8[j]) {
HuAudFXPlay(0x446);
}
}
HuPrcVSleep();
} else {
break;
}
}
BoardModelAttrSet(lbl_1_bss_C[1], 0x40000002);
HuPrcSleep(0x3C);
}
s32 fn_1_2930(s32 arg0) {
lbl_1_bss_0->unk0--;
if (lbl_1_bss_0->unk0 <= 0) {
lbl_1_bss_0->unk2 = 0;
lbl_1_bss_0->unk0 = 0;
fn_1_B5C(0);
BoardWinCreate(0, 0x160008, -1);
BoardWinWait();
BoardWinKill();
fn_1_CF4();
return 1;
}
sprintf(lbl_1_bss_38, lbl_1_data_28C, lbl_1_bss_0->unk0);
BoardWinCreate(0, 0x160007, -1);
BoardWinInsertMesSet((s32)lbl_1_bss_38, 1);
BoardWinWait();
BoardWinKill();
fn_1_CF4();
return 0;
}
void fn_1_2A40(void) {
lbl_1_bss_30 = 0.0f;
lbl_1_bss_34 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x96000, 0x10000000U);
lbl_1_data_286 = Hu3DHookFuncCreate((void*)&fn_1_2B44);
Hu3DModelLayerSet(lbl_1_data_286, 3);
}
void fn_1_2AC0(void) {
if (lbl_1_bss_34) {
HuMemDirectFree(lbl_1_bss_34);
lbl_1_bss_34 = NULL;
}
if (lbl_1_data_286 != -1) {
Hu3DModelKill(lbl_1_data_286);
lbl_1_data_286 = -1;
}
}
void fn_1_2B44(void) {
Mtx44 sp50;
Mtx sp20;
GXColor sp14;
GXColor sp10;
GXColor spC;
u8 sp8;
GXColor sp1C = {0xFF, 0xFF, 0xFF, 0xFF};
GXColor sp18 = {0xFF, 0xFF, 0xFF, 0xFF};
f32 temp_f28 = 0.0f;
f32 temp_f30 = 640.0f;
f32 temp_f27 = 0.0f;
f32 temp_f29 = 480.0f;
sp18.a = __OSf32tou8(lbl_1_bss_30);
GXInvalidateTexAll();
GXLoadTexObj(&lbl_1_bss_48, GX_TEXMAP0);
C_MTXOrtho(sp50, temp_f27, temp_f29, temp_f28, temp_f30, 0.0f, 10.0f);
GXSetProjection(sp50, GX_ORTHOGRAPHIC);
PSMTXIdentity(sp20);
GXLoadPosMtxImm(sp20, 0);
GXSetCurrentMtx(0);
GXSetViewport(0.0f, 0.0f, temp_f30, 1.0f + temp_f29, 0.0f, 1.0f);
GXSetScissor(0, 0, temp_f30, (1.0f + temp_f29));
GXClearVtxDesc();
GXSetNumTexGens(0);
GXSetNumTevStages(1);
GXSetNumChans(1);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetChanCtrl(GX_COLOR0, 1, GX_SRC_REG, GX_SRC_REG, 1, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_ALPHA0, 0, GX_SRC_REG, GX_SRC_REG, 1, GX_DF_NONE, GX_AF_NONE);
GXSetChanAmbColor(GX_COLOR0A0, sp18);
GXSetChanMatColor(GX_COLOR0A0, sp18);
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
GXSetBlendMode(GX_BM_BLEND, GX_BL_INVDSTCLR, GX_BL_SRCALPHA, GX_LO_NOOP);
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_S, GX_RGBX8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetZMode(1, GX_LEQUAL, 0);
GXSetAlphaUpdate(1);
GXSetColorUpdate(1);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2u16(temp_f28, temp_f27);
GXPosition2f32(0.0f, 0.0f);
GXPosition2u16(temp_f30, temp_f27);
GXPosition2f32(1.0f, 0.0f);
GXPosition2u16(temp_f30, temp_f29);
GXPosition2f32(1.0f, 1.0f);
GXPosition2u16(temp_f28, temp_f29);
GXPosition2f32(0.0f, 1.0f);
GXSetChanMatColor(GX_COLOR0A0, sp1C);
}
f32 const padStatue = 0.0f;

View file

@ -56,7 +56,7 @@ void fn_1_C20(void) {
BoardModelPosSetV(lbl_1_bss_1E, &sp14); BoardModelPosSetV(lbl_1_bss_1E, &sp14);
BoardCameraRotGet(&sp8); BoardCameraRotGet(&sp8);
PSMTXRotRad(sp20, 'y', 0.2617994f); PSMTXRotRad(sp20, 'y', 0.2617994f);
BoardModelMtxSet(lbl_1_bss_1E, sp20); BoardModelMtxSet(lbl_1_bss_1E, &sp20);
BoardModelRotSet(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f); BoardModelRotSet(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f);
BoardModelScaleSet(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f); BoardModelScaleSet(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f);
HuPrcVSleep(); HuPrcVSleep();

View file

@ -124,13 +124,13 @@ void BoardCreate(void) {
BoardModelVisibilitySet(lbl_1_bss_10[0], 0); BoardModelVisibilitySet(lbl_1_bss_10[0], 0);
lbl_1_bss_0->unk8 = BoardModelCreate(0x7000A, NULL, 0); lbl_1_bss_0->unk8 = BoardModelCreate(0x7000A, NULL, 0);
BoardModelVisibilitySet(lbl_1_bss_0->unk8, 0); BoardModelVisibilitySet(lbl_1_bss_0->unk8, 0);
BoardSpaceWalkEventFuncSet(&fn_1_90C); BoardSpaceWalkEventFuncSet((void*)&fn_1_90C);
BoardSpaceWalkMiniEventFuncSet(&fn_1_91C); BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_91C);
BoardSpaceLandEventFuncSet(&fn_1_908); BoardSpaceLandEventFuncSet((void*)&fn_1_908);
fn_80083EDC(lbl_1_data_2C); BoardStarHostSet(lbl_1_data_2C);
fn_800A4F6C(lbl_1_data_32); BoardBooHouseHostSet(lbl_1_data_32);
fn_80077AAC(lbl_1_data_2E); BoardShopHostSet(lbl_1_data_2E);
fn_8007A83C(lbl_1_data_30); BoardLotteryHostSet(lbl_1_data_30);
HuWinMesMaxSizeGet(1, spC, 0x2E003A); HuWinMesMaxSizeGet(1, spC, 0x2E003A);
lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1); lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1);
HuWinMesSet(lbl_1_bss_E, 0x2E003A); HuWinMesSet(lbl_1_bss_E, 0x2E003A);

View file

@ -107,7 +107,7 @@ void fn_1_1134(void) {
fn_1_1E3C(7, 0x122, 0x8C); fn_1_1E3C(7, 0x122, 0x8C);
fn_1_BA0(0x2E0017); fn_1_BA0(0x2E0017);
fn_1_1FB0(); fn_1_1FB0();
fn_80082AAC(1); BoardCharWheelSetTarget(1);
} }
void fn_1_1178(void) { void fn_1_1178(void) {
@ -176,7 +176,7 @@ void fn_1_13A4(void) {
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
GWPlayer[i].color = 1; GWPlayer[i].color = 1;
} }
fn_800A4C88(); BoardMGSetupTutorialExec();
BoardStatusShowSetAll(0); BoardStatusShowSetAll(0);
fn_1_C10(0); fn_1_C10(0);
fn_1_BA0(0x2E002B); fn_1_BA0(0x2E002B);
@ -188,7 +188,7 @@ void fn_1_13A4(void) {
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
fn_1_BA0(0x2E002C); fn_1_BA0(0x2E002C);
fn_8007A360(temp_r3_2); BoardShopTutorialExec(temp_r3_2);
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
temp_r3_2 = BoardSpaceFlagSearch(0, 0x10000000); temp_r3_2 = BoardSpaceFlagSearch(0, 0x10000000);
@ -197,7 +197,7 @@ void fn_1_13A4(void) {
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
fn_1_BA0(0x2E002E); fn_1_BA0(0x2E002E);
fn_8007F894(); BoardLotteryTutorialExec();
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
temp_r3_2 = BoardSpaceFlagSearch(0, 0x08000000); temp_r3_2 = BoardSpaceFlagSearch(0, 0x08000000);
@ -206,7 +206,7 @@ void fn_1_13A4(void) {
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
fn_1_BA0(0x2E0030); fn_1_BA0(0x2E0030);
fn_800A6B10(); BoardBooHouseTutorialExec();
BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30);
BoardCameraMotionWait(); BoardCameraMotionWait();
fn_1_BA0(0x2E0032); fn_1_BA0(0x2E0032);
@ -227,7 +227,7 @@ void fn_1_13A4(void) {
fn_1_BA0(0x2E0039); fn_1_BA0(0x2E0039);
if (lbl_1_bss_C == 0) { if (lbl_1_bss_C == 0) {
lbl_1_bss_C = 1; lbl_1_bss_C = 1;
fn_80070EE8(0, 0x1F3); BoardAudSeqFadeOut(0, 0x1F3);
BoardKill(); BoardKill();
} }
BoardTutorialHookSet(NULL); BoardTutorialHookSet(NULL);

View file

@ -1,4 +1,5 @@
#include "REL/w10Dll.h" #include "REL/w10Dll.h"
#include "game/esprite.h"
#include "game/pad.h" #include "game/pad.h"
#include "game/data.h" #include "game/data.h"
#include "game/wipe.h" #include "game/wipe.h"
@ -152,7 +153,7 @@ void fn_1_1984(void) {
if (i != 4) { if (i != 4) {
lbl_1_bss_C = 1; lbl_1_bss_C = 1;
OSReport(lbl_1_data_98); OSReport(lbl_1_data_98);
fn_80070EE8(0, 0x1F3); BoardAudSeqFadeOut(0, 0x1F3);
BoardKill(); BoardKill();
BoardTutorialHookSet(NULL); BoardTutorialHookSet(NULL);
} }
@ -181,7 +182,7 @@ int fn_1_1AAC(s16 arg0, s32 arg1) {
if (i != 4) { if (i != 4) {
lbl_1_bss_C = 1; lbl_1_bss_C = 1;
OSReport(lbl_1_data_98); OSReport(lbl_1_data_98);
fn_80070EE8(0, 0x1F3); BoardAudSeqFadeOut(0, 0x1F3);
BoardKill(); BoardKill();
BoardTutorialHookSet(NULL); BoardTutorialHookSet(NULL);
} }
@ -197,7 +198,7 @@ int fn_1_1AAC(s16 arg0, s32 arg1) {
lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6); lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6);
if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) { if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) {
if (arg0 == 5) { if (arg0 == 5) {
fn_8008831C(&lbl_1_data_C6[lbl_1_bss_0->unk4++]); BoardRollTutorialSet(&lbl_1_data_C6[lbl_1_bss_0->unk4++]);
} }
if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) { if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) {
void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4; void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4;

174
src/game/ClusterExec.c Normal file
View file

@ -0,0 +1,174 @@
#include "game/ClusterExec.h"
#include "game/EnvelopeExec.h"
#include "game/hsfmotion.h"
float GetClusterCurve(HsfTrack *arg0, float arg1) {
float *var_r30;
switch (arg0->curveType) {
case 1:
return GetLinear(arg0->numKeyframes, arg0->data, arg1);
case 2:
return GetBezier(arg0->numKeyframes, arg0, arg1);
case 4:
var_r30 = &arg0->value;
return *var_r30;
}
return 0.0f;
}
float GetClusterWeightCurve(HsfTrack *arg0, float arg1) {
float *var_r30;
switch (arg0->curveType) {
case 1:
return GetLinear(arg0->numKeyframes, arg0->data, arg1);
case 2:
return GetBezier(arg0->numKeyframes, arg0, arg1);
case 4:
var_r30 = &arg0->value;
return *var_r30;
}
return 0.0f;
}
void SetClusterMain(HsfCluster *arg0) {
float var_f30;
float var_f31;
s32 temp_r24;
s32 temp_r29;
u16 *var_r28;
s32 var_r23;
s32 i;
s32 j;
HsfBuffer *temp_r25;
HsfPart *temp_r27;
HsfBuffer *temp_r30;
temp_r27 = arg0->part;
if (arg0->vertexCnt != 0) {
if (arg0->type == 2) {
var_r28 = temp_r27->vertex;
temp_r30 = *arg0->vertex;
var_f30 = 0.0f;
for (i = 0; i < arg0->vertexCnt; i++) {
var_f30 += arg0->unk14[i];
}
for (i = 0; i < temp_r27->count; i++, var_r28++) {
temp_r29 = *var_r28;
Vertextop[temp_r29].x = ((Vec*) temp_r30->data)[i].x;
Vertextop[temp_r29].y = ((Vec*) temp_r30->data)[i].y;
Vertextop[temp_r29].z = ((Vec*) temp_r30->data)[i].z;
}
for (i = 1; i < arg0->vertexCnt; i++) {
temp_r30 = arg0->vertex[i];
var_r28 = temp_r27->vertex;
var_f31 = arg0->unk14[i];
if (var_f31 < 0.0f) {
var_f31 = 0.0f;
} else if (var_f30 > 1.0f) {
var_f31 /= var_f30;
}
for (j = 0; j < temp_r27->count; j++, var_r28++) {
temp_r29 = *var_r28;
Vertextop[temp_r29].x += var_f31 * (((Vec*) temp_r30->data)[j].x - Vertextop[temp_r29].x);
Vertextop[temp_r29].y += var_f31 * (((Vec*) temp_r30->data)[j].y - Vertextop[temp_r29].y);
Vertextop[temp_r29].z += var_f31 * (((Vec*) temp_r30->data)[j].z - Vertextop[temp_r29].z);
}
}
return;
}
temp_r24 = arg0->unk10;
var_r23 = temp_r24 + 1;
if (var_r23 >= arg0->vertexCnt) {
var_r23 = temp_r24;
}
var_f31 = arg0->unk10 - temp_r24;
temp_r30 = arg0->vertex[temp_r24];
temp_r25 = arg0->vertex[var_r23];
var_r28 = temp_r27->vertex;
for (i = 0; i < temp_r27->count; i++, var_r28++) {
temp_r29 = *var_r28;
Vertextop[temp_r29].x = ((Vec*) temp_r30->data)[i].x + var_f31 * (((Vec*) temp_r25->data)[i].x - ((Vec*) temp_r30->data)[i].x);
Vertextop[temp_r29].y = ((Vec*) temp_r30->data)[i].y + var_f31 * (((Vec*) temp_r25->data)[i].y - ((Vec*) temp_r30->data)[i].y);
Vertextop[temp_r29].z = ((Vec*) temp_r30->data)[i].z + var_f31 * (((Vec*) temp_r25->data)[i].z - ((Vec*) temp_r30->data)[i].z);
}
}
}
void ClusterProc(ModelData *arg0) {
s32 temp_r24;
s32 i;
s32 j;
s32 k;
HsfData *temp_r27;
HsfData *temp_r23;
MotionData *temp_r22;
HsfCluster *var_r29;
HsfObject *temp_r31;
for (i = 0; i < 4; i++) {
temp_r24 = arg0->unk_10[i];
if (temp_r24 != -1) {
temp_r22 = &Hu3DMotion[temp_r24];
temp_r27 = temp_r22->unk_04;
temp_r23 = arg0->hsfData;
var_r29 = temp_r27->cluster;
for (j = 0; j < temp_r27->clusterCnt; j++, var_r29++) {
if (var_r29->target != -1) {
temp_r31 = temp_r23->object;
temp_r31 += var_r29->target;
Vertextop = temp_r31->data.vertex->data;
if (temp_r31->data.hook) {
for (k = 0; k < temp_r31->data.vertex->count; k++) {
Vertextop[k].x = ((Vec*) temp_r31->data.file[0])[k].x;
Vertextop[k].y = ((Vec*) temp_r31->data.file[0])[k].y;
Vertextop[k].z = ((Vec*) temp_r31->data.file[0])[k].z;
}
}
SetClusterMain(var_r29);
DCStoreRangeNoSync(Vertextop, temp_r31->data.vertex->count * sizeof(Vec));
temp_r31->data.unk120[0]++;
}
}
}
}
}
void ClusterMotionExec(ModelData *arg0) {
float temp_f31;
s32 i;
s32 j;
s16 var_r20;
HsfCluster *temp_r26;
HsfData *temp_r28;
HsfMotion *temp_r27;
HsfTrack *var_r31;
HsfTrack *var_r30;
MotionData *var_r23;
var_r31 = temp_r27->track;
for (i = 0; i < 4; i++) {
if (arg0->unk_10[i] != -1) {
var_r20 = arg0->unk_10[i];
var_r23 = &Hu3DMotion[var_r20];
temp_r28 = var_r23->unk_04;
temp_r27 = temp_r28->motion;
var_r31 = temp_r27->track;
temp_f31 = arg0->unk_A4[i];
for (j = 0; j < temp_r27->numTracks; j++, var_r31++) {
switch (var_r31->type) {
case 5:
temp_r26 = &temp_r28->cluster[var_r31->target_s16];
temp_r26->unk10 = GetClusterCurve(var_r31, temp_f31);
break;
case 6:
var_r30 = var_r31;
temp_r26 = &temp_r28->cluster[var_r30->target_s16];
temp_r26->unk14[var_r30->unk04] = GetClusterCurve(var_r30, temp_f31);
break;
}
}
}
}
}

463
src/game/EnvelopeExec.c Normal file
View file

@ -0,0 +1,463 @@
#include "game/EnvelopeExec.h"
#include "game/hsfex.h"
#include "string.h"
static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2);
static void SetEnvelopMain(HsfData *arg0);
static void SetEnvelop(HsfCenv *arg0);
static void SetMtx(HsfObject *arg0, Mtx arg1);
static void SetRevMtx(void);
static HsfSkeleton *SearchSklenton(char *arg0);
Vec *Vertextop;
Mtx *MtxTop;
static u32 nObj;
static u32 nMesh;
static HsfObject *objtop;
static HsfData *CurHsf;
static Vec *vtxenv;
static Vec *normenv;
static Vec *normtop;
static s32 Meshcnt;
static s32 Meshno;
void InitEnvelope(HsfData *arg0) {
HsfBuffer *spC;
HsfBuffer *sp8;
HsfMatrix *temp_r28;
HsfObject *var_r31;
HsfSkeleton *var_r30;
Mtx sp10;
s32 i;
s32 j;
if (arg0->cenvCnt != 0) {
var_r31 = arg0->object;
for (Meshcnt = i = 0; i < arg0->objectCnt; i++, var_r31++) {
if (var_r31->type == 2) {
if (var_r31->data.file[0]) {
spC = var_r31->data.vertex;
sp8 = var_r31->data.normal;
Meshcnt++;
} else {
continue;
}
}
var_r30 = arg0->skeleton;
for (j = 0; j < arg0->skeletonCnt; j++, var_r30++) {
if (strcmp(var_r31->name, var_r30->name) == 0) {
var_r31->data.base.pos.x = var_r30->transform.pos.x;
var_r31->data.base.pos.y = var_r30->transform.pos.y;
var_r31->data.base.pos.z = var_r30->transform.pos.z;
var_r31->data.base.rot.x = var_r30->transform.rot.x;
var_r31->data.base.rot.y = var_r30->transform.rot.y;
var_r31->data.base.rot.z = var_r30->transform.rot.z;
var_r31->data.base.scale.x = var_r30->transform.scale.x;
var_r31->data.base.scale.y = var_r30->transform.scale.y;
var_r31->data.base.scale.z = var_r30->transform.scale.z;
}
}
var_r31->data.curr.pos.x = var_r31->data.base.pos.x;
var_r31->data.curr.pos.y = var_r31->data.base.pos.y;
var_r31->data.curr.pos.z = var_r31->data.base.pos.z;
var_r31->data.curr.rot.x = var_r31->data.base.rot.x;
var_r31->data.curr.rot.y = var_r31->data.base.rot.y;
var_r31->data.curr.rot.z = var_r31->data.base.rot.z;
var_r31->data.curr.scale.x = var_r31->data.base.scale.x;
var_r31->data.curr.scale.y = var_r31->data.base.scale.y;
var_r31->data.curr.scale.z = var_r31->data.base.scale.z;
}
CurHsf = arg0;
objtop = arg0->object;
temp_r28 = CurHsf->matrix;
if (temp_r28) {
MtxTop = temp_r28->data;
nObj = temp_r28->count;
nMesh = temp_r28->base_idx;
}
PSMTXIdentity(sp10);
SetMtx(arg0->root, sp10);
SetRevMtx();
}
}
static void SetEnvelopMtx(HsfObject *arg0, HsfObject *arg1, Mtx arg2) {
Mtx sp6C;
Mtx sp3C;
Mtx spC;
s32 var_r29;
s32 i;
PSMTXTrans(spC, arg1->data.curr.pos.x, arg1->data.curr.pos.y, arg1->data.curr.pos.z);
PSMTXConcat(arg2, spC, sp3C);
if (arg1->data.curr.rot.z) {
PSMTXRotRad(sp6C, 'z', MTXDegToRad(arg1->data.curr.rot.z));
PSMTXConcat(sp3C, sp6C, sp3C);
}
if (arg1->data.curr.rot.y) {
PSMTXRotRad(sp6C, 'y', MTXDegToRad(arg1->data.curr.rot.y));
PSMTXConcat(sp3C, sp6C, sp3C);
}
if (arg1->data.curr.rot.x) {
PSMTXRotRad(sp6C, 'x', MTXDegToRad(arg1->data.curr.rot.x));
PSMTXConcat(sp3C, sp6C, sp3C);
}
if (arg1->data.curr.scale.x != 1.0f) {
sp3C[0][0] *= arg1->data.curr.scale.x;
sp3C[1][0] *= arg1->data.curr.scale.x;
sp3C[2][0] *= arg1->data.curr.scale.x;
}
if (arg1->data.curr.scale.y != 1.0f) {
sp3C[0][1] *= arg1->data.curr.scale.y;
sp3C[1][1] *= arg1->data.curr.scale.y;
sp3C[2][1] *= arg1->data.curr.scale.y;
}
if (arg1->data.curr.scale.z != 1.0f) {
sp3C[0][2] *= arg1->data.curr.scale.z;
sp3C[1][2] *= arg1->data.curr.scale.z;
sp3C[2][2] *= arg1->data.curr.scale.z;
}
var_r29 = arg1 - arg0;
PSMTXCopy(sp3C, MtxTop[nMesh + var_r29]);
for (i = 0; i < arg1->data.childrenCount; i++) {
SetEnvelopMtx(arg0, arg1->data.children[i], sp3C);
}
}
void EnvelopeProc(HsfData *arg0) {
HsfMatrix *temp_r31;
HsfObject *temp_r29;
Mtx sp8;
CurHsf = arg0;
temp_r31 = CurHsf->matrix;
MtxTop = temp_r31->data;
nObj = temp_r31->count;
nMesh = temp_r31->base_idx;
temp_r29 = arg0->root;
PSMTXIdentity(sp8);
SetEnvelopMtx(arg0->object, temp_r29, sp8);
SetEnvelopMain(arg0);
}
void InitVtxParm(HsfData *arg0) {
HsfObject *var_r31;
s32 i;
var_r31 = arg0->object;
for (i = 0; i < arg0->objectCnt; i++, var_r31++) {
if (var_r31->type == 2) {
var_r31->data.unk120[0] = 0;
}
}
}
static void SetEnvelopMain(HsfData *arg0) {
void *sp10;
void *spC;
void *sp8;
HsfBuffer *temp_r28;
HsfBuffer *temp_r30;
HsfObject *var_r31;
s32 i;
s32 j;
HsfCenv *var_r25;
var_r31 = arg0->object;
for (Meshno = i = 0; i < arg0->objectCnt; i++, var_r31++) {
if (var_r31->type == 2) {
PSMTXInverse(MtxTop[&var_r31[nMesh] - arg0->object], MtxTop[Meshno]);
temp_r30 = var_r31->data.vertex;
temp_r28 = var_r31->data.normal;
if (var_r31->data.unk120[0] != 0) {
Vertextop = temp_r30->data;
} else {
Vertextop = var_r31->data.file[0];
}
vtxenv = temp_r30->data;
normtop = var_r31->data.file[1];
normenv = temp_r28->data;
var_r25 = var_r31->data.cenv;
for (j = 0; j < var_r31->data.hook; j++, var_r25++) {
SetEnvelop(var_r25);
}
sp10 = temp_r30->data;
spC = var_r31->data.file[0];
sp8 = temp_r30->data;
DCStoreRangeNoSync(normenv, temp_r28->count * sizeof(Vec));
DCStoreRangeNoSync(vtxenv, temp_r30->count * sizeof(Vec));
Meshno++;
}
}
}
static void SetEnvelop(HsfCenv *arg0) {
Vec sp44;
Vec sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
s32 sp10;
u32 spC;
u32 sp8;
HsfCenvDual *var_r20;
HsfCenvDualWeight *var_r30;
HsfCenvMulti *var_r19;
HsfCenvMultiWeight *var_r25;
HsfCenvSingle *var_r27;
Vec *temp_r22;
Vec *temp_r26;
Vec *temp_r28;
Vec *temp_r31;
float temp_f31;
MtxPtr var_r29;
s32 temp_r18;
s32 temp_r21;
s32 i;
s32 j;
Mtx sp1A0;
Mtx sp170;
Mtx sp140;
Mtx sp110;
Mtx spE0;
Mtx spB0;
Mtx sp80;
Mtx sp50;
var_r27 = arg0->singleData;
for (i = 0; i < arg0->singleCount; i++, var_r27++) {
temp_r18 = var_r27->normal;
temp_r21 = var_r27->pos;
temp_r28 = &vtxenv[temp_r21];
temp_r31 = &Vertextop[temp_r21];
temp_r22 = &normenv[temp_r18];
temp_r26 = &normtop[temp_r18];
PSMTXConcat(MtxTop[nMesh + var_r27->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r27->target], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, sp1A0);
Hu3DMtxScaleGet(&sp1A0[0], &sp14);
if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) {
PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z);
PSMTXConcat(spE0, sp1A0, sp170);
PSMTXInvXpose(sp170, sp170);
} else {
PSMTXInvXpose(sp1A0, sp170);
}
if (var_r27->posCnt == 1) {
PSMTXMultVec(sp1A0, temp_r31, temp_r28);
PSMTXMultVec(sp170, temp_r26, temp_r22);
} else if (var_r27->posCnt <= 6) {
PSMTXMultVecArray(sp1A0, temp_r31, temp_r28, var_r27->posCnt);
PSMTXMultVecArray(sp170, temp_r26, temp_r22, var_r27->normalCnt);
} else {
PSMTXReorder(sp1A0, (ROMtxPtr) sp140);
PSMTXReorder(sp170, (ROMtxPtr) sp110);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r27->posCnt);
PSMTXROMultVecArray((ROMtxPtr) sp110, temp_r26, temp_r22, var_r27->normalCnt);
}
}
var_r20 = arg0->dualData;
for (i = 0; i < arg0->dualCount; i++, var_r20++) {
spC = var_r20->target1;
sp8 = var_r20->target2;
PSMTXConcat(MtxTop[nMesh + spC], MtxTop[nMesh + nObj + nObj * Meshno + spC], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, sp1A0);
PSMTXConcat(MtxTop[nMesh + sp8], MtxTop[nMesh + nObj + nObj * Meshno + sp8], sp140);
PSMTXConcat(MtxTop[Meshno], sp140, (float (*)[4]) &spB0[0]);
var_r30 = var_r20->weight;
for (j = 0; j < var_r20->weightCnt; j++, var_r30++) {
temp_r18 = var_r30->normal;
temp_r21 = var_r30->pos;
temp_r28 = &vtxenv[temp_r21];
temp_r31 = &Vertextop[temp_r21];
temp_r22 = &normenv[temp_r18];
temp_r26 = &normtop[temp_r18];
temp_f31 = var_r30->weight;
sp140[0][0] = sp1A0[0][0] * temp_f31;
sp140[1][0] = sp1A0[1][0] * temp_f31;
sp140[2][0] = sp1A0[2][0] * temp_f31;
sp140[0][1] = sp1A0[0][1] * temp_f31;
sp140[1][1] = sp1A0[1][1] * temp_f31;
sp140[2][1] = sp1A0[2][1] * temp_f31;
sp140[0][2] = sp1A0[0][2] * temp_f31;
sp140[1][2] = sp1A0[1][2] * temp_f31;
sp140[2][2] = sp1A0[2][2] * temp_f31;
sp140[0][3] = sp1A0[0][3] * temp_f31;
sp140[1][3] = sp1A0[1][3] * temp_f31;
sp140[2][3] = sp1A0[2][3] * temp_f31;
temp_f31 = 1.0f - var_r30->weight;
sp110[0][0] = spB0[0][0] * temp_f31;
sp110[1][0] = spB0[1][0] * temp_f31;
sp110[2][0] = spB0[2][0] * temp_f31;
sp110[0][1] = spB0[0][1] * temp_f31;
sp110[1][1] = spB0[1][1] * temp_f31;
sp110[2][1] = spB0[2][1] * temp_f31;
sp110[0][2] = spB0[0][2] * temp_f31;
sp110[1][2] = spB0[1][2] * temp_f31;
sp110[2][2] = spB0[2][2] * temp_f31;
sp110[0][3] = spB0[0][3] * temp_f31;
sp110[1][3] = spB0[1][3] * temp_f31;
sp110[2][3] = spB0[2][3] * temp_f31;
if (sp80 == sp110 || sp80 == sp140) {
var_r29 = sp50;
} else {
var_r29 = sp80;
}
var_r29[0][0] = sp110[0][0] + sp140[0][0];
var_r29[0][1] = sp110[0][1] + sp140[0][1];
var_r29[0][2] = sp110[0][2] + sp140[0][2];
var_r29[0][3] = sp110[0][3] + sp140[0][3];
var_r29[1][0] = sp110[1][0] + sp140[1][0];
var_r29[1][1] = sp110[1][1] + sp140[1][1];
var_r29[1][2] = sp110[1][2] + sp140[1][2];
var_r29[1][3] = sp110[1][3] + sp140[1][3];
var_r29[2][0] = sp110[2][0] + sp140[2][0];
var_r29[2][1] = sp110[2][1] + sp140[2][1];
var_r29[2][2] = sp110[2][2] + sp140[2][2];
var_r29[2][3] = sp110[2][3] + sp140[2][3];
if (var_r29 == sp50) {
PSMTXCopy(sp50, sp80);
}
Hu3DMtxScaleGet(&sp80[0], &sp14);
if (sp14.x != 1.0f || sp14.y != 1.0f || sp14.z != 1.0f) {
PSMTXScale(spE0, 1.0 / sp14.x, 1.0 / sp14.y, 1.0 / sp14.z);
PSMTXConcat(spE0, sp80, sp110);
PSMTXInvXpose(sp110, sp110);
} else {
PSMTXInvXpose(sp80, sp110);
}
if (var_r30->posCnt == 1) {
PSMTXMultVec(sp80, temp_r31, temp_r28);
} else if (var_r30->posCnt <= 6) {
PSMTXMultVecArray(sp80, temp_r31, temp_r28, var_r30->posCnt);
} else {
PSMTXReorder(sp80, (ROMtxPtr) sp140);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r31, temp_r28, var_r30->posCnt);
}
if (var_r30->normalCnt != 0) {
if (var_r30->normalCnt == 1) {
PSMTXMultVec(sp110, temp_r26, temp_r22);
} else if (var_r30->normalCnt <= 6) {
PSMTXMultVecArray(sp110, temp_r26, temp_r22, var_r30->normalCnt);
} else {
PSMTXReorder(sp110, (ROMtxPtr) sp140);
PSMTXROMultVecArray((ROMtxPtr) sp140, temp_r26, temp_r22, var_r30->normalCnt);
}
}
}
}
var_r19 = arg0->multiData;
for (i = 0; i < arg0->multiCount; i++, var_r19++) {
var_r25 = var_r19->weight;
temp_r18 = var_r19->normal;
temp_r21 = var_r19->pos;
temp_r28 = &vtxenv[temp_r21];
temp_r31 = &Vertextop[temp_r21];
temp_r22 = &normenv[temp_r18];
temp_r26 = &normtop[temp_r18];
sp38.x = sp38.y = sp38.z = 0.0f;
sp20.x = sp20.y = sp20.z = 0.0f;
sp10 = 0;
for (j = 0; j < var_r19->weightCnt; j++, var_r25++) {
PSMTXConcat(MtxTop[nMesh + var_r25->target], MtxTop[nMesh + nObj + nObj * Meshno + var_r25->target], sp1A0);
PSMTXConcat(MtxTop[Meshno], sp1A0, sp1A0);
PSMTXInvXpose(sp1A0, sp170);
PSMTXMultVec(sp1A0, temp_r31, &sp44);
PSMTXMultVec(sp170, temp_r26, &sp2C);
sp44.x = var_r25->value * (sp44.x - temp_r31->x);
sp44.y = var_r25->value * (sp44.y - temp_r31->y);
sp44.z = var_r25->value * (sp44.z - temp_r31->z);
PSVECAdd(&sp38, &sp44, &sp38);
sp2C.x = var_r25->value * (sp2C.x - temp_r26->x);
sp2C.y = var_r25->value * (sp2C.y - temp_r26->y);
sp2C.z = var_r25->value * (sp2C.z - temp_r26->z);
PSVECAdd(&sp20, &sp2C, &sp20);
}
temp_r28->x = temp_r31->x + sp38.x;
temp_r28->y = temp_r31->y + sp38.y;
temp_r28->z = temp_r31->z + sp38.z;
temp_r22->x = temp_r26->x + sp20.x;
temp_r22->y = temp_r26->y + sp20.y;
temp_r22->z = temp_r26->z + sp20.z;
}
temp_r21 = arg0->vtxCount;
temp_r28 = &vtxenv[temp_r21];
temp_r31 = &Vertextop[temp_r21];
for (i = 0; i < arg0->copyCount; i++, temp_r28++, temp_r31++) {
temp_r28->x = temp_r31->x;
temp_r28->y = temp_r31->y;
temp_r28->z = temp_r31->z;
}
}
static void SetMtx(HsfObject *arg0, Mtx arg1) {
HsfSkeleton *temp_r3;
Mtx spFC;
Mtx spCC;
Mtx sp9C;
s32 temp_r25;
s32 i;
temp_r3 = SearchSklenton(arg0->name);
if (temp_r3) {
arg0->data.base.pos.x = temp_r3->transform.pos.x;
arg0->data.base.pos.y = temp_r3->transform.pos.y;
arg0->data.base.pos.z = temp_r3->transform.pos.z;
arg0->data.base.rot.x = temp_r3->transform.rot.x;
arg0->data.base.rot.y = temp_r3->transform.rot.y;
arg0->data.base.rot.z = temp_r3->transform.rot.z;
arg0->data.base.scale.x = temp_r3->transform.scale.x;
arg0->data.base.scale.y = temp_r3->transform.scale.y;
arg0->data.base.scale.z = temp_r3->transform.scale.z;
}
PSMTXTrans(spFC, arg0->data.base.pos.x, arg0->data.base.pos.y, arg0->data.base.pos.z);
PSMTXScale(spCC, arg0->data.base.scale.x, arg0->data.base.scale.y, arg0->data.base.scale.z);
PSMTXConcat(arg1, spFC, spFC);
PSMTXRotRad(sp9C, 'z', MTXDegToRad(arg0->data.base.rot.z));
PSMTXConcat(spFC, sp9C, spFC);
PSMTXRotRad(sp9C, 'y', MTXDegToRad(arg0->data.base.rot.y));
PSMTXConcat(spFC, sp9C, spFC);
PSMTXRotRad(sp9C, 'x', MTXDegToRad(arg0->data.base.rot.x));
PSMTXConcat(spFC, sp9C, spFC);
PSMTXConcat(spFC, spCC, spFC);
temp_r25 = arg0 - objtop;
PSMTXCopy(spFC, MtxTop[nMesh + temp_r25]);
for (i = 0; i < arg0->data.childrenCount; i++) {
SetMtx(arg0->data.children[i], spFC);
}
}
static void SetRevMtx(void) {
HsfObject *var_r29;
s32 var_r28;
s32 i;
s32 var_r30;
Mtx sp38;
Mtx sp8;
var_r29 = CurHsf->object;
for (var_r28 = i = 0; i < CurHsf->objectCnt; i++, var_r29++) {
if (var_r29->type == 2) {
PSMTXCopy(MtxTop[nMesh + i], sp8);
for (var_r30 = 0; var_r30 < CurHsf->objectCnt; var_r30++) {
PSMTXInverse(MtxTop[nMesh + var_r30], sp38);
PSMTXConcat(sp38, sp8, MtxTop[nMesh + nObj + nObj * var_r28 + var_r30]);
}
PSMTXInverse(MtxTop[nMesh + i], sp8);
var_r28++;
}
}
}
static HsfSkeleton *SearchSklenton(char *arg0) {
HsfSkeleton *var_r31;
s32 i;
var_r31 = CurHsf->skeleton;
for (i = 0; i < CurHsf->skeletonCnt; i++, var_r31++) {
if (strcmp(arg0, var_r31->name) == 0) {
return var_r31;
}
}
return NULL;
}

69
src/game/ShapeExec.c Executable file
View file

@ -0,0 +1,69 @@
#include "game/ShapeExec.h"
#include "game/EnvelopeExec.h"
static void SetShapeMain(HsfObject *arg0) {
HsfBuffer *temp_r28;
HsfBuffer *temp_r30;
float var_f30;
float var_f31;
s32 temp_r27;
s32 var_r29;
s32 var_r26;
s32 i;
if (arg0->data.shapeType == 2) {
var_f30 = 0.0f;
for (i = 0; i < arg0->data.vertexShapeCnt; i++) {
var_f30 += arg0->data.mesh.morphWeight[i];
}
temp_r30 = *arg0->data.vertexShape;
for (i = 0; i < temp_r30->count; i++) {
Vertextop[i].x = ((Vec*) temp_r30->data)[i].x;
Vertextop[i].y = ((Vec*) temp_r30->data)[i].y;
Vertextop[i].z = ((Vec*) temp_r30->data)[i].z;
}
for (i = 0; i < arg0->data.vertexShapeCnt; i++) {
temp_r30 = arg0->data.vertexShape[i];
var_f31 = arg0->data.mesh.morphWeight[i];
if (var_f31 < 0.0f) {
var_f31 = 0.0f;
} else if (var_f30 > 1.0f) {
var_f31 /= var_f30;
}
for (var_r29 = 0; var_r29 < temp_r30->count; var_r29++) {
Vertextop[var_r29].x += var_f31 * (((Vec*) temp_r30->data)[var_r29].x - Vertextop[var_r29].x);
Vertextop[var_r29].y += var_f31 * (((Vec*) temp_r30->data)[var_r29].y - Vertextop[var_r29].y);
Vertextop[var_r29].z += var_f31 * (((Vec*) temp_r30->data)[var_r29].z - Vertextop[var_r29].z);
}
}
} else {
temp_r27 = arg0->data.mesh.baseMorph;
var_r26 = temp_r27 + 1;
if (var_r26 >= arg0->data.vertexShapeCnt) {
var_r26 = temp_r27;
}
var_f31 = arg0->data.mesh.baseMorph - temp_r27;
temp_r30 = arg0->data.vertexShape[temp_r27];
temp_r28 = arg0->data.vertexShape[var_r26];
for (i = 0; i < temp_r30->count; i++) {
Vertextop[i].x = ((Vec*) temp_r30->data)[i].x + var_f31 * (((Vec*) temp_r28->data)[i].x - ((Vec*) temp_r30->data)[i].x);
Vertextop[i].y = ((Vec*) temp_r30->data)[i].y + var_f31 * (((Vec*) temp_r28->data)[i].y - ((Vec*) temp_r30->data)[i].y);
Vertextop[i].z = ((Vec*) temp_r30->data)[i].z + var_f31 * (((Vec*) temp_r28->data)[i].z - ((Vec*) temp_r30->data)[i].z);
}
}
}
void ShapeProc(HsfData *arg0) {
HsfObject *var_r31;
s32 i;
var_r31 = arg0->object;
for (i = 0; i < arg0->objectCnt; i++, var_r31++) {
if (var_r31->type == 2 && var_r31->data.vertexShapeCnt != 0) {
Vertextop = var_r31->data.vertex->data;
SetShapeMain(var_r31);
DCStoreRange(Vertextop, var_r31->data.vertex->count * sizeof(Vec));
var_r31->data.unk120[0]++;
}
}
}

109
src/game/THPDraw.c Executable file
View file

@ -0,0 +1,109 @@
#include "game/THPDraw.h"
void THPGXRestore(void) {
GXSetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE);
GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET);
GXSetNumTexGens(1);
GXSetNumChans(0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapMode(GX_TEVSTAGE1, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapMode(GX_TEVSTAGE2, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapMode(GX_TEVSTAGE3, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_1);
GXSetTevKAlphaSel(GX_TEVSTAGE1, GX_TEV_KASEL_1);
}
void THPGXYuv2RgbSetup(GXRenderModeObj *obj, GXColor *arg1, Mtx arg2) {
s32 sp2C = obj->fbWidth;
s32 sp28 = obj->efbHeight;
GXLoadPosMtxImm(arg2, GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
GXSetNumChans(0);
GXSetNumTexGens(2);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXInvalidateTexAll();
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT7, GX_VA_POS, GX_TEX_ST, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT7, GX_VA_TEX0, GX_TEX_ST, GX_RGBX8, 0);
GXSetNumTevStages(5);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_KONST, GX_CC_C0);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K0_A);
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP2, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_KONST, GX_CC_CPREV);
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_2, GX_FALSE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_APREV);
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
GXSetTevKColorSel(GX_TEVSTAGE1, GX_TEV_KCSEL_K1);
GXSetTevKAlphaSel(GX_TEVSTAGE1, GX_TEV_KASEL_K1_A);
GXSetTevSwapMode(GX_TEVSTAGE1, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV);
GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_TEXA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevSwapMode(GX_TEVSTAGE2, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE3, GX_CC_APREV, GX_CC_CPREV, GX_CC_KONST, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE3, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevSwapMode(GX_TEVSTAGE3, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevKColorSel(GX_TEVSTAGE3, GX_TEV_KCSEL_K2);
GXSetTevColor(GX_TEVREG1, *arg1);
GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE4, GX_CC_ZERO, GX_CC_CPREV, GX_CC_C1, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE4, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE4, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A1);
GXSetTevAlphaOp(GX_TEVSTAGE4, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevColorS10(GX_TEVREG0, (GXColorS10) { 0xFFA6, 0, 0xFF8E, 0x0087 });
GXSetTevKColor(GX_KCOLOR0, (GXColor) { 0, 0, 0xE2, 0x58 });
GXSetTevKColor(GX_KCOLOR1, (GXColor) { 0xB3, 0, 0, 0xB6 });
GXSetTevKColor(GX_KCOLOR2, (GXColor) { 0xFF, 0, 0xFF, 0x80 });
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
}
void THPGXYuv2RgbDraw(u32 *yImage, u32 *uImage, u32 *vImage, s16 x, s16 y, s16 texWidth, s16 texHeight, s16 polyWidth, s16 polyHeight) {
GXTexObj sp54;
GXTexObj sp34;
GXTexObj sp14;
GXInitTexObj(&sp54, yImage, texWidth, texHeight, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&sp54, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&sp54, GX_TEXMAP0);
GXInitTexObj(&sp34, uImage, texWidth >> 1, texHeight >> 1, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&sp34, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&sp34, GX_TEXMAP1);
GXInitTexObj(&sp14, vImage, texWidth >> 1, texHeight >> 1, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&sp14, GX_TEXMAP2);
GXBegin(GX_QUADS, GX_VTXFMT7, 4);
GXPosition3s16(x, y, 0);
GXTexCoord2s16(0, 0);
GXPosition3s16(x + polyWidth, y, 0);
GXTexCoord2s16(1, 0);
GXPosition3s16(x + polyWidth, y + polyHeight, 0);
GXTexCoord2s16(1, 1);
GXPosition3s16(x, y + polyHeight, 0);
GXTexCoord2s16(0, 1);
GXEnd();
}

657
src/game/THPSimple.c Executable file
View file

@ -0,0 +1,657 @@
#include "game/THPSimple.h"
#include "game/THPDraw.h"
#define ALIGN32(val) (((val) + 0x1F) & ~0x1F)
static void __THPSimpleDVDCallback(s32 result, DVDFileInfo *fileInfo);
static s32 VideoDecode(void *arg0);
static void THPAudioMixCallback(void);
UnkThpStruct10 SimpleControl;
static u8 SoundBuffer[2][0x280];
static u8 WorkBuffer[0x40];
static s32 SoundBufferIndex;
static void *LastAudioBuffer;
static void *CurAudioBuffer;
static s32 bufIdx;
static s32 AudioSystem;
static void (*OldAIDCallback)();
static s32 Initialized;
s32 THPSimpleInit(s32 arg0) {
s32 temp_r31;
memset(&SimpleControl, 0, sizeof(SimpleControl));
LCEnable();
if (THPInit() == 0) {
return 0;
}
temp_r31 = OSDisableInterrupts();
AudioSystem = arg0;
SoundBufferIndex = 0;
LastAudioBuffer = NULL;
CurAudioBuffer = NULL;
OldAIDCallback = AIRegisterDMACallback(THPAudioMixCallback);
if (OldAIDCallback == NULL && AudioSystem != 0) {
AIRegisterDMACallback(NULL);
OSRestoreInterrupts(temp_r31);
return 0;
}
OSRestoreInterrupts(temp_r31);
if (AudioSystem == 0) {
memset(SoundBuffer, 0, sizeof(SoundBuffer));
DCFlushRange(SoundBuffer, sizeof(SoundBuffer));
AIInitDMA((u32) &SoundBuffer[SoundBufferIndex], sizeof(SoundBuffer[0]));
AIStartDMA();
}
Initialized = 1;
return 1;
}
void THPSimpleQuit(void) {
s32 temp_r31;
LCDisable();
temp_r31 = OSDisableInterrupts();
if (OldAIDCallback) {
AIRegisterDMACallback(OldAIDCallback);
}
OSRestoreInterrupts(temp_r31);
Initialized = 0;
}
s32 THPSimpleOpen(char *arg0) {
s32 var_r31;
s32 i;
if (Initialized == 0) {
return 0;
}
if (SimpleControl.unk98 != 0) {
return 0;
}
memset(&SimpleControl.unk80, 0, sizeof(SimpleControl.unk80));
memset(SimpleControl.unk88, 0, sizeof(SimpleControl.unk88));
if (DVDOpen(arg0, &SimpleControl.unk00) == 0) {
return 0;
}
if (DVDReadPrio(&SimpleControl.unk00, &WorkBuffer, 0x40, 0, 2) < 0) {
DVDClose(&SimpleControl.unk00);
return 0;
}
memcpy(&SimpleControl.unk3C, &WorkBuffer, sizeof(SimpleControl.unk3C));
if (strcmp(SimpleControl.unk3C.mMagic, "THP") != 0) {
DVDClose(&SimpleControl.unk00);
return 0;
}
if (SimpleControl.unk3C.mVersion != 0x10000) {
DVDClose(&SimpleControl.unk00);
return 0;
}
var_r31 = SimpleControl.unk3C.mCompInfoDataOffsets;
if (DVDReadPrio(&SimpleControl.unk00, &WorkBuffer, 0x20, var_r31, 2) < 0) {
DVDClose(&SimpleControl.unk00);
return 0;
}
memcpy(&SimpleControl.unk6C, &WorkBuffer, sizeof(SimpleControl.unk6C));
var_r31 += sizeof(SimpleControl.unk6C);
SimpleControl.unk9F = 0;
for (i = 0; i < SimpleControl.unk6C.mNumComponents; i++) {
switch (SimpleControl.unk6C.mFrameComp[i]) {
case 0:
if (DVDReadPrio(&SimpleControl.unk00, &WorkBuffer, 0x20, var_r31, 2) < 0) {
DVDClose(&SimpleControl.unk00);
return 0;
}
memcpy(&SimpleControl.unk80, &WorkBuffer, sizeof(SimpleControl.unk80));
var_r31 += sizeof(SimpleControl.unk80);
break;
case 1:
if (DVDReadPrio(&SimpleControl.unk00, &WorkBuffer, 0x20, var_r31, 2) < 0) {
DVDClose(&SimpleControl.unk00);
return 0;
}
memcpy(SimpleControl.unk88, &WorkBuffer, sizeof(SimpleControl.unk88));
SimpleControl.unk9F = 1;
var_r31 += sizeof(SimpleControl.unk88);
break;
default:
return 0;
}
}
SimpleControl.unkA0 = SimpleControl.unk3C.mMovieDataOffsets;
SimpleControl.unkB4 = SimpleControl.unk3C.mFirstFrameSize;
SimpleControl.unkB0 = 0;
SimpleControl.unkB8 = 0;
SimpleControl.unkA4 = 0;
SimpleControl.unk144[0].unk0C = -1;
SimpleControl.unkAC = 0;
SimpleControl.unk194 = 0;
SimpleControl.unk198 = 0;
SimpleControl.unk9C = 0;
SimpleControl.unk9D = 0;
SimpleControl.unk9E = 0;
SimpleControl.unk98 = 1;
SimpleControl.unkC0 = SimpleControl.unkBC;
SimpleControl.unkC8 = 0;
return 1;
}
s32 THPSimpleClose(void) {
if (SimpleControl.unk98 != 0 && SimpleControl.unk9C == 0) {
if (SimpleControl.unk9F != 0) {
if (SimpleControl.unk9D == 1) {
return 0;
}
} else {
SimpleControl.unk9D = 0;
}
if (SimpleControl.unkA8 == 0) {
SimpleControl.unk98 = 0;
DVDClose(&SimpleControl.unk00);
return 1;
}
}
return 0;
}
s32 THPSimpleCalcNeedMemory(void) {
s32 var_r31;
if (SimpleControl.unk98 != 0) {
var_r31 = ALIGN32(SimpleControl.unk3C.mBufferSize) * 10;
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04);
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04 / 4);
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04 / 4);
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04);
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04 / 4);
var_r31 += ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04 / 4);
if (SimpleControl.unk9F != 0) {
var_r31 += ALIGN32(SimpleControl.unk3C.mAudioMaxSamples * 4) * 4;
}
var_r31 += 0x1000;
return var_r31;
}
return 0;
}
s32 THPSimpleSetBuffer(void *arg0) {
u8 *var_r31;
u32 temp_r28;
u32 temp_r29;
u32 i;
if (SimpleControl.unk98 != 0 && SimpleControl.unk9C == 0) {
if (SimpleControl.unk9D == 1) {
return 0;
}
temp_r28 = ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04);
temp_r29 = ALIGN32(SimpleControl.unk80.unk00 * SimpleControl.unk80.unk04 / 4);
var_r31 = arg0;
for (i = 0; i < 2; i++) {
SimpleControl.unk144[i].unk00 = var_r31;
DCInvalidateRange(var_r31, temp_r28);
var_r31 += temp_r28;
SimpleControl.unk144[i].unk04 = var_r31;
DCInvalidateRange(var_r31, temp_r29);
var_r31 += temp_r29;
SimpleControl.unk144[i].unk08 = var_r31;
DCInvalidateRange(var_r31, temp_r29);
var_r31 += temp_r29;
}
for (i = 0; i < 10; i++) {
SimpleControl.unkCC[i].unk00 = (s32*) var_r31;
var_r31 += ALIGN32(SimpleControl.unk3C.mBufferSize);
SimpleControl.unkCC[i].unk08 = 0;
}
if (SimpleControl.unk9F != 0) {
for (i = 0; i < 4; i++) {
SimpleControl.unk164[i].unk00 = var_r31;
SimpleControl.unk164[i].unk04 = var_r31;
SimpleControl.unk164[i].unk08 = 0;
var_r31 += ALIGN32(SimpleControl.unk3C.mAudioMaxSamples * 4);
}
}
SimpleControl.unk94 = var_r31;
}
return 1;
}
static inline void THPSimpleInlineFunc(void) {
if (SimpleControl.unkB8 > SimpleControl.unk3C.mNumFrames - 1) {
if (SimpleControl.unk9E != 1) {
return;
}
SimpleControl.unkB8 = 0;
SimpleControl.unkA0 = SimpleControl.unk3C.mMovieDataOffsets;
SimpleControl.unkB4 = SimpleControl.unk3C.mFirstFrameSize;
}
SimpleControl.unkA8 = 1;
if (DVDReadAsyncPrio(&SimpleControl.unk00, SimpleControl.unkCC[SimpleControl.unkB0].unk00, SimpleControl.unkB4, SimpleControl.unkA0, __THPSimpleDVDCallback, 2) != 1) {
SimpleControl.unkA8 = 0;
SimpleControl.unkA4 = 1;
}
}
static void __THPSimpleDVDCallback(s32 result, DVDFileInfo *fileInfo) {
s32 var_r31;
if (result == -1) {
SimpleControl.unkA4 = 1;
return;
}
if (result != -3) {
SimpleControl.unkA8 = 0;
SimpleControl.unkCC[SimpleControl.unkB0].unk04 = SimpleControl.unkB8;
SimpleControl.unkB8++;
SimpleControl.unkCC[SimpleControl.unkB0].unk08 = 1;
SimpleControl.unkA0 += SimpleControl.unkB4;
SimpleControl.unkB4 = *SimpleControl.unkCC[SimpleControl.unkB0].unk00;
if (SimpleControl.unkB0 + 1 >= 10) {
var_r31 = 0;
} else {
var_r31 = SimpleControl.unkB0 + 1;
}
SimpleControl.unkB0 = var_r31;
if (SimpleControl.unkCC[SimpleControl.unkB0].unk08 == 0 && SimpleControl.unkA4 == 0 && SimpleControl.unk9C == 1) {
THPSimpleInlineFunc();
}
}
}
s32 THPSimplePreLoad(s32 arg0) {
u32 var_r30;
s32 var_r29;
s32 i;
if (SimpleControl.unk98 != 0 && SimpleControl.unk9C == 0) {
var_r30 = 10;
if (arg0 == 0 && SimpleControl.unk3C.mNumFrames < 10) {
var_r30 = SimpleControl.unk3C.mNumFrames;
}
for (i = 0; i < var_r30; i++) {
if (DVDReadPrio(&SimpleControl.unk00, SimpleControl.unkCC[SimpleControl.unkB0].unk00, SimpleControl.unkB4, SimpleControl.unkA0, 2) < 0) {
SimpleControl.unkA4 = 1;
return 0;
}
SimpleControl.unkA0 += SimpleControl.unkB4;
SimpleControl.unkB4 = *SimpleControl.unkCC[SimpleControl.unkB0].unk00;
SimpleControl.unkCC[SimpleControl.unkB0].unk08 = 1;
SimpleControl.unkCC[SimpleControl.unkB0].unk04 = SimpleControl.unkB8;
if (SimpleControl.unkB0 + 1 >= 10) {
var_r29 = 0;
} else {
var_r29 = SimpleControl.unkB0 + 1;
}
SimpleControl.unkB0 = var_r29;
SimpleControl.unkB8++;
if (SimpleControl.unkB8 > SimpleControl.unk3C.mNumFrames - 1 && SimpleControl.unk9E == 1) {
SimpleControl.unkB8 = 0;
SimpleControl.unkA0 = SimpleControl.unk3C.mMovieDataOffsets;
SimpleControl.unkB4 = SimpleControl.unk3C.mFirstFrameSize;
}
}
SimpleControl.unk9E = arg0;
SimpleControl.unk9C = 1;
return 1;
}
return 0;
}
void THPSimpleAudioStart(void) {
SimpleControl.unk9D = 1;
}
void THPSimpleAudioStop(void) {
SimpleControl.unk9D = 0;
}
s32 THPSimpleLoadStop(void) {
s32 i;
if (SimpleControl.unk98 != 0 && SimpleControl.unk9D == 0) {
SimpleControl.unk9C = 0;
if (SimpleControl.unkA8 != 0) {
DVDCancel(&SimpleControl.unk00.cb);
SimpleControl.unkA8 = 0;
}
for (i = 0; i < 10; i++) {
SimpleControl.unkCC[i].unk08 = 0;
}
for (i = 0; i < 4; i++) {
SimpleControl.unk164[i].unk08 = 0;
}
SimpleControl.unk144[0].unk0C = -1;
SimpleControl.unkA0 = SimpleControl.unk3C.mMovieDataOffsets;
SimpleControl.unkB4 = SimpleControl.unk3C.mFirstFrameSize;
SimpleControl.unkB0 = 0;
SimpleControl.unkB8 = 0;
SimpleControl.unkA4 = 0;
SimpleControl.unkAC = 0;
SimpleControl.unk194 = 0;
SimpleControl.unk198 = 0;
SimpleControl.unkBC = SimpleControl.unkC0;
SimpleControl.unkC8 = 0;
return 1;
}
return 0;
}
s32 THPSimpleDecode(void) {
u8 *var_r29;
s32 *var_r30;
s32 temp_r27;
s32 temp_r26;
s32 temp_r25;
s32 var_r28;
s32 i;
if (SimpleControl.unkCC[SimpleControl.unkAC].unk08 != 0) {
var_r30 = SimpleControl.unkCC[SimpleControl.unkAC].unk00 + 2;
var_r29 = (u8*) (&SimpleControl.unkCC[SimpleControl.unkAC].unk00[SimpleControl.unk6C.mNumComponents] + 2);
if (SimpleControl.unk9F != 0) {
if (SimpleControl.unk164[SimpleControl.unk194].unk08 == 0) {
for (i = 0; i < SimpleControl.unk6C.mNumComponents; var_r29 += *var_r30, var_r30++, i++) {
switch (SimpleControl.unk6C.mFrameComp[i]) {
case 0:
if (VideoDecode(var_r29) == 0) {
return 1;
}
break;
case 1:
temp_r26 = THPAudioDecode(SimpleControl.unk164[SimpleControl.unk194].unk00, var_r29, 0);
temp_r27 = OSDisableInterrupts();
SimpleControl.unk164[SimpleControl.unk194].unk08 = temp_r26;
SimpleControl.unk164[SimpleControl.unk194].unk04 = SimpleControl.unk164[SimpleControl.unk194].unk00;
OSRestoreInterrupts(temp_r27);
SimpleControl.unk194++;
if (SimpleControl.unk194 >= 4) {
SimpleControl.unk194 = 0;
}
break;
}
}
} else {
return 3;
}
} else {
for (i = 0; i < SimpleControl.unk6C.mNumComponents; var_r29 += *var_r30, var_r30++, i++) {
if ((s32) SimpleControl.unk6C.mFrameComp[i] != 0) {
(void) i; // required to match. Optimized out unreachable code?
} else if (VideoDecode(var_r29) == 0) {
return 1;
}
}
}
SimpleControl.unkCC[SimpleControl.unkAC].unk08 = 0;
if (SimpleControl.unkAC + 1 >= 10) {
var_r28 = 0;
} else {
var_r28 = SimpleControl.unkAC + 1;
}
SimpleControl.unkAC = var_r28;
temp_r25 = OSDisableInterrupts();
if (SimpleControl.unkCC[SimpleControl.unkB0].unk08 == 0 && SimpleControl.unkA8 == 0 && SimpleControl.unkA4 == 0 && SimpleControl.unk9C == 1) {
THPSimpleInlineFunc();
}
OSRestoreInterrupts(temp_r25);
return 0;
} else {
return 2;
}
}
static s32 VideoDecode(void *arg0) {
s32 temp_r31;
bufIdx = (bufIdx + 1) & 1;
temp_r31 = THPVideoDecode(arg0, SimpleControl.unk144[bufIdx].unk00, SimpleControl.unk144[bufIdx].unk04, SimpleControl.unk144[bufIdx].unk08, SimpleControl.unk94);
if (temp_r31 == 0) {
SimpleControl.unk144[0].unk0C = SimpleControl.unkCC[SimpleControl.unkAC].unk04;
return 1;
}
return 0;
}
s32 THPSimpleDrawCurrentFrame(GXRenderModeObj *arg0, GXColor *arg1, Mtx arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
if (SimpleControl.unk144[0].unk0C >= 0) {
THPGXYuv2RgbSetup(arg0, arg1, arg2);
THPGXYuv2RgbDraw(SimpleControl.unk144[bufIdx].unk00, SimpleControl.unk144[bufIdx].unk04, SimpleControl.unk144[bufIdx].unk08, arg3, arg4, SimpleControl.unk80.unk00, SimpleControl.unk80.unk04, arg5, arg6);
THPGXRestore();
return SimpleControl.unk144[0].unk0C;
}
return -1;
}
static u16 VolumeTable[] = {
0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0032, 0x0049, 0x0063,
0x0082, 0x00A4, 0x00CB, 0x00F5, 0x0124, 0x0157, 0x018E, 0x01C9,
0x0208, 0x024B, 0x0292, 0x02DD, 0x032C, 0x037F, 0x03D7, 0x0432,
0x0492, 0x04F5, 0x055D, 0x05C9, 0x0638, 0x06AC, 0x0724, 0x07A0,
0x0820, 0x08A4, 0x092C, 0x09B8, 0x0A48, 0x0ADD, 0x0B75, 0x0C12,
0x0CB2, 0x0D57, 0x0DFF, 0x0EAC, 0x0F5D, 0x1012, 0x10CA, 0x1187,
0x1248, 0x130D, 0x13D7, 0x14A4, 0x1575, 0x164A, 0x1724, 0x1801,
0x18E3, 0x19C8, 0x1AB2, 0x1BA0, 0x1C91, 0x1D87, 0x1E81, 0x1F7F,
0x2081, 0x2187, 0x2291, 0x239F, 0x24B2, 0x25C8, 0x26E2, 0x2801,
0x2923, 0x2A4A, 0x2B75, 0x2CA3, 0x2DD6, 0x2F0D, 0x3048, 0x3187,
0x32CA, 0x3411, 0x355C, 0x36AB, 0x37FF, 0x3956, 0x3AB1, 0x3C11,
0x3D74, 0x3EDC, 0x4048, 0x41B7, 0x432B, 0x44A3, 0x461F, 0x479F,
0x4923, 0x4AAB, 0x4C37, 0x4DC7, 0x4F5C, 0x50F4, 0x5290, 0x5431,
0x55D6, 0x577E, 0x592B, 0x5ADC, 0x5C90, 0x5E49, 0x6006, 0x61C7,
0x638C, 0x6555, 0x6722, 0x68F4, 0x6AC9, 0x6CA2, 0x6E80, 0x7061,
0x7247, 0x7430, 0x761E, 0x7810, 0x7A06, 0x7C00, 0x7DFE, 0x8000
};
static void MixAudio(void *arg0, void *arg1, u32 arg2) {
s32 var_r31;
u32 var_r27;
u32 var_r28;
s32 i;
u16 temp_r24;
s16 *var_r26;
s16 *var_r30;
s16 *var_r29;
if (arg1) {
if (SimpleControl.unk98 != 0 && SimpleControl.unk9D == 1 && SimpleControl.unk9F != 0) {
var_r28 = arg2;
var_r30 = arg0;
var_r26 = arg1;
while (1) {
if (SimpleControl.unk164[SimpleControl.unk198].unk08 == 0) {
break;
}
if (SimpleControl.unk164[SimpleControl.unk198].unk08 >= var_r28) {
var_r27 = var_r28;
} else {
var_r27 = SimpleControl.unk164[SimpleControl.unk198].unk08;
}
var_r29 = SimpleControl.unk164[SimpleControl.unk198].unk04;
for (i = 0; i < var_r27; i++) {
if (SimpleControl.unkC8 != 0) {
SimpleControl.unkC8--;
SimpleControl.unkBC += SimpleControl.unkC4;
} else {
SimpleControl.unkBC = SimpleControl.unkC0;
}
temp_r24 = VolumeTable[(s32) SimpleControl.unkBC];
var_r31 = *var_r26 + ((temp_r24 * *var_r29) >> 0xF);
if (var_r31 < -0x8000) {
var_r31 = -0x8000;
}
if (var_r31 > 0x7FFF) {
var_r31 = 0x7FFF;
}
*var_r30 = var_r31;
var_r30++;
var_r26++;
var_r29++;
var_r31 = *var_r26 + ((temp_r24 * *var_r29) >> 0xF);
if (var_r31 < -0x8000) {
var_r31 = -0x8000;
}
if (var_r31 > 0x7FFF) {
var_r31 = 0x7FFF;
}
*var_r30 = var_r31;
var_r30++;
var_r26++;
var_r29++;
}
var_r28 -= var_r27;
SimpleControl.unk164[SimpleControl.unk198].unk08 -= var_r27;
SimpleControl.unk164[SimpleControl.unk198].unk04 = var_r29;
if (SimpleControl.unk164[SimpleControl.unk198].unk08 == 0) {
SimpleControl.unk198++;
if (SimpleControl.unk198 >= 4) {
SimpleControl.unk198 = 0;
}
}
if (var_r28 == 0) {
return;
}
}
memcpy(var_r30, var_r26, var_r28 * 4);
} else {
memcpy(arg0, arg1, arg2 * 4);
}
} else if (SimpleControl.unk98 != 0 && SimpleControl.unk9D == 1 && SimpleControl.unk9F != 0) {
var_r28 = arg2;
var_r30 = arg0;
while (1) {
if (SimpleControl.unk164[SimpleControl.unk198].unk08 == 0) {
break;
}
if (SimpleControl.unk164[SimpleControl.unk198].unk08 >= var_r28) {
var_r27 = var_r28;
} else {
var_r27 = SimpleControl.unk164[SimpleControl.unk198].unk08;
}
var_r29 = SimpleControl.unk164[SimpleControl.unk198].unk04;
for (i = 0; i < var_r27; i++) {
if (SimpleControl.unkC8 != 0) {
SimpleControl.unkC8--;
SimpleControl.unkBC += SimpleControl.unkC4;
} else {
SimpleControl.unkBC = SimpleControl.unkC0;
}
temp_r24 = VolumeTable[(s32) SimpleControl.unkBC];
var_r31 = (temp_r24 * *var_r29) >> 0xF;
if (var_r31 < -0x8000) {
var_r31 = -0x8000;
}
if (var_r31 > 0x7FFF) {
var_r31 = 0x7FFF;
}
*var_r30 = var_r31;
var_r30++;
var_r29++;
var_r31 = (temp_r24 * *var_r29) >> 0xF;
if (var_r31 < -0x8000) {
var_r31 = -0x8000;
}
if (var_r31 > 0x7FFF) {
var_r31 = 0x7FFF;
}
*var_r30 = var_r31;
var_r30++;
var_r29++;
}
var_r28 -= var_r27;
SimpleControl.unk164[SimpleControl.unk198].unk08 -= var_r27;
SimpleControl.unk164[SimpleControl.unk198].unk04 = var_r29;
if (SimpleControl.unk164[SimpleControl.unk198].unk08 == 0) {
SimpleControl.unk198++;
if (SimpleControl.unk198 >= 4) {
SimpleControl.unk198 = 0;
}
}
if (var_r28 == 0) {
return;
}
}
memset(var_r30, 0, var_r28 * 4);
} else {
memset(arg0, 0, arg2 * 4);
}
}
s32 THPSimpleGetVideoInfo(UnkThpStruct04 *arg0) {
if (SimpleControl.unk98 != 0) {
memcpy(arg0, &SimpleControl.unk80, 8);
return 1;
}
return 0;
}
s32 THPSimpleGetTotalFrame(void) {
if (SimpleControl.unk98 != 0) {
return SimpleControl.unk3C.mNumFrames;
}
return 0;
}
static void THPAudioMixCallback(void) {
s32 temp_r31;
if (AudioSystem == 0) {
SoundBufferIndex ^= 1;
AIInitDMA((u32) SoundBuffer[SoundBufferIndex], sizeof(SoundBuffer[0]));
temp_r31 = OSEnableInterrupts();
MixAudio(SoundBuffer[SoundBufferIndex], 0, 0xA0);
DCFlushRange(SoundBuffer[SoundBufferIndex], sizeof(SoundBuffer[0]));
OSRestoreInterrupts(temp_r31);
} else {
if (AudioSystem == 1) {
if (LastAudioBuffer) {
CurAudioBuffer = LastAudioBuffer;
}
OldAIDCallback();
LastAudioBuffer = (u8*) AIGetDMAStartAddr() + 0x80000000;
} else {
OldAIDCallback();
CurAudioBuffer = (u8*) AIGetDMAStartAddr() + 0x80000000;
}
SoundBufferIndex ^= 1;
AIInitDMA((u32) SoundBuffer[SoundBufferIndex], sizeof(SoundBuffer[0]));
temp_r31 = OSEnableInterrupts();
if (CurAudioBuffer) {
DCInvalidateRange(CurAudioBuffer, sizeof(SoundBuffer[0]));
}
MixAudio(SoundBuffer[SoundBufferIndex], CurAudioBuffer, 0xA0);
DCFlushRange(SoundBuffer[SoundBufferIndex], sizeof(SoundBuffer[0]));
OSRestoreInterrupts(temp_r31);
}
}
s32 THPSimpleSetVolume(s32 left, s32 right) {
s32 temp_r29;
if (SimpleControl.unk98 != 0 && SimpleControl.unk9F != 0) {
if (left > 127) {
left = 127;
}
if (left < 0) {
left = 0;
}
if (right > 60000) {
right = 60000;
}
if (right < 0) {
right = 0;
}
temp_r29 = OSDisableInterrupts();
SimpleControl.unkC0 = left;
if (right != 0) {
SimpleControl.unkC8 = (right << 5);
SimpleControl.unkC4 = (SimpleControl.unkC0 - SimpleControl.unkBC) / SimpleControl.unkC8;
} else {
SimpleControl.unkC8 = 0;
SimpleControl.unkBC = SimpleControl.unkC0;
}
OSRestoreInterrupts(temp_r29);
return 1;
}
return 0;
}

View file

@ -160,7 +160,7 @@ void HuAudFXPanning(s32 arg0, s16 arg1) {
} }
} }
void HuAudFXListnerSet(s32 arg0, s32 arg1, float arg2, float arg3) { void HuAudFXListnerSet(Vec* arg0, Vec* arg1, float arg2, float arg3) {
if (omSysExitReq == 0) { if (omSysExitReq == 0) {
HuAudFXListnerSetEX(arg0, arg1, HuAudFXListnerSetEX(arg0, arg1,
arg2 + Snd3DDistOffset, arg2 + Snd3DDistOffset,
@ -171,7 +171,7 @@ void HuAudFXListnerSet(s32 arg0, s32 arg1, float arg2, float arg3) {
} }
} }
void HuAudFXListnerSetEX(s32 arg0, s32 arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6) { void HuAudFXListnerSetEX(Vec* arg0, Vec* arg1, float sndDist, float sndSpeed, float arg4, float arg5, float arg6) {
UnkMsmStruct_02 sp1C; UnkMsmStruct_02 sp1C;
if (omSysExitReq == 0) { if (omSysExitReq == 0) {

View file

@ -41,8 +41,8 @@ extern void BoardPlayerMotionEndWait(s32);
extern void BoardPlayerMotionShiftSet(s32, s32, f32, f32, s32); extern void BoardPlayerMotionShiftSet(s32, s32, f32, f32, s32);
extern void BoardPlayerCoinsAdd(s32, s32); extern void BoardPlayerCoinsAdd(s32, s32);
extern void BoardRotateDiceNumbers(s32); extern void BoardRotateDiceNumbers(s32);
extern void BoardCameraAnimBlendSet(s32, s16, s16); extern void BoardCameraMotBlendSet(s32, s16, s16);
extern s32 BoardPlayerAnimBlendCheck(s32); extern s32 BoardPlayerMotBlendCheck(s32);
static omObjData *coinChgObj[4] = { static omObjData *coinChgObj[4] = {
NULL, NULL,
@ -64,7 +64,7 @@ static s32 coinDigitMdl[10] = {
MAKE_DATA_NUM(DATADIR_BOARD, 21), MAKE_DATA_NUM(DATADIR_BOARD, 21),
}; };
void BoardLandBlueExec(s32 player, s16 space) { void BoardLandBlueExec(s32 player, s32 space) {
Vec pos; Vec pos;
s32 i; s32 i;
s8 coin_chg; s8 coin_chg;
@ -72,8 +72,8 @@ void BoardLandBlueExec(s32 player, s16 space) {
BoardCameraViewSet(2); BoardCameraViewSet(2);
BoardPlayerAnimBlendSet(player, 0, 15); BoardPlayerMotBlendSet(player, 0, 15);
while (BoardPlayerAnimBlendCheck(player) == 0) { while (BoardPlayerMotBlendCheck(player) == 0) {
HuPrcVSleep(); HuPrcVSleep();
} }
if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) {
@ -105,7 +105,7 @@ void BoardLandBlueExec(s32 player, s16 space) {
BoardRotateDiceNumbers(player); BoardRotateDiceNumbers(player);
} }
void BoardLandRedExec(s32 player, s16 space) { void BoardLandRedExec(s32 player, s32 space) {
Vec pos; Vec pos;
s32 i; s32 i;
s8 coin_chg; s8 coin_chg;
@ -113,8 +113,8 @@ void BoardLandRedExec(s32 player, s16 space) {
BoardCameraViewSet(2); BoardCameraViewSet(2);
omVibrate(player, 12, 6, 6); omVibrate(player, 12, 6, 6);
BoardPlayerAnimBlendSet(player, 0, 15); BoardPlayerMotBlendSet(player, 0, 15);
while (BoardPlayerAnimBlendCheck(player) == 0) { while (BoardPlayerMotBlendCheck(player) == 0) {
HuPrcVSleep(); HuPrcVSleep();
} }
if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) { if (_CheckFlag(FLAG_ID_MAKE(1, 11)) != 0) {
@ -162,7 +162,7 @@ s8 BoardCoinChgCreate(Vec *pos, s8 value) {
obj = omAddObjEx(boardObjMan, 266, 0, 0, -1, &UpdateCoinChg); obj = omAddObjEx(boardObjMan, 266, 0, 0, -1, &UpdateCoinChg);
coinChgObj[i] = obj; coinChgObj[i] = obj;
coin_chg = (coinChg *)obj->work; coin_chg = OM_GET_WORK_PTR(obj, coinChg);
coin_chg->hide = 0; coin_chg->hide = 0;
coin_chg->update = 0; coin_chg->update = 0;
coin_chg->minus = (value < 0) ? 1 : 0; coin_chg->minus = (value < 0) ? 1 : 0;
@ -189,7 +189,7 @@ s32 BoardCoinChgExist(s32 index) {
return index; return index;
} }
if (coinChgObj[index - 1] != 0) { if (coinChgObj[index - 1] != 0) {
coin_chg = (coinChg *)coinChgObj[index - 1]->work; coin_chg = OM_GET_WORK_PTR(coinChgObj[index - 1], coinChg);
return 0; return 0;
} }
return 1; return 1;
@ -201,7 +201,7 @@ void BoardCoinChgHide(s32 index) {
return; return;
} }
if (coinChgObj[index - 1] != 0) { if (coinChgObj[index - 1] != 0) {
((coinChg *)coinChgObj[index - 1]->work)->hide = 1; OM_GET_WORK_PTR(coinChgObj[index - 1], coinChg)->hide = 1;
} }
} }
@ -251,7 +251,7 @@ static void CreateCoinChg(coinChg *coin_chg, Vec *pos) {
static void UpdateCoinChg(omObjData *object) { static void UpdateCoinChg(omObjData *object) {
coinChg *coin_chg; coinChg *coin_chg;
coin_chg = (coinChg *)object->work; coin_chg = OM_GET_WORK_PTR(object, coinChg);
if ((coin_chg->hide != 0) || (BoardIsKill() != 0)) { if ((coin_chg->hide != 0) || (BoardIsKill() != 0)) {
if (coin_chg->coin_model != -1) { if (coin_chg->coin_model != -1) {
BoardModelKill(coin_chg->coin_model); BoardModelKill(coin_chg->coin_model);

File diff suppressed because it is too large Load diff

1183
src/game/board/model.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -41,7 +41,7 @@ extern void BoardModelMotionCreate(s16, s32);
extern void BoardModelMotionKill(s16, s32); extern void BoardModelMotionKill(s16, s32);
extern s32 BoardModelMotionEndCheck(s16); extern s32 BoardModelMotionEndCheck(s16);
extern s32 BoardModelMotionStart(s16, s32, s32); extern s32 BoardModelMotionStart(s16, s32, s32);
extern s32 BoardModelMotionShiftSet(s16, s32, f32, f32, s32); extern s32 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
extern void BoardModelMotionSpeedSet(s16, f32); extern void BoardModelMotionSpeedSet(s16, f32);
extern void BoardModelMotionTimeSet(s16, f32); extern void BoardModelMotionTimeSet(s16, f32);
extern f32 BoardModelMotionTimeGet(s16); extern f32 BoardModelMotionTimeGet(s16);
@ -52,16 +52,16 @@ extern void BoardModelAttrReset(s16, s32);
//// #include "game/board/tutorial.h" //// #include "game/board/tutorial.h"
extern BoardTutorialHookExec(s16, s32); extern BoardTutorialHookExec(s16, s32);
//// #include "game/board/com.h" //// #include "game/board/com.h"
extern void fn_8007185C(s32, s32); extern void BoardComUseItemSet(s32, s32);
//// #include "game/board/overhead.h" //// #include "game/board/overhead.h"
extern void fn_800729A4(s32); extern void BoardViewOverheadExec(s32);
extern void fn_80072DA8(s32); extern void BoardViewMapExec(s32);
//// #include "game/board/dice_roll.h" //// #include "game/board/roll.h"
extern s32 fn_80085CC8(s32); extern s32 fn_80085CC8(s32);
extern void fn_80085EB4(void); extern void fn_80085EB4(void);
//// #include "game/chrman.h" //// #include "game/chrman.h"
extern void CharModelKillIndex(s16); extern void CharModelDataClose(s16);
extern void CharModelSetStepType(s16, s32); extern void CharModelStepTypeSet(s16, s32);
//// ////
static void UpdateJunctionGfx(omObjData*); static void UpdateJunctionGfx(omObjData*);
@ -82,7 +82,7 @@ s32 DoDebugMove(s32, s16*);
s32 DoSparkSpace(s32, s16*); s32 DoSparkSpace(s32, s16*);
s32 ExecJunction(s32, s16*); s32 ExecJunction(s32, s16*);
s32 MegaPlayerPassFunc(s32, s16); s32 MegaPlayerPassFunc(s32, s16);
s32 BoardPlayerAnimBlendCheck(s32); s32 BoardPlayerMotBlendCheck(s32);
typedef struct bitcopy { typedef struct bitcopy {
struct { struct {
@ -115,7 +115,7 @@ static s16 suitPlayerMdl = -1;
static s16 suitCurrMot = -1; static s16 suitCurrMot = -1;
static s32 diceJumpObj[4] = {0, 0, 0, 0}; static s32 diceJumpObj[4] = {0, 0, 0, 0};
static s32 animDoneF[4] = {0, 0, 0, 0}; static s32 motDoneF[4] = {0, 0, 0, 0};
static s16 bowserSuitMot[5] = {-1, -1, -1, -1, -1}; static s16 bowserSuitMot[5] = {-1, -1, -1, -1, -1};
char* lbl_8013993C[] = { char* lbl_8013993C[] = {
"eye1", "eye1",
@ -179,7 +179,7 @@ void BoardPlayerInit(void) {
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
GWPlayer[var_r31].space_curr = temp_r30; GWPlayer[var_r31].space_curr = temp_r30;
fn_80062D90(var_r31); BoardPlayerCornerPosSet(var_r31);
BoardPlayerSizeSet(var_r31, 0); BoardPlayerSizeSet(var_r31, 0);
GWPlayer[var_r31].color = 0; GWPlayer[var_r31].color = 0;
GWPlayer[var_r31].bowser_suit = 0; GWPlayer[var_r31].bowser_suit = 0;
@ -190,7 +190,7 @@ void BoardPlayerInit(void) {
} }
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
fn_80062D90(var_r31); BoardPlayerCornerPosSet(var_r31);
if (BoardPlayerAutoSizeGet(var_r31) != 0) { if (BoardPlayerAutoSizeGet(var_r31) != 0) {
BoardPlayerAutoSizeSet(var_r31, BoardPlayerAutoSizeGet(var_r31)); BoardPlayerAutoSizeSet(var_r31, BoardPlayerAutoSizeGet(var_r31));
BoardStatusHammerShowSet(var_r31, 0); BoardStatusHammerShowSet(var_r31, 0);
@ -227,7 +227,7 @@ void BoardPlayerModelInit(void) {
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
preTurnHook[var_r31] = 0; preTurnHook[var_r31] = 0;
postTurnHook[var_r31] = 0; postTurnHook[var_r31] = 0;
animDoneF[var_r31] = 0; motDoneF[var_r31] = 0;
diceJumpObj[var_r31] = 0; diceJumpObj[var_r31] = 0;
temp_r22 = &GWPlayer[var_r31]; temp_r22 = &GWPlayer[var_r31];
temp_r27 = temp_r22; temp_r27 = temp_r22;
@ -266,7 +266,7 @@ void BoardPlayerModelInit(void) {
GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff; GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff;
GWPlayerCfg[var_r31].diff = GWPlayerCfg[var_r31].diff; GWPlayerCfg[var_r31].diff = GWPlayerCfg[var_r31].diff;
temp_r27->space_prev = -1; temp_r27->space_prev = -1;
CharModelKillIndex(GWPlayer[var_r31].character); CharModelDataClose(GWPlayer[var_r31].character);
} }
CharModelLayerSetAll(2); CharModelLayerSetAll(2);
} }
@ -375,14 +375,14 @@ s32 BoardPlayerItemCount(s32 arg0) {
return var_r30; return var_r30;
} }
void fn_80062D90(s32 arg0) { void BoardPlayerCornerPosSet(s32 arg0) {
Vec sp8; Vec sp8;
BoardPlayerCurrSpacePosDirGet(arg0, &sp8); BoardPlayerCornerPosGet(arg0, &sp8);
BoardPlayerPosSetV(arg0, &sp8); BoardPlayerPosSetV(arg0, &sp8);
} }
void BoardPlayerCurrSpacePosDirGet(s32 arg0, Point3d* arg1) { void BoardPlayerCornerPosGet(s32 arg0, Point3d* arg1) {
s32 var_r31; s32 var_r31;
s32 var_r30; s32 var_r30;
s32 var_r29; s32 var_r29;
@ -400,7 +400,7 @@ void BoardPlayerCurrSpacePosDirGet(s32 arg0, Point3d* arg1) {
var_r29 += 1; var_r29 += 1;
} }
} }
BoardSpaceDirPosGet(temp_r28, var_r29, arg1); BoardSpaceCornerPosGet(temp_r28, var_r29, arg1);
} }
} }
@ -531,7 +531,7 @@ void BoardPlayerMotionStart(s32 arg0, s32 arg1, s32 arg2) {
} }
} }
void BoardPlayerMotionShiftSet(s32 arg0, s32 arg1, f32 arg8, f32 arg9, s32 arg2) { void BoardPlayerMotionShiftSet(s32 arg0, s32 arg1, f32 arg8, f32 arg9, u32 arg2) {
PlayerState* player; PlayerState* player;
s32 temp_r29; s32 temp_r29;
@ -607,11 +607,11 @@ void BoardPlayerSizeSet(s32 arg0, s32 arg1) {
temp_r27 = BoardPlayerGet(arg0); temp_r27 = BoardPlayerGet(arg0);
temp_r27->size = arg1; temp_r27->size = arg1;
if (arg1 == 2) { if (arg1 == 2) {
CharModelSetStepType(GWPlayer[arg0].character, 4); CharModelStepTypeSet(GWPlayer[arg0].character, 4);
} else if (arg1 == 1) { } else if (arg1 == 1) {
CharModelSetStepType(GWPlayer[arg0].character, 5); CharModelStepTypeSet(GWPlayer[arg0].character, 5);
} else { } else {
CharModelSetStepType(GWPlayer[arg0].character, 0); CharModelStepTypeSet(GWPlayer[arg0].character, 0);
} }
BoardModelScaleSetV(BoardPlayerModelGet(arg0), &temp_r4[arg1]); BoardModelScaleSetV(BoardPlayerModelGet(arg0), &temp_r4[arg1]);
} }
@ -682,7 +682,7 @@ void BoardPlayerPostTurnHookSet(s32 arg0, s32 (*arg1)()) {
void BoardPlayerTurnExec(s32 arg0) { void BoardPlayerTurnExec(s32 arg0) {
BoardPauseEnableSet(1); BoardPauseEnableSet(1);
fn_8007185C(arg0, -1); BoardComUseItemSet(arg0, -1);
GWSystem.field31_bit4 = 0xF; GWSystem.field31_bit4 = 0xF;
_ClearFlag(0x10016); _ClearFlag(0x10016);
_ClearFlag(0x1000E); _ClearFlag(0x1000E);
@ -741,11 +741,11 @@ void BoardPlayerTurnRollExec(s32 arg0) {
break; break;
case -3: case -3:
fn_80085EB4(); fn_80085EB4();
fn_80072DA8(arg0); BoardViewMapExec(arg0);
break; break;
case -4: case -4:
fn_80085EB4(); fn_80085EB4();
fn_800729A4(arg0); BoardViewOverheadExec(arg0);
break; break;
} }
} while (temp_r30 <= 0); } while (temp_r30 <= 0);
@ -918,10 +918,10 @@ void BoardPlayerZoomRestore(s32 arg0) {
var_r31 = (var_r31 + 1) & 3; var_r31 = (var_r31 + 1) & 3;
(void)var_r29; // (void)var_r29; //
} }
BoardSpaceDirPosGet(temp_r27, var_r29, &sp18); BoardSpaceCornerPosGet(temp_r27, var_r29, &sp18);
BoardPlayerAnimBlendSet(arg0, 0, 0xF); BoardPlayerMotBlendSet(arg0, 0, 0xF);
while (BoardPlayerAnimBlendCheck(arg0) == 0) { while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep(); HuPrcVSleep();
} }
BoardRotateDiceNumbers(arg0); BoardRotateDiceNumbers(arg0);

View file

@ -1,18 +1,39 @@
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "game/flag.h" #include "game/flag.h"
#include "game/board/main.h" #include "game/board/main.h"
#include "game/board/player.h"
#include "game/board/space.h" #include "game/board/space.h"
#include "game/hsfman.h"
#include "game/data.h"
#include "game/sprite.h"
#include "math.h" #include "math.h"
#include "string.h"
extern void omVibrate(s16, s16, s16, s16);
extern s16 BoardStarHostMdlGet(void); extern s16 BoardStarHostMdlGet(void);
extern void BoardModelPosSetV(s16 model, Vec *pos); extern void BoardModelPosSetV(s16 model, Vec *pos);
extern s16 BoardModelCreate(s32 file, s32 *data, s32 arg3);
extern s16 BoardModelIDGet(s16 model);
static BoardSpace spaceData[2][256];
s16 boardSpaceStarTbl[8];
static GXTexObj spaceHiliteTex; static GXTexObj spaceHiliteTex;
static GXTexObj spaceTex; static GXTexObj spaceTex;
s16 boardSpaceStarTbl[8];
static BoardSpace spaceData[2][256]; static s8 spaceImgIdx[12] = {
0, 1, 2, 7,
6, 5, 3, 4,
9, 10, 11, 0
};
static s8 spaceHiliteImgIdx[12] = {
-1, 0, 1, 1,
2, 2, 2, 2,
-1, 3, -1, -1
};
static s16 spaceCnt[2]; static s16 spaceCnt[2];
static u32 spaceAttr[2]; static u32 spaceAttr[2];
@ -28,11 +49,13 @@ static s32 spaceDrawCnt;
static s16 spaceDrawF; static s16 spaceDrawF;
static s16 spaceDrawMdl = -1; static s16 spaceDrawMdl = -1;
static s16 starMdl = -1; static s16 starPlatMdl = -1;
static s32 ExecPipeSpace(s32 player, s32 space);
extern s8 boardTutorialBlockF;
extern s32 boardTutorialBlockPos;
s32 BoardSpaceRotGet(s32 layer, s32 index, Vec *rot);
s32 BoardSpaceStarGet(s32 index);
s32 BoardSpaceStarGetCurr(void);
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func) void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func)
{ {
@ -69,7 +92,7 @@ s32 BoardSpaceWalkMiniEventExec(void)
return ret; return ret;
} }
s16 BoardSpaceCountGet(s32 layer) s32 BoardSpaceCountGet(s32 layer)
{ {
return spaceCnt[layer]; return spaceCnt[layer];
} }
@ -281,7 +304,7 @@ s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale)
return -1; return -1;
} }
void BoardSpaceStarSet(s32 space) void BoardSpaceHostSet(s32 space)
{ {
s16 host_space; s16 host_space;
Vec pos; Vec pos;
@ -292,9 +315,9 @@ void BoardSpaceStarSet(s32 space)
BoardModelPosSetV(BoardStarHostMdlGet(), &pos); BoardModelPosSetV(BoardStarHostMdlGet(), &pos);
} }
static inline s16 BoardStarMdlGet(void) static inline s16 StarPlatGetMdl(void)
{ {
return starMdl; return starPlatMdl;
} }
static inline s32 BoardStarSpaceTypeGet(s16 index) static inline s32 BoardStarSpaceTypeGet(s16 index)
@ -311,13 +334,13 @@ void BoardSpaceStarSetIndex(s32 index)
BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 1); BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 1);
} }
GWSystem.star_pos = index & 0x7; GWSystem.star_pos = index & 0x7;
BoardSpaceStarSet(BoardSpaceStarGetCurr()); BoardSpaceHostSet(BoardSpaceStarGetCurr());
space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000); space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000);
BoardSpacePosGet(0, space, &pos); BoardSpacePosGet(0, space, &pos);
BoardModelPosSetV(BoardStarMdlGet(), &pos); BoardModelPosSetV(StarPlatGetMdl(), &pos);
BoardSpaceRotGet(0, space, &rot); BoardSpaceRotGet(0, space, &rot);
BoardModelRotYSet(BoardStarMdlGet(), rot.y); BoardModelRotYSet(StarPlatGetMdl(), rot.y);
BoardModelVisibilitySet(BoardStarMdlGet(), 1); BoardModelVisibilitySet(StarPlatGetMdl(), 1);
} }
s32 BoardSpaceStarGetNext(void) s32 BoardSpaceStarGetNext(void)
@ -550,8 +573,8 @@ void BoardSpaceLandExec(s32 player, s32 space)
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
HuAudFXPlay(842); HuAudFXPlay(842);
BoardCameraViewSet(2); BoardCameraViewSet(2);
BoardPlayerAnimBlendSet(player, 0, 15); BoardPlayerMotBlendSet(player, 0, 15);
while(!BoardPlayerAnimBlendCheck(player)) { while(!BoardPlayerMotBlendCheck(player)) {
HuPrcVSleep(); HuPrcVSleep();
} }
BoardCameraMotionWait(); BoardCameraMotionWait();
@ -586,4 +609,492 @@ void BoardSpaceLandExec(s32 player, s32 space)
BoardStarExec(player, space); BoardStarExec(player, space);
break; break;
} }
}
s32 BoardSpaceWalkExec(s32 player, s32 space)
{
s32 is_star;
BoardSpace *space_ptr;
BoardSpace *star_space;
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
space_ptr = BoardSpaceGet(0, space);
if(space_ptr->flag & 0x180000) {
BoardTutorialHookExec(25, 0);
}
}
if(BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) {
return 0;
}
space_ptr = BoardSpaceGet(0, space);
if(BoardCurrGet() == 7 || BoardCurrGet() == 8) {
is_star = 0;
} else {
star_space = BoardSpaceGet(0, boardSpaceStarTbl[GWSystem.star_pos]);
if(space_ptr == star_space) {
is_star = 1;
} else {
is_star = 0;
}
}
if(is_star) {
BoardStarExec(player, space);
return 1;
}
if(space_ptr->flag & 0x600000) {
u16 mg_param = GWSystem.unk_38;
if(BoardPlayerSizeGet(player) == 1) {
BoardRotateDiceNumbers(player);
BoardMGCreate(mg_param);
}
return 1;
}
if(space_ptr->flag & 0x180000) {
BoardShopExec(player, space);
return 1;
}
if(space_ptr->flag & 0x08000000) {
BoardBooHouseExec(player, space);
return 1;
}
if(space_ptr->flag & 0x10000000) {
BoardLotteryExec();
return 1;
}
if(space_ptr->flag & 0x20000000) {
ExecPipeSpace(player, space);
return 1;
}
return 0;
}
s32 BoardSpaceBlockExec(s32 player, s32 space)
{
s32 event_exec;
BoardSpace *space_ptr;
event_exec = 0;
if(BoardPlayerSizeGet(player) == 2 || GWPlayer[player].bowser_suit) {
return 0;
}
space_ptr = BoardSpaceGet(0, space);
event_exec = 0;
if(space == GWSystem.block_pos) {
event_exec = 1;
}
if((int)GWSystem.bonus_star == 0 && BoardPartyFlagGet() == 1 && !_CheckFlag(FLAG_ID_MAKE(1, 11))) {
event_exec = 0;
}
if(BoardCurrGet() == 7 || BoardCurrGet() == 8) {
event_exec = 0;
}
if(event_exec) {
BoardBlockExec(player, space);
if(_CheckFlag(FLAG_ID_MAKE(1, 11))) {
BoardBlockExec(player, space);
}
BoardSpaceBlockPosSet();
}
return 0;
}
static s32 ExecPipeSpace(s32 player, s32 space)
{
Vec pos_link;
Vec pos;
Vec dir;
float radius, y_vel;
s32 mot_disable;
BoardSpace *space_ptr;
mot_disable = 0;
if(BoardPlayerSizeGet(player) != 1) {
return 0;
}
BoardPlayerPosGet(player, &pos);
pos.y += 200.0f;
space_ptr = BoardSpaceGet(0, space);
BoardSpacePosGet(0, space_ptr->link[0], &pos_link);
VECSubtract(&pos_link, &pos, &dir);
VECNormalize(&dir, &dir);
BoardPlayerRotYSet(player, 90-((atan2(dir.z, dir.x)/M_PI)*180));
radius = 0.75f*BoardVecDistXZCalc(&pos_link, &pos);
BoardPlayerMotionStart(player, 4, 0);
y_vel = 0;
while(1) {
if(BoardVecDistXZCalc(&pos_link, &pos) < 2) {
break;
}
pos.x += (dir.x*radius)/60.0f;
pos.z += (dir.z*radius)/60.0f;
if(pos.y <= pos_link.y) {
pos.y = pos_link.y;
if(!mot_disable) {
BoardPlayerMotionShiftSet(player, 3, 0, 4, 0x40000001);
break;
}
} else {
pos.y += 10.0f+(-((1/2399.99f)+(1/50.0f))*y_vel*y_vel);
y_vel += 1.0f;
}
BoardPlayerPosSetV(player, &pos);
HuPrcVSleep();
}
return 0;
}
void BoardSpaceTypeForce(u16 from, u16 to)
{
s32 i;
for(i=0; i<spaceCnt[0]; i++) {
BoardSpace *space = &spaceData[0][i];
if(space->type == from) {
space->type = to;
}
}
}
void BoardSpaceHide(s32 value)
{
if(value) {
Hu3DModelAttrSet(spaceDrawMdl, 1);
} else {
Hu3DModelAttrReset(spaceDrawMdl, 1);
}
}
//Some stack allocation issues. code around BoardPlayerGetCurr is incorrect too
static void DrawSpaces(ModelData *model, Mtx matrix)
{
s32 i;
Vec player_pos;
Vec target;
Vec pos;
Mtx lookat, final, rot_x, rot_y, rot_z, scale;
Mtx44 proj;
BoardCameraData *camera;
if(!spaceDrawF) {
return;
}
spaceDrawCnt = 0;
camera = &boardCamera;
BoardCameraPosGet(&pos);
BoardCameraTargetGet(&target);
MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far);
GXSetProjection(proj, GX_PERSPECTIVE);
MTXLookAt(lookat, &pos, &camera->up, &target);
GXSetViewport(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far);
GXSetScissor(camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h);
{
GXColor color = { 0xFF, 0xFF, 0xFF, 0xFF };
BoardSpace *space_curr;
BoardSpace *space_hilite;
PlayerState *player;
PlayerState *player_temp;
s16 player_mdl;
float y_dist;
s32 space_img;
u16 space_type;
float uv_x, uv_y, uv_size;
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXInvalidateTexAll();
GXLoadTexObj(&spaceTex, GX_TEXMAP0);
GXSetNumTexGens(1);
GXSetNumTevStages(1);
GXSetTevColor(GX_TEVREG0, color);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE);
GXSetNumChans(1);
GXSetChanAmbColor(GX_COLOR0A0, color);
GXSetChanMatColor(GX_COLOR0A0, color);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 1, GX_DF_CLAMP, GX_AF_SPOT);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
GXSetCullMode(GX_CULL_BACK);
player = player_temp = BoardPlayerGetCurr();
BoardPlayerPosGet(GWSystem.player_curr, &player_pos);
player_mdl = BoardModelIDGet(BoardPlayerModelGetCurr());
space_curr = &spaceData[0][0];
space_hilite = NULL;
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
for(i=0; i<spaceCnt[0]; i++, space_curr++) {
if(space_curr->type == 0) {
continue;
}
if(!BoardCameraCullCheck(&space_curr->pos, 200.0f) || (space_curr->flag & spaceAttr[0])) {
continue;
}
if(!space_hilite) {
if(player_pos.x > space_curr->pos.x-100.0f
&& player_pos.z > space_curr->pos.z-100.0f
&& player_pos.x < space_curr->pos.x+100.0f
&& player_pos.z < space_curr->pos.z+100.0f) {
if(player_pos.y-space_curr->pos.y < 0.0f) {
y_dist = -(player_pos.y-space_curr->pos.y);
} else {
y_dist = player_pos.y-space_curr->pos.y;
}
if(y_dist < 10.0f) {
space_hilite = space_curr;
}
}
}
space_type = space_curr->type;
space_img = spaceImgIdx[space_type]-1;
uv_x = (float)(space_img%4)/4.0f;
uv_y = (float)(space_img/4)/4.0f;
uv_size = 63.0f/256.0f;
MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y));
MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z));
MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x+90.0f));
MTXTrans(final, space_curr->pos.x, 3.0f+space_curr->pos.y, space_curr->pos.z);
MTXConcat(rot_x, rot_y, rot_y);
MTXConcat(rot_y, rot_z, rot_z);
MTXConcat(final, rot_z, final);
MTXConcat(lookat, final, final);
GXLoadPosMtxImm(final, GX_PNMTX0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-100, -100, 0);
GXTexCoord2f32(uv_x, uv_y);
GXPosition3f32(100, -100, 0);
GXTexCoord2f32(uv_x+uv_size, uv_y);
GXPosition3f32(100, 100, 0);
GXTexCoord2f32(uv_x+uv_size, uv_y+uv_size+(1.5f/256.0f));
GXPosition3f32(-100, 100, 0);
GXTexCoord2f32(uv_x, uv_y+uv_size+(1.5f/256.0f));
GXEnd();
spaceDrawCnt++;
}
if(space_hilite) {
space_curr = space_hilite;
space_type = space_curr->type;
if(player->show_next && space_type != 0 && (space_img = spaceHiliteImgIdx[space_type]) >= 0) {
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
GXLoadTexObj(&spaceHiliteTex, GX_TEXMAP0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP);
uv_x = (float)(space_img%4)/4.0f;
uv_y = (float)(space_img/4)/4.0f;
uv_size = 63.0f/256.0f;
MTXScale(scale, 1.5f, 1.5f, 1.5f);
MTXRotRad(rot_z, 'z', MTXDegToRad(space_curr->rot.y));
MTXRotRad(rot_y, 'y', MTXDegToRad(space_curr->rot.z));
MTXRotRad(rot_x, 'x', MTXDegToRad(space_curr->rot.x+90.0f));
MTXTrans(final, space_curr->pos.x, 3.5f+space_curr->pos.y, space_curr->pos.z);
MTXConcat(scale, rot_x, rot_x);
MTXConcat(rot_x, rot_y, rot_y);
MTXConcat(rot_y, rot_z, rot_z);
MTXConcat(final, rot_z, final);
MTXConcat(lookat, final, final);
GXLoadPosMtxImm(final, GX_PNMTX0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-100, -100, 0);
GXTexCoord2f32(uv_x, uv_y);
GXPosition3f32(100, -100, 0);
GXTexCoord2f32(uv_x+uv_size, uv_y);
GXPosition3f32(100, 100, 0);
GXTexCoord2f32(uv_x+uv_size, uv_y+uv_size);
GXPosition3f32(-100, 100, 0);
GXTexCoord2f32(uv_x, uv_y+uv_size);
GXEnd();
spaceDrawCnt++;
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
return;
}
}
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
}
}
s32 BoardSpaceRead(s32 layer, s32 data_num)
{
int j;
int i;
BoardSpace *space;
u8 *data;
s32 star_idx;
u8 *data_base;
data_base = data = HuDataSelHeapReadNum(data_num, MEMORY_DEFAULT_NUM, HEAP_DATA);
spaceCnt[layer] = *(u32 *)data;
data += sizeof(u32);
space = &spaceData[layer][0];
for(i=0; i<spaceCnt[layer]; i++, space++) {
memcpy(&space->pos, data, sizeof(Vec));
data += sizeof(Vec);
memcpy(&space->rot, data, sizeof(Vec));
data += sizeof(Vec);
memcpy(&space->scale, data, sizeof(Vec));
data += sizeof(Vec);
space->flag = *(u32 *)data;
data += sizeof(u32);
space->type = *(u16 *)data;
data += sizeof(u16);
space->link_cnt = *(u16 *)data;
data += sizeof(u16);
for(j=0; j<space->link_cnt; j++) {
space->link[j] = (*(u16 *)data)+1;
data += sizeof(u16);
}
if(space->type == 8) {
space->type = 1;
star_idx = (space->flag & 0x70000) >> 16;
boardSpaceStarTbl[star_idx] = i+1;
}
}
HuDataClose(data_base);
return 0;
}
void BoardSpaceCameraSet(u16 mask)
{
Hu3DModelCameraSet(spaceDrawMdl, mask);
}
void BoardSpaceBlockPosSet(void)
{
BoardSpace *space;
s32 block_pos;
begin:
if(boardTutorialBlockF) {
GWSystem.block_pos = boardTutorialBlockPos;
return;
}
block_pos = BoardRandMod(spaceCnt[0])+1;
if(block_pos == GWSystem.block_pos) {
goto begin;
}
space = BoardSpaceGet(0, block_pos);
if(space->type != 1) {
goto begin;
}
GWSystem.block_pos = block_pos;
}
void BoardSpaceInit(s32 data_num)
{
s32 board;
BoardJunctionMaskZero();
memset(spaceData, 0, sizeof(spaceData));
memset(spaceAttr, 0, sizeof(spaceAttr));
lbl_801D3FC4[0] = lbl_801D3FC4[1] = lbl_801D3FC4[2] = lbl_801D3FC4[3] = -1;
spaceDrawF = 0;
board = BoardCurrGet();
{
AnimBmpData *bmp;
AnimData *data;
void *data_base;
s32 size;
data = data_base = HuDataSelHeapReadNum(MAKE_DATA_NUM(DATADIR_BOARD, 29), MEMORY_DEFAULT_NUM, HEAP_DATA);
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
data->pat = (void *)((u32)data_base+(u32)data->pat);
data->bank = (void *)((u32)data_base+(u32)data->bank);
bmp = data->bmp;
size = bmp->sizeX;
spaceHiliteTexFmt = -1;
switch(bmp->dataFmt) {
case SPRITE_BMP_RGBA8:
spaceHiliteTexFmt = GX_TF_RGBA8;
break;
case SPRITE_BMP_RGB5A3_DUPE:
spaceHiliteTexFmt = GX_TF_RGB5A3;
break;
case SPRITE_BMP_CMPR:
spaceHiliteTexFmt = GX_TF_CMPR;
break;
}
spaceHiliteTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM);
bmp->data = (void *)((u32)bmp->data+(u32)data_base);
memcpy(spaceHiliteTexData, bmp->data, bmp->dataSize);
HuDataClose(data_base);
GXInitTexObj(&spaceHiliteTex, spaceHiliteTexData, size, size, spaceHiliteTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&spaceHiliteTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1);
}
{
AnimBmpData *bmp;
AnimData *data;
void *data_base;
s32 size;
data = data_base = HuDataSelHeapReadNum(MAKE_DATA_NUM(DATADIR_BOARD, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
data->pat = (void *)((u32)data_base+(u32)data->pat);
data->bank = (void *)((u32)data_base+(u32)data->bank);
bmp = data->bmp;
size = bmp->sizeX;
spaceTexFmt = -1;
switch(bmp->dataFmt) {
case SPRITE_BMP_RGBA8:
spaceTexFmt = GX_TF_RGBA8;
break;
case SPRITE_BMP_RGB5A3_DUPE:
spaceTexFmt = GX_TF_RGB5A3;
break;
case SPRITE_BMP_CMPR:
spaceTexFmt = GX_TF_CMPR;
break;
}
spaceTexData = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM);
bmp->data = (void *)((u32)bmp->data+(u32)data_base);
memcpy(spaceTexData, bmp->data, bmp->dataSize);
HuDataClose(data_base);
GXInitTexObj(&spaceTex, spaceTexData, size, size, spaceTexFmt, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&spaceTex, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1);
}
BoardSpaceRead(0, data_num);
spaceDrawMdl = Hu3DHookFuncCreate(DrawSpaces);
if(!BoardStartCheck() && !_CheckFlag(FLAG_ID_MAKE(1, 1))) {
BoardSpaceBlockPosSet();
GWSystem.star_total = 0;
GWSystem.star_flag = 0;
}
if(BoardCurrGet() != 7 && BoardCurrGet() != 8) {
starPlatMdl = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 6), NULL, 0);
BoardModelMotionStart(starPlatMdl, 0, 0x40000001);
BoardModelVisibilitySet(starPlatMdl, 0);
if(_CheckFlag(FLAG_ID_MAKE(1, 1))) {
Vec pos;
Vec rot;
s16 space;
BoardModelVisibilitySet(starPlatMdl, 1);
GWSystem.star_flag |= (u8)(1 << GWSystem.star_pos);
BoardSpaceTypeSet(0, boardSpaceStarTbl[GWSystem.star_pos], 8);
{
int space;
BoardSpace *space_plat;
space = BoardSpaceLinkFlagSearch(0, BoardSpaceStarGetCurr(), 0x04000000);
BoardSpacePosGet(0, space, &pos);
BoardModelPosSetV(StarPlatGetMdl(), &pos);
BoardSpaceRotGet(0, space, &rot);
BoardModelRotYSet(StarPlatGetMdl(), rot.y);
}
}
}
spaceDrawF = 1;
}
void BoardSpaceDestroy(void)
{
if(spaceDrawMdl >= 0) {
Hu3DModelKill(spaceDrawMdl);
spaceDrawMdl = -1;
}
if(spaceHiliteTexData) {
HuMemDirectFree(spaceHiliteTexData);
spaceHiliteTexData = NULL;
}
if(spaceTexData) {
HuMemDirectFree(spaceTexData);
spaceTexData = NULL;
}
} }

View file

@ -3,8 +3,8 @@
#include "game/board/player.h" #include "game/board/player.h"
#include "game/wipe.h" #include "game/wipe.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "game/hsfex.h"
#include "board_unsplit.h" #include "board_unsplit.h"
#include "unsplit.h"
#include "math.h" #include "math.h"
static void WarpInit(s32); static void WarpInit(s32);
@ -15,10 +15,10 @@ static void WarpImpact(s32);
extern void omVibrate(s16, s16, s16, s16); extern void omVibrate(s16, s16, s16, s16);
extern void fn_800816CC(s32, s32); extern void BoardCharWheelInit(s32, s32);
extern void fn_80081884(f32); extern void BoardCharWheelSpeedSet(f32);
extern void fn_8008181C(void); extern void BoardCharWheelWait(void);
extern s32 fn_8008186C(void); extern s32 BoardCharWheelResultGet(void);
extern f32 BoardModelMotionTimeGet(s16); extern f32 BoardModelMotionTimeGet(s16);
extern void BoardModelHookReset(s16); extern void BoardModelHookReset(s16);
extern s32 BoardModelHookSet(s16, char*, s16); extern s32 BoardModelHookSet(s16, char*, s16);
@ -46,7 +46,7 @@ static s8 warpImpactPlayer[4] = {-1, -1, -1, -1};
static void WarpProcess(void); static void WarpProcess(void);
static void WarpKill(void); static void WarpKill(void);
void BoardWarpExec(s32 player, s16 space) { void BoardWarpExec(s32 player, s32 space) {
omVibrate(player, 12, 4, 2); omVibrate(player, 12, 4, 2);
warpProcess = HuPrcChildCreate(WarpProcess, 8195, 14336, 0, boardMainProc); warpProcess = HuPrcChildCreate(WarpProcess, 8195, 14336, 0, boardMainProc);
HuPrcDestructorSet2(warpProcess, WarpKill); HuPrcDestructorSet2(warpProcess, WarpKill);
@ -66,9 +66,9 @@ void WarpProcess(void) {
HuAudFXPlay(842); HuAudFXPlay(842);
BoardCameraViewSet(3); BoardCameraViewSet(3);
BoardCameraMotionWait(); BoardCameraMotionWait();
BoardPlayerAnimBlendSet(curr_player, 0, 15); BoardPlayerMotBlendSet(curr_player, 0, 15);
while (BoardPlayerAnimBlendCheck(curr_player) == 0) { while (BoardPlayerMotBlendCheck(curr_player) == 0) {
HuPrcVSleep(); HuPrcVSleep();
} }
@ -77,10 +77,10 @@ void WarpProcess(void) {
BoardTutorialHookExec(18, 0); BoardTutorialHookExec(18, 0);
boardTutorialData[0] = 0; boardTutorialData[0] = 0;
} }
fn_800816CC(curr_player, 3); BoardCharWheelInit(curr_player, 3);
fn_80081884(18.0f); BoardCharWheelSpeedSet(18.0f);
fn_8008181C(); BoardCharWheelWait();
warpTarget = fn_8008186C(); warpTarget = BoardCharWheelResultGet();
BoardCameraViewSet(1); BoardCameraViewSet(1);
BoardCameraMotionWait(); BoardCameraMotionWait();
WarpInit(curr_player); WarpInit(curr_player);
@ -232,7 +232,7 @@ static void WarpImpact(s32 player) {
BoardModelMotionStart(warpImpactMdl, 0, 0x40000001); BoardModelMotionStart(warpImpactMdl, 0, 0x40000001);
for (i = 0; i < warpImpactCnt; i++) { for (i = 0; i < warpImpactCnt; i++) {
s32 player = warpImpactPlayer[i]; s16 player = warpImpactPlayer[i];
omVibrate(player, 0xC, 4, 2); omVibrate(player, 0xC, 4, 2);
BoardPlayerMotionStart(player, 6, 0x40000001); BoardPlayerMotionStart(player, 6, 0x40000001);
} }

View file

@ -182,7 +182,6 @@ void BoardWinPause(void) {
void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) { void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) {
s32 i; s32 i;
s32 speed;
winPosIdx = pos; winPosIdx = pos;
@ -213,13 +212,11 @@ void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice) {
if (GWSystem.mess_speed == 3) { if (GWSystem.mess_speed == 3) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;
} }
speed = GWSystem.mess_speed; BoardWinSpeedSet(GWMessSpeedGet());
BoardWinSpeedSet(speed);
BoardWinPlayerSet(GWSystem.player_curr); BoardWinPlayerSet(GWSystem.player_curr);
} }
void BoardWinCreate(s32 pos, u32 mess, s32 portrait) { void BoardWinCreate(s32 pos, u32 mess, s32 portrait) {
s32 speed;
s32 i; s32 i;
winPosIdx = pos; winPosIdx = pos;
@ -250,8 +247,7 @@ void BoardWinCreate(s32 pos, u32 mess, s32 portrait) {
if (GWSystem.mess_speed == 3) { if (GWSystem.mess_speed == 3) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;
} }
speed = GWSystem.mess_speed; BoardWinSpeedSet(GWMessSpeedGet());
BoardWinSpeedSet(speed);
BoardWinPlayerSet(GWSystem.player_curr); BoardWinPlayerSet(GWSystem.player_curr);
autoPickF = 0; autoPickF = 0;
} }
@ -281,14 +277,14 @@ void BoardWinKill(void) {
} }
} }
void BoardWinSetAttr(s32 attr) { void BoardWinAttrSet(s32 attr) {
winAttr |= attr; winAttr |= attr;
if (windowID >= 0) { if (windowID >= 0) {
HuWinAttrSet(windowID, winAttr); HuWinAttrSet(windowID, winAttr);
} }
} }
void BoardWinResetAttr(s32 attr) { void BoardWinAttrReset(s32 attr) {
winAttr &= ~attr; winAttr &= ~attr;
if (windowID >= 0) { if (windowID >= 0) {
HuWinAttrSet(windowID, winAttr); HuWinAttrSet(windowID, winAttr);
@ -381,7 +377,7 @@ void BoardWinPlayerSet(s32 player) {
void BoardWinStartComKeySet(void) { void BoardWinStartComKeySet(void) {
s32 comkey[4]; s32 comkey[4];
s32 speed; s32 delay;
s32 waitnum; s32 waitnum;
s32 i; s32 i;
@ -410,12 +406,12 @@ void BoardWinStartComKeySet(void) {
} }
} }
} }
speed = GWMessSpeedGet(); delay = GWMessDelayGet();
waitnum = HuWinKeyWaitNumGet(winMess); waitnum = HuWinKeyWaitNumGet(winMess);
if (waitnum != 0) { if (waitnum != 0) {
HuWinComKeyReset(); HuWinComKeyReset();
for (i = 0; i < waitnum; i++) { for (i = 0; i < waitnum; i++) {
HuWinComKeyWait(comkey[0], comkey[1], comkey[2], comkey[3], speed); HuWinComKeyWait(comkey[0], comkey[1], comkey[2], comkey[3], delay);
} }
} }
} }

145
src/game/esprite.c Executable file
View file

@ -0,0 +1,145 @@
#include "game/esprite.h"
#include "game/data.h"
#include "game/sprite.h"
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ u16 unk04;
/* 0x06 */ char unk06[2];
/* 0x08 */ AnimData *unk08;
} UnkEspriteStruct01; // Size 0xC
s16 esprite[0x180][2];
UnkEspriteStruct01 espanim[0x180];
static s16 gid;
void espInit(void) {
s32 i;
gid = HuSprGrpCreate(0x180);
for (i = 0; i < 0x180; i++) {
esprite[i][0] = i;
esprite[i][1] = -1;
}
for (i = 0; i < 0x180; i++) {
espanim[i].unk04 = 0;
}
}
s16 espEntry(s32 arg0, s16 arg1, s16 arg2) {
UnkEspriteStruct01 *var_r30;
UnkEspriteStruct01 *var_r31;
s16 (*var_r29)[2];
void *temp_r26;
s16 temp_r25;
s16 var_r28;
s32 var_r27;
var_r29 = esprite;
for (var_r28 = 0; var_r28 < 0x180; var_r29++, var_r28++) {
if (var_r29[0][1] == -1) {
break;
}
}
if (var_r28 == 0x180) {
return -1;
}
var_r31 = espanim;
var_r30 = NULL;
for (var_r27 = 0; var_r27 < 0x180; var_r31++, var_r27++) {
if (var_r31->unk04 != 0) {
if (var_r31->unk00 == arg0) {
var_r30 = NULL;
break;
}
} else if (var_r30 == NULL) {
var_r30 = var_r31;
}
}
if (var_r27 == 0x180) {
if (var_r30 == NULL) {
return -1;
}
temp_r26 = HuDataSelHeapReadNum(arg0, MEMORY_DEFAULT_NUM, HEAP_DATA);
if (temp_r26 == NULL) {
return -1;
}
var_r30->unk00 = arg0;
var_r30->unk08 = HuSprAnimRead(temp_r26);
var_r31 = var_r30;
}
temp_r25 = HuSprCreate(var_r31->unk08, arg1, arg2);
if (temp_r25 == -1) {
if (var_r30 != NULL) {
HuSprAnimKill(var_r31->unk08);
}
return -1;
}
var_r31->unk04++;
var_r29[0][1] = var_r31 - espanim;
HuSprGrpMemberSet(gid, var_r29[0][0], temp_r25);
return var_r28;
}
void espKill(s16 arg0) {
HuSprGrpMemberKill(gid, esprite[arg0][0]);
espanim[esprite[arg0][1]].unk04--;
esprite[arg0][1] = -1;
}
s16 espGrpIDGet(void) {
return gid;
}
void espDispOn(s16 arg0) {
HuSprAttrReset(gid, esprite[arg0][0], 4);
}
void espDispOff(s16 arg0) {
HuSprAttrSet(gid, esprite[arg0][0], 4);
}
void espAttrSet(s16 arg0, u16 arg1) {
HuSprAttrSet(gid, esprite[arg0][0], arg1);
}
void espAttrReset(s16 arg0, u16 arg1) {
HuSprAttrReset(gid, esprite[arg0][0], arg1);
}
void espPosSet(s16 arg0, float arg1, float arg2) {
HuSprPosSet(gid, esprite[arg0][0], arg1, arg2);
}
void espScaleSet(s16 arg0, float arg1, float arg2) {
HuSprScaleSet(gid, esprite[arg0][0], arg1, arg2);
}
void espZRotSet(s16 arg0, float arg1) {
HuSprZRotSet(gid, esprite[arg0][0], arg1);
}
void espTPLvlSet(s16 arg0, float arg1) {
HuSprTPLvlSet(gid, esprite[arg0][0], arg1);
}
void espColorSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3) {
HuSprColorSet(gid, esprite[arg0][0], arg1, arg2, arg3);
}
void espSpeedSet(s16 arg0, float arg1) {
HuSprSpeedSet(gid, esprite[arg0][0], arg1);
}
void espBankSet(s16 arg0, s16 arg1) {
HuSprBankSet(gid, esprite[arg0][0], arg1);
}
void espDrawNoSet(s16 arg0, s16 arg1) {
HuSprDrawNoSet(gid, esprite[arg0][0], arg1);
}
void espPriSet(s16 arg0, s16 arg1) {
HuSprPriSet(gid, esprite[arg0][0], arg1);
}

View file

@ -1,4 +1,4 @@
#include "common.h" #include "game/gamework_data.h"
#include "stdarg.h" #include "stdarg.h"
#include "stdio.h" #include "stdio.h"

View file

@ -2,26 +2,25 @@
static u32 frand_seed; static u32 frand_seed;
static inline u32 frandom(void) static inline u32 frandom(u32 param)
{ {
u32 rand = frand_seed;
s32 rand2, rand3; s32 rand2, rand3;
if (rand == 0) { if (param == 0) {
rand = rand8(); param = rand8();
rand = rand ^ (s64)OSGetTime(); param = param ^ (s64)OSGetTime();
rand ^= 0xD826BC89; param ^= 0xD826BC89;
} }
rand2 = rand / (u32)0x1F31D; rand2 = param / (u32)0x1F31D;
rand3 = rand - (rand2 * 0x1F31D); rand3 = param - (rand2 * 0x1F31D);
rand = rand2 * 0xB14; param = rand2 * 0xB14;
rand = rand - rand3 * 0x41A7; param = param - rand3 * 0x41A7;
return rand; return param;
} }
u32 frand(void) { u32 frand(void) {
return frand_seed = frandom(); return frand_seed = frandom(frand_seed);
} }
f32 frandf(void) { f32 frandf(void) {
@ -34,7 +33,7 @@ f32 frandf(void) {
u32 frandmod(u32 arg0) { u32 frandmod(u32 arg0) {
u32 ret; u32 ret;
frand_seed = frandom(); frand_seed = frandom(frand_seed);
ret = (frand_seed & 0x7FFFFFFF)%arg0; ret = (frand_seed & 0x7FFFFFFF)%arg0;
return ret; return ret;
} }

View file

@ -134,7 +134,7 @@ void GWGameStatReset(void)
ResetBoardSettings(); ResetBoardSettings();
} }
s32 GWMessSpeedGet(void) s32 GWMessDelayGet(void)
{ {
if(GWSystem.mess_delay > 48) { if(GWSystem.mess_delay > 48) {
GWSystem.mess_speed = 1; GWSystem.mess_speed = 1;

Some files were not shown because too many files have changed in this diff Show more