Merge branch 'main' of https://github.com/abnormalhare/mp4-dtk
This commit is contained in:
commit
63d8ae0a29
116 changed files with 21323 additions and 1302 deletions
|
|
@ -3,7 +3,8 @@
|
||||||
{
|
{
|
||||||
"name": "Linux",
|
"name": "Linux",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"${workspaceFolder}/include/**"
|
"${workspaceFolder}/include/**",
|
||||||
|
"${workspaceFolder}/build/GMPE01_00/include/**"
|
||||||
],
|
],
|
||||||
"cStandard": "c99",
|
"cStandard": "c99",
|
||||||
"cppStandard": "c++98",
|
"cppStandard": "c++98",
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,29 @@ 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/m408Dll/main.c:
|
||||||
|
.text start:0x000000A0 end:0x00008958
|
||||||
|
.rodata start:0x00000000 end:0x000002C8
|
||||||
|
.data start:0x00000000 end:0x00000198
|
||||||
|
.bss start:0x00000000 end:0x00000080
|
||||||
|
|
||||||
|
REL/m408Dll/camera.c:
|
||||||
|
.text start:0x00008958 end:0x0000C44C
|
||||||
|
.rodata start:0x000002C8 end:0x000004C0
|
||||||
|
.bss start:0x00000080 end:0x00000118
|
||||||
|
|
||||||
|
REL/m408Dll/stage.c:
|
||||||
|
.text start:0x0000C44C end:0x000118D0
|
||||||
|
.rodata start:0x000004C0 end:0x000006C0
|
||||||
|
.data start:0x00000198 end:0x000001A0
|
||||||
|
.bss start:0x00000118 end:0x00000168
|
||||||
|
|
||||||
|
REL/m408Dll/object.c:
|
||||||
|
.text start:0x000118D0 end:0x000163C8
|
||||||
|
.rodata start:0x000006C0 end:0x000007F4
|
||||||
|
.data start:0x000001A0 end:0x00000574
|
||||||
|
.bss start:0x00000168 end:0x000075AC
|
||||||
|
|
|
||||||
|
|
@ -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:0x47C
|
ModuleProlog = .text:0x000000A0; // type:function size:0x47C
|
||||||
fn_1_51C = .text:0x0000051C; // type:function size:0x50
|
fn_1_51C = .text:0x0000051C; // type:function size:0x50
|
||||||
fn_1_56C = .text:0x0000056C; // type:function size:0x438
|
fn_1_56C = .text:0x0000056C; // type:function size:0x438
|
||||||
fn_1_9A4 = .text:0x000009A4; // type:function size:0x4C
|
fn_1_9A4 = .text:0x000009A4; // type:function size:0x4C
|
||||||
|
|
@ -465,7 +465,9 @@ lbl_1_rodata_7F0 = .rodata:0x000007F0; // type:object size:0x4 data:float
|
||||||
lbl_1_data_0 = .data:0x00000000; // type:object size:0x20
|
lbl_1_data_0 = .data:0x00000000; // type:object size:0x20
|
||||||
lbl_1_data_20 = .data:0x00000020; // type:object size:0xC
|
lbl_1_data_20 = .data:0x00000020; // type:object size:0xC
|
||||||
lbl_1_data_2C = .data:0x0000002C; // type:object size:0xC
|
lbl_1_data_2C = .data:0x0000002C; // type:object size:0xC
|
||||||
lbl_1_data_38 = .data:0x00000038; // type:object size:0x20
|
lbl_1_data_38 = .data:0x00000038; // type:object size:0x4
|
||||||
|
lbl_1_data_3C = .data:0x0000003C; // type:object size:0x18
|
||||||
|
lbl_1_data_54 = .data:0x00000054; // type:object size:0x4
|
||||||
lbl_1_data_58 = .data:0x00000058; // type:object size:0xC
|
lbl_1_data_58 = .data:0x00000058; // type:object size:0xC
|
||||||
lbl_1_data_64 = .data:0x00000064; // type:object size:0xC
|
lbl_1_data_64 = .data:0x00000064; // type:object size:0xC
|
||||||
lbl_1_data_70 = .data:0x00000070; // type:object size:0xC
|
lbl_1_data_70 = .data:0x00000070; // type:object size:0xC
|
||||||
|
|
@ -478,7 +480,8 @@ lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x28
|
||||||
lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x20
|
lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x20
|
||||||
lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1C
|
lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1C
|
||||||
lbl_1_data_104 = .data:0x00000104; // type:object size:0x40
|
lbl_1_data_104 = .data:0x00000104; // type:object size:0x40
|
||||||
lbl_1_data_144 = .data:0x00000144; // type:object size:0x58
|
lbl_1_data_144 = .data:0x00000144; // type:object size:0x54
|
||||||
|
lbl_1_data_198 = .data:0x00000198; // type:object size:0x4
|
||||||
lbl_1_data_19C = .data:0x0000019C; // type:object size:0x4 data:4byte
|
lbl_1_data_19C = .data:0x0000019C; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x24
|
lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x24
|
||||||
lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x24
|
lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x24
|
||||||
|
|
@ -516,7 +519,7 @@ lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x6 data:2byte
|
||||||
lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte
|
lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte
|
lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte
|
lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x8 data:4byte
|
lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte
|
lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte
|
lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_88 = .bss:0x00000088; // type:object size:0xC
|
lbl_1_bss_88 = .bss:0x00000088; // type:object size:0xC
|
||||||
|
|
@ -526,7 +529,7 @@ lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x50 data:4byte
|
||||||
lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0xC data:float
|
lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0xC data:float
|
||||||
lbl_1_bss_100 = .bss:0x00000100; // type:object size:0xC data:float
|
lbl_1_bss_100 = .bss:0x00000100; // type:object size:0xC data:float
|
||||||
lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte
|
lbl_1_bss_10C = .bss:0x0000010C; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x8 data:4byte
|
lbl_1_bss_110 = .bss:0x00000110; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x2 data:2byte
|
lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte
|
lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x8 data:4byte
|
lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x8 data:4byte
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,22 @@ 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/m409Dll/main.c:
|
||||||
|
.text start:0x000000A0 end:0x000067E0
|
||||||
|
.rodata start:0x00000000 end:0x000001A0
|
||||||
|
.data start:0x00000000 end:0x00000138
|
||||||
|
.bss start:0x00000000 end:0x000000F0
|
||||||
|
|
||||||
|
REL/m409Dll/player.c:
|
||||||
|
.text start:0x000067E0 end:0x0000BF88
|
||||||
|
.rodata start:0x000001A0 end:0x00000430
|
||||||
|
.data start:0x00000138 end:0x000001F0
|
||||||
|
.bss start:0x000000F0 end:0x000003B0
|
||||||
|
|
||||||
|
REL/m409Dll/cursor.c:
|
||||||
|
.text start:0x0000BF88 end:0x0000F588
|
||||||
|
.rodata start:0x00000430 end:0x00000488
|
||||||
|
|
|
||||||
|
|
@ -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:0x394
|
ModuleProlog = .text:0x000000A0; // type:function size:0x394
|
||||||
fn_1_434 = .text:0x00000434; // type:function size:0xA8
|
fn_1_434 = .text:0x00000434; // type:function size:0xA8
|
||||||
fn_1_4DC = .text:0x000004DC; // type:function size:0x48
|
fn_1_4DC = .text:0x000004DC; // type:function size:0x48
|
||||||
fn_1_524 = .text:0x00000524; // type:function size:0x65C
|
fn_1_524 = .text:0x00000524; // type:function size:0x65C
|
||||||
|
|
@ -294,7 +294,8 @@ lbl_1_data_CD = .data:0x000000CD; // type:object size:0x9 data:string
|
||||||
lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x3 data:string
|
lbl_1_data_D6 = .data:0x000000D6; // type:object size:0x3 data:string
|
||||||
lbl_1_data_D9 = .data:0x000000D9; // type:object size:0x10 data:string
|
lbl_1_data_D9 = .data:0x000000D9; // type:object size:0x10 data:string
|
||||||
lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x26 data:string
|
lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x26 data:string
|
||||||
lbl_1_data_10F = .data:0x0000010F; // type:object size:0x2D
|
lbl_1_data_10F = .data:0x0000010F; // type:object size:0x24 data:string
|
||||||
|
lbl_1_data_138 = .data:0x00000138; // type:object size:0x4
|
||||||
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x1C
|
lbl_1_data_13C = .data:0x0000013C; // type:object size:0x1C
|
||||||
lbl_1_data_158 = .data:0x00000158; // type:object size:0x20
|
lbl_1_data_158 = .data:0x00000158; // type:object size:0x20
|
||||||
lbl_1_data_178 = .data:0x00000178; // type:object size:0x40
|
lbl_1_data_178 = .data:0x00000178; // type:object size:0x40
|
||||||
|
|
@ -321,7 +322,7 @@ lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x9C data:2byte
|
||||||
lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte
|
lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte
|
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 data:2byte
|
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x8 data:4byte
|
lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x14 data:4byte
|
lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x14 data:4byte
|
||||||
lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x2 data:2byte
|
lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_106 = .bss:0x00000106; // type:object size:0x2 data:2byte
|
lbl_1_bss_106 = .bss:0x00000106; // type:object size:0x2 data:2byte
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,28 @@ 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/m410Dll/main.c:
|
||||||
|
.text start:0x000000A0 end:0x000031A4
|
||||||
|
.rodata start:0x00000000 end:0x000000D0
|
||||||
|
.data start:0x00000000 end:0x000000D8
|
||||||
|
.bss start:0x00000000 end:0x00000030
|
||||||
|
|
||||||
|
REL/m410Dll/stage.c:
|
||||||
|
.text start:0x000031A4 end:0x000033A8
|
||||||
|
.rodata start:0x000000D0 end:0x000000D8
|
||||||
|
|
||||||
|
REL/m410Dll/game.c:
|
||||||
|
.text start:0x000033A8 end:0x00007E30
|
||||||
|
.rodata start:0x000000D8 end:0x000001E8
|
||||||
|
.data start:0x000000D8 end:0x00000130
|
||||||
|
.bss start:0x00000030 end:0x00000060
|
||||||
|
|
||||||
|
REL/m410Dll/player.c:
|
||||||
|
.text start:0x00007E30 end:0x0000B784
|
||||||
|
.rodata start:0x000001E8 end:0x000003A8
|
||||||
|
.data start:0x00000130 end:0x000002B4
|
||||||
|
.bss start:0x00000060 end:0x00000078
|
||||||
|
|
|
||||||
|
|
@ -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:0x444
|
ModuleProlog = .text:0x000000A0; // type:function size:0x444
|
||||||
fn_1_4E4 = .text:0x000004E4; // type:function size:0xC4
|
fn_1_4E4 = .text:0x000004E4; // type:function size:0xC4
|
||||||
fn_1_5A8 = .text:0x000005A8; // type:function size:0x94
|
fn_1_5A8 = .text:0x000005A8; // type:function size:0x94
|
||||||
fn_1_63C = .text:0x0000063C; // type:function size:0x16C
|
fn_1_63C = .text:0x0000063C; // type:function size:0x16C
|
||||||
|
|
@ -278,7 +278,7 @@ lbl_1_data_DC = .data:0x000000DC; // type:object size:0x20
|
||||||
lbl_1_data_FC = .data:0x000000FC; // type:object size:0x8
|
lbl_1_data_FC = .data:0x000000FC; // type:object size:0x8
|
||||||
lbl_1_data_104 = .data:0x00000104; // type:object size:0xC
|
lbl_1_data_104 = .data:0x00000104; // type:object size:0xC
|
||||||
lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte
|
lbl_1_data_110 = .data:0x00000110; // type:object size:0x4 data:4byte
|
||||||
lbl_1_data_114 = .data:0x00000114; // type:object size:0x1C
|
lbl_1_data_114 = .data:0x00000114; // type:object size:0x16 data:string
|
||||||
lbl_1_data_130 = .data:0x00000130; // type:object size:0x10
|
lbl_1_data_130 = .data:0x00000130; // type:object size:0x10
|
||||||
lbl_1_data_140 = .data:0x00000140; // type:object size:0x20
|
lbl_1_data_140 = .data:0x00000140; // type:object size:0x20
|
||||||
lbl_1_data_160 = .data:0x00000160; // type:object size:0xC
|
lbl_1_data_160 = .data:0x00000160; // type:object size:0xC
|
||||||
|
|
@ -299,7 +299,7 @@ lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x6 data:2byte
|
||||||
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte
|
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte
|
||||||
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:0x4 data:4byte
|
lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:4byte
|
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte
|
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte
|
lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte
|
lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte
|
||||||
|
|
|
||||||
|
|
@ -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/m411Dll/main.c:
|
||||||
|
.text start:0x000000A0 end:0x0000B8A8
|
||||||
|
.rodata start:0x00000000 end:0x000002F4
|
||||||
|
.data start:0x00000000 end:0x0000033D
|
||||||
|
.bss start:0x00000000 end:0x00000EA2
|
||||||
|
|
|
||||||
|
|
@ -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:0xDE0
|
ModuleProlog = .text:0x000000A0; // type:function size:0xDE0
|
||||||
fn_1_E80 = .text:0x00000E80; // type:function size:0x10C
|
fn_1_E80 = .text:0x00000E80; // type:function size:0x10C
|
||||||
fn_1_F8C = .text:0x00000F8C; // type:function size:0xE8
|
fn_1_F8C = .text:0x00000F8C; // type:function size:0xE8
|
||||||
fn_1_1074 = .text:0x00001074; // type:function size:0x424
|
fn_1_1074 = .text:0x00001074; // type:function size:0x424
|
||||||
|
|
|
||||||
|
|
@ -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/m450Dll/main.c:
|
||||||
|
.text start:0x00000000 end:0x000299BC
|
||||||
|
.rodata start:0x00000000 end:0x00000398
|
||||||
|
.data start:0x00000000 end:0x000017C4
|
||||||
|
.bss start:0x00000000 end:0x00000364
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,21 @@ 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/modeltestDll/main.c:
|
||||||
|
.text start:0x000000A0 end:0x000034B0
|
||||||
|
.rodata start:0x00000000 end:0x00000130
|
||||||
|
.data start:0x00000000 end:0x00000358
|
||||||
|
.bss start:0x00000000 end:0x000009A8
|
||||||
|
|
||||||
|
REL/modeltestDll/modeltest00.c:
|
||||||
|
.text start:0x000034B0 end:0x00004AC8
|
||||||
|
.rodata start:0x00000130 end:0x000001E0
|
||||||
|
.data start:0x00000358 end:0x00000388
|
||||||
|
.bss start:0x000009A8 end:0x00000A00
|
||||||
|
|
||||||
|
REL/modeltestDll/modeltest01.c:
|
||||||
|
.text start:0x00004AC8 end:0x000086B8
|
||||||
|
.rodata start:0x000001E0 end:0x00000290
|
||||||
|
.data start:0x00000388 end:0x000007AE
|
||||||
|
.bss start:0x00000A00 end:0x00000AC8
|
||||||
|
|
|
||||||
|
|
@ -23,86 +23,86 @@ fn_1_82C8 = .text:0x000082C8; // type:function size:0xEC
|
||||||
fn_1_83B4 = .text:0x000083B4; // type:function size:0x304
|
fn_1_83B4 = .text:0x000083B4; // type:function size:0x304
|
||||||
_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_34 = .rodata:0x00000034; // type:object size:0x4 data:float
|
lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0xC data:4byte
|
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0xC data:4byte
|
||||||
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0xC data:4byte
|
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0xC data:4byte
|
||||||
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:0x4 data:float
|
lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
|
lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
|
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double
|
lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double
|
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
|
lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double
|
lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
|
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 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_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double
|
lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double
|
lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x10 data:2byte
|
lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x10 scope:local data:2byte
|
||||||
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:0x4 data:float
|
lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double
|
lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float
|
lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float
|
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float
|
lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double
|
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double
|
lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double
|
lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float
|
lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double
|
lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float
|
lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float
|
lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float
|
lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float
|
lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float
|
lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float
|
lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float
|
lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float
|
lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float
|
lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float
|
lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float
|
lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float
|
lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float
|
lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float
|
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float
|
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float
|
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float
|
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double
|
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float
|
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double
|
lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double
|
lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double
|
lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double
|
||||||
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float
|
lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0xC data:4byte
|
lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0xC data:4byte
|
||||||
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0xC data:4byte
|
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0xC data:4byte
|
||||||
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float
|
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float
|
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float
|
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
|
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
|
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
|
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
|
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
|
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float
|
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
|
||||||
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC data:4byte
|
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC scope:local data:float
|
||||||
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:4byte
|
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:float
|
||||||
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float
|
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float
|
||||||
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float
|
lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float
|
||||||
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
|
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float
|
||||||
|
|
@ -136,36 +136,37 @@ lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float
|
||||||
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_data_0 = .data:0x00000000; // type:object size:0x20 data:4byte
|
lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 data:4byte
|
||||||
lbl_1_data_20 = .data:0x00000020; // type:object size:0x28 data:string
|
lbl_1_data_20 = .data:0x00000020; // type:object size:0x28 scope:local data:string
|
||||||
lbl_1_data_48 = .data:0x00000048; // type:object size:0x9 data:string
|
lbl_1_data_48 = .data:0x00000048; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_51 = .data:0x00000051; // type:object size:0x9 data:string
|
lbl_1_data_51 = .data:0x00000051; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_5A = .data:0x0000005A; // type:object size:0x9 data:string
|
lbl_1_data_5A = .data:0x0000005A; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_63 = .data:0x00000063; // type:object size:0x9 data:string
|
lbl_1_data_63 = .data:0x00000063; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_6C = .data:0x0000006C; // type:object size:0x9 data:string
|
lbl_1_data_6C = .data:0x0000006C; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_75 = .data:0x00000075; // type:object size:0x9 data:string
|
lbl_1_data_75 = .data:0x00000075; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_7E = .data:0x0000007E; // type:object size:0x9 data:string
|
lbl_1_data_7E = .data:0x0000007E; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_87 = .data:0x00000087; // type:object size:0x9 data:string
|
lbl_1_data_87 = .data:0x00000087; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_90 = .data:0x00000090; // type:object size:0x9 data:string
|
lbl_1_data_90 = .data:0x00000090; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_99 = .data:0x00000099; // type:object size:0x9 data:string
|
lbl_1_data_99 = .data:0x00000099; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_A2 = .data:0x000000A2; // type:object size:0x9 data:string
|
lbl_1_data_A2 = .data:0x000000A2; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_AB = .data:0x000000AB; // type:object size:0x9 data:string
|
lbl_1_data_AB = .data:0x000000AB; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 data:string
|
lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_BD = .data:0x000000BD; // type:object size:0x9 data:string
|
lbl_1_data_BD = .data:0x000000BD; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x9 data:string
|
lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_CF = .data:0x000000CF; // type:object size:0x9 data:string
|
lbl_1_data_CF = .data:0x000000CF; // type:object size:0x9 scope:local data:string
|
||||||
lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x40
|
lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x40
|
||||||
lbl_1_data_118 = .data:0x00000118; // type:object size:0x50 data:float
|
lbl_1_data_118 = .data:0x00000118; // type:object size:0x50 data:float
|
||||||
lbl_1_data_168 = .data:0x00000168; // type:object size:0xA0
|
lbl_1_data_168 = .data:0x00000168; // type:object size:0xA0
|
||||||
lbl_1_data_208 = .data:0x00000208; // type:object size:0x50
|
lbl_1_data_208 = .data:0x00000208; // type:object size:0x50
|
||||||
lbl_1_data_258 = .data:0x00000258; // type:object size:0x50
|
lbl_1_data_258 = .data:0x00000258; // type:object size:0x50
|
||||||
lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x1A data:string
|
lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x1A scope:local data:string
|
||||||
lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x16
|
lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x16 scope:local
|
||||||
lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x10 data:string
|
lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x10 scope:local data:string
|
||||||
lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x4 data:string
|
lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x4 scope:local data:string
|
||||||
lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x2C data:string
|
lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x2C scope:local data:string
|
||||||
lbl_1_data_318 = .data:0x00000318; // type:object size:0x40
|
lbl_1_data_318 = .data:0x00000318; // type:object size:0xA scope:local data:string
|
||||||
|
lbl_1_data_322 = .data:0x00000322; // type:object size:0x36
|
||||||
lbl_1_data_358 = .data:0x00000358; // type:object size:0x8
|
lbl_1_data_358 = .data:0x00000358; // type:object size:0x8
|
||||||
lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 data:string
|
lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 scope:local data:string
|
||||||
lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string
|
lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string
|
||||||
lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58
|
lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58
|
||||||
lbl_1_data_408 = .data:0x00000408; // type:object size:0x58
|
lbl_1_data_408 = .data:0x00000408; // type:object size:0x58
|
||||||
|
|
@ -200,7 +201,8 @@ lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float
|
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float
|
||||||
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x1 data:byte
|
lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x1 data:byte
|
||||||
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x10 data:4byte
|
lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x10 data:4byte
|
||||||
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x414
|
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x410
|
||||||
|
unk_bss_450 = .bss:0x00000450; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_454 = .bss:0x00000454; // type:object size:0x4 data:4byte
|
lbl_1_bss_454 = .bss:0x00000454; // type:object size:0x4 data:4byte
|
||||||
lbl_1_bss_458 = .bss:0x00000458; // type:object size:0x2 data:2byte
|
lbl_1_bss_458 = .bss:0x00000458; // type:object size:0x2 data:2byte
|
||||||
lbl_1_bss_45A = .bss:0x0000045A; // type:object size:0x6 data:2byte
|
lbl_1_bss_45A = .bss:0x0000045A; // type:object size:0x6 data:2byte
|
||||||
|
|
|
||||||
|
|
@ -26,5 +26,5 @@ REL/mpexDll/charsel.c:
|
||||||
|
|
||||||
REL/mpexDll/mgname.c:
|
REL/mpexDll/mgname.c:
|
||||||
.text start:0x0001CB80 end:0x0001D198
|
.text start:0x0001CB80 end:0x0001D198
|
||||||
.rodata start:0x00000610 end:0x00000618
|
.rodata start:0x00000610 end:0x00000620
|
||||||
.data start:0x00000788 end:0x00000788
|
.data start:0x00000788 end:0x00000AA0
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ game/chrman.c:
|
||||||
|
|
||||||
game/mapspace.c:
|
game/mapspace.c:
|
||||||
.text start:0x80050C5C end:0x80054A00
|
.text start:0x80050C5C end:0x80054A00
|
||||||
.bss start:0x80197650 end:0x80197AB8
|
.bss start:0x80197650 end:0x80197AC0
|
||||||
.sbss start:0x801D3E18 end:0x801D3E38
|
.sbss start:0x801D3E18 end:0x801D3E38
|
||||||
.sdata2 start:0x801D50D0 end:0x801D5100
|
.sdata2 start:0x801D50D0 end:0x801D5100
|
||||||
|
|
||||||
|
|
@ -497,7 +497,7 @@ game/board/boo.c:
|
||||||
.data start:0x8013AB28 end:0x8013AD00
|
.data start:0x8013AB28 end:0x8013AD00
|
||||||
.sdata start:0x801D37D8 end:0x801D37E8
|
.sdata start:0x801D37D8 end:0x801D37E8
|
||||||
.sbss start:0x801D41B0 end:0x801D41E8
|
.sbss start:0x801D41B0 end:0x801D41E8
|
||||||
.sdata2 start:0x801D5E98 end:0x801D5FA0
|
.sdata2 start:0x801D5E98 end:0x801D5FA8
|
||||||
|
|
||||||
game/board/mg_setup.c:
|
game/board/mg_setup.c:
|
||||||
.text start:0x800A1A34 end:0x800A4F6C
|
.text start:0x800A1A34 end:0x800A4F6C
|
||||||
|
|
@ -506,7 +506,7 @@ game/board/mg_setup.c:
|
||||||
.bss start:0x801A4C58 end:0x801A4CC8
|
.bss start:0x801A4C58 end:0x801A4CC8
|
||||||
.sdata start:0x801D37E8 end:0x801D37F0
|
.sdata start:0x801D37E8 end:0x801D37F0
|
||||||
.sbss start:0x801D41E8 end:0x801D4218
|
.sbss start:0x801D41E8 end:0x801D4218
|
||||||
.sdata2 start:0x801D5FA0 end:0x801D6080
|
.sdata2 start:0x801D5FA8 end:0x801D6080
|
||||||
|
|
||||||
game/board/boo_house.c:
|
game/board/boo_house.c:
|
||||||
.text start:0x800A4F6C end:0x800A6EE4
|
.text start:0x800A4F6C end:0x800A6EE4
|
||||||
|
|
|
||||||
|
|
@ -537,12 +537,12 @@ omCurrentOvlGet = .text:0x8002FF44; // type:function size:0x8
|
||||||
OSPanic = .text:0x8002FF4C; // type:function size:0x150
|
OSPanic = .text:0x8002FF4C; // type:function size:0x150
|
||||||
HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118
|
HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118
|
||||||
HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34
|
HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34
|
||||||
XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98
|
XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 scope:local
|
||||||
XFB_CR = .text:0x80030280; // type:function size:0x50
|
XFB_CR = .text:0x80030280; // type:function size:0x50 scope:local
|
||||||
XFB_puts = .text:0x800302D0; // type:function size:0xF4
|
XFB_puts = .text:0x800302D0; // type:function size:0xF4 scope:local
|
||||||
XFB_putcS = .text:0x800303C4; // type:function size:0x150
|
XFB_putcS = .text:0x800303C4; // type:function size:0x150 scope:local
|
||||||
XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0
|
XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 scope:local
|
||||||
XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4
|
XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 scope:local
|
||||||
GWInit = .text:0x800308B8; // type:function size:0x14C
|
GWInit = .text:0x800308B8; // type:function size:0x14C
|
||||||
GWGameStatReset = .text:0x80030A04; // type:function size:0x318
|
GWGameStatReset = .text:0x80030A04; // type:function size:0x318
|
||||||
GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C
|
GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C
|
||||||
|
|
@ -695,7 +695,7 @@ MGSeqPauseKill = .text:0x8003F360; // type:function size:0xC
|
||||||
MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40
|
MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40
|
||||||
MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC
|
MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC
|
||||||
PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local
|
PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local
|
||||||
SeqSEPlay = .text:0x8003F6BC; // type:function size:0xD4 scope:local
|
SeqPlayStartFX = .text:0x8003F6BC; // type:function size:0xD4 scope:local
|
||||||
MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128
|
MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128
|
||||||
espInit = .text:0x8003F8B8; // type:function size:0xA0
|
espInit = .text:0x8003F8B8; // type:function size:0xA0
|
||||||
espEntry = .text:0x8003F958; // type:function size:0x1B0
|
espEntry = .text:0x8003F958; // type:function size:0x1B0
|
||||||
|
|
@ -860,10 +860,10 @@ CreateEffect = .text:0x8004C180; // type:function size:0x1CC scope:local
|
||||||
UpdateEffect = .text:0x8004C34C; // type:function size:0x4A0 scope:local
|
UpdateEffect = .text:0x8004C34C; // type:function size:0x4A0 scope:local
|
||||||
RotateEffect = .text:0x8004C7EC; // type:function size:0x1E8 scope:local
|
RotateEffect = .text:0x8004C7EC; // type:function size:0x1E8 scope:local
|
||||||
PlayEffectSound = .text:0x8004C9D4; // type:function size:0x344 scope:local
|
PlayEffectSound = .text:0x8004C9D4; // type:function size:0x344 scope:local
|
||||||
CharMotionCreate = .text:0x8004CD18; // type:function size:0x1D0
|
CharModelMotionCreate = .text:0x8004CD18; // type:function size:0x1D0
|
||||||
CharMotionSet = .text:0x8004CEE8; // type:function size:0x88
|
CharModelMotionIndexSet = .text:0x8004CEE8; // type:function size:0x88
|
||||||
CharMotionKill = .text:0x8004CF70; // type:function size:0x9C
|
CharModelMotionKill = .text:0x8004CF70; // type:function size:0x9C
|
||||||
CharMotionDataClose = .text:0x8004D00C; // type:function size:0x2B8
|
CharModelMotionDataClose = .text:0x8004D00C; // type:function size:0x2B8
|
||||||
CharModelDataClose = .text:0x8004D2C4; // type:function size:0x430
|
CharModelDataClose = .text:0x8004D2C4; // type:function size:0x430
|
||||||
CharModelKill = .text:0x8004D6F4; // type:function size:0x244
|
CharModelKill = .text:0x8004D6F4; // type:function size:0x244
|
||||||
CharModelMotionSet = .text:0x8004D938; // type:function size:0x7C
|
CharModelMotionSet = .text:0x8004D938; // type:function size:0x7C
|
||||||
|
|
@ -879,11 +879,11 @@ CharModelMotionShiftSet = .text:0x8004DD84; // type:function size:0x84
|
||||||
CharModelMotionShiftTimeGet = .text:0x8004DE08; // type:function size:0x44
|
CharModelMotionShiftTimeGet = .text:0x8004DE08; // type:function size:0x44
|
||||||
CharModelMotionSpeedSet = .text:0x8004DE4C; // type:function size:0x4C
|
CharModelMotionSpeedSet = .text:0x8004DE4C; // type:function size:0x4C
|
||||||
CharModelLayerSetAll = .text:0x8004DE98; // type:function size:0x80
|
CharModelLayerSetAll = .text:0x8004DE98; // type:function size:0x80
|
||||||
CharModelCreateItemHook = .text:0x8004DF18; // type:function size:0x1D4
|
CharModelItemHookCreate = .text:0x8004DF18; // type:function size:0x1D4
|
||||||
UpdateItemHook = .text:0x8004E0EC; // type:function size:0x484 scope:local
|
UpdateItemHook = .text:0x8004E0EC; // type:function size:0x484 scope:local
|
||||||
CharModelCreateParticle = .text:0x8004E570; // type:function size:0x3FC
|
CharModelEffectCreate = .text:0x8004E570; // type:function size:0x3FC
|
||||||
OrbitEffect = .text:0x8004E96C; // type:function size:0x168 scope:local
|
OrbitEffect = .text:0x8004E96C; // type:function size:0x168 scope:local
|
||||||
CharModelCreateCoinParticle = .text:0x8004EAD4; // type:function size:0x1A0
|
CharModelCoinEffectCreate = .text:0x8004EAD4; // type:function size:0x1A0
|
||||||
fn_8004EC74 = .text:0x8004EC74; // type:function size:0x130
|
fn_8004EC74 = .text:0x8004EC74; // type:function size:0x130
|
||||||
fn_8004EDA4 = .text:0x8004EDA4; // type:function size:0x2B4
|
fn_8004EDA4 = .text:0x8004EDA4; // type:function size:0x2B4
|
||||||
fn_8004F058 = .text:0x8004F058; // type:function size:0xE4
|
fn_8004F058 = .text:0x8004F058; // type:function size:0xE4
|
||||||
|
|
@ -891,10 +891,10 @@ fn_8004F13C = .text:0x8004F13C; // type:function size:0x2B4
|
||||||
CharModelLayerSetAll2 = .text:0x8004F3F0; // type:function size:0x80
|
CharModelLayerSetAll2 = .text:0x8004F3F0; // type:function size:0x80
|
||||||
CharModelVoiceEnableSet = .text:0x8004F470; // type:function size:0xBC
|
CharModelVoiceEnableSet = .text:0x8004F470; // type:function size:0xBC
|
||||||
fn_8004F52C = .text:0x8004F52C; // type:function size:0x4C
|
fn_8004F52C = .text:0x8004F52C; // type:function size:0x4C
|
||||||
fn_8004F578 = .text:0x8004F578; // type:function size:0xB0
|
CharModelEffectEnableSet = .text:0x8004F578; // type:function size:0xB0
|
||||||
fn_8004F628 = .text:0x8004F628; // type:function size:0x2CC
|
CharModelEffectNpcInit = .text:0x8004F628; // type:function size:0x2CC
|
||||||
fn_8004F8F4 = .text:0x8004F8F4; // type:function size:0x2CC
|
CharModelEffectNpcInitSilent = .text:0x8004F8F4; // type:function size:0x2CC
|
||||||
fn_8004FBC0 = .text:0x8004FBC0; // type:function size:0xF80
|
UpdateNpcEffect = .text:0x8004FBC0; // type:function size:0xF80 scope:local
|
||||||
CharModelStepTypeSet = .text:0x80050B40; // type:function size:0x30
|
CharModelStepTypeSet = .text:0x80050B40; // type:function size:0x30
|
||||||
PlayStepFX = .text:0x80050B70; // type:function size:0xEC scope:local
|
PlayStepFX = .text:0x80050B70; // type:function size:0xEC scope:local
|
||||||
MapWall = .text:0x80050C5C; // type:function size:0x1B8
|
MapWall = .text:0x80050C5C; // type:function size:0x1B8
|
||||||
|
|
@ -952,7 +952,7 @@ THPTestProc = .text:0x8005793C; // type:function size:0x27C scope:local
|
||||||
THPViewFunc = .text:0x80057BB8; // type:function size:0xA4 scope:local
|
THPViewFunc = .text:0x80057BB8; // type:function size:0xA4 scope:local
|
||||||
THPViewSprFunc = .text:0x80057C5C; // type:function size:0x17C scope:local
|
THPViewSprFunc = .text:0x80057C5C; // type:function size:0x17C scope:local
|
||||||
THPDecodeFunc = .text:0x80057DD8; // type:function size:0x4C scope:local
|
THPDecodeFunc = .text:0x80057DD8; // type:function size:0x4C scope:local
|
||||||
omGetMGIndex = .text:0x80057E24; // type:function size:0x5C
|
omMgIndexGet = .text:0x80057E24; // type:function size:0x5C
|
||||||
omGameSysInit = .text:0x80057E80; // type:function size:0xF4
|
omGameSysInit = .text:0x80057E80; // type:function size:0xF4
|
||||||
omVibrate = .text:0x80057F74; // type:function size:0x9C
|
omVibrate = .text:0x80057F74; // type:function size:0x9C
|
||||||
_CheckFlag = .text:0x80058010; // type:function size:0xA0
|
_CheckFlag = .text:0x80058010; // type:function size:0xA0
|
||||||
|
|
@ -4920,7 +4920,7 @@ lbl_8012DAE5 = .data:0x8012DAE5; // type:object size:0x19 data:string
|
||||||
lbl_8012DAFE = .data:0x8012DAFE; // type:object size:0x17 data:string
|
lbl_8012DAFE = .data:0x8012DAFE; // type:object size:0x17 data:string
|
||||||
lbl_8012DB15 = .data:0x8012DB15; // type:object size:0x1B3
|
lbl_8012DB15 = .data:0x8012DB15; // type:object size:0x1B3
|
||||||
XFB_Colors = .data:0x8012DCC8; // type:object size:0xF scope:local data:byte
|
XFB_Colors = .data:0x8012DCC8; // type:object size:0xF scope:local data:byte
|
||||||
Ascii8x8_1bpp = .data:0x8012DCD7; // type:object size:0x800 scope:local
|
Ascii8x8_1bpp = .data:0x8012DCD7; // type:object size:0x800 scope:local align:1
|
||||||
lbl_8012E4D7 = .data:0x8012E4D7; // type:object size:0x19
|
lbl_8012E4D7 = .data:0x8012E4D7; // type:object size:0x19
|
||||||
lbl_8012E4F0 = .data:0x8012E4F0; // type:object size:0x21A
|
lbl_8012E4F0 = .data:0x8012E4F0; // type:object size:0x21A
|
||||||
lbl_8012E70A = .data:0x8012E70A; // type:object size:0xB data:string
|
lbl_8012E70A = .data:0x8012E70A; // type:object size:0xB data:string
|
||||||
|
|
@ -4932,28 +4932,28 @@ lbl_8012F020 = .data:0x8012F020; // type:object size:0x94
|
||||||
lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string
|
lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string
|
||||||
lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A
|
lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A
|
||||||
lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31
|
lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31
|
||||||
seqInfo = .data:0x8012F130; // type:object size:0x1DC scope:local
|
seqInfoTbl = .data:0x8012F130; // type:object size:0x1DC scope:local
|
||||||
seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local
|
seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local
|
||||||
seqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local
|
mgSeqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local
|
||||||
lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string
|
lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string
|
||||||
lbl_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string
|
lbl_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string
|
||||||
lbl_8012F392 = .data:0x8012F392; // type:object size:0x9 scope:local data:string
|
lbl_8012F392 = .data:0x8012F392; // type:object size:0x9 scope:local data:string
|
||||||
seqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string
|
seqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string
|
||||||
seqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 scope:local data:string
|
seqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 scope:local data:string
|
||||||
seqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string
|
seqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string
|
||||||
lbl_8012F430 = .data:0x8012F430; // type:object size:0x14
|
letterBufTbl = .data:0x8012F430; // type:object size:0x14 scope:local
|
||||||
wordTbl = .data:0x8012F444; // type:object size:0x18 scope:local
|
wordMgTbl = .data:0x8012F444; // type:object size:0x18 scope:local
|
||||||
letterBattleOfs = .data:0x8012F45C; // type:object size:0x40 scope:local
|
letterOfs$909 = .data:0x8012F45C; // type:object size:0x40 scope:local
|
||||||
letter2vs2Ofs = .data:0x8012F49C; // type:object size:0x1C scope:local
|
letterOfs$1386 = .data:0x8012F49C; // type:object size:0x1C scope:local
|
||||||
letterBowserOfs = .data:0x8012F4B8; // type:object size:0x38 scope:local
|
letterOfs$1761 = .data:0x8012F4B8; // type:object size:0x38 scope:local
|
||||||
lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xA data:string
|
lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xA scope:local data:string
|
||||||
charNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local
|
winCharNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local
|
||||||
lbl_8012F574 = .data:0x8012F574; // type:object size:0xA data:string
|
lbl_8012F574 = .data:0x8012F574; // type:object size:0xA scope:local data:string
|
||||||
winStrTbl = .data:0x8012F580; // type:object size:0x18 scope:local
|
winWordTbl = .data:0x8012F580; // type:object size:0x18 scope:local
|
||||||
winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local
|
winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local
|
||||||
practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local
|
practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local
|
||||||
practiceData = .data:0x8012F694; // type:object size:0xC scope:local
|
yPosTbl$2366 = .data:0x8012F694; // type:object size:0xC scope:local
|
||||||
seqFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local
|
seqStartFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local
|
||||||
lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string
|
lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string
|
||||||
lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string
|
lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string
|
||||||
lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string
|
lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string
|
||||||
|
|
@ -5079,10 +5079,14 @@ lbl_80130705 = .data:0x80130705; // type:object size:0x93
|
||||||
lbl_80130798 = .data:0x80130798; // type:object size:0x30
|
lbl_80130798 = .data:0x80130798; // type:object size:0x30
|
||||||
effectDataTbl = .data:0x801307C8; // type:object size:0x60 scope:local
|
effectDataTbl = .data:0x801307C8; // type:object size:0x60 scope:local
|
||||||
charDirTbl = .data:0x80130828; // type:object size:0x60 scope:local
|
charDirTbl = .data:0x80130828; // type:object size:0x60 scope:local
|
||||||
effectParam = .data:0x80130888; // type:object size:0x110 scope:local
|
effectDustParam = .data:0x80130888; // type:object size:0x38 scope:local
|
||||||
lbl_801309A0 = .data:0x801309A0; // type:object size:0x20
|
effectDotParam = .data:0x801308C0; // type:object size:0x38 scope:local
|
||||||
lbl_801309C0 = .data:0x801309C0; // type:object size:0x20
|
effectStarParam = .data:0x801308F8; // type:object size:0x38 scope:local
|
||||||
lbl_801309E0 = .data:0x801309E0; // type:object size:0x10
|
effectWarnParam = .data:0x80130930; // type:object size:0x38 scope:local
|
||||||
|
effectSmokeParam = .data:0x80130968; // type:object size:0x38 scope:local
|
||||||
|
lbl_801309A0 = .data:0x801309A0; // type:object size:0x20 scope:local
|
||||||
|
lbl_801309C0 = .data:0x801309C0; // type:object size:0x20 scope:local
|
||||||
|
lbl_801309E0 = .data:0x801309E0; // type:object size:0x10 scope:local
|
||||||
jumptable_801309F0 = .data:0x801309F0; // type:object size:0x1E8 scope:local
|
jumptable_801309F0 = .data:0x801309F0; // type:object size:0x1E8 scope:local
|
||||||
voiceParam = .data:0x80130BD8; // type:object size:0x40 scope:local
|
voiceParam = .data:0x80130BD8; // type:object size:0x40 scope:local
|
||||||
lbl_80130C18 = .data:0x80130C18; // type:object size:0xE data:string
|
lbl_80130C18 = .data:0x80130C18; // type:object size:0xE data:string
|
||||||
|
|
@ -5122,28 +5126,33 @@ lbl_80130F0E = .data:0x80130F0E; // type:object size:0x12
|
||||||
hookNameTbl = .data:0x80130F20; // type:object size:0xA0 scope:local
|
hookNameTbl = .data:0x80130F20; // type:object size:0xA0 scope:local
|
||||||
modelParticleParam = .data:0x80130FC0; // type:object size:0x38 scope:local
|
modelParticleParam = .data:0x80130FC0; // type:object size:0x38 scope:local
|
||||||
coinParticleParam = .data:0x80130FF8; // type:object size:0x38 scope:local
|
coinParticleParam = .data:0x80130FF8; // type:object size:0x38 scope:local
|
||||||
lbl_80131030 = .data:0x80131030; // type:object size:0x38
|
lbl_80131030 = .data:0x80131030; // type:object size:0x38 scope:local
|
||||||
lbl_80131068 = .data:0x80131068; // type:object size:0x38
|
lbl_80131068 = .data:0x80131068; // type:object size:0x38 scope:local
|
||||||
lbl_801310A0 = .data:0x801310A0; // type:object size:0x1C
|
lbl_801310A0 = .data:0x801310A0; // type:object size:0x1C
|
||||||
lbl_801310BC = .data:0x801310BC; // type:object size:0x38
|
lbl_801310BC = .data:0x801310BC; // type:object size:0x38 scope:local
|
||||||
lbl_801310F4 = .data:0x801310F4; // type:object size:0x38
|
lbl_801310F4 = .data:0x801310F4; // type:object size:0x38 scope:local
|
||||||
lbl_8013112C = .data:0x8013112C; // type:object size:0x1A data:string
|
lbl_8013112C = .data:0x8013112C; // type:object size:0x1A data:string
|
||||||
lbl_80131146 = .data:0x80131146; // type:object size:0x12
|
lbl_80131146 = .data:0x80131146; // type:object size:0x12 scope:local
|
||||||
lbl_80131158 = .data:0x80131158; // type:object size:0x24
|
lbl_80131158 = .data:0x80131158; // type:object size:0x12 scope:local
|
||||||
lbl_8013117C = .data:0x8013117C; // type:object size:0x24
|
lbl_8013116A = .data:0x8013116A; // type:object size:0x12 scope:local
|
||||||
lbl_801311A0 = .data:0x801311A0; // type:object size:0x24
|
lbl_8013117C = .data:0x8013117C; // type:object size:0x12 scope:local
|
||||||
lbl_801311C4 = .data:0x801311C4; // type:object size:0x24
|
lbl_8013118E = .data:0x8013118E; // type:object size:0xE scope:local
|
||||||
|
lbl_8013119C = .data:0x8013119C; // type:object size:0xE scope:local
|
||||||
|
lbl_801311AA = .data:0x801311AA; // type:object size:0xE scope:local
|
||||||
|
lbl_801311B8 = .data:0x801311B8; // type:object size:0xE scope:local
|
||||||
|
lbl_801311C6 = .data:0x801311C6; // type:object size:0xE scope:local
|
||||||
|
lbl_801311D4 = .data:0x801311D4; // type:object size:0xE scope:local
|
||||||
VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local
|
VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local
|
||||||
lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D
|
lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D
|
||||||
lbl_80131335 = .data:0x80131335; // type:object size:0x1B
|
lbl_80131335 = .data:0x80131335; // type:object size:0x1B
|
||||||
MGInfoTable = .data:0x80131350; // type:object size:0xE00 data:2byte
|
mgInfoTbl = .data:0x80131350; // type:object size:0xE00 data:2byte
|
||||||
lbl_80132150 = .data:0x80132150; // type:object size:0x40
|
commentTbl = .data:0x80132150; // type:object size:0x40 scope:local
|
||||||
lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string
|
lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string
|
||||||
lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string
|
lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string
|
||||||
lbl_801321A8 = .data:0x801321A8; // type:object size:0xC data:string
|
lbl_801321A8 = .data:0x801321A8; // type:object size:0xC data:string
|
||||||
SaveFileNameTbl = .data:0x801321B4; // type:object size:0xC
|
SaveFileNameTbl = .data:0x801321B4; // type:object size:0xC
|
||||||
jumptable_801321C0 = .data:0x801321C0; // type:object size:0x34 scope:local
|
jumptable_801321C0 = .data:0x801321C0; // type:object size:0x34 scope:local
|
||||||
SR_PreRstChk = .data:0x801321F8; // type:object size:0x10
|
SR_PreRstChk = .data:0x801321F8; // type:object size:0x10 scope:local
|
||||||
coveropen_en = .data:0x80132208; // type:object size:0x1384 noreloc
|
coveropen_en = .data:0x80132208; // type:object size:0x1384 noreloc
|
||||||
fatalerror_en = .data:0x8013358C; // type:object size:0x1384 noreloc
|
fatalerror_en = .data:0x8013358C; // type:object size:0x1384 noreloc
|
||||||
loading_en = .data:0x80134910; // type:object size:0x1384 noreloc
|
loading_en = .data:0x80134910; // type:object size:0x1384 noreloc
|
||||||
|
|
@ -5153,7 +5162,7 @@ wrongdisc_en = .data:0x8013839C; // type:object size:0x1384 noreloc
|
||||||
jumptable_80139720 = .data:0x80139720; // type:object size:0x34 scope:local
|
jumptable_80139720 = .data:0x80139720; // type:object size:0x34 scope:local
|
||||||
bmpMes$493 = .data:0x80139754; // type:object size:0x18 scope:local
|
bmpMes$493 = .data:0x80139754; // type:object size:0x18 scope:local
|
||||||
lbl_8013976C = .data:0x8013976C; // type:object size:0x13 data:string
|
lbl_8013976C = .data:0x8013976C; // type:object size:0x13 data:string
|
||||||
lbl_8013977F = .data:0x8013977F; // type:object size:0x19
|
lbl_8013977F = .data:0x8013977F; // type:object size:0x12 data:string
|
||||||
camViewTbl = .data:0x80139798; // type:object size:0x24 scope:local
|
camViewTbl = .data:0x80139798; // type:object size:0x24 scope:local
|
||||||
jumptable_801397BC = .data:0x801397BC; // type:object size:0x24 scope:local
|
jumptable_801397BC = .data:0x801397BC; // type:object size:0x24 scope:local
|
||||||
confettiLightTbl = .data:0x801397E0; // type:object size:0x48 scope:local
|
confettiLightTbl = .data:0x801397E0; // type:object size:0x48 scope:local
|
||||||
|
|
@ -5521,8 +5530,8 @@ CZoomM = .bss:0x801901A0; // type:object size:0x40
|
||||||
omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50
|
omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50
|
||||||
sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local
|
sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local
|
||||||
charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local
|
charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local
|
||||||
seqStat = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte
|
seqWorkData = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte
|
||||||
seqMaxTime = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte
|
winnerNameW = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte
|
||||||
esprite = .bss:0x80190860; // type:object size:0x600 data:2byte
|
esprite = .bss:0x80190860; // type:object size:0x600 data:2byte
|
||||||
espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte
|
espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte
|
||||||
lbl_80192060 = .bss:0x80192060; // type:object size:0x100
|
lbl_80192060 = .bss:0x80192060; // type:object size:0x100
|
||||||
|
|
@ -5540,8 +5549,8 @@ charInstance = .bss:0x80196EC0; // type:object size:0x640 scope:local
|
||||||
effectMdl = .bss:0x80197500; // type:object size:0x10 scope:local data:2byte
|
effectMdl = .bss:0x80197500; // type:object size:0x10 scope:local data:2byte
|
||||||
particleData = .bss:0x80197510; // type:object size:0x20 scope:local
|
particleData = .bss:0x80197510; // type:object size:0x20 scope:local
|
||||||
itemHookProcess = .bss:0x80197530; // type:object size:0x80 scope:local
|
itemHookProcess = .bss:0x80197530; // type:object size:0x80 scope:local
|
||||||
lbl_801975B0 = .bss:0x801975B0; // type:object size:0x10
|
lbl_801975B0 = .bss:0x801975B0; // type:object size:0x10 scope:local
|
||||||
lbl_801975C0 = .bss:0x801975C0; // type:object size:0x90
|
lbl_801975C0 = .bss:0x801975C0; // type:object size:0x90 scope:local
|
||||||
MapObject = .bss:0x80197650; // type:object size:0x40
|
MapObject = .bss:0x80197650; // type:object size:0x40
|
||||||
MapMT = .bss:0x80197690; // type:object size:0x30
|
MapMT = .bss:0x80197690; // type:object size:0x30
|
||||||
MapMTR = .bss:0x801976C0; // type:object size:0x30
|
MapMTR = .bss:0x801976C0; // type:object size:0x30
|
||||||
|
|
@ -5551,14 +5560,14 @@ ColisionIdx = .bss:0x80197708; // type:object size:0x78
|
||||||
HitFaceVec = .bss:0x80197780; // type:object size:0x180
|
HitFaceVec = .bss:0x80197780; // type:object size:0x180
|
||||||
OldXYZ = .bss:0x80197900; // type:object size:0xC scope:local
|
OldXYZ = .bss:0x80197900; // type:object size:0xC scope:local
|
||||||
HitFace = .bss:0x8019790C; // type:object size:0x180
|
HitFace = .bss:0x8019790C; // type:object size:0x180
|
||||||
CharObject = .bss:0x80197A8C; // type:object size:0x28
|
CharObject = .bss:0x80197A8C; // type:object size:0x30
|
||||||
SimpleControl = .bss:0x80197AC0; // type:object size:0x19C
|
SimpleControl = .bss:0x80197AC0; // type:object size:0x19C
|
||||||
SoundBuffer = .bss:0x80197C60; // type:object size:0x500 scope:local align:32
|
SoundBuffer = .bss:0x80197C60; // type:object size:0x500 scope:local align:32
|
||||||
WorkBuffer = .bss:0x80198160; // type:object size:0x40 scope:local align:32
|
WorkBuffer = .bss:0x80198160; // type:object size:0x40 scope:local align:32
|
||||||
THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local
|
THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local
|
||||||
GWGameStatBackup = .bss:0x801981E0; // type:object size:0x118
|
mgGameStatBackup = .bss:0x801981E0; // type:object size:0x118
|
||||||
lbl_801982F8 = .bss:0x801982F8; // type:object size:0x100
|
mgIndexList = .bss:0x801982F8; // type:object size:0x100
|
||||||
lbl_801983F8 = .bss:0x801983F8; // type:object size:0x18
|
mgTicTacToeGrid = .bss:0x801983F8; // type:object size:0x12
|
||||||
_Sys_Flag = .bss:0x80198410; // type:object size:0x10
|
_Sys_Flag = .bss:0x80198410; // type:object size:0x10
|
||||||
curFileInfo = .bss:0x80198420; // type:object size:0x20
|
curFileInfo = .bss:0x80198420; // type:object size:0x20
|
||||||
saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32
|
saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32
|
||||||
|
|
@ -5778,55 +5787,55 @@ lbl_801D3488 = .sdata:0x801D3488; // type:object size:0x4 data:string
|
||||||
lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC
|
lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC
|
||||||
omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte
|
omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte
|
||||||
omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte
|
omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte
|
||||||
lbl_801D34A0 = .sdata:0x801D34A0; // type:object size:0x4 data:4byte
|
titleMes$442 = .sdata:0x801D34A0; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC
|
lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC
|
||||||
lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1
|
lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1
|
||||||
lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7
|
lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7
|
||||||
mgSeqInitF = .sdata:0x801D34B8; // type:object size:0x4 data:4byte
|
mgSeqInitF = .sdata:0x801D34B8; // type:object size:0x4 data:4byte
|
||||||
lbl_801D34BC = .sdata:0x801D34BC; // type:object size:0x7 data:string
|
wordStartE = .sdata:0x801D34BC; // type:object size:0x7 scope:local data:string
|
||||||
lbl_801D34C3 = .sdata:0x801D34C3; // type:object size:0x3 data:byte
|
seqPunctTbl = .sdata:0x801D34C3; // type:object size:0x3 scope:local data:byte
|
||||||
lbl_801D34C6 = .sdata:0x801D34C6; // type:object size:0x6
|
wordStartJ = .sdata:0x801D34C6; // type:object size:0x6 scope:local
|
||||||
lbl_801D34CC = .sdata:0x801D34CC; // type:object size:0x8
|
wordFinishJ = .sdata:0x801D34CC; // type:object size:0x8 scope:local
|
||||||
lbl_801D34D4 = .sdata:0x801D34D4; // type:object size:0x6
|
wordDrawJ = .sdata:0x801D34D4; // type:object size:0x6 scope:local
|
||||||
lbl_801D34DA = .sdata:0x801D34DA; // type:object size:0x8 data:string
|
wordFinishE = .sdata:0x801D34DA; // type:object size:0x8 scope:local data:string
|
||||||
lbl_801D34E2 = .sdata:0x801D34E2; // type:object size:0x6 data:string
|
wordDrawE = .sdata:0x801D34E2; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D34E8 = .sdata:0x801D34E8; // type:object size:0x4
|
lbl_801D34E8 = .sdata:0x801D34E8; // type:object size:0x4 scope:local
|
||||||
lbl_801D34EC = .sdata:0x801D34EC; // type:object size:0x6 data:string
|
lbl_801D34EC = .sdata:0x801D34EC; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D34F2 = .sdata:0x801D34F2; // type:object size:0x6
|
lbl_801D34F2 = .sdata:0x801D34F2; // type:object size:0x6 scope:local
|
||||||
lbl_801D34F8 = .sdata:0x801D34F8; // type:object size:0x6 data:string
|
lbl_801D34F8 = .sdata:0x801D34F8; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D34FE = .sdata:0x801D34FE; // type:object size:0x5
|
lbl_801D34FE = .sdata:0x801D34FE; // type:object size:0x5 scope:local
|
||||||
lbl_801D3503 = .sdata:0x801D3503; // type:object size:0x6 data:string
|
lbl_801D3503 = .sdata:0x801D3503; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D3509 = .sdata:0x801D3509; // type:object size:0x5
|
lbl_801D3509 = .sdata:0x801D3509; // type:object size:0x5 scope:local
|
||||||
lbl_801D350E = .sdata:0x801D350E; // type:object size:0x6 data:string
|
lbl_801D350E = .sdata:0x801D350E; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D3514 = .sdata:0x801D3514; // type:object size:0x4
|
lbl_801D3514 = .sdata:0x801D3514; // type:object size:0x4 scope:local
|
||||||
lbl_801D3518 = .sdata:0x801D3518; // type:object size:0x6 data:string
|
lbl_801D3518 = .sdata:0x801D3518; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D351E = .sdata:0x801D351E; // type:object size:0x6
|
lbl_801D351E = .sdata:0x801D351E; // type:object size:0x6 scope:local
|
||||||
lbl_801D3524 = .sdata:0x801D3524; // type:object size:0x5 data:string
|
lbl_801D3524 = .sdata:0x801D3524; // type:object size:0x5 scope:local data:string
|
||||||
lbl_801D3529 = .sdata:0x801D3529; // type:object size:0x7
|
lbl_801D3529 = .sdata:0x801D3529; // type:object size:0x7 scope:local
|
||||||
lbl_801D3530 = .sdata:0x801D3530; // type:object size:0x6 data:string
|
lbl_801D3530 = .sdata:0x801D3530; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D3536 = .sdata:0x801D3536; // type:object size:0x7
|
lbl_801D3536 = .sdata:0x801D3536; // type:object size:0x7 scope:local
|
||||||
lbl_801D353D = .sdata:0x801D353D; // type:object size:0x8 data:string
|
lbl_801D353D = .sdata:0x801D353D; // type:object size:0x8 scope:local data:string
|
||||||
lbl_801D3545 = .sdata:0x801D3545; // type:object size:0x5
|
lbl_801D3545 = .sdata:0x801D3545; // type:object size:0x5 scope:local
|
||||||
lbl_801D354A = .sdata:0x801D354A; // type:object size:0x7 data:string
|
lbl_801D354A = .sdata:0x801D354A; // type:object size:0x7 scope:local data:string
|
||||||
lbl_801D3551 = .sdata:0x801D3551; // type:object size:0x6
|
lbl_801D3551 = .sdata:0x801D3551; // type:object size:0x6 scope:local
|
||||||
lbl_801D3557 = .sdata:0x801D3557; // type:object size:0x5 data:string
|
lbl_801D3557 = .sdata:0x801D3557; // type:object size:0x5 scope:local data:string
|
||||||
lbl_801D355C = .sdata:0x801D355C; // type:object size:0x5
|
lbl_801D355C = .sdata:0x801D355C; // type:object size:0x5 scope:local
|
||||||
lbl_801D3561 = .sdata:0x801D3561; // type:object size:0x8 data:string
|
lbl_801D3561 = .sdata:0x801D3561; // type:object size:0x8 scope:local data:string
|
||||||
lbl_801D3569 = .sdata:0x801D3569; // type:object size:0x4
|
lbl_801D3569 = .sdata:0x801D3569; // type:object size:0x4 scope:local
|
||||||
lbl_801D356D = .sdata:0x801D356D; // type:object size:0x4 data:string
|
lbl_801D356D = .sdata:0x801D356D; // type:object size:0x4 scope:local data:string
|
||||||
lbl_801D3571 = .sdata:0x801D3571; // type:object size:0x5
|
lbl_801D3571 = .sdata:0x801D3571; // type:object size:0x5 scope:local
|
||||||
lbl_801D3576 = .sdata:0x801D3576; // type:object size:0x6 data:string
|
lbl_801D3576 = .sdata:0x801D3576; // type:object size:0x6 scope:local data:string
|
||||||
lbl_801D357C = .sdata:0x801D357C; // type:object size:0x7
|
lbl_801D357C = .sdata:0x801D357C; // type:object size:0x7 scope:local
|
||||||
lbl_801D3583 = .sdata:0x801D3583; // type:object size:0x6
|
lbl_801D3583 = .sdata:0x801D3583; // type:object size:0x6 scope:local
|
||||||
lbl_801D3589 = .sdata:0x801D3589; // type:object size:0x7 data:string
|
lbl_801D3589 = .sdata:0x801D3589; // type:object size:0x7 scope:local data:string
|
||||||
lbl_801D3590 = .sdata:0x801D3590; // type:object size:0x3
|
lbl_801D3590 = .sdata:0x801D3590; // type:object size:0x3 scope:local
|
||||||
lbl_801D3593 = .sdata:0x801D3593; // type:object size:0x5 data:string
|
lbl_801D3593 = .sdata:0x801D3593; // type:object size:0x5 scope:local data:string
|
||||||
lbl_801D3598 = .sdata:0x801D3598; // type:object size:0x6
|
lbl_801D3598 = .sdata:0x801D3598; // type:object size:0x6 scope:local
|
||||||
lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 data:string
|
lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 scope:local data:string
|
||||||
lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7
|
lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7 scope:local
|
||||||
lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6
|
lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6 scope:local
|
||||||
lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 data:string
|
lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 scope:local data:string
|
||||||
pauseStrTbl = .sdata:0x801D35B8; // type:object size:0x8 scope:local
|
pauseStr$2216 = .sdata:0x801D35B8; // type:object size:0x8 scope:local
|
||||||
lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8
|
lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8
|
||||||
lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8
|
lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8
|
||||||
lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8
|
lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8
|
||||||
|
|
@ -5834,11 +5843,11 @@ lbl_801D35D8 = .sdata:0x801D35D8; // type:object size:0x8
|
||||||
colorN$400 = .sdata:0x801D35E0; // type:object size:0x4 data:byte
|
colorN$400 = .sdata:0x801D35E0; // type:object size:0x4 data:byte
|
||||||
colorN$444 = .sdata:0x801D35E4; // type:object size:0x4 data:byte
|
colorN$444 = .sdata:0x801D35E4; // type:object size:0x4 data:byte
|
||||||
winPrio = .sdata:0x801D35E8; // type:object size:0x8 scope:local data:2byte
|
winPrio = .sdata:0x801D35E8; // type:object size:0x8 scope:local data:2byte
|
||||||
lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8
|
lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8 scope:local
|
||||||
lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8
|
lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8 scope:local
|
||||||
lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8
|
lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8 scope:local
|
||||||
lbl_801D3608 = .sdata:0x801D3608; // type:object size:0x8
|
lbl_801D3608 = .sdata:0x801D3608; // type:object size:0x8 scope:local
|
||||||
lbl_801D3610 = .sdata:0x801D3610; // type:object size:0x8
|
lbl_801D3610 = .sdata:0x801D3610; // type:object size:0x8 scope:local
|
||||||
lbl_801D3618 = .sdata:0x801D3618; // type:object size:0x1
|
lbl_801D3618 = .sdata:0x801D3618; // type:object size:0x1
|
||||||
lbl_801D3619 = .sdata:0x801D3619; // type:object size:0x5 data:string
|
lbl_801D3619 = .sdata:0x801D3619; // type:object size:0x5 data:string
|
||||||
lbl_801D361E = .sdata:0x801D361E; // type:object size:0x5 data:string
|
lbl_801D361E = .sdata:0x801D361E; // type:object size:0x5 data:string
|
||||||
|
|
@ -6027,25 +6036,25 @@ dspSlaveLength = .sdata:0x801D39F0; // type:object size:0x2 data:2byte
|
||||||
SendCount = .sdata:0x801D39F8; // type:object size:0x1 scope:local data:byte
|
SendCount = .sdata:0x801D39F8; // type:object size:0x1 scope:local data:byte
|
||||||
SystemInitF = .sbss:0x801D3A00; // type:object size:0x4 data:4byte
|
SystemInitF = .sbss:0x801D3A00; // type:object size:0x4 data:4byte
|
||||||
HuDvdErrWait = .sbss:0x801D3A04; // type:object size:0x4 data:4byte
|
HuDvdErrWait = .sbss:0x801D3A04; // type:object size:0x4 data:4byte
|
||||||
lbl_801D3A08 = .sbss:0x801D3A08; // type:object size:0x4
|
fi_req = .sbss:0x801D3A08; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A0C = .sbss:0x801D3A0C; // type:object size:0x4
|
rf_req = .sbss:0x801D3A0C; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A10 = .sbss:0x801D3A10; // type:object size:0x4
|
pe_req = .sbss:0x801D3A10; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A14 = .sbss:0x801D3A14; // type:object size:0x4
|
vi_req = .sbss:0x801D3A14; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A18 = .sbss:0x801D3A18; // type:object size:0x4
|
io_req = .sbss:0x801D3A18; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A1C = .sbss:0x801D3A1C; // type:object size:0x4
|
dsp_req = .sbss:0x801D3A1C; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A20 = .sbss:0x801D3A20; // type:object size:0x4
|
cpu_wr_req = .sbss:0x801D3A20; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A24 = .sbss:0x801D3A24; // type:object size:0x4
|
cpu_rd_req = .sbss:0x801D3A24; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A28 = .sbss:0x801D3A28; // type:object size:0x4
|
tc_req = .sbss:0x801D3A28; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A2C = .sbss:0x801D3A2C; // type:object size:0x4
|
cp_req = .sbss:0x801D3A2C; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A30 = .sbss:0x801D3A30; // type:object size:0x4
|
total_copy_clks = .sbss:0x801D3A30; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A34 = .sbss:0x801D3A34; // type:object size:0x4
|
clr_pixels_in = .sbss:0x801D3A34; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A38 = .sbss:0x801D3A38; // type:object size:0x4
|
bot_pixels_out = .sbss:0x801D3A38; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A3C = .sbss:0x801D3A3C; // type:object size:0x4
|
bot_pixels_in = .sbss:0x801D3A3C; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A40 = .sbss:0x801D3A40; // type:object size:0x4
|
top_pixels_out = .sbss:0x801D3A40; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A44 = .sbss:0x801D3A44; // type:object size:0x4
|
top_pixels_in = .sbss:0x801D3A44; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A48 = .sbss:0x801D3A48; // type:object size:0x4
|
vstall = .sbss:0x801D3A48; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A4C = .sbss:0x801D3A4C; // type:object size:0x4
|
vmiss = .sbss:0x801D3A4C; // type:object size:0x4 scope:local
|
||||||
lbl_801D3A50 = .sbss:0x801D3A50; // type:object size:0x4
|
vcheck = .sbss:0x801D3A50; // type:object size:0x4 scope:local
|
||||||
GlobalCounter = .sbss:0x801D3A54; // type:object size:0x4 data:4byte
|
GlobalCounter = .sbss:0x801D3A54; // type:object size:0x4 data:4byte
|
||||||
VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte
|
VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte
|
||||||
RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte
|
RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte
|
||||||
|
|
@ -6310,14 +6319,15 @@ decodeThread = .sbss:0x801D3E68; // type:object size:0x4 scope:local data:4byte
|
||||||
decodeStackP = .sbss:0x801D3E6C; // type:object size:0x4 scope:local data:4byte
|
decodeStackP = .sbss:0x801D3E6C; // type:object size:0x4 scope:local data:4byte
|
||||||
decodeRate = .sbss:0x801D3E70; // type:object size:0x4 scope:local data:4byte
|
decodeRate = .sbss:0x801D3E70; // type:object size:0x4 scope:local data:4byte
|
||||||
audioTrack = .sbss:0x801D3E74; // type:object size:0x8 scope:local data:4byte
|
audioTrack = .sbss:0x801D3E74; // type:object size:0x8 scope:local data:4byte
|
||||||
lbl_801D3E80 = .sbss:0x801D3E80; // type:object size:0x4
|
mgBoardHostEnableF = .sbss:0x801D3E80; // type:object size:0x1
|
||||||
lbl_801D3E84 = .sbss:0x801D3E84; // type:object size:0x4
|
mgInstExitEnableF = .sbss:0x801D3E84; // type:object size:0x4
|
||||||
lbl_801D3E88 = .sbss:0x801D3E88; // type:object size:0x4 data:4byte
|
mgPracticeEnableF = .sbss:0x801D3E88; // type:object size:0x4 data:4byte
|
||||||
lbl_801D3E8C = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte
|
mgQuitExtraF = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte
|
||||||
lbl_801D3E90 = .sbss:0x801D3E90; // type:object size:0x4
|
mgRecordExtra = .sbss:0x801D3E90; // type:object size:0x4
|
||||||
lbl_801D3E94 = .sbss:0x801D3E94; // type:object size:0x4
|
lbl_801D3E94 = .sbss:0x801D3E94; // type:object size:0x1
|
||||||
lbl_801D3E98 = .sbss:0x801D3E98; // type:object size:0x8
|
mgBattleStarMax = .sbss:0x801D3E96; // type:object size:0x2
|
||||||
lbl_801D3EA0 = .sbss:0x801D3EA0; // type:object size:0x8
|
mgBattleStar = .sbss:0x801D3E98; // type:object size:0x8
|
||||||
|
mgTypeCurr = .sbss:0x801D3EA0; // type:object size:0x2 data:2byte
|
||||||
curSlotNo = .sbss:0x801D3EA8; // type:object size:0x2 data:2byte
|
curSlotNo = .sbss:0x801D3EA8; // type:object size:0x2 data:2byte
|
||||||
curBoxNo = .sbss:0x801D3EAA; // type:object size:0x1 data:byte
|
curBoxNo = .sbss:0x801D3EAA; // type:object size:0x1 data:byte
|
||||||
saveExecF = .sbss:0x801D3EAC; // type:object size:0x4
|
saveExecF = .sbss:0x801D3EAC; // type:object size:0x4
|
||||||
|
|
|
||||||
101
configure.py
101
configure.py
|
|
@ -271,7 +271,7 @@ def DolphinLib(lib_name, objects):
|
||||||
"objects": objects,
|
"objects": objects,
|
||||||
}
|
}
|
||||||
|
|
||||||
def MusyX(objects, mw_version="GC/2.6", debug=False, major=2, minor=0, patch=0):
|
def MusyX(objects, mw_version="GC/1.3.2", debug=False, major=1, minor=5, patch=4):
|
||||||
cflags = cflags_musyx if not debug else cflags_musyx_debug
|
cflags = cflags_musyx if not debug else cflags_musyx_debug
|
||||||
return {
|
return {
|
||||||
"lib": "musyx",
|
"lib": "musyx",
|
||||||
|
|
@ -313,7 +313,7 @@ config.libs = [
|
||||||
Object(Matching, "game/main.c"),
|
Object(Matching, "game/main.c"),
|
||||||
Object(Matching, "game/pad.c"),
|
Object(Matching, "game/pad.c"),
|
||||||
Object(Matching, "game/dvd.c"),
|
Object(Matching, "game/dvd.c"),
|
||||||
Object(NonMatching, "game/data.c"),
|
Object(Matching, "game/data.c"),
|
||||||
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"),
|
||||||
|
|
@ -332,14 +332,14 @@ config.libs = [
|
||||||
Object(Matching, "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(Matching, "game/fault.c"),
|
||||||
Object(Matching, "game/gamework.c"),
|
Object(Matching, "game/gamework.c"),
|
||||||
Object(NonMatching, "game/objsysobj.c"),
|
Object(Matching, "game/objsysobj.c"),
|
||||||
Object(NonMatching, "game/objdll.c"),
|
Object(Matching, "game/objdll.c"),
|
||||||
Object(Matching, "game/frand.c"),
|
Object(Matching, "game/frand.c"),
|
||||||
Object(Matching, "game/audio.c"),
|
Object(Matching, "game/audio.c"),
|
||||||
Object(Matching, "game/EnvelopeExec.c"),
|
Object(Matching, "game/EnvelopeExec.c"),
|
||||||
Object(NonMatching, "game/minigame_seq.c"),
|
Object(Matching, "game/minigame_seq.c"),
|
||||||
Object(Matching, "game/ovllist.c"),
|
Object(Matching, "game/ovllist.c"),
|
||||||
Object(Matching, "game/esprite.c"),
|
Object(Matching, "game/esprite.c"),
|
||||||
Object(NonMatching, "game/code_8003FF68.c"),
|
Object(NonMatching, "game/code_8003FF68.c"),
|
||||||
|
|
@ -350,22 +350,22 @@ config.libs = [
|
||||||
Object(Matching, "game/messdata.c"),
|
Object(Matching, "game/messdata.c"),
|
||||||
Object(Matching, "game/card.c"),
|
Object(Matching, "game/card.c"),
|
||||||
Object(Matching, "game/armem.c"),
|
Object(Matching, "game/armem.c"),
|
||||||
Object(NonMatching, "game/chrman.c"),
|
Object(Matching, "game/chrman.c"),
|
||||||
Object(NonMatching, "game/mapspace.c"),
|
Object(Matching, "game/mapspace.c"),
|
||||||
Object(Matching, "game/THPSimple.c"),
|
Object(Matching, "game/THPSimple.c"),
|
||||||
Object(Matching, "game/THPDraw.c"),
|
Object(Matching, "game/THPDraw.c"),
|
||||||
Object(Matching, "game/thpmain.c"),
|
Object(Matching, "game/thpmain.c"),
|
||||||
Object(NonMatching, "game/objsub.c"),
|
Object(Matching, "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(Matching, "game/sreset.c"),
|
||||||
Object(Matching, "game/board/main.c"),
|
Object(Matching, "game/board/main.c"),
|
||||||
Object(NonMatching, "game/board/player.c"),
|
Object(NonMatching, "game/board/player.c"),
|
||||||
Object(Matching, "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(Matching, "game/board/audio.c"),
|
||||||
Object(NonMatching, "game/board/com.c"),
|
Object(Matching, "game/board/com.c"),
|
||||||
Object(NonMatching, "game/board/view.c"),
|
Object(Matching, "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"),
|
||||||
|
|
@ -373,22 +373,22 @@ config.libs = [
|
||||||
Object(Matching, "game/board/warp.c"),
|
Object(Matching, "game/board/warp.c"),
|
||||||
Object(NonMatching, "game/board/char_wheel.c"),
|
Object(NonMatching, "game/board/char_wheel.c"),
|
||||||
Object(NonMatching, "game/board/mushroom.c"),
|
Object(NonMatching, "game/board/mushroom.c"),
|
||||||
Object(NonMatching, "game/board/star.c"),
|
Object(Matching, "game/board/star.c"),
|
||||||
Object(NonMatching, "game/board/roll.c"),
|
Object(Matching, "game/board/roll.c"),
|
||||||
Object(Matching, "game/board/ui.c"),
|
Object(Matching, "game/board/ui.c"),
|
||||||
Object(NonMatching, "game/board/block.c"),
|
Object(Matching, "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.c"),
|
Object(NonMatching, "game/board/fortune.c"),
|
||||||
Object(NonMatching, "game/board/boo.c"),
|
Object(Matching, "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"),
|
||||||
Object(NonMatching, "game/board/start.c"),
|
Object(NonMatching, "game/board/start.c"),
|
||||||
Object(NonMatching, "game/board/last5.c"),
|
Object(NonMatching, "game/board/last5.c"),
|
||||||
Object(NonMatching, "game/board/pause.c"),
|
Object(Matching, "game/board/pause.c"),
|
||||||
Object(NonMatching, "game/board/com_path.c"),
|
Object(Matching, "game/board/com_path.c"),
|
||||||
Object(NonMatching, "game/board/tutorial.c"),
|
Object(Matching, "game/board/tutorial.c"),
|
||||||
Object(NonMatching, "game/kerent.c"),
|
Object(NonMatching, "game/kerent.c"),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -665,34 +665,34 @@ config.libs = [
|
||||||
MusyX(
|
MusyX(
|
||||||
objects={
|
objects={
|
||||||
Object(Matching, "musyx/runtime/seq.c"),
|
Object(Matching, "musyx/runtime/seq.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synth.c"),
|
Object(Matching, "musyx/runtime/synth.c"),
|
||||||
Object(Matching, "musyx/runtime/seq_api.c"),
|
Object(Matching, "musyx/runtime/seq_api.c"),
|
||||||
Object(Matching, "musyx/runtime/snd_synthapi.c"),
|
Object(Matching, "musyx/runtime/snd_synthapi.c"),
|
||||||
Object(NonMatching, "musyx/runtime/stream.c"),
|
Object(NonMatching, "musyx/runtime/stream.c"),
|
||||||
Object(Matching, "musyx/runtime/synthdata.c"),
|
Object(Matching, "musyx/runtime/synthdata.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synthmacros.c"),
|
Object(NonMatching, "musyx/runtime/synthmacros.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synthvoice.c"),
|
Object(Matching, "musyx/runtime/synthvoice.c"),
|
||||||
Object(Matching, "musyx/runtime/synth_ac.c"),
|
Object(Matching, "musyx/runtime/synth_ac.c"),
|
||||||
Object(Matching, "musyx/runtime/synth_dbtab.c"),
|
Object(Matching, "musyx/runtime/synth_dbtab.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synth_adsr.c"),
|
Object(Matching, "musyx/runtime/synth_adsr.c"),
|
||||||
Object(NonMatching, "musyx/runtime/synth_vsamples.c"),
|
Object(NonMatching, "musyx/runtime/synth_vsamples.c"),
|
||||||
Object(NonMatching, "musyx/runtime/s_data.c"),
|
Object(Matching, "musyx/runtime/s_data.c"),
|
||||||
Object(NonMatching, "musyx/runtime/hw_dspctrl.c"),
|
Object(NonMatching, "musyx/runtime/hw_dspctrl.c"),
|
||||||
Object(Matching, "musyx/runtime/hw_volconv.c"),
|
Object(Matching, "musyx/runtime/hw_volconv.c"),
|
||||||
Object(Matching, "musyx/runtime/snd3d.c"),
|
Object(Matching, "musyx/runtime/snd3d.c"),
|
||||||
Object(Matching, "musyx/runtime/snd_init.c"),
|
Object(Matching, "musyx/runtime/snd_init.c"),
|
||||||
Object(NonMatching, "musyx/runtime/snd_math.c"),
|
Object(Matching, "musyx/runtime/snd_math.c"),
|
||||||
Object(NonMatching, "musyx/runtime/snd_midictrl.c"),
|
Object(NonMatching, "musyx/runtime/snd_midictrl.c"),
|
||||||
Object(NonMatching, "musyx/runtime/snd_service.c"),
|
Object(Matching, "musyx/runtime/snd_service.c"),
|
||||||
Object(Matching, "musyx/runtime/hardware.c"),
|
Object(Matching, "musyx/runtime/hardware.c"),
|
||||||
Object(Matching, "musyx/runtime/dsp_import.c"),
|
Object(Matching, "musyx/runtime/dsp_import.c"),
|
||||||
Object(Matching, "musyx/runtime/hw_aramdma.c"),
|
Object(Matching, "musyx/runtime/hw_aramdma.c"),
|
||||||
Object(Matching, "musyx/runtime/hw_dolphin.c"),
|
Object(Matching, "musyx/runtime/hw_dolphin.c"),
|
||||||
Object(Matching, "musyx/runtime/hw_memory.c"),
|
Object(Matching, "musyx/runtime/hw_memory.c"),
|
||||||
Object(Matching, "musyx/runtime/CheapReverb/creverb_fx.c"),
|
Object(Matching, "musyx/runtime/CheapReverb/creverb_fx.c"),
|
||||||
Object(NonMatching, "musyx/runtime/CheapReverb/creverb.c"),
|
Object(Matching, "musyx/runtime/CheapReverb/creverb.c"),
|
||||||
Object(Matching, "musyx/runtime/StdReverb/reverb_fx.c"),
|
Object(Matching, "musyx/runtime/StdReverb/reverb_fx.c"),
|
||||||
Object(NonMatching, "musyx/runtime/StdReverb/reverb.c"),
|
Object(Matching, "musyx/runtime/StdReverb/reverb.c"),
|
||||||
Object(Matching, "musyx/runtime/Delay/delay_fx.c"),
|
Object(Matching, "musyx/runtime/Delay/delay_fx.c"),
|
||||||
Object(Matching, "musyx/runtime/Chorus/chorus_fx.c"),
|
Object(Matching, "musyx/runtime/Chorus/chorus_fx.c"),
|
||||||
}
|
}
|
||||||
|
|
@ -836,6 +836,43 @@ config.libs = [
|
||||||
Object(NonMatching, "REL/m407dll/score.c"),
|
Object(NonMatching, "REL/m407dll/score.c"),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
Rel('m408Dll',
|
||||||
|
objects = {
|
||||||
|
Object(Matching, "REL/executor.c"),
|
||||||
|
Object(NonMatching, "REL/m408Dll/main.c"),
|
||||||
|
Object(NonMatching, "REL/m408Dll/camera.c"),
|
||||||
|
Object(NonMatching, "REL/m408Dll/stage.c"),
|
||||||
|
Object(NonMatching, "REL/m408Dll/object.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
Rel('m409Dll',
|
||||||
|
objects = {
|
||||||
|
Object(Matching, "REL/executor.c"),
|
||||||
|
Object(NonMatching, "REL/m409Dll/main.c"),
|
||||||
|
Object(NonMatching, "REL/m409Dll/player.c"),
|
||||||
|
Object(NonMatching, "REL/m409Dll/cursor.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
Rel('m410Dll',
|
||||||
|
objects = {
|
||||||
|
Object(Matching, "REL/executor.c"),
|
||||||
|
Object(NonMatching, "REL/m410Dll/main.c"),
|
||||||
|
Object(NonMatching, "REL/m410Dll/stage.c"),
|
||||||
|
Object(NonMatching, "REL/m410Dll/game.c"),
|
||||||
|
Object(NonMatching, "REL/m410Dll/player.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
Rel('m411Dll',
|
||||||
|
objects = {
|
||||||
|
Object(Matching, "REL/executor.c"),
|
||||||
|
Object(NonMatching, "REL/m411Dll/main.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
|
Rel('m450Dll',
|
||||||
|
objects = {
|
||||||
|
Object(NonMatching, "REL/m450Dll/main.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
Rel('mentDll',
|
Rel('mentDll',
|
||||||
objects = {
|
objects = {
|
||||||
Object(NonMatching, "REL/mentDll/common.c"),
|
Object(NonMatching, "REL/mentDll/common.c"),
|
||||||
|
|
@ -861,6 +898,14 @@ config.libs = [
|
||||||
Object(NonMatching, "REL/mgmodedll/minigame.c"),
|
Object(NonMatching, "REL/mgmodedll/minigame.c"),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
Rel('modeltestDll',
|
||||||
|
objects = {
|
||||||
|
Object(Matching, "REL/executor.c"),
|
||||||
|
Object(Matching, "REL/modeltestDll/main.c"),
|
||||||
|
Object(Matching, "REL/modeltestDll/modeltest00.c"),
|
||||||
|
Object(NonMatching, "REL/modeltestDll/modeltest01.c"),
|
||||||
|
}
|
||||||
|
),
|
||||||
Rel('modeseldll',
|
Rel('modeseldll',
|
||||||
objects = {
|
objects = {
|
||||||
Object(Matching, "REL/executor.c"),
|
Object(Matching, "REL/executor.c"),
|
||||||
|
|
|
||||||
50
include/REL/modeltestDll.h
Normal file
50
include/REL/modeltestDll.h
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef REL_MODELTEST_H
|
||||||
|
#define REL_MODELTEST_H
|
||||||
|
|
||||||
|
#include "game/hsfdraw.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
#define US_PER_60TH_SEC (1000000.0f / 60.0f)
|
||||||
|
#define US_TO_60TH_SEC(us) ((us) / US_PER_60TH_SEC)
|
||||||
|
#define FB_SIZE(width, height) width * height * 2
|
||||||
|
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
s16 unk0[7];
|
||||||
|
} HuUnkF9C2;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
Point3d pos; // 0000
|
||||||
|
Point3d rot; // 000C
|
||||||
|
Point3d scale; // 0018
|
||||||
|
s32 unk24;
|
||||||
|
s32 unk28;
|
||||||
|
s32 unk2C;
|
||||||
|
HsfObject * obj; // 0030
|
||||||
|
} HuObjUnk;
|
||||||
|
|
||||||
|
extern Point3d CRot;
|
||||||
|
extern Point3d Center;
|
||||||
|
extern f32 CZoom;
|
||||||
|
void fn_1_29C();
|
||||||
|
void fn_1_28F8(Point3d * arg0, Point3d * arg1);
|
||||||
|
extern void omOutView();
|
||||||
|
void fn_1_37DC(omObjData*);
|
||||||
|
void fn_1_439C(omObjData*);
|
||||||
|
void fn_1_46F0();
|
||||||
|
|
||||||
|
s16 MGSeqCreate(s16, ...);
|
||||||
|
void MGSeqParamSet(s16, s16, s16);
|
||||||
|
typedef void (omObjFunc2)(struct om_obj_data *);
|
||||||
|
omObjFunc2 fn_1_F9C;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
@ -45,7 +45,7 @@ typedef struct w10DllUnk04 {
|
||||||
extern s16 lbl_1_bss_20;
|
extern s16 lbl_1_bss_20;
|
||||||
extern s16 lbl_1_bss_22[];
|
extern s16 lbl_1_bss_22[];
|
||||||
extern s16 lbl_1_bss_20;
|
extern s16 lbl_1_bss_20;
|
||||||
extern s32 boardTutorialData;
|
extern s32 boardTutorialData[4];
|
||||||
|
|
||||||
void fn_1_C10(s16);
|
void fn_1_C10(s16);
|
||||||
void fn_1_1FB0(void);
|
void fn_1_1FB0(void);
|
||||||
|
|
|
||||||
|
|
@ -12,37 +12,28 @@ typedef s32 (*BoardSpaceEventFunc)(void);
|
||||||
typedef void (*BoardLightHook)(void);
|
typedef void (*BoardLightHook)(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void BoardCameraTargetModelSet(s16 model);
|
|
||||||
void BoardCameraMotionStartEx(s16, Vec *, Vec *, f32, f32, s16);
|
|
||||||
void BoardCameraMotionWait(void);
|
|
||||||
s32 BoardSpacePosGet(s32, s32, Vec*);
|
s32 BoardSpacePosGet(s32, s32, Vec*);
|
||||||
void BoardShopTutorialExec(s32);
|
void BoardShopTutorialExec(s32);
|
||||||
void BoardLotteryTutorialExec(void);
|
void BoardLotteryTutorialExec(void);
|
||||||
s16 BoardStarHostMdlGet(void);
|
|
||||||
void BoardStatusShowSetAll(s32);
|
|
||||||
void BoardMGSetupTutorialExec(void);
|
void BoardMGSetupTutorialExec(void);
|
||||||
void BoardBooHouseTutorialExec(void);
|
void BoardBooHouseTutorialExec(void);
|
||||||
void BoardStatusItemSet(s32);
|
|
||||||
void BoardTutorialItemSet(s32);
|
|
||||||
void BoardCharWheelSetTarget(s32);
|
void BoardCharWheelSetTarget(s32);
|
||||||
void BoardTutorialDirInputSet(s32, s32, s32);
|
|
||||||
void BoardSpaceStarSetIndex(s32);
|
void BoardSpaceStarSetIndex(s32);
|
||||||
void BoardModelRotYSet(s16, f32);
|
s32 BoardModelRotYSet(s16, f32);
|
||||||
f32 BoardModelRotYGet(s16);
|
f32 BoardModelRotYGet(s16);
|
||||||
void BoardModelLayerSet(s16, u8);
|
s32 BoardModelLayerSet(s16, u8);
|
||||||
void BoardTutorialHostSet(s16);
|
|
||||||
s16 BoardModelIDGet(s16);
|
s16 BoardModelIDGet(s16);
|
||||||
void BoardModelScaleSetV(s16, Vec*);
|
s32 BoardModelScaleSetV(s16, Vec*);
|
||||||
void BoardLightHookSet(BoardLightHook set, BoardLightHook reset);
|
void BoardLightHookSet(BoardLightHook set, BoardLightHook reset);
|
||||||
s16 BoardModelCreate(s32, void*, s32);
|
s16 BoardModelCreate(s32, s32*, s32);
|
||||||
void BoardModelKill(s16);
|
void BoardModelKill(s16);
|
||||||
void fn_8006DDE8(s16, f32);
|
s32 fn_8006DDE8(s16, f32);
|
||||||
s32 BoardModelMotionStart(s16, s32, s32);
|
s32 BoardModelMotionStart(s16, s32, u32);
|
||||||
void BoardModelMotionSpeedSet(s16, f32);
|
s32 BoardModelMotionSpeedSet(s16, f32);
|
||||||
void BoardModelPosSetV(s16, Vec*);
|
s32 BoardModelPosSetV(s16, Vec*);
|
||||||
void BoardModelPosSet(s16, f32, f32, f32);
|
s32 BoardModelPosSet(s16, f32, f32, f32);
|
||||||
void BoardModelRotSetV(s16 arg0, Vec* arg1);
|
s32 BoardModelRotSetV(s16 arg0, Vec* arg1);
|
||||||
void BoardModelVisibilitySet(s16, s32);
|
s32 BoardModelVisibilitySet(s16, s32);
|
||||||
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
|
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
|
||||||
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
|
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
|
||||||
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
|
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
|
||||||
|
|
@ -51,15 +42,12 @@ void BoardSpaceInit(s32);
|
||||||
void BoardSpaceDestroy(void);
|
void BoardSpaceDestroy(void);
|
||||||
void BoardShopHostSet(s16);
|
void BoardShopHostSet(s16);
|
||||||
void BoardLotteryHostSet(s16);
|
void BoardLotteryHostSet(s16);
|
||||||
void BoardStarHostSet(s16);
|
|
||||||
void BoardBooHouseHostSet(s16);
|
void BoardBooHouseHostSet(s16);
|
||||||
void BoardTutorialHookSet(void*);
|
|
||||||
void BoardTutorialBlockSetPos(s32, s32);
|
|
||||||
s32 BoardCameraRotGet(Vec*);
|
s32 BoardCameraRotGet(Vec*);
|
||||||
void BoardModelScaleSet(s16, f32, f32, f32);
|
s32 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);
|
s32 BoardModelRotSet(s16, f32, f32, f32);
|
||||||
|
|
||||||
void BoardBowserExec(s32 player, s32 space);
|
void BoardBowserExec(s32 player, s32 space);
|
||||||
void BoardBattleExec(s32 player, s32 space);
|
void BoardBattleExec(s32 player, s32 space);
|
||||||
|
|
|
||||||
23
include/data_num/title.h
Normal file
23
include/data_num/title.h
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef DATANUM_TITLE_H
|
||||||
|
#define DATANUM_TITLE_H
|
||||||
|
|
||||||
|
#include "datadir_enum.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
TITLE_NINTENDO_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 0),
|
||||||
|
TITLE_HUDSON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 1),
|
||||||
|
TITLE_PRESS_START_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 2),
|
||||||
|
TITLE_PROGRESSIVE_CHOOSE_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 3),
|
||||||
|
TITLE_PROGRESSIVE_ON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 4),
|
||||||
|
TITLE_PROGRESSIVE_OFF_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 5),
|
||||||
|
TITLE_PROGRESSIVE_CURSOR_ON_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 6),
|
||||||
|
TITLE_PROGRESSIVE_CURSOR_OFF_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 7),
|
||||||
|
TITLE_BG_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 8),
|
||||||
|
TITLE_LOGO_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 9),
|
||||||
|
TITLE_COPYRIGHT_ANM = DATA_MAKE_NUM(DATADIR_TITLE, 10),
|
||||||
|
TITLE_CHAR_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 11),
|
||||||
|
TITLE_CUBE_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 12),
|
||||||
|
TITLE_SKY_HSF = DATA_MAKE_NUM(DATADIR_TITLE, 13),
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
42
include/data_num/win.h
Normal file
42
include/data_num/win.h
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#ifndef DATANUM_WIN_H
|
||||||
|
#define DATANUM_WIN_H
|
||||||
|
|
||||||
|
#include "datadir_enum.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
WIN_FONTJ_ANM = DATA_MAKE_NUM(DATADIR_WIN, 0),
|
||||||
|
WIN_FONTE_ANM = DATA_MAKE_NUM(DATADIR_WIN, 1),
|
||||||
|
WIN_CURSOR_ANM = DATA_MAKE_NUM(DATADIR_WIN, 2),
|
||||||
|
WIN_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 3),
|
||||||
|
WIN_CARDA_ANM = DATA_MAKE_NUM(DATADIR_WIN, 4),
|
||||||
|
WIN_CARDB_ANM = DATA_MAKE_NUM(DATADIR_WIN, 5),
|
||||||
|
WIN_FRAME1_ANM = DATA_MAKE_NUM(DATADIR_WIN, 6),
|
||||||
|
WIN_FRAME2_ANM = DATA_MAKE_NUM(DATADIR_WIN, 7),
|
||||||
|
WIN_FRAME3_ANM = DATA_MAKE_NUM(DATADIR_WIN, 8),
|
||||||
|
WIN_W01_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 9),
|
||||||
|
WIN_W02_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 10),
|
||||||
|
WIN_W03_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 11),
|
||||||
|
WIN_W04_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 12),
|
||||||
|
WIN_W05_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 13),
|
||||||
|
WIN_W06_HOST_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 14),
|
||||||
|
WIN_TOAD_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 15),
|
||||||
|
WIN_BOBOMB_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 16),
|
||||||
|
WIN_SHYGUY_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 17),
|
||||||
|
WIN_BOO_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 18),
|
||||||
|
WIN_GOOMBA_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 19),
|
||||||
|
WIN_BOWSER_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 20),
|
||||||
|
WIN_KKID_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 21),
|
||||||
|
WIN_KOOPA_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 22),
|
||||||
|
WIN_CONDOR_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 23),
|
||||||
|
WIN_BOO_BLUE_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 24),
|
||||||
|
WIN_DOLPHIN_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 25),
|
||||||
|
WIN_BOO_RED_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 26),
|
||||||
|
WIN_THWOMP_TALK_ANM = DATA_MAKE_NUM(DATADIR_WIN, 27),
|
||||||
|
WIN_CARD_BOX1_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 28),
|
||||||
|
WIN_CARD_BOX2_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 29),
|
||||||
|
WIN_CARD_BOX3_ICON_ANM = DATA_MAKE_NUM(DATADIR_WIN, 30),
|
||||||
|
WIN_CARD_BANNER_ANM = DATA_MAKE_NUM(DATADIR_WIN, 31),
|
||||||
|
WIN_SAVE_BG_ANM = DATA_MAKE_NUM(DATADIR_WIN, 32),
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
23
include/datadir_enum.h
Normal file
23
include/datadir_enum.h
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef DATADIR_ENUM
|
||||||
|
#define DATADIR_ENUM
|
||||||
|
|
||||||
|
#define DATADIR_DEFINE(name, path) DATADIR_ID_##name,
|
||||||
|
|
||||||
|
enum {
|
||||||
|
#include "datadir_table.h"
|
||||||
|
DATADIR_ID_MAX
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef DATADIR_DEFINE
|
||||||
|
|
||||||
|
#define DATADIR_DEFINE(name, path) DATADIR_##name = (DATADIR_ID_##name) << 16,
|
||||||
|
|
||||||
|
enum {
|
||||||
|
#include "datadir_table.h"
|
||||||
|
};
|
||||||
|
|
||||||
|
#undef DATADIR_DEFINE
|
||||||
|
|
||||||
|
#define DATA_MAKE_NUM(dir, file) ((dir)+(file))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -1,140 +1,140 @@
|
||||||
DATADIR_DEFINE(DATADIR_E3SETUP, "data/E3setup.bin")
|
DATADIR_DEFINE(E3SETUP, "data/E3setup.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BBATTLE, "data/bbattle.bin")
|
DATADIR_DEFINE(BBATTLE, "data/bbattle.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BGUEST, "data/bguest.bin")
|
DATADIR_DEFINE(BGUEST, "data/bguest.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BKOOPA, "data/bkoopa.bin")
|
DATADIR_DEFINE(BKOOPA, "data/bkoopa.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BKOOPASUIT, "data/bkoopasuit.bin")
|
DATADIR_DEFINE(BKOOPASUIT, "data/bkoopasuit.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BKUJIYA, "data/bkujiya.bin")
|
DATADIR_DEFINE(BKUJIYA, "data/bkujiya.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BLAST5, "data/blast5.bin")
|
DATADIR_DEFINE(BLAST5, "data/blast5.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BOARD, "data/board.bin")
|
DATADIR_DEFINE(BOARD, "data/board.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BPAUSE, "data/bpause.bin")
|
DATADIR_DEFINE(BPAUSE, "data/bpause.bin")
|
||||||
DATADIR_DEFINE(DATADIR_BYOKODORI, "data/byokodori.bin")
|
DATADIR_DEFINE(BYOKODORI, "data/byokodori.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DAISY, "data/daisy.bin")
|
DATADIR_DEFINE(DAISY, "data/daisy.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DAISYMDL0, "data/daisymdl0.bin")
|
DATADIR_DEFINE(DAISYMDL0, "data/daisymdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DAISYMDL1, "data/daisymdl1.bin")
|
DATADIR_DEFINE(DAISYMDL1, "data/daisymdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DAISYMOT, "data/daisymot.bin")
|
DATADIR_DEFINE(DAISYMOT, "data/daisymot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DONKEY, "data/donkey.bin")
|
DATADIR_DEFINE(DONKEY, "data/donkey.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DONKEYMDL0, "data/donkeymdl0.bin")
|
DATADIR_DEFINE(DONKEYMDL0, "data/donkeymdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DONKEYMDL1, "data/donkeymdl1.bin")
|
DATADIR_DEFINE(DONKEYMDL1, "data/donkeymdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_DONKEYMOT, "data/donkeymot.bin")
|
DATADIR_DEFINE(DONKEYMOT, "data/donkeymot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_EFFECT, "data/effect.bin")
|
DATADIR_DEFINE(EFFECT, "data/effect.bin")
|
||||||
DATADIR_DEFINE(DATADIR_GAMEMES, "data/gamemes.bin")
|
DATADIR_DEFINE(GAMEMES, "data/gamemes.bin")
|
||||||
DATADIR_DEFINE(DATADIR_INST, "data/inst.bin")
|
DATADIR_DEFINE(INST, "data/inst.bin")
|
||||||
DATADIR_DEFINE(DATADIR_INSTFONT, "data/instfont.bin")
|
DATADIR_DEFINE(INSTFONT, "data/instfont.bin")
|
||||||
DATADIR_DEFINE(DATADIR_INSTPIC, "data/instpic.bin")
|
DATADIR_DEFINE(INSTPIC, "data/instpic.bin")
|
||||||
DATADIR_DEFINE(DATADIR_LUIGI, "data/luigi.bin")
|
DATADIR_DEFINE(LUIGI, "data/luigi.bin")
|
||||||
DATADIR_DEFINE(DATADIR_LUIGIMDL0, "data/luigimdl0.bin")
|
DATADIR_DEFINE(LUIGIMDL0, "data/luigimdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_LUIGIMDL1, "data/luigimdl1.bin")
|
DATADIR_DEFINE(LUIGIMDL1, "data/luigimdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_LUIGIMOT, "data/luigimot.bin")
|
DATADIR_DEFINE(LUIGIMOT, "data/luigimot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M300, "data/m300.bin")
|
DATADIR_DEFINE(M300, "data/m300.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M302, "data/m302.bin")
|
DATADIR_DEFINE(M302, "data/m302.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M303, "data/m303.bin")
|
DATADIR_DEFINE(M303, "data/m303.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M330, "data/m330.bin")
|
DATADIR_DEFINE(M330, "data/m330.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M333, "data/m333.bin")
|
DATADIR_DEFINE(M333, "data/m333.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M401, "data/m401.bin")
|
DATADIR_DEFINE(M401, "data/m401.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M402, "data/m402.bin")
|
DATADIR_DEFINE(M402, "data/m402.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M403, "data/m403.bin")
|
DATADIR_DEFINE(M403, "data/m403.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M404, "data/m404.bin")
|
DATADIR_DEFINE(M404, "data/m404.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M405, "data/m405.bin")
|
DATADIR_DEFINE(M405, "data/m405.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M406, "data/m406.bin")
|
DATADIR_DEFINE(M406, "data/m406.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M407, "data/m407.bin")
|
DATADIR_DEFINE(M407, "data/m407.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M408, "data/m408.bin")
|
DATADIR_DEFINE(M408, "data/m408.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M409, "data/m409.bin")
|
DATADIR_DEFINE(M409, "data/m409.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M410, "data/m410.bin")
|
DATADIR_DEFINE(M410, "data/m410.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M411, "data/m411.bin")
|
DATADIR_DEFINE(M411, "data/m411.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M412, "data/m412.bin")
|
DATADIR_DEFINE(M412, "data/m412.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M413, "data/m413.bin")
|
DATADIR_DEFINE(M413, "data/m413.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M414, "data/m414.bin")
|
DATADIR_DEFINE(M414, "data/m414.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M415, "data/m415.bin")
|
DATADIR_DEFINE(M415, "data/m415.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M416, "data/m416.bin")
|
DATADIR_DEFINE(M416, "data/m416.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M417, "data/m417.bin")
|
DATADIR_DEFINE(M417, "data/m417.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M418, "data/m418.bin")
|
DATADIR_DEFINE(M418, "data/m418.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M419, "data/m419.bin")
|
DATADIR_DEFINE(M419, "data/m419.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M420, "data/m420.bin")
|
DATADIR_DEFINE(M420, "data/m420.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M421, "data/m421.bin")
|
DATADIR_DEFINE(M421, "data/m421.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M422, "data/m422.bin")
|
DATADIR_DEFINE(M422, "data/m422.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M423, "data/m423.bin")
|
DATADIR_DEFINE(M423, "data/m423.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M424, "data/m424.bin")
|
DATADIR_DEFINE(M424, "data/m424.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M425, "data/m425.bin")
|
DATADIR_DEFINE(M425, "data/m425.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M426, "data/m426.bin")
|
DATADIR_DEFINE(M426, "data/m426.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M427, "data/m427.bin")
|
DATADIR_DEFINE(M427, "data/m427.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M428, "data/m428.bin")
|
DATADIR_DEFINE(M428, "data/m428.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M429, "data/m429.bin")
|
DATADIR_DEFINE(M429, "data/m429.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M430, "data/m430.bin")
|
DATADIR_DEFINE(M430, "data/m430.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M431, "data/m431.bin")
|
DATADIR_DEFINE(M431, "data/m431.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M432, "data/m432.bin")
|
DATADIR_DEFINE(M432, "data/m432.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M433, "data/m433.bin")
|
DATADIR_DEFINE(M433, "data/m433.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M434, "data/m434.bin")
|
DATADIR_DEFINE(M434, "data/m434.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M435, "data/m435.bin")
|
DATADIR_DEFINE(M435, "data/m435.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M436, "data/m436.bin")
|
DATADIR_DEFINE(M436, "data/m436.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M437, "data/m437.bin")
|
DATADIR_DEFINE(M437, "data/m437.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M438, "data/m438.bin")
|
DATADIR_DEFINE(M438, "data/m438.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M439, "data/m439.bin")
|
DATADIR_DEFINE(M439, "data/m439.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M440, "data/m440.bin")
|
DATADIR_DEFINE(M440, "data/m440.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M441, "data/m441.bin")
|
DATADIR_DEFINE(M441, "data/m441.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M442, "data/m442.bin")
|
DATADIR_DEFINE(M442, "data/m442.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M443, "data/m443.bin")
|
DATADIR_DEFINE(M443, "data/m443.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M444, "data/m444.bin")
|
DATADIR_DEFINE(M444, "data/m444.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M445, "data/m445.bin")
|
DATADIR_DEFINE(M445, "data/m445.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M446, "data/m446.bin")
|
DATADIR_DEFINE(M446, "data/m446.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M447, "data/m447.bin")
|
DATADIR_DEFINE(M447, "data/m447.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M448, "data/m448.bin")
|
DATADIR_DEFINE(M448, "data/m448.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M449, "data/m449.bin")
|
DATADIR_DEFINE(M449, "data/m449.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M450, "data/m450.bin")
|
DATADIR_DEFINE(M450, "data/m450.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M451, "data/m451.bin")
|
DATADIR_DEFINE(M451, "data/m451.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M453, "data/m453.bin")
|
DATADIR_DEFINE(M453, "data/m453.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M455, "data/m455.bin")
|
DATADIR_DEFINE(M455, "data/m455.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M456, "data/m456.bin")
|
DATADIR_DEFINE(M456, "data/m456.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M457, "data/m457.bin")
|
DATADIR_DEFINE(M457, "data/m457.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M458, "data/m458.bin")
|
DATADIR_DEFINE(M458, "data/m458.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M459, "data/m459.bin")
|
DATADIR_DEFINE(M459, "data/m459.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M460, "data/m460.bin")
|
DATADIR_DEFINE(M460, "data/m460.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M461, "data/m461.bin")
|
DATADIR_DEFINE(M461, "data/m461.bin")
|
||||||
DATADIR_DEFINE(DATADIR_M462, "data/m462.bin")
|
DATADIR_DEFINE(M462, "data/m462.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MARIO, "data/mario.bin")
|
DATADIR_DEFINE(MARIO, "data/mario.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MARIOMDL0, "data/mariomdl0.bin")
|
DATADIR_DEFINE(MARIOMDL0, "data/mariomdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MARIOMDL1, "data/mariomdl1.bin")
|
DATADIR_DEFINE(MARIOMDL1, "data/mariomdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MARIOMOT, "data/mariomot.bin")
|
DATADIR_DEFINE(MARIOMOT, "data/mariomot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MENT, "data/ment.bin")
|
DATADIR_DEFINE(MENT, "data/ment.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MGCONST, "data/mgconst.bin")
|
DATADIR_DEFINE(MGCONST, "data/mgconst.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MGMODE, "data/mgmode.bin")
|
DATADIR_DEFINE(MGMODE, "data/mgmode.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MODESEL, "data/modesel.bin")
|
DATADIR_DEFINE(MODESEL, "data/modesel.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MPEX, "data/mpex.bin")
|
DATADIR_DEFINE(MPEX, "data/mpex.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MSTORY, "data/mstory.bin")
|
DATADIR_DEFINE(MSTORY, "data/mstory.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MSTORY2, "data/mstory2.bin")
|
DATADIR_DEFINE(MSTORY2, "data/mstory2.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MSTORY3, "data/mstory3.bin")
|
DATADIR_DEFINE(MSTORY3, "data/mstory3.bin")
|
||||||
DATADIR_DEFINE(DATADIR_MSTORY4, "data/mstory4.bin")
|
DATADIR_DEFINE(MSTORY4, "data/mstory4.bin")
|
||||||
DATADIR_DEFINE(DATADIR_OPTION, "data/option.bin")
|
DATADIR_DEFINE(OPTION, "data/option.bin")
|
||||||
DATADIR_DEFINE(DATADIR_PEACH, "data/peach.bin")
|
DATADIR_DEFINE(PEACH, "data/peach.bin")
|
||||||
DATADIR_DEFINE(DATADIR_PEACHMDL0, "data/peachmdl0.bin")
|
DATADIR_DEFINE(PEACHMDL0, "data/peachmdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_PEACHMDL1, "data/peachmdl1.bin")
|
DATADIR_DEFINE(PEACHMDL1, "data/peachmdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_PEACHMOT, "data/peachmot.bin")
|
DATADIR_DEFINE(PEACHMOT, "data/peachmot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_PRESENT, "data/present.bin")
|
DATADIR_DEFINE(PRESENT, "data/present.bin")
|
||||||
DATADIR_DEFINE(DATADIR_RESULT, "data/result.bin")
|
DATADIR_DEFINE(RESULT, "data/result.bin")
|
||||||
DATADIR_DEFINE(DATADIR_SAF, "data/saf.bin")
|
DATADIR_DEFINE(SAF, "data/saf.bin")
|
||||||
DATADIR_DEFINE(DATADIR_SELMENU, "data/selmenu.bin")
|
DATADIR_DEFINE(SELMENU, "data/selmenu.bin")
|
||||||
DATADIR_DEFINE(DATADIR_SETUP, "data/setup.bin")
|
DATADIR_DEFINE(SETUP, "data/setup.bin")
|
||||||
DATADIR_DEFINE(DATADIR_STAFF, "data/staff.bin")
|
DATADIR_DEFINE(STAFF, "data/staff.bin")
|
||||||
DATADIR_DEFINE(DATADIR_TITLE, "data/title.bin")
|
DATADIR_DEFINE(TITLE, "data/title.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W01, "data/w01.bin")
|
DATADIR_DEFINE(W01, "data/w01.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W02, "data/w02.bin")
|
DATADIR_DEFINE(W02, "data/w02.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W03, "data/w03.bin")
|
DATADIR_DEFINE(W03, "data/w03.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W04, "data/w04.bin")
|
DATADIR_DEFINE(W04, "data/w04.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W05, "data/w05.bin")
|
DATADIR_DEFINE(W05, "data/w05.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W06, "data/w06.bin")
|
DATADIR_DEFINE(W06, "data/w06.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W10, "data/w10.bin")
|
DATADIR_DEFINE(W10, "data/w10.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W20, "data/w20.bin")
|
DATADIR_DEFINE(W20, "data/w20.bin")
|
||||||
DATADIR_DEFINE(DATADIR_W21, "data/w21.bin")
|
DATADIR_DEFINE(W21, "data/w21.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WALUIGI, "data/waluigi.bin")
|
DATADIR_DEFINE(WALUIGI, "data/waluigi.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WALUIGIMDL0, "data/waluigimdl0.bin")
|
DATADIR_DEFINE(WALUIGIMDL0, "data/waluigimdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WALUIGIMDL1, "data/waluigimdl1.bin")
|
DATADIR_DEFINE(WALUIGIMDL1, "data/waluigimdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WALUIGIMOT, "data/waluigimot.bin")
|
DATADIR_DEFINE(WALUIGIMOT, "data/waluigimot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WARIO, "data/wario.bin")
|
DATADIR_DEFINE(WARIO, "data/wario.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WARIOMDL0, "data/wariomdl0.bin")
|
DATADIR_DEFINE(WARIOMDL0, "data/wariomdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WARIOMDL1, "data/wariomdl1.bin")
|
DATADIR_DEFINE(WARIOMDL1, "data/wariomdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WARIOMOT, "data/wariomot.bin")
|
DATADIR_DEFINE(WARIOMOT, "data/wariomot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_WIN, "data/win.bin")
|
DATADIR_DEFINE(WIN, "data/win.bin")
|
||||||
DATADIR_DEFINE(DATADIR_YOSHI, "data/yoshi.bin")
|
DATADIR_DEFINE(YOSHI, "data/yoshi.bin")
|
||||||
DATADIR_DEFINE(DATADIR_YOSHIMDL0, "data/yoshimdl0.bin")
|
DATADIR_DEFINE(YOSHIMDL0, "data/yoshimdl0.bin")
|
||||||
DATADIR_DEFINE(DATADIR_YOSHIMDL1, "data/yoshimdl1.bin")
|
DATADIR_DEFINE(YOSHIMDL1, "data/yoshimdl1.bin")
|
||||||
DATADIR_DEFINE(DATADIR_YOSHIMOT, "data/yoshimot.bin")
|
DATADIR_DEFINE(YOSHIMOT, "data/yoshimot.bin")
|
||||||
DATADIR_DEFINE(DATADIR_ZTAR, "data/ztar.bin")
|
DATADIR_DEFINE(ZTAR, "data/ztar.bin")
|
||||||
19
include/game/board/audio.h
Executable file
19
include/game/board/audio.h
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef _BOARD_AUDIO_H
|
||||||
|
#define _BOARD_AUDIO_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
void BoardMusStartBoard(void);
|
||||||
|
void BoardMusStart(s32 arg0, s32 arg1, s8 arg2, u16 arg3);
|
||||||
|
void BoardAudSeqFadeOutFast(s32 arg0);
|
||||||
|
void BoardAudSeqFadeOut(s32 arg0, u16 arg1);
|
||||||
|
void BoardMusLoudSet(s32 arg0, s32 arg1);
|
||||||
|
void BoardMusVolPanSet(s32 arg0, s8 arg1, u16 arg2);
|
||||||
|
void BoardAudSeqPause(s32 arg0, s32 arg1, u16 arg2);
|
||||||
|
s32 BoardMusStatusGet(s32 arg0);
|
||||||
|
void BoardAudSeqClear(void);
|
||||||
|
void BoardAudSeqFadeOutAll(void);
|
||||||
|
void BoardAudFXPlay(void);
|
||||||
|
void BoardAudFXStop(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
18
include/game/board/boo.h
Executable file
18
include/game/board/boo.h
Executable file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef _BOARD_BOO_H
|
||||||
|
#define _BOARD_BOO_H
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
|
||||||
|
s16 BoardBooCreate(s32 arg0, Vec *arg1);
|
||||||
|
void BoardBooKill(void);
|
||||||
|
s32 BoardBooStealTypeSet(s32 arg0);
|
||||||
|
s32 BoardBooStealMain(void);
|
||||||
|
BOOL CheckBallCoinDone(void);
|
||||||
|
void TakeBallStar(void);
|
||||||
|
void ExecTakeBallStar(omObjData *arg0);
|
||||||
|
BOOL CheckTakeBallStarDone(void);
|
||||||
|
s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1);
|
||||||
|
BOOL BoardBooStealLightCheck(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
19
include/game/board/com.h
Executable file
19
include/game/board/com.h
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef _BOARD_COM_H
|
||||||
|
#define _BOARD_COM_H
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
|
||||||
|
void BoardComKeySetLeft(void);
|
||||||
|
void BoardComKeySetRight(void);
|
||||||
|
void BoardComKeySetUp(void);
|
||||||
|
void BoardComKeySetDown(void);
|
||||||
|
s8 BoardComPreferItemGet(s32 arg0, s8 *arg1, s8 arg2);
|
||||||
|
s8 BoardComPreferItemCheck(s32 arg0, s8 arg1, s8 arg2, s8 arg3);
|
||||||
|
s32 BoardComItemWeightGet(s32 arg0, s32 arg1);
|
||||||
|
s32 BoardComTutorialItemGet(s32 arg0);
|
||||||
|
s32 BoardComUseItemSet(s32 arg0, s32 arg1);
|
||||||
|
BOOL BoardComUseItemCheck(s32 arg0);
|
||||||
|
s32 BoardComJunctionInputGet(s32 arg0, Vec *arg1, s32 arg2, float *arg3);
|
||||||
|
s32 BoardComBestPlayerFind(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
11
include/game/board/com_path.h
Executable file
11
include/game/board/com_path.h
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef _BOARD_COM_PATH_H
|
||||||
|
#define _BOARD_COM_PATH_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
s16 BoardComPathReachCheck(s16 arg0, u32 arg1, s32 arg2);
|
||||||
|
s16 BoardComPathBestGet(s16 arg0);
|
||||||
|
s16 BoardComPathLenGet(s16 arg0, s16 arg1);
|
||||||
|
s16 BoardComPathW20BestGet(s16 arg0, u32 arg1, s16 arg2);
|
||||||
|
|
||||||
|
#endif
|
||||||
11
include/game/board/item.h
Executable file
11
include/game/board/item.h
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef _BOARD_ITEM_H
|
||||||
|
#define _BOARD_ITEM_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
void BoardItemStart(s32 arg0, s32 arg1);
|
||||||
|
BOOL BoardItemDoneCheck(void);
|
||||||
|
void BoardItemPlayerRestore(s32 arg0, s32 arg1);
|
||||||
|
void BoardItemBagItemSet(s16 *arg0);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -77,6 +77,8 @@ typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera);
|
||||||
typedef void (*BoardTurnStartHook)(s32 player, s32 space);
|
typedef void (*BoardTurnStartHook)(s32 player, s32 space);
|
||||||
|
|
||||||
extern BoardTurnStartHook boardTurnStartFunc;
|
extern BoardTurnStartHook boardTurnStartFunc;
|
||||||
|
extern void (*boardStarShowNextHook)(void);
|
||||||
|
extern void (*boardStarGiveHook)(void);
|
||||||
extern BoardFunc boardTurnFunc;
|
extern BoardFunc boardTurnFunc;
|
||||||
extern BoardLightHook boardLightResetHook;
|
extern BoardLightHook boardLightResetHook;
|
||||||
extern BoardLightHook boardLightSetHook;
|
extern BoardLightHook boardLightSetHook;
|
||||||
|
|
@ -87,8 +89,8 @@ s32 BoardIsKill(void);
|
||||||
void BoardPauseDisableSet(s32 value);
|
void BoardPauseDisableSet(s32 value);
|
||||||
s32 BoardPauseDisableGet();
|
s32 BoardPauseDisableGet();
|
||||||
void BoardSaveInit(s32 board);
|
void BoardSaveInit(s32 board);
|
||||||
void BoardStoryConfigSet(s32 mg_type, s32 diff_story);
|
void BoardStoryConfigSet(s32 mg_list, 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_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap);
|
||||||
s32 BoardTurnNext(void);
|
s32 BoardTurnNext(void);
|
||||||
void BoardNextOvlSet(OverlayID overlay);
|
void BoardNextOvlSet(OverlayID overlay);
|
||||||
s32 BoardStartCheck(void);
|
s32 BoardStartCheck(void);
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,19 @@ s32 BoardModelAmbSet(s16 model, float r, float g, float b);
|
||||||
s32 BoardModelExistCheck(s16 model, s32 arg1);
|
s32 BoardModelExistCheck(s16 model, s32 arg1);
|
||||||
s32 BoardModelExistDupe(s16 model, s32 arg1);
|
s32 BoardModelExistDupe(s16 model, s32 arg1);
|
||||||
s32 fn_8006DDE8(s16 model, float arg1);
|
s32 fn_8006DDE8(s16 model, float arg1);
|
||||||
|
s32 BoardModelMotionCreate(s16 model, s32 data_num);
|
||||||
|
s32 BoardModelMotionKill(s16 model, s32 motion);
|
||||||
|
s32 BoardModelMotionStartEndSet(s16 model, s16 start, s16 end);
|
||||||
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
|
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
|
||||||
|
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
|
||||||
|
s32 BoardModelAttrSet(s16 model, u32 attr);
|
||||||
|
s32 BoardModelMotionTimeSet(s16 model, float time);
|
||||||
|
float BoardModelMotionTimeGet(s16 model);
|
||||||
|
float BoardModelMotionMaxTimeGet(s16 model);
|
||||||
s32 BoardModelMotionSpeedSet(s16 model, float speed);
|
s32 BoardModelMotionSpeedSet(s16 model, float speed);
|
||||||
|
s32 BoardModelMotionEndCheck(s16 model);
|
||||||
|
s32 BoardModelAlphaSet(s16 model, u8 alpha);
|
||||||
|
s32 BoardModelRotYSet(s16 model, float rot);
|
||||||
s32 BoardModelPosSet(s16 model, float x, float y, float z);
|
s32 BoardModelPosSet(s16 model, float x, float y, float z);
|
||||||
s32 BoardModelPosSetV(s16 model, Vec *pos);
|
s32 BoardModelPosSetV(s16 model, Vec *pos);
|
||||||
s32 BoardModelRotSet(s16 model, float x, float y, float z);
|
s32 BoardModelRotSet(s16 model, float x, float y, float z);
|
||||||
|
|
|
||||||
10
include/game/board/pause.h
Executable file
10
include/game/board/pause.h
Executable file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef _BOARD_PAUSE_H
|
||||||
|
#define _BOARD_PAUSE_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
void BoardPauseStart(void);
|
||||||
|
BOOL BoardPauseActiveCheck(void);
|
||||||
|
BOOL BoardPauseReqCheck(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -139,6 +139,7 @@ void BoardPlayerAutoSizeSet(s32, s32);
|
||||||
void BoardPlayerCopyMat(s32);
|
void BoardPlayerCopyMat(s32);
|
||||||
void BoardBowserSuitKill(s32);
|
void BoardBowserSuitKill(s32);
|
||||||
void SetRollPlayerSize(s32);
|
void SetRollPlayerSize(s32);
|
||||||
|
void BoardDiceDigit2DInit(s32, s32);
|
||||||
void BoardDiceDigit2DUpdateEnable(s32);
|
void BoardDiceDigit2DUpdateEnable(s32);
|
||||||
s32 DoSparkSpace(s32, s16*);
|
s32 DoSparkSpace(s32, s16*);
|
||||||
s32 MegaPlayerPassFunc(s32, s16);
|
s32 MegaPlayerPassFunc(s32, s16);
|
||||||
|
|
|
||||||
18
include/game/board/roll.h
Executable file
18
include/game/board/roll.h
Executable file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef _BOARD_ROLL_H
|
||||||
|
#define _BOARD_ROLL_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
s32 BoardRollExec(s32 arg0);
|
||||||
|
void BoardRollKill(void);
|
||||||
|
void BoardRollUPauseSet(s32 arg0);
|
||||||
|
void BoardRollWinDispSet(s32 arg0);
|
||||||
|
s16 BoardDiceEffectCreate(void);
|
||||||
|
void BoardDicePauseAll(void);
|
||||||
|
BOOL BoardDiceDoneCheck(void);
|
||||||
|
void BoardDiceStop(s32 arg0);
|
||||||
|
void BoardDiceVisibleSet(s32 arg0, s32 arg1);
|
||||||
|
void BoardDiceValueSet(s32 arg0, s32 arg1);
|
||||||
|
void BoardRollTutorialSet(s16 *arg0);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -53,4 +53,6 @@ s32 BoardSpaceStarCheck(s32 index);
|
||||||
void BoardSpaceLandExec(s32 player, s32 space);
|
void BoardSpaceLandExec(s32 player, s32 space);
|
||||||
void BoardSpaceBlockPosSet(void);
|
void BoardSpaceBlockPosSet(void);
|
||||||
|
|
||||||
|
extern s16 boardSpaceStarTbl[8];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
14
include/game/board/star.h
Executable file
14
include/game/board/star.h
Executable file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#ifndef _BOARD_START_H
|
||||||
|
#define _BOARD_START_H
|
||||||
|
|
||||||
|
#include "game/board/space.h"
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
|
||||||
|
void BoardStarHostSet(s16 arg0);
|
||||||
|
s16 BoardStarHostMdlGet(void);
|
||||||
|
void BoardStarExec(s32 arg0, BoardSpace *arg1);
|
||||||
|
void BoardStarGive(s32 arg0, Vec *arg1);
|
||||||
|
void BoardStarShowNext(s32 arg0);
|
||||||
|
|
||||||
|
#endif
|
||||||
29
include/game/board/tutorial.h
Executable file
29
include/game/board/tutorial.h
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef _BOARD_TUTORIAL_H
|
||||||
|
#define _BOARD_TUTORIAL_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
|
void BoardTutorialInit(void);
|
||||||
|
void BoardTutorialKill(void);
|
||||||
|
void BoardTutorialHookSet(void *arg0);
|
||||||
|
void BoardTutorialHookExec(s16 arg0, s32 arg1);
|
||||||
|
void BoardTutorialPlayerInit(void);
|
||||||
|
void BoardTutorialWorkSave(void);
|
||||||
|
void BoardTutorialWorkRestore(void);
|
||||||
|
void BoardTutorialDirInputSet(s8 arg0, s8 arg1, s16 arg2);
|
||||||
|
void BoardTutorialBlockSetPos(s32 arg0, s8 arg1);
|
||||||
|
void BoardTutorialItemSet(s8 arg0);
|
||||||
|
void BoardTutorialHostSet(s16 arg0);
|
||||||
|
void BoardTutorialHostHide(s8 arg0);
|
||||||
|
|
||||||
|
extern s32 boardTutorialData[4];
|
||||||
|
extern s8 boardTutorialDirInputX;
|
||||||
|
extern s8 boardTutorialDirInputY;
|
||||||
|
extern s16 boardTutorialDirInputTime;
|
||||||
|
extern s32 boardTutorialBlockPos;
|
||||||
|
extern s8 boardTutorialBlockItem;
|
||||||
|
extern s8 boardTutorialBlockF;
|
||||||
|
extern s8 boardTutorialUseItem;
|
||||||
|
extern s8 boardTutorialF;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -28,9 +28,12 @@ void BoardPickerBackFlagSet(s32 arg0);
|
||||||
BOOL BoardPickerDoneCheck(void);
|
BOOL BoardPickerDoneCheck(void);
|
||||||
s32 BoardPickerPosGet(Vec *arg0);
|
s32 BoardPickerPosGet(Vec *arg0);
|
||||||
s32 BoardPickerChoiceGet(void);
|
s32 BoardPickerChoiceGet(void);
|
||||||
|
void BoardYourTurnExec(s32 arg0);
|
||||||
s32 BoardItemUseExec(s32 arg0);
|
s32 BoardItemUseExec(s32 arg0);
|
||||||
void BoardMakeRandomItem(void);
|
void BoardMakeRandomItem(void);
|
||||||
void BoardItemGetDestPos(s32 arg0, Vec *arg1);
|
void BoardItemGetDestPos(s32 arg0, Vec *arg1);
|
||||||
void BoardItemStatusKill(s32 arg0);
|
void BoardItemStatusKill(s32 arg0);
|
||||||
|
|
||||||
|
extern s8 boardItemUser;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
15
include/game/board/view.h
Executable file
15
include/game/board/view.h
Executable file
|
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef _BOARD_VIEW_H
|
||||||
|
#define _BOARD_VIEW_H
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
|
||||||
|
void BoardViewOverheadExec(s32 arg0);
|
||||||
|
void BoardViewFocusGetPos(Vec *arg0);
|
||||||
|
void BoardViewFocusSet(Vec *arg0, u16 arg1);
|
||||||
|
void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2);
|
||||||
|
BOOL BoardViewMoveCheck(void);
|
||||||
|
void BoardViewMoveEnd(void);
|
||||||
|
void BoardViewWait(void);
|
||||||
|
void BoardViewMapExec(s32 arg0);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -12,6 +12,7 @@ void BoardWinKillAll(void);
|
||||||
void BoardWinDestroy(void);
|
void BoardWinDestroy(void);
|
||||||
void BoardWinProc(void);
|
void BoardWinProc(void);
|
||||||
int BoardWinChoiceGet(void);
|
int BoardWinChoiceGet(void);
|
||||||
|
void BoardWinPause(void);
|
||||||
void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice);
|
void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice);
|
||||||
void BoardWinCreate(s32 pos, u32 mess, s32 portrait);
|
void BoardWinCreate(s32 pos, u32 mess, s32 portrait);
|
||||||
void BoardWinInsertMesSet(u32 value, s32 index);
|
void BoardWinInsertMesSet(u32 value, s32 index);
|
||||||
|
|
|
||||||
47
include/game/chrman.h
Executable file
47
include/game/chrman.h
Executable file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#ifndef _GAME_CHRMAN_H
|
||||||
|
#define _GAME_CHRMAN_H
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
|
||||||
|
void CharManInit(void);
|
||||||
|
void *CharAMemPtrGet(s16 character);
|
||||||
|
void CharARAMOpen(s16 character);
|
||||||
|
void CharARAMClose(s16 character);
|
||||||
|
void CharKill(s16 arg0);
|
||||||
|
void CharKillAll(void);
|
||||||
|
s16 CharModelCreate(s16 character, s16 lod);
|
||||||
|
s16 CharModelMotionCreate(s16 character, s32 arg1);
|
||||||
|
void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2);
|
||||||
|
void CharModelMotionKill(s16 character, u32 motion);
|
||||||
|
void CharModelMotionDataClose(s16 character);
|
||||||
|
void CharModelDataClose(s16 arg0);
|
||||||
|
void CharModelKill(s16 character);
|
||||||
|
void CharModelMotionSet(s16 character, s16 motion);
|
||||||
|
void CharModelTexAnimSet(s16 character);
|
||||||
|
char **CharModelTexNameGet(s16 arg0, s16 arg1);
|
||||||
|
char *CharModelHookNameGet(s16 arg0, s16 arg1, s16 arg2);
|
||||||
|
void CharModelMotionTimeSet(s16 character, float time);
|
||||||
|
float CharModelMotionTimeGet(s16 character);
|
||||||
|
float CharModelMotionMaxTimeGet(s16 character);
|
||||||
|
s32 CharModelMotionEndCheck(s16 character);
|
||||||
|
s16 CharModelMotionShiftIDGet(s16 character);
|
||||||
|
void CharModelMotionShiftSet(s16 character, s16 motion, float time, float shift_time, u32 attr);
|
||||||
|
float CharModelMotionShiftTimeGet(s16 character);
|
||||||
|
void CharModelMotionSpeedSet(s16 character, float speed);
|
||||||
|
void CharModelLayerSetAll(s16 arg0);
|
||||||
|
void CharModelItemHookCreate(s16 character, char *arg1);
|
||||||
|
void CharModelEffectCreate(s16 arg0, Vec *arg1);
|
||||||
|
void CharModelCoinEffectCreate(s16 arg0, Vec *arg1);
|
||||||
|
void fn_8004EC74(s16 character);
|
||||||
|
void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2);
|
||||||
|
void fn_8004F058(s16 character);
|
||||||
|
void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2);
|
||||||
|
void CharModelLayerSetAll2(s16 arg0);
|
||||||
|
void CharModelVoiceEnableSet(s16 character, s16 motion, s32 flag);
|
||||||
|
void fn_8004F52C(s16 character, s32 arg1);
|
||||||
|
void CharModelEffectEnableSet(s16 character, s32 arg1);
|
||||||
|
s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3);
|
||||||
|
s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2);
|
||||||
|
void CharModelStepTypeSet(s16 character, s32 arg1);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "game/dvd.h"
|
#include "game/dvd.h"
|
||||||
|
|
||||||
|
#include "datadir_enum.h"
|
||||||
|
|
||||||
#define DATA_DECODE_NONE 0
|
#define DATA_DECODE_NONE 0
|
||||||
#define DATA_DECODE_LZ 1
|
#define DATA_DECODE_LZ 1
|
||||||
#define DATA_DECODE_SLIDE 2
|
#define DATA_DECODE_SLIDE 2
|
||||||
|
|
@ -10,21 +12,10 @@
|
||||||
#define DATA_DECODE_FSLIDE 4
|
#define DATA_DECODE_FSLIDE 4
|
||||||
#define DATA_DECODE_RLE 5
|
#define DATA_DECODE_RLE 5
|
||||||
|
|
||||||
#define MAKE_DATA_NUM(dir, file) (((dir) << 16)+(file))
|
|
||||||
#define MAKE_DIR_NUM(dir) ((dir) << 16)
|
|
||||||
|
|
||||||
#define DATA_NUM_LISTEND -1
|
#define DATA_NUM_LISTEND -1
|
||||||
|
|
||||||
#include "dolphin/types.h"
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
#define DATADIR_DEFINE(name, path) name,
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
#include "datadir_table.h"
|
|
||||||
DATADIR_COUNT
|
|
||||||
} DataDirID;
|
|
||||||
|
|
||||||
#undef DATADIR_DEFINE
|
|
||||||
|
|
||||||
typedef struct data_read_stat {
|
typedef struct data_read_stat {
|
||||||
s32 dir_id;
|
s32 dir_id;
|
||||||
|
|
|
||||||
9
include/game/fault.h
Normal file
9
include/game/fault.h
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef _GAME_FAULT_H
|
||||||
|
#define _GAME_FAULT_H
|
||||||
|
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
|
||||||
|
void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode);
|
||||||
|
void HuFaultSetXfbAddress(s16 index, void* value);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
#ifndef _GAME_FLAG_H
|
#ifndef _GAME_FLAG_H
|
||||||
#define _GAME_FLAG_H
|
#define _GAME_FLAG_H
|
||||||
|
|
||||||
|
#include "dolphin/types.h"
|
||||||
|
|
||||||
#define FLAG_ID_MAKE(group, index) (((group) << 16)|(index))
|
#define FLAG_ID_MAKE(group, index) (((group) << 16)|(index))
|
||||||
|
|
||||||
s32 _CheckFlag(u32 flag);
|
s32 _CheckFlag(u32 flag);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ typedef struct system_state {
|
||||||
u16 bonus_star : 1;
|
u16 bonus_star : 1;
|
||||||
u16 explain_mg : 1;
|
u16 explain_mg : 1;
|
||||||
u16 show_com_mg : 1;
|
u16 show_com_mg : 1;
|
||||||
u16 mg_type : 2;
|
u16 mg_list : 2;
|
||||||
u16 mess_speed : 2;
|
u16 mess_speed : 2;
|
||||||
u16 save_mode : 2;
|
u16 save_mode : 2;
|
||||||
};
|
};
|
||||||
|
|
@ -45,7 +45,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_type;
|
||||||
/* 0x38 */ u16 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];
|
||||||
|
|
@ -152,14 +152,34 @@ static inline s32 GWTeamGet(void)
|
||||||
return GWSystem.team;
|
return GWSystem.team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline s32 GWPartyGet(void)
|
||||||
|
{
|
||||||
|
return GWSystem.party;
|
||||||
|
}
|
||||||
|
|
||||||
static inline s32 GWLanguageGet(void)
|
static inline s32 GWLanguageGet(void)
|
||||||
{
|
{
|
||||||
return GWGameStat.language;
|
return GWGameStat.language;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline s32 GWMGTypeGet(void)
|
static inline s32 GWRumbleGet(void)
|
||||||
{
|
{
|
||||||
return GWSystem.mg_type;
|
return GWGameStat.rumble;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 GWMGExplainGet(void)
|
||||||
|
{
|
||||||
|
return GWSystem.explain_mg;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 GWMGShowComGet(void)
|
||||||
|
{
|
||||||
|
return GWSystem.show_com_mg;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 GWMGListGet(void)
|
||||||
|
{
|
||||||
|
return GWSystem.mg_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline s32 GWMessSpeedGet(void)
|
static inline s32 GWMessSpeedGet(void)
|
||||||
|
|
@ -167,6 +187,11 @@ static inline s32 GWMessSpeedGet(void)
|
||||||
return GWSystem.mess_speed;
|
return GWSystem.mess_speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline s32 GWTurnGet(void)
|
||||||
|
{
|
||||||
|
return GWSystem.turn;
|
||||||
|
}
|
||||||
|
|
||||||
static inline s32 GWBoardGet(void)
|
static inline s32 GWBoardGet(void)
|
||||||
{
|
{
|
||||||
return GWSystem.board;
|
return GWSystem.board;
|
||||||
|
|
@ -177,4 +202,9 @@ static inline s32 GWPlayerTeamGet(s32 player)
|
||||||
return GWPlayer[player].team;
|
return GWPlayer[player].team;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline s32 GWPlayerSpaceCurrGet(s32 player)
|
||||||
|
{
|
||||||
|
return GWPlayer[player].space_curr;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,9 @@ typedef struct {
|
||||||
typedef struct particle_data {
|
typedef struct particle_data {
|
||||||
/* 0x00 */ s16 unk_00;
|
/* 0x00 */ s16 unk_00;
|
||||||
/* 0x02 */ s16 unk_02;
|
/* 0x02 */ s16 unk_02;
|
||||||
/* 0x04 */ char unk_04[0x1C];
|
/* 0x04 */ float unk_04;
|
||||||
|
/* 0x08 */ char unk_08[0x14];
|
||||||
|
/* 0x1C */ void *unk_1C;
|
||||||
/* 0x20 */ s16 unk_20;
|
/* 0x20 */ s16 unk_20;
|
||||||
/* 0x22 */ s16 unk_22;
|
/* 0x22 */ s16 unk_22;
|
||||||
/* 0x24 */ float unk_24;
|
/* 0x24 */ float unk_24;
|
||||||
|
|
@ -39,7 +41,7 @@ typedef struct particle_data {
|
||||||
/* 0x2E */ char unk_2E[2];
|
/* 0x2E */ char unk_2E[2];
|
||||||
/* 0x30 */ s16 unk_30;
|
/* 0x30 */ s16 unk_30;
|
||||||
/* 0x32 */ char unk_32[2];
|
/* 0x32 */ char unk_32[2];
|
||||||
/* 0x34 */ s32 unk_34;
|
/* 0x34 */ u32 unk_34;
|
||||||
/* 0x38 */ s32 unk_38;
|
/* 0x38 */ s32 unk_38;
|
||||||
/* 0x3C */ u32 unk_3C;
|
/* 0x3C */ u32 unk_3C;
|
||||||
/* 0x40 */ s32 unk_40;
|
/* 0x40 */ s32 unk_40;
|
||||||
|
|
@ -115,6 +117,7 @@ void Hu3DParticleZRotSet(s16 arg0, float arg1);
|
||||||
void Hu3DParticleColSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3);
|
void Hu3DParticleColSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3);
|
||||||
void Hu3DParticleTPLvlSet(s16 arg0, float arg1);
|
void Hu3DParticleTPLvlSet(s16 arg0, float arg1);
|
||||||
void Hu3DParticleBlendModeSet(s16 arg0, u8 arg1);
|
void Hu3DParticleBlendModeSet(s16 arg0, u8 arg1);
|
||||||
|
void Hu3DParticleHookSet(s16 arg0, void *arg1);
|
||||||
void Hu3DParticleAttrSet(s16 arg0, u8 arg1);
|
void Hu3DParticleAttrSet(s16 arg0, u8 arg1);
|
||||||
void Hu3DParticleAttrReset(s16 arg0, u8 arg1);
|
void Hu3DParticleAttrReset(s16 arg0, u8 arg1);
|
||||||
void Hu3DParticleAnimModeSet(s16 arg0, s16 arg1);
|
void Hu3DParticleAnimModeSet(s16 arg0, s16 arg1);
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,8 @@ 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 Vec PGMaxPos;
|
||||||
|
extern Vec PGMinPos;
|
||||||
extern u32 totalPolyCnt;
|
extern u32 totalPolyCnt;
|
||||||
extern u32 totalPolyCnted;
|
extern u32 totalPolyCnted;
|
||||||
extern u32 totalMatCnt;
|
extern u32 totalMatCnt;
|
||||||
|
|
|
||||||
|
|
@ -145,20 +145,16 @@ typedef struct hsf_vertex_buf {
|
||||||
void *data;
|
void *data;
|
||||||
} HsfBuffer;
|
} HsfBuffer;
|
||||||
|
|
||||||
typedef struct hsf_tristrip {
|
|
||||||
u16 data[4];
|
|
||||||
} HsfTristrip;
|
|
||||||
|
|
||||||
typedef struct hsf_face {
|
typedef struct hsf_face {
|
||||||
u16 type;
|
s16 type;
|
||||||
u16 mat;
|
s16 mat;
|
||||||
u16 indices[12];
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
|
s16 indices[3][4];
|
||||||
u32 count;
|
u32 count;
|
||||||
HsfTristrip *data;
|
s16 *data;
|
||||||
} strip;
|
} strip;
|
||||||
u16 ext_indices[4];
|
s16 indices[4][4];
|
||||||
};
|
};
|
||||||
float nbt[3];
|
float nbt[3];
|
||||||
} HsfFace;
|
} HsfFace;
|
||||||
|
|
@ -290,7 +286,7 @@ typedef struct hsf_object_data {
|
||||||
HsfBuffer **vertexShape;
|
HsfBuffer **vertexShape;
|
||||||
u32 clusterCnt;
|
u32 clusterCnt;
|
||||||
HsfCluster **cluster;
|
HsfCluster **cluster;
|
||||||
u32 hook;
|
u32 cenvCnt;
|
||||||
HsfCenv *cenv;
|
HsfCenv *cenv;
|
||||||
void *file[2];
|
void *file[2];
|
||||||
} HsfObjectData;
|
} HsfObjectData;
|
||||||
|
|
@ -378,7 +374,7 @@ typedef struct hsf_map_attr {
|
||||||
float minZ;
|
float minZ;
|
||||||
float maxX;
|
float maxX;
|
||||||
float maxZ;
|
float maxZ;
|
||||||
s16 *data;
|
u16 *data;
|
||||||
u32 dataLen;
|
u32 dataLen;
|
||||||
} HsfMapAttr;
|
} HsfMapAttr;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,7 @@ void Hu3DNoSyncSet(s32);
|
||||||
s16 Hu3DModelCreate(void *);
|
s16 Hu3DModelCreate(void *);
|
||||||
s16 Hu3DModelLink(s16);
|
s16 Hu3DModelLink(s16);
|
||||||
s16 Hu3DHookFuncCreate(ModelHookFunc);
|
s16 Hu3DHookFuncCreate(ModelHookFunc);
|
||||||
|
void Hu3DModelKill(s16);
|
||||||
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 *);
|
||||||
|
|
@ -221,7 +222,7 @@ void Hu3DShadowSizeSet(u16);
|
||||||
void Hu3DShadowExec(void);
|
void Hu3DShadowExec(void);
|
||||||
s16 Hu3DProjectionCreate(void*, f32, f32, f32);
|
s16 Hu3DProjectionCreate(void*, f32, f32, f32);
|
||||||
void Hu3DProjectionKill(s16);
|
void Hu3DProjectionKill(s16);
|
||||||
void Hu3DProjectionPosSet(s16, Vec, Vec, Vec);
|
void Hu3DProjectionPosSet(s16, Vec*, Vec*, Vec*);
|
||||||
void Hu3DProjectionTPLvlSet(s16, f32);
|
void Hu3DProjectionTPLvlSet(s16, f32);
|
||||||
void Hu3DMipMapSet(char*, s16, s32, f32);
|
void Hu3DMipMapSet(char*, s16, s32, f32);
|
||||||
|
|
||||||
|
|
|
||||||
17
include/game/mapspace.h
Executable file
17
include/game/mapspace.h
Executable file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef _GAME_MAPSPACE_H
|
||||||
|
#define _GAME_MAPSPACE_H
|
||||||
|
|
||||||
|
#include "game/hsfformat.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
|
||||||
|
void MapWall(float arg0, float arg1, float arg2, float arg3);
|
||||||
|
void MapWallCheck(float *arg0, float *arg1, HsfMapAttr *arg2);
|
||||||
|
float MapPos(float arg0, float arg1, float arg2, float arg3, Vec *arg4);
|
||||||
|
BOOL Hitcheck_Triangle_with_Sphere(Vec *arg0, Vec *arg1, float arg2, Vec *arg3);
|
||||||
|
BOOL Hitcheck_Quadrangle_with_Sphere(Vec *arg0, Vec *arg1, float arg2, Vec *arg3);
|
||||||
|
void AppendAddXZ(float arg0, float arg1, float arg2);
|
||||||
|
void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3);
|
||||||
|
|
||||||
|
#endif
|
||||||
21
include/game/minigame_seq.h
Normal file
21
include/game/minigame_seq.h
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef _GAME_MINIGAME_SEQ_H
|
||||||
|
#define _GAME_MINIGAME_SEQ_H
|
||||||
|
|
||||||
|
#include "game/object.h"
|
||||||
|
|
||||||
|
void MGSeqInit(void);
|
||||||
|
void MGSeqMain(void);
|
||||||
|
s16 MGSeqCreate(s16 type, ...);
|
||||||
|
u8 MGSeqStatGet(s16 id);
|
||||||
|
void MGSeqPosSet(s16 id, float x, float y);
|
||||||
|
void MGSeqParamSet(s16 id, s16 param1, s16 param2);
|
||||||
|
void MGSeqKill(s16 id);
|
||||||
|
void MGSeqKillAll(void);
|
||||||
|
s32 MGSeqDoneCheck(void);
|
||||||
|
void MGSeqStub(void);
|
||||||
|
void MGSeqPauseInit(void);
|
||||||
|
void MGSeqPauseEnableCtrl(s32 flag);
|
||||||
|
void MGSeqPracticeInit(void);
|
||||||
|
void MGSeqPracticeExitCheck(omObjData *object);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -35,6 +35,21 @@ typedef struct {
|
||||||
/* 0x0C */ float backSurDis;
|
/* 0x0C */ float backSurDis;
|
||||||
} UnkMsmStruct_02; // Size (min: 0x10, max: 0x1C)
|
} UnkMsmStruct_02; // Size (min: 0x10, max: 0x1C)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* 0x00 */ s32 unk00;
|
||||||
|
/* 0x04 */ s8 unk04;
|
||||||
|
/* 0x05 */ s8 unk05;
|
||||||
|
/* 0x06 */ u16 unk06;
|
||||||
|
} UnkMsmStruct_03; // Size unknown (min: 8, max: 0x10)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* 0x00 */ s32 unk00;
|
||||||
|
/* 0x04 */ char unk04[1];
|
||||||
|
/* 0x05 */ s8 unk05;
|
||||||
|
/* 0x06 */ u16 unk06;
|
||||||
|
/* 0x08 */ char unk08[1];
|
||||||
|
} UnkMsmStruct_04; // Size unknown (min: 9, max: 0x18)
|
||||||
|
|
||||||
void msmSysRegularProc(void);
|
void msmSysRegularProc(void);
|
||||||
void msmSysSetOutputMode(s32 arg0);
|
void msmSysSetOutputMode(s32 arg0);
|
||||||
void msmSysSetAux(s32 arg0, s32 arg1);
|
void msmSysSetAux(s32 arg0, s32 arg1);
|
||||||
|
|
@ -49,9 +64,10 @@ s32 msmMusGetNumPlay(s32 arg0);
|
||||||
s32 msmMusGetStatus(s32 arg0);
|
s32 msmMusGetStatus(s32 arg0);
|
||||||
void msmMusPauseAll(s32 arg0, s32 arg1);
|
void msmMusPauseAll(s32 arg0, s32 arg1);
|
||||||
void msmMusPause(s32 arg0, s32 arg1, s32 arg2);
|
void msmMusPause(s32 arg0, s32 arg1, s32 arg2);
|
||||||
|
void msmMusSetParam(s16 arg0, UnkMsmStruct_04 *arg1);
|
||||||
void msmMusStopAll(s32 arg0, s32 arg1);
|
void msmMusStopAll(s32 arg0, s32 arg1);
|
||||||
void msmMusStop(s32 arg0, s32 arg1);
|
void msmMusStop(s32 arg0, s32 arg1);
|
||||||
s32 msmMusPlay(s32 arg0, s32 arg1);
|
s32 msmMusPlay(s32 arg0, UnkMsmStruct_03 *arg1);
|
||||||
void msmSeDelListener(void);
|
void msmSeDelListener(void);
|
||||||
void msmSeUpdataListener(s32 arg0, s32 arg1);
|
void msmSeUpdataListener(s32 arg0, s32 arg1);
|
||||||
void msmSeSetListener(Vec* arg0, Vec* arg1, float arg2, float arg3, UnkMsmStruct_02 *arg4);
|
void msmSeSetListener(Vec* arg0, Vec* arg1, float arg2, float arg3, UnkMsmStruct_02 *arg4);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
#include "game/process.h"
|
#include "game/process.h"
|
||||||
#include "game/dvd.h"
|
#include "game/dvd.h"
|
||||||
|
|
||||||
|
#define OM_DLL_MAX 20
|
||||||
|
|
||||||
#define OVL_DEFINE(name, path) name,
|
#define OVL_DEFINE(name, path) name,
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
@ -51,10 +53,17 @@ typedef struct om_obj_data {
|
||||||
/* 0x40 */ s16 *model;
|
/* 0x40 */ s16 *model;
|
||||||
/* 0x44 */ u16 mtncnt;
|
/* 0x44 */ u16 mtncnt;
|
||||||
/* 0x48 */ s16 *motion;
|
/* 0x48 */ s16 *motion;
|
||||||
/* 0x4C */ int work[4];
|
/* 0x4C */ u32 work[4];
|
||||||
/* 0x5C */ void *data;
|
/* 0x5C */ void *data;
|
||||||
} omObjData;
|
} omObjData;
|
||||||
|
|
||||||
|
typedef struct om_dll_data {
|
||||||
|
char *name;
|
||||||
|
OSModuleHeader *module;
|
||||||
|
void *bss;
|
||||||
|
s32 ret;
|
||||||
|
} omDllData;
|
||||||
|
|
||||||
void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl);
|
void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl);
|
||||||
void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat);
|
void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||||
void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat);
|
void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||||
|
|
@ -83,10 +92,16 @@ OverlayID omCurrentOvlGet(void);
|
||||||
|
|
||||||
void omDLLDBGOut(void);
|
void omDLLDBGOut(void);
|
||||||
void omDLLInit(FileListEntry *ovl_list);
|
void omDLLInit(FileListEntry *ovl_list);
|
||||||
int omDLLStart(s16 ovl, s16 dll);
|
int omDLLStart(s16 overlay, s16 flag);
|
||||||
void omDLLNumEnd(s16 ovl, s16 arg2);
|
void omDLLNumEnd(s16 overlay, s16 flag);
|
||||||
|
void omDLLEnd(s16 dllno, s16 flag);
|
||||||
|
omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag);
|
||||||
|
void omDLLUnlink(omDllData *dll_ptr, s16 flag);
|
||||||
|
s32 omDLLSearch(s16 overlay);
|
||||||
|
void omDLLInfoDump(OSModuleInfo *module);
|
||||||
|
void omDLLHeaderDump(OSModuleHeader *module);
|
||||||
|
|
||||||
void omSysPauseEnable(BOOL flag);
|
void omSysPauseEnable(u8 flag);
|
||||||
|
|
||||||
void omSystemKeyCheckSetup(Process *objman_process);
|
void omSystemKeyCheckSetup(Process *objman_process);
|
||||||
|
|
||||||
|
|
@ -102,7 +117,9 @@ extern int omovlstat;
|
||||||
extern char omUPauseFlag;
|
extern char omUPauseFlag;
|
||||||
extern s16 omSysExitReq;
|
extern s16 omSysExitReq;
|
||||||
extern s16 omdispinfo;
|
extern s16 omdispinfo;
|
||||||
extern char omSysPauseEnableFlag;
|
extern u8 omSysPauseEnableFlag;
|
||||||
extern OverlayID omprevovl;
|
extern OverlayID omprevovl;
|
||||||
|
|
||||||
|
extern omDllData *omDLLinfoTbl[OM_DLL_MAX];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
43
include/game/objsub.h
Normal file
43
include/game/objsub.h
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
#ifndef _GAME_OBJSUB_H
|
||||||
|
#define _GAME_OBJSUB_H
|
||||||
|
|
||||||
|
#include "dolphin.h"
|
||||||
|
#include "game/process.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
|
||||||
|
typedef struct mg_info {
|
||||||
|
u16 ovl;
|
||||||
|
u8 type;
|
||||||
|
u8 flag;
|
||||||
|
u8 record_idx;
|
||||||
|
u32 name_mess;
|
||||||
|
u32 data_dir;
|
||||||
|
u32 inst_pic[3];
|
||||||
|
u32 mg_pic[3];
|
||||||
|
u32 rules_mess;
|
||||||
|
u32 control_mess[2];
|
||||||
|
u32 advice_mess;
|
||||||
|
} MgInfo;
|
||||||
|
|
||||||
|
s32 omMgIndexGet(s16 overlay);
|
||||||
|
void omGameSysInit(Process *objman);
|
||||||
|
void omVibrate(s16 player_cfg_index, s16 duration, s16 off, s16 on);
|
||||||
|
|
||||||
|
|
||||||
|
extern s16 mgTypeCurr;
|
||||||
|
extern s16 mgBattleStar[4];
|
||||||
|
extern s16 mgBattleStarMax;
|
||||||
|
extern u8 lbl_801D3E94;
|
||||||
|
extern s32 mgRecordExtra;
|
||||||
|
extern s32 mgQuitExtraF;
|
||||||
|
extern s32 mgPracticeEnableF;
|
||||||
|
extern s32 mgInstExitEnableF;
|
||||||
|
extern u8 mgBoardHostEnableF;
|
||||||
|
|
||||||
|
extern s16 mgTicTacToeGrid[3][3];
|
||||||
|
extern u8 mgIndexList[256];
|
||||||
|
extern GameStat mgGameStatBackup;
|
||||||
|
|
||||||
|
extern MgInfo mgInfoTbl[];
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -22,7 +22,7 @@ extern u8 HuPadDStkRep[4];
|
||||||
extern s8 HuPadErr[4];
|
extern s8 HuPadErr[4];
|
||||||
extern u16 _PadBtn[4];
|
extern u16 _PadBtn[4];
|
||||||
extern u16 _PadBtnDown[4];
|
extern u16 _PadBtnDown[4];
|
||||||
extern u32 VCounter;
|
extern s32 VCounter;
|
||||||
|
|
||||||
void HuPadInit(void);
|
void HuPadInit(void);
|
||||||
void HuPadRead(void);
|
void HuPadRead(void);
|
||||||
|
|
|
||||||
|
|
@ -2,18 +2,41 @@
|
||||||
#define _GAME_SAVELOAD_H
|
#define _GAME_SAVELOAD_H
|
||||||
|
|
||||||
#include "dolphin.h"
|
#include "dolphin.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
|
||||||
s32 SLFileOpen(char *arg0);
|
#define SAVE_BUF_SIZE 16384
|
||||||
s32 SLFileCreate(char *arg0, u32 arg1, void *arg2);
|
|
||||||
s32 SLFileWrite(s32 arg0, void *arg1);
|
typedef struct save_buf_data {
|
||||||
s32 SLFileRead(s32 arg0, void *arg1);
|
u8 comment[CARD_COMMENT_SIZE];
|
||||||
|
u8 banner[CARD_BANNER_WIDTH*CARD_BANNER_HEIGHT];
|
||||||
|
u8 bannerTlut[512];
|
||||||
|
u8 icon[CARD_ICON_WIDTH*CARD_ICON_HEIGHT*4];
|
||||||
|
u8 iconTlut[512];
|
||||||
|
GameStat stat;
|
||||||
|
SystemState system;
|
||||||
|
PlayerState player[4];
|
||||||
|
SystemState systemBackup;
|
||||||
|
PlayerState playerBackup[4];
|
||||||
|
} SaveBufData;
|
||||||
|
|
||||||
|
typedef union save_buf_all {
|
||||||
|
SaveBufData data;
|
||||||
|
u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE];
|
||||||
|
} SaveBufAll;
|
||||||
|
|
||||||
|
extern SaveBufAll saveBuf;
|
||||||
|
|
||||||
|
s32 SLFileOpen(char *fileName);
|
||||||
|
s32 SLFileCreate(char *fileName, u32 size, void *addr);
|
||||||
|
s32 SLFileWrite(s32 length, void *addr);
|
||||||
|
s32 SLFileRead(s32 length, void *addr);
|
||||||
s32 SLFileClose(void);
|
s32 SLFileClose(void);
|
||||||
void SLCurSlotNoSet(s16 arg0);
|
void SLCurSlotNoSet(s16 slotno);
|
||||||
void SLCurBoxNoSet(s8 arg0);
|
void SLCurBoxNoSet(s8 boxno);
|
||||||
void SLSaveFlagSet(s32 arg0);
|
void SLSaveFlagSet(s32 flag);
|
||||||
s32 SLSaveFlagGet(void);
|
s32 SLSaveFlagGet(void);
|
||||||
void SLSaveDataMake(s32 arg0, OSTime *arg1);
|
void SLSaveDataMake(s32 erase, OSTime *time);
|
||||||
void SLSaveDataInfoSet(OSTime *arg0);
|
void SLSaveDataInfoSet(OSTime *time);
|
||||||
void SLCommonSet(void);
|
void SLCommonSet(void);
|
||||||
void SLSaveBoard(void);
|
void SLSaveBoard(void);
|
||||||
void SLSaveBoardBackup(void);
|
void SLSaveBoardBackup(void);
|
||||||
|
|
@ -27,9 +50,9 @@ BOOL SLSerialNoCheck(void);
|
||||||
BOOL SLCheckSumCheck(void);
|
BOOL SLCheckSumCheck(void);
|
||||||
u16 SLCheckSumGet(void);
|
u16 SLCheckSumGet(void);
|
||||||
void SLCheckSumSet(void);
|
void SLCheckSumSet(void);
|
||||||
s32 SLStatSet(s32 arg0);
|
s32 SLStatSet(s32 reportF);
|
||||||
s32 SLCardMount(s16 arg0);
|
s32 SLCardMount(s16 slotNo);
|
||||||
s32 SLFormat(s16 arg0);
|
s32 SLFormat(s16 slotNo);
|
||||||
s16 SLMessOut(s16 arg0);
|
s16 SLMessOut(s16 mess);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
#define SPRITE_ATTR_PAUSED 0x1
|
#define SPRITE_ATTR_PAUSED 0x1
|
||||||
#define SPRITE_ATTR_LOOP 0x2
|
#define SPRITE_ATTR_LOOP 0x2
|
||||||
#define SPRITE_ATTR_HIDDEN 0x4
|
#define SPRITE_ATTR_HIDDEN 0x4
|
||||||
#define SPIRTE_ATTR_BILINEAR 0x8
|
#define SPRITE_ATTR_BILINEAR 0x8
|
||||||
#define SPRITE_ATTR_FUNC 0x10
|
#define SPRITE_ATTR_FUNC 0x10
|
||||||
#define SPRITE_ATTR_NOPAUSE 0x20
|
#define SPRITE_ATTR_NOPAUSE 0x20
|
||||||
#define SPRITE_ATTR_REVERSE 0x40
|
#define SPRITE_ATTR_REVERSE 0x40
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
#define _GAME_THPMAIN_H
|
#define _GAME_THPMAIN_H
|
||||||
|
|
||||||
#include "dolphin/types.h"
|
#include "dolphin/types.h"
|
||||||
|
#include "game/process.h"
|
||||||
|
|
||||||
|
|
||||||
s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume);
|
s16 HuTHPSprCreateVol(char *path, s16 loop, s16 prio, float volume);
|
||||||
s16 HuTHPSprCreate(char *path, s16 loop, s16 prio);
|
s16 HuTHPSprCreate(char *path, s16 loop, s16 prio);
|
||||||
|
|
@ -15,4 +17,7 @@ s32 HuTHPFrameGet(void);
|
||||||
s32 HuTHPTotalFrameGet(void);
|
s32 HuTHPTotalFrameGet(void);
|
||||||
void HuTHPSetVolume(s32 left, s32 right);
|
void HuTHPSetVolume(s32 left, s32 right);
|
||||||
|
|
||||||
|
extern Process *THPProc;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -95,7 +95,7 @@ void HuWinScissorSet(s16 window, s16 x, s16 y, s16 w, s16 h);
|
||||||
void HuWinPriSet(s16 window, s16 prio);
|
void HuWinPriSet(s16 window, s16 prio);
|
||||||
void HuWinAttrSet(s16 window, u32 attr);
|
void HuWinAttrSet(s16 window, u32 attr);
|
||||||
void HuWinAttrReset(s16 window, u32 attr);
|
void HuWinAttrReset(s16 window, u32 attr);
|
||||||
u8 HuWinStatGet(s16 window);
|
s16 HuWinStatGet(s16 window);
|
||||||
void HuWinMesColSet(s16 window, u8 color);
|
void HuWinMesColSet(s16 window, u8 color);
|
||||||
void HuWinMesPalSet(s16 window, u8 index, u8 r, u8 g, u8 b);
|
void HuWinMesPalSet(s16 window, u8 index, u8 r, u8 g, u8 b);
|
||||||
void HuWinBGTPLvlSet(s16 window, float tp_level);
|
void HuWinBGTPLvlSet(s16 window, float tp_level);
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ double asin(double x);
|
||||||
double atan2(double y, double x);
|
double atan2(double y, double x);
|
||||||
double fmod(double x, double y);
|
double fmod(double x, double y);
|
||||||
double log(double x);
|
double log(double x);
|
||||||
|
double pow(double x, double y);
|
||||||
float tanf(float x);
|
float tanf(float x);
|
||||||
float sinf(float x);
|
float sinf(float x);
|
||||||
float cosf(float x);
|
float cosf(float x);
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,5 @@ void MGSeqKillAll(void);
|
||||||
void MGSeqPracticeInit(void);
|
void MGSeqPracticeInit(void);
|
||||||
void CharMotionClose(s16 character);
|
void CharMotionClose(s16 character);
|
||||||
void CharModelClose(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
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "game/process.h"
|
#include "game/process.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/sprite.h"
|
#include "game/sprite.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
|
|
@ -14,6 +15,8 @@
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "rel_sqrt_consts.h"
|
#include "rel_sqrt_consts.h"
|
||||||
|
|
||||||
|
#include "data_num/title.h"
|
||||||
|
|
||||||
#define HU_PAD_BTN_ALL (HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3])
|
#define HU_PAD_BTN_ALL (HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3])
|
||||||
#define HU_PAD_BTNDOWN_ALL (HuPadBtnDown[0] | HuPadBtnDown[1] | HuPadBtnDown[2] | HuPadBtnDown[3])
|
#define HU_PAD_BTNDOWN_ALL (HuPadBtnDown[0] | HuPadBtnDown[1] | HuPadBtnDown[2] | HuPadBtnDown[3])
|
||||||
#define HU_PAD_DSTK_ALL (HuPadDStkRep[0] | HuPadDStkRep[1] | HuPadDStkRep[2] | HuPadDStkRep[3])
|
#define HU_PAD_DSTK_ALL (HuPadDStkRep[0] | HuPadDStkRep[1] | HuPadDStkRep[2] | HuPadDStkRep[3])
|
||||||
|
|
@ -86,7 +89,7 @@ static void BootProc(void)
|
||||||
HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN);
|
HuSprAttrSet(group, 0, SPRITE_ATTR_HIDDEN);
|
||||||
if(omovlevtno != 0) {
|
if(omovlevtno != 0) {
|
||||||
HuAudSndGrpSetSet(0);
|
HuAudSndGrpSetSet(0);
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1));
|
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
|
||||||
sprite_hudson = HuSprCreate(data, 0, 0);
|
sprite_hudson = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
||||||
HuSprPosSet(group, 1, 288, 240);
|
HuSprPosSet(group, 1, 288, 240);
|
||||||
|
|
@ -116,7 +119,7 @@ static void BootProc(void)
|
||||||
MGSeqInit();
|
MGSeqInit();
|
||||||
HuWinInit(1);
|
HuWinInit(1);
|
||||||
TitleInit();
|
TitleInit();
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 1));
|
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
|
||||||
sprite_hudson = HuSprCreate(data, 0, 0);
|
sprite_hudson = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
HuSprGrpMemberSet(group, 1, sprite_hudson);
|
||||||
HuSprPosSet(group, 1, 288, 240);
|
HuSprPosSet(group, 1, 288, 240);
|
||||||
|
|
@ -287,15 +290,15 @@ static void ProgressiveProc(void)
|
||||||
VIFlush();
|
VIFlush();
|
||||||
}
|
}
|
||||||
group = HuSprGrpCreate(3);
|
group = HuSprGrpCreate(3);
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 3));
|
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CHOOSE_ANM);
|
||||||
sprite = HuSprCreate(data, 0, 0);
|
sprite = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 0, sprite);
|
HuSprGrpMemberSet(group, 0, sprite);
|
||||||
HuSprPosSet(group, 0, 288, 240);
|
HuSprPosSet(group, 0, 288, 240);
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 6));
|
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_ON_ANM);
|
||||||
sprite = HuSprCreate(data, 0, 0);
|
sprite = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 1, sprite);
|
HuSprGrpMemberSet(group, 1, sprite);
|
||||||
HuSprPosSet(group, 1, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
HuSprPosSet(group, 1, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 7));
|
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_CURSOR_OFF_ANM);
|
||||||
sprite = HuSprCreate(data, 0, 0);
|
sprite = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 2, sprite);
|
HuSprGrpMemberSet(group, 2, sprite);
|
||||||
HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
HuSprPosSet(group, 2, progressivePosTbl[option*2], progressivePosTbl[(option*2)+1]);
|
||||||
|
|
@ -333,9 +336,9 @@ static void ProgressiveProc(void)
|
||||||
HuSprGrpKill(group);
|
HuSprGrpKill(group);
|
||||||
group = HuSprGrpCreate(1);
|
group = HuSprGrpCreate(1);
|
||||||
if(!option) {
|
if(!option) {
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 4));
|
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_ON_ANM);
|
||||||
} else {
|
} else {
|
||||||
data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 5));
|
data = HuSprAnimReadFile(TITLE_PROGRESSIVE_OFF_ANM);
|
||||||
}
|
}
|
||||||
sprite = HuSprCreate(data, 0, 0);
|
sprite = HuSprCreate(data, 0, 0);
|
||||||
HuSprGrpMemberSet(group, 0, sprite);
|
HuSprGrpMemberSet(group, 0, sprite);
|
||||||
|
|
@ -452,38 +455,38 @@ static void TitleInit(void)
|
||||||
s16 model;
|
s16 model;
|
||||||
s16 sprite;
|
s16 sprite;
|
||||||
AnimData *sprite_data;
|
AnimData *sprite_data;
|
||||||
titleModel[0] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 11));
|
titleModel[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
|
||||||
Hu3DModelAttrSet(model, 1);
|
Hu3DModelAttrSet(model, 1);
|
||||||
Hu3DModelAttrSet(model, 0x40000001);
|
Hu3DModelAttrSet(model, 0x40000001);
|
||||||
titleModel[1] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 12));
|
titleModel[1] = model = Hu3DModelCreateFile(TITLE_CUBE_HSF);
|
||||||
Hu3DModelAttrSet(model, 1);
|
Hu3DModelAttrSet(model, 1);
|
||||||
Hu3DModelAttrSet(model, 0x40000001);
|
Hu3DModelAttrSet(model, 0x40000001);
|
||||||
titleModel[2] = model = Hu3DModelCreateFile(MAKE_DATA_NUM(DATADIR_TITLE, 13));
|
titleModel[2] = model = Hu3DModelCreateFile(TITLE_SKY_HSF);
|
||||||
Hu3DModelAttrSet(model, 1);
|
Hu3DModelAttrSet(model, 1);
|
||||||
Hu3DModelAttrSet(model, 0x40000001);
|
Hu3DModelAttrSet(model, 0x40000001);
|
||||||
Hu3DModelCameraInfoSet(model, 1);
|
Hu3DModelCameraInfoSet(model, 1);
|
||||||
Hu3DModelLightInfoSet(model, 1);
|
Hu3DModelLightInfoSet(model, 1);
|
||||||
titleGroup = HuSprGrpCreate(4);
|
titleGroup = HuSprGrpCreate(4);
|
||||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 8));
|
sprite_data = HuSprAnimReadFile(TITLE_BG_ANM);
|
||||||
sprite = HuSprCreate(sprite_data, 0, 0);
|
sprite = HuSprCreate(sprite_data, 0, 0);
|
||||||
HuSprGrpMemberSet(titleGroup, 0, sprite);
|
HuSprGrpMemberSet(titleGroup, 0, sprite);
|
||||||
HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN);
|
HuSprAttrSet(titleGroup, 0, SPRITE_ATTR_HIDDEN);
|
||||||
HuSprDrawNoSet(titleGroup, 0, 127);
|
HuSprDrawNoSet(titleGroup, 0, 127);
|
||||||
HuSprPosSet(titleGroup, 0, 288, 240);
|
HuSprPosSet(titleGroup, 0, 288, 240);
|
||||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 10));
|
sprite_data = HuSprAnimReadFile(TITLE_COPYRIGHT_ANM);
|
||||||
sprite = HuSprCreate(sprite_data, 1, 0);
|
sprite = HuSprCreate(sprite_data, 1, 0);
|
||||||
HuSprGrpMemberSet(titleGroup, 1, sprite);
|
HuSprGrpMemberSet(titleGroup, 1, sprite);
|
||||||
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
HuSprAttrSet(titleGroup, 1, SPRITE_ATTR_HIDDEN);
|
||||||
HuSprPosSet(titleGroup, 1, 288, 420);
|
HuSprPosSet(titleGroup, 1, 288, 420);
|
||||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2));
|
sprite_data = HuSprAnimReadFile(TITLE_PRESS_START_ANM);
|
||||||
sprite = HuSprCreate(sprite_data, 2, 0);
|
sprite = HuSprCreate(sprite_data, 2, 0);
|
||||||
HuSprGrpMemberSet(titleGroup, 2, sprite);
|
HuSprGrpMemberSet(titleGroup, 2, sprite);
|
||||||
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR);
|
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||||
HuSprPosSet(titleGroup, 2, 288, 380);
|
HuSprPosSet(titleGroup, 2, 288, 380);
|
||||||
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9));
|
sprite_data = HuSprAnimReadFile(TITLE_LOGO_ANM);
|
||||||
sprite = HuSprCreate(sprite_data, 0, 0);
|
sprite = HuSprCreate(sprite_data, 0, 0);
|
||||||
HuSprGrpMemberSet(titleGroup, 3, sprite);
|
HuSprGrpMemberSet(titleGroup, 3, sprite);
|
||||||
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR);
|
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
|
||||||
HuSprPosSet(titleGroup, 3, 288, 200);
|
HuSprPosSet(titleGroup, 3, 288, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "REL/executor.h"
|
#include "REL/executor.h"
|
||||||
#include <dolphin/mtx.h>
|
#include <dolphin/mtx.h>
|
||||||
|
#include "game/objsub.h"
|
||||||
|
|
||||||
// global data //
|
// global data //
|
||||||
typedef struct unkStruct18FC10 {
|
typedef struct unkStruct18FC10 {
|
||||||
|
|
@ -94,7 +95,6 @@ extern void espBankSet(s16, s16);
|
||||||
extern void espDrawNoSet(s16, s16);
|
extern void espDrawNoSet(s16, s16);
|
||||||
extern void WipeCreate(s16, s16, s16);
|
extern void WipeCreate(s16, s16, s16);
|
||||||
extern u8 WipeStatGet(void);
|
extern u8 WipeStatGet(void);
|
||||||
extern void omGameSysInit(omObjData*);
|
|
||||||
extern f32 PSVECNormalize(Vec3f*, Vec3f*);
|
extern f32 PSVECNormalize(Vec3f*, Vec3f*);
|
||||||
|
|
||||||
// local data //
|
// local data //
|
||||||
|
|
|
||||||
827
src/REL/modeltestDll/main.c
Normal file
827
src/REL/modeltestDll/main.c
Normal file
|
|
@ -0,0 +1,827 @@
|
||||||
|
#include "math.h"
|
||||||
|
#include "unsplit.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
#include "game/wipe.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
#include "game/hsfanim.h"
|
||||||
|
#include "game/hsfmotion.h"
|
||||||
|
#include "game/hsfex.h"
|
||||||
|
#include "game/printfunc.h"
|
||||||
|
#include "game/window.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
|
||||||
|
#include "REL/modeltestDll.h"
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
s32 lbl_1_data_0[8] = {
|
||||||
|
0x005F001B,
|
||||||
|
0x005F0015,
|
||||||
|
0x005F0016,
|
||||||
|
0x005F0006,
|
||||||
|
0x005F0000,
|
||||||
|
0x005F0000,
|
||||||
|
0x005F0000,
|
||||||
|
0x005F0004,
|
||||||
|
};
|
||||||
|
|
||||||
|
const f64 unk_rodata_0 = 0.5;
|
||||||
|
const f64 unk_rodata_8 = 3.0;
|
||||||
|
omObjData * lbl_1_bss_9A4;
|
||||||
|
omObjData * lbl_1_bss_9A0;
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_A0(void)
|
||||||
|
{
|
||||||
|
Process * prc;
|
||||||
|
OSReport("******* MODELTESTObjectSetup *********\n");
|
||||||
|
|
||||||
|
prc = omInitObjMan(0x32, 0x2000);
|
||||||
|
omGameSysInit(prc);
|
||||||
|
|
||||||
|
CRot.x = -30.0f;
|
||||||
|
CRot.y = 0.0f;
|
||||||
|
CRot.z = 0.0f;
|
||||||
|
Center.x = 0.0f;
|
||||||
|
Center.y = 0.0f;
|
||||||
|
Center.z = 0.0f;
|
||||||
|
CZoom = 800.0f;
|
||||||
|
|
||||||
|
Hu3DCameraCreate(1);
|
||||||
|
Hu3DCameraPerspectiveSet(1, 45.0f, 20.0f, 20000.0f, 1.2f);
|
||||||
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||||
|
|
||||||
|
lbl_1_bss_9A4 = omAddObjEx(prc, 0, 0x20, 0x20, -1, fn_1_29C);
|
||||||
|
lbl_1_bss_9A0 = omAddObjEx(prc, 0x7FDA, 0, 0, -1, omOutView);
|
||||||
|
|
||||||
|
Hu3DBGColorSet(0x20U, 0x80U, 0x80U);
|
||||||
|
WipeCreate(1, 0, 0x1E);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
char * lbl_1_data_D8[16] = {
|
||||||
|
"target1A",
|
||||||
|
"target1B",
|
||||||
|
"target2A",
|
||||||
|
"target2B",
|
||||||
|
"target3A",
|
||||||
|
"target3B",
|
||||||
|
"target4A",
|
||||||
|
"target4B",
|
||||||
|
"target5A",
|
||||||
|
"target5B",
|
||||||
|
"target6A",
|
||||||
|
"target6B",
|
||||||
|
"target7A",
|
||||||
|
"target7B",
|
||||||
|
"target8A",
|
||||||
|
"target8B"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
HsfanimStruct00 lbl_1_data_118 = {
|
||||||
|
/* unk00 */ 40,
|
||||||
|
/* unk02 */ {0, 0},
|
||||||
|
/* unk04 */ 50.0f,
|
||||||
|
/* unk08 */ 0.0f,
|
||||||
|
/* unk0C */ 90.0f,
|
||||||
|
/* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f},
|
||||||
|
/* unk1C */ 50.0f,
|
||||||
|
/* unk20 */ 0.800000011920929f,
|
||||||
|
/* unk24 */ 20.0f,
|
||||||
|
/* unk28 */ 0.9900000095367432f,
|
||||||
|
/* unk2C */ 4,
|
||||||
|
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}},
|
||||||
|
/* unk3E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 0}},
|
||||||
|
};
|
||||||
|
|
||||||
|
HsfanimStruct00 lbl_1_data_168[2] = {
|
||||||
|
{
|
||||||
|
/* unk00 */ 50,
|
||||||
|
/* unk02 */ {0, 0},
|
||||||
|
/* unk04 */ 5.0f,
|
||||||
|
/* unk08 */ 10.0f,
|
||||||
|
/* unk0C */ 10.0f,
|
||||||
|
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||||
|
/* unk1C */ 2.0f,
|
||||||
|
/* unk20 */ 1.0099999904632568f,
|
||||||
|
/* unk24 */ 30.0f,
|
||||||
|
/* unk28 */ 0.9900000095367432f,
|
||||||
|
/* unk2C */ 2,
|
||||||
|
/* unk2E */ {{ /* r */ 48, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 64, /* g */ 48, /* b */ 8, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
/* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* unk00 */ 30,
|
||||||
|
/* unk02 */ {0, 0},
|
||||||
|
/* unk04 */ 3.299999952316284f,
|
||||||
|
/* unk08 */ 10.0f,
|
||||||
|
/* unk0C */ 0.0f,
|
||||||
|
/* unk10 */ { /* x */ 0.0f, /* y */ -0.05000000074505806f, /* z */ 0.0f},
|
||||||
|
/* unk1C */ 2.0f,
|
||||||
|
/* unk20 */ 1.0f,
|
||||||
|
/* unk24 */ 20.0f,
|
||||||
|
/* unk28 */ 0.9800000190734863f,
|
||||||
|
/* unk2C */ 2,
|
||||||
|
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 64, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
/* unk3E */ {{ /* r */ 255, /* g */ 128, /* b */ 128, /* a */ 0}, { /* r */ 255, /* g */ 64, /* b */ 32, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
}};
|
||||||
|
|
||||||
|
HsfanimStruct00 lbl_1_data_208 = {
|
||||||
|
/* unk00 */ 40,
|
||||||
|
/* unk02 */ {0, 0},
|
||||||
|
/* unk04 */ 50.0f,
|
||||||
|
/* unk08 */ 0.0f,
|
||||||
|
/* unk0C */ 180.0f,
|
||||||
|
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||||
|
/* unk1C */ 30.0f,
|
||||||
|
/* unk20 */ 0.8999999761581421f,
|
||||||
|
/* unk24 */ 20.0f,
|
||||||
|
/* unk28 */ 0.9900000095367432f,
|
||||||
|
/* unk2C */ 4,
|
||||||
|
/* unk2E */ {{ /* r */ 255, /* g */ 255, /* b */ 32, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 0, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 128, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 255, /* a */ 255}},
|
||||||
|
/* unk3E */ {{ /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
};
|
||||||
|
|
||||||
|
HsfanimStruct00 lbl_1_data_258 = {
|
||||||
|
/* unk00 */ 30,
|
||||||
|
/* unk02 */ {0, 0},
|
||||||
|
/* unk04 */ 50.0f,
|
||||||
|
/* unk08 */ 0.0f,
|
||||||
|
/* unk0C */ 90.0f,
|
||||||
|
/* unk10 */ { /* x */ 0.0f, /* y */ 0.0f, /* z */ 0.0f},
|
||||||
|
/* unk1C */ 30.0f,
|
||||||
|
/* unk20 */ 0.949999988079071f,
|
||||||
|
/* unk24 */ 20.0f,
|
||||||
|
/* unk28 */ 0.9900000095367432f,
|
||||||
|
/* unk2C */ 2,
|
||||||
|
/* unk2E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
/* unk3E */ {{ /* r */ 255, /* g */ 16, /* b */ 16, /* a */ 255}, { /* r */ 255, /* g */ 255, /* b */ 16, /* a */ 255}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}, { /* r */ 0, /* g */ 0, /* b */ 0, /* a */ 0}},
|
||||||
|
};
|
||||||
|
|
||||||
|
const Point3d lbl_1_rodata_38 = {0.0f, 0.0f, 0.0f};
|
||||||
|
const Point3d lbl_1_rodata_44 = {0.0f, 1.0f, 0.0f};
|
||||||
|
s16 lbl_1_bss_99C;
|
||||||
|
s16 lbl_1_bss_99A;
|
||||||
|
s16 lbl_1_bss_98A[8];
|
||||||
|
s16 lbl_1_bss_88A[8][16];
|
||||||
|
s16 lbl_1_bss_888;
|
||||||
|
s16 unk_bss_886;
|
||||||
|
s16 lbl_1_bss_884;
|
||||||
|
s16 lbl_1_bss_864[16];
|
||||||
|
s16 lbl_1_bss_664[256];
|
||||||
|
s16 lbl_1_bss_460[258];
|
||||||
|
s16 lbl_1_bss_45A[3];
|
||||||
|
s16 lbl_1_bss_458;
|
||||||
|
AnimData * lbl_1_bss_454;
|
||||||
|
s32 unk_bss_450;
|
||||||
|
HuObjUnk lbl_1_bss_40[20];
|
||||||
|
void * lbl_1_bss_30[4];
|
||||||
|
u8 lbl_1_bss_2C;
|
||||||
|
f32 lbl_1_bss_28;
|
||||||
|
s16 lbl_1_bss_24;
|
||||||
|
f32 lbl_1_bss_20;
|
||||||
|
Process * lbl_1_bss_18[2];
|
||||||
|
Process * lbl_1_bss_14;
|
||||||
|
Process * lbl_1_bss_10;
|
||||||
|
s32 lbl_1_bss_C;
|
||||||
|
f32 lbl_1_bss_8;
|
||||||
|
static u8 unk_bss[8];
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_29C(omObjData * arg0)
|
||||||
|
{
|
||||||
|
Point3d sp20;
|
||||||
|
Point3d sp14;
|
||||||
|
Point3d sp8;
|
||||||
|
Mtx sp2C;
|
||||||
|
s16 var_r31;
|
||||||
|
s16 temp_r27;
|
||||||
|
u32 temp_r26;
|
||||||
|
s16 temp_r3;
|
||||||
|
void * temp_r29;
|
||||||
|
AnimData * temp_r28;
|
||||||
|
f32 temp_r5;
|
||||||
|
f32 temp_f30;
|
||||||
|
s16 chrIdx;
|
||||||
|
s32 temp_r0;
|
||||||
|
|
||||||
|
sp14 = lbl_1_rodata_38;
|
||||||
|
sp8 = lbl_1_rodata_44;
|
||||||
|
|
||||||
|
var_r31 = Hu3DGLightCreate(0.0f, 500.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
|
||||||
|
Hu3DGLightInfinitytSet(var_r31);
|
||||||
|
Hu3DShadowCreate(45.0f, 500.0f, 8000.0f);
|
||||||
|
Hu3DShadowTPLvlSet(0.5f);
|
||||||
|
|
||||||
|
Hu3DShadowSizeSet(0xC0U);
|
||||||
|
sp20.x = -500.0f;
|
||||||
|
sp20.y = 1000.0f;
|
||||||
|
sp20.z = 1000.0f;
|
||||||
|
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 1; ++var_r31)
|
||||||
|
{
|
||||||
|
chrIdx = 0;
|
||||||
|
lbl_1_bss_98A[var_r31] = CharModelCreate(chrIdx, 2);
|
||||||
|
if (var_r31 == 1) {
|
||||||
|
Hu3DModelLayerSet(lbl_1_bss_98A[var_r31], 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, lbl_1_data_0[0]);
|
||||||
|
lbl_1_bss_88A[var_r31][1] = CharModelMotionCreate(chrIdx, lbl_1_data_0[1]);
|
||||||
|
lbl_1_bss_88A[var_r31][2] = CharModelMotionCreate(chrIdx, lbl_1_data_0[2]);
|
||||||
|
lbl_1_bss_88A[var_r31][3] = CharModelMotionCreate(chrIdx, lbl_1_data_0[3]);
|
||||||
|
lbl_1_bss_88A[var_r31][4] = CharModelMotionCreate(chrIdx, lbl_1_data_0[4]);
|
||||||
|
lbl_1_bss_88A[var_r31][5] = CharModelMotionCreate(chrIdx, lbl_1_data_0[5]);
|
||||||
|
lbl_1_bss_88A[var_r31][6] = CharModelMotionCreate(chrIdx, lbl_1_data_0[6]);
|
||||||
|
lbl_1_bss_88A[var_r31][7] = CharModelMotionCreate(chrIdx, lbl_1_data_0[7]);
|
||||||
|
lbl_1_bss_88A[var_r31][0] = CharModelMotionCreate(chrIdx, 0x5F004D);
|
||||||
|
CharModelMotionSet(chrIdx, lbl_1_bss_88A[var_r31][0]);
|
||||||
|
Hu3DModelAttrSet(lbl_1_bss_98A[var_r31], 0x40000001U);
|
||||||
|
Hu3DModelPosSet(lbl_1_bss_98A[var_r31], (var_r31 / 4 * 0xC8) - 100, 0.0f, -(var_r31 % 4) * 0x96);
|
||||||
|
CharModelMotionDataClose(chrIdx);
|
||||||
|
}
|
||||||
|
temp_r26 = OSGetTick();
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 8; ++var_r31) {
|
||||||
|
Hu3DModelObjMtxGet(lbl_1_bss_98A[0], "test11_tex_we-ske_R_shoe1", sp2C);
|
||||||
|
}
|
||||||
|
|
||||||
|
temp_r5 = OSTicksToMicroseconds(OSGetTick() - temp_r26);
|
||||||
|
OSReport("time %f\n", US_TO_60TH_SEC(temp_r5));
|
||||||
|
var_r31 = Hu3DModelCreateFile(0x700024);
|
||||||
|
Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f);
|
||||||
|
Hu3DModelShadowMapSet(var_r31);
|
||||||
|
var_r31 = Hu3DModelCreateFile(0x26001E);
|
||||||
|
temp_r27 = Hu3DJointMotion(var_r31, HuDataSelHeapReadNum(0x26002F, 0x10000000, 2));
|
||||||
|
Hu3DMotionSet(var_r31, temp_r27);
|
||||||
|
Hu3DModelAttrSet(var_r31, 0x40000001U);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 10; ++var_r31) {
|
||||||
|
if (var_r31 == 0) {
|
||||||
|
lbl_1_bss_664[var_r31] = Hu3DModelCreateFile(0x700019);
|
||||||
|
} else {
|
||||||
|
lbl_1_bss_664[var_r31] = Hu3DModelLink(lbl_1_bss_664[0]);
|
||||||
|
}
|
||||||
|
Hu3DModelShadowSet(lbl_1_bss_664[var_r31]);
|
||||||
|
Hu3DModelPosSet(lbl_1_bss_664[var_r31], ((( var_r31 / 5) * 0x1F4) + 0xC8), 0.0f, (-( var_r31 % 5) * 0x12C));
|
||||||
|
Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x4000U);
|
||||||
|
Hu3DModelAttrSet(lbl_1_bss_664[var_r31], 0x40000001U);
|
||||||
|
}
|
||||||
|
temp_r29 = HuDataSelHeapReadNum(0x700013, 0x10000000, 2);
|
||||||
|
temp_r28 = HuSprAnimRead(temp_r29);
|
||||||
|
lbl_1_bss_99C = HuSprGrpCreate(0x14);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 0x14; ++var_r31) {
|
||||||
|
lbl_1_bss_99A = HuSprCreate(temp_r28, 0, 0);
|
||||||
|
HuSprGrpMemberSet(lbl_1_bss_99C, var_r31, lbl_1_bss_99A);
|
||||||
|
HuSprPosSet(lbl_1_bss_99C, var_r31, 640.0f, 240.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
HuSprExecLayerSet(0x40, 1);
|
||||||
|
HuSprGrpDrawNoSet(lbl_1_bss_99C, 0x40);
|
||||||
|
lbl_1_bss_458 = 0x293;
|
||||||
|
lbl_1_bss_45A[0] = MGSeqCreate(1, lbl_1_bss_458 / 60, -1, -1);
|
||||||
|
temp_r29 = HuDataSelHeapReadNum(0x120001, 0x10000000, 2);
|
||||||
|
temp_r28 = HuSprAnimRead(temp_r29);
|
||||||
|
lbl_1_bss_888 = Hu3DParManCreate(temp_r28, 0x3E8, &lbl_1_data_208);
|
||||||
|
Hu3DParManAttrSet(lbl_1_bss_888, 0x45);
|
||||||
|
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_888), 1U);
|
||||||
|
Hu3DParManRotSet(lbl_1_bss_888, 0.0f, 0.0f, 0.0f);
|
||||||
|
Hu3DParManVacumeSet(lbl_1_bss_888, 500.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
lbl_1_bss_884 = Hu3DParManLink(lbl_1_bss_888, &lbl_1_data_258);
|
||||||
|
Hu3DParManAttrSet(lbl_1_bss_884, 0x143);
|
||||||
|
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_884), 1U);
|
||||||
|
Hu3DParManVecSet(lbl_1_bss_884, 0.0f, 1.0f, 0.0f);
|
||||||
|
Hu3DParManVacumeSet(lbl_1_bss_884, 500.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
Hu3DParManColorSet(lbl_1_bss_884, 0);
|
||||||
|
temp_r29 = HuDataSelHeapReadNum(0x120002, 0x10000000, 2);
|
||||||
|
temp_r28 = HuSprAnimRead(temp_r29);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 10; ++var_r31) {
|
||||||
|
lbl_1_bss_864[var_r31] = Hu3DParManCreate(temp_r28, 0x1F4, &lbl_1_data_168[0]);
|
||||||
|
Hu3DParManAttrSet(lbl_1_bss_864[var_r31], 0x864);
|
||||||
|
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_864[var_r31]), 1U);
|
||||||
|
Hu3DParManPosSet(lbl_1_bss_864[var_r31], (100.0 * sin((M_PI * (36.0f * var_r31)) / 180.0)), 0.0f, 100.0 * cos((M_PI * (36.0f * var_r31)) / 180.0));
|
||||||
|
Hu3DParManRotSet(lbl_1_bss_864[var_r31], -90.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
lbl_1_bss_C = 0;
|
||||||
|
Hu3DFogSet(5000.0f, 10000.0f, 0x20U, 0x10U, 0x30U);
|
||||||
|
arg0->func = fn_1_F9C;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
s32 unrefData[] = {
|
||||||
|
0,0,0
|
||||||
|
};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_F38(void)
|
||||||
|
{
|
||||||
|
f32 var_f31;
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
|
||||||
|
while(TRUE) {
|
||||||
|
Hu3DModelRotSet(lbl_1_bss_460[0], 0.0f, var_f31, 0.0f);
|
||||||
|
var_f31 += 1.0f;
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) {
|
||||||
|
s8 temp_r28;
|
||||||
|
|
||||||
|
temp_r28 = HuPadSubStkX[0] & 0xF8;
|
||||||
|
if (temp_r28 != 0) {
|
||||||
|
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||||
|
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||||
|
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||||
|
}
|
||||||
|
PSVECNormalize(sp18, sp30);
|
||||||
|
temp_r28 = -(HuPadSubStkY[0] & 0xF8);
|
||||||
|
if (temp_r28 != 0) {
|
||||||
|
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||||
|
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||||
|
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
const HuUnkF9C2 lbl_1_rodata_B8 = {
|
||||||
|
{8, 6, 4, 7, 9, 10, 11}
|
||||||
|
};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_F9C(struct om_obj_data * omData)
|
||||||
|
{
|
||||||
|
Point3d sp3C;
|
||||||
|
Point3d sp30;
|
||||||
|
Point3d sp24;
|
||||||
|
Point3d sp18;
|
||||||
|
f32 temp_f31;
|
||||||
|
s32 var_r31;
|
||||||
|
s16 var_r30;
|
||||||
|
HuUnkF9C2 teropPatterns;
|
||||||
|
|
||||||
|
if (omSysExitReq != 0) {
|
||||||
|
if (lbl_1_bss_10 != 0) {
|
||||||
|
HuPrcKill(lbl_1_bss_10);
|
||||||
|
}
|
||||||
|
if (lbl_1_bss_14 != 0) {
|
||||||
|
HuPrcKill(lbl_1_bss_14);
|
||||||
|
}
|
||||||
|
if (lbl_1_bss_18[0] != 0) {
|
||||||
|
HuPrcKill(lbl_1_bss_18[0]);
|
||||||
|
}
|
||||||
|
CharModelKill(-1);
|
||||||
|
omOvlReturnEx(1, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CRot.y += 0.1f * HuPadStkX[0];
|
||||||
|
CRot.x += 0.1f * HuPadStkY[0];
|
||||||
|
CZoom += HuPadTrigL[0] / 2;
|
||||||
|
CZoom -= HuPadTrigR[0] / 2;
|
||||||
|
|
||||||
|
if (((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) && (lbl_1_data_118.unk0C < 360.0f)) {
|
||||||
|
lbl_1_data_118.unk0C += 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) && (lbl_1_data_118.unk0C > 0.0f)) {
|
||||||
|
lbl_1_data_118.unk0C -= 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_X) != 0) {
|
||||||
|
Hu3DParManAttrSet(lbl_1_bss_888, 0x81);
|
||||||
|
Hu3DParManAttrSet(lbl_1_bss_884, 0x81);
|
||||||
|
}
|
||||||
|
|
||||||
|
lbl_1_bss_20 += 2.0f;
|
||||||
|
if (lbl_1_bss_20 > 360.0f) {
|
||||||
|
lbl_1_bss_20 -= 360.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var_r30 = 0; var_r30 < 10; ++var_r30) {
|
||||||
|
f32 temp_f30;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_fake;
|
||||||
|
|
||||||
|
while (0) {
|
||||||
|
(void) temp_f30;
|
||||||
|
(void) temp_f30;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r31;
|
||||||
|
(void) var_r30;
|
||||||
|
(void) var_r30;
|
||||||
|
(void) var_r30;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_r29;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
(void) var_fake;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lbl_1_bss_458 > 0) {
|
||||||
|
MGSeqParamSet(lbl_1_bss_45A[0], 1, lbl_1_bss_458 / 60);
|
||||||
|
--lbl_1_bss_458;
|
||||||
|
if (lbl_1_bss_458 <= 0) {
|
||||||
|
MGSeqParamSet(lbl_1_bss_45A[0], 2, -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
|
||||||
|
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
|
||||||
|
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
|
||||||
|
sp30.x = Center.x - sp3C.x;
|
||||||
|
sp30.y = Center.y - sp3C.y;
|
||||||
|
sp30.z = Center.z - sp3C.z;
|
||||||
|
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||||
|
sp24.y = cos((M_PI * CRot.x) / 180.0);
|
||||||
|
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||||
|
temp_f31 = CRot.z;
|
||||||
|
|
||||||
|
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
|
||||||
|
|
||||||
|
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
|
||||||
|
|
||||||
|
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
|
||||||
|
|
||||||
|
PSVECCrossProduct(&sp24, &sp30, &sp30);
|
||||||
|
PSVECNormalize(&sp30, &sp30);
|
||||||
|
|
||||||
|
if (lbl_1_bss_C == 0) {
|
||||||
|
HuControlCamCenter(&sp18, &sp30);
|
||||||
|
}
|
||||||
|
|
||||||
|
teropPatterns = lbl_1_rodata_B8;
|
||||||
|
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_X) != 0) {
|
||||||
|
++lbl_1_bss_24;
|
||||||
|
if (lbl_1_bss_24 >= 7) {
|
||||||
|
lbl_1_bss_24 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) {
|
||||||
|
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 0);
|
||||||
|
}
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_A) != 0) {
|
||||||
|
var_r30 = MGSeqCreate(teropPatterns.unk0[lbl_1_bss_24], 2);
|
||||||
|
}
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
|
||||||
|
var_r30 = MGSeqCreate(0xE, 0x3B);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((HuPadBtnDown[0] & (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_UP | PAD_BUTTON_DOWN)) != 0) {
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_UP) != 0) {
|
||||||
|
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, -1, -1, -1);
|
||||||
|
}
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_LEFT) != 0) {
|
||||||
|
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, -1, -1);
|
||||||
|
}
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_DOWN) != 0) {
|
||||||
|
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, -1);
|
||||||
|
}
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_RIGHT) != 0) {
|
||||||
|
MGSeqCreate(0xC, 5, GWPlayerCfg[0].character, GWPlayerCfg[1].character, GWPlayerCfg[2].character, GWPlayerCfg[3].character);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fontcolor = 5;
|
||||||
|
print8(0x10, 0x190, 1.5f, "Terop Pattern%d", lbl_1_bss_24 + 1);
|
||||||
|
lbl_1_bss_8 += 5.0f;
|
||||||
|
if (lbl_1_bss_8 > 360.0f) {
|
||||||
|
lbl_1_bss_8 -= 360.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_20F4(void)
|
||||||
|
{
|
||||||
|
s16 temp_r3;
|
||||||
|
s16 var_r29;
|
||||||
|
HsfObject * temp_r3_2;
|
||||||
|
HuObjUnk * temp_r31;
|
||||||
|
Mtx spC0;
|
||||||
|
Vec sp24;
|
||||||
|
Mtx sp90;
|
||||||
|
Mtx sp60;
|
||||||
|
Mtx sp30;
|
||||||
|
Vec sp18;
|
||||||
|
Vec spC;
|
||||||
|
f32 temp_f27;
|
||||||
|
f32 var_f29; // ! - uninitialized
|
||||||
|
s16 var_r27; // ! - uninitialized
|
||||||
|
s32 var_r26;
|
||||||
|
f32 temp_f30;
|
||||||
|
|
||||||
|
temp_r3 = Hu3DModelCreateFile(0x6C0000);
|
||||||
|
Hu3DModelPosSet(temp_r3, 0.0f, 0.0f, 100.0f);
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < 16; ++var_r29)
|
||||||
|
{
|
||||||
|
OSReport("%s\n", lbl_1_data_D8[var_r29]);
|
||||||
|
temp_r3_2 = Hu3DModelObjPtrGet(temp_r3, lbl_1_data_D8[var_r29]);
|
||||||
|
lbl_1_bss_40[var_r29].obj = temp_r3_2;
|
||||||
|
|
||||||
|
Hu3DMotionNoMotSet(temp_r3, lbl_1_data_D8[var_r29], 0x380);
|
||||||
|
|
||||||
|
lbl_1_bss_40[var_r29].pos.x = temp_r3_2->data.base.pos.x;
|
||||||
|
lbl_1_bss_40[var_r29].pos.y = temp_r3_2->data.base.pos.y;
|
||||||
|
lbl_1_bss_40[var_r29].pos.z = temp_r3_2->data.base.pos.z;
|
||||||
|
lbl_1_bss_40[var_r29].rot.x = temp_r3_2->data.base.rot.x;
|
||||||
|
lbl_1_bss_40[var_r29].rot.y = temp_r3_2->data.base.rot.y;
|
||||||
|
lbl_1_bss_40[var_r29].rot.z = temp_r3_2->data.base.rot.z;
|
||||||
|
lbl_1_bss_40[var_r29].scale.x = temp_r3_2->data.base.scale.x;
|
||||||
|
lbl_1_bss_40[var_r29].scale.y = temp_r3_2->data.base.scale.y;
|
||||||
|
lbl_1_bss_40[var_r29].scale.z = temp_r3_2->data.base.scale.z;
|
||||||
|
|
||||||
|
OSReport(
|
||||||
|
"%d:(%3.2f,%3.2f,%3.2f),(%3.2f,%3.2f,%3.2f)\n",
|
||||||
|
var_r29,
|
||||||
|
temp_r3_2->data.base.pos.x,
|
||||||
|
temp_r3_2->data.base.pos.y,
|
||||||
|
temp_r3_2->data.base.pos.z,
|
||||||
|
temp_r3_2->data.base.rot.x,
|
||||||
|
temp_r3_2->data.base.rot.y,
|
||||||
|
temp_r3_2->data.base.rot.z
|
||||||
|
);
|
||||||
|
}
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
Hu3DModelObjMtxGet(temp_r3, "ske_skirt", sp30);
|
||||||
|
|
||||||
|
for (var_r29 = 0; var_r29 < 8; ++var_r29)
|
||||||
|
{
|
||||||
|
temp_r31 = &lbl_1_bss_40[var_r29 * 2];
|
||||||
|
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x;
|
||||||
|
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||||
|
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z;
|
||||||
|
|
||||||
|
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[var_r29 * 2], sp90);
|
||||||
|
|
||||||
|
temp_r31 = &lbl_1_bss_40[(var_r29 * 2) + 1];
|
||||||
|
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x;
|
||||||
|
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||||
|
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z;
|
||||||
|
|
||||||
|
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||||
|
Hu3DMtxTransGet(spC0, &sp18);
|
||||||
|
PSMTXInverse(sp30, sp60);
|
||||||
|
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||||
|
Hu3DMtxTransGet(spC0, &sp18);
|
||||||
|
PSMTXMultVec(sp60, &sp18, &sp18);
|
||||||
|
|
||||||
|
temp_f27 = 180.0 * (atan2(sp18.z, sp18.x) / M_PI);
|
||||||
|
temp_r31 = &lbl_1_bss_40[var_r29 * 2];
|
||||||
|
temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sin((M_PI * temp_f27) / 180.0) * sin((M_PI * var_r27) / 180.0))));
|
||||||
|
temp_r31->obj->data.curr.rot.y = temp_r31->rot.y;
|
||||||
|
temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cos((M_PI * var_r27) / 180.0));
|
||||||
|
|
||||||
|
Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0);
|
||||||
|
Hu3DMtxTransGet(spC0, &sp24);
|
||||||
|
fn_1_28F8(&sp24, &spC);
|
||||||
|
HuSprPosSet(lbl_1_bss_99C, var_r29, spC.x, spC.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r27 += 5;
|
||||||
|
if (var_r27 > 0x168) {
|
||||||
|
var_r27 -= 0x168;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HuPadSubStkX[1] < 0) {
|
||||||
|
var_r26 = -HuPadSubStkX[1];
|
||||||
|
} else {
|
||||||
|
var_r26 = HuPadSubStkX[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (var_r26 < 0xA && ABS(HuPadSubStkY[1]) < 0xA) {
|
||||||
|
var_r27 = 0x168;
|
||||||
|
var_f29 = 0.0f;
|
||||||
|
} else {
|
||||||
|
var_r27 = 180.0 * (atan2(HuPadSubStkX[1], HuPadSubStkY[1]) / M_PI);
|
||||||
|
temp_f30 = (HuPadSubStkX[1] * HuPadSubStkX[1]) + (HuPadSubStkY[1] * HuPadSubStkY[1]);
|
||||||
|
var_f29 = sqrtf(temp_f30);
|
||||||
|
if (var_f29 > 80.0f) {
|
||||||
|
var_f29 = 80.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_28F8(Point3d * arg0, Point3d * arg1)
|
||||||
|
{
|
||||||
|
Point3d spC;
|
||||||
|
Mtx sp18;
|
||||||
|
CameraData * cam;
|
||||||
|
f32 temp_f31;
|
||||||
|
f32 temp_f30;
|
||||||
|
|
||||||
|
cam = &Hu3DCamera[0];
|
||||||
|
C_MTXLookAt(sp18, &cam->pos, &cam->up, &cam->target);
|
||||||
|
PSMTXMultVec(sp18, arg0, &spC);
|
||||||
|
|
||||||
|
temp_f31 = (1.2f * (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0)))));
|
||||||
|
temp_f30 = (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0))));
|
||||||
|
arg1->x = 288.0f + (spC.x * (288.0f / -temp_f31));
|
||||||
|
arg1->y = 240.0f + (spC.y * (240.0f / temp_f30));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_1_2AFC(void) {
|
||||||
|
s16 temp_r3;
|
||||||
|
|
||||||
|
HuWinInit(1);
|
||||||
|
temp_r3 = HuWinCreate(-10000.0f, -10000.0f, 480, 0x80, 0);
|
||||||
|
HuWinMesSpeedSet(temp_r3, 3);
|
||||||
|
|
||||||
|
while (TRUE) {
|
||||||
|
HuWinMesSet(temp_r3, 0x200011);
|
||||||
|
HuWinMesWait(temp_r3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
// unreferenced data
|
||||||
|
u8 lbl_1_data_322[54] = {
|
||||||
|
255, 255, 255, 255, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 68, 155, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_2B68(ModelData * mdl, Mtx arg1)
|
||||||
|
{
|
||||||
|
GXColor sp17;
|
||||||
|
Mtx sp150;
|
||||||
|
Mtx sp120;
|
||||||
|
Mtx spF0;
|
||||||
|
Mtx spC0;
|
||||||
|
Mtx sp90;
|
||||||
|
GXTexObj sp30;
|
||||||
|
f32 sp18[2][3];
|
||||||
|
Mtx44 sp50;
|
||||||
|
AnimBmpData * sp10;
|
||||||
|
f32 temp_f31;
|
||||||
|
f32 var_f30; // ! - uninitialized
|
||||||
|
f32 var_f29; // ! - uninitialized
|
||||||
|
f32 var_f28; // ! - uninitialized
|
||||||
|
f32 var_f27; // ! - uninitialized
|
||||||
|
|
||||||
|
if (!lbl_1_bss_30[0]) {
|
||||||
|
lbl_1_bss_30[0] = HuMemDirectMallocNum(HEAP_SYSTEM, FB_SIZE(640, 480), 0x10000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
GXSetTexCopySrc(0, 0, 640, 480);
|
||||||
|
GXSetTexCopyDst(640, 480, GX_TF_RGB565, GX_FALSE);
|
||||||
|
GXCopyTex(lbl_1_bss_30[0], GX_FALSE);
|
||||||
|
DCFlushRangeNoSync(lbl_1_bss_30[0], FB_SIZE(640, 480));
|
||||||
|
C_MTXOrtho(sp50, 0.0f, 480.0f, 0.0f, 576.0f, 0.0f, 10.0f);
|
||||||
|
GXSetProjection(sp50, GX_ORTHOGRAPHIC);
|
||||||
|
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
||||||
|
GXSetScissor(0, 0, 640, 480);
|
||||||
|
GXInvalidateTexAll();
|
||||||
|
GXClearVtxDesc();
|
||||||
|
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||||
|
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||||
|
GXSetVtxDesc(GX_VA_NRM, GX_DIRECT);
|
||||||
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0U);
|
||||||
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0U);
|
||||||
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U);
|
||||||
|
GXSetCullMode(GX_CULL_NONE);
|
||||||
|
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
|
||||||
|
GXSetNumTexGens(1);
|
||||||
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3CU, 0U, 0x7DU);
|
||||||
|
GXSetNumTevStages(1);
|
||||||
|
|
||||||
|
sp17.r =
|
||||||
|
sp17.g =
|
||||||
|
sp17.b =
|
||||||
|
sp17.a = 255;
|
||||||
|
GXSetChanMatColor(GX_COLOR0A0, sp17);
|
||||||
|
|
||||||
|
sp17.r =
|
||||||
|
sp17.g =
|
||||||
|
sp17.b = 128;
|
||||||
|
sp17.a = 255;
|
||||||
|
GXSetChanAmbColor(GX_COLOR0A0, sp17);
|
||||||
|
|
||||||
|
GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE);
|
||||||
|
GXSetNumChans(1U);
|
||||||
|
GXSetChanCtrl(GX_COLOR0, 1U, GX_SRC_REG, GX_SRC_VTX, 1U, GX_DF_CLAMP, GX_AF_SPOT);
|
||||||
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
||||||
|
GXSetAlphaCompare(GX_GEQUAL, 1U, GX_AOP_AND, GX_GEQUAL, 1U);
|
||||||
|
GXSetZCompLoc(0U);
|
||||||
|
PSMTXIdentity(arg1);
|
||||||
|
GXLoadPosMtxImm(arg1, 0U);
|
||||||
|
|
||||||
|
PSMTXInvXpose(arg1, sp90);
|
||||||
|
GXLoadNrmMtxImm(sp90, 0);
|
||||||
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||||
|
|
||||||
|
sp10 = lbl_1_bss_454->bmp;
|
||||||
|
lbl_1_bss_2C += 1;
|
||||||
|
HuSprTexLoad(lbl_1_bss_454, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR);
|
||||||
|
|
||||||
|
PPCSync();
|
||||||
|
GXInitTexObj(&sp30, lbl_1_bss_30[0], 0x280U, 0x1E0U, 4U, GX_CLAMP, GX_CLAMP, 0U);
|
||||||
|
GXInitTexObjLOD(&sp30, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0U, 0U, GX_ANISO_1);
|
||||||
|
GXLoadTexObj(&sp30, GX_TEXMAP0);
|
||||||
|
GXSetNumIndStages(1U);
|
||||||
|
|
||||||
|
PSMTXScale(sp150, 0.1f, 0.1f, 0.0f);
|
||||||
|
sp18[0][0] = sp150[0][0];
|
||||||
|
sp18[0][1] = sp150[0][1];
|
||||||
|
sp18[0][2] = 0.0f;
|
||||||
|
sp18[1][0] = sp150[1][0];
|
||||||
|
sp18[1][1] = sp150[1][1];
|
||||||
|
sp18[1][2] = 0.0f;
|
||||||
|
|
||||||
|
PSMTXRotRad(spF0, 0x58, -1.5707964f);
|
||||||
|
mtxRot(spF0, 0.0f, 0.0f, 0.0f);
|
||||||
|
temp_f31 = 0.0015625f;
|
||||||
|
PSMTXScale(sp120, temp_f31, temp_f31, temp_f31);
|
||||||
|
PSMTXConcat(sp120, spF0, sp150);
|
||||||
|
PSMTXTrans(spC0, 0.5f, 0.0f, 0.5f);
|
||||||
|
GXLoadTexMtxImm(sp150, 0x1EU, GX_MTX2x4);
|
||||||
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1EU, 0U, 0x7DU);
|
||||||
|
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP1);
|
||||||
|
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_4, GX_ITS_4);
|
||||||
|
GXSetIndTexMtx(GX_ITM_0, sp18, 0);
|
||||||
|
GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, 1, 0, GX_ITM_0);
|
||||||
|
|
||||||
|
lbl_1_bss_28 += 5.0f;
|
||||||
|
if (lbl_1_bss_28 > 360.0f) {
|
||||||
|
lbl_1_bss_28 -= 360.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||||
|
|
||||||
|
GXPosition3f32(0.0f, 0.0f, 0.0f);
|
||||||
|
GXTexCoord2f32(0.0f, 1.0f);
|
||||||
|
GXNormal3f32(0.0f, var_f30 / 640.0f, var_f29 / 480.0f);
|
||||||
|
|
||||||
|
GXPosition3f32(640.0f, 0.0f, 0.0f);
|
||||||
|
GXTexCoord2f32(0.0f, 1.0f);
|
||||||
|
GXNormal3f32(0.0f, var_f28 / 640.0f, var_f29 / 480.0f);
|
||||||
|
|
||||||
|
GXPosition3f32(640.0f, 480.0f, 0.0f);
|
||||||
|
GXTexCoord2f32(0.0f, 1.0f);
|
||||||
|
GXNormal3f32(0.0f, var_f28 / 640.0f, var_f27 / 480.0f);
|
||||||
|
|
||||||
|
GXPosition3f32(0.0f, 480.0f, 0.0f);
|
||||||
|
GXTexCoord2f32(0.0f, 1.0f);
|
||||||
|
GXNormal3f32(0.0f, var_f30 / 640.0f, var_f27 / 480.0f);
|
||||||
|
|
||||||
|
GXEnd();
|
||||||
|
GXSetNumIndStages(0U);
|
||||||
|
GXSetTevDirect(GX_TEVSTAGE0);
|
||||||
|
GXSetTevDirect(GX_TEVSTAGE1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
235
src/REL/modeltestDll/modeltest00.c
Normal file
235
src/REL/modeltestDll/modeltest00.c
Normal file
|
|
@ -0,0 +1,235 @@
|
||||||
|
#include "math.h"
|
||||||
|
#include "unsplit.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
#include "game/wipe.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
|
||||||
|
#include "REL/modeltestDll.h"
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
omObjData * unk_bss_9FC;
|
||||||
|
omObjData * lbl_1_bss_9F8;
|
||||||
|
omObjData * lbl_1_bss_9F4;
|
||||||
|
s16 lbl_1_bss_9EC[4];
|
||||||
|
s16 lbl_1_bss_9AC[4][8];
|
||||||
|
Process * lbl_1_bss_9A8;
|
||||||
|
u16 lbl_1_data_358[4] = {1, 2, 4, 8};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_34B0()
|
||||||
|
{
|
||||||
|
Process * temp_r30;
|
||||||
|
s16 var_r31;
|
||||||
|
|
||||||
|
OSReport("******* MODELTESTObjectSetup *********\n");
|
||||||
|
|
||||||
|
temp_r30 = omInitObjMan(0x32, 0x2000);
|
||||||
|
CRot.x = -22.0f;
|
||||||
|
CRot.y = 0.0f;
|
||||||
|
CRot.z = 0.0f;
|
||||||
|
Center.x = 0.0f;
|
||||||
|
Center.y = 60.0f;
|
||||||
|
Center.z = 0.0f;
|
||||||
|
CZoom = 400.0f;
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||||
|
{
|
||||||
|
Hu3DCameraCreate(lbl_1_data_358[var_r31]);
|
||||||
|
Hu3DCameraPerspectiveSet(lbl_1_data_358[var_r31], 45.0f, 20.0f, 20000.0f, 1.2f);
|
||||||
|
Hu3DCameraViewportSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, ((var_r31 & 2) != 0) ? 0xF0 : 0, 320.0f, 240.0f, 0.0f, 1.0f);
|
||||||
|
Hu3DCameraScissorSet(lbl_1_data_358[var_r31], (var_r31 & 1) * 320, ((var_r31 & 2) != 0) ? 0xF0 : 0, 320, 240);
|
||||||
|
}
|
||||||
|
|
||||||
|
lbl_1_bss_9F4 = omAddObjEx(temp_r30, 0, 0x20U, 0x20U, -1, fn_1_37DC);
|
||||||
|
lbl_1_bss_9F8 = omAddObjEx(temp_r30, 0x7FDA, 0U, 0U, -1, fn_1_439C);
|
||||||
|
lbl_1_bss_9A8 = HuPrcCreate(fn_1_46F0, 0x64U, 0x2000U, 0);
|
||||||
|
|
||||||
|
Hu3DBGColorSet(0x20U, 0x80U, 0x80U);
|
||||||
|
WipeCreate(1, 0, 0x1E);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
static inline void HuControlCamCenter(Point3d *sp18, Point3d *sp30) {
|
||||||
|
s8 temp_r28;
|
||||||
|
|
||||||
|
temp_r28 = HuPadSubStkX[0] & 0xF8;
|
||||||
|
if (temp_r28 != 0) {
|
||||||
|
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||||
|
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||||
|
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||||
|
}
|
||||||
|
PSVECNormalize(sp18, sp30);
|
||||||
|
temp_r28 = -(HuPadSubStkY[0] & 0xF8);
|
||||||
|
if (temp_r28 != 0) {
|
||||||
|
Center.x += 0.05f * (sp30->x * temp_r28);
|
||||||
|
Center.y += 0.05f * (sp30->y * temp_r28);
|
||||||
|
Center.z += 0.05f * (sp30->z * temp_r28);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_37DC(omObjData *)
|
||||||
|
{
|
||||||
|
Point3d sp3C;
|
||||||
|
Point3d sp30;
|
||||||
|
Point3d sp24;
|
||||||
|
Point3d sp18;
|
||||||
|
float temp_f31;
|
||||||
|
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_START) != 0) {
|
||||||
|
if (lbl_1_bss_9A8) {
|
||||||
|
HuPrcKill(lbl_1_bss_9A8);
|
||||||
|
}
|
||||||
|
omOvlReturnEx(1, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((HuPadBtn[0] & PAD_BUTTON_UP) != 0) {
|
||||||
|
CRot.x += 2.0f;
|
||||||
|
}
|
||||||
|
if ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0) {
|
||||||
|
CRot.x -= 2.0f;
|
||||||
|
}
|
||||||
|
if ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0) {
|
||||||
|
CRot.y += 2.0f;
|
||||||
|
}
|
||||||
|
if ((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) {
|
||||||
|
CRot.y -= 2.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
CZoom += HuPadTrigL[0] / 2;
|
||||||
|
CZoom -= HuPadTrigR[0] / 2;
|
||||||
|
|
||||||
|
sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)));
|
||||||
|
sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0)));
|
||||||
|
sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))));
|
||||||
|
sp30.x = Center.x - sp3C.x;
|
||||||
|
sp30.y = Center.y - sp3C.y;
|
||||||
|
sp30.z = Center.z - sp3C.z;
|
||||||
|
sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||||
|
sp24.y = cos((M_PI * CRot.x) / 180.0);
|
||||||
|
sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0));
|
||||||
|
temp_f31 = CRot.z;
|
||||||
|
|
||||||
|
sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0));
|
||||||
|
|
||||||
|
sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0));
|
||||||
|
|
||||||
|
sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0))
|
||||||
|
+ (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0))
|
||||||
|
+ sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0)));
|
||||||
|
|
||||||
|
PSVECCrossProduct(&sp24, &sp30, &sp30);
|
||||||
|
PSVECNormalize(&sp30, &sp30);
|
||||||
|
|
||||||
|
HuControlCamCenter(&sp18, &sp30);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_439C(omObjData * )
|
||||||
|
{
|
||||||
|
s16 var_r31;
|
||||||
|
f32 temp_f30;
|
||||||
|
f32 temp_f31;
|
||||||
|
f32 sp10;
|
||||||
|
Point3d sp2C;
|
||||||
|
Point3d sp20;
|
||||||
|
Point3d sp14;
|
||||||
|
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||||
|
{
|
||||||
|
temp_f31 = CRot.x;
|
||||||
|
temp_f30 = CRot.y + (var_r31 * 90);
|
||||||
|
sp10 = CRot.z;
|
||||||
|
sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
|
||||||
|
sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0));
|
||||||
|
sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0))));
|
||||||
|
|
||||||
|
sp20.x = Center.x;
|
||||||
|
sp20.y = Center.y;
|
||||||
|
sp20.z = Center.z;
|
||||||
|
|
||||||
|
sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
|
||||||
|
sp14.y = cos((M_PI * temp_f31) / 180.0);
|
||||||
|
sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0));
|
||||||
|
|
||||||
|
Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
const Point3d lbl_1_rodata_18C = {0.0f, 0.0f, 0.0f};
|
||||||
|
const Point3d lbl_1_rodata_198 = {0.0f, 1.0f, 0.0f};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
void fn_1_46F0(void)
|
||||||
|
{
|
||||||
|
Point3d sp20;
|
||||||
|
Point3d sp14;
|
||||||
|
Point3d sp8;
|
||||||
|
s16 var_r31;
|
||||||
|
s16 var_r30;
|
||||||
|
|
||||||
|
sp14 = lbl_1_rodata_18C;
|
||||||
|
sp8 = lbl_1_rodata_198;
|
||||||
|
|
||||||
|
Hu3DGLightCreate(0.0f, 500.0f, 1000.0f, 0.0f, -0.5f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
|
||||||
|
Hu3DShadowCreate(45.0f, 500.0f, 8000.0f);
|
||||||
|
Hu3DShadowTPLvlSet(0.5f);
|
||||||
|
Hu3DShadowSizeSet(0xC0U);
|
||||||
|
|
||||||
|
sp20.x = -500.0f;
|
||||||
|
sp20.y = 1000.0f;
|
||||||
|
sp20.z = 1000.0f;
|
||||||
|
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
|
||||||
|
|
||||||
|
for (var_r31 = 0; var_r31 < 4; ++var_r31)
|
||||||
|
{
|
||||||
|
var_r30 = var_r31;
|
||||||
|
lbl_1_bss_9EC[var_r31] = CharModelCreate(var_r30, 8);
|
||||||
|
Hu3DModelShadowSet(lbl_1_bss_9EC[var_r31]);
|
||||||
|
lbl_1_bss_9AC[var_r31][0] = CharModelMotionCreate(var_r30, 0x5F0002);
|
||||||
|
CharModelMotionSet(var_r30, lbl_1_bss_9AC[var_r31][0]);
|
||||||
|
Hu3DModelAttrSet(lbl_1_bss_9EC[var_r31], 0x40000001U);
|
||||||
|
Hu3DModelCameraSet(lbl_1_bss_9EC[var_r31], lbl_1_data_358[var_r31]);
|
||||||
|
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], ((( var_r31 / 4) * 200) - 100), 0.0f, (-( var_r31 % 4) * 150));
|
||||||
|
Hu3DModelPosSet(lbl_1_bss_9EC[var_r31], 0.0f, 0.0f, 0.0f);
|
||||||
|
CharModelMotionDataClose(var_r30);
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r31 = Hu3DModelCreateFile(0x700024);
|
||||||
|
Hu3DModelScaleSet(var_r31, 5.0f, 5.0f, 5.0f);
|
||||||
|
Hu3DModelShadowMapSet(var_r31);
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
{
|
||||||
|
if ((HuPadBtnDown[0] & PAD_BUTTON_Y) != 0) {
|
||||||
|
Hu3DCameraKill(2);
|
||||||
|
Hu3DCameraKill(4);
|
||||||
|
Hu3DCameraKill(8);
|
||||||
|
sp20.x =
|
||||||
|
sp20.z =
|
||||||
|
sp20.y = 0.0f;
|
||||||
|
sp20.y += 200.0f;
|
||||||
|
CharModelCoinEffectCreate(4, &sp20);
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
const Point3d lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f};
|
||||||
|
const Point3d lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f};
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------- //
|
||||||
0
src/REL/modeltestDll/modeltest01.c
Normal file
0
src/REL/modeltestDll/modeltest01.c
Normal file
|
|
@ -5,14 +5,15 @@
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "REL/w03Dll.h"
|
#include "REL/w03Dll.h"
|
||||||
#include "game/board/space.h"
|
#include "game/board/space.h"
|
||||||
|
#include "game/board/star.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
|
|
||||||
void BoardModelPosSet(s16, f32, f32, f32);
|
s32 BoardModelPosSet(s16, f32, f32, f32);
|
||||||
s32 BoardModelMotionStart(s16, s32, s32);
|
s32 BoardModelMotionStart(s16, s32, u32);
|
||||||
|
|
||||||
void fn_8005B150(void*, void*);
|
void fn_8005B150(void*, void*);
|
||||||
void fn_1_740(void);
|
void fn_1_740(void);
|
||||||
|
|
@ -26,7 +27,7 @@ void fn_1_AF8(void);
|
||||||
void fn_1_DEC(void);
|
void fn_1_DEC(void);
|
||||||
void fn_1_10B0(void);
|
void fn_1_10B0(void);
|
||||||
s32 fn_1_12C8(void);
|
s32 fn_1_12C8(void);
|
||||||
void fn_8006DDE8(s16, f32);
|
s32 fn_8006DDE8(s16, f32);
|
||||||
void fn_1_10E4(omObjData* arg0);
|
void fn_1_10E4(omObjData* arg0);
|
||||||
extern Process *boardObjMan;
|
extern Process *boardObjMan;
|
||||||
typedef void (*VoidFunc)(void);
|
typedef void (*VoidFunc)(void);
|
||||||
|
|
@ -35,7 +36,7 @@ extern const VoidFunc _dtors[];
|
||||||
|
|
||||||
|
|
||||||
f32 BoardModelMotionTimeGet(s16);
|
f32 BoardModelMotionTimeGet(s16);
|
||||||
s16 BoardModelCreate(s32, void*, s32);
|
s16 BoardModelCreate(s32, s32*, s32);
|
||||||
void BoardModelKill(s16);
|
void BoardModelKill(s16);
|
||||||
void BoardModelMotionStartEndSet(s16, s32, s32);
|
void BoardModelMotionStartEndSet(s16, s32, s32);
|
||||||
void Hu3DFogSet(f32, f32, u8, u8, u8);
|
void Hu3DFogSet(f32, f32, u8, u8, u8);
|
||||||
|
|
@ -44,18 +45,18 @@ u8 WipeStatGet(void);
|
||||||
|
|
||||||
//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}, DATA_MAKE_NUM(DATADIR_W03, 0x0004)},
|
||||||
{{145.0988f, 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}, DATA_MAKE_NUM(DATADIR_W03, 0x0005)},
|
||||||
{{-1548.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}, DATA_MAKE_NUM(DATADIR_W03, 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}, DATA_MAKE_NUM(DATADIR_W03, 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}, DATA_MAKE_NUM(DATADIR_W03, 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}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
|
||||||
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x000A)},
|
{{-1950.0f, 0.0f, 1850.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 0.914f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x000A)},
|
||||||
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0010)},
|
{{1950.0f, 0.0f, -1800.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0010)},
|
||||||
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0011)},
|
{{-3150.0f, 0.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0011)},
|
||||||
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0077, 0x0012)},
|
{{-3150.0f, 270.0f, -600.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0012)},
|
||||||
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)},
|
{{2080.0f, 0.0f, -1635.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
|
||||||
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, MAKE_DATA_NUM(0x0002, 0x000D)},
|
{{-3000.0f, 0.0f, -500.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_BGUEST, 0x000D)},
|
||||||
};
|
};
|
||||||
|
|
||||||
s16 lbl_1_data_1E0 = -1;
|
s16 lbl_1_data_1E0 = -1;
|
||||||
|
|
@ -80,12 +81,12 @@ w03StructUnk1 lbl_1_data_1EC = {
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_20C[] = {
|
s32 lbl_1_data_20C[] = {
|
||||||
MAKE_DATA_NUM(0x0077, 0x001C),
|
DATA_MAKE_NUM(DATADIR_W03, 0x001C),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_214[] = {
|
s32 lbl_1_data_214[] = {
|
||||||
MAKE_DATA_NUM(0x0002, 0x000E),
|
DATA_MAKE_NUM(DATADIR_BGUEST, 0x000E),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -142,10 +143,10 @@ void BoardCreate(void) {
|
||||||
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
|
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
|
||||||
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
|
||||||
lbl_1_data_1E4 = BoardModelCreate(0x77001B, &lbl_1_data_20C, 0);
|
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
|
||||||
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
|
||||||
lbl_1_data_1E6 = BoardModelCreate(0x2000D, &lbl_1_data_214, 0);
|
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
|
||||||
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include "dolphin.h"
|
#include "dolphin.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
#include "REL/w03Dll.h"
|
#include "REL/w03Dll.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
|
|
@ -670,7 +671,7 @@ void fn_1_95B8(omObjData* arg0) {
|
||||||
var_r30->unk8.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
|
var_r30->unk8.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
|
||||||
if (var_r30->unk8.y < temp_r29->unk8) {
|
if (var_r30->unk8.y < temp_r29->unk8) {
|
||||||
var_r30->unk8.y = temp_r29->unk8;
|
var_r30->unk8.y = temp_r29->unk8;
|
||||||
CharModelCreateCoinParticle(1, &var_r30->unk8);
|
CharModelCoinEffectCreate(1, &var_r30->unk8);
|
||||||
BoardModelVisibilitySet(var_r30->unk_02, 0);
|
BoardModelVisibilitySet(var_r30->unk_02, 0);
|
||||||
HuAudFXPlay(7);
|
HuAudFXPlay(7);
|
||||||
BoardPlayerCoinsAdd(temp_r29->unk4, 1);
|
BoardPlayerCoinsAdd(temp_r29->unk4, 1);
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,10 @@
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "REL/w03Dll.h"
|
#include "REL/w03Dll.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
#include "game/board/space.h"
|
#include "game/board/space.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
|
|
@ -67,7 +69,6 @@ s32 BoardVecDAngleCalcRange(float *value, float min, float range);
|
||||||
void BoardCameraQuakeSet(s32 duration, float strength);
|
void BoardCameraQuakeSet(s32 duration, float strength);
|
||||||
s16 MGSeqCreate(s32, ...);
|
s16 MGSeqCreate(s32, ...);
|
||||||
u8 MGSeqStatGet(s16);
|
u8 MGSeqStatGet(s16);
|
||||||
void omVibrate(s16, s16, s16, s16);
|
|
||||||
f32 BoardPlayerRotYGet(s32);
|
f32 BoardPlayerRotYGet(s32);
|
||||||
f32 BoardModelMotionTimeGet(s16);
|
f32 BoardModelMotionTimeGet(s16);
|
||||||
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
|
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
|
||||||
|
|
@ -130,20 +131,20 @@ char* lbl_1_data_508[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_514[] = {
|
s32 lbl_1_data_514[] = {
|
||||||
MAKE_DATA_NUM(7, 0x6D),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x6D),
|
||||||
MAKE_DATA_NUM(7, 0x6E),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x6E),
|
||||||
MAKE_DATA_NUM(7, 0x6F),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x6F),
|
||||||
MAKE_DATA_NUM(7, 0x70),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x70),
|
||||||
MAKE_DATA_NUM(7, 0x71),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x71),
|
||||||
MAKE_DATA_NUM(7, 0x72),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x72),
|
||||||
MAKE_DATA_NUM(7, 0x73),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x73),
|
||||||
MAKE_DATA_NUM(7, 0x74),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x74),
|
||||||
MAKE_DATA_NUM(7, 0x76),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x76),
|
||||||
MAKE_DATA_NUM(7, 0x77),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x77),
|
||||||
MAKE_DATA_NUM(7, 0x78),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x78),
|
||||||
MAKE_DATA_NUM(7, 0x79),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x79),
|
||||||
MAKE_DATA_NUM(7, 0x7A),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x7A),
|
||||||
MAKE_DATA_NUM(7, 0x7B),
|
DATA_MAKE_NUM(DATADIR_BOARD, 0x7B),
|
||||||
};
|
};
|
||||||
|
|
||||||
//BSS
|
//BSS
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,11 @@
|
||||||
#include "game/audio.h"
|
#include "game/audio.h"
|
||||||
#include "game/board/space.h"
|
#include "game/board/space.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
|
||||||
void fn_1_1358(void);
|
void fn_1_1358(void);
|
||||||
void fn_1_152C(void);
|
void fn_1_152C(void);
|
||||||
|
|
@ -29,7 +31,6 @@ s32 BoardPlayerMotBlendCheck(s32);
|
||||||
f32 BoardPlayerRotYGet(s32);
|
f32 BoardPlayerRotYGet(s32);
|
||||||
void BoardConfettiCreate(Point3d*, s16, f32);
|
void BoardConfettiCreate(Point3d*, s16, f32);
|
||||||
double atan2(double y, double x);
|
double atan2(double y, double x);
|
||||||
void omVibrate(s16, s16, s16, s16);
|
|
||||||
f32 BoardModelMotionTimeGet(s16);
|
f32 BoardModelMotionTimeGet(s16);
|
||||||
|
|
||||||
//DATA
|
//DATA
|
||||||
|
|
@ -41,26 +42,26 @@ s32 lbl_1_data_288 = -1;
|
||||||
|
|
||||||
char lbl_1_data_28C[] = "%d";
|
char lbl_1_data_28C[] = "%d";
|
||||||
|
|
||||||
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
|
s32 lbl_1_data_290[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
|
||||||
MAKE_DATA_NUM(0x5F, 0x62),
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x1A, 0x62),
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x6D, 0x62),
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x8A, 0x62),
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x85, 0x62),
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x11, 0x62),
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x0D, 0x62),
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x62),
|
||||||
MAKE_DATA_NUM(0x81, 0x62),
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x62),
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses MAKE_DATA_NUM macro
|
s32 lbl_1_data_2B0[] = { //TODO: make sure this actually uses DATA_MAKE_NUM macro
|
||||||
MAKE_DATA_NUM(0x5F, 0x33),
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x1A, 0x33),
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x6D, 0x33),
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x8A, 0x33),
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x85, 0x33),
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x11, 0x33),
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x0D, 0x33),
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x33),
|
||||||
MAKE_DATA_NUM(0x81, 0x33),
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x33),
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_2D0[] = {
|
s32 lbl_1_data_2D0[] = {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
#include "REL/w10Dll.h"
|
#include "REL/w10Dll.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
#include "game/board/window.h"
|
#include "game/board/window.h"
|
||||||
|
|
||||||
s32 lbl_1_data_78[2] = {
|
s32 lbl_1_data_78[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 16),
|
DATA_MAKE_NUM(DATADIR_W10, 16),
|
||||||
-1
|
-1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -14,7 +15,7 @@ Vec lbl_1_data_80[2] = {
|
||||||
|
|
||||||
void fn_1_AEC(void) {
|
void fn_1_AEC(void) {
|
||||||
lbl_1_bss_1C = 0;
|
lbl_1_bss_1C = 0;
|
||||||
lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), &lbl_1_data_78, 0);
|
lbl_1_bss_1E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 15), lbl_1_data_78, 0);
|
||||||
BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001);
|
||||||
BoardTutorialHostSet(lbl_1_bss_1E);
|
BoardTutorialHostSet(lbl_1_bss_1E);
|
||||||
BoardModelLayerSet(lbl_1_bss_1E, 6);
|
BoardModelLayerSet(lbl_1_bss_1E, 6);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
#include "include/REL/w10Dll.h"
|
#include "include/REL/w10Dll.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
|
#include "game/board/star.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
|
|
@ -22,7 +24,7 @@ unkw10Dll lbl_1_data_0[1] = {
|
||||||
3300.0f, 100.0f, -900.0f,
|
3300.0f, 100.0f, -900.0f,
|
||||||
0.0f, 0.0f, 0.0f,
|
0.0f, 0.0f, 0.0f,
|
||||||
1.0f, 1.0f, 1.0f,
|
1.0f, 1.0f, 1.0f,
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 3)
|
DATA_MAKE_NUM(DATADIR_W10, 3)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,22 +44,22 @@ s32 lbl_1_data_34[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_54[2] = {
|
s32 lbl_1_data_54[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 18),
|
DATA_MAKE_NUM(DATADIR_W10, 18),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_5C[2] = {
|
s32 lbl_1_data_5C[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BGUEST, 9),
|
DATA_MAKE_NUM(DATADIR_BGUEST, 9),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_64[2] = {
|
s32 lbl_1_data_64[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BGUEST, 24),
|
DATA_MAKE_NUM(DATADIR_BGUEST, 24),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 lbl_1_data_6C[2] = {
|
s32 lbl_1_data_6C[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BGUEST, 14),
|
DATA_MAKE_NUM(DATADIR_BGUEST, 14),
|
||||||
DATA_NUM_LISTEND
|
DATA_NUM_LISTEND
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -85,26 +87,26 @@ void BoardCreate(void) {
|
||||||
fn_1_AEC();
|
fn_1_AEC();
|
||||||
fn_1_1D68();
|
fn_1_1D68();
|
||||||
lbl_1_bss_C = 0;
|
lbl_1_bss_C = 0;
|
||||||
BoardSpaceInit(MAKE_DATA_NUM(DATADIR_W10, 0));
|
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0));
|
||||||
temp = BoardSpaceFlagSearch(0, 1);
|
temp = BoardSpaceFlagSearch(0, 1);
|
||||||
BoardTutorialBlockSetPos(temp, 1);
|
BoardTutorialBlockSetPos(temp, 1);
|
||||||
lbl_1_data_28 = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 1), NULL, 0);
|
lbl_1_data_28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0);
|
||||||
fn_8006DDE8(lbl_1_data_28, -1.0f);
|
fn_8006DDE8(lbl_1_data_28, -1.0f);
|
||||||
BoardModelPosSet(lbl_1_data_28, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_28, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_28, 0, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_28, 0, 0x40000001);
|
||||||
BoardModelMotionSpeedSet(lbl_1_data_28, 1.0f);
|
BoardModelMotionSpeedSet(lbl_1_data_28, 1.0f);
|
||||||
lbl_1_data_2A = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 2), NULL, 0);
|
lbl_1_data_2A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0);
|
||||||
fn_8006DDE8(lbl_1_data_2A, -1.0f);
|
fn_8006DDE8(lbl_1_data_2A, -1.0f);
|
||||||
BoardModelPosSet(lbl_1_data_2A, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_2A, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_2A, 0, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_2A, 0, 0x40000001);
|
||||||
lbl_1_data_2C = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 17), lbl_1_data_54, 0);
|
lbl_1_data_2C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), lbl_1_data_54, 0);
|
||||||
BoardModelPosSet(lbl_1_data_2C, 0.0f, 0.0f, 0.0f);
|
BoardModelPosSet(lbl_1_data_2C, 0.0f, 0.0f, 0.0f);
|
||||||
BoardModelMotionStart(lbl_1_data_2C, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_2C, 1, 0x40000001);
|
||||||
lbl_1_data_2E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0);
|
lbl_1_data_2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0);
|
||||||
BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001);
|
||||||
lbl_1_data_32 = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0);
|
lbl_1_data_32 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0);
|
||||||
BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001);
|
||||||
lbl_1_data_30 = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0);
|
lbl_1_data_30 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0);
|
||||||
BoardModelMotionStart(lbl_1_data_30, 1, 0x40000001);
|
BoardModelMotionStart(lbl_1_data_30, 1, 0x40000001);
|
||||||
BoardLightHookSet(&fn_1_8C0, &fn_1_904);
|
BoardLightHookSet(&fn_1_8C0, &fn_1_904);
|
||||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
|
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
#include "include/REL/w10Dll.h"
|
#include "include/REL/w10Dll.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/star.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
|
||||||
void fn_1_D2C(void) {
|
void fn_1_D2C(void) {
|
||||||
fn_1_BA0(0x2E0001);
|
fn_1_BA0(0x2E0001);
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include "game/pad.h"
|
#include "game/pad.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/wipe.h"
|
#include "game/wipe.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
|
||||||
char lbl_1_data_98[] = "@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000";
|
char lbl_1_data_98[] = "@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000";
|
||||||
|
|
||||||
|
|
@ -68,17 +69,17 @@ w10DllUnk04 lbl_1_data_108[42] = {
|
||||||
char lbl_1_data_258[] = "Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n";
|
char lbl_1_data_258[] = "Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n";
|
||||||
|
|
||||||
s32 lbl_1_data_2A8[11] = {
|
s32 lbl_1_data_2A8[11] = {
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 4),
|
DATA_MAKE_NUM(DATADIR_W10, 4),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 5),
|
DATA_MAKE_NUM(DATADIR_W10, 5),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 6),
|
DATA_MAKE_NUM(DATADIR_W10, 6),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 7),
|
DATA_MAKE_NUM(DATADIR_W10, 7),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 8),
|
DATA_MAKE_NUM(DATADIR_W10, 8),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 9),
|
DATA_MAKE_NUM(DATADIR_W10, 9),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 10),
|
DATA_MAKE_NUM(DATADIR_W10, 10),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 11),
|
DATA_MAKE_NUM(DATADIR_W10, 11),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 12),
|
DATA_MAKE_NUM(DATADIR_W10, 12),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 13),
|
DATA_MAKE_NUM(DATADIR_W10, 13),
|
||||||
MAKE_DATA_NUM(DATADIR_W10, 14)
|
DATA_MAKE_NUM(DATADIR_W10, 14)
|
||||||
};
|
};
|
||||||
|
|
||||||
void fn_1_176C(void) {
|
void fn_1_176C(void) {
|
||||||
|
|
@ -108,7 +109,7 @@ void fn_1_1834(void) {
|
||||||
void fn_1_18BC(void) {
|
void fn_1_18BC(void) {
|
||||||
fn_1_BA0(0x2E0028);
|
fn_1_BA0(0x2E0028);
|
||||||
fn_1_BA0(0x2E0029);
|
fn_1_BA0(0x2E0029);
|
||||||
boardTutorialData = 0;
|
boardTutorialData[0] = 0;
|
||||||
BoardStatusItemSet(0);
|
BoardStatusItemSet(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ void ClusterProc(ModelData *arg0) {
|
||||||
temp_r31 = temp_r23->object;
|
temp_r31 = temp_r23->object;
|
||||||
temp_r31 += var_r29->target;
|
temp_r31 += var_r29->target;
|
||||||
Vertextop = temp_r31->data.vertex->data;
|
Vertextop = temp_r31->data.vertex->data;
|
||||||
if (temp_r31->data.hook) {
|
if (temp_r31->data.cenvCnt) {
|
||||||
for (k = 0; k < temp_r31->data.vertex->count; k++) {
|
for (k = 0; k < temp_r31->data.vertex->count; k++) {
|
||||||
Vertextop[k].x = ((Vec*) temp_r31->data.file[0])[k].x;
|
Vertextop[k].x = ((Vec*) temp_r31->data.file[0])[k].x;
|
||||||
Vertextop[k].y = ((Vec*) temp_r31->data.file[0])[k].y;
|
Vertextop[k].y = ((Vec*) temp_r31->data.file[0])[k].y;
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ static void SetEnvelopMain(HsfData *arg0) {
|
||||||
normtop = var_r31->data.file[1];
|
normtop = var_r31->data.file[1];
|
||||||
normenv = temp_r28->data;
|
normenv = temp_r28->data;
|
||||||
var_r25 = var_r31->data.cenv;
|
var_r25 = var_r31->data.cenv;
|
||||||
for (j = 0; j < var_r31->data.hook; j++, var_r25++) {
|
for (j = 0; j < var_r31->data.cenvCnt; j++, var_r25++) {
|
||||||
SetEnvelop(var_r25);
|
SetEnvelop(var_r25);
|
||||||
}
|
}
|
||||||
sp10 = temp_r30->data;
|
sp10 = temp_r30->data;
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ s32 HuAudSeqPlay(s16 arg0) {
|
||||||
if (musicOffF != 0 || omSysExitReq != 0) {
|
if (musicOffF != 0 || omSysExitReq != 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
temp_r31 = msmMusPlay(arg0, 0);
|
temp_r31 = msmMusPlay(arg0, NULL);
|
||||||
return temp_r31;
|
return temp_r31;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
158
src/game/board/audio.c
Executable file
158
src/game/board/audio.c
Executable file
|
|
@ -0,0 +1,158 @@
|
||||||
|
#include "game/board/audio.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/msm.h"
|
||||||
|
|
||||||
|
static s16 boardSeq[2][2];
|
||||||
|
|
||||||
|
static s32 boardFX = -1;
|
||||||
|
|
||||||
|
static s16 boardMusTbl[] = {
|
||||||
|
0x000D, 0x0011, 0x0015,
|
||||||
|
0x001C, 0x0021, 0x0025,
|
||||||
|
0x0028, 0x0029, 0x002A
|
||||||
|
};
|
||||||
|
|
||||||
|
void BoardMusStartBoard(void) {
|
||||||
|
s16 temp_r31 = boardMusTbl[GWBoardGet()];
|
||||||
|
|
||||||
|
BoardMusStart(0, temp_r31, 0x7F, 0);
|
||||||
|
BoardAudFXPlay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardMusStart(s32 arg0, s32 arg1, s8 arg2, u16 arg3) {
|
||||||
|
s16 *temp_r31 = boardSeq[arg0];
|
||||||
|
UnkMsmStruct_03 sp8;
|
||||||
|
|
||||||
|
if (arg1 == temp_r31[1]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (temp_r31[0] != -1) {
|
||||||
|
BoardAudSeqFadeOutFast(temp_r31[0]);
|
||||||
|
}
|
||||||
|
sp8.unk00 = 1;
|
||||||
|
if (arg3 != 0) {
|
||||||
|
sp8.unk00 |= 8;
|
||||||
|
}
|
||||||
|
if (arg2 < 0) {
|
||||||
|
sp8.unk00 |= 2;
|
||||||
|
arg2 = 0x7F;
|
||||||
|
}
|
||||||
|
sp8.unk06 = arg3;
|
||||||
|
sp8.unk05 = arg2;
|
||||||
|
sp8.unk04 = arg0;
|
||||||
|
temp_r31[0] = msmMusPlay(arg1, &sp8);
|
||||||
|
temp_r31[1] = arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudSeqFadeOutFast(s32 arg0) {
|
||||||
|
BoardAudSeqFadeOut(arg0, 0x64);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudSeqFadeOut(s32 arg0, u16 arg1) {
|
||||||
|
s16 *temp_r31 = boardSeq[arg0];
|
||||||
|
|
||||||
|
if (temp_r31[0] == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HuAudSeqFadeOut(temp_r31[0], arg1);
|
||||||
|
temp_r31[1] = temp_r31[0] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardMusLoudSet(s32 arg0, s32 arg1) {
|
||||||
|
if (arg1 != 0) {
|
||||||
|
BoardMusVolPanSet(arg0, 0x60, 0x1F4);
|
||||||
|
} else {
|
||||||
|
BoardMusVolPanSet(arg0, 0x7F, 0x1F4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardMusVolPanSet(s32 arg0, s8 arg1, u16 arg2) {
|
||||||
|
s16 *temp_r31 = boardSeq[arg0];
|
||||||
|
UnkMsmStruct_04 sp10;
|
||||||
|
|
||||||
|
if (temp_r31[0] == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sp10.unk00 = 1;
|
||||||
|
sp10.unk00 |= 2;
|
||||||
|
if (arg1 < 0) {
|
||||||
|
arg1 = 0x7F;
|
||||||
|
}
|
||||||
|
sp10.unk06 = arg2;
|
||||||
|
sp10.unk05 = arg1;
|
||||||
|
msmMusSetParam(temp_r31[0], &sp10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudSeqPause(s32 arg0, s32 arg1, u16 arg2) {
|
||||||
|
s16 *temp_r31 = boardSeq[arg0];
|
||||||
|
|
||||||
|
if (temp_r31[0] == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (arg1 != 0) {
|
||||||
|
if (BoardMusStatusGet(arg0) == 3) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (BoardMusStatusGet(arg0) != 3) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
HuAudSeqPause(temp_r31[0], arg1, arg2);
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardMusStatusGet(s32 arg0) {
|
||||||
|
s16 *temp_r31 = boardSeq[arg0];
|
||||||
|
|
||||||
|
if (temp_r31[0] == -1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return msmMusGetStatus(temp_r31[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudSeqClear(void) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
boardSeq[i][0] = boardSeq[i][1] = -1;
|
||||||
|
}
|
||||||
|
boardFX = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudSeqFadeOutAll(void) {
|
||||||
|
s16 *temp_r31;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
temp_r31 = boardSeq[i];
|
||||||
|
if (temp_r31[0] != -1) {
|
||||||
|
HuAudSeqFadeOut(temp_r31[0], 0x64);
|
||||||
|
temp_r31[1] = temp_r31[0] = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BoardAudFXStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudFXPlay(void) {
|
||||||
|
s32 var_r31;
|
||||||
|
|
||||||
|
switch (GWBoardGet()) {
|
||||||
|
case 4:
|
||||||
|
var_r31 = 0x48D;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
var_r31 = 0x4A2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (boardFX == -1) {
|
||||||
|
boardFX = HuAudFXPlay(var_r31);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardAudFXStop(void) {
|
||||||
|
if (boardFX != -1) {
|
||||||
|
HuAudFXStop(boardFX);
|
||||||
|
boardFX = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
#include "game/board/basic_space.h"
|
#include "game/board/basic_space.h"
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/flag.h"
|
#include "game/flag.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
@ -33,9 +35,7 @@ static void CoinChgSeparate(omObjData*, coinChg*);
|
||||||
static void CoinChgShow(omObjData*, coinChg*);
|
static void CoinChgShow(omObjData*, coinChg*);
|
||||||
static void CoinChgDisappear(omObjData*, coinChg*);
|
static void CoinChgDisappear(omObjData*, coinChg*);
|
||||||
|
|
||||||
extern void BoardTutorialHookExec(s16, s32);
|
|
||||||
extern void BoardCameraViewSet(s32);
|
extern void BoardCameraViewSet(s32);
|
||||||
extern void omVibrate(s16, s16, s16, s16);
|
|
||||||
extern void BoardPlayerPosGet(s32, Vec*);
|
extern void BoardPlayerPosGet(s32, Vec*);
|
||||||
extern void BoardModelPosGet(s16, Vec*);
|
extern void BoardModelPosGet(s16, Vec*);
|
||||||
extern void BoardPlayerMotionEndWait(s32);
|
extern void BoardPlayerMotionEndWait(s32);
|
||||||
|
|
@ -52,16 +52,16 @@ static omObjData *coinChgObj[4] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static s32 coinDigitMdl[10] = {
|
static s32 coinDigitMdl[10] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 12),
|
DATA_MAKE_NUM(DATADIR_BOARD, 12),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 13),
|
DATA_MAKE_NUM(DATADIR_BOARD, 13),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 14),
|
DATA_MAKE_NUM(DATADIR_BOARD, 14),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 15),
|
DATA_MAKE_NUM(DATADIR_BOARD, 15),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 16),
|
DATA_MAKE_NUM(DATADIR_BOARD, 16),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 17),
|
DATA_MAKE_NUM(DATADIR_BOARD, 17),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 18),
|
DATA_MAKE_NUM(DATADIR_BOARD, 18),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 19),
|
DATA_MAKE_NUM(DATADIR_BOARD, 19),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 20),
|
DATA_MAKE_NUM(DATADIR_BOARD, 20),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 21),
|
DATA_MAKE_NUM(DATADIR_BOARD, 21),
|
||||||
};
|
};
|
||||||
|
|
||||||
void BoardLandBlueExec(s32 player, s32 space) {
|
void BoardLandBlueExec(s32 player, s32 space) {
|
||||||
|
|
@ -206,8 +206,8 @@ void BoardCoinChgHide(s32 index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static const s32 coinSignMdl[2] = {
|
static const s32 coinSignMdl[2] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 22),
|
DATA_MAKE_NUM(DATADIR_BOARD, 22),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 23)
|
DATA_MAKE_NUM(DATADIR_BOARD, 23)
|
||||||
};
|
};
|
||||||
|
|
||||||
static void CreateCoinChg(coinChg *coin_chg, Vec *pos) {
|
static void CreateCoinChg(coinChg *coin_chg, Vec *pos) {
|
||||||
|
|
@ -221,7 +221,7 @@ static void CreateCoinChg(coinChg *coin_chg, Vec *pos) {
|
||||||
coin_chg->sign_model = BoardModelCreate(coinSignMdl[coin_chg->minus], NULL, 0);
|
coin_chg->sign_model = BoardModelCreate(coinSignMdl[coin_chg->minus], NULL, 0);
|
||||||
coin_chg->tens_model = BoardModelCreate(coinDigitMdl[coin_chg->tens], NULL, 0);
|
coin_chg->tens_model = BoardModelCreate(coinDigitMdl[coin_chg->tens], NULL, 0);
|
||||||
coin_chg->ones_model = BoardModelCreate(coinDigitMdl[coin_chg->ones], NULL, 0);
|
coin_chg->ones_model = BoardModelCreate(coinDigitMdl[coin_chg->ones], NULL, 0);
|
||||||
coin_chg->coin_model = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 10), NULL, 0);
|
coin_chg->coin_model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
|
||||||
BoardModelPosSetV(coin_chg->sign_model, pos);
|
BoardModelPosSetV(coin_chg->sign_model, pos);
|
||||||
BoardModelPosSetV(coin_chg->tens_model, pos);
|
BoardModelPosSetV(coin_chg->tens_model, pos);
|
||||||
BoardModelPosSetV(coin_chg->ones_model, pos);
|
BoardModelPosSetV(coin_chg->ones_model, pos);
|
||||||
|
|
|
||||||
462
src/game/board/block.c
Normal file
462
src/game/board/block.c
Normal file
|
|
@ -0,0 +1,462 @@
|
||||||
|
#include "game/flag.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
#include "game/process.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
#include "game/board/star.h"
|
||||||
|
#include "game/board/window.h"
|
||||||
|
#include "math.h"
|
||||||
|
|
||||||
|
#define BLOCK_SPAWN 0
|
||||||
|
#define BLOCK_HIT 2
|
||||||
|
#define BLOCK_OPEN 3
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 kill : 1;
|
||||||
|
u8 state : 3;
|
||||||
|
u8 unk00_field2 : 1;
|
||||||
|
u8 contains_star : 1;
|
||||||
|
u8 opened : 1;
|
||||||
|
u8 unk00_field5 : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
s16 hit_y_velocity;
|
||||||
|
s16 target_y_pos;
|
||||||
|
} BlockWork;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 kill : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
u8 lifetime;
|
||||||
|
s8 model_index;
|
||||||
|
s16 model;
|
||||||
|
} CoinWork;
|
||||||
|
|
||||||
|
static void BlockProc(void);
|
||||||
|
static void DestroyBlock(void);
|
||||||
|
static void ExecBlockObj(omObjData* arg0);
|
||||||
|
static void CreateBlockObj(s32 arg0);
|
||||||
|
static void DestroyBlockObj(BlockWork* unused0, omObjData* unused1);
|
||||||
|
static void SpawnBlock(BlockWork* arg0, omObjData* arg1);
|
||||||
|
static void HitBlock(BlockWork* arg0, omObjData* arg1);
|
||||||
|
static void OpenBlock(BlockWork* arg0, omObjData* arg1);
|
||||||
|
static void SetBlockOpen(void);
|
||||||
|
static void SetBlockStop(void);
|
||||||
|
static void WaitBlockHit(void);
|
||||||
|
static void CreateCoinMdl(void);
|
||||||
|
static void KillCoinMdl(void);
|
||||||
|
static void PopupCoin(void);
|
||||||
|
static void PopupCoinExec(omObjData* arg0);
|
||||||
|
|
||||||
|
extern s8 boardTutorialBlockF;
|
||||||
|
extern s8 boardTutorialBlockItem;
|
||||||
|
|
||||||
|
static s16 jumpMot = -1;
|
||||||
|
static s16 starMdl = -1;
|
||||||
|
|
||||||
|
static f32 rotMax;
|
||||||
|
static f32 scaleAngle;
|
||||||
|
static f32 rotY;
|
||||||
|
|
||||||
|
static omObjData* blockObj;
|
||||||
|
static Process* blockProc;
|
||||||
|
|
||||||
|
static s16 coinMdl[10] = { -1, -1, -1, -1 };
|
||||||
|
static s32 coinF[10];
|
||||||
|
|
||||||
|
s32 BoardBlockExec(s32 arg0) {
|
||||||
|
if (BoardPlayerSizeGet(arg0) == 2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockProc = HuPrcChildCreate(BlockProc, 0x2003, 0x3800U, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(blockProc, DestroyBlock);
|
||||||
|
|
||||||
|
while (blockProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void BlockProc(void) {
|
||||||
|
s32 sp14[8] = {0x005F0060, 0x001A0060, 0x006D0060, 0x008A0060, 0x00850060, 0x00110060, 0x000D0060, 0x00810060};
|
||||||
|
Point3d sp8;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 i;
|
||||||
|
s32 player;
|
||||||
|
BlockWork* work;
|
||||||
|
s32* temp_r4;
|
||||||
|
s32 player_character;
|
||||||
|
|
||||||
|
player = GWSystem.player_curr;
|
||||||
|
|
||||||
|
player_character = GWPlayer[player].character;
|
||||||
|
jumpMot = BoardPlayerMotionCreate(player, sp14[player_character]);
|
||||||
|
BoardRotateDiceNumbers(player);
|
||||||
|
BoardPlayerMotBlendSet(player, 0, 0xF);
|
||||||
|
omVibrate(player, 12, 12, 0);
|
||||||
|
CreateBlockObj(player);
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(blockObj, BlockWork);
|
||||||
|
while (work->state != BLOCK_HIT) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardCameraViewSet(3);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
BoardWinCreate(0, 0x10000, -1);
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
BoardPlayerMotionShiftSet(player, 0xB, 0, 8.0, 0.0);
|
||||||
|
HuPrcSleep(9);
|
||||||
|
while (BoardPlayerMotionTimeGet(player) < 30.0f) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
HuAudFXPlay(0x30C);
|
||||||
|
SetBlockOpen();
|
||||||
|
while (BoardPlayerMotionEndCheck(player) == 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardRotateDiceNumbers(player);
|
||||||
|
|
||||||
|
if (work->contains_star != 0) {
|
||||||
|
SetBlockStop();
|
||||||
|
BoardModelPosGet(starMdl, &sp8);
|
||||||
|
if (_CheckFlag(0x1000B) == 0) {
|
||||||
|
BoardAudSeqPause(0, 1, 0x3E8);
|
||||||
|
}
|
||||||
|
BoardStarGive(player, &sp8);
|
||||||
|
if (_CheckFlag(0x1000B) == 0) {
|
||||||
|
BoardAudSeqPause(0, 0, 0x3E8);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < 0x14; i++) {
|
||||||
|
WaitBlockHit();
|
||||||
|
BoardPlayerMotionStart(player, (s32) jumpMot, 0);
|
||||||
|
BoardPlayerMotionSpeedSet(player, 2);
|
||||||
|
while (BoardPlayerMotionTimeGet(player) < 4) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
SetBlockOpen();
|
||||||
|
PopupCoin();
|
||||||
|
while (BoardPlayerMotionEndCheck(player) == 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardPlayerMotionStart(player, 1, 0);
|
||||||
|
BoardPlayerCoinsAdd(player, 1);
|
||||||
|
HuAudFXPlay(7);
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
|
||||||
|
SetBlockStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardWinCreate(0, work->contains_star != 0 ? 0x10001 : 0x10002, -1);
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
KillCoinMdl();
|
||||||
|
work->kill = 1;
|
||||||
|
|
||||||
|
BoardRotateDiceNumbers((s32) player);
|
||||||
|
HuPrcVSleep();
|
||||||
|
|
||||||
|
if ((_CheckFlag(0x1000B) != 0) && work->contains_star == 0) {
|
||||||
|
BoardTutorialHookExec(0x16, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardCameraViewSet(2);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyBlock(void) {
|
||||||
|
if (jumpMot != -1) {
|
||||||
|
BoardPlayerMotionKill(GWSystem.player_curr, jumpMot);
|
||||||
|
jumpMot = -1;
|
||||||
|
}
|
||||||
|
KillCoinMdl();
|
||||||
|
blockProc = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CreateBlockObj(s32 arg0) {
|
||||||
|
Point3d player_pos;
|
||||||
|
BlockWork* work;
|
||||||
|
s8 contains_star;
|
||||||
|
|
||||||
|
BoardPlayerPosGet(arg0, &player_pos);
|
||||||
|
starMdl = BoardModelCreate(0x70004, NULL, 0);
|
||||||
|
BoardModelVisibilitySet(starMdl, 0);
|
||||||
|
BoardModelMotionSpeedSet(starMdl, 0);
|
||||||
|
BoardModelLayerSet(starMdl, 2U);
|
||||||
|
|
||||||
|
blockObj = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, ExecBlockObj);
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(blockObj, BlockWork);
|
||||||
|
work->kill = 0;
|
||||||
|
work->unk00_field2 = 0;
|
||||||
|
work->opened = 0;
|
||||||
|
work->unk00_field5 = 0;
|
||||||
|
work->state = BLOCK_SPAWN;
|
||||||
|
|
||||||
|
blockObj->trans.x = player_pos.x;
|
||||||
|
blockObj->trans.y = 270 + player_pos.y;
|
||||||
|
blockObj->trans.z = player_pos.z;
|
||||||
|
|
||||||
|
blockObj->scale.x = blockObj->scale.y = blockObj->scale.z = 0.01;
|
||||||
|
blockObj->rot.x = blockObj->rot.y = blockObj->rot.z = 0.0;
|
||||||
|
|
||||||
|
scaleAngle = 0;
|
||||||
|
rotY = 0;
|
||||||
|
rotMax = 30;
|
||||||
|
|
||||||
|
BoardModelVisibilitySet(starMdl, 1);
|
||||||
|
|
||||||
|
if (BoardRandFloat() > 0.5f) {
|
||||||
|
contains_star = 0;
|
||||||
|
} else {
|
||||||
|
contains_star = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
work->contains_star = contains_star;
|
||||||
|
|
||||||
|
if (boardTutorialBlockF != 0) {
|
||||||
|
work->contains_star = boardTutorialBlockItem;
|
||||||
|
boardTutorialBlockF = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
HuAudFXPlay(0x302);
|
||||||
|
|
||||||
|
if (work->contains_star == 0) {
|
||||||
|
CreateCoinMdl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecBlockObj(omObjData* arg0) {
|
||||||
|
BlockWork* work;
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(arg0, BlockWork);
|
||||||
|
|
||||||
|
if (work->kill != 0 || BoardIsKill() != 0) {
|
||||||
|
DestroyBlockObj(work, arg0);
|
||||||
|
blockObj = 0;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (work->state) {
|
||||||
|
case BLOCK_SPAWN:
|
||||||
|
SpawnBlock(work, arg0);
|
||||||
|
break;
|
||||||
|
case BLOCK_HIT:
|
||||||
|
HitBlock(work, arg0);
|
||||||
|
break;
|
||||||
|
case BLOCK_OPEN:
|
||||||
|
OpenBlock(work, arg0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (work->unk00_field5 != 0) {
|
||||||
|
BoardModelVisibilitySet(starMdl, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardModelPosSet(starMdl, arg0->trans.x, arg0->trans.y, arg0->trans.z);
|
||||||
|
BoardModelRotSet(starMdl, arg0->rot.x, arg0->rot.y, arg0->rot.z);
|
||||||
|
BoardModelScaleSet(starMdl, arg0->scale.x, arg0->scale.y, arg0->scale.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyBlockObj(BlockWork* unused0, omObjData* unused1) {
|
||||||
|
if (starMdl != -1) {
|
||||||
|
BoardModelKill(starMdl);
|
||||||
|
starMdl = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SpawnBlock(BlockWork* arg0, omObjData* arg1) {
|
||||||
|
if (scaleAngle < 90.0f) {
|
||||||
|
scaleAngle += 3.75f;
|
||||||
|
if (scaleAngle > 90.0f) {
|
||||||
|
scaleAngle = 90.0f;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rotMax *= 0.5f;
|
||||||
|
if (rotMax < 0.8f) {
|
||||||
|
rotY = 0.0f;
|
||||||
|
rotMax = 0.0f;
|
||||||
|
arg0->hit_y_velocity = 0;
|
||||||
|
arg0->state = BLOCK_HIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rotY < 360.0f) {
|
||||||
|
rotY += rotMax;
|
||||||
|
if (rotY > 360.0f) {
|
||||||
|
rotY = 360.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
arg1->rot.y = rotY;
|
||||||
|
arg1->scale.x = arg1->scale.y = arg1->scale.z = sin(M_PI * scaleAngle / 180.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HitBlock(BlockWork* arg0, omObjData* arg1) {
|
||||||
|
float var_f30;
|
||||||
|
|
||||||
|
arg0->hit_y_velocity += 3;
|
||||||
|
if (arg0->hit_y_velocity > 0x168) {
|
||||||
|
arg0->hit_y_velocity -= 0x168;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSs16tof32(&arg0->hit_y_velocity, &var_f30);
|
||||||
|
arg1->trans.y += 0.2f * sin((M_PI * var_f30) / 180.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OpenBlock(BlockWork* arg0, omObjData* arg1) {
|
||||||
|
f32 target_y_pos;
|
||||||
|
|
||||||
|
if (arg0->opened == 0) {
|
||||||
|
arg0->opened = 1;
|
||||||
|
HuAudFXPlay(0x33B);
|
||||||
|
BoardModelMotionStart(starMdl, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (arg0->unk00_field2 == 0) {
|
||||||
|
OSf32tos16(&arg1->trans.y, &arg0->target_y_pos);
|
||||||
|
|
||||||
|
arg1->trans.y += 80.0f;
|
||||||
|
arg0->unk00_field2 = 1;
|
||||||
|
} else {
|
||||||
|
OSs16tof32(&arg0->target_y_pos, &target_y_pos);
|
||||||
|
arg1->trans.y += -8.0f;
|
||||||
|
|
||||||
|
if (arg1->trans.y < target_y_pos) {
|
||||||
|
arg1->trans.y = target_y_pos;
|
||||||
|
arg0->state = BLOCK_HIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetBlockOpen(void) {
|
||||||
|
BlockWork* work;
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(blockObj, BlockWork);
|
||||||
|
work->state = BLOCK_OPEN;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetBlockStop(void) {
|
||||||
|
BlockWork* work;
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(blockObj, BlockWork);
|
||||||
|
work->unk00_field5 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void WaitBlockHit(void) {
|
||||||
|
BlockWork* work;
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(blockObj, BlockWork);
|
||||||
|
|
||||||
|
while (work->state != BLOCK_HIT) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CreateCoinMdl(void) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i += 1) {
|
||||||
|
coinMdl[i] = BoardModelCreate(0x7000A, NULL, 1);
|
||||||
|
BoardModelVisibilitySet(coinMdl[i], 0);
|
||||||
|
coinF[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void KillCoinMdl(void) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 0xA; i += 1) {
|
||||||
|
if (coinMdl[i] != -1) {
|
||||||
|
BoardModelKill(coinMdl[i]);
|
||||||
|
coinMdl[i] = -1;
|
||||||
|
}
|
||||||
|
coinF[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline s32 FindCoinModel(s16 *out_model) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++) {
|
||||||
|
if (coinF[i] == 0) {
|
||||||
|
*out_model = coinMdl[i];
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PopupCoin(void) {
|
||||||
|
Point3d star_pos;
|
||||||
|
omObjData* coinObj;
|
||||||
|
s32 model_index;
|
||||||
|
s16 model;
|
||||||
|
CoinWork* work;
|
||||||
|
|
||||||
|
do {
|
||||||
|
HuPrcVSleep();
|
||||||
|
model_index = FindCoinModel(&model);
|
||||||
|
} while (model_index == -1);
|
||||||
|
|
||||||
|
coinObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, PopupCoinExec);
|
||||||
|
work = OM_GET_WORK_PTR(coinObj, CoinWork);
|
||||||
|
|
||||||
|
work->kill = 0;
|
||||||
|
work->lifetime = 10;
|
||||||
|
work->model = model;
|
||||||
|
work->model_index = model_index;
|
||||||
|
|
||||||
|
coinObj->trans.x = 15.0f;
|
||||||
|
coinObj->trans.y = 40.0f;
|
||||||
|
|
||||||
|
BoardModelPosGet(starMdl, &star_pos);
|
||||||
|
BoardModelPosSetV(work->model, &star_pos);
|
||||||
|
BoardModelVisibilitySet(work->model, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PopupCoinExec(omObjData* obj) {
|
||||||
|
Point3d coin_pos;
|
||||||
|
Point3d coin_rot;
|
||||||
|
CoinWork* work;
|
||||||
|
|
||||||
|
work = OM_GET_WORK_PTR(obj, CoinWork);
|
||||||
|
|
||||||
|
if (work->kill != 0 || BoardIsKill() != 0) {
|
||||||
|
BoardModelVisibilitySet(work->model, 0);
|
||||||
|
coinF[work->model_index] = 0;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), obj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (work->lifetime != 0) {
|
||||||
|
work->lifetime -= 1;
|
||||||
|
} else {
|
||||||
|
work->kill = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardModelPosGet(work->model, &coin_pos);
|
||||||
|
coin_pos.y += obj->trans.y;
|
||||||
|
BoardModelPosSetV(work->model, &coin_pos);
|
||||||
|
BoardModelRotGet(work->model, &coin_rot);
|
||||||
|
coin_rot.y += obj->trans.x;
|
||||||
|
|
||||||
|
if (coin_rot.y > 360.0f) {
|
||||||
|
coin_rot.y -= 360.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
BoardModelRotSetV(work->model, &coin_rot);
|
||||||
|
}
|
||||||
1487
src/game/board/boo.c
Executable file
1487
src/game/board/boo.c
Executable file
File diff suppressed because it is too large
Load diff
677
src/game/board/com.c
Executable file
677
src/game/board/com.c
Executable file
|
|
@ -0,0 +1,677 @@
|
||||||
|
#include "game/board/com.h"
|
||||||
|
#include "game/gamework.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/board/com_path.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/space.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/board/window.h"
|
||||||
|
|
||||||
|
#include "math.h"
|
||||||
|
|
||||||
|
s32 BoardBooComUseCheck(s32);
|
||||||
|
|
||||||
|
static void ExecComKeyLeft(void);
|
||||||
|
static void ExecComKeyRight(void);
|
||||||
|
static void ExecComKeyUp(void);
|
||||||
|
static void ExecComKeyDown(void);
|
||||||
|
static void ExecComKey(s32 arg0, s32 arg1, s32 arg2);
|
||||||
|
static s32 ChooseUseItem(s32 arg0);
|
||||||
|
static BOOL CheckMiniUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckMegaUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckSparkUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckBoardChangeUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckSwapUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckBooUse(s32 arg0, s32 arg1);
|
||||||
|
static BOOL CheckLampUse(s32 arg0, s32 arg1);
|
||||||
|
|
||||||
|
static s8 itemUse = -1;
|
||||||
|
|
||||||
|
static s8 comItemWeightTbl[8][12] = {
|
||||||
|
{ 0x0C, 0x0B, 0x05, 0x03, 0x01, 0x02, 0x06, 0x04, 0x00, 0x07, 0x09, 0x0A },
|
||||||
|
{ 0x0C, 0x0B, 0x05, 0x0A, 0x03, 0x01, 0x02, 0x00, 0x06, 0x04, 0x07, 0x09 },
|
||||||
|
{ 0x0C, 0x0B, 0x05, 0x06, 0x03, 0x01, 0x02, 0x0A, 0x07, 0x09, 0x00, 0x04 },
|
||||||
|
{ 0x0C, 0x05, 0x0B, 0x09, 0x03, 0x01, 0x02, 0x06, 0x00, 0x04, 0x0A, 0x07 },
|
||||||
|
{ 0x0C, 0x0B, 0x04, 0x09, 0x0A, 0x03, 0x01, 0x05, 0x02, 0x06, 0x00, 0x07 },
|
||||||
|
{ 0x0C, 0x0B, 0x05, 0x03, 0x01, 0x0A, 0x06, 0x02, 0x00, 0x04, 0x09, 0x07 },
|
||||||
|
{ 0x0C, 0x05, 0x0B, 0x04, 0x07, 0x09, 0x03, 0x01, 0x0A, 0x06, 0x02, 0x00 },
|
||||||
|
{ 0x0C, 0x05, 0x07, 0x0B, 0x0A, 0x09, 0x04, 0x06, 0x03, 0x01, 0x02, 0x00 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static BOOL (*comItemUseCheckFuncTbl[])(s32, s32) = {
|
||||||
|
CheckMiniUse,
|
||||||
|
CheckMegaUse,
|
||||||
|
CheckMiniUse,
|
||||||
|
CheckMegaUse,
|
||||||
|
CheckBoardChangeUse,
|
||||||
|
CheckBoardChangeUse,
|
||||||
|
CheckSwapUse,
|
||||||
|
CheckSparkUse,
|
||||||
|
NULL,
|
||||||
|
CheckBoardChangeUse,
|
||||||
|
NULL,
|
||||||
|
CheckBooUse,
|
||||||
|
CheckLampUse,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec comJunctionDirTbl[] = {
|
||||||
|
{ 0.0f, 0.0f, -72.0f },
|
||||||
|
{ 90.0f, 72.0f, 0.0f },
|
||||||
|
{ 180.0f, 0.0f, 72.0f },
|
||||||
|
{ 270.0f, -72.0f, 0.0f }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void ExecComKeyLeft(void) {
|
||||||
|
ExecComKey(GWSystem.player_curr, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardComKeySetLeft(void) {
|
||||||
|
BoardWinComKeyFuncSet(ExecComKeyLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecComKeyRight(void) {
|
||||||
|
ExecComKey(GWSystem.player_curr, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardComKeySetRight(void) {
|
||||||
|
BoardWinComKeyFuncSet(ExecComKeyRight);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecComKeyUp(void) {
|
||||||
|
ExecComKey(GWSystem.player_curr, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardComKeySetUp(void) {
|
||||||
|
BoardWinComKeyFuncSet(ExecComKeyUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecComKeyDown(void) {
|
||||||
|
ExecComKey(GWSystem.player_curr, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardComKeySetDown(void) {
|
||||||
|
BoardWinComKeyFuncSet(ExecComKeyDown);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecComKey(s32 arg0, s32 arg1, s32 arg2) {
|
||||||
|
s32 sp14[4];
|
||||||
|
s32 temp_r31;
|
||||||
|
s16 temp_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
|
||||||
|
sp14[0] = sp14[1] = sp14[2] = sp14[3] = 0;
|
||||||
|
temp_r31 = GWPlayer[arg0].port;
|
||||||
|
temp_r30 = GWMessDelayGet();
|
||||||
|
if (arg2 == 0) {
|
||||||
|
var_r29 = 4;
|
||||||
|
} else {
|
||||||
|
var_r29 = 2;
|
||||||
|
}
|
||||||
|
if (arg1 == 1) {
|
||||||
|
sp14[temp_r31] = var_r29;
|
||||||
|
HuWinComKeyWait(sp14[0], sp14[1], sp14[2], sp14[3], temp_r30);
|
||||||
|
}
|
||||||
|
sp14[temp_r31] = 0x100;
|
||||||
|
HuWinComKeyWait(sp14[0], sp14[1], sp14[2], sp14[3], temp_r30);
|
||||||
|
}
|
||||||
|
|
||||||
|
s8 BoardComPreferItemGet(s32 arg0, s8 *arg1, s8 arg2) {
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 temp_r29;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 i;
|
||||||
|
s32 j;
|
||||||
|
|
||||||
|
temp_r26 = GWPlayer[arg0].character;
|
||||||
|
var_r27 = -1;
|
||||||
|
var_r28 = 0x64;
|
||||||
|
for (i = 0; i < arg2; i++) {
|
||||||
|
temp_r29 = arg1[i];
|
||||||
|
for (j = 0; j < 0xC; j++) {
|
||||||
|
if (temp_r29 == comItemWeightTbl[temp_r26][j]) {
|
||||||
|
if (j < var_r28 && (BoardPlayerItemFind(arg0, temp_r29) == -1 || temp_r29 == 0xC || temp_r29 == 0xB)) {
|
||||||
|
var_r28 = j;
|
||||||
|
var_r27 = i;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r28 == 0x64) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return var_r27;
|
||||||
|
}
|
||||||
|
|
||||||
|
s8 BoardComPreferItemCheck(s32 arg0, s8 arg1, s8 arg2, s8 arg3) {
|
||||||
|
s8 spB[3];
|
||||||
|
s8 temp_r25;
|
||||||
|
|
||||||
|
spB[0] = arg1;
|
||||||
|
spB[1] = arg2;
|
||||||
|
spB[2] = arg3;
|
||||||
|
temp_r25 = BoardComPreferItemGet(arg0, spB, 3);
|
||||||
|
return temp_r25;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardComItemWeightGet(s32 arg0, s32 arg1) {
|
||||||
|
s32 var_r30;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 0xC; i++) {
|
||||||
|
if (arg1 == comItemWeightTbl[GWPlayer[arg0].character][i]) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r30 = 0xB - i;
|
||||||
|
return var_r30;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardComTutorialItemGet(s32 arg0) {
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r31;
|
||||||
|
|
||||||
|
if (!GWPlayer[arg0].com) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (itemUse != -1) {
|
||||||
|
var_r31 = itemUse;
|
||||||
|
}
|
||||||
|
if (boardTutorialUseItem >= 0 && boardTutorialUseItem <= 0xD) {
|
||||||
|
var_r31 = boardTutorialUseItem;
|
||||||
|
boardTutorialUseItem = -1;
|
||||||
|
}
|
||||||
|
if (var_r31 != -1) {
|
||||||
|
var_r30 = BoardPlayerItemFind(arg0, var_r31);
|
||||||
|
} else {
|
||||||
|
var_r30 = -1;
|
||||||
|
}
|
||||||
|
return var_r30;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardComUseItemSet(s32 arg0, s32 arg1) {
|
||||||
|
if (arg1 == -1) {
|
||||||
|
itemUse = -1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (BoardPlayerItemFind(arg0, arg1) != -1) {
|
||||||
|
itemUse = arg1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL BoardComUseItemCheck(s32 arg0) {
|
||||||
|
s32 var_r31;
|
||||||
|
|
||||||
|
var_r31 = BoardPlayerItemCount(arg0);
|
||||||
|
if (var_r31 <= 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (ChooseUseItem(arg0) != -1) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 ChooseUseItem(s32 arg0) {
|
||||||
|
s32 i;
|
||||||
|
s32 j;
|
||||||
|
s32 temp_r29;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 temp_r25;
|
||||||
|
BOOL (*temp_r24)(s32, s32);
|
||||||
|
s8 temp_r23;
|
||||||
|
|
||||||
|
temp_r29 = -1;
|
||||||
|
temp_r25 = GWPlayer[arg0].character;
|
||||||
|
var_r28 = 0x64;
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
temp_r27 = GWPlayer[arg0].items[i];
|
||||||
|
if (temp_r27 == -1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
temp_r24 = comItemUseCheckFuncTbl[temp_r27];
|
||||||
|
if (!temp_r24) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
temp_r23 = temp_r24(arg0, temp_r27);
|
||||||
|
if (temp_r23) {
|
||||||
|
for (j = 0; j < 0xC; j++) {
|
||||||
|
if (temp_r27 == comItemWeightTbl[temp_r25][j]) {
|
||||||
|
if (j < var_r28) {
|
||||||
|
var_r28 = j;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r28 == 0x64) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
temp_r29 = comItemWeightTbl[temp_r25][var_r28];
|
||||||
|
if (temp_r29 == -1) {
|
||||||
|
itemUse = -1;
|
||||||
|
} else if (BoardPlayerItemFind(arg0, temp_r29) != -1) {
|
||||||
|
itemUse = temp_r29;
|
||||||
|
}
|
||||||
|
return temp_r29;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckMiniUse(s32 arg0, s32 arg1) {
|
||||||
|
s32 temp_r29;
|
||||||
|
s32 var_r26;
|
||||||
|
s32 var_r25;
|
||||||
|
s32 temp_r28;
|
||||||
|
s32 temp_r23;
|
||||||
|
s32 var_r24;
|
||||||
|
s32 var_r31;
|
||||||
|
s32 var_r30;
|
||||||
|
|
||||||
|
var_r24 = 0;
|
||||||
|
temp_r29 = GWPlayer[arg0].space_curr;
|
||||||
|
temp_r28 = GWPlayer[arg0].diff;
|
||||||
|
temp_r23 = GWPlayer[arg0].character;
|
||||||
|
switch (temp_r28) {
|
||||||
|
case 0:
|
||||||
|
var_r30 = 0x32;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r30 = 0x19;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r30 = 5;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r30 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((temp_r28 == 0 || temp_r28 == 1) && temp_r23 == 1) {
|
||||||
|
var_r30 = 7;
|
||||||
|
}
|
||||||
|
if (GWBoardGet() != 7 && GWBoardGet() != 8) {
|
||||||
|
var_r26 = BoardComPathReachCheck(temp_r29, 8, 0);
|
||||||
|
var_r25 = BoardComPathReachCheck(temp_r29, 8, 1);
|
||||||
|
} else {
|
||||||
|
var_r26 = 0x3E7;
|
||||||
|
var_r25 = BoardComPathW20BestGet(temp_r29, 0x10000000, 0xA);
|
||||||
|
if ((GWBoardGet() == 8 || GWBoardGet() == 7) && BoardRandMod(0x64) < 0x3C) {
|
||||||
|
var_r24 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch (GWPlayer[arg0].diff) {
|
||||||
|
case 0:
|
||||||
|
var_r31 = 5;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r31 = 7;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r31 = 9;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r31 = 0xA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((var_r25 < var_r31 || var_r26 < var_r31 || var_r24 != 0) && BoardRandMod(0x64) >= var_r30) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckMegaUse(s32 arg0, s32 arg1) {
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 temp_r24;
|
||||||
|
s32 temp_r29;
|
||||||
|
s16 temp_r25;
|
||||||
|
s16 var_r28;
|
||||||
|
s16 temp_r23;
|
||||||
|
s16 temp_r22;
|
||||||
|
s16 i;
|
||||||
|
|
||||||
|
temp_r29 = GWPlayer[arg0].diff;
|
||||||
|
temp_r26 = GWPlayer[arg0].character;
|
||||||
|
switch (temp_r29) {
|
||||||
|
case 0:
|
||||||
|
var_r28 = 5;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r28 = 7;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r28 = 9;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r28 = 0xA;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (((temp_r29 == 0 || temp_r29 == 1) && temp_r26 == 0) || ((temp_r29 == 0 || temp_r29 == 1) && temp_r26 == 5)) {
|
||||||
|
var_r28 = 8;
|
||||||
|
}
|
||||||
|
if (GWBoardGet() != 7 || BoardRandMod(0x64) >= 0x3C) {
|
||||||
|
temp_r24 = GWPlayer[arg0].space_curr;
|
||||||
|
temp_r27 = BoardComPathReachCheck(temp_r24, 8, 0);
|
||||||
|
temp_r23 = GWPlayer[arg0].space_curr;
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
if (i != arg0) {
|
||||||
|
temp_r22 = GWPlayer[i].space_curr;
|
||||||
|
temp_r25 = BoardComPathLenGet(temp_r23, temp_r22);
|
||||||
|
if (temp_r25 < var_r28 + 0x14 && temp_r25 > 0 && GWTeamGet() && i == BoardPlayerSameTeamFind(arg0)) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (GWBoardGet() != 7 && GWBoardGet() != 8 && temp_r27 < 0xA && temp_r27 > 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (BoardPlayerItemFind(arg0, arg1) != -1) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckSparkUse(s32 arg0, s32 arg1) {
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 temp_r28;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 temp_r25;
|
||||||
|
s32 temp_r24;
|
||||||
|
s32 i;
|
||||||
|
s32 var_r30;
|
||||||
|
|
||||||
|
temp_r25 = GWPlayer[arg0].space_curr;
|
||||||
|
temp_r28 = GWPlayer[arg0].diff;
|
||||||
|
temp_r24 = GWPlayer[arg0].character;
|
||||||
|
switch (temp_r28) {
|
||||||
|
case 0:
|
||||||
|
var_r30 = 0x32;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r30 = 0x19;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r30 = 5;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r30 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((temp_r28 == 0 || temp_r28 == 1) && temp_r24 == 7) {
|
||||||
|
var_r30 = 7;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
if (i != arg0) {
|
||||||
|
temp_r26 = GWPlayer[i].space_curr;
|
||||||
|
temp_r27 = BoardComPathLenGet(temp_r26, temp_r25);
|
||||||
|
if (temp_r27 > 0 && temp_r27 <= 0xF && BoardPlayerItemFind(arg0, arg1) != -1 && BoardRandMod(0x64) >= var_r30) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckBoardChangeUse(s32 arg0, s32 arg1) {
|
||||||
|
s32 temp_r25;
|
||||||
|
s32 temp_r24;
|
||||||
|
s32 temp_r23;
|
||||||
|
s32 temp_r22;
|
||||||
|
s32 temp_r21;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
temp_r25 = GWPlayer[arg0].diff;
|
||||||
|
temp_r24 = GWPlayer[arg0].character;
|
||||||
|
switch (temp_r25) {
|
||||||
|
case 0:
|
||||||
|
var_r27 = 0x32;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r27 = 0x19;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r27 = 5;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r27 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (((arg1 == 4 && temp_r24 == 4) || (arg1 == 5 && (temp_r24 == 6 || temp_r24 == 3))) && (temp_r25 == 0 || temp_r25 == 1)) {
|
||||||
|
var_r27 = 7;
|
||||||
|
}
|
||||||
|
var_r30 = 0x3E7;
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
if (arg0 == i) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
temp_r21 = GWPlayer[i].space_curr;
|
||||||
|
if (!GWTeamGet() || i != BoardPlayerSameTeamFind(arg0)) {
|
||||||
|
temp_r26 = GWPlayer[i].space_curr;
|
||||||
|
if (GWBoardGet() == 7) {
|
||||||
|
if (BoardComPathW20BestGet(temp_r21, 0x10000000, 0xA) != -1) {
|
||||||
|
var_r29 = 0xA;
|
||||||
|
} else {
|
||||||
|
var_r29 = 0;
|
||||||
|
}
|
||||||
|
} else if (GWBoardGet() == 8) {
|
||||||
|
if (BoardComPathW20BestGet(temp_r21, 0x200000, 0xA) != -1 || BoardComPathW20BestGet(temp_r21, 0x400000, 0xA) != -1) {
|
||||||
|
var_r29 = 0xA;
|
||||||
|
} else {
|
||||||
|
var_r29 = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var_r29 = BoardComPathReachCheck(temp_r26, 8, 0);
|
||||||
|
}
|
||||||
|
if (var_r29 != 0 && var_r29 < var_r30) {
|
||||||
|
var_r30 = var_r29;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((var_r30 > 0xF && var_r30 != 0x3E7) || (GWTeamGet() && i == BoardPlayerSameTeamFind(arg0))) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
temp_r26 = GWPlayer[arg0].space_curr;
|
||||||
|
temp_r23 = BoardComPathReachCheck(temp_r26, 8, 0);
|
||||||
|
temp_r22 = BoardComPathReachCheck(temp_r26, 8, 1);
|
||||||
|
if (BoardPlayerItemFind(arg0, arg1) != -1 && BoardRandMod(0x64) >= var_r27) {
|
||||||
|
if ((temp_r23 == 0 || temp_r22 == 0) && var_r30 == 0x3E7) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (temp_r23 > var_r30 || temp_r22 > var_r30) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (temp_r23 > 0xA || temp_r22 > 0xA) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CheckSwapUse(s32 arg0, s32 arg1) {
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 temp_r25;
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
temp_r27 = GWPlayer[arg0].diff;
|
||||||
|
temp_r25 = GWPlayer[arg0].character;
|
||||||
|
switch (temp_r27) {
|
||||||
|
case 0:
|
||||||
|
var_r29 = 0x32;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r29 = 0x19;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r29 = 5;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r29 = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((temp_r27 == 0 || temp_r27 == 1) && temp_r25 == 2) {
|
||||||
|
var_r29 = 7;
|
||||||
|
}
|
||||||
|
for (var_r30 = i = 0; i < 4; i++) {
|
||||||
|
if (i != arg0) {
|
||||||
|
var_r30 += BoardPlayerItemCount(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r30 == 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (GWTeamGet()) {
|
||||||
|
temp_r26 = BoardPlayerSameTeamFind(arg0);
|
||||||
|
for (var_r30 = i = 0; i < 4; i++) {
|
||||||
|
if (temp_r26 != i && i != arg0) {
|
||||||
|
var_r30 += BoardPlayerItemCount(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r30 == 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (BoardPlayerItemFind(arg0, arg1) != -1 && BoardRandMod(0x64) >= var_r29) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckBooUse(s32 arg0, s32 arg1) {
|
||||||
|
if (BoardPlayerCoinsGet(arg0) < 5) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (BoardBooComUseCheck(arg0) == 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (BoardPlayerItemFind(arg0, arg1) == -1) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckLampUse(s32 arg0, s32 arg1) {
|
||||||
|
if ((BoardPlayerCoinsGet(arg0) >= 0x14 || GWSystem.last5_effect == 4) && BoardPlayerItemFind(arg0, arg1) != -1) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardComJunctionInputGet(s32 arg0, Vec *arg1, s32 arg2, float *arg3) {
|
||||||
|
Vec sp28;
|
||||||
|
Vec sp1C;
|
||||||
|
Vec sp10;
|
||||||
|
float var_f30;
|
||||||
|
float var_f29;
|
||||||
|
float var_f31;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 var_r24;
|
||||||
|
s32 var_r23;
|
||||||
|
s32 var_r21;
|
||||||
|
s32 i;
|
||||||
|
s16 var_r28;
|
||||||
|
s16 temp_r25;
|
||||||
|
s16 spC;
|
||||||
|
|
||||||
|
temp_r26 = GWBoardGet();
|
||||||
|
var_r24 = 0;
|
||||||
|
temp_r25 = GWPlayer[arg0].space_curr;
|
||||||
|
var_r28 = -1;
|
||||||
|
spC = GWPlayer[arg0].roll;
|
||||||
|
switch (GWPlayer[arg0].diff) {
|
||||||
|
case 3:
|
||||||
|
var_r29 = 0;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r29 = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_r29 = 0xA;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case 0:
|
||||||
|
var_r29 = 0x1E;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (BoardRandMod(0x64) >= var_r29) {
|
||||||
|
var_r23 = 1;
|
||||||
|
} else {
|
||||||
|
var_r23 = 0;
|
||||||
|
}
|
||||||
|
if (var_r23 != 0) {
|
||||||
|
if (temp_r26 >= 0 && temp_r26 <= 5) {
|
||||||
|
var_r28 = BoardComPathBestGet(temp_r25);
|
||||||
|
} else if (temp_r26 == 7) {
|
||||||
|
var_r28 = BoardComPathW20BestGet(temp_r25, 0x10000000, 0xA);
|
||||||
|
}
|
||||||
|
if (var_r28 == -1) {
|
||||||
|
var_r24 = 1;
|
||||||
|
} else {
|
||||||
|
BoardSpacePosGet(0, temp_r25, &sp1C);
|
||||||
|
BoardSpacePosGet(0, var_r28, &sp28);
|
||||||
|
PSVECSubtract(&sp28, &sp1C, &sp10);
|
||||||
|
var_f31 = BoardDAngleCalc(90.0 - 180.0 * (atan2(sp10.z, sp10.x) / M_PI));
|
||||||
|
if (var_f31 < 0.0f) {
|
||||||
|
var_f31 += 360.0f;
|
||||||
|
}
|
||||||
|
if (var_f31 > 360.0f) {
|
||||||
|
var_f31 -= 360.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r24 != 0) {
|
||||||
|
var_r21 = BoardRandMod(arg2);
|
||||||
|
var_f31 = arg3[var_r21];
|
||||||
|
}
|
||||||
|
var_f30 = 999.0f;
|
||||||
|
for (var_r27 = i = 0; i < 4; i++) {
|
||||||
|
var_f29 = (comJunctionDirTbl[i].x - var_f31 < 0.0f)
|
||||||
|
? -(comJunctionDirTbl[i].x - var_f31)
|
||||||
|
: (comJunctionDirTbl[i].x - var_f31);
|
||||||
|
if (var_f29 < var_f30) {
|
||||||
|
var_r27 = i;
|
||||||
|
var_f30 = var_f29;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arg1->x = comJunctionDirTbl[var_r27].y;
|
||||||
|
arg1->z = comJunctionDirTbl[var_r27].z;
|
||||||
|
arg1->y = 0.0f;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 BoardComBestPlayerFind(void) {
|
||||||
|
s32 temp_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
if (_CheckFlag(0x1000B) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
var_r28 = -1;
|
||||||
|
var_r29 = -1;
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
var_r27 = GWPlayer[i].space_curr;
|
||||||
|
temp_r30 = BoardComPathReachCheck(var_r27, 8, 0);
|
||||||
|
if (temp_r30 > 0 && temp_r30 > var_r29) {
|
||||||
|
var_r29 = temp_r30;
|
||||||
|
var_r28 = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return var_r28;
|
||||||
|
}
|
||||||
545
src/game/board/com_path.c
Executable file
545
src/game/board/com_path.c
Executable file
|
|
@ -0,0 +1,545 @@
|
||||||
|
#include "game/board/com_path.h"
|
||||||
|
#include "game/board/space.h"
|
||||||
|
|
||||||
|
#define NODE_INDEX(x) ((x) ? ((x) - pathNodeData) : -1)
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
/* 0x00 */ struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
u8 unk00_field1 : 1;
|
||||||
|
s8 unk00_field2 : 1;
|
||||||
|
s8 unk00_field3 : 1;
|
||||||
|
u8 unk00_field4 : 1;
|
||||||
|
u8 unk00_field5 : 1;
|
||||||
|
};
|
||||||
|
/* 0x01 */ s8 unk01;
|
||||||
|
/* 0x02 */ s8 unk02;
|
||||||
|
/* 0x03 */ s8 unk03;
|
||||||
|
/* 0x04 */ s16 unk04;
|
||||||
|
/* 0x06 */ s16 unk06[2]; // array size unknown
|
||||||
|
/* 0x0A */ char unk0A[0x3C];
|
||||||
|
/* 0x46 */ s16 unk46[5];
|
||||||
|
} PathNode; // Size 0x50
|
||||||
|
|
||||||
|
static PathNode *SearchPathNodeSpace(s16 arg0);
|
||||||
|
static s16 InitPathNode(PathNode *arg0);
|
||||||
|
static PathNode *FindChildNode(s16 arg0, PathNode *arg1);
|
||||||
|
static s32 GetNumValidLinks(BoardSpace *arg0, PathNode *arg1);
|
||||||
|
static void AddValidLinks(BoardSpace *arg0, PathNode *arg1);
|
||||||
|
static BOOL CheckPathSpace(BoardSpace *arg0);
|
||||||
|
static s16 FindValidLink(BoardSpace *arg0);
|
||||||
|
static BOOL CheckEndSpace(BoardSpace *arg0, PathNode *arg1);
|
||||||
|
static BOOL CheckPath(PathNode *arg0);
|
||||||
|
static BOOL CheckW20Path(PathNode *arg0, u32 arg1);
|
||||||
|
|
||||||
|
static PathNode pathNodeData[16];
|
||||||
|
static PathNode *candidateNodes[16];
|
||||||
|
static s16 startPathSpaceSearch[16];
|
||||||
|
static s16 startPathSpace[16];
|
||||||
|
|
||||||
|
static s16 numCandidates;
|
||||||
|
static s16 childNodeCnt;
|
||||||
|
|
||||||
|
static PathNode *SearchPathNodeSpace(s16 arg0) {
|
||||||
|
PathNode *var_r31;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (var_r31 = pathNodeData, i = 0; i < 16; i++, var_r31++) {
|
||||||
|
if (var_r31->unk04 == arg0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i == 16) {
|
||||||
|
var_r31 = NULL;
|
||||||
|
}
|
||||||
|
return var_r31;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s16 InitPathNode(PathNode *arg0) {
|
||||||
|
BoardSpace *temp_r30;
|
||||||
|
PathNode *var_r23;
|
||||||
|
s32 var_r29;
|
||||||
|
s16 i;
|
||||||
|
s16 var_r27;
|
||||||
|
s16 var_r26;
|
||||||
|
s16 var_r25;
|
||||||
|
s16 var_r24;
|
||||||
|
|
||||||
|
var_r24 = arg0->unk04;
|
||||||
|
var_r29 = 0;
|
||||||
|
arg0->unk02 = var_r25 = 0;
|
||||||
|
do {
|
||||||
|
var_r27 = var_r24;
|
||||||
|
temp_r30 = BoardSpaceGet(0, var_r27);
|
||||||
|
arg0->unk06[arg0->unk02] = var_r27;
|
||||||
|
var_r23 = FindChildNode(var_r27, arg0);
|
||||||
|
if (var_r23) {
|
||||||
|
AddValidLinks(temp_r30, arg0);
|
||||||
|
arg0->unk01 = 1;
|
||||||
|
arg0->unk46[0] = var_r27;
|
||||||
|
for (i = 1; i < 5; i++) {
|
||||||
|
arg0->unk46[i] = 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (temp_r30->link_cnt == 0) {
|
||||||
|
var_r26 = 0;
|
||||||
|
var_r29 = 1;
|
||||||
|
} else {
|
||||||
|
var_r26 = GetNumValidLinks(temp_r30, arg0);
|
||||||
|
if (var_r26 == 1) {
|
||||||
|
var_r24 = FindValidLink(temp_r30);
|
||||||
|
} else {
|
||||||
|
var_r29 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (CheckEndSpace(temp_r30, arg0)) {
|
||||||
|
var_r25++;
|
||||||
|
if (var_r25 >= arg0->unk03) {
|
||||||
|
var_r26 = 0;
|
||||||
|
var_r29 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arg0->unk02++;
|
||||||
|
} while (var_r29 == 0);
|
||||||
|
AddValidLinks(temp_r30, arg0);
|
||||||
|
arg0->unk01 = var_r26;
|
||||||
|
return arg0->unk03 - var_r25;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PathNode *FindChildNode(s16 arg0, PathNode *arg1) {
|
||||||
|
PathNode *temp_r31;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 i;
|
||||||
|
s32 j;
|
||||||
|
|
||||||
|
var_r28 = NODE_INDEX(arg1);
|
||||||
|
if (var_r28 == -1) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
for (i = 0; i < childNodeCnt; i++) {
|
||||||
|
temp_r31 = &pathNodeData[i];
|
||||||
|
if (temp_r31 != arg1) {
|
||||||
|
for (j = 0; j < temp_r31->unk02; j++) {
|
||||||
|
if (arg0 == temp_r31->unk06[j]) {
|
||||||
|
return temp_r31;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 GetNumValidLinks(BoardSpace *arg0, PathNode *arg1) {
|
||||||
|
BoardSpace *var_r28;
|
||||||
|
s16 i;
|
||||||
|
s16 var_r29;
|
||||||
|
|
||||||
|
for (var_r29 = i = 0; i < arg0->link_cnt; i++) {
|
||||||
|
var_r28 = BoardSpaceGet(0, arg0->link[i]);
|
||||||
|
if (!CheckPathSpace(var_r28)) {
|
||||||
|
var_r29++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r29 >= arg0->link_cnt) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return arg0->link_cnt - var_r29;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void AddValidLinks(BoardSpace *arg0, PathNode *arg1) {
|
||||||
|
BoardSpace *var_r27;
|
||||||
|
s16 var_r30;
|
||||||
|
s16 var_r31;
|
||||||
|
|
||||||
|
for (var_r31 = var_r30 = 0; var_r30 < arg0->link_cnt; var_r30++) {
|
||||||
|
var_r27 = BoardSpaceGet(0, arg0->link[var_r30]);
|
||||||
|
if (CheckPathSpace(var_r27)) {
|
||||||
|
arg1->unk46[var_r31] = arg0->link[var_r30];
|
||||||
|
var_r31++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; var_r31 < 5; var_r31++) {
|
||||||
|
arg1->unk46[var_r31] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckPathSpace(BoardSpace *arg0) {
|
||||||
|
if ((arg0->flag & 0x02000000) || (arg0->flag & 0x04000000)) {
|
||||||
|
return FALSE;
|
||||||
|
} else {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static s16 FindValidLink(BoardSpace *arg0) {
|
||||||
|
s16 var_r29;
|
||||||
|
s16 i;
|
||||||
|
BoardSpace *temp_r30;
|
||||||
|
|
||||||
|
for (var_r29 = i = 0; i < arg0->link_cnt; i++) {
|
||||||
|
var_r29 = arg0->link[i];
|
||||||
|
temp_r30 = BoardSpaceGet(0, var_r29);
|
||||||
|
if (CheckPathSpace(temp_r30)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return var_r29;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckEndSpace(BoardSpace *arg0, PathNode *arg1) {
|
||||||
|
if (arg0->flag & 0x80000000) {
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x4000000) {
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x2000000) {
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x180000) {
|
||||||
|
arg1->unk00_field3 = 1;
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x48000000) {
|
||||||
|
arg1->unk00_field4 = 1;
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x20000000) {
|
||||||
|
arg1->unk00_field2 = 1;
|
||||||
|
}
|
||||||
|
if (arg0->flag & 0x10000000) {
|
||||||
|
arg1->unk00_field5 = 1;
|
||||||
|
}
|
||||||
|
switch (arg0->type) {
|
||||||
|
case 8:
|
||||||
|
arg1->unk00_field1 = 1;
|
||||||
|
return FALSE;
|
||||||
|
case 10:
|
||||||
|
return FALSE;
|
||||||
|
case 0:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void ComPathInlineFunc02(PathNode *arg0) {
|
||||||
|
if (numCandidates < 16) {
|
||||||
|
candidateNodes[numCandidates] = arg0;
|
||||||
|
numCandidates++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline PathNode *ComPathInlineFunc03(void) {
|
||||||
|
PathNode *ret;
|
||||||
|
|
||||||
|
numCandidates--;
|
||||||
|
if (numCandidates < 0) {
|
||||||
|
return NULL;
|
||||||
|
} else {
|
||||||
|
ret = candidateNodes[numCandidates];
|
||||||
|
candidateNodes[numCandidates] = NULL;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline PathNode *ComPathInlineFunc04(s16 arg0, s16 arg1) {
|
||||||
|
PathNode *var_r26;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
var_r26 = pathNodeData;
|
||||||
|
for (i = 0; i < 16; i++, var_r26++) {
|
||||||
|
if (var_r26->unk00_field0 == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i == 16) {
|
||||||
|
return NULL;
|
||||||
|
} else {
|
||||||
|
var_r26->unk00_field0 = 1;
|
||||||
|
var_r26->unk04 = arg0;
|
||||||
|
var_r26->unk03 = arg1;
|
||||||
|
childNodeCnt++;
|
||||||
|
return var_r26;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void ComPathInlineFunc05(s16 arg0, s16 arg1) {
|
||||||
|
PathNode *var_r28;
|
||||||
|
s32 var_r24;
|
||||||
|
s32 temp_r17;
|
||||||
|
s32 i;
|
||||||
|
PathNode *var_r23;
|
||||||
|
|
||||||
|
memset(pathNodeData, 0, sizeof(pathNodeData));
|
||||||
|
memset(candidateNodes, 0, sizeof(candidateNodes));
|
||||||
|
numCandidates = 0;
|
||||||
|
childNodeCnt = 0;
|
||||||
|
var_r23 = ComPathInlineFunc04(arg0, arg1);
|
||||||
|
ComPathInlineFunc02(var_r23);
|
||||||
|
var_r24 = 1;
|
||||||
|
temp_r17 = arg1;
|
||||||
|
while (1) {
|
||||||
|
if (var_r24 <= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var_r28 = ComPathInlineFunc03();
|
||||||
|
if (!var_r28) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var_r24--;
|
||||||
|
temp_r17 = InitPathNode(var_r28);
|
||||||
|
if (temp_r17 != 0) {
|
||||||
|
if (var_r28->unk01 <= 1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (i = 0; i < var_r28->unk01; var_r24++, i++) {
|
||||||
|
var_r23 = ComPathInlineFunc04(var_r28->unk46[i], temp_r17);
|
||||||
|
if (!var_r23) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ComPathInlineFunc02(var_r23);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardComPathReachCheck(s16 arg0, u32 arg1, s32 arg2) {
|
||||||
|
s16 sp80[10];
|
||||||
|
s16 sp6C[10];
|
||||||
|
PathNode *sp68;
|
||||||
|
PathNode *var_r29;
|
||||||
|
s16 sp1C;
|
||||||
|
s16 sp1A;
|
||||||
|
s16 temp_r20;
|
||||||
|
s16 var_r22;
|
||||||
|
s16 var_r28;
|
||||||
|
s16 i;
|
||||||
|
s32 var_r19;
|
||||||
|
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
ComPathInlineFunc05(arg0, 0x1E);
|
||||||
|
memset(startPathSpaceSearch, 0, sizeof(startPathSpaceSearch));
|
||||||
|
memset(sp80, 0, sizeof(sp80));
|
||||||
|
memset(candidateNodes, 0, sizeof(candidateNodes));
|
||||||
|
numCandidates = 0;
|
||||||
|
var_r29 = SearchPathNodeSpace(arg0);
|
||||||
|
sp1A = NODE_INDEX(var_r29);
|
||||||
|
ComPathInlineFunc02(var_r29);
|
||||||
|
var_r28 = 0;
|
||||||
|
var_r22 = 0;
|
||||||
|
startPathSpaceSearch[sp1A] = var_r28;
|
||||||
|
var_r19 = 0;
|
||||||
|
while (1) {
|
||||||
|
var_r29 = ComPathInlineFunc03();
|
||||||
|
sp1C = NODE_INDEX(var_r29);
|
||||||
|
if (sp1C == -1) {
|
||||||
|
if (var_r22 != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var_r19 = 0;
|
||||||
|
var_r28 = startPathSpaceSearch[sp1C];
|
||||||
|
for (i = 0; i < var_r29->unk02; i++) {
|
||||||
|
if (arg2 == 0 && (BoardSpaceFlagGet(0, var_r29->unk06[i]) & 0x20000000)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (arg1 == BoardSpaceTypeGet(0, var_r29->unk06[i])) {
|
||||||
|
sp80[var_r22] = var_r28;
|
||||||
|
sp6C[var_r22] = sp1C;
|
||||||
|
if (++var_r22 < 0xA) {
|
||||||
|
var_r19 = 1;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
goto return_r28;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r28++ >= 0x1E) {
|
||||||
|
var_r19 = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r19 == 0) {
|
||||||
|
for (i = 0; i < var_r29->unk01; i++) {
|
||||||
|
sp68 = SearchPathNodeSpace(var_r29->unk46[i]);
|
||||||
|
temp_r20 = NODE_INDEX(sp68);
|
||||||
|
if (temp_r20 != -1 && temp_r20 >= 0 && temp_r20 < 16) {
|
||||||
|
startPathSpaceSearch[temp_r20] = var_r28;
|
||||||
|
ComPathInlineFunc02(sp68);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return_r28:
|
||||||
|
var_r28 = 10000;
|
||||||
|
for (i = 0; i < 10; i++) {
|
||||||
|
if (var_r28 > sp80[i] && sp80[i] != 0) {
|
||||||
|
var_r28 = sp80[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return var_r28;
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardComPathBestGet(s16 arg0) {
|
||||||
|
PathNode *sp30;
|
||||||
|
PathNode *sp2C;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
ComPathInlineFunc05(arg0, 0x1E);
|
||||||
|
sp2C = SearchPathNodeSpace(arg0);
|
||||||
|
if (sp2C->unk00_field1 != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (sp2C->unk01 <= 1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0; i < sp2C->unk01; i++) {
|
||||||
|
sp30 = SearchPathNodeSpace(sp2C->unk46[i]);
|
||||||
|
if (sp30 && CheckPath(sp30)) {
|
||||||
|
return sp2C->unk46[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardComPathLenGet(s16 arg0, s16 arg1) {
|
||||||
|
PathNode *var_r30;
|
||||||
|
s16 temp_r21;
|
||||||
|
s16 var_r25;
|
||||||
|
s16 sp16;
|
||||||
|
s16 sp14;
|
||||||
|
s16 sp12;
|
||||||
|
s16 i;
|
||||||
|
s32 sp5C;
|
||||||
|
PathNode *sp58;
|
||||||
|
|
||||||
|
ComPathInlineFunc05(arg0, 0x1E);
|
||||||
|
memset(startPathSpace, 0, sizeof(startPathSpace));
|
||||||
|
memset(candidateNodes, 0, sizeof(candidateNodes));
|
||||||
|
numCandidates = 0;
|
||||||
|
var_r30 = SearchPathNodeSpace(arg0);
|
||||||
|
sp12 = NODE_INDEX(var_r30);
|
||||||
|
ComPathInlineFunc02(var_r30);
|
||||||
|
var_r25 = 0;
|
||||||
|
sp16 = 0;
|
||||||
|
startPathSpace[sp12] = var_r25;
|
||||||
|
sp5C = 0;
|
||||||
|
while (1) {
|
||||||
|
var_r30 = ComPathInlineFunc03();
|
||||||
|
sp14 = NODE_INDEX(var_r30);
|
||||||
|
if (sp14 == -1) {
|
||||||
|
if (sp16 != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sp5C = 0;
|
||||||
|
var_r25 = startPathSpace[sp14];
|
||||||
|
for (i = 0; i < var_r30->unk02; i++) {
|
||||||
|
if (BoardSpaceFlagGet(0, var_r30->unk06[i]) & 0x20000000) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (var_r30->unk06[i] == arg1) {
|
||||||
|
goto return_r25;
|
||||||
|
}
|
||||||
|
if (var_r25++ >= 0x1E) {
|
||||||
|
sp5C = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sp5C == 0) {
|
||||||
|
for (i = 0; i < var_r30->unk01; i++) {
|
||||||
|
sp58 = SearchPathNodeSpace(var_r30->unk46[i]);
|
||||||
|
temp_r21 = NODE_INDEX(sp58);
|
||||||
|
if (temp_r21 != -1 && temp_r21 >= 0 && temp_r21 < 16) {
|
||||||
|
startPathSpace[temp_r21] = var_r25;
|
||||||
|
ComPathInlineFunc02(sp58);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return_r25:
|
||||||
|
return var_r25;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckPath(PathNode *arg0) {
|
||||||
|
s32 i;
|
||||||
|
PathNode *sp1C;
|
||||||
|
|
||||||
|
if (arg0->unk00_field1 != 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
if (arg0->unk01 <= 1) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
for (i = 0; i < arg0->unk01; i++) {
|
||||||
|
sp1C = SearchPathNodeSpace(arg0->unk46[i]);
|
||||||
|
if (sp1C && CheckPath(sp1C)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardComPathW20BestGet(s16 arg0, u32 arg1, s16 arg2) {
|
||||||
|
PathNode *var_r31;
|
||||||
|
PathNode *sp38;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
ComPathInlineFunc05(arg0, arg2);
|
||||||
|
var_r31 = SearchPathNodeSpace(arg0);
|
||||||
|
if (arg1 & 0x180000) {
|
||||||
|
if (var_r31->unk00_field1 != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else if (arg1 & 0x08000000) {
|
||||||
|
if (var_r31->unk00_field4 != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else if (arg1 & 0x10000000) {
|
||||||
|
if (var_r31->unk00_field5 != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (var_r31->unk01 <= 1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (i = 0; i < var_r31->unk01; i++) {
|
||||||
|
sp38 = SearchPathNodeSpace(var_r31->unk46[i]);
|
||||||
|
if (sp38 && CheckW20Path(sp38, arg1)) {
|
||||||
|
return var_r31->unk46[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static BOOL CheckW20Path(PathNode *arg0, u32 arg1) {
|
||||||
|
s32 i;
|
||||||
|
PathNode *sp1C;
|
||||||
|
|
||||||
|
if (arg1 & 0x180000) {
|
||||||
|
if (arg0->unk00_field1 != 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
} else if (arg1 & 0x08000000) {
|
||||||
|
if (arg0->unk00_field4 != 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
} else if (arg1 & 0x10000000) {
|
||||||
|
if (arg0->unk00_field5 != 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (arg0->unk01 <= 1) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
for (i = 0; i < arg0->unk01; i++) {
|
||||||
|
sp1C = SearchPathNodeSpace(arg0->unk46[i]);
|
||||||
|
if (sp1C && CheckW20Path(sp1C, arg1)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
1902
src/game/board/item.c
Executable file
1902
src/game/board/item.c
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -9,7 +9,10 @@
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/hsfdraw.h"
|
#include "game/hsfdraw.h"
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/pause.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
#include "game/pad.h"
|
#include "game/pad.h"
|
||||||
#include "game/msm.h"
|
#include "game/msm.h"
|
||||||
|
|
||||||
|
|
@ -27,8 +30,8 @@ static omObjData *confettiObj;
|
||||||
static omObjData *filterObj;
|
static omObjData *filterObj;
|
||||||
BoardTurnStartHook boardTurnStartFunc;
|
BoardTurnStartHook boardTurnStartFunc;
|
||||||
void *boardBowserHook;
|
void *boardBowserHook;
|
||||||
void *boardStarShowNextHook;
|
void (*boardStarShowNextHook)(void);
|
||||||
void *boardStarGiveHook;
|
void (*boardStarGiveHook)(void);
|
||||||
BoardFunc boardTurnFunc;
|
BoardFunc boardTurnFunc;
|
||||||
BoardLightHook boardLightResetHook;
|
BoardLightHook boardLightResetHook;
|
||||||
BoardLightHook boardLightSetHook;
|
BoardLightHook boardLightSetHook;
|
||||||
|
|
@ -61,8 +64,6 @@ extern s32 BoardSpacePosGet(s32 layer, s32 space, Vec *pos);
|
||||||
extern void BoardMGSetupPlayClear(void);
|
extern void BoardMGSetupPlayClear(void);
|
||||||
extern void BoardStartExec(void);
|
extern void BoardStartExec(void);
|
||||||
|
|
||||||
extern s8 boardTutorialF;
|
|
||||||
|
|
||||||
static void InitBoardFunc(omObjData *object);
|
static void InitBoardFunc(omObjData *object);
|
||||||
static void ExecBoardFunc(omObjData *object);
|
static void ExecBoardFunc(omObjData *object);
|
||||||
static void KillBoardFunc(omObjData *object);
|
static void KillBoardFunc(omObjData *object);
|
||||||
|
|
@ -210,7 +211,7 @@ static void KillBoardFunc(omObjData *object)
|
||||||
BoardTutorialWorkRestore();
|
BoardTutorialWorkRestore();
|
||||||
}
|
}
|
||||||
_ClearFlag(FLAG_ID_MAKE(1, 0));
|
_ClearFlag(FLAG_ID_MAKE(1, 0));
|
||||||
HuARDirFree(MAKE_DIR_NUM(DATADIR_BOARD));
|
HuARDirFree(DATADIR_BOARD);
|
||||||
if(_CheckFlag(FLAG_ID_MAKE(1, 27))) {
|
if(_CheckFlag(FLAG_ID_MAKE(1, 27))) {
|
||||||
omOvlReturnEx(2, 1);
|
omOvlReturnEx(2, 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -290,7 +291,7 @@ void BoardSaveInit(s32 board)
|
||||||
GWSystem.field31_bit4 = 0;
|
GWSystem.field31_bit4 = 0;
|
||||||
GWSystem.unk_32 = 1;
|
GWSystem.unk_32 = 1;
|
||||||
GWSystem.mg_next = 0;
|
GWSystem.mg_next = 0;
|
||||||
GWSystem.mg_next_extra = 0;
|
GWSystem.mg_next_type = 0;
|
||||||
GWSystem.unk_38 = 0;
|
GWSystem.unk_38 = 0;
|
||||||
GWSystem.block_pos = 0;
|
GWSystem.block_pos = 0;
|
||||||
memset(GWSystem.board_data, 0, 32);
|
memset(GWSystem.board_data, 0, 32);
|
||||||
|
|
@ -334,13 +335,13 @@ void BoardSaveInit(s32 board)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BoardStoryConfigSet(s32 mg_type, s32 diff_story)
|
void BoardStoryConfigSet(s32 mg_list, s32 diff_story)
|
||||||
{
|
{
|
||||||
GWSystem.party = 0;
|
GWSystem.party = 0;
|
||||||
GWSystem.team = 0;
|
GWSystem.team = 0;
|
||||||
GWSystem.diff_story = diff_story;
|
GWSystem.diff_story = diff_story;
|
||||||
GWSystem.bonus_star = 0;
|
GWSystem.bonus_star = 0;
|
||||||
GWSystem.mg_type = mg_type;
|
GWSystem.mg_list = mg_list;
|
||||||
GWPlayer[0].handicap = 0;
|
GWPlayer[0].handicap = 0;
|
||||||
GWPlayer[1].handicap = 0;
|
GWPlayer[1].handicap = 0;
|
||||||
GWPlayer[2].handicap = 0;
|
GWPlayer[2].handicap = 0;
|
||||||
|
|
@ -358,13 +359,13 @@ void BoardStoryConfigSet(s32 mg_type, s32 diff_story)
|
||||||
_SetFlag(FLAG_ID_MAKE(1, 10));
|
_SetFlag(FLAG_ID_MAKE(1, 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
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_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap)
|
||||||
{
|
{
|
||||||
GWSystem.party = 1;
|
GWSystem.party = 1;
|
||||||
GWSystem.team = team;
|
GWSystem.team = team;
|
||||||
GWSystem.diff_story = 0;
|
GWSystem.diff_story = 0;
|
||||||
GWSystem.bonus_star = bonus_star;
|
GWSystem.bonus_star = bonus_star;
|
||||||
GWSystem.mg_type = mg_type;
|
GWSystem.mg_list = mg_list;
|
||||||
GWSystem.max_turn = max_turn;
|
GWSystem.max_turn = max_turn;
|
||||||
memset(GWPlayer, 0, 4*sizeof(PlayerState));
|
memset(GWPlayer, 0, 4*sizeof(PlayerState));
|
||||||
GWPlayer[0].handicap = p1_handicap;
|
GWPlayer[0].handicap = p1_handicap;
|
||||||
|
|
@ -617,11 +618,11 @@ static void CreateBoard(void)
|
||||||
GWSystem.mg_next = -1;
|
GWSystem.mg_next = -1;
|
||||||
if(!GWGameStat.field10E_bit5) {
|
if(!GWGameStat.field10E_bit5) {
|
||||||
s32 type_temp;
|
s32 type_temp;
|
||||||
if(GWSystem.mg_type == 3) {
|
if(GWSystem.mg_list == 3) {
|
||||||
GWSystem.mg_type = 0;
|
GWSystem.mg_list = 0;
|
||||||
}
|
}
|
||||||
if(GWMGTypeGet() == 2) {
|
if(GWMGListGet() == 2) {
|
||||||
GWSystem.mg_type = 0;
|
GWSystem.mg_list = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(GWSystem.mess_speed == 3) {
|
if(GWSystem.mess_speed == 3) {
|
||||||
|
|
@ -668,7 +669,7 @@ static void CreateBoard(void)
|
||||||
if(!reset_unk32) {
|
if(!reset_unk32) {
|
||||||
GWSystem.unk_32 = 1;
|
GWSystem.unk_32 = 1;
|
||||||
}
|
}
|
||||||
guest_status = BoardDataDirReadAsync(MAKE_DIR_NUM(DATADIR_BGUEST));
|
guest_status = BoardDataDirReadAsync(DATADIR_BGUEST);
|
||||||
if(guest_status != -1) {
|
if(guest_status != -1) {
|
||||||
BoardDataAsyncWait(guest_status);
|
BoardDataAsyncWait(guest_status);
|
||||||
}
|
}
|
||||||
|
|
@ -698,29 +699,29 @@ static void CreateBoard(void)
|
||||||
BoardCameraMotionWait();
|
BoardCameraMotionWait();
|
||||||
BoardTauntInit();
|
BoardTauntInit();
|
||||||
_SetFlag(FLAG_ID_MAKE(1, 14));
|
_SetFlag(FLAG_ID_MAKE(1, 14));
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKOOPASUIT));
|
HuDataDirClose(DATADIR_BKOOPASUIT);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BBATTLE));
|
HuDataDirClose(DATADIR_BBATTLE);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKOOPA));
|
HuDataDirClose(DATADIR_BKOOPA);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKUJIYA));
|
HuDataDirClose(DATADIR_BKUJIYA);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BYOKODORI));
|
HuDataDirClose(DATADIR_BYOKODORI);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BPAUSE));
|
HuDataDirClose(DATADIR_BPAUSE);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BLAST5));
|
HuDataDirClose(DATADIR_BLAST5);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_EFFECT));
|
HuDataDirClose(DATADIR_EFFECT);
|
||||||
_SetFlag(FLAG_ID_MAKE(1, 16));
|
_SetFlag(FLAG_ID_MAKE(1, 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DestroyBoard(void)
|
static void DestroyBoard(void)
|
||||||
{
|
{
|
||||||
s32 dir_table[] = {
|
s32 dir_table[] = {
|
||||||
MAKE_DIR_NUM(DATADIR_W01),
|
DATADIR_W01,
|
||||||
MAKE_DIR_NUM(DATADIR_W02),
|
DATADIR_W02,
|
||||||
MAKE_DIR_NUM(DATADIR_W03),
|
DATADIR_W03,
|
||||||
MAKE_DIR_NUM(DATADIR_W04),
|
DATADIR_W04,
|
||||||
MAKE_DIR_NUM(DATADIR_W05),
|
DATADIR_W05,
|
||||||
MAKE_DIR_NUM(DATADIR_W06),
|
DATADIR_W06,
|
||||||
MAKE_DIR_NUM(DATADIR_W10),
|
DATADIR_W10,
|
||||||
MAKE_DIR_NUM(DATADIR_W20),
|
DATADIR_W20,
|
||||||
MAKE_DIR_NUM(DATADIR_W21),
|
DATADIR_W21
|
||||||
};
|
};
|
||||||
BoardTauntKill();
|
BoardTauntKill();
|
||||||
BoardAudSeqFadeOutAll();
|
BoardAudSeqFadeOutAll();
|
||||||
|
|
@ -738,14 +739,14 @@ static void DestroyBoard(void)
|
||||||
BoardModelKillAll();
|
BoardModelKillAll();
|
||||||
BoardWinKillAll();
|
BoardWinKillAll();
|
||||||
HuDataDirClose(dir_table[BoardCurrGet()]);
|
HuDataDirClose(dir_table[BoardCurrGet()]);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_EFFECT));
|
HuDataDirClose(DATADIR_EFFECT);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BGUEST));
|
HuDataDirClose(DATADIR_BGUEST);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKOOPASUIT));
|
HuDataDirClose(DATADIR_BKOOPASUIT);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BBATTLE));
|
HuDataDirClose(DATADIR_BBATTLE);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKOOPA));
|
HuDataDirClose(DATADIR_BKOOPA);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BKUJIYA));
|
HuDataDirClose(DATADIR_BKUJIYA);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BYOKODORI));
|
HuDataDirClose(DATADIR_BYOKODORI);
|
||||||
HuDataDirClose(MAKE_DIR_NUM(DATADIR_BOARD));
|
HuDataDirClose(DATADIR_BOARD);
|
||||||
createFunc = destroyFunc = NULL;
|
createFunc = destroyFunc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1760,7 +1761,7 @@ void BoardConfettiCreate(Vec *pos, s16 count, float range)
|
||||||
object->trans.y = pos->y;
|
object->trans.y = pos->y;
|
||||||
object->trans.z = pos->z;
|
object->trans.z = pos->z;
|
||||||
object->rot.x = range;
|
object->rot.x = range;
|
||||||
work->gfx_mdl = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 7), NULL, 0);
|
work->gfx_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 7), NULL, 0);
|
||||||
BoardModelLayerSet(work->gfx_mdl, 2);
|
BoardModelLayerSet(work->gfx_mdl, 2);
|
||||||
BoardModelVisibilitySet(work->gfx_mdl, 0);
|
BoardModelVisibilitySet(work->gfx_mdl, 0);
|
||||||
{
|
{
|
||||||
|
|
@ -1962,9 +1963,9 @@ typedef struct last5_gfx_work {
|
||||||
} Last5GfxWork;
|
} Last5GfxWork;
|
||||||
|
|
||||||
static s32 last5GfxSprTbl[3] = {
|
static s32 last5GfxSprTbl[3] = {
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 95),
|
DATA_MAKE_NUM(DATADIR_BOARD, 95),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 97),
|
DATA_MAKE_NUM(DATADIR_BOARD, 97),
|
||||||
MAKE_DATA_NUM(DATADIR_BOARD, 96),
|
DATA_MAKE_NUM(DATADIR_BOARD, 96),
|
||||||
};
|
};
|
||||||
|
|
||||||
static float last5GfxPosTbl[2][3][2] = {
|
static float last5GfxPosTbl[2][3][2] = {
|
||||||
|
|
@ -2019,11 +2020,11 @@ void BoardLast5GfxInit(void)
|
||||||
}
|
}
|
||||||
spr_file = last5GfxSprTbl[i];
|
spr_file = last5GfxSprTbl[i];
|
||||||
if(i == 2 && work->is_last && GWLanguageGet() != 0) {
|
if(i == 2 && work->is_last && GWLanguageGet() != 0) {
|
||||||
spr_file = MAKE_DATA_NUM(DATADIR_BOARD, 98);
|
spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98);
|
||||||
}
|
}
|
||||||
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
|
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
|
||||||
HuSprGrpMemberSet(work->group, i, work->sprites[i]);
|
HuSprGrpMemberSet(work->group, i, work->sprites[i]);
|
||||||
HuSprAttrSet(work->group, i, SPIRTE_ATTR_BILINEAR);
|
HuSprAttrSet(work->group, i, SPRITE_ATTR_BILINEAR);
|
||||||
HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]);
|
HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]);
|
||||||
}
|
}
|
||||||
if(!work->is_last) {
|
if(!work->is_last) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
#include "game/board/model.h"
|
#include "game/board/model.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/hsfmotion.h"
|
#include "game/hsfmotion.h"
|
||||||
#include "game/memory.h"
|
#include "game/memory.h"
|
||||||
|
|
@ -381,8 +382,8 @@ s32 BoardModelMotionCreate(s16 model, s32 data_num)
|
||||||
}
|
}
|
||||||
model = Hu3DJointMotion(model_ptr->id, model_ptr->mot_data[i]);
|
model = Hu3DJointMotion(model_ptr->id, model_ptr->mot_data[i]);
|
||||||
} else {
|
} else {
|
||||||
model = CharMotionCreate(model_ptr->character, data_num);
|
model = CharModelMotionCreate(model_ptr->character, data_num);
|
||||||
CharMotionDataClose(model_ptr->character);
|
CharModelMotionDataClose(model_ptr->character);
|
||||||
}
|
}
|
||||||
model_ptr->mot_id[i] = model;
|
model_ptr->mot_id[i] = model;
|
||||||
model_ptr->mot_count++;
|
model_ptr->mot_count++;
|
||||||
|
|
@ -406,7 +407,7 @@ s32 BoardModelMotionKill(s16 model, s32 motion)
|
||||||
if(model_ptr->character == -1) {
|
if(model_ptr->character == -1) {
|
||||||
Hu3DMotionKill(model_ptr->mot_id[motion]);
|
Hu3DMotionKill(model_ptr->mot_id[motion]);
|
||||||
} else {
|
} else {
|
||||||
CharMotionKill(model_ptr->character, model_ptr->mot_id[motion]);
|
CharModelMotionKill(model_ptr->character, model_ptr->mot_id[motion]);
|
||||||
}
|
}
|
||||||
model_ptr->mot_id[motion] = -1;
|
model_ptr->mot_id[motion] = -1;
|
||||||
}
|
}
|
||||||
|
|
@ -1170,7 +1171,7 @@ static s32 CreateBoardModelMotion(BoardModel *model, s32 count, s32 *data_num)
|
||||||
}
|
}
|
||||||
index = Hu3DJointMotion(model->id, data);
|
index = Hu3DJointMotion(model->id, data);
|
||||||
} else {
|
} else {
|
||||||
index = CharMotionCreate(model->character, data_num[i]);
|
index = CharModelMotionCreate(model->character, data_num[i]);
|
||||||
}
|
}
|
||||||
if(index < 0) {
|
if(index < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
1556
src/game/board/pause.c
Executable file
1556
src/game/board/pause.c
Executable file
File diff suppressed because it is too large
Load diff
|
|
@ -1,13 +1,13 @@
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
#include "game/board/com.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/roll.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
#include "game/board/view.h"
|
||||||
|
|
||||||
//// #include "game/objsub.h"
|
|
||||||
extern void omVibrate(s16, s16, s16, s16);
|
|
||||||
//// #include "game/board/ui.h"
|
|
||||||
extern void BoardStatusHammerShowSet(s32, s32);
|
|
||||||
extern void BoardYourTurnExec(s32);
|
|
||||||
extern s32 BoardItemUseExec(s32);
|
|
||||||
//// #include "game/board/main.h"
|
|
||||||
extern f32 BoardDAngleCalc(f32);
|
|
||||||
//// #include "game/board/model.h"
|
//// #include "game/board/model.h"
|
||||||
extern s16 BoardModelCreateCharacter(s32, s32, s32*, s32);
|
extern s16 BoardModelCreateCharacter(s32, s32, s32*, s32);
|
||||||
extern void BoardModelExistCheck(s16, s32);
|
extern void BoardModelExistCheck(s16, s32);
|
||||||
|
|
@ -15,53 +15,27 @@ extern void BoardModelExistDupe(s16, s32);
|
||||||
extern void BoardModelCameraSet(s16, u16);
|
extern void BoardModelCameraSet(s16, u16);
|
||||||
extern void BoardItemStatusKill(s32);
|
extern void BoardItemStatusKill(s32);
|
||||||
extern void BoardModelAmbSet(s16, f32, f32, f32);
|
extern void BoardModelAmbSet(s16, f32, f32, f32);
|
||||||
extern void BoardModelPosSetV(s16, Vec*);
|
|
||||||
extern void BoardModelPosSet(s16, f32, f32, f32);
|
|
||||||
extern s32 BoardModelPosGet(s16, Vec*);
|
extern s32 BoardModelPosGet(s16, Vec*);
|
||||||
extern void BoardModelRotSetV(s16, Vec*);
|
|
||||||
extern void BoardModelRotSet(s16, f32, f32, f32);
|
|
||||||
extern s32 BoardModelRotGet(s16, Vec*);
|
extern s32 BoardModelRotGet(s16, Vec*);
|
||||||
extern void BoardModelRotYSet(s16, f32);
|
|
||||||
extern f32 BoardModelRotYGet(s16);
|
extern f32 BoardModelRotYGet(s16);
|
||||||
extern void BoardModelScaleSetV(s16, Vec*);
|
|
||||||
extern void BoardModelScaleSet(s16, f32, f32, f32);
|
|
||||||
extern void BoardModelScaleGet(s16, s32*);
|
extern void BoardModelScaleGet(s16, s32*);
|
||||||
extern void BoardModelVoiceEnableSet(s16, s32, s32);
|
extern void BoardModelVoiceEnableSet(s16, s32, s32);
|
||||||
extern s32 BoardModelMotionCreate(s16, s32);
|
extern s32 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 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
|
extern s32 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
|
||||||
extern void BoardModelMotionSpeedSet(s16, f32);
|
|
||||||
extern void BoardModelMotionTimeSet(s16, f32);
|
extern void BoardModelMotionTimeSet(s16, f32);
|
||||||
extern f32 BoardModelMotionTimeGet(s16);
|
extern f32 BoardModelMotionTimeGet(s16);
|
||||||
extern f32 BoardModelMotionMaxTimeGet(s16);
|
extern f32 BoardModelMotionMaxTimeGet(s16);
|
||||||
extern void BoardModelMotionTimeRangeSet(s16, s32, s32);
|
extern void BoardModelMotionTimeRangeSet(s16, s32, s32);
|
||||||
extern void BoardModelAttrSet(s16, s32);
|
extern void BoardModelAttrSet(s16, s32);
|
||||||
extern void BoardModelAttrReset(s16, s32);
|
extern void BoardModelAttrReset(s16, s32);
|
||||||
//// #include "game/board/tutorial.h"
|
|
||||||
extern BoardTutorialHookExec(s16, s32);
|
|
||||||
//// #include "game/board/com.h"
|
|
||||||
extern void BoardComUseItemSet(s32, s32);
|
|
||||||
//// #include "game/board/overhead.h"
|
//// #include "game/board/overhead.h"
|
||||||
extern void BoardViewOverheadExec(s32);
|
|
||||||
extern void BoardViewMapExec(s32);
|
|
||||||
//// #include "game/board/roll.h"
|
|
||||||
extern s32 BoardRollExec(s32);
|
|
||||||
extern void BoardRollKill(void);
|
|
||||||
//// #include "game/chrman.h"
|
|
||||||
extern void CharModelDataClose(s16);
|
|
||||||
extern void CharModelStepTypeSet(s16, s32);
|
|
||||||
//// #include "game/board/pad.h"
|
//// #include "game/board/pad.h"
|
||||||
extern s8 HuPadStkX[4];
|
extern s8 HuPadStkX[4];
|
||||||
extern s8 HuPadStkY[4];
|
extern s8 HuPadStkY[4];
|
||||||
extern u16 HuPadBtnDown[4];
|
extern u16 HuPadBtnDown[4];
|
||||||
extern u8 HuPadDStk[4];
|
extern u8 HuPadDStk[4];
|
||||||
extern s16 boardTutorialDirInputTime;
|
|
||||||
extern s8 boardTutorialDirInputX;
|
|
||||||
extern s8 boardTutorialDirInputY;
|
|
||||||
//// #include "game/board/view.h"
|
|
||||||
void BoardViewMapExec(s32);
|
|
||||||
////
|
////
|
||||||
|
|
||||||
typedef struct bitcopy {
|
typedef struct bitcopy {
|
||||||
|
|
|
||||||
935
src/game/board/roll.c
Executable file
935
src/game/board/roll.c
Executable file
|
|
@ -0,0 +1,935 @@
|
||||||
|
#include "game/board/roll.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/hsfanim.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
#include "game/process.h"
|
||||||
|
#include "game/window.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
#include "game/board/pause.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
u8 unk00_field1 : 1;
|
||||||
|
u8 unk00_field2 : 3;
|
||||||
|
u8 unk00_field3 : 2;
|
||||||
|
};
|
||||||
|
s8 unk01;
|
||||||
|
s8 unk02;
|
||||||
|
char unk03[1];
|
||||||
|
s16 unk04;
|
||||||
|
s16 unk06;
|
||||||
|
} DiceWork;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
u8 unk00_field1 : 1;
|
||||||
|
u8 unk00_field2 : 1;
|
||||||
|
u8 unk00_field3 : 2;
|
||||||
|
};
|
||||||
|
s8 unk01;
|
||||||
|
s16 unk02;
|
||||||
|
s16 unk04[2];
|
||||||
|
float unk08;
|
||||||
|
} DiceDigitWork;
|
||||||
|
|
||||||
|
s32 BoardRollResizeCheck(void);
|
||||||
|
|
||||||
|
static void RollMain(void);
|
||||||
|
static void DiceCreate(s32 arg0);
|
||||||
|
static void DoInput(s32 arg0);
|
||||||
|
static void DiceWaitFull(s32 arg0);
|
||||||
|
static void DiceSetHit(s32 arg0);
|
||||||
|
static void RollDestroy(void);
|
||||||
|
static void DiceMain(omObjData *arg0);
|
||||||
|
static void DicePause(s32 arg0);
|
||||||
|
static void DicePauseAll(void);
|
||||||
|
static void DiceHideEffect(s32 arg0, s32 arg1);
|
||||||
|
static void DiceDigitMain(omObjData *arg0);
|
||||||
|
static void DiceDigitKill(DiceDigitWork *arg0);
|
||||||
|
static void DiceKill(void);
|
||||||
|
static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1);
|
||||||
|
static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1);
|
||||||
|
static void SameRollExec(void);
|
||||||
|
static s32 GetBtnRoll(s32 arg0);
|
||||||
|
static s32 GetComBtnRoll(s32 arg0);
|
||||||
|
|
||||||
|
static s32 tutorialRoll[3];
|
||||||
|
|
||||||
|
static s8 diceValue[3];
|
||||||
|
static s8 rollPlayer;
|
||||||
|
static s8 numDice;
|
||||||
|
static s8 inputTimer;
|
||||||
|
static s8 maxRoll;
|
||||||
|
static s8 destMode;
|
||||||
|
static s8 diceSize;
|
||||||
|
s32 lbl_801D4098;
|
||||||
|
static char sameRollCoinStr[8];
|
||||||
|
static s8 tutorialRollF;
|
||||||
|
static Process *rollProc;
|
||||||
|
|
||||||
|
static s16 diceMdl[3] = { -1, -1, -1 };
|
||||||
|
static s16 diceEff[3] = { -1, -1, -1 };
|
||||||
|
static s16 rollWin = -1;
|
||||||
|
|
||||||
|
static omObjData *diceObj[3] = { NULL, NULL, NULL };
|
||||||
|
static omObjData *diceDigitObj[3] = { NULL, NULL, NULL };
|
||||||
|
static s32 diceSndStatus[3] = { -1, -1, -1 };
|
||||||
|
|
||||||
|
static HsfanimStruct00 diceEffParam = {
|
||||||
|
0x0096,
|
||||||
|
{ 0x00, 0x00 }, // padding?
|
||||||
|
50.0f,
|
||||||
|
0.0f,
|
||||||
|
65.0f,
|
||||||
|
{ 0.0f, -0.195f, 0.0f },
|
||||||
|
100.0f,
|
||||||
|
0.99f,
|
||||||
|
40.0f,
|
||||||
|
0.999f,
|
||||||
|
0x0004,
|
||||||
|
{
|
||||||
|
{ 0xFF, 0xFF, 0x20, 0xFF },
|
||||||
|
{ 0xFF, 0xFF, 0x00, 0xFF },
|
||||||
|
{ 0xFF, 0xFF, 0x80, 0xFF },
|
||||||
|
{ 0xFF, 0xFF, 0xFF, 0xFF }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ 0xFF, 0xFF, 0xFF, 0x00 },
|
||||||
|
{ 0xFF, 0xFF, 0xFF, 0x00 },
|
||||||
|
{ 0xFF, 0xFF, 0xFF, 0x00 },
|
||||||
|
{ 0xFF, 0xFF, 0xFF, 0x00 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static s32 diceDigitMdlTbl[10] = {
|
||||||
|
0x0007000C,
|
||||||
|
0x0007000D,
|
||||||
|
0x0007000E,
|
||||||
|
0x0007000F,
|
||||||
|
0x00070010,
|
||||||
|
0x00070011,
|
||||||
|
0x00070012,
|
||||||
|
0x00070013,
|
||||||
|
0x00070014,
|
||||||
|
0x00070015
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 BoardRollExec(s32 arg0) {
|
||||||
|
rollPlayer = arg0;
|
||||||
|
inputTimer = 0;
|
||||||
|
numDice = 1;
|
||||||
|
diceSize = 0;
|
||||||
|
maxRoll = 0xA;
|
||||||
|
switch (BoardRollTypeGet()) {
|
||||||
|
case 0:
|
||||||
|
numDice = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
numDice = 2;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
numDice = 2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
numDice = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (BoardPlayerSizeGet(arg0) == 1) {
|
||||||
|
diceSize = 1;
|
||||||
|
maxRoll = 5;
|
||||||
|
} else if (BoardPlayerSizeGet(arg0) == 2) {
|
||||||
|
diceSize = 2;
|
||||||
|
maxRoll = 10;
|
||||||
|
if (BoardRollResizeCheck() != 0) {
|
||||||
|
numDice = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (GWPlayer[rollPlayer].bowser_suit != 0) {
|
||||||
|
diceSize = 3;
|
||||||
|
}
|
||||||
|
GWPlayer[arg0].field08_bit7 = numDice;
|
||||||
|
rollProc = HuPrcChildCreate(RollMain, 0x2005, 0x6000, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(rollProc, RollDestroy);
|
||||||
|
while (rollProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
while (diceObj[0] || diceObj[1] || diceObj[2]) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
return destMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardRollKill(void) {
|
||||||
|
if (rollProc) {
|
||||||
|
HuPrcKill(rollProc);
|
||||||
|
}
|
||||||
|
DicePauseAll();
|
||||||
|
DiceKill();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardRollUPauseSet(s32 arg0) {
|
||||||
|
if (!rollProc) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BoardRollWinDispSet(arg0);
|
||||||
|
BoardDiceVisibleSet(0, arg0);
|
||||||
|
BoardDiceVisibleSet(1, arg0);
|
||||||
|
BoardDiceVisibleSet(2, arg0);
|
||||||
|
DiceHideEffect(0, arg0);
|
||||||
|
DiceHideEffect(1, arg0);
|
||||||
|
DiceHideEffect(2, arg0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardRollWinDispSet(s32 arg0) {
|
||||||
|
if (rollWin == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (arg0 != 0) {
|
||||||
|
HuWinDispOn(rollWin);
|
||||||
|
} else {
|
||||||
|
HuWinDispOff(rollWin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RollMain(void) {
|
||||||
|
float sp8[2];
|
||||||
|
float var_f31;
|
||||||
|
float var_f30;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 temp_r26;
|
||||||
|
s32 temp_r25;
|
||||||
|
s32 var_r30;
|
||||||
|
s32 var_r29;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
diceValue[0] = diceValue[1] = diceValue[2] = 0;
|
||||||
|
if (BoardPlayerSizeGet(rollPlayer) == 2 || GWPlayer[rollPlayer].bowser_suit != 0) {
|
||||||
|
BoardCameraViewSet(2);
|
||||||
|
}
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
BoardCameraTargetModelSet(-1);
|
||||||
|
for (i = 0; i < numDice; i++) {
|
||||||
|
temp_r26 = rollPlayer;
|
||||||
|
if (!_CheckFlag(0x1000B)) {
|
||||||
|
var_r27 = BoardPlayerItemCount(temp_r26);
|
||||||
|
if (GWTeamGet()) {
|
||||||
|
temp_r25 = BoardPlayerSameTeamFind(temp_r26);
|
||||||
|
var_r27 += BoardPlayerItemCount(temp_r25);
|
||||||
|
}
|
||||||
|
if (BoardRollTypeGet() != -1 || var_r27 == 0 || _CheckFlag(0x10009) || BoardRollResizeCheck()) {
|
||||||
|
var_r29 = 0x90004;
|
||||||
|
} else {
|
||||||
|
var_r29 = 0x90002;
|
||||||
|
}
|
||||||
|
if (inputTimer != 0) {
|
||||||
|
var_r29 = 0x300025;
|
||||||
|
}
|
||||||
|
HuWinMesMaxSizeGet(1, sp8, var_r29);
|
||||||
|
switch (GWGameStat.language) {
|
||||||
|
case 0:
|
||||||
|
var_f31 = -10000.0f;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
var_f31 = 288.0f - (sp8[0] / 2 - 16.0f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var_f30 = 304.0f;
|
||||||
|
rollWin = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0);
|
||||||
|
HuWinBGTPLvlSet(rollWin, 0.0f);
|
||||||
|
HuWinMesSpeedSet(rollWin, 0);
|
||||||
|
HuWinMesSet(rollWin, var_r29);
|
||||||
|
}
|
||||||
|
DiceCreate(i);
|
||||||
|
DiceWaitFull(i);
|
||||||
|
DoInput(i);
|
||||||
|
if (rollWin != -1) {
|
||||||
|
HuWinKill(rollWin);
|
||||||
|
rollWin = -1;
|
||||||
|
}
|
||||||
|
if (destMode == -2 || destMode == -1 || destMode == -3 || destMode == -4) {
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
BoardPlayerDiceJumpStart(rollPlayer);
|
||||||
|
while (!BoardPlayerDiceJumpCheck(rollPlayer)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
DiceSetHit(i);
|
||||||
|
while (GWPlayer[rollPlayer].field08_bit3 != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var_r30 = i = 0; i < numDice; i++) {
|
||||||
|
var_r30 += diceValue[i];
|
||||||
|
}
|
||||||
|
var_r28 = 0;
|
||||||
|
switch (numDice) {
|
||||||
|
case 2:
|
||||||
|
if (diceValue[0] == diceValue[1]) {
|
||||||
|
var_r28 = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (diceValue[0] == diceValue[1] && diceValue[0] == diceValue[2]) {
|
||||||
|
var_r28 = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (var_r28 != 0) {
|
||||||
|
SameRollExec();
|
||||||
|
}
|
||||||
|
BoardDicePauseAll();
|
||||||
|
while (!BoardDiceDoneCheck()) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
for (i = 0; i < numDice; i++) {
|
||||||
|
BoardDiceStop(i);
|
||||||
|
}
|
||||||
|
destMode = var_r30;
|
||||||
|
GWPlayer[rollPlayer].roll = var_r30;
|
||||||
|
BoardDiceDigit2DInit(rollPlayer, 1);
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
BoardTutorialHookExec(6, 0);
|
||||||
|
}
|
||||||
|
if (tutorialRollF != 0) {
|
||||||
|
tutorialRollF = 0;
|
||||||
|
}
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceCreate(s32 arg0) {
|
||||||
|
Vec sp1C;
|
||||||
|
float temp_f30;
|
||||||
|
float var_f31;
|
||||||
|
omObjData *temp_r31;
|
||||||
|
DiceWork *temp_r30;
|
||||||
|
s32 sp8;
|
||||||
|
s32 spC[4] = {
|
||||||
|
0x00070018,
|
||||||
|
0x00070019,
|
||||||
|
0x0007001A,
|
||||||
|
0x0007001B
|
||||||
|
};
|
||||||
|
|
||||||
|
sp8 = 0;
|
||||||
|
diceMdl[arg0] = BoardModelCreate(spC[diceSize], NULL, 0);
|
||||||
|
temp_f30 = BoardRandMod(maxRoll) + 0.5f;
|
||||||
|
BoardPlayerPosGet(rollPlayer, &sp1C);
|
||||||
|
HuAudFXPlay(0x302);
|
||||||
|
BoardModelMotionStart(diceMdl[arg0], 0, 0);
|
||||||
|
BoardModelMotionSpeedSet(diceMdl[arg0], 0.0f);
|
||||||
|
BoardModelMotionTimeSet(diceMdl[arg0], temp_f30);
|
||||||
|
BoardModelScaleSet(diceMdl[arg0], 0.001f, 0.001f, 0.001f);
|
||||||
|
temp_r31 = omAddObjEx(boardObjMan, 0x102, 0, 0, -1, DiceMain);
|
||||||
|
temp_r30 = OM_GET_WORK_PTR(temp_r31, DiceWork);
|
||||||
|
temp_r30->unk00_field0 = 0;
|
||||||
|
temp_r30->unk00_field1 = 0;
|
||||||
|
temp_r30->unk00_field2 = 0;
|
||||||
|
temp_r30->unk00_field3 = arg0;
|
||||||
|
temp_r30->unk04 = 0;
|
||||||
|
temp_r30->unk01 = 4;
|
||||||
|
temp_r30->unk02 = 0;
|
||||||
|
diceObj[arg0] = temp_r31;
|
||||||
|
var_f31 = 250.0f;
|
||||||
|
if (diceSize == 2) {
|
||||||
|
var_f31 = 625.0f;
|
||||||
|
} else if (GWPlayer[rollPlayer].bowser_suit != 0) {
|
||||||
|
var_f31 = 575.0f;
|
||||||
|
}
|
||||||
|
sp1C.y += var_f31;
|
||||||
|
temp_r31->trans.x = sp1C.x;
|
||||||
|
temp_r31->trans.y = sp1C.y;
|
||||||
|
temp_r31->trans.z = sp1C.z;
|
||||||
|
temp_r31->scale.x = 0.1f;
|
||||||
|
temp_r31->scale.y = 0.1f;
|
||||||
|
temp_r31->scale.z = 0.1f;
|
||||||
|
sp1C.z += 70.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DoInput(s32 arg0) {
|
||||||
|
s32 var_r31;
|
||||||
|
s32 var_r30;
|
||||||
|
u16 sp8[1];
|
||||||
|
|
||||||
|
destMode = 0;
|
||||||
|
lbl_801D4098 = 0;
|
||||||
|
while (1) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
*sp8 = GetBtnRoll(rollPlayer);
|
||||||
|
if (BoardPauseActiveCheck()) {
|
||||||
|
*sp8 = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (*sp8 == 0x100) {
|
||||||
|
inputTimer++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (inputTimer == 0) {
|
||||||
|
if (*sp8 == 0x10) {
|
||||||
|
destMode = -3;
|
||||||
|
HuAudFXPlay(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (*sp8 == 0x20) {
|
||||||
|
destMode = -4;
|
||||||
|
HuAudFXPlay(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var_r31 = BoardPlayerItemCount(rollPlayer);
|
||||||
|
if (GWTeamGet()) {
|
||||||
|
var_r30 = BoardPlayerSameTeamFind(rollPlayer);
|
||||||
|
var_r31 += BoardPlayerItemCount(var_r30);
|
||||||
|
}
|
||||||
|
if (var_r31 == 0 || BoardRollTypeGet() != -1 || BoardRollResizeCheck() || _CheckFlag(0x10009)) {
|
||||||
|
if (_CheckFlag(0x10009) && GWBoardGet() == 5 && *sp8 == 0x200 && var_r31 != 0) {
|
||||||
|
HuAudFXPlay(4);
|
||||||
|
}
|
||||||
|
} else if (*sp8 == 0x200) {
|
||||||
|
destMode = -2;
|
||||||
|
HuAudFXPlay(3);
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceWaitFull(s32 arg0) {
|
||||||
|
DiceWork *temp_r31 = OM_GET_WORK_PTR(diceObj[arg0], DiceWork);
|
||||||
|
|
||||||
|
while (temp_r31->unk00_field2 != 1) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceSetHit(s32 arg0) {
|
||||||
|
DiceWork *temp_r30 = OM_GET_WORK_PTR(diceObj[arg0], DiceWork);
|
||||||
|
|
||||||
|
temp_r30->unk00_field2 = 2;
|
||||||
|
temp_r30->unk04 = 0;
|
||||||
|
BoardModelMotionSpeedSet(diceMdl[arg0], 0.0f);
|
||||||
|
diceValue[arg0] = (s32) BoardModelMotionTimeGet(diceMdl[arg0]) + 1;
|
||||||
|
if (tutorialRollF != 0 && tutorialRoll[arg0] != -1) {
|
||||||
|
BoardModelMotionTimeSet(diceMdl[arg0], tutorialRoll[arg0] - 1);
|
||||||
|
diceValue[arg0] = tutorialRoll[arg0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RollDestroy(void) {
|
||||||
|
if (rollWin != -1) {
|
||||||
|
HuWinKill(rollWin);
|
||||||
|
rollWin = -1;
|
||||||
|
}
|
||||||
|
if (rollProc) {
|
||||||
|
HuPrcKill(rollProc);
|
||||||
|
}
|
||||||
|
DicePauseAll();
|
||||||
|
DiceKill();
|
||||||
|
BoardConfettiKill();
|
||||||
|
rollProc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceMain(omObjData *arg0) {
|
||||||
|
DiceWork *temp_r29 = OM_GET_WORK_PTR(arg0, DiceWork);
|
||||||
|
float temp_f29;
|
||||||
|
float var_f28;
|
||||||
|
float var_f27;
|
||||||
|
s16 temp_r26;
|
||||||
|
s16 temp_r27;
|
||||||
|
|
||||||
|
if (temp_r29->unk00_field0 != 0 || BoardIsKill()) {
|
||||||
|
if (diceSndStatus[temp_r29->unk00_field3] != -1) {
|
||||||
|
HuAudFXStop(diceSndStatus[temp_r29->unk00_field3]);
|
||||||
|
diceSndStatus[temp_r29->unk00_field3] = -1;
|
||||||
|
}
|
||||||
|
if (diceMdl[temp_r29->unk00_field3] != -1) {
|
||||||
|
BoardModelKill(diceMdl[temp_r29->unk00_field3]);
|
||||||
|
diceMdl[temp_r29->unk00_field3] = -1;
|
||||||
|
}
|
||||||
|
if (diceEff[temp_r29->unk00_field3] != -1) {
|
||||||
|
Hu3DParManKill(diceEff[temp_r29->unk00_field3]);
|
||||||
|
diceEff[temp_r29->unk00_field3] = -1;
|
||||||
|
}
|
||||||
|
DicePause(temp_r29->unk00_field3);
|
||||||
|
diceObj[temp_r29->unk00_field3] = NULL;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (temp_r29->unk00_field2) {
|
||||||
|
case 0:
|
||||||
|
if (temp_r29->unk06 >= 0x438) {
|
||||||
|
temp_r29->unk00_field2 = 1;
|
||||||
|
arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f;
|
||||||
|
arg0->rot.y = temp_r29->unk04 = 0;
|
||||||
|
} else {
|
||||||
|
if (temp_r29->unk04 == 0 && diceSndStatus[temp_r29->unk00_field3] == -1) {
|
||||||
|
diceSndStatus[temp_r29->unk00_field3] = HuAudFXPlay(0x300);
|
||||||
|
}
|
||||||
|
arg0->rot.y = temp_r29->unk06 % 360;
|
||||||
|
temp_r29->unk06 += 0x19;
|
||||||
|
if (temp_r29->unk04 < 0xB4) {
|
||||||
|
var_f27 = 0.0f;
|
||||||
|
var_f28 = 1.0f;
|
||||||
|
} else {
|
||||||
|
var_f27 = 1.0f;
|
||||||
|
var_f28 = 0.5f;
|
||||||
|
}
|
||||||
|
arg0->scale.x = var_f27 + var_f28 * sin((float) (temp_r29->unk04 % 180) * M_PI / 180.0);
|
||||||
|
arg0->scale.y = arg0->scale.x;
|
||||||
|
arg0->scale.z = arg0->scale.x;
|
||||||
|
if (temp_r29->unk04 <= 360) {
|
||||||
|
if (temp_r29->unk04 < 0xB4) {
|
||||||
|
temp_r29->unk04 += 6;
|
||||||
|
} else {
|
||||||
|
temp_r29->unk04 += 0x12;
|
||||||
|
}
|
||||||
|
if (temp_r29->unk04 > 360) {
|
||||||
|
temp_r29->unk04 = 360;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
temp_r29->unk04 += 4;
|
||||||
|
if (temp_r29->unk04 > 360) {
|
||||||
|
temp_r29->unk04 -= 360;
|
||||||
|
}
|
||||||
|
OSs16tof32(&temp_r29->unk04, &temp_f29);
|
||||||
|
arg0->trans.y += 0.20000000298023224 * sin(temp_f29 * M_PI / 180.0);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
temp_r29->unk04++;
|
||||||
|
if (temp_r29->unk04 >= 8) {
|
||||||
|
if (diceSndStatus[temp_r29->unk00_field3] != -1) {
|
||||||
|
HuAudFXStop(diceSndStatus[temp_r29->unk00_field3]);
|
||||||
|
diceSndStatus[temp_r29->unk00_field3] = -1;
|
||||||
|
}
|
||||||
|
HuAudFXPlay(0x303);
|
||||||
|
HuAudFXPlay(0x30C);
|
||||||
|
temp_r29->unk00_field2 = 3;
|
||||||
|
temp_r29->unk04 = 0;
|
||||||
|
BoardDiceValueSet(temp_r29->unk00_field3, diceValue[temp_r29->unk00_field3]);
|
||||||
|
diceEff[temp_r29->unk00_field3] = BoardDiceEffectCreate();
|
||||||
|
Hu3DParManPosSet(diceEff[temp_r29->unk00_field3], arg0->trans.x, arg0->trans.y, arg0->trans.z);
|
||||||
|
BoardModelVisibilitySet(diceMdl[temp_r29->unk00_field3], 0);
|
||||||
|
} else {
|
||||||
|
OSs16tof32(&temp_r29->unk04, &temp_f29);
|
||||||
|
if (temp_r29->unk04 < 4) {
|
||||||
|
arg0->trans.y += 10.0f + (0.5f * temp_f29);
|
||||||
|
arg0->scale.x = (arg0->scale.x + (0.10000000149011612 * sin((M_PI * (4.0f * temp_f29)) / 180.0)));
|
||||||
|
arg0->scale.y = arg0->scale.x;
|
||||||
|
arg0->scale.z = arg0->scale.x;
|
||||||
|
} else {
|
||||||
|
BoardModelAlphaSet(diceMdl[temp_r29->unk00_field3], 0xFF - (temp_r29->unk04 << 5));
|
||||||
|
}
|
||||||
|
arg0->trans.y += -0.49f * temp_f29 * temp_f29;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (diceEff[temp_r29->unk00_field3] != -1 && ++temp_r29->unk04 >= 150) {
|
||||||
|
temp_r29->unk00_field0 = 1;
|
||||||
|
DiceHideEffect(temp_r29->unk00_field3, 0);
|
||||||
|
}
|
||||||
|
if (temp_r29->unk00_field1 == 0 || temp_r29->unk00_field2 != 3) {
|
||||||
|
if (temp_r29->unk02++ > temp_r29->unk01) {
|
||||||
|
temp_r29->unk02 = 0;
|
||||||
|
temp_r26 = BoardModelMotionTimeGet(diceMdl[temp_r29->unk00_field3]);
|
||||||
|
do {
|
||||||
|
temp_r27 = BoardRandMod(maxRoll);
|
||||||
|
} while (temp_r27 == temp_r26);
|
||||||
|
BoardModelMotionTimeSet(diceMdl[temp_r29->unk00_field3], temp_r27 + 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BoardModelPosSet(diceMdl[temp_r29->unk00_field3], arg0->trans.x, arg0->trans.y, arg0->trans.z);
|
||||||
|
BoardModelRotSet(diceMdl[temp_r29->unk00_field3], arg0->rot.x, arg0->rot.y, arg0->rot.z);
|
||||||
|
BoardModelScaleSet(diceMdl[temp_r29->unk00_field3], arg0->scale.x, arg0->scale.y, arg0->scale.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DicePause(s32 arg0) {
|
||||||
|
omObjData *temp_r31 = diceObj[arg0];
|
||||||
|
|
||||||
|
if (temp_r31) {
|
||||||
|
OM_GET_WORK_PTR(temp_r31, DiceWork)->unk00_field0 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DicePauseAll(void) {
|
||||||
|
DicePause(0);
|
||||||
|
DicePause(1);
|
||||||
|
DicePause(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardDiceEffectCreate(void) {
|
||||||
|
s16 temp_r31;
|
||||||
|
s16 temp_r30;
|
||||||
|
AnimData *temp_r29;
|
||||||
|
void *temp_r28;
|
||||||
|
|
||||||
|
temp_r28 = HuDataSelHeapReadNum(0x7006B, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||||
|
temp_r29 = HuSprAnimRead(temp_r28);
|
||||||
|
temp_r31 = Hu3DParManCreate(temp_r29, 0x64, &diceEffParam);
|
||||||
|
Hu3DParManAttrSet(temp_r31, 0x108);
|
||||||
|
Hu3DParManRotSet(temp_r31, 0.0f, 0.0f, 0.0f);
|
||||||
|
Hu3DParManVecSet(temp_r31, 0.0f, 0.4f, 0.2f);
|
||||||
|
Hu3DParManTimeLimitSet(temp_r31, 0x96);
|
||||||
|
temp_r30 = Hu3DParManModelIDGet(temp_r31);
|
||||||
|
Hu3DModelLayerSet(temp_r30, 1);
|
||||||
|
Hu3DParticleBlendModeSet(temp_r30, 0);
|
||||||
|
return temp_r31;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceHideEffect(s32 arg0, s32 arg1) {
|
||||||
|
s16 temp_r31;
|
||||||
|
|
||||||
|
if (diceEff[arg0] == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp_r31 = Hu3DParManModelIDGet(diceEff[arg0]);
|
||||||
|
if (arg1 != 0) {
|
||||||
|
Hu3DModelAttrReset(temp_r31, 1);
|
||||||
|
} else {
|
||||||
|
Hu3DModelAttrSet(temp_r31, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardDicePauseAll(void) {
|
||||||
|
DiceDigitWork *temp_r30;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < numDice; i++) {
|
||||||
|
if (diceDigitObj[i]) {
|
||||||
|
temp_r30 = OM_GET_WORK_PTR(diceDigitObj[i], DiceDigitWork);
|
||||||
|
temp_r30->unk00_field1 = 1;
|
||||||
|
temp_r30->unk00_field2 = 1;
|
||||||
|
temp_r30->unk02 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL BoardDiceDoneCheck(void) {
|
||||||
|
DiceDigitWork *temp_r30;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < numDice; i++) {
|
||||||
|
if (diceDigitObj[i]) {
|
||||||
|
temp_r30 = OM_GET_WORK_PTR(diceDigitObj[i], DiceDigitWork);
|
||||||
|
if (temp_r30->unk00_field2 != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardDiceStop(s32 arg0) {
|
||||||
|
DiceDigitWork *temp_r31;
|
||||||
|
|
||||||
|
if (!diceDigitObj[arg0]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(diceDigitObj[arg0], DiceDigitWork);
|
||||||
|
temp_r31->unk00_field0 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardDiceVisibleSet(s32 arg0, s32 arg1) {
|
||||||
|
DiceDigitWork *temp_r31;
|
||||||
|
|
||||||
|
if (!diceDigitObj[arg0]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(diceDigitObj[arg0], DiceDigitWork);
|
||||||
|
if ((temp_r31->unk01 / 10) == 0) {
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04[1], 0);
|
||||||
|
} else {
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04[1], arg1);
|
||||||
|
}
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04[0], arg1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardDiceValueSet(s32 arg0, s32 arg1) {
|
||||||
|
omObjData *temp_r27;
|
||||||
|
DiceDigitWork *temp_r31;
|
||||||
|
Vec spC;
|
||||||
|
s16 sp8[2];
|
||||||
|
s16 temp_r30;
|
||||||
|
s16 i;
|
||||||
|
|
||||||
|
if (arg1 > 0x63) {
|
||||||
|
arg1 = 0x63;
|
||||||
|
}
|
||||||
|
sp8[0] = (arg1 % 10);
|
||||||
|
sp8[1] = (arg1 / 10);
|
||||||
|
BoardPlayerPosGet(GWSystem.player_curr, &spC);
|
||||||
|
spC.y += 300.0f;
|
||||||
|
temp_r27 = omAddObjEx(boardObjMan, 0x102, 0, 0, -1, DiceDigitMain);
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(temp_r27, DiceDigitWork);
|
||||||
|
temp_r31->unk00_field0 = 0;
|
||||||
|
temp_r31->unk00_field1 = 0;
|
||||||
|
temp_r31->unk00_field2 = 0;
|
||||||
|
temp_r31->unk00_field3 = arg0;
|
||||||
|
temp_r31->unk08 = 0.3f;
|
||||||
|
temp_r31->unk01 = arg1;
|
||||||
|
temp_r31->unk02 = 360;
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
temp_r30 = BoardModelCreate(diceDigitMdlTbl[sp8[i]], NULL, 0);
|
||||||
|
BoardModelPosSetV(temp_r30, &spC);
|
||||||
|
BoardModelMotionStart(temp_r30, 0, 0);
|
||||||
|
BoardModelMotionSpeedSet(temp_r30, 0.0f);
|
||||||
|
BoardModelMotionTimeSet(temp_r30, 0.0f);
|
||||||
|
BoardModelScaleSet(temp_r30, 0.143f, 0.143f, 0.143f);
|
||||||
|
temp_r31->unk04[i] = temp_r30;
|
||||||
|
}
|
||||||
|
if (sp8[1] == 0) {
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04[1], 0);
|
||||||
|
}
|
||||||
|
diceDigitObj[arg0] = temp_r27;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceDigitMain(omObjData *arg0) {
|
||||||
|
DiceDigitWork *temp_r31 = OM_GET_WORK_PTR(arg0, DiceDigitWork);
|
||||||
|
|
||||||
|
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
|
||||||
|
DiceDigitKill(temp_r31);
|
||||||
|
diceDigitObj[temp_r31->unk00_field3] = NULL;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DiceDigitMove(temp_r31, temp_r31->unk00_field1);
|
||||||
|
DiceDigitRotate(temp_r31, temp_r31->unk00_field1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceDigitKill(DiceDigitWork *arg0) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
if (arg0->unk04[i] != -1) {
|
||||||
|
BoardModelKill(arg0->unk04[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceKill(void) {
|
||||||
|
DiceDigitWork *temp_r29;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
if (diceDigitObj[i]) {
|
||||||
|
temp_r29 = OM_GET_WORK_PTR(diceDigitObj[i], DiceDigitWork);
|
||||||
|
DiceDigitKill(temp_r29);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceDigitMove(DiceDigitWork *arg0, s32 arg1) {
|
||||||
|
s32 sp8 = 0;
|
||||||
|
Vec sp30;
|
||||||
|
Vec sp24;
|
||||||
|
Vec sp54[2];
|
||||||
|
Vec sp18 = { 288.0f, 155.0f, 240.0f };
|
||||||
|
Vec sp3C[2] = {
|
||||||
|
{ 144.0f, 155.0f, 240.0f },
|
||||||
|
{ 432.0f, 155.0f, 240.0f }
|
||||||
|
};
|
||||||
|
Vec sp6C[3] = {
|
||||||
|
{ 144.0f, 155.0f, 240.0f },
|
||||||
|
{ 432.0f, 155.0f, 240.0f },
|
||||||
|
{ 288.0f, 155.0f, 240.0f }
|
||||||
|
};
|
||||||
|
Vec spC = { 288.0f, 176.0f, 240.0f };
|
||||||
|
Vec *var_r29;
|
||||||
|
float var_f31;
|
||||||
|
s16 var_r27;
|
||||||
|
s16 i;
|
||||||
|
|
||||||
|
var_r27 = (arg0->unk01 / 10);
|
||||||
|
if (arg1 != 0) {
|
||||||
|
var_r29 = &spC;
|
||||||
|
var_f31 = -20.0f * arg0->unk00_field3;
|
||||||
|
} else {
|
||||||
|
switch (numDice) {
|
||||||
|
case 1:
|
||||||
|
var_r29 = &sp18;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var_r29 = &sp3C[arg0->unk00_field3];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
var_r29 = &sp6C[arg0->unk00_field3];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var_f31 = 0.0f;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
if (var_r27 == 0) {
|
||||||
|
sp54[i].x = var_r29->x;
|
||||||
|
} else if (i != 0) {
|
||||||
|
sp54[i].x = var_r29->x - 30.0f;
|
||||||
|
} else {
|
||||||
|
sp54[i].x = var_r29->x + 30.0f;
|
||||||
|
}
|
||||||
|
sp54[i].y = var_r29->y;
|
||||||
|
sp54[i].z = var_r29->z + var_f31;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
BoardModelPosGet(arg0->unk04[i], &sp30);
|
||||||
|
Hu3D2Dto3D(&sp54[i], 1, &sp54[i]);
|
||||||
|
PSVECSubtract(&sp54[i], &sp30, &sp24);
|
||||||
|
if (PSVECMag(&sp24) < 0.01f) {
|
||||||
|
arg0->unk00_field2 = 0;
|
||||||
|
if (arg1 != 0 && arg0->unk00_field3 != 0) {
|
||||||
|
BoardModelVisibilitySet(arg0->unk04[i], 0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
arg0->unk00_field2 = 1;
|
||||||
|
}
|
||||||
|
PSVECScale(&sp24, &sp24, arg0->unk08);
|
||||||
|
PSVECAdd(&sp30, &sp24, &sp30);
|
||||||
|
BoardModelPosSetV(arg0->unk04[i], &sp30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DiceDigitRotate(DiceDigitWork *arg0, s32 arg1) {
|
||||||
|
float var_f30;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
if (arg1 != 0) {
|
||||||
|
arg0->unk02 += 0x12;
|
||||||
|
if (arg0->unk02 >= 360) {
|
||||||
|
arg0->unk02 = 360;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
arg0->unk02 -= 0x12;
|
||||||
|
if (arg0->unk02 <= 0) {
|
||||||
|
arg0->unk02 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OSs16tof32(&arg0->unk02, &var_f30);
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
if (arg0->unk04[i] != -1) {
|
||||||
|
BoardModelRotSet(arg0->unk04[i], 0.0f, var_f30, 0.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SameRollExec(void) {
|
||||||
|
Vec sp8;
|
||||||
|
float var_f31;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 var_r31;
|
||||||
|
s32 i;
|
||||||
|
s32 var_r29;
|
||||||
|
|
||||||
|
temp_r27 = -1;
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
var_r28 = 0x50;
|
||||||
|
switch (numDice) {
|
||||||
|
case 2:
|
||||||
|
if (diceValue[0] == 7) {
|
||||||
|
var_r31 = 0x1E;
|
||||||
|
} else {
|
||||||
|
var_r31 = 0xA;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (diceValue[0] == 7) {
|
||||||
|
var_r31 = 0x32;
|
||||||
|
var_r28 = 0x118;
|
||||||
|
} else if (diceValue[0] & 1) {
|
||||||
|
var_r31 = 0x1E;
|
||||||
|
} else {
|
||||||
|
var_r31 = 0xA;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sprintf(sameRollCoinStr, "%d", var_r31);
|
||||||
|
BoardPlayerPosGet(rollPlayer, &sp8);
|
||||||
|
if (BoardPlayerSizeGet(rollPlayer) == 2 || GWPlayer[rollPlayer].bowser_suit != 0) {
|
||||||
|
sp8.y += 700.0f;
|
||||||
|
var_f31 = 450.0f;
|
||||||
|
} else {
|
||||||
|
sp8.y += 600.0f;
|
||||||
|
var_f31 = 300.0f;
|
||||||
|
}
|
||||||
|
BoardConfettiCreate(&sp8, var_r28, var_f31);
|
||||||
|
BoardAudSeqPause(0, 1, 0x3E8);
|
||||||
|
HuPrcSleep(0xA);
|
||||||
|
temp_r27 = HuAudSStreamPlay(9);
|
||||||
|
while (HuAudSStreamStatGet(temp_r27) != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardAudSeqPause(0, 0, 0x3E8);
|
||||||
|
BoardWinCreate(0, 0x90000, -1);
|
||||||
|
BoardWinInsertMesSet(sameRollCoinStr, 0);
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
if (var_r31 >= 0x32) {
|
||||||
|
var_r29 = 1;
|
||||||
|
} else if (var_r31 >= 0x14) {
|
||||||
|
var_r29 = 3;
|
||||||
|
} else {
|
||||||
|
var_r29 = 6;
|
||||||
|
}
|
||||||
|
for (i = 0; i < var_r31; i++) {
|
||||||
|
BoardPlayerCoinsAdd(rollPlayer, 1);
|
||||||
|
HuAudFXPlay(7);
|
||||||
|
HuPrcSleep(var_r29);
|
||||||
|
}
|
||||||
|
HuAudFXPlay(0xF);
|
||||||
|
BoardConfettiStop();
|
||||||
|
BoardPauseDisableSet(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 GetBtnRoll(s32 arg0) {
|
||||||
|
s32 var_r31 = 0;
|
||||||
|
s32 var_r29;
|
||||||
|
|
||||||
|
if (boardTutorialUseItem >= 0 && boardTutorialUseItem <= 0xD) {
|
||||||
|
var_r31 = 0x200;
|
||||||
|
return var_r31;
|
||||||
|
}
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
var_r31 = 0x100;
|
||||||
|
return var_r31;
|
||||||
|
}
|
||||||
|
if (!GWPlayer[arg0].com) {
|
||||||
|
var_r29 = GWPlayer[arg0].port;
|
||||||
|
var_r31 = HuPadBtnDown[var_r29];
|
||||||
|
return var_r31;
|
||||||
|
}
|
||||||
|
if (_CheckFlag(0x10009) || BoardRollTypeGet() != -1) {
|
||||||
|
return 0x100;
|
||||||
|
}
|
||||||
|
var_r31 = GetComBtnRoll(arg0);
|
||||||
|
return var_r31;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 GetComBtnRoll(s32 arg0) {
|
||||||
|
if (BoardRollTypeGet() != -1 || BoardPlayerItemCount(arg0) == 0 || BoardRollResizeCheck() || _CheckFlag(0x10009)) {
|
||||||
|
return 0x100;
|
||||||
|
}
|
||||||
|
if (BoardComUseItemCheck(arg0)) {
|
||||||
|
return 0x200;
|
||||||
|
}
|
||||||
|
return 0x100;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardRollTutorialSet(s16 *arg0) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
tutorialRoll[i] = arg0[i];
|
||||||
|
}
|
||||||
|
tutorialRollF = 1;
|
||||||
|
}
|
||||||
|
|
@ -3,18 +3,17 @@
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
#include "game/board/space.h"
|
#include "game/board/space.h"
|
||||||
|
#include "game/board/star.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/sprite.h"
|
#include "game/sprite.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
extern void omVibrate(s16, s16, s16, s16);
|
|
||||||
|
|
||||||
|
|
||||||
extern s16 BoardStarHostMdlGet(void);
|
|
||||||
extern void BoardModelPosSetV(s16 model, Vec *pos);
|
|
||||||
extern s16 BoardModelCreate(s32 file, s32 *data, s32 arg3);
|
extern s16 BoardModelCreate(s32 file, s32 *data, s32 arg3);
|
||||||
extern s16 BoardModelIDGet(s16 model);
|
extern s16 BoardModelIDGet(s16 model);
|
||||||
|
|
||||||
|
|
@ -53,9 +52,6 @@ static s16 starPlatMdl = -1;
|
||||||
|
|
||||||
static s32 ExecPipeSpace(s32 player, s32 space);
|
static s32 ExecPipeSpace(s32 player, s32 space);
|
||||||
|
|
||||||
extern s8 boardTutorialBlockF;
|
|
||||||
extern s32 boardTutorialBlockPos;
|
|
||||||
|
|
||||||
|
|
||||||
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func)
|
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func)
|
||||||
{
|
{
|
||||||
|
|
@ -992,7 +988,7 @@ void BoardSpaceInit(s32 data_num)
|
||||||
AnimData *data;
|
AnimData *data;
|
||||||
void *data_base;
|
void *data_base;
|
||||||
s32 size;
|
s32 size;
|
||||||
data = data_base = HuDataSelHeapReadNum(MAKE_DATA_NUM(DATADIR_BOARD, 29), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 29), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||||
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
|
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
|
||||||
data->pat = (void *)((u32)data_base+(u32)data->pat);
|
data->pat = (void *)((u32)data_base+(u32)data->pat);
|
||||||
data->bank = (void *)((u32)data_base+(u32)data->bank);
|
data->bank = (void *)((u32)data_base+(u32)data->bank);
|
||||||
|
|
@ -1024,7 +1020,7 @@ void BoardSpaceInit(s32 data_num)
|
||||||
AnimData *data;
|
AnimData *data;
|
||||||
void *data_base;
|
void *data_base;
|
||||||
s32 size;
|
s32 size;
|
||||||
data = data_base = HuDataSelHeapReadNum(MAKE_DATA_NUM(DATADIR_BOARD, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
data = data_base = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||||
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
|
data->bmp = (void *)((u32)data_base+(u32)data->bmp);
|
||||||
data->pat = (void *)((u32)data_base+(u32)data->pat);
|
data->pat = (void *)((u32)data_base+(u32)data->pat);
|
||||||
data->bank = (void *)((u32)data_base+(u32)data->bank);
|
data->bank = (void *)((u32)data_base+(u32)data->bank);
|
||||||
|
|
@ -1059,7 +1055,7 @@ void BoardSpaceInit(s32 data_num)
|
||||||
GWSystem.star_flag = 0;
|
GWSystem.star_flag = 0;
|
||||||
}
|
}
|
||||||
if(BoardCurrGet() != 7 && BoardCurrGet() != 8) {
|
if(BoardCurrGet() != 7 && BoardCurrGet() != 8) {
|
||||||
starPlatMdl = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 6), NULL, 0);
|
starPlatMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 6), NULL, 0);
|
||||||
BoardModelMotionStart(starPlatMdl, 0, 0x40000001);
|
BoardModelMotionStart(starPlatMdl, 0, 0x40000001);
|
||||||
BoardModelVisibilitySet(starPlatMdl, 0);
|
BoardModelVisibilitySet(starPlatMdl, 0);
|
||||||
if(_CheckFlag(FLAG_ID_MAKE(1, 1))) {
|
if(_CheckFlag(FLAG_ID_MAKE(1, 1))) {
|
||||||
|
|
|
||||||
821
src/game/board/star.c
Executable file
821
src/game/board/star.c
Executable file
|
|
@ -0,0 +1,821 @@
|
||||||
|
#include "game/board/star.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/data.h"
|
||||||
|
#include "game/flag.h"
|
||||||
|
#include "game/gamework.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/hsfanim.h"
|
||||||
|
#include "game/hsfman.h"
|
||||||
|
#include "game/msm.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
|
#include "game/wipe.h"
|
||||||
|
#include "game/board/audio.h"
|
||||||
|
#include "game/board/com.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
#include "game/board/window.h"
|
||||||
|
|
||||||
|
#include "math.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
u8 unk00_field1 : 1;
|
||||||
|
u8 unk00_field2 : 1;
|
||||||
|
u8 unk00_field3 : 2;
|
||||||
|
u8 unk00_field4 : 1;
|
||||||
|
};
|
||||||
|
s8 unk01;
|
||||||
|
s8 unk02;
|
||||||
|
char unk03[1];
|
||||||
|
s16 unk04;
|
||||||
|
s16 unk06;
|
||||||
|
s16 unk08;
|
||||||
|
s16 unk0A;
|
||||||
|
s16 unk0C;
|
||||||
|
} GiveStarWork;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
};
|
||||||
|
s8 unk01;
|
||||||
|
} ShowNextWork;
|
||||||
|
|
||||||
|
static void ExecStar(void);
|
||||||
|
static void DestroyStar(void);
|
||||||
|
static void GiveStarMain(omObjData *arg0);
|
||||||
|
static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1);
|
||||||
|
static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1);
|
||||||
|
static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1);
|
||||||
|
static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1);
|
||||||
|
static void StopGiveStar(void);
|
||||||
|
static void InitGiveStarEffect(void);
|
||||||
|
static void KillGiveStarEffect(void);
|
||||||
|
static void ShowNextUpdate(omObjData *arg0);
|
||||||
|
static void HideNextHost(s32 arg0);
|
||||||
|
|
||||||
|
static Vec starCharPos;
|
||||||
|
|
||||||
|
static s16 hostMot[2];
|
||||||
|
static omObjData *showNextObj;
|
||||||
|
static s16 starDoneF;
|
||||||
|
static AnimData *starEffAnim;
|
||||||
|
static omObjData *giveStarObj;
|
||||||
|
static Process *starProc;
|
||||||
|
|
||||||
|
static s16 starParman = -1;
|
||||||
|
static s16 hostMdl = -1;
|
||||||
|
|
||||||
|
const s32 lbl_8011E040[9] = {
|
||||||
|
0x000C0000,
|
||||||
|
0x000C0009,
|
||||||
|
0x000C0012,
|
||||||
|
0x000C001B,
|
||||||
|
0x000C0024,
|
||||||
|
0x000C002D,
|
||||||
|
0x000C0000,
|
||||||
|
0x000C0000,
|
||||||
|
0x000C0000
|
||||||
|
};
|
||||||
|
|
||||||
|
const s32 lbl_8011E064[9][2] = {
|
||||||
|
{ 0x00150022, 0x00150028 },
|
||||||
|
{ 0x00150023, 0x00150029 },
|
||||||
|
{ 0x00150024, 0x0015002A },
|
||||||
|
{ 0x00150025, 0x0015002B },
|
||||||
|
{ 0x00150026, 0x0015002C },
|
||||||
|
{ 0x00150027, 0x0015002D },
|
||||||
|
{ 0x00150022, 0x00150028 },
|
||||||
|
{ 0x00150022, 0x00150028 },
|
||||||
|
{ 0x00150022, 0x00150028 }
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 boardStarSndTbl[] = {
|
||||||
|
0x00000120,
|
||||||
|
0x00000160,
|
||||||
|
0x000001A0,
|
||||||
|
0x000001E0,
|
||||||
|
0x00000220,
|
||||||
|
0x00000260,
|
||||||
|
0x000002A0,
|
||||||
|
0x000002E0
|
||||||
|
};
|
||||||
|
|
||||||
|
static s32 hostMotTbl[][2] = {
|
||||||
|
{ 0x00750021, 0x0007009D },
|
||||||
|
{ 0x00760007, 0x0007009E },
|
||||||
|
{ 0x0077001F, 0x0007009F },
|
||||||
|
{ 0x0078000B, 0x000700A0 },
|
||||||
|
{ 0x00790009, 0x000700A1 },
|
||||||
|
{ 0x007A0015, 0x000700A2 },
|
||||||
|
{ 0x00000000, 0x00000000 },
|
||||||
|
{ 0x00000000, 0x00000000 },
|
||||||
|
{ 0x00000000, 0x00000000 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static HsfanimStruct00 starEffParam = {
|
||||||
|
0x001E,
|
||||||
|
{ 0x00, 0x00 }, // padding?
|
||||||
|
3.3f,
|
||||||
|
70.0f,
|
||||||
|
7.0f,
|
||||||
|
{ 0.0f, -0.05f, 0.0f },
|
||||||
|
2.0f,
|
||||||
|
1.0f,
|
||||||
|
20.0f,
|
||||||
|
0.98f,
|
||||||
|
0x0002,
|
||||||
|
{
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x40, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00
|
||||||
|
},
|
||||||
|
{
|
||||||
|
0xFF, 0x80, 0x80, 0x00,
|
||||||
|
0xFF, 0x40, 0x20, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void BoardStarHostSet(s16 arg0) {
|
||||||
|
hostMdl = arg0;
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_CheckFlag(0x10001)) {
|
||||||
|
BoardSpaceHostSet(boardSpaceStarTbl[GWSystem.star_pos]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s16 BoardStarHostMdlGet(void) {
|
||||||
|
return hostMdl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardStarExec(s32 arg0, BoardSpace *arg1) {
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (BoardPlayerSizeGet(arg0) != 2) {
|
||||||
|
BoardDiceDigit2DShowSet(0);
|
||||||
|
starProc = HuPrcChildCreate(ExecStar, 0x2003, 0x3800, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(starProc, DestroyStar);
|
||||||
|
while (starProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardDiceDigit2DShowSet(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecStar(void) {
|
||||||
|
Vec sp24;
|
||||||
|
Vec sp18;
|
||||||
|
Vec spC;
|
||||||
|
float temp_f27;
|
||||||
|
float temp_f29;
|
||||||
|
float temp_f30;
|
||||||
|
float var_f28;
|
||||||
|
float var_f31;
|
||||||
|
s16 temp_r30;
|
||||||
|
u32 sp8;
|
||||||
|
s32 temp_r24;
|
||||||
|
s32 temp_r29;
|
||||||
|
s32 var_r26;
|
||||||
|
s32 var_r25;
|
||||||
|
s32 i;
|
||||||
|
s32 temp_r27;
|
||||||
|
s32 temp_r31;
|
||||||
|
s32 var_r22;
|
||||||
|
BoardSpace *var_r23;
|
||||||
|
|
||||||
|
temp_r31 = GWSystem.player_curr;
|
||||||
|
temp_r27 = GWBoardGet();
|
||||||
|
temp_r30 = BoardStarHostMdlGet();
|
||||||
|
HuAudFXPlay(0x33A);
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
hostMot[i] = BoardModelMotionCreate(temp_r30, hostMotTbl[temp_r27][i]);
|
||||||
|
}
|
||||||
|
BoardPlayerPosGet(temp_r31, &sp24);
|
||||||
|
temp_r24 = GWPlayer[temp_r31].space_curr;
|
||||||
|
var_r23 = BoardSpaceGet(0, temp_r24);
|
||||||
|
sp8 = (var_r23->flag & 0x70000) >> 16;
|
||||||
|
starDoneF = 0;
|
||||||
|
var_r22 = BoardSpaceLinkFlagSearch(0, temp_r24, 0x04000000);
|
||||||
|
BoardSpacePosGet(0, var_r22, &sp18);
|
||||||
|
PSVECSubtract(&sp18, &sp24, &spC);
|
||||||
|
temp_f30 = 90.0 - 180.0 * (atan2(spC.z, spC.x) / M_PI);
|
||||||
|
temp_f30 = 90.0f * ((temp_f30 + 3.0f) / 90.0f);
|
||||||
|
temp_f29 = BoardPlayerRotYGet(temp_r31);
|
||||||
|
BoardRotateDiceNumbers(temp_r31);
|
||||||
|
if (BoardDAngleCalc(temp_f30 - temp_f29) < 0.0f) {
|
||||||
|
var_f28 = -BoardDAngleCalc(temp_f30 - temp_f29);
|
||||||
|
} else {
|
||||||
|
var_f28 = BoardDAngleCalc(temp_f30 - temp_f29);
|
||||||
|
}
|
||||||
|
if (var_f28 > 90.0f) {
|
||||||
|
var_r25 = 0x1E;
|
||||||
|
} else {
|
||||||
|
var_r25 = 0xF;
|
||||||
|
}
|
||||||
|
BoardPlayerMotBlendSet(temp_r31, temp_f30, var_r25);
|
||||||
|
temp_f27 = BoardModelRotYGet(temp_r30);
|
||||||
|
var_f31 = BoardDAngleCalc(temp_f30 + 180.0f) - temp_f27;
|
||||||
|
if ((var_f31 <= 4.0f && var_f31 >= 0.0f)
|
||||||
|
|| (var_f31 <= 360.0f && var_f31 >= 355.0f)
|
||||||
|
|| (var_f31 <= 0.0f && var_f31 >= -4.0f)) {
|
||||||
|
var_r26 = 0;
|
||||||
|
} else {
|
||||||
|
var_r26 = 1;
|
||||||
|
}
|
||||||
|
if (var_r26 != 0) {
|
||||||
|
var_f31 /= var_r25;
|
||||||
|
BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, 0x40000001);
|
||||||
|
BoardModelMotionSpeedSet(temp_r30, 2.0f);
|
||||||
|
}
|
||||||
|
while (!BoardPlayerMotBlendCheck(temp_r31)) {
|
||||||
|
if (var_r26 != 0) {
|
||||||
|
temp_f30 = var_f31 + BoardModelRotYGet(temp_r30);
|
||||||
|
BoardModelRotYSet(temp_r30, temp_f30);
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001);
|
||||||
|
BoardCameraViewSet(3);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
if (GWStarsGet(temp_r31) >= 999) {
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 5;
|
||||||
|
BoardWinCreate(0, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
} else if (BoardPlayerCoinsGet(temp_r31) < 20 && GWSystem.last5_effect != 4) {
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 2;
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
} else {
|
||||||
|
BoardStatusShowSetAll(0);
|
||||||
|
while (!BoardStatusStopCheck(0) || !BoardStatusStopCheck(1) || !BoardStatusStopCheck(2) || !BoardStatusStopCheck(3)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27];
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinInsertMesSet(BoardPlayerGetCharMess(temp_r31), 0);
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
while (1) {
|
||||||
|
BoardStatusShowSetForce(temp_r31);
|
||||||
|
BoardStatusShowSet(temp_r31, 1);
|
||||||
|
while (!BoardStatusStopCheck(temp_r31)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
if (GWSystem.last5_effect == 4) {
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 8;
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 1;
|
||||||
|
BoardWinCreateChoice(1, temp_r29, BoardWinPortraitGetStar(), 0);
|
||||||
|
BoardWinAttrSet(0x10);
|
||||||
|
if (GWPlayer[temp_r31].com) {
|
||||||
|
if (BoardPlayerCoinsGet(temp_r31) >= 20) {
|
||||||
|
BoardComKeySetUp();
|
||||||
|
} else {
|
||||||
|
BoardComKeySetDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BoardWinWait();
|
||||||
|
switch (BoardWinChoiceGet()) {
|
||||||
|
case 0:
|
||||||
|
if (BoardPlayerCoinsGet(temp_r31) < 20) {
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 2;
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
BoardStatusShowSet(temp_r31, 0);
|
||||||
|
while (!BoardStatusStopCheck(temp_r31)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardStatusShowSetAll(1);
|
||||||
|
goto block_B;
|
||||||
|
}
|
||||||
|
goto block_A;
|
||||||
|
case 1:
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 4;
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
BoardStatusShowSet(temp_r31, 0);
|
||||||
|
while (!BoardStatusStopCheck(temp_r31)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardStatusShowSetAll(1);
|
||||||
|
goto block_B;
|
||||||
|
default:
|
||||||
|
BoardStatusShowSet(temp_r31, 0);
|
||||||
|
while (!BoardStatusStopCheck(temp_r31)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardWinKill();
|
||||||
|
BoardViewMapExec(temp_r31);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
block_A:
|
||||||
|
temp_r29 = lbl_8011E040[temp_r27] + 3;
|
||||||
|
BoardWinCreate(2, temp_r29, BoardWinPortraitGetStar());
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
if (GWSystem.last5_effect != 4) {
|
||||||
|
for (i = 0; i < 20; i++) {
|
||||||
|
BoardPlayerCoinsAdd(temp_r31, -1);
|
||||||
|
HuAudFXPlay(0xE);
|
||||||
|
HuPrcSleep(3);
|
||||||
|
}
|
||||||
|
HuAudFXPlay(0xF);
|
||||||
|
}
|
||||||
|
_SetFlag(0x10017);
|
||||||
|
BoardModelMotionShiftSet(temp_r30, hostMot[0], 0.0f, 10.0f, 0);
|
||||||
|
HuPrcSleep(0x1E);
|
||||||
|
starDoneF = 1;
|
||||||
|
BoardAudSeqFadeOut(0, 0x3E8);
|
||||||
|
BoardModelPosGet(temp_r30, &sp24);
|
||||||
|
sp24.y += 130.0f;
|
||||||
|
BoardStarGive(temp_r31, &sp24);
|
||||||
|
BoardStatusShowSet(temp_r31, 0);
|
||||||
|
while (!BoardStatusStopCheck(temp_r31)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001);
|
||||||
|
BoardStarShowNext(temp_r31);
|
||||||
|
BoardMusStartBoard();
|
||||||
|
BoardModelRotYSet(temp_r30, 0.0f);
|
||||||
|
}
|
||||||
|
block_B:
|
||||||
|
BoardWinKill();
|
||||||
|
var_f31 = -BoardModelRotYGet(temp_r30);
|
||||||
|
if (var_r26 != 0) {
|
||||||
|
var_f31 /= var_r25;
|
||||||
|
BoardModelMotionShiftSet(temp_r30, hostMot[1], 0.0f, 10.0f, 0x40000001);
|
||||||
|
BoardModelMotionSpeedSet(temp_r30, 3.0f);
|
||||||
|
}
|
||||||
|
BoardPlayerMotBlendSet(temp_r31, 0, var_r25);
|
||||||
|
while (!BoardPlayerMotBlendCheck(temp_r31)) {
|
||||||
|
if (var_r26 != 0) {
|
||||||
|
temp_f30 = var_f31 + BoardModelRotYGet(temp_r30);
|
||||||
|
BoardModelRotYSet(temp_r30, temp_f30);
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardModelRotYSet(temp_r30, 0.0f);
|
||||||
|
BoardModelMotionShiftSet(temp_r30, 1, 0.0f, 10.0f, 0x40000001);
|
||||||
|
if (!_CheckFlag(0x10016)) {
|
||||||
|
BoardCameraViewSet(1);
|
||||||
|
BoardCameraTargetPlayerSet(temp_r31);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
}
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyStar(void) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
_ClearFlag(0x10017);
|
||||||
|
for (i = 0; i < 2; i++) {
|
||||||
|
BoardModelMotionKill(BoardStarHostMdlGet(), hostMot[i]);
|
||||||
|
hostMot[i] = -1;
|
||||||
|
}
|
||||||
|
StopGiveStar();
|
||||||
|
KillGiveStarEffect();
|
||||||
|
starProc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GiveStarMain(omObjData *arg0) {
|
||||||
|
GiveStarWork *temp_r30;
|
||||||
|
|
||||||
|
temp_r30 = OM_GET_WORK_PTR(arg0, GiveStarWork);
|
||||||
|
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
|
||||||
|
KillGiveStarEffect();
|
||||||
|
BoardModelKill(temp_r30->unk0C);
|
||||||
|
giveStarObj = NULL;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (temp_r30->unk04 != 0) {
|
||||||
|
temp_r30->unk04--;
|
||||||
|
} else {
|
||||||
|
switch (temp_r30->unk01) {
|
||||||
|
case 4:
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
InitGiveStar(temp_r30, arg0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
MoveGiveStar(temp_r30, arg0);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ShrinkGiveStar(temp_r30, arg0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UpdateStarAngle(temp_r30, arg0);
|
||||||
|
}
|
||||||
|
BoardModelPosSet(temp_r30->unk0C, arg0->trans.x, arg0->trans.y, arg0->trans.z);
|
||||||
|
BoardModelRotSet(temp_r30->unk0C, 0.0f, arg0->rot.y, 0.0f);
|
||||||
|
BoardModelScaleSet(temp_r30->unk0C, arg0->scale.x, arg0->scale.y, arg0->scale.z);
|
||||||
|
if (starParman != -1) {
|
||||||
|
Hu3DParManPosSet(starParman, arg0->trans.x, -70.0f + arg0->trans.y, arg0->trans.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void UpdateStarAngle(GiveStarWork *arg0, omObjData *arg1) {
|
||||||
|
float var_f31;
|
||||||
|
|
||||||
|
if (arg0->unk00_field1 != 0) {
|
||||||
|
if (arg0->unk02 < 16.0f) {
|
||||||
|
arg0->unk02 += 2.0f;
|
||||||
|
if (arg0->unk02 > 16.0f) {
|
||||||
|
arg0->unk02 = 0x10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OSs8tof32(&arg0->unk02, &var_f31);
|
||||||
|
arg1->rot.y = BoardDAngleCalc(arg1->rot.y + var_f31);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitGiveStar(GiveStarWork *arg0, omObjData *arg1) {
|
||||||
|
Vec sp8;
|
||||||
|
|
||||||
|
BoardPlayerPosGet(arg0->unk00_field3, &sp8);
|
||||||
|
BoardModelVisibilitySet(arg0->unk0C, 1);
|
||||||
|
BoardModelMotionStart(arg0->unk0C, 0, 0x40000001);
|
||||||
|
BoardModelMotionTimeSet(arg0->unk0C, 2.0f);
|
||||||
|
arg0->unk01 = 1;
|
||||||
|
arg0->unk0A = 0;
|
||||||
|
arg1->trans.x = starCharPos.x;
|
||||||
|
arg1->trans.y = starCharPos.y;
|
||||||
|
arg1->trans.z = starCharPos.z;
|
||||||
|
arg1->rot.x = (sp8.x - starCharPos.x) / 10.0f;
|
||||||
|
arg1->rot.z = (sp8.z - starCharPos.z) / 10.0f;
|
||||||
|
arg1->rot.y = 0.0f;
|
||||||
|
arg1->scale.x = arg1->scale.y = arg1->scale.z = 1.0f;
|
||||||
|
InitGiveStarEffect();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void MoveGiveStar(GiveStarWork *arg0, omObjData *arg1) {
|
||||||
|
Vec sp8;
|
||||||
|
float temp_f31;
|
||||||
|
|
||||||
|
BoardPlayerPosGet(arg0->unk00_field3, &sp8);
|
||||||
|
if (arg0->unk00_field2 == 0) {
|
||||||
|
if (BoardModelMotionTimeGet(arg0->unk0C) >= 50.0f) {
|
||||||
|
BoardModelMotionStartEndSet(arg0->unk0C, 0x32, 0x96);
|
||||||
|
arg0->unk00_field2 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (arg0->unk0A < 10) {
|
||||||
|
OSs16tof32(&arg0->unk0A, &temp_f31);
|
||||||
|
arg1->trans.x += arg1->rot.x;
|
||||||
|
arg1->trans.z += arg1->rot.z;
|
||||||
|
arg1->trans.y += -0.08166667f * temp_f31 * temp_f31 * 0.97f + 50.0f;
|
||||||
|
arg0->unk0A++;
|
||||||
|
} else {
|
||||||
|
arg1->trans.y += -4.0f;
|
||||||
|
if (arg1->trans.y <= sp8.y + 300.0f) {
|
||||||
|
arg1->trans.y = sp8.y + 300.0f;
|
||||||
|
arg0->unk01 = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) {
|
||||||
|
Vec sp8;
|
||||||
|
float var_f30;
|
||||||
|
|
||||||
|
if (arg0->unk00_field4 == 0) {
|
||||||
|
HuAudFXPlay(0x339);
|
||||||
|
arg0->unk00_field4 = 1;
|
||||||
|
}
|
||||||
|
BoardPlayerPosGet(arg0->unk00_field3, &sp8);
|
||||||
|
arg1->trans.y += -4.0f;
|
||||||
|
if (arg1->trans.y > sp8.y + 80.0f) {
|
||||||
|
if (arg0->unk08 < 90) {
|
||||||
|
if (BoardPlayerSizeGet(arg0->unk00_field3) != 1) {
|
||||||
|
arg0->unk08 += 2;
|
||||||
|
} else {
|
||||||
|
arg0->unk08 += 1.4f;
|
||||||
|
}
|
||||||
|
if (arg0->unk08 > 90) {
|
||||||
|
arg0->unk08 = 90;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OSs16tof32(&arg0->unk08, &var_f30);
|
||||||
|
arg1->scale.x = sin((var_f30 + 90.0f) * M_PI / 180.0);
|
||||||
|
if (arg1->scale.x <= 0.0f) {
|
||||||
|
arg1->scale.x = 0.001f;
|
||||||
|
}
|
||||||
|
arg1->scale.y = arg1->scale.x;
|
||||||
|
arg1->scale.z = arg1->scale.x;
|
||||||
|
} else {
|
||||||
|
omVibrate(arg0->unk00_field3, 0xC, 0xC, 0);
|
||||||
|
arg0->unk00_field0 = 1;
|
||||||
|
arg0->unk01 = 4;
|
||||||
|
arg1->scale.x = arg1->scale.y = arg1->scale.z = 0.001f;
|
||||||
|
KillGiveStarEffect();
|
||||||
|
BoardModelVisibilitySet(arg0->unk0C, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopGiveStar(void) {
|
||||||
|
GiveStarWork *temp_r31;
|
||||||
|
|
||||||
|
if (giveStarObj) {
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
|
||||||
|
temp_r31->unk00_field0 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitGiveStarEffect(void) {
|
||||||
|
s16 temp_r3;
|
||||||
|
void *var_r30;
|
||||||
|
|
||||||
|
var_r30 = HuDataSelHeapReadNum(0x120001, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
||||||
|
starEffAnim = HuSprAnimRead(var_r30);
|
||||||
|
starParman = Hu3DParManCreate(starEffAnim, 0x64, &starEffParam);
|
||||||
|
Hu3DParManAttrSet(starParman, 0x64);
|
||||||
|
Hu3DParManRotSet(starParman, 90.0f, 0.0f, 0.0f);
|
||||||
|
temp_r3 = Hu3DParManModelIDGet(starParman);
|
||||||
|
Hu3DParticleBlendModeSet(temp_r3, 1);
|
||||||
|
Hu3DModelLayerSet(temp_r3, 2);
|
||||||
|
HuDataDirClose(0x120000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void KillGiveStarEffect(void) {
|
||||||
|
if (starParman != -1) {
|
||||||
|
Hu3DParManKill(starParman);
|
||||||
|
starParman = -1;
|
||||||
|
starEffAnim = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void StarInlineFunc00(void) {
|
||||||
|
GiveStarWork *temp_r28 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
|
||||||
|
|
||||||
|
temp_r28->unk01 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void StarInlineFunc01(void) {
|
||||||
|
GiveStarWork *temp_r27 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
|
||||||
|
|
||||||
|
while (temp_r27->unk01 != 4) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void StarInlineFunc02(void) {
|
||||||
|
GiveStarWork *temp_r29 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
|
||||||
|
|
||||||
|
temp_r29->unk00_field1 = 1;
|
||||||
|
temp_r29->unk04 = 0x2D;
|
||||||
|
temp_r29->unk08 = 0;
|
||||||
|
temp_r29->unk01 = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardStarGive(s32 arg0, Vec *arg1) {
|
||||||
|
Vec sp8;
|
||||||
|
s32 temp_r25;
|
||||||
|
GiveStarWork *temp_r31;
|
||||||
|
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
starCharPos = *arg1;
|
||||||
|
giveStarObj = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, GiveStarMain);
|
||||||
|
BoardCameraRotGet(&sp8);
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(giveStarObj, GiveStarWork);
|
||||||
|
temp_r31->unk00_field0 = 0;
|
||||||
|
temp_r31->unk00_field1 = 0;
|
||||||
|
temp_r31->unk00_field2 = 0;
|
||||||
|
temp_r31->unk00_field4 = 0;
|
||||||
|
temp_r31->unk01 = 4;
|
||||||
|
temp_r31->unk00_field3 = arg0;
|
||||||
|
temp_r31->unk06 = 0;
|
||||||
|
temp_r31->unk02 = 0;
|
||||||
|
temp_r31->unk08 = 0;
|
||||||
|
temp_r31->unk0C = BoardModelCreate(0x7000B, NULL, 0);
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk0C, 0);
|
||||||
|
BoardModelPassSet(temp_r31->unk0C, 0);
|
||||||
|
BoardModelMotionSpeedSet(temp_r31->unk0C, 0.0f);
|
||||||
|
BoardModelLayerSet(temp_r31->unk0C, 2);
|
||||||
|
StarInlineFunc00();
|
||||||
|
HuAudFXPlay(0x338);
|
||||||
|
HuAudFXPlay(0x353);
|
||||||
|
StarInlineFunc01();
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
BoardTutorialHookExec(0x15, 0);
|
||||||
|
}
|
||||||
|
BoardPlayerMotBlendSet(arg0, 0, 0xF);
|
||||||
|
while (!BoardPlayerMotBlendCheck(arg0)) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
StarInlineFunc02();
|
||||||
|
StarInlineFunc01();
|
||||||
|
BoardPlayerVoiceEnableSet(arg0, 7, 0);
|
||||||
|
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0);
|
||||||
|
HuAudFXPlay(boardStarSndTbl[GWPlayer[arg0].character]);
|
||||||
|
BoardPlayerStarsAdd(arg0, 1);
|
||||||
|
HuAudFXPlay(8);
|
||||||
|
HuPrcSleep(0xA);
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
BoardPlayerMotionEndWait(arg0);
|
||||||
|
} else {
|
||||||
|
temp_r25 = HuAudSStreamPlay(6);
|
||||||
|
BoardPlayerMotionEndWait(arg0);
|
||||||
|
while (msmStreamGetStatus(temp_r25) != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BoardPlayerVoiceEnableSet(arg0, 7, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardStarShowNext(s32 arg0) {
|
||||||
|
Mtx spBC;
|
||||||
|
Mtx sp8C;
|
||||||
|
Mtx sp5C;
|
||||||
|
Vec sp50;
|
||||||
|
Vec sp44;
|
||||||
|
Vec sp38;
|
||||||
|
Vec sp2C;
|
||||||
|
Vec sp20;
|
||||||
|
float temp_f31;
|
||||||
|
WipeState *var_r26;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 var_r30;
|
||||||
|
s16 var_r27;
|
||||||
|
s16 var_r29;
|
||||||
|
|
||||||
|
var_r28 = 0;
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_SetFlag(0x1001C);
|
||||||
|
var_r26 = &wipeData;
|
||||||
|
if (var_r26->mode == 0) {
|
||||||
|
WipeColorSet(0, 0, 0);
|
||||||
|
WipeCreate(2, 0, 0x15);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
HuPrcSleep(0x12);
|
||||||
|
}
|
||||||
|
BoardStatusItemSet(0);
|
||||||
|
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarGiveHook) {
|
||||||
|
boardStarGiveHook();
|
||||||
|
}
|
||||||
|
BoardSpaceStarMove();
|
||||||
|
if (arg0 == -1) {
|
||||||
|
var_r28 = 1;
|
||||||
|
arg0 = 0;
|
||||||
|
for (var_r29 = 0; var_r29 < 4; var_r29++) {
|
||||||
|
BoardPlayerCornerPosSet(var_r29);
|
||||||
|
}
|
||||||
|
BoardSpacePosGet(0, GWPlayer[arg0].space_curr, &sp38);
|
||||||
|
BoardPlayerPosSetV(arg0, &sp38);
|
||||||
|
}
|
||||||
|
if (!_CheckFlag(0x10017)) {
|
||||||
|
BoardAudSeqFadeOut(0, 1000);
|
||||||
|
}
|
||||||
|
showNextObj = omAddObjEx(boardObjMan, 0x7E03, 0, 0, -1, ShowNextUpdate);
|
||||||
|
BoardRotateDiceNumbers(arg0);
|
||||||
|
BoardModelMotionStart(BoardStarHostMdlGet(), 1, 0x40000001);
|
||||||
|
BoardModelPosGet(BoardStarHostMdlGet(), &sp50);
|
||||||
|
showNextObj->scale.x = sp50.x;
|
||||||
|
showNextObj->scale.y = sp50.y;
|
||||||
|
showNextObj->scale.z = sp50.z;
|
||||||
|
BoardPlayerPosGet(arg0, &sp38);
|
||||||
|
sp50.y = sp38.y;
|
||||||
|
PSVECSubtract(&sp50, &sp38, &sp20);
|
||||||
|
sp20.y = 0.0f;
|
||||||
|
temp_f31 = PSVECMag(&sp20);
|
||||||
|
if (temp_f31 > 3000.0f) {
|
||||||
|
var_r27 = 0xF0;
|
||||||
|
} else if (temp_f31 > 1500.0f) {
|
||||||
|
var_r27 = 0x78;
|
||||||
|
} else {
|
||||||
|
var_r27 = 0x78;
|
||||||
|
}
|
||||||
|
BoardViewMoveStart(&sp38, &sp50, var_r27);
|
||||||
|
showNextObj->trans.x = 68.0f;
|
||||||
|
showNextObj->trans.y = 430.0f;
|
||||||
|
showNextObj->trans.z = 100.0f;
|
||||||
|
sp44.x = showNextObj->trans.x;
|
||||||
|
sp44.y = showNextObj->trans.y;
|
||||||
|
sp44.z = showNextObj->trans.z;
|
||||||
|
Hu3D2Dto3D(&sp44, 1, &sp44);
|
||||||
|
BoardModelPosSetV(BoardStarHostMdlGet(), &sp44);
|
||||||
|
BoardCameraRotGet(&sp2C);
|
||||||
|
PSMTXRotRad(sp5C, 'y', 0.17453292f);
|
||||||
|
PSMTXRotRad(sp8C, 'x', 0.017453292f * sp2C.x);
|
||||||
|
PSMTXConcat(sp8C, sp5C, spBC);
|
||||||
|
BoardModelMtxSet(BoardStarHostMdlGet(), &spBC);
|
||||||
|
BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f);
|
||||||
|
BoardModelScaleSet(BoardStarHostMdlGet(), 0.09f, 0.09f, 0.09f);
|
||||||
|
BoardMusStart(1, 7, 0x7F, 0);
|
||||||
|
BoardCameraMoveSet(0);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
BoardCameraMoveSet(1);
|
||||||
|
HuPrcSleep(1);
|
||||||
|
WipeCreate(1, 0, 0x15);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
if (var_r28 == 0) {
|
||||||
|
var_r30 = lbl_8011E040[GWBoardGet()] + 6;
|
||||||
|
} else {
|
||||||
|
var_r30 = lbl_8011E064[GWBoardGet()][0];
|
||||||
|
}
|
||||||
|
BoardWinCreate(3, var_r30, -1);
|
||||||
|
BoardWinPause();
|
||||||
|
BoardViewMoveEnd();
|
||||||
|
while (!BoardViewMoveCheck()) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
HuPrcSleep(0x1E);
|
||||||
|
BoardWinKill();
|
||||||
|
HuPrcSleep(3);
|
||||||
|
if (var_r28 == 0) {
|
||||||
|
var_r30 = lbl_8011E040[GWBoardGet()] + 7;
|
||||||
|
} else {
|
||||||
|
var_r30 = lbl_8011E064[GWBoardGet()][1];
|
||||||
|
}
|
||||||
|
BoardWinCreate(3, var_r30, -1);
|
||||||
|
BoardWinWait();
|
||||||
|
BoardWinKill();
|
||||||
|
if (GWBoardGet() == 5 && BoardRollTypeGet() != 9 && boardStarShowNextHook) {
|
||||||
|
boardStarShowNextHook();
|
||||||
|
}
|
||||||
|
BoardAudSeqFadeOut(1, 0x3E8);
|
||||||
|
WipeColorSet(0, 0, 0);
|
||||||
|
WipeCreate(2, 0, 0x15);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardViewWait();
|
||||||
|
PSMTXIdentity(spBC);
|
||||||
|
BoardModelMtxSet(BoardStarHostMdlGet(), &spBC);
|
||||||
|
HideNextHost(1);
|
||||||
|
while (showNextObj) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardCameraMoveSet(0);
|
||||||
|
BoardCameraTargetPlayerSet(arg0);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
BoardCameraMoveSet(1);
|
||||||
|
BoardStatusItemSet(1);
|
||||||
|
WipeCreate(1, 0, 0x15);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
if (!_CheckFlag(0x10017)) {
|
||||||
|
BoardMusStartBoard();
|
||||||
|
}
|
||||||
|
_ClearFlag(0x1001C);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ShowNextUpdate(omObjData *arg0) {
|
||||||
|
ShowNextWork *temp_r30 = OM_GET_WORK_PTR(arg0, ShowNextWork);
|
||||||
|
Vec sp8;
|
||||||
|
|
||||||
|
if (temp_r30->unk00_field0 != 0 || BoardIsKill()) {
|
||||||
|
showNextObj = NULL;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (temp_r30->unk01) {
|
||||||
|
case 0:
|
||||||
|
sp8.x = arg0->trans.x;
|
||||||
|
sp8.y = arg0->trans.y;
|
||||||
|
sp8.z = arg0->trans.z;
|
||||||
|
Hu3D2Dto3D(&sp8, 1, &sp8);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sp8.x = arg0->scale.x;
|
||||||
|
sp8.y = arg0->scale.y;
|
||||||
|
sp8.z = arg0->scale.z;
|
||||||
|
BoardModelLayerSet(BoardStarHostMdlGet(), 0);
|
||||||
|
BoardModelRotSet(BoardStarHostMdlGet(), 0.0f, 0.0f, 0.0f);
|
||||||
|
BoardModelScaleSet(BoardStarHostMdlGet(), 1.0f, 1.0f, 1.0f);
|
||||||
|
temp_r30->unk00_field0 = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
BoardModelPosSetV(BoardStarHostMdlGet(), &sp8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HideNextHost(s32 arg0) {
|
||||||
|
ShowNextWork *temp_r31 = OM_GET_WORK_PTR(showNextObj, ShowNextWork);
|
||||||
|
|
||||||
|
temp_r31->unk01 = arg0;
|
||||||
|
}
|
||||||
138
src/game/board/tutorial.c
Executable file
138
src/game/board/tutorial.c
Executable file
|
|
@ -0,0 +1,138 @@
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
|
#include "game/flag.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/process.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
|
||||||
|
s32 boardTutorialData[4]; // maybe a single s32 + padding?
|
||||||
|
static void (*tutorialHook)(s16, s32);
|
||||||
|
s8 boardTutorialDirInputX;
|
||||||
|
s8 boardTutorialDirInputY;
|
||||||
|
s16 boardTutorialDirInputTime;
|
||||||
|
s32 boardTutorialBlockPos;
|
||||||
|
s8 boardTutorialBlockItem;
|
||||||
|
s8 boardTutorialBlockF;
|
||||||
|
s8 boardTutorialUseItem;
|
||||||
|
static s16 hostMdl;
|
||||||
|
s8 boardTutorialF;
|
||||||
|
static Process *tutorialProcess;
|
||||||
|
static void *playerCfgCopy;
|
||||||
|
static void *playerCopy;
|
||||||
|
static void *systemCopy;
|
||||||
|
static void *gameStatCopy;
|
||||||
|
|
||||||
|
static void TutorialProcFunc(void) {
|
||||||
|
while (1) {
|
||||||
|
if (_CheckFlag(0x10010)) {
|
||||||
|
BoardTutorialHookExec(0x1E, 0);
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialInit(void) {
|
||||||
|
boardTutorialDirInputTime = -1;
|
||||||
|
boardTutorialBlockF = 0;
|
||||||
|
boardTutorialUseItem = -1;
|
||||||
|
tutorialHook = NULL;
|
||||||
|
tutorialProcess = NULL;
|
||||||
|
boardTutorialF = 0;
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
tutorialProcess = HuPrcChildCreate(TutorialProcFunc, 0x2002, 0x2000, 0, boardMainProc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialKill(void) {
|
||||||
|
if (_CheckFlag(0x1000B)) {
|
||||||
|
if (tutorialProcess) {
|
||||||
|
HuPrcKill(tutorialProcess);
|
||||||
|
}
|
||||||
|
boardTutorialF = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialHookSet(void *arg0) {
|
||||||
|
tutorialHook = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialHookExec(s16 arg0, s32 arg1) {
|
||||||
|
if (tutorialHook) {
|
||||||
|
tutorialHook(arg0, arg1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialPlayerInit(void) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
GWPlayer[i].com = 1;
|
||||||
|
GWPlayerCfg[i].iscom = 1;
|
||||||
|
}
|
||||||
|
GWSystem.board = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialWorkSave(void) {
|
||||||
|
OSReport("-O-O-O-O-O-O-O Tutorial Save Work\n");
|
||||||
|
if (gameStatCopy) {
|
||||||
|
HuMemDirectFree(gameStatCopy);
|
||||||
|
}
|
||||||
|
if (systemCopy) {
|
||||||
|
HuMemDirectFree(systemCopy);
|
||||||
|
}
|
||||||
|
if (playerCopy) {
|
||||||
|
HuMemDirectFree(playerCopy);
|
||||||
|
}
|
||||||
|
if (playerCfgCopy) {
|
||||||
|
HuMemDirectFree(playerCfgCopy);
|
||||||
|
}
|
||||||
|
gameStatCopy = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(GWGameStat));
|
||||||
|
systemCopy = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(GWSystem));
|
||||||
|
playerCopy = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(GWPlayer));
|
||||||
|
playerCfgCopy = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(GWPlayerCfg));
|
||||||
|
memcpy(gameStatCopy, &GWGameStat, sizeof(GWGameStat));
|
||||||
|
memcpy(systemCopy, &GWSystem, sizeof(GWSystem));
|
||||||
|
memcpy(playerCopy, GWPlayer, sizeof(GWPlayer));
|
||||||
|
memcpy(playerCfgCopy, GWPlayerCfg, sizeof(GWPlayerCfg));
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialWorkRestore(void) {
|
||||||
|
OSReport("-O-O-O-O-O-O-O Tutorial Load Work\n");
|
||||||
|
memcpy(&GWGameStat, gameStatCopy, sizeof(GWGameStat));
|
||||||
|
memcpy(&GWSystem, systemCopy, sizeof(GWSystem));
|
||||||
|
memcpy(GWPlayer, playerCopy, sizeof(GWPlayer));
|
||||||
|
memcpy(GWPlayerCfg, playerCfgCopy, sizeof(GWPlayerCfg));
|
||||||
|
HuMemDirectFree(gameStatCopy);
|
||||||
|
HuMemDirectFree(systemCopy);
|
||||||
|
HuMemDirectFree(playerCopy);
|
||||||
|
HuMemDirectFree(playerCfgCopy);
|
||||||
|
gameStatCopy = NULL;
|
||||||
|
systemCopy = NULL;
|
||||||
|
playerCopy = NULL;
|
||||||
|
playerCfgCopy = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialDirInputSet(s8 arg0, s8 arg1, s16 arg2) {
|
||||||
|
boardTutorialDirInputX = arg0;
|
||||||
|
boardTutorialDirInputY = arg1;
|
||||||
|
boardTutorialDirInputTime = arg2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialBlockSetPos(s32 arg0, s8 arg1) {
|
||||||
|
boardTutorialBlockF = 1;
|
||||||
|
boardTutorialBlockPos = arg0;
|
||||||
|
boardTutorialBlockItem = arg1;
|
||||||
|
BoardSpaceBlockPosSet();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialItemSet(s8 arg0) {
|
||||||
|
boardTutorialUseItem = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialHostSet(s16 arg0) {
|
||||||
|
hostMdl = arg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardTutorialHostHide(s8 arg0) {
|
||||||
|
BoardModelVisibilitySet(hostMdl, arg0);
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "game/board/ui.h"
|
#include "game/board/ui.h"
|
||||||
#include "game/audio.h"
|
#include "game/audio.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/gamework.h"
|
#include "game/gamework.h"
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
|
|
@ -9,13 +10,17 @@
|
||||||
#include "game/pad.h"
|
#include "game/pad.h"
|
||||||
#include "game/process.h"
|
#include "game/process.h"
|
||||||
#include "game/window.h"
|
#include "game/window.h"
|
||||||
|
#include "game/board/com.h"
|
||||||
|
#include "game/board/item.h"
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
|
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
#define ABS(x) ((x < 0) ? -x : x)
|
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ struct {
|
/* 0x00 */ struct {
|
||||||
|
|
@ -91,20 +96,8 @@ typedef struct {
|
||||||
} UnkUiWork04;
|
} UnkUiWork04;
|
||||||
|
|
||||||
void BoardPlayerSparkSet(s32);
|
void BoardPlayerSparkSet(s32);
|
||||||
s32 BoardItemDoneCheck(void);
|
|
||||||
void BoardItemStart(s32, s32);
|
|
||||||
void BoardTutorialHookExec(s16, s32);
|
|
||||||
s16 BoardBowserSuitModelGet(void);
|
|
||||||
void BoardBowserSuitMotionCreate(void);
|
void BoardBowserSuitMotionCreate(void);
|
||||||
s16 BoardBowserSuitPlayerModelGet(void);
|
s16 BoardBowserSuitPlayerModelGet(void);
|
||||||
void CharModelLayerSetAll(s32);
|
|
||||||
void BoardItemBagItemSet(void*);
|
|
||||||
float BoardModelMotionTimeGet(s16);
|
|
||||||
void BoardModelMotionStartEndSet(s16, s16, s16);
|
|
||||||
void BoardModelMotionTimeSet(s16, float);
|
|
||||||
void BoardModelPosGet(s16, Vec*);
|
|
||||||
s32 BoardComTutorialItemGet(s32);
|
|
||||||
void BoardTutorialHostHide(s32);
|
|
||||||
|
|
||||||
static void KillAllBoardStatus(void);
|
static void KillAllBoardStatus(void);
|
||||||
static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1);
|
static void CreateBoardStatusSprite(s32 arg0, UnkUiStatusStruct *arg1);
|
||||||
|
|
@ -1201,7 +1194,7 @@ void BoardMakeRandomItem(void) {
|
||||||
itemRandTbl[i] = temp_r3;
|
itemRandTbl[i] = temp_r3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BoardItemBagItemSet(&itemRandTbl);
|
BoardItemBagItemSet(itemRandTbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) {
|
static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) {
|
||||||
|
|
|
||||||
593
src/game/board/view.c
Executable file
593
src/game/board/view.c
Executable file
|
|
@ -0,0 +1,593 @@
|
||||||
|
#include "game/board/view.h"
|
||||||
|
#include "game/audio.h"
|
||||||
|
#include "game/gamework.h"
|
||||||
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/hsfex.h"
|
||||||
|
#include "game/object.h"
|
||||||
|
#include "game/pad.h"
|
||||||
|
#include "game/wipe.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/space.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
struct {
|
||||||
|
u8 unk00_field0 : 1;
|
||||||
|
};
|
||||||
|
u8 unk01;
|
||||||
|
s16 unk02;
|
||||||
|
s16 unk04;
|
||||||
|
} OverheadWork;
|
||||||
|
|
||||||
|
static void ExecMapView(void);
|
||||||
|
static void ExecStarView(void);
|
||||||
|
static void ExecOverheadView(void);
|
||||||
|
static void DestroyView(void);
|
||||||
|
static void SetTargetView(void);
|
||||||
|
static void DestroyFocus(void);
|
||||||
|
static void CreateButtonWin(void);
|
||||||
|
static void DestroyButtonWin(void);
|
||||||
|
static void InitOverheadView(void);
|
||||||
|
static void DestroyOverheadView(void);
|
||||||
|
static void UpdateOverheadView(omObjData *arg0);
|
||||||
|
static void WaitOverheadView(void);
|
||||||
|
|
||||||
|
static Vec focusPos;
|
||||||
|
static Vec focusPosTarget;
|
||||||
|
|
||||||
|
static s8 viewControls;
|
||||||
|
static s8 viewPlayer;
|
||||||
|
static s8 viewMoveF;
|
||||||
|
static s8 focusDestroyF;
|
||||||
|
static u16 focusTimer;
|
||||||
|
static omObjData *overheadObj;
|
||||||
|
static s8 pauseDisableF;
|
||||||
|
static Process *viewProc;
|
||||||
|
|
||||||
|
static s16 buttonWin = -1;
|
||||||
|
static s16 focusMdl = -1;
|
||||||
|
|
||||||
|
static float overhead2DPos[][2] = {
|
||||||
|
{ 48.0f, 72.0f },
|
||||||
|
{ 528.0f, 72.0f },
|
||||||
|
{ 48.0f, 408.0f },
|
||||||
|
{ 528.0f, 408.0f },
|
||||||
|
{ 288.0f, 72.0f }
|
||||||
|
};
|
||||||
|
|
||||||
|
static float mapViewMinZ[] = {
|
||||||
|
-2000.0f, -1500.0f, -2200.0f,
|
||||||
|
-1800.0f, -2100.0f, -3000.0f,
|
||||||
|
-3000.0f, -1800.0f, -1800.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
static float mapViewMaxZ[] = {
|
||||||
|
2300.0f, 2500.0f, 2600.0f,
|
||||||
|
2000.0f, 2300.0f, 2500.0f,
|
||||||
|
2500.0f, 2000.0f, 2000.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
static float mapViewMinX[] = {
|
||||||
|
-3000.0f, -3000.0f, -3000.0f,
|
||||||
|
-3000.0f, -3000.0f, -3000.0f,
|
||||||
|
-3000.0f, -2000.0f, -2000.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
static float mapViewMaxX[] = {
|
||||||
|
3000.0f, 3000.0f, 3000.0f,
|
||||||
|
3000.0f, 3000.0f, 3000.0f,
|
||||||
|
3000.0f, 1600.0f, 2000.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
static float overheadCamZoom[] = {
|
||||||
|
14370.0f, 14500.0f, 15000.0f,
|
||||||
|
15000.0f, 13000.0f, 15000.0f,
|
||||||
|
100.0f, 10000.0f, 10000.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
static float overheadCamPosZ[] = {
|
||||||
|
0.0f, 0.0f, 0.0f,
|
||||||
|
0.0f, 0.0f, 0.0f,
|
||||||
|
0.0f, -160.0f, 0.0f
|
||||||
|
};
|
||||||
|
|
||||||
|
void BoardViewOverheadExec(s32 arg0) {
|
||||||
|
if (BoardPauseDisableGet() == 0) {
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
pauseDisableF = 1;
|
||||||
|
} else {
|
||||||
|
pauseDisableF = 0;
|
||||||
|
}
|
||||||
|
_SetFlag(0x1001C);
|
||||||
|
WipeColorSet(0xFF, 0xFF, 0xFF);
|
||||||
|
WipeCreate(2, 1, 1);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
viewProc = HuPrcChildCreate(ExecOverheadView, 0x200A, 0x3800, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(viewProc, DestroyView);
|
||||||
|
viewControls = 2;
|
||||||
|
viewPlayer = arg0;
|
||||||
|
focusTimer = 1;
|
||||||
|
viewMoveF = 0;
|
||||||
|
BoardPlayerPosGet(arg0, &focusPos);
|
||||||
|
BoardStatusItemSet(0);
|
||||||
|
while (viewProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
BoardStatusItemSet(1);
|
||||||
|
HuPrcSleep(3);
|
||||||
|
WaitOverheadView();
|
||||||
|
_ClearFlag(0x1001C);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewFocusGetPos(Vec *arg0) {
|
||||||
|
if (arg0) {
|
||||||
|
BoardModelPosGet(focusMdl, arg0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void BoardViewInlineFunc00(Vec *arg0, Vec *arg1, u16 arg2) {
|
||||||
|
if (arg2 == 0) {
|
||||||
|
arg2 = 1;
|
||||||
|
}
|
||||||
|
viewControls = 1;
|
||||||
|
viewPlayer = -1;
|
||||||
|
focusTimer = arg2;
|
||||||
|
viewMoveF = 1;
|
||||||
|
if (arg0) {
|
||||||
|
focusPos = *arg0;
|
||||||
|
}
|
||||||
|
if (arg1) {
|
||||||
|
focusPosTarget = *arg1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewFocusSet(Vec *arg0, u16 arg1) {
|
||||||
|
u16 var_r31;
|
||||||
|
|
||||||
|
if (BoardPauseDisableGet() == 0) {
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
pauseDisableF = 1;
|
||||||
|
} else {
|
||||||
|
pauseDisableF = 0;
|
||||||
|
}
|
||||||
|
focusDestroyF = 1;
|
||||||
|
BoardViewInlineFunc00(NULL, arg0, arg1);
|
||||||
|
HuPrcSleep(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewMoveStart(Vec *arg0, Vec *arg1, u16 arg2) {
|
||||||
|
u16 var_r31;
|
||||||
|
|
||||||
|
if (BoardPauseDisableGet() == 0) {
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
pauseDisableF = 1;
|
||||||
|
} else {
|
||||||
|
pauseDisableF = 0;
|
||||||
|
}
|
||||||
|
viewProc = HuPrcChildCreate(ExecStarView, 0x200A, 0x3800, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(viewProc, DestroyView);
|
||||||
|
focusDestroyF = 0;
|
||||||
|
BoardViewInlineFunc00(arg0, arg1, arg2);
|
||||||
|
HuPrcSleep(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL BoardViewMoveCheck(void) {
|
||||||
|
return (viewMoveF != 0) ? TRUE : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewMoveEnd(void) {
|
||||||
|
viewMoveF = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewWait(void) {
|
||||||
|
viewMoveF = 0;
|
||||||
|
while (viewProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoardViewMapExec(s32 arg0) {
|
||||||
|
if (BoardPauseDisableGet() == 0) {
|
||||||
|
BoardPauseDisableSet(1);
|
||||||
|
pauseDisableF = 1;
|
||||||
|
} else {
|
||||||
|
pauseDisableF = 0;
|
||||||
|
}
|
||||||
|
viewProc = HuPrcChildCreate(ExecMapView, 0x200A, 0x3800, 0, boardMainProc);
|
||||||
|
HuPrcDestructorSet2(viewProc, DestroyView);
|
||||||
|
viewControls = 0;
|
||||||
|
viewPlayer = arg0;
|
||||||
|
focusTimer = 1;
|
||||||
|
viewMoveF = 0;
|
||||||
|
BoardPlayerPosGet(arg0, &focusPos);
|
||||||
|
while (viewProc != NULL) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecMapView(void) {
|
||||||
|
Vec spC;
|
||||||
|
float var_f29;
|
||||||
|
float temp_f28;
|
||||||
|
float temp_f27;
|
||||||
|
float temp_f26;
|
||||||
|
float temp_f25;
|
||||||
|
float temp_f24;
|
||||||
|
u32 var_r28;
|
||||||
|
s8 sp9;
|
||||||
|
s8 sp8;
|
||||||
|
|
||||||
|
SetTargetView();
|
||||||
|
CreateButtonWin();
|
||||||
|
temp_f25 = mapViewMaxZ[GWBoardGet()];
|
||||||
|
temp_f24 = mapViewMinZ[GWBoardGet()];
|
||||||
|
temp_f27 = mapViewMaxX[GWBoardGet()];
|
||||||
|
temp_f26 = mapViewMinX[GWBoardGet()];
|
||||||
|
while (1) {
|
||||||
|
var_r28 = HuPadBtnDown[GWPlayer[viewPlayer].port];
|
||||||
|
if (var_r28 == 0x200) {
|
||||||
|
HuAudFXPlay(3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (HuPadBtn[GWPlayer[viewPlayer].port] & 0x100) {
|
||||||
|
var_f29 = 40.0f;
|
||||||
|
} else {
|
||||||
|
var_f29 = 20.0f;
|
||||||
|
}
|
||||||
|
spC.x = spC.y = spC.z = 0.0f;
|
||||||
|
sp9 = HuPadStkX[GWPlayer[viewPlayer].port];
|
||||||
|
sp8 = HuPadStkY[GWPlayer[viewPlayer].port];
|
||||||
|
if (sp9 != 0 || sp8 != 0) {
|
||||||
|
OSs8tof32(&sp9, &spC.x);
|
||||||
|
OSs8tof32(&sp8, &spC.z);
|
||||||
|
temp_f28 = 180.0 * (atan2(spC.x, -spC.z) / M_PI);
|
||||||
|
spC.x = var_f29 * sin(temp_f28 * M_PI / 180.0);
|
||||||
|
spC.z = var_f29 * cos(temp_f28 * M_PI / 180.0);
|
||||||
|
}
|
||||||
|
PSVECAdd(&spC, &focusPos, &focusPos);
|
||||||
|
if (focusPos.x < temp_f26) {
|
||||||
|
focusPos.x = temp_f26;
|
||||||
|
}
|
||||||
|
if (focusPos.x > temp_f27) {
|
||||||
|
focusPos.x = temp_f27;
|
||||||
|
}
|
||||||
|
if (focusPos.z < temp_f24) {
|
||||||
|
focusPos.z = temp_f24;
|
||||||
|
}
|
||||||
|
if (focusPos.z > temp_f25) {
|
||||||
|
focusPos.z = temp_f25;
|
||||||
|
}
|
||||||
|
BoardModelPosSetV(focusMdl, &focusPos);
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
DestroyFocus();
|
||||||
|
DestroyButtonWin();
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecStarView(void) {
|
||||||
|
Vec sp8;
|
||||||
|
float temp_f30;
|
||||||
|
|
||||||
|
SetTargetView();
|
||||||
|
do {
|
||||||
|
OSu16tof32(&focusTimer, &temp_f30);
|
||||||
|
PSVECSubtract(&focusPosTarget, &focusPos, &sp8);
|
||||||
|
sp8.x /= temp_f30;
|
||||||
|
sp8.y /= temp_f30;
|
||||||
|
sp8.z /= temp_f30;
|
||||||
|
viewMoveF = 1;
|
||||||
|
while (viewMoveF != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
focusDestroyF = 0;
|
||||||
|
while (focusTimer != 0) {
|
||||||
|
PSVECAdd(&sp8, &focusPos, &focusPos);
|
||||||
|
BoardModelPosSetV(focusMdl, &focusPos);
|
||||||
|
HuPrcVSleep();
|
||||||
|
focusTimer--;
|
||||||
|
}
|
||||||
|
BoardModelPosSetV(focusMdl, &focusPosTarget);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
viewMoveF = 1;
|
||||||
|
while (viewMoveF != 0 && focusDestroyF == 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
} while (focusDestroyF != 0);
|
||||||
|
DestroyFocus();
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ExecOverheadView(void) {
|
||||||
|
u32 var_r31;
|
||||||
|
|
||||||
|
if ((GWBoardGet() == 2 || GWBoardGet() == 5) && boardLightResetHook) {
|
||||||
|
boardLightResetHook();
|
||||||
|
}
|
||||||
|
InitOverheadView();
|
||||||
|
CreateButtonWin();
|
||||||
|
HuPrcVSleep();
|
||||||
|
SetTargetView();
|
||||||
|
WipeColorSet(0xFF, 0xFF, 0xFF);
|
||||||
|
WipeCreate(1, 1, 0xA);
|
||||||
|
while (WipeStatGet() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
while (1) {
|
||||||
|
var_r31 = HuPadBtnDown[GWPlayer[viewPlayer].port];
|
||||||
|
if (var_r31 == 0x200) {
|
||||||
|
HuAudFXPlay(3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
if ((GWBoardGet() == 2 || GWBoardGet() == 5) && boardLightSetHook) {
|
||||||
|
boardLightSetHook();
|
||||||
|
}
|
||||||
|
DestroyButtonWin();
|
||||||
|
DestroyFocus();
|
||||||
|
HuPrcEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyView(void) {
|
||||||
|
if (focusMdl != -1) {
|
||||||
|
BoardModelKill(focusMdl);
|
||||||
|
focusMdl = -1;
|
||||||
|
}
|
||||||
|
DestroyOverheadView();
|
||||||
|
DestroyButtonWin();
|
||||||
|
viewMoveF = 0;
|
||||||
|
focusTimer = 0;
|
||||||
|
viewPlayer = -1;
|
||||||
|
if (pauseDisableF != 0) {
|
||||||
|
BoardPauseDisableSet(0);
|
||||||
|
pauseDisableF = 0;
|
||||||
|
}
|
||||||
|
viewProc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetTargetView(void) {
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
|
||||||
|
BoardCameraBackup();
|
||||||
|
focusMdl = BoardModelCreate(0x7000A, 0, 0);
|
||||||
|
BoardModelVisibilitySet(focusMdl, 0);
|
||||||
|
BoardModelPosSetV(focusMdl, &focusPos);
|
||||||
|
BoardCameraNearFarSet(10.0f, 30000.0f);
|
||||||
|
if (viewControls != 2) {
|
||||||
|
sp8.x = -45.0f;
|
||||||
|
sp8.y = 0.0f;
|
||||||
|
sp8.z = 0.0f;
|
||||||
|
BoardCameraMotionStartEx(focusMdl, &sp8, NULL, 3000.0f, -1.0f, 0x15);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
} else {
|
||||||
|
BoardModelPosSet(focusMdl, 0.0f, 0.0f, 0.0f);
|
||||||
|
sp14.x = 0.0f;
|
||||||
|
sp14.y = 0.0f;
|
||||||
|
sp14.z = 0.0f;
|
||||||
|
sp8.x = -78.0f;
|
||||||
|
sp8.y = 0.0f;
|
||||||
|
sp8.z = 0.0f;
|
||||||
|
sp14.z = overheadCamPosZ[GWBoardGet()];
|
||||||
|
BoardCameraMoveSet(0);
|
||||||
|
BoardCameraMotionStartEx(focusMdl, &sp8, &sp14, overheadCamZoom[GWBoardGet()], -1.0f, 1);
|
||||||
|
BoardCameraMotionWait();
|
||||||
|
BoardCameraMoveSet(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyFocus(void) {
|
||||||
|
if (focusMdl != -1) {
|
||||||
|
BoardModelKill(focusMdl);
|
||||||
|
focusMdl = -1;
|
||||||
|
}
|
||||||
|
BoardCameraMoveSet(0);
|
||||||
|
BoardCameraRestore();
|
||||||
|
BoardCameraMoveSet(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CreateButtonWin(void) {
|
||||||
|
float sp8[2];
|
||||||
|
float var_f31;
|
||||||
|
float var_f30;
|
||||||
|
s32 var_r31;
|
||||||
|
|
||||||
|
if (viewControls != 2) {
|
||||||
|
var_r31 = 0x90005;
|
||||||
|
var_f31 = 286.0f;
|
||||||
|
} else {
|
||||||
|
var_r31 = 0x10004D;
|
||||||
|
var_f31 = 328.0f;
|
||||||
|
}
|
||||||
|
HuWinMesMaxSizeGet(1, sp8, var_r31);
|
||||||
|
var_f30 = -10000.0f;
|
||||||
|
buttonWin = HuWinCreate(var_f30, var_f31, sp8[0], sp8[1], 0);
|
||||||
|
HuWinBGTPLvlSet(buttonWin, 0.0f);
|
||||||
|
HuWinMesSpeedSet(buttonWin, 0);
|
||||||
|
HuWinMesSet(buttonWin, var_r31);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyButtonWin(void) {
|
||||||
|
if (buttonWin != -1) {
|
||||||
|
HuWinKill(buttonWin);
|
||||||
|
buttonWin = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitOverheadView(void) {
|
||||||
|
Vec sp10;
|
||||||
|
GXColor spA;
|
||||||
|
s16 sp8;
|
||||||
|
omObjData *temp_r26;
|
||||||
|
OverheadWork *temp_r31;
|
||||||
|
float *temp_r30;
|
||||||
|
s32 i;
|
||||||
|
s32 sp1C[8] = {
|
||||||
|
0x0007002E,
|
||||||
|
0x0007002F,
|
||||||
|
0x00070030,
|
||||||
|
0x00070031,
|
||||||
|
0x00070032,
|
||||||
|
0x00070033,
|
||||||
|
0x00070034,
|
||||||
|
0x00070035
|
||||||
|
};
|
||||||
|
|
||||||
|
temp_r26 = omAddObjEx(boardObjMan, 0x1000, 0, 0, -1, UpdateOverheadView);
|
||||||
|
overheadObj = temp_r26;
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(temp_r26, OverheadWork);
|
||||||
|
temp_r31->unk00_field0 = 0;
|
||||||
|
temp_r31->unk01 = 1;
|
||||||
|
temp_r31->unk02 = HuSprGrpCreate(9);
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
temp_r30 = overhead2DPos[i];
|
||||||
|
BoardSpriteCreate(sp1C[GWPlayer[i].character], 0x1388, 0, &sp8);
|
||||||
|
HuSprGrpMemberSet(temp_r31->unk02, i, sp8);
|
||||||
|
HuSprAttrSet(temp_r31->unk02, i, 1);
|
||||||
|
HuSprAttrSet(temp_r31->unk02, i, 8);
|
||||||
|
HuSprPosSet(temp_r31->unk02, i, temp_r30[0], temp_r30[1]);
|
||||||
|
if (GWPlayer[i].character == 7) {
|
||||||
|
spA.r = 0x50;
|
||||||
|
spA.g = 0x50;
|
||||||
|
spA.b = 0x50;
|
||||||
|
} else {
|
||||||
|
GWCharColorGet(GWPlayer[i].character, &spA);
|
||||||
|
}
|
||||||
|
BoardSpriteCreate(0x7006C, 0x1770, 0, &sp8);
|
||||||
|
HuSprGrpMemberSet(temp_r31->unk02, i + 4, sp8);
|
||||||
|
HuSprPosSet(temp_r31->unk02, i + 4, temp_r30[0], temp_r30[1]);
|
||||||
|
HuSprColorSet(temp_r31->unk02, i + 4, spA.r, spA.g, spA.b);
|
||||||
|
}
|
||||||
|
temp_r30 = overhead2DPos[4];
|
||||||
|
temp_r31->unk04 = BoardModelCreate(0x70008, NULL, 0);
|
||||||
|
BoardModelMotionSpeedSet(temp_r31->unk04, 0.0f);
|
||||||
|
BoardModelLayerSet(temp_r31->unk04, 6);
|
||||||
|
BoardModelScaleSet(temp_r31->unk04, 0.4f, 0.4f, 0.4f);
|
||||||
|
BoardModelPassSet(temp_r31->unk04, 1);
|
||||||
|
sp10.x = temp_r30[0];
|
||||||
|
sp10.y = temp_r30[1];
|
||||||
|
sp10.z = 1000.0f;
|
||||||
|
spA.r = 0xF8;
|
||||||
|
spA.g = 0xF0;
|
||||||
|
spA.b = 0x80;
|
||||||
|
BoardSpriteCreate(0x7006C, 0x1770, 0, &sp8);
|
||||||
|
HuSprGrpMemberSet(temp_r31->unk02, 8, sp8);
|
||||||
|
HuSprPosSet(temp_r31->unk02, 8, temp_r30[0], temp_r30[1]);
|
||||||
|
HuSprColorSet(temp_r31->unk02, 8, spA.r, spA.g, spA.b);
|
||||||
|
Hu3D2Dto3D(&sp10, 1, &sp10);
|
||||||
|
BoardModelPosSetV(temp_r31->unk04, &sp10);
|
||||||
|
HuSprGrpDrawNoSet(temp_r31->unk02, 0x40);
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||||
|
HuSprTPLvlSet(temp_r31->unk02, 8, 0.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DestroyOverheadView(void) {
|
||||||
|
if (overheadObj) {
|
||||||
|
OM_GET_WORK_PTR(overheadObj, OverheadWork)->unk00_field0 = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void UpdateOverheadView(omObjData *arg0) {
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
float temp_f31;
|
||||||
|
float temp_f30;
|
||||||
|
float *var_r29;
|
||||||
|
s32 var_r28;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 i;
|
||||||
|
u32 var_r26;
|
||||||
|
OverheadWork *temp_r31;
|
||||||
|
Mtx sp5C;
|
||||||
|
Mtx sp2C;
|
||||||
|
|
||||||
|
temp_r31 = OM_GET_WORK_PTR(arg0, OverheadWork);
|
||||||
|
if (temp_r31->unk00_field0 != 0 || BoardIsKill()) {
|
||||||
|
if (temp_r31->unk02 != -1) {
|
||||||
|
HuSprGrpKill(temp_r31->unk02);
|
||||||
|
}
|
||||||
|
if (temp_r31->unk04 != -1) {
|
||||||
|
BoardModelKill(temp_r31->unk04);
|
||||||
|
}
|
||||||
|
overheadObj = NULL;
|
||||||
|
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var_r26 = HuPadBtnDown[GWPlayer[viewPlayer].port];
|
||||||
|
if (var_r26 == 0x20) {
|
||||||
|
temp_r31->unk01 ^= 1;
|
||||||
|
HuAudFXPlay(0x1C);
|
||||||
|
}
|
||||||
|
if (GWBoardGet() == 7 || GWBoardGet() == 8) {
|
||||||
|
var_r27 = 1;
|
||||||
|
} else {
|
||||||
|
var_r27 = 0;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
var_r29 = overhead2DPos[i];
|
||||||
|
sp20.x = var_r29[0] - 288.0f;
|
||||||
|
sp20.y = var_r29[1] - 240.0f;
|
||||||
|
sp20.z = 1000.0f;
|
||||||
|
if (i != 4) {
|
||||||
|
BoardSpacePosGet(0, GWPlayer[i].space_curr, &sp14);
|
||||||
|
} else if (var_r27 != 0) {
|
||||||
|
sp14.x = sp14.y = sp14.z = 0.0f;
|
||||||
|
} else {
|
||||||
|
BoardSpacePosGet(0, BoardSpaceStarGetCurr(), &sp14);
|
||||||
|
}
|
||||||
|
Hu3D3Dto2D(&sp14, 1, &sp14);
|
||||||
|
sp14.x -= 288.0f;
|
||||||
|
sp14.y -= 240.0f;
|
||||||
|
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||||
|
sp8.z = 0.0f;
|
||||||
|
temp_f30 = BoardDAngleCalc(180.0 * (atan2(sp8.y, sp8.x) / M_PI) - 90.0);
|
||||||
|
temp_f31 = PSVECMag(&sp8) / 32;
|
||||||
|
if (i != 4) {
|
||||||
|
var_r28 = i + 4;
|
||||||
|
} else {
|
||||||
|
var_r28 = 8;
|
||||||
|
}
|
||||||
|
HuSprZRotSet(temp_r31->unk02, var_r28, temp_f30);
|
||||||
|
HuSprScaleSet(temp_r31->unk02, var_r28, 0.5f, temp_f31);
|
||||||
|
HuSprPosSet(temp_r31->unk02, var_r28, var_r29[0], var_r29[1]);
|
||||||
|
if (i == 4 && (GWBoardGet() == 7 || GWBoardGet() == 8)) {
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||||
|
} else if (temp_r31->unk01 != 0) {
|
||||||
|
if (i != 4) {
|
||||||
|
HuSprAttrReset(temp_r31->unk02, i, 4);
|
||||||
|
}
|
||||||
|
HuSprAttrReset(temp_r31->unk02, var_r28, 4);
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04, 1);
|
||||||
|
} else {
|
||||||
|
if (i != 4) {
|
||||||
|
HuSprAttrSet(temp_r31->unk02, i, 4);
|
||||||
|
}
|
||||||
|
HuSprAttrSet(temp_r31->unk02, var_r28, 4);
|
||||||
|
BoardModelVisibilitySet(temp_r31->unk04, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sp20.x = var_r29[0];
|
||||||
|
sp20.y = var_r29[1];
|
||||||
|
sp20.z = 1000.0f;
|
||||||
|
BoardCameraRotGet(&sp8);
|
||||||
|
PSMTXRotRad(sp5C, 0x78, sp8.x * 0.017453292f);
|
||||||
|
PSMTXRotRad(sp2C, 0x79, sp8.y * 0.017453292f);
|
||||||
|
PSMTXConcat(sp2C, sp5C, sp2C);
|
||||||
|
BoardModelMtxSet(temp_r31->unk04, &sp2C);
|
||||||
|
Hu3D2Dto3D(&sp20, 1, &sp20);
|
||||||
|
BoardModelPosSetV(temp_r31->unk04, &sp20);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void WaitOverheadView(void) {
|
||||||
|
while (overheadObj) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
#include "game/board/warp.h"
|
#include "game/board/warp.h"
|
||||||
#include "game/board/main.h"
|
#include "game/board/main.h"
|
||||||
#include "game/board/player.h"
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/tutorial.h"
|
||||||
#include "game/wipe.h"
|
#include "game/wipe.h"
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
|
#include "game/hsfdraw.h"
|
||||||
#include "game/hsfex.h"
|
#include "game/hsfex.h"
|
||||||
|
#include "game/objsub.h"
|
||||||
#include "board_unsplit.h"
|
#include "board_unsplit.h"
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
|
|
@ -14,7 +17,6 @@ static void WarpFall(s32);
|
||||||
static void WarpImpact(s32);
|
static void WarpImpact(s32);
|
||||||
|
|
||||||
|
|
||||||
extern void omVibrate(s16, s16, s16, s16);
|
|
||||||
extern void BoardCharWheelInit(s32, s32);
|
extern void BoardCharWheelInit(s32, s32);
|
||||||
extern void BoardCharWheelSpeedSet(f32);
|
extern void BoardCharWheelSpeedSet(f32);
|
||||||
extern void BoardCharWheelWait(void);
|
extern void BoardCharWheelWait(void);
|
||||||
|
|
@ -22,13 +24,8 @@ 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);
|
||||||
extern void BoardPlayerPosSet(s32, f32, f32, f32);
|
|
||||||
extern void BoardPlayerRotYSet(s32, f32);
|
|
||||||
extern void Hu3DModelObjPosGet(s16, char*, Vec*);
|
|
||||||
extern s32 BoardModelMotionEndCheck(s16);
|
extern s32 BoardModelMotionEndCheck(s16);
|
||||||
|
|
||||||
extern s32 boardTutorialData[4];
|
|
||||||
|
|
||||||
static Vec warpPos;
|
static Vec warpPos;
|
||||||
|
|
||||||
static s8 warpState;
|
static s8 warpState;
|
||||||
|
|
@ -139,7 +136,7 @@ static void WarpInit(s32 player) {
|
||||||
Vec pos;
|
Vec pos;
|
||||||
s16 player_mdl = BoardPlayerModelGet(player);
|
s16 player_mdl = BoardPlayerModelGet(player);
|
||||||
|
|
||||||
warpSpringMdl = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 1), NULL, 0);
|
warpSpringMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 1), NULL, 0);
|
||||||
BoardSpacePosGet(0, GWPlayer[player].space_curr, &pos);
|
BoardSpacePosGet(0, GWPlayer[player].space_curr, &pos);
|
||||||
warpYFloor = 1500.0f + pos.y;
|
warpYFloor = 1500.0f + pos.y;
|
||||||
BoardModelLayerSet(warpSpringMdl, 2);
|
BoardModelLayerSet(warpSpringMdl, 2);
|
||||||
|
|
@ -187,7 +184,7 @@ static void WarpStartImpact(s32 player) {
|
||||||
warpImpactCnt++;
|
warpImpactCnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
warpImpactMdl = BoardModelCreate(MAKE_DATA_NUM(DATADIR_BOARD, 2), NULL, 0);
|
warpImpactMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 2), NULL, 0);
|
||||||
BoardModelVisibilitySet(warpImpactMdl, 0);
|
BoardModelVisibilitySet(warpImpactMdl, 0);
|
||||||
BoardModelMotionSpeedSet(warpImpactMdl, 0.0f);
|
BoardModelMotionSpeedSet(warpImpactMdl, 0.0f);
|
||||||
BoardCameraMoveSet(0);
|
BoardCameraMoveSet(0);
|
||||||
|
|
|
||||||
2080
src/game/chrman.c
Executable file
2080
src/game/chrman.c
Executable file
File diff suppressed because it is too large
Load diff
155
src/game/data.c
155
src/game/data.c
|
|
@ -1,5 +1,6 @@
|
||||||
#include "game/data.h"
|
#include "game/data.h"
|
||||||
#include "game/armem.h"
|
#include "game/armem.h"
|
||||||
|
#include "game/process.h"
|
||||||
#include "dolphin/dvd.h"
|
#include "dolphin/dvd.h"
|
||||||
|
|
||||||
#define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset)))
|
#define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset)))
|
||||||
|
|
@ -11,7 +12,7 @@ static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num);
|
||||||
|
|
||||||
#define DATADIR_DEFINE(name, path) { path, -1 },
|
#define DATADIR_DEFINE(name, path) { path, -1 },
|
||||||
|
|
||||||
static FileListEntry DataDirStat[DATADIR_COUNT+1] = {
|
static FileListEntry DataDirStat[] = {
|
||||||
#include "datadir_table.h"
|
#include "datadir_table.h"
|
||||||
{ NULL, -1 }
|
{ NULL, -1 }
|
||||||
};
|
};
|
||||||
|
|
@ -21,7 +22,7 @@ static FileListEntry DataDirStat[DATADIR_COUNT+1] = {
|
||||||
u32 DirDataSize;
|
u32 DirDataSize;
|
||||||
static u32 DataDirMax;
|
static u32 DataDirMax;
|
||||||
static s32 shortAccessSleep;
|
static s32 shortAccessSleep;
|
||||||
static DataReadStat ReadDataStat[DATA_MAX_READSTAT];
|
static DataReadStat ATTRIBUTE_ALIGN(32) ReadDataStat[DATA_MAX_READSTAT];
|
||||||
|
|
||||||
void HuDataInit(void)
|
void HuDataInit(void)
|
||||||
{
|
{
|
||||||
|
|
@ -131,7 +132,7 @@ DataReadStat *HuDataDirRead(s32 data_num)
|
||||||
return read_stat;
|
return read_stat;
|
||||||
}
|
}
|
||||||
|
|
||||||
DataReadStat *HuDataDirReadNum(s32 data_num, s32 num)
|
static DataReadStat *HuDataDirReadNum(s32 data_num, s32 num)
|
||||||
{
|
{
|
||||||
DataReadStat *read_stat;
|
DataReadStat *read_stat;
|
||||||
int status;
|
int status;
|
||||||
|
|
@ -544,8 +545,152 @@ void HuDataDirCloseNum(s32 num)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s32 HuDataDVDdirDirectOpen(s32 data_id, DVDFileInfo *fileInfo)
|
||||||
|
{
|
||||||
|
s32 dir = data_id >> 16;
|
||||||
|
if(dir >= (s32)DataDirMax) {
|
||||||
|
OSReport("data.c: Data Number Error(0x%08x)\n", data_id);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(!DVDFastOpen(DataDirStat[dir].file_id, fileInfo)) {
|
||||||
|
char panic_str[48];
|
||||||
|
sprintf(panic_str, "HuDataDVDdirDirectOpen: File Open Error(%08x)", data_id);
|
||||||
|
OSPanic("data.c", 895, panic_str);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 HuDataDVDdirDirectRead(DVDFileInfo *fileInfo, void *dest, s32 len, s32 offset)
|
||||||
|
{
|
||||||
|
s32 result = DVDReadAsync(fileInfo, dest, len, offset, NULL);
|
||||||
|
if(result != 1) {
|
||||||
|
OSPanic("data.c", 904, "HuDataDVDdirDirectRead: File Read Error");
|
||||||
|
}
|
||||||
|
while(DVDGetCommandBlockStatus(&fileInfo->cb)) {
|
||||||
|
if(shortAccessSleep) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *HuDataDecodeIt(void *buf_start, s32 buf_ofs, s32 num, HeapID heap)
|
||||||
|
{
|
||||||
|
void *data_start;
|
||||||
|
s32 *buf;
|
||||||
|
s32 raw_len, comp_type;
|
||||||
|
|
||||||
|
void *dest;
|
||||||
|
buf = (s32 *)((u8 *)buf_start+buf_ofs);
|
||||||
|
if((u32)buf & 0x3) {
|
||||||
|
u8 *data = (u8 *)buf;
|
||||||
|
raw_len = *data++ << 24;
|
||||||
|
raw_len += *data++ << 16;
|
||||||
|
raw_len += *data++ << 8;
|
||||||
|
raw_len += *data++;
|
||||||
|
comp_type = *data++ << 24;
|
||||||
|
comp_type += *data++ << 16;
|
||||||
|
comp_type += *data++ << 8;
|
||||||
|
comp_type += *data++;
|
||||||
|
data_start = data;
|
||||||
|
} else {
|
||||||
|
s32 *data = buf;
|
||||||
|
raw_len = *data++;
|
||||||
|
comp_type = *data++;
|
||||||
|
data_start = data;
|
||||||
|
}
|
||||||
|
switch(heap) {
|
||||||
|
case HEAP_MUSIC:
|
||||||
|
dest = HuMemDirectMalloc(HEAP_MUSIC, DATA_EFF_SIZE(raw_len));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HEAP_DATA:
|
||||||
|
dest = HuMemDirectMallocNum(HEAP_DATA, DATA_EFF_SIZE(raw_len), num);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case HEAP_DVD:
|
||||||
|
dest = HuMemDirectMallocNum(HEAP_DVD, DATA_EFF_SIZE(raw_len), num);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dest = HuMemDirectMallocNum(HEAP_SYSTEM, DATA_EFF_SIZE(raw_len), num);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(dest) {
|
||||||
|
HuDecodeData(data_start, dest, raw_len, comp_type);
|
||||||
|
}
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Still to be decompiled
|
//Still to be decompiled
|
||||||
void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap)
|
void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap)
|
||||||
{
|
{
|
||||||
return NULL;
|
DVDFileInfo fileInfo;
|
||||||
}
|
s32 *data_hdr;
|
||||||
|
s32 *file_data;
|
||||||
|
void *file_raw_buf;
|
||||||
|
s32 read_len;
|
||||||
|
s32 file_id;
|
||||||
|
s32 file_ofs;
|
||||||
|
s32 read_ofs;
|
||||||
|
s32 data_ofs;
|
||||||
|
void *ret;
|
||||||
|
s32 dir;
|
||||||
|
s32 data_len;
|
||||||
|
s32 file_max;
|
||||||
|
|
||||||
|
if(!HuDataDVDdirDirectOpen(data_id, &fileInfo)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
dir = (data_id >> 16) & 0xFFFF0000;
|
||||||
|
file_id = data_id & 0xFFFF;
|
||||||
|
file_ofs = (file_id*4)+4;
|
||||||
|
data_len = OSRoundUp32B(file_ofs+8);
|
||||||
|
file_data = HuMemDirectMalloc(HEAP_SYSTEM, data_len);
|
||||||
|
if(!HuDataDVDdirDirectRead(&fileInfo, file_data, data_len, 0)) {
|
||||||
|
HuMemDirectFree(file_data);
|
||||||
|
DVDClose(&fileInfo);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
file_max = *file_data;
|
||||||
|
if(file_max <= file_id) {
|
||||||
|
HuMemDirectFree(file_data);
|
||||||
|
OSReport("data.c%d: Data Number Error(0x%08x)\n", 1005, data_id);
|
||||||
|
DVDClose(&fileInfo);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
data_hdr = file_data;
|
||||||
|
data_hdr += file_id+1;
|
||||||
|
file_ofs = *data_hdr;
|
||||||
|
read_ofs = OSRoundDown32B(file_ofs);
|
||||||
|
if(file_max <= file_id+1) {
|
||||||
|
read_len = fileInfo.length;
|
||||||
|
data_ofs = read_len-read_ofs;
|
||||||
|
} else {
|
||||||
|
data_hdr++;
|
||||||
|
data_ofs = (*data_hdr)-read_ofs;
|
||||||
|
read_len = fileInfo.length;
|
||||||
|
}
|
||||||
|
read_len = OSRoundUp32B(data_ofs);
|
||||||
|
HuMemDirectFree(file_data);
|
||||||
|
file_raw_buf = HuMemDirectMalloc(HEAP_SYSTEM, (read_len+4) & ~0x3);
|
||||||
|
if(file_raw_buf == NULL) {
|
||||||
|
OSReport("data.c: couldn't allocate read buffer(0x%08x)\n", data_id);
|
||||||
|
DVDClose(&fileInfo);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if(!HuDataDVDdirDirectRead(&fileInfo, file_raw_buf, read_len, read_ofs)) {
|
||||||
|
HuMemDirectFree(file_raw_buf);
|
||||||
|
DVDClose(&fileInfo);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
DVDClose(&fileInfo);
|
||||||
|
data_ofs = file_ofs-read_ofs;
|
||||||
|
ret = HuDataDecodeIt(file_raw_buf, data_ofs, num, heap);
|
||||||
|
HuMemDirectFree(file_raw_buf);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
char lbl_8011FDA6[] = "** dcnt %d tmp %08x sp1 %08x\n";
|
||||||
|
char lbl_8011FDC4[] = "** dcnt %d lastNum %08x\n";
|
||||||
358
src/game/fault.c
358
src/game/fault.c
|
|
@ -1,13 +1,20 @@
|
||||||
#include "game/gamework_data.h"
|
#include "game/fault.h"
|
||||||
#include "stdarg.h"
|
#include "stdarg.h"
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
|
|
||||||
typedef struct rgb_color {
|
typedef struct rgb_color {
|
||||||
s8 r;
|
u8 r;
|
||||||
s8 g;
|
u8 g;
|
||||||
s8 b;
|
u8 b;
|
||||||
} RGBColor;
|
} RGBColor;
|
||||||
|
|
||||||
|
typedef struct xfb_geometry {
|
||||||
|
void* frame_buffers[4];
|
||||||
|
u16 width;
|
||||||
|
u16 height;
|
||||||
|
u16 mode;
|
||||||
|
} XFBGeometry;
|
||||||
|
|
||||||
static RGBColor XFB_Colors[5] = {
|
static RGBColor XFB_Colors[5] = {
|
||||||
{ 0x00, 0x80, 0x80 },
|
{ 0x00, 0x80, 0x80 },
|
||||||
{ 0xFF, 0x80, 0x80 },
|
{ 0xFF, 0x80, 0x80 },
|
||||||
|
|
@ -16,15 +23,27 @@ static RGBColor XFB_Colors[5] = {
|
||||||
{ 0x40, 0x80, 0x80 }
|
{ 0x40, 0x80, 0x80 }
|
||||||
};
|
};
|
||||||
|
|
||||||
s16 XFB_Geometry[6][2];
|
#include "Ascii8x8_1bpp.inc"
|
||||||
|
|
||||||
|
static XFBGeometry XFB_Geometry;
|
||||||
|
|
||||||
|
static s32 (*XFB_putc)(u8 c, s32 x, s32 y);
|
||||||
|
|
||||||
static RGBColor Draw_Color;
|
static RGBColor Draw_Color;
|
||||||
static s32 y_start;
|
|
||||||
static s32 x_start;
|
|
||||||
|
|
||||||
const char* lbl_801D34A0 = "OSPanic encounterd:";
|
static s32 x_start;
|
||||||
|
static s32 y_start;
|
||||||
|
|
||||||
|
static s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2);
|
||||||
|
static s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2);
|
||||||
|
static s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2);
|
||||||
|
static s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2);
|
||||||
|
static void XFB_WriteBackCache(void);
|
||||||
|
static void XFB_CR(s32 arg0, s32* arg1, s32* arg2);
|
||||||
|
|
||||||
void OSPanic(const char* file, int line, const char* msg, ...) {
|
void OSPanic(const char* file, int line, const char* msg, ...) {
|
||||||
|
static char* titleMes = "OSPanic encounterd:";
|
||||||
|
|
||||||
va_list sp78;
|
va_list sp78;
|
||||||
s32 sp74;
|
s32 sp74;
|
||||||
s32 sp70;
|
s32 sp70;
|
||||||
|
|
@ -33,16 +52,329 @@ void OSPanic(const char* file, int line, const char* msg, ...) {
|
||||||
|
|
||||||
sp74 = x_start = 0x10;
|
sp74 = x_start = 0x10;
|
||||||
sp70 = y_start = 0x20;
|
sp70 = y_start = 0x20;
|
||||||
puts = XFB_puts(lbl_801D34A0, sp74, sp70);
|
puts = XFB_puts((s8*)titleMes, sp74, sp70);
|
||||||
XFB_CR(puts + 1, &sp74, &sp70);
|
XFB_CR(puts + 1, &sp74, &sp70);
|
||||||
sprintf(sp84, "%s:%d", file, line);
|
sprintf(sp84, "%s:%d", file, line);
|
||||||
puts = XFB_puts(sp84, sp74, sp70);
|
puts = XFB_puts((s8*)sp84, sp74, sp70);
|
||||||
XFB_CR(puts, &sp74, &sp70);
|
XFB_CR(puts, &sp74, &sp70);
|
||||||
va_start(sp78, msg);
|
va_start(sp78, msg);
|
||||||
vsnprintf(sp84, 0x400U, msg, &sp78[0]);
|
vsnprintf(sp84, 0x400U, msg, &sp78[0]);
|
||||||
puts = XFB_puts(sp84, sp74, sp70);
|
puts = XFB_puts((s8*)sp84, sp74, sp70);
|
||||||
XFB_CR(puts, &sp74, &sp70);
|
XFB_CR(puts, &sp74, &sp70);
|
||||||
XFB_WriteBackCache();
|
XFB_WriteBackCache();
|
||||||
PPCHalt();
|
PPCHalt();
|
||||||
va_end();
|
va_end(sp78);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode) {
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
XFB_Geometry.frame_buffers[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XFB_Geometry.width = 0;
|
||||||
|
XFB_Geometry.height = 0;
|
||||||
|
XFB_Geometry.mode = 0;
|
||||||
|
|
||||||
|
XFB_putc = XFB_putcProgressive;
|
||||||
|
Draw_Color = XFB_Colors[1];
|
||||||
|
|
||||||
|
if (mode) {
|
||||||
|
XFB_Geometry.width = ((u16)mode->fbWidth + 0xF) & 0xFFFFFFF0;
|
||||||
|
XFB_Geometry.height = mode->xfbHeight;
|
||||||
|
XFB_Geometry.mode = mode->xFBmode;
|
||||||
|
|
||||||
|
if (XFB_Geometry.mode == 0) {
|
||||||
|
XFB_putc = XFB_putcInterlace;
|
||||||
|
} else {
|
||||||
|
XFB_putc = XFB_putcProgressive;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HuFaultSetXfbAddress(s16 index, void* value) {
|
||||||
|
if (index >= 0 && index < 4) {
|
||||||
|
XFB_Geometry.frame_buffers[index] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void XFB_WriteBackCache(void) {
|
||||||
|
s32 i;
|
||||||
|
void* frame_buffer;
|
||||||
|
u32 temp_r29;
|
||||||
|
|
||||||
|
temp_r29 = XFB_Geometry.width * 2 * XFB_Geometry.height;
|
||||||
|
|
||||||
|
if (temp_r29 != 0) {
|
||||||
|
for (i = 0; i < 4; i += 1) {
|
||||||
|
frame_buffer = XFB_Geometry.frame_buffers[i];
|
||||||
|
|
||||||
|
if (frame_buffer) {
|
||||||
|
DCStoreRange(frame_buffer, temp_r29);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void XFB_CR(s32 arg0, s32* x_ptr, s32* y_ptr) {
|
||||||
|
s32 temp_r30;
|
||||||
|
s32 y;
|
||||||
|
s32 x;
|
||||||
|
|
||||||
|
x = *x_ptr;
|
||||||
|
y = *y_ptr;
|
||||||
|
|
||||||
|
x = x_start;
|
||||||
|
y += 0x12;
|
||||||
|
|
||||||
|
temp_r30 = arg0 & 7;
|
||||||
|
if (temp_r30 != 0) {
|
||||||
|
y += temp_r30 * 0x12;
|
||||||
|
}
|
||||||
|
|
||||||
|
*x_ptr = x;
|
||||||
|
*y_ptr = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 XFB_puts(s8* message, s32 x, s32 y) {
|
||||||
|
s32 i;
|
||||||
|
s32 temp_r31;
|
||||||
|
s8 current_char;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
current_char = *message++;
|
||||||
|
|
||||||
|
if (current_char == '\n') {
|
||||||
|
XFB_CR(0, &x, &y);
|
||||||
|
|
||||||
|
i += 1;
|
||||||
|
} else {
|
||||||
|
temp_r31 = XFB_putcS(current_char, x, y);
|
||||||
|
|
||||||
|
if (temp_r31 >= 0) {
|
||||||
|
if (temp_r31 != 0) {
|
||||||
|
temp_r31 -= 1;
|
||||||
|
|
||||||
|
XFB_CR(temp_r31, &x, &y);
|
||||||
|
|
||||||
|
i += temp_r31 + 1;
|
||||||
|
}
|
||||||
|
x += 0x10;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while(current_char != 0);
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 XFB_putcS(u8 c, s32 x, s32 y) {
|
||||||
|
RGBColor sp8;
|
||||||
|
s32 var_r26;
|
||||||
|
s32 var_r25;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 var_r29;
|
||||||
|
RGBColor* temp_r3;
|
||||||
|
|
||||||
|
var_r27 = 0;
|
||||||
|
sp8 = Draw_Color;
|
||||||
|
|
||||||
|
if (x + 0x11 >= XFB_Geometry.width) {
|
||||||
|
XFB_CR(0, &x, &y);
|
||||||
|
var_r27++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Draw_Color = XFB_Colors[0];
|
||||||
|
XFB_putc(c, x, y - 2);
|
||||||
|
XFB_putc(c, x, y + 2);
|
||||||
|
XFB_putc(c, x - 1, y);
|
||||||
|
XFB_putc(c, x + 1, y);
|
||||||
|
|
||||||
|
Draw_Color = sp8;
|
||||||
|
XFB_putc(c, x, y);
|
||||||
|
|
||||||
|
return var_r27;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 XFB_putcProgressive(u8 c, s32 x, s32 y) {
|
||||||
|
s32 result;
|
||||||
|
s32 temp_r20;
|
||||||
|
u8 red;
|
||||||
|
u8 blue;
|
||||||
|
u8 green;
|
||||||
|
s32 i;
|
||||||
|
s32 j;
|
||||||
|
s32 var_r23;
|
||||||
|
u8* var_r29;
|
||||||
|
s32 k;
|
||||||
|
s32 var_r27;
|
||||||
|
s32 var_r26;
|
||||||
|
u32 temp_r31;
|
||||||
|
u32 var_r30;
|
||||||
|
u32 var_r22;
|
||||||
|
u8* frame_buffer;
|
||||||
|
|
||||||
|
result = 0;
|
||||||
|
|
||||||
|
if (c == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x + 0x10 >= XFB_Geometry.width) {
|
||||||
|
y += 0x12;
|
||||||
|
x = x_start;
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y + 0x10 >= XFB_Geometry.height) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
red = Draw_Color.r;
|
||||||
|
green = Draw_Color.g;
|
||||||
|
blue = Draw_Color.b;
|
||||||
|
|
||||||
|
temp_r20 = XFB_Geometry.width * 2;
|
||||||
|
var_r23 = (x & 0xFFFE) * 2 + y * temp_r20;
|
||||||
|
var_r29 = Ascii8x8_1bpp + (c * 8);
|
||||||
|
|
||||||
|
i = 8;
|
||||||
|
|
||||||
|
while (i != 0) {
|
||||||
|
j = 2;
|
||||||
|
|
||||||
|
while (j != 0) {
|
||||||
|
for (k = 0; k < 4; k ++) {
|
||||||
|
frame_buffer = XFB_Geometry.frame_buffers[k];
|
||||||
|
|
||||||
|
if (frame_buffer != 0) {
|
||||||
|
frame_buffer += var_r23;
|
||||||
|
|
||||||
|
var_r22 = *var_r29;
|
||||||
|
var_r30 = 0;
|
||||||
|
var_r26 = 0;
|
||||||
|
while (var_r26 < 0x10) {
|
||||||
|
if (var_r22 & 0xF != 0) {
|
||||||
|
var_r30 |= 3 << var_r26;
|
||||||
|
}
|
||||||
|
var_r26 += 2;
|
||||||
|
var_r22 >>= 1;
|
||||||
|
}
|
||||||
|
var_r27 = 8;
|
||||||
|
if ((s32) (x & 1) != 0) {
|
||||||
|
var_r30 *= 2;
|
||||||
|
var_r27 = 0xA;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (var_r27 != 0) {
|
||||||
|
if ((u32) (var_r30 & 3) != 0) {
|
||||||
|
frame_buffer[1] = blue;
|
||||||
|
frame_buffer[3] = green;
|
||||||
|
|
||||||
|
if ((u32) (var_r30 & 1) != 0) {
|
||||||
|
frame_buffer[0] = red;
|
||||||
|
}
|
||||||
|
if ((u32) (var_r30 & 2) != 0) {
|
||||||
|
frame_buffer[2] = red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var_r27 -= 1;
|
||||||
|
frame_buffer += 4;
|
||||||
|
var_r30 = var_r30 >> 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
j -= 1;
|
||||||
|
var_r23 += temp_r20;
|
||||||
|
}
|
||||||
|
i -= 1;
|
||||||
|
var_r29 += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static s32 XFB_putcInterlace(u8 c, s32 x, s32 y) {
|
||||||
|
u8 red;
|
||||||
|
u8 blue;
|
||||||
|
u8 green;
|
||||||
|
s32 temp_r23;
|
||||||
|
s32 i;
|
||||||
|
s32 var_r25;
|
||||||
|
u8* var_r28;
|
||||||
|
s32 j;
|
||||||
|
s16 var_r29;
|
||||||
|
s32 var_r30;
|
||||||
|
u8* var_r31;
|
||||||
|
|
||||||
|
if (c == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x + 8 >= XFB_Geometry.width || y + 8 >= XFB_Geometry.height) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
red = Draw_Color.r;
|
||||||
|
green = Draw_Color.g;
|
||||||
|
blue = Draw_Color.b;
|
||||||
|
|
||||||
|
temp_r23 = XFB_Geometry.width * 2;
|
||||||
|
var_r25 = ((x & 0xFFFE) * 2) + ((y >> 1) * temp_r23);
|
||||||
|
var_r28 = Ascii8x8_1bpp + c * 8;
|
||||||
|
|
||||||
|
i = 8;
|
||||||
|
|
||||||
|
while (i != 0) {
|
||||||
|
for (j = 0; j < 4; j += 2) {
|
||||||
|
var_r30 = j;
|
||||||
|
|
||||||
|
if ((s32) (y & 1) != 0) {
|
||||||
|
var_r30 += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r31 = XFB_Geometry.frame_buffers[var_r30];
|
||||||
|
|
||||||
|
if (var_r31) {
|
||||||
|
var_r31 = var_r31 + var_r25;
|
||||||
|
var_r29 = *var_r28;
|
||||||
|
var_r30 = 4;
|
||||||
|
|
||||||
|
if (x & 1) {
|
||||||
|
var_r29 = (s16)var_r29 * 2;
|
||||||
|
var_r30 = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (var_r30) {
|
||||||
|
if (var_r29 & 3) {
|
||||||
|
var_r31[1] = blue;
|
||||||
|
var_r31[3] = green;
|
||||||
|
|
||||||
|
if (var_r29 & 1) {
|
||||||
|
var_r31[0] = red;
|
||||||
|
}
|
||||||
|
if (var_r29 & 2) {
|
||||||
|
var_r31[2] = red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var_r30 -= 1;
|
||||||
|
var_r31 += 4;
|
||||||
|
var_r29 >>= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i -= 1;
|
||||||
|
y += 1;
|
||||||
|
var_r28 += 1;
|
||||||
|
var_r25 += temp_r23;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
#define ABS(x) ((x < 0) ? -x : x)
|
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ ModelData *unk00;
|
/* 0x00 */ ModelData *unk00;
|
||||||
|
|
@ -24,18 +24,9 @@ typedef struct {
|
||||||
u32 unk0C;
|
u32 unk0C;
|
||||||
} DrawDataStruct; // Size 0x10
|
} DrawDataStruct; // Size 0x10
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
/* 0x00 */ s16 unk00;
|
|
||||||
/* 0x02 */ s16 unk02;
|
|
||||||
/* 0x04 */ s16 unk04[3][4]; // goes up to index [3][3] (union?)
|
|
||||||
/* 0x1C */ u32 unk1C;
|
|
||||||
/* 0x20 */ void *unk20;
|
|
||||||
/* 0x24 */ char unk24[0xC];
|
|
||||||
} HsfdrawStruct02; // Size 0x30
|
|
||||||
|
|
||||||
static void objCall(ModelData *arg0, HsfObject *arg1);
|
static void objCall(ModelData *arg0, HsfObject *arg1);
|
||||||
static void objMesh(ModelData *arg0, HsfObject *arg1);
|
static void objMesh(ModelData *arg0, HsfObject *arg1);
|
||||||
static void FaceDraw(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1);
|
static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1);
|
||||||
static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1);
|
static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1);
|
||||||
static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1);
|
static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1);
|
||||||
static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1);
|
static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1);
|
||||||
|
|
@ -45,7 +36,7 @@ static void SetReflect(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, u8 arg3);
|
||||||
static void SetProjection(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5);
|
static void SetProjection(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5);
|
||||||
static void SetShadowTex(void);
|
static void SetShadowTex(void);
|
||||||
static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2);
|
static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2);
|
||||||
static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1);
|
static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1);
|
||||||
static void LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3);
|
static void LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3);
|
||||||
static void objNull(ModelData *arg0, HsfObject *arg1);
|
static void objNull(ModelData *arg0, HsfObject *arg1);
|
||||||
static void objRoot(ModelData *arg0, HsfObject *arg1);
|
static void objRoot(ModelData *arg0, HsfObject *arg1);
|
||||||
|
|
@ -55,10 +46,10 @@ static void objReplica(ModelData *arg0, HsfObject *arg1);
|
||||||
static void ObjDraw(HsfdrawStruct00 *arg0);
|
static void ObjDraw(HsfdrawStruct00 *arg0);
|
||||||
static void MDObjCall(HsfData *arg0, HsfObject *arg1);
|
static void MDObjCall(HsfData *arg0, HsfObject *arg1);
|
||||||
static void MDObjMesh(HsfData *arg0, HsfObject *arg1);
|
static void MDObjMesh(HsfData *arg0, HsfObject *arg1);
|
||||||
static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1);
|
static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1);
|
||||||
static s32 MakeCalcNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3);
|
static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3);
|
||||||
static s32 MakeNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3);
|
static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3);
|
||||||
static void MDFaceCnt(HsfObject *arg0, HsfdrawStruct02 *arg1);
|
static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1);
|
||||||
|
|
||||||
void GXResetWriteGatherPipe(void);
|
void GXResetWriteGatherPipe(void);
|
||||||
|
|
||||||
|
|
@ -249,7 +240,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) {
|
||||||
temp_r25 = arg1->constData;
|
temp_r25 = arg1->constData;
|
||||||
if (!(temp_r25->flags & 0x1000)) {
|
if (!(temp_r25->flags & 0x1000)) {
|
||||||
if (CancelTRXF == 0) {
|
if (CancelTRXF == 0) {
|
||||||
if (arg1->data.hook != 0 && hookIdx == -1) {
|
if (arg1->data.cenvCnt != 0 && hookIdx == -1) {
|
||||||
temp_r21 = arg1 - temp_r20->object;
|
temp_r21 = arg1 - temp_r20->object;
|
||||||
PSMTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]);
|
PSMTXConcat(MTXBuf[0], temp_r20->matrix->data[temp_r21 + temp_r20->matrix->base_idx], MTXBuf[MTXIdx]);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -429,7 +420,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: not matching (https://decomp.me/scratch/54Pjw)
|
// TODO: not matching (https://decomp.me/scratch/54Pjw)
|
||||||
static void FaceDraw(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1) {
|
static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) {
|
||||||
GXColor sp2C;
|
GXColor sp2C;
|
||||||
void *sp28;
|
void *sp28;
|
||||||
Hu3DTexAnimDataStruct *sp24;
|
Hu3DTexAnimDataStruct *sp24;
|
||||||
|
|
@ -453,7 +444,7 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1) {
|
||||||
temp_r29 = arg0->unk00;
|
temp_r29 = arg0->unk00;
|
||||||
temp_r20 = temp_r28->constData;
|
temp_r20 = temp_r28->constData;
|
||||||
kColorIdx = 0;
|
kColorIdx = 0;
|
||||||
temp_r30 = &temp_r28->data.material[arg1->unk02 & 0xFFF];
|
temp_r30 = &temp_r28->data.material[arg1->mat & 0xFFF];
|
||||||
temp_r19 = temp_r28->flags | temp_r30->flags;
|
temp_r19 = temp_r28->flags | temp_r30->flags;
|
||||||
if (temp_r19 & 0x30) {
|
if (temp_r19 & 0x30) {
|
||||||
if (temp_r19 & 0x10) {
|
if (temp_r19 & 0x10) {
|
||||||
|
|
@ -1651,7 +1642,7 @@ static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2) {
|
||||||
GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
|
GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1) {
|
static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) {
|
||||||
HsfObject *temp_r31;
|
HsfObject *temp_r31;
|
||||||
ModelData *temp_r28;
|
ModelData *temp_r28;
|
||||||
HsfConstData *temp_r27;
|
HsfConstData *temp_r27;
|
||||||
|
|
@ -1663,7 +1654,7 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfdrawStruct02 *arg1) {
|
||||||
temp_r31 = arg0->unk04;
|
temp_r31 = arg0->unk04;
|
||||||
temp_r28 = arg0->unk00;
|
temp_r28 = arg0->unk00;
|
||||||
temp_r27 = temp_r31->constData;
|
temp_r27 = temp_r31->constData;
|
||||||
temp_r29 = &temp_r31->data.material[arg1->unk02 & 0xFFF];
|
temp_r29 = &temp_r31->data.material[arg1->mat & 0xFFF];
|
||||||
if (temp_r29 != materialBak) {
|
if (temp_r29 != materialBak) {
|
||||||
if (!(temp_r27->flags & 0x400)) {
|
if (!(temp_r27->flags & 0x400)) {
|
||||||
drawCnt++;
|
drawCnt++;
|
||||||
|
|
@ -2079,7 +2070,7 @@ void Hu3DDrawPost(void) {
|
||||||
float temp_f26;
|
float temp_f26;
|
||||||
float temp_f25;
|
float temp_f25;
|
||||||
LightData *temp_r22;
|
LightData *temp_r22;
|
||||||
HsfdrawStruct02 *var_r27;
|
HsfFace *var_r27;
|
||||||
Mtx sp150;
|
Mtx sp150;
|
||||||
Mtx sp120;
|
Mtx sp120;
|
||||||
Mtx spF0;
|
Mtx spF0;
|
||||||
|
|
@ -2218,12 +2209,12 @@ void Hu3DDrawPost(void) {
|
||||||
if (shadowModelDrawF == 0) {
|
if (shadowModelDrawF == 0) {
|
||||||
for (i = 0; i < temp_r24->count;) {
|
for (i = 0; i < temp_r24->count;) {
|
||||||
FaceDraw(temp_r28, var_r27);
|
FaceDraw(temp_r28, var_r27);
|
||||||
if (var_r27->unk00 == 4) {
|
if (var_r27->type == 4) {
|
||||||
totalPolyCnt += DrawData[drawCnt - 1].unk08;
|
totalPolyCnt += DrawData[drawCnt - 1].unk08;
|
||||||
i++;
|
i++;
|
||||||
var_r27++;
|
var_r27++;
|
||||||
} else {
|
} else {
|
||||||
totalPolyCnt += DrawData[drawCnt - 1].unk08 * ((var_r27->unk00 & 7) == 3 ? 2 : 1);
|
totalPolyCnt += DrawData[drawCnt - 1].unk08 * ((var_r27->type & 7) == 3 ? 2 : 1);
|
||||||
i += DrawData[drawCnt - 1].unk08;
|
i += DrawData[drawCnt - 1].unk08;
|
||||||
var_r27 += DrawData[drawCnt - 1].unk08;
|
var_r27 += DrawData[drawCnt - 1].unk08;
|
||||||
}
|
}
|
||||||
|
|
@ -2237,7 +2228,7 @@ void Hu3DDrawPost(void) {
|
||||||
GXSetNumChans(1);
|
GXSetNumChans(1);
|
||||||
for (i = 0; i < temp_r24->count;) {
|
for (i = 0; i < temp_r24->count;) {
|
||||||
FaceDrawShadow(temp_r28, var_r27);
|
FaceDrawShadow(temp_r28, var_r27);
|
||||||
if (var_r27->unk00 == 4) {
|
if (var_r27->type == 4) {
|
||||||
i++;
|
i++;
|
||||||
var_r27++;
|
var_r27++;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2277,7 +2268,7 @@ static void ObjDraw(HsfdrawStruct00 *arg0) {
|
||||||
float temp_f26;
|
float temp_f26;
|
||||||
LightData *temp_r24;
|
LightData *temp_r24;
|
||||||
DrawDataStruct *temp_r25;
|
DrawDataStruct *temp_r25;
|
||||||
HsfdrawStruct02 *var_r27;
|
HsfFace *var_r27;
|
||||||
Mtx sp140;
|
Mtx sp140;
|
||||||
Mtx sp110;
|
Mtx sp110;
|
||||||
Mtx spE0;
|
Mtx spE0;
|
||||||
|
|
@ -2360,13 +2351,13 @@ static void ObjDraw(HsfdrawStruct00 *arg0) {
|
||||||
if (shadowModelDrawF == 0) {
|
if (shadowModelDrawF == 0) {
|
||||||
for (i = 0; i < temp_r26->count;) {
|
for (i = 0; i < temp_r26->count;) {
|
||||||
FaceDraw(arg0, var_r27);
|
FaceDraw(arg0, var_r27);
|
||||||
if (var_r27->unk00 == 4) {
|
if (var_r27->type == 4) {
|
||||||
totalPolyCnt += DrawData[drawCnt - 1].unk08;
|
totalPolyCnt += DrawData[drawCnt - 1].unk08;
|
||||||
i++;
|
i++;
|
||||||
var_r27++;
|
var_r27++;
|
||||||
} else {
|
} else {
|
||||||
temp_r25 = &DrawData[drawCnt - 1];
|
temp_r25 = &DrawData[drawCnt - 1];
|
||||||
if ((var_r27->unk00 & 7) == 3) {
|
if ((var_r27->type & 7) == 3) {
|
||||||
var_r20 = 2;
|
var_r20 = 2;
|
||||||
} else {
|
} else {
|
||||||
var_r20 = 1;
|
var_r20 = 1;
|
||||||
|
|
@ -2385,7 +2376,7 @@ static void ObjDraw(HsfdrawStruct00 *arg0) {
|
||||||
GXSetNumChans(1);
|
GXSetNumChans(1);
|
||||||
for (i = 0; i < temp_r26->count;) {
|
for (i = 0; i < temp_r26->count;) {
|
||||||
FaceDrawShadow(arg0, var_r27);
|
FaceDrawShadow(arg0, var_r27);
|
||||||
if (var_r27->unk00 == 4) {
|
if (var_r27->type == 4) {
|
||||||
i++;
|
i++;
|
||||||
var_r27++;
|
var_r27++;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2441,7 +2432,7 @@ static void MDObjCall(HsfData *arg0, HsfObject *arg1) {
|
||||||
|
|
||||||
static void MDObjMesh(HsfData *arg0, HsfObject *arg1) {
|
static void MDObjMesh(HsfData *arg0, HsfObject *arg1) {
|
||||||
HsfBuffer *temp_r29;
|
HsfBuffer *temp_r29;
|
||||||
HsfdrawStruct02 *var_r28;
|
HsfFace *var_r28;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
temp_r29 = arg1->data.face;
|
temp_r29 = arg1->data.face;
|
||||||
|
|
@ -2503,7 +2494,7 @@ HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1) {
|
||||||
return temp_r3;
|
return temp_r3;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) {
|
||||||
HsfMaterial *temp_r30;
|
HsfMaterial *temp_r30;
|
||||||
s16 *var_r24;
|
s16 *var_r24;
|
||||||
s16 var_r26;
|
s16 var_r26;
|
||||||
|
|
@ -2514,9 +2505,9 @@ static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
s32 var_r25;
|
s32 var_r25;
|
||||||
|
|
||||||
var_r26 = -1;
|
var_r26 = -1;
|
||||||
temp_r30 = &arg0->data.material[arg1->unk02 & 0xFFF];
|
temp_r30 = &arg0->data.material[arg1->mat & 0xFFF];
|
||||||
if (temp_r30 != materialBak || polyTypeBak != (arg1->unk00 & 7) || (arg1->unk00 & 7) == 4) {
|
if (temp_r30 != materialBak || polyTypeBak != (arg1->type & 7) || (arg1->type & 7) == 4) {
|
||||||
polyTypeBak = arg1->unk00 & 7;
|
polyTypeBak = arg1->type & 7;
|
||||||
materialBak = temp_r30;
|
materialBak = temp_r30;
|
||||||
DrawData[drawCnt].unk00 = (u32) DLBufP - (u32) DLBufStartP;
|
DrawData[drawCnt].unk00 = (u32) DLBufP - (u32) DLBufStartP;
|
||||||
GXBeginDisplayList(DLBufP, 0x20000);
|
GXBeginDisplayList(DLBufP, 0x20000);
|
||||||
|
|
@ -2558,60 +2549,60 @@ static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
Hu3DObjInfoP->flags |= 0x10000;
|
Hu3DObjInfoP->flags |= 0x10000;
|
||||||
}
|
}
|
||||||
faceCnt = 0;
|
faceCnt = 0;
|
||||||
switch (arg1->unk00 & 7) {
|
switch (arg1->type & 7) {
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
GXBegin(GX_TRIANGLES, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
GXBegin(GX_TRIANGLES, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
||||||
for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 3; var_r27++, arg1++) {
|
for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 3; var_r27++, arg1++) {
|
||||||
GXUnknownu16(arg1->unk04[0][0]);
|
GXUnknownu16(arg1->indices[0][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[0][1]);
|
GXUnknownu16(arg1->indices[0][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeCalcNBT(arg0, arg1, 0, 1);
|
MakeCalcNBT(arg0, arg1, 0, 1);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[0][2];
|
temp_r28 = arg1->indices[0][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[0][3]);
|
GXUnknownu16(arg1->indices[0][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[2][0]);
|
GXUnknownu16(arg1->indices[2][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[2][1]);
|
GXUnknownu16(arg1->indices[2][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 2, 0);
|
MakeNBT(arg0, arg1, 2, 0);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[2][2];
|
temp_r28 = arg1->indices[2][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[2][3]);
|
GXUnknownu16(arg1->indices[2][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[1][0]);
|
GXUnknownu16(arg1->indices[1][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[1][1]);
|
GXUnknownu16(arg1->indices[1][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 1, 2);
|
MakeNBT(arg0, arg1, 1, 2);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[1][2];
|
temp_r28 = arg1->indices[1][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[1][3]);
|
GXUnknownu16(arg1->indices[1][3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
faceCnt = faceNumBuf[drawCnt] / 3;
|
faceCnt = faceNumBuf[drawCnt] / 3;
|
||||||
|
|
@ -2619,125 +2610,125 @@ static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
case 3:
|
case 3:
|
||||||
GXBegin(GX_QUADS, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
GXBegin(GX_QUADS, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
||||||
for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 4; var_r27++, arg1++) {
|
for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 4; var_r27++, arg1++) {
|
||||||
GXUnknownu16(arg1->unk04[0][0]);
|
GXUnknownu16(arg1->indices[0][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[0][1]);
|
GXUnknownu16(arg1->indices[0][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeCalcNBT(arg0, arg1, 0, 1);
|
MakeCalcNBT(arg0, arg1, 0, 1);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[0][2];
|
temp_r28 = arg1->indices[0][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[0][3]);
|
GXUnknownu16(arg1->indices[0][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[2][0]);
|
GXUnknownu16(arg1->indices[2][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[2][1]);
|
GXUnknownu16(arg1->indices[2][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 2, 0);
|
MakeNBT(arg0, arg1, 2, 0);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[2][2];
|
temp_r28 = arg1->indices[2][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[2][3]);
|
GXUnknownu16(arg1->indices[2][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[3][0]);
|
GXUnknownu16(arg1->indices[3][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[3][1]);
|
GXUnknownu16(arg1->indices[3][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 3, 2);
|
MakeNBT(arg0, arg1, 3, 2);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[3][2];
|
temp_r28 = arg1->indices[3][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[3][3]);
|
GXUnknownu16(arg1->indices[3][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[1][0]);
|
GXUnknownu16(arg1->indices[1][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[1][1]);
|
GXUnknownu16(arg1->indices[1][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 1, 3);
|
MakeNBT(arg0, arg1, 1, 3);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[1][2];
|
temp_r28 = arg1->indices[1][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[1][3]);
|
GXUnknownu16(arg1->indices[1][3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
faceCnt = faceNumBuf[drawCnt] / 4;
|
faceCnt = faceNumBuf[drawCnt] / 4;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, faceNumBuf[drawCnt]);
|
||||||
GXUnknownu16(arg1->unk04[0][0]);
|
GXUnknownu16(arg1->indices[0][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[0][1]);
|
GXUnknownu16(arg1->indices[0][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeCalcNBT(arg0, arg1, 0, 1);
|
MakeCalcNBT(arg0, arg1, 0, 1);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[0][2];
|
temp_r28 = arg1->indices[0][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[0][3]);
|
GXUnknownu16(arg1->indices[0][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[2][0]);
|
GXUnknownu16(arg1->indices[2][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[2][1]);
|
GXUnknownu16(arg1->indices[2][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 2, 0);
|
MakeNBT(arg0, arg1, 2, 0);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[2][2];
|
temp_r28 = arg1->indices[2][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[2][3]);
|
GXUnknownu16(arg1->indices[2][3]);
|
||||||
}
|
}
|
||||||
GXUnknownu16(arg1->unk04[1][0]);
|
GXUnknownu16(arg1->indices[1][0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(arg1->unk04[1][1]);
|
GXUnknownu16(arg1->indices[1][1]);
|
||||||
} else {
|
} else {
|
||||||
MakeNBT(arg0, arg1, 1, 2);
|
MakeNBT(arg0, arg1, 1, 2);
|
||||||
}
|
}
|
||||||
if (temp_r30->vtxMode == 5) {
|
if (temp_r30->vtxMode == 5) {
|
||||||
temp_r28 = arg1->unk04[1][2];
|
temp_r28 = arg1->indices[1][2];
|
||||||
GXUnknownu16(temp_r28);
|
GXUnknownu16(temp_r28);
|
||||||
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) {
|
||||||
Hu3DObjInfoP->flags |= 0x4001;
|
Hu3DObjInfoP->flags |= 0x4001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (var_r25 != 0) {
|
if (var_r25 != 0) {
|
||||||
GXUnknownu16(arg1->unk04[1][3]);
|
GXUnknownu16(arg1->indices[1][3]);
|
||||||
}
|
}
|
||||||
var_r24 = arg1->unk20;
|
var_r24 = arg1->strip.data;
|
||||||
for (var_r27 = 0; var_r27 < arg1->unk1C; var_r27++, var_r24 += 4) {
|
for (var_r27 = 0; var_r27 < arg1->strip.count; var_r27++, var_r24 += 4) {
|
||||||
GXUnknownu16(var_r24[0]);
|
GXUnknownu16(var_r24[0]);
|
||||||
if (var_r26 == -1) {
|
if (var_r26 == -1) {
|
||||||
GXUnknownu16(var_r24[1]);
|
GXUnknownu16(var_r24[1]);
|
||||||
|
|
@ -2755,7 +2746,7 @@ static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
GXUnknownu16(var_r24[3]);
|
GXUnknownu16(var_r24[3]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
faceCnt = arg1->unk1C + 1;
|
faceCnt = arg1->strip.count + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
temp_r3 = GXEndDisplayList();
|
temp_r3 = GXEndDisplayList();
|
||||||
|
|
@ -2767,7 +2758,7 @@ static void MDFaceDraw(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static s32 MakeCalcNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3) {
|
static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) {
|
||||||
Vec sp10;
|
Vec sp10;
|
||||||
Vec *temp_r29;
|
Vec *temp_r29;
|
||||||
Vec *temp_r31;
|
Vec *temp_r31;
|
||||||
|
|
@ -2777,10 +2768,10 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg
|
||||||
s16 temp_r27;
|
s16 temp_r27;
|
||||||
|
|
||||||
temp_r31 = arg0->data.vertex->data;
|
temp_r31 = arg0->data.vertex->data;
|
||||||
temp_r27 = arg1->unk04[arg2][1];
|
temp_r27 = arg1->indices[arg2][1];
|
||||||
temp_r25 = arg1->unk04[arg2][0];
|
temp_r25 = arg1->indices[arg2][0];
|
||||||
temp_r24 = arg1->unk04[arg3][0];
|
temp_r24 = arg1->indices[arg3][0];
|
||||||
if (arg0->data.hook != 0) {
|
if (arg0->data.cenvCnt != 0) {
|
||||||
temp_r29 = arg0->data.normal->data;
|
temp_r29 = arg0->data.normal->data;
|
||||||
sp10.x = temp_r29[temp_r27].x;
|
sp10.x = temp_r29[temp_r27].x;
|
||||||
sp10.y = temp_r29[temp_r27].y;
|
sp10.y = temp_r29[temp_r27].y;
|
||||||
|
|
@ -2802,7 +2793,7 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg
|
||||||
GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f);
|
GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static s32 MakeNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3) {
|
static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) {
|
||||||
Vec sp10;
|
Vec sp10;
|
||||||
Vec *temp_r30;
|
Vec *temp_r30;
|
||||||
Vec *spC;
|
Vec *spC;
|
||||||
|
|
@ -2810,8 +2801,8 @@ static s32 MakeNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3) {
|
||||||
s16 temp_r28;
|
s16 temp_r28;
|
||||||
|
|
||||||
spC = arg0->data.vertex->data;
|
spC = arg0->data.vertex->data;
|
||||||
temp_r28 = arg1->unk04[arg2][1];
|
temp_r28 = arg1->indices[arg2][1];
|
||||||
if (arg0->data.hook != 0) {
|
if (arg0->data.cenvCnt != 0) {
|
||||||
temp_r30 = arg0->data.normal->data;
|
temp_r30 = arg0->data.normal->data;
|
||||||
sp10.x = temp_r30[temp_r28].x;
|
sp10.x = temp_r30[temp_r28].x;
|
||||||
sp10.y = temp_r30[temp_r28].y;
|
sp10.y = temp_r30[temp_r28].y;
|
||||||
|
|
@ -2828,15 +2819,15 @@ static s32 MakeNBT(HsfObject *arg0, HsfdrawStruct02 *arg1, s16 arg2, s16 arg3) {
|
||||||
GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f);
|
GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MDFaceCnt(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) {
|
||||||
HsfMaterial *temp_r30;
|
HsfMaterial *temp_r30;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
|
||||||
temp_r30 = &arg0->data.material[arg1->unk02 & 0xFFF];
|
temp_r30 = &arg0->data.material[arg1->mat & 0xFFF];
|
||||||
// Bug? Likely to be polyTypeBak != (arg1->unk00 & 7)
|
// Bug? Likely to be polyTypeBak != (arg1->unk00 & 7)
|
||||||
if (temp_r30 != materialBak || ((polyTypeBak != arg1->unk00) & 7) || (arg1->unk00 & 7) == 4) {
|
if (temp_r30 != materialBak || ((polyTypeBak != arg1->type) & 7) || (arg1->type & 7) == 4) {
|
||||||
polySize = 4;
|
polySize = 4;
|
||||||
polyTypeBak = arg1->unk00 & 7;
|
polyTypeBak = arg1->type & 7;
|
||||||
materialBak = temp_r30;
|
materialBak = temp_r30;
|
||||||
matChgCnt++;
|
matChgCnt++;
|
||||||
if (DLFirstF != 0) {
|
if (DLFirstF != 0) {
|
||||||
|
|
@ -2858,7 +2849,7 @@ static void MDFaceCnt(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
polySize += 2;
|
polySize += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch (arg1->unk00 & 7) {
|
switch (arg1->type & 7) {
|
||||||
case 0:
|
case 0:
|
||||||
OSReport("Error\n");
|
OSReport("Error\n");
|
||||||
break;
|
break;
|
||||||
|
|
@ -2877,9 +2868,9 @@ static void MDFaceCnt(HsfObject *arg0, HsfdrawStruct02 *arg1) {
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
triCnt++;
|
triCnt++;
|
||||||
faceNumBuf[drawCnt] += arg1->unk1C + 3;
|
faceNumBuf[drawCnt] += arg1->strip.count + 3;
|
||||||
DLTotalNum += polySize * 3;
|
DLTotalNum += polySize * 3;
|
||||||
DLTotalNum += polySize * arg1->unk1C;
|
DLTotalNum += polySize * arg1->strip.count;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
OSReport("Error\n");
|
OSReport("Error\n");
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
#include "ctype.h"
|
#include "ctype.h"
|
||||||
|
|
||||||
#define AS_S16(field) (*((s16 *)&(field)))
|
#define AS_S16(field) (*((s16 *)&(field)))
|
||||||
|
#define AS_U16(field) (*((u16 *)&(field)))
|
||||||
|
|
||||||
GXColor rgba[100];
|
GXColor rgba[100];
|
||||||
HsfHeader head;
|
HsfHeader head;
|
||||||
HsfData Model;
|
HsfData Model;
|
||||||
|
|
@ -401,7 +403,7 @@ static void FaceLoad(void)
|
||||||
HsfFace *data;
|
HsfFace *data;
|
||||||
HsfFace *file_face_strip;
|
HsfFace *file_face_strip;
|
||||||
HsfFace *new_face_strip;
|
HsfFace *new_face_strip;
|
||||||
HsfTristrip *strip;
|
u8 *strip;
|
||||||
s32 i;
|
s32 i;
|
||||||
s32 j;
|
s32 j;
|
||||||
|
|
||||||
|
|
@ -418,14 +420,14 @@ static void FaceLoad(void)
|
||||||
new_face->name = SetName((u32 *)&file_face->name);
|
new_face->name = SetName((u32 *)&file_face->name);
|
||||||
new_face->count = file_face->count;
|
new_face->count = file_face->count;
|
||||||
new_face->data = (void *)((u32)data+(u32)temp_data);
|
new_face->data = (void *)((u32)data+(u32)temp_data);
|
||||||
strip = (HsfTristrip *)(&((HsfFace *)new_face->data)[new_face->count]);
|
strip = (u8 *)(&((HsfFace *)new_face->data)[new_face->count]);
|
||||||
}
|
}
|
||||||
new_face = temp_face;
|
new_face = temp_face;
|
||||||
for(i=0; i<head.face.count; i++, new_face++) {
|
for(i=0; i<head.face.count; i++, new_face++) {
|
||||||
file_face_strip = new_face_strip = new_face->data;
|
file_face_strip = new_face_strip = new_face->data;
|
||||||
for(j=0; j<new_face->count; j++, new_face_strip++, file_face_strip++) {
|
for(j=0; j<new_face->count; j++, new_face_strip++, file_face_strip++) {
|
||||||
if(file_face_strip->type == 4) {
|
if(AS_U16(file_face_strip->type) == 4) {
|
||||||
new_face_strip->strip.data = &strip[(u32)file_face_strip->strip.data];
|
new_face_strip->strip.data = (s16 *)(strip+(u32)file_face_strip->strip.data*(sizeof(s16)*4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -892,14 +894,14 @@ static void MapAttrLoad(void)
|
||||||
HsfMapAttr *mapattr_base;
|
HsfMapAttr *mapattr_base;
|
||||||
HsfMapAttr *mapattr_file;
|
HsfMapAttr *mapattr_file;
|
||||||
HsfMapAttr *mapattr_new;
|
HsfMapAttr *mapattr_new;
|
||||||
s16 *data;
|
u16 *data;
|
||||||
|
|
||||||
if(head.mapAttr.count) {
|
if(head.mapAttr.count) {
|
||||||
mapattr_file = mapattr_base = (HsfMapAttr *)((u32)fileptr+head.mapAttr.ofs);
|
mapattr_file = mapattr_base = (HsfMapAttr *)((u32)fileptr+head.mapAttr.ofs);
|
||||||
mapattr_new = mapattr_base;
|
mapattr_new = mapattr_base;
|
||||||
Model.mapAttrCnt = head.mapAttr.count;
|
Model.mapAttrCnt = head.mapAttr.count;
|
||||||
Model.mapAttr = mapattr_base;
|
Model.mapAttr = mapattr_base;
|
||||||
data = (s16 *)&mapattr_base[head.mapAttr.count];
|
data = (u16 *)&mapattr_base[head.mapAttr.count];
|
||||||
for(i=0; i<head.mapAttr.count; i++, mapattr_file++, mapattr_new++) {
|
for(i=0; i<head.mapAttr.count; i++, mapattr_file++, mapattr_new++) {
|
||||||
mapattr_new->data = &data[(u32)mapattr_file->data];
|
mapattr_new->data = &data[(u32)mapattr_file->data];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2063,10 +2063,10 @@ void Hu3DProjectionKill(s16 arg0) {
|
||||||
Hu3DProjection[arg0].unk_04 = NULL;
|
Hu3DProjection[arg0].unk_04 = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DProjectionPosSet(s16 arg0, Vec arg1, Vec arg2, Vec arg3) {
|
void Hu3DProjectionPosSet(s16 arg0, Vec* arg1, Vec* arg2, Vec* arg3) {
|
||||||
Hu3DProjection[arg0].unk_14 = arg1;
|
Hu3DProjection[arg0].unk_14 = *arg1;
|
||||||
Hu3DProjection[arg0].unk_20 = arg3;
|
Hu3DProjection[arg0].unk_20 = *arg3;
|
||||||
Hu3DProjection[arg0].unk_2C = arg2;
|
Hu3DProjection[arg0].unk_2C = *arg2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hu3DProjectionTPLvlSet(s16 arg0, f32 arg8) {
|
void Hu3DProjectionTPLvlSet(s16 arg0, f32 arg8) {
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue