From dd5b977ee0464760e5d541e1ca584da4e5f40dee Mon Sep 17 00:00:00 2001 From: mrshigure Date: Thu, 4 Apr 2024 23:07:25 -0700 Subject: [PATCH] Matched REL/w06/fire and bridge --- config/GMPE01_00/rels/w06Dll/symbols.txt | 166 +++++----- configure.py | 4 +- include/REL/w06Dll.h | 13 +- src/REL/w06Dll/bridge.c | 403 +++++++++++++++++++++++ src/REL/w06Dll/fire.c | 366 ++++++++++++++++++++ src/REL/w06Dll/main.c | 4 +- src/game/board/player.c | 2 +- 7 files changed, 869 insertions(+), 89 deletions(-) create mode 100755 src/REL/w06Dll/bridge.c create mode 100755 src/REL/w06Dll/fire.c diff --git a/config/GMPE01_00/rels/w06Dll/symbols.txt b/config/GMPE01_00/rels/w06Dll/symbols.txt index 511bbca8..dbc4f922 100644 --- a/config/GMPE01_00/rels/w06Dll/symbols.txt +++ b/config/GMPE01_00/rels/w06Dll/symbols.txt @@ -76,24 +76,24 @@ fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 scope:local fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 scope:local fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 scope:local fn_1_6EF0 = .text:0x00006EF0; // type:function size:0x90 -fn_1_6F80 = .text:0x00006F80; // type:function size:0x290 -fn_1_7210 = .text:0x00007210; // type:function size:0x94 -fn_1_72A4 = .text:0x000072A4; // type:function size:0x28 -fn_1_72CC = .text:0x000072CC; // type:function size:0x120 -fn_1_73EC = .text:0x000073EC; // type:function size:0xD0 -fn_1_74BC = .text:0x000074BC; // type:function size:0xB8 -fn_1_7574 = .text:0x00007574; // type:function size:0x100 -fn_1_7674 = .text:0x00007674; // type:function size:0xEC -fn_1_7760 = .text:0x00007760; // type:function size:0x1E4 -fn_1_7944 = .text:0x00007944; // type:function size:0x26C +fn_1_6F80 = .text:0x00006F80; // type:function size:0x290 scope:local +fn_1_7210 = .text:0x00007210; // type:function size:0x94 scope:local +fn_1_72A4 = .text:0x000072A4; // type:function size:0x28 scope:local +fn_1_72CC = .text:0x000072CC; // type:function size:0x120 scope:local +fn_1_73EC = .text:0x000073EC; // type:function size:0xD0 scope:local +fn_1_74BC = .text:0x000074BC; // type:function size:0xB8 scope:local +fn_1_7574 = .text:0x00007574; // type:function size:0x100 scope:local +fn_1_7674 = .text:0x00007674; // type:function size:0xEC scope:local +fn_1_7760 = .text:0x00007760; // type:function size:0x1E4 scope:local +fn_1_7944 = .text:0x00007944; // type:function size:0x26C scope:local fn_1_7BB0 = .text:0x00007BB0; // type:function size:0x38C fn_1_7F3C = .text:0x00007F3C; // type:function size:0x68 fn_1_7FA4 = .text:0x00007FA4; // type:function size:0x2C0 fn_1_8264 = .text:0x00008264; // type:function size:0xBC -fn_1_8320 = .text:0x00008320; // type:function size:0x100 -fn_1_8420 = .text:0x00008420; // type:function size:0x70 -fn_1_8490 = .text:0x00008490; // type:function size:0x5C8 -fn_1_8A58 = .text:0x00008A58; // type:function size:0x4C8 +fn_1_8320 = .text:0x00008320; // type:function size:0x100 scope:local +fn_1_8420 = .text:0x00008420; // type:function size:0x70 scope:local +fn_1_8490 = .text:0x00008490; // type:function size:0x5C8 scope:local +fn_1_8A58 = .text:0x00008A58; // type:function size:0x4C8 scope:local fn_1_8F20 = .text:0x00008F20; // type:function size:0x2B8 fn_1_91D8 = .text:0x000091D8; // type:function size:0xBC fn_1_9294 = .text:0x00009294; // type:function size:0x44 @@ -205,31 +205,31 @@ lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data: lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:float lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float @@ -288,37 +288,37 @@ lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 scope:local data:2byt lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 scope:local data:2byte lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x3 scope:local data:string lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x20 scope:local -lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 -lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 data:byte -lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte -lbl_1_data_22C = .data:0x0000022C; // type:object size:0x2 data:2byte -lbl_1_data_230 = .data:0x00000230; // type:object size:0x38 -lbl_1_data_268 = .data:0x00000268; // type:object size:0x5 data:string -lbl_1_data_26D = .data:0x0000026D; // type:object size:0xE -lbl_1_data_27B = .data:0x0000027B; // type:object size:0x4 -lbl_1_data_27F = .data:0x0000027F; // type:object size:0x8 -lbl_1_data_287 = .data:0x00000287; // type:object size:0x12 data:string -lbl_1_data_299 = .data:0x00000299; // type:object size:0x11 data:string -lbl_1_data_2AA = .data:0x000002AA; // type:object size:0x18 data:string -lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x17 data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x16 data:string -lbl_1_data_2EF = .data:0x000002EF; // type:object size:0x10 data:string -lbl_1_data_2FF = .data:0x000002FF; // type:object size:0x10 data:string -lbl_1_data_30F = .data:0x0000030F; // type:object size:0x11 data:string -lbl_1_data_320 = .data:0x00000320; // type:object size:0x15 data:string -lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 data:string -lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 data:string -lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 data:string -lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 data:string -lbl_1_data_380 = .data:0x00000380; // type:object size:0x11 data:string -lbl_1_data_394 = .data:0x00000394; // type:object size:0x38 -lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x4C -lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 data:2byte -lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 -lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 -lbl_1_data_44C = .data:0x0000044C; // type:object size:0xC -lbl_1_data_458 = .data:0x00000458; // type:object size:0x20 -lbl_1_data_478 = .data:0x00000478; // type:object size:0x20 +lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 scope:local +lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 scope:local data:byte +lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 scope:local data:2byte +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x2 scope:local data:2byte +lbl_1_data_230 = .data:0x00000230; // type:object size:0x38 scope:local +lbl_1_data_268 = .data:0x00000268; // type:object size:0x5 scope:local data:string +lbl_1_data_26D = .data:0x0000026D; // type:object size:0xE scope:local data:byte +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x4 scope:local data:byte +lbl_1_data_27F = .data:0x0000027F; // type:object size:0x8 scope:local data:byte +lbl_1_data_287 = .data:0x00000287; // type:object size:0x12 scope:local data:string +lbl_1_data_299 = .data:0x00000299; // type:object size:0x11 scope:local data:string +lbl_1_data_2AA = .data:0x000002AA; // type:object size:0x18 scope:local data:string +lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x17 scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x16 scope:local data:string +lbl_1_data_2EF = .data:0x000002EF; // type:object size:0x10 scope:local data:string +lbl_1_data_2FF = .data:0x000002FF; // type:object size:0x10 scope:local data:string +lbl_1_data_30F = .data:0x0000030F; // type:object size:0x11 scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0x15 scope:local data:string +lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 scope:local data:string +lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 scope:local data:string +lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 scope:local data:string +lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x11 scope:local data:string +lbl_1_data_394 = .data:0x00000394; // type:object size:0x38 scope:local +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x4C scope:local +lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 scope:local data:2byte +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 scope:local +lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 scope:local +lbl_1_data_44C = .data:0x0000044C; // type:object size:0xC scope:local +lbl_1_data_458 = .data:0x00000458; // type:object size:0x20 scope:local +lbl_1_data_478 = .data:0x00000478; // type:object size:0x20 scope:local lbl_1_data_498 = .data:0x00000498; // type:object size:0x2 data:2byte lbl_1_data_49A = .data:0x0000049A; // type:object size:0x2 data:2byte lbl_1_data_49C = .data:0x0000049C; // type:object size:0x2 data:2byte @@ -356,19 +356,19 @@ lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 scope:local data:byte lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 scope:local data:byte lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 scope:local lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x28 data:4byte -lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte -lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte -lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 data:2byte -lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x4 -lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x1 data:byte -lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte -lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte -lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x6 -lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0xC -lbl_1_bss_E2 = .bss:0x000000E2; // type:object size:0x2 data:2byte -lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 data:2byte -lbl_1_bss_E6 = .bss:0x000000E6; // type:object size:0x1 data:byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x4 scope:local +lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x1 scope:local data:byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x6 scope:local +lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0xC scope:local +lbl_1_bss_E2 = .bss:0x000000E2; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E6 = .bss:0x000000E6; // type:object size:0x1 scope:local data:byte lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 data:4byte lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 data:4byte lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 3fb21974..2c998e93 100644 --- a/configure.py +++ b/configure.py @@ -1141,8 +1141,8 @@ config.libs = [ Object(Matching, "REL/w06Dll/main.c"), Object(Matching, "REL/w06Dll/mg_item.c"), Object(Matching, "REL/w06Dll/mg_coin.c"), - Object(NonMatching, "REL/w06Dll/fire.c"), - Object(NonMatching, "REL/w06Dll/bridge.c"), + Object(Matching, "REL/w06Dll/fire.c"), + Object(Matching, "REL/w06Dll/bridge.c"), Object(NonMatching, "REL/w06Dll/bowser.c"), } ), diff --git a/include/REL/w06Dll.h b/include/REL/w06Dll.h index ed13f799..5423f049 100755 --- a/include/REL/w06Dll.h +++ b/include/REL/w06Dll.h @@ -7,6 +7,16 @@ enum { MAPOBJ_MAX = 6 }; +typedef struct { + struct { + u8 unk00_field0 : 1; + u8 unk00_field1 : 1; + u8 unk00_field2 : 1; + }; + s8 unk01; + s8 unk02; +} UnkW06BoardData; + extern void fn_1_D70(void); extern void fn_1_F6C(void); extern void fn_1_1054(void); // return s32? @@ -19,6 +29,7 @@ extern void fn_1_6EF0(void); // return s32? extern void fn_1_7BB0(void); extern void fn_1_7F3C(void); +extern void fn_1_7FA4(void); extern void fn_1_8264(s32 arg0, s16 arg1); extern void fn_1_8F20(void); @@ -31,6 +42,6 @@ extern void fn_1_CC90(void); extern void fn_1_CD0C(void); extern s16 lbl_1_bss_C[MAPOBJ_MAX]; -extern void *lbl_1_bss_0; +extern UnkW06BoardData *lbl_1_bss_0; #endif diff --git a/src/REL/w06Dll/bridge.c b/src/REL/w06Dll/bridge.c new file mode 100755 index 00000000..1fa213d6 --- /dev/null +++ b/src/REL/w06Dll/bridge.c @@ -0,0 +1,403 @@ +#include "REL/w06Dll.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/process.h" +#include "game/window.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/window.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + struct { + u8 unk00_field0 : 1; + u8 unk00_field1 : 1; + u8 unk00_field2 : 1; + u8 unk00_field3 : 1; + u8 unk00_field4 : 1; + }; + u8 unk01; + s8 unk02; + s8 unk03; + s16 unk04; + char unk06[2]; + float unk08; +} BssCCWork; + +static void fn_1_8320(void); +static void fn_1_8420(void); +static s32 fn_1_8490(s32 arg0, s8 arg1); +static void fn_1_8A58(omObjData *arg0); + +static s8 lbl_1_bss_E6; +static s16 lbl_1_bss_E4; +static s16 lbl_1_bss_E2; +static s16 lbl_1_bss_D6[3][2]; +static s16 lbl_1_bss_D0[3]; +static omObjData *lbl_1_bss_CC; +static Process *lbl_1_bss_C8; + +static s16 lbl_1_data_418 = -1; + +static float lbl_1_data_41C[][2] = { + { 90.0f, 180.0f }, + { -90.0f, 0.0f }, + { 180.0f, 0.0f } +}; + +static s32 lbl_1_data_434[][2] = { + { 0x00000200, 0x00000100 }, + { 0x00000080, 0x00000040 }, + { 0x00000800, 0x00000400 } +}; + +static s32 lbl_1_data_44C[] = { + DATA_MAKE_NUM(DATADIR_W06, 3), + DATA_MAKE_NUM(DATADIR_W06, 3), + DATA_MAKE_NUM(DATADIR_W06, 4) +}; + +static s32 lbl_1_data_458[8] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 26), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 26), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 26), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 26), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 26), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 26), +}; + +static s32 lbl_1_data_478[8] = { + DATA_MAKE_NUM(DATADIR_W06, 30), + DATA_MAKE_NUM(DATADIR_W06, 31), + DATA_MAKE_NUM(DATADIR_W06, 32), + DATA_MAKE_NUM(DATADIR_W06, 33), + DATA_MAKE_NUM(DATADIR_W06, 34), + DATA_MAKE_NUM(DATADIR_W06, 35), + DATA_MAKE_NUM(DATADIR_W06, 36), + DATA_MAKE_NUM(DATADIR_W06, 37) +}; + +void fn_1_7BB0(void) { + Vec sp8; + float var_f29; + BoardSpace *var_r26; + s16 temp_r27; + s32 var_r28; + s32 i; + + if (GWSystem.star_pos < 4) { + lbl_1_bss_0->unk00_field2 = 0; + } else { + lbl_1_bss_0->unk00_field2 = 1; + } + for (i = 0; i < 3; i++) { + lbl_1_bss_D0[i] = BoardModelCreate(lbl_1_data_44C[i], NULL, 0); + switch (i) { + case 0: + var_r28 = (lbl_1_bss_0->unk00_field0 != 0) ? 1 : 0; + OSs8tof32(&lbl_1_bss_0->unk01, &var_f29); + break; + case 1: + var_r28 = (lbl_1_bss_0->unk00_field1 != 0) ? 1 : 0; + OSs8tof32(&lbl_1_bss_0->unk02, &var_f29); + break; + case 2: + var_r28 = (lbl_1_bss_0->unk00_field2 != 0) ? 1 : 0; + var_f29 = 0.0f; + break; + } + temp_r27 = BoardSpaceFlagPosGet(0, lbl_1_data_434[i][var_r28], &sp8); + BoardModelPosSetV(lbl_1_bss_D0[i], &sp8); + BoardModelRotYSet(lbl_1_bss_D0[i], lbl_1_data_41C[i][var_r28]); + BoardModelMotionShiftSet(lbl_1_bss_D0[i], 0, 60.0f * var_f29, 0.0f, 0); + HuPrcSleep(2); + BoardModelMotionSpeedSet(lbl_1_bss_D0[i], 0.0f); + lbl_1_bss_D6[i][var_r28] = temp_r27; + temp_r27 = BoardSpaceFlagSearch(0, lbl_1_data_434[i][var_r28 ^ 1]); + var_r26 = BoardSpaceGet(0, temp_r27); + var_r26->flag |= 0x04000000; + lbl_1_bss_D6[i][var_r28 ^ 1] = temp_r27; + } +} + +void fn_1_7F3C(void) { + s32 i; + + for (i = 0; i < 3; i++) { + BoardModelKill(lbl_1_bss_D0[i]); + lbl_1_bss_D0[i] = -1; + } +} + +void fn_1_7FA4(void) { + Vec sp8; + float temp_f31; + BoardSpace *temp_r3; + s16 temp_r30; + s16 temp_r29; + s16 var_r31; + + if (GWSystem.star_pos < 4) { + lbl_1_bss_0->unk00_field2 = 0; + } else { + lbl_1_bss_0->unk00_field2 = 1; + } + var_r31 = 2; + temp_r30 = (lbl_1_bss_0->unk00_field2 != 0) ? 1 : 0; + temp_f31 = 0.0f; + temp_r29 = BoardSpaceFlagPosGet(0, lbl_1_data_434[var_r31][temp_r30], &sp8); + BoardModelPosSetV(lbl_1_bss_D0[var_r31], &sp8); + BoardModelRotYSet(lbl_1_bss_D0[var_r31], lbl_1_data_41C[var_r31][temp_r30]); + BoardModelMotionShiftSet(lbl_1_bss_D0[var_r31], 0, 60.0f * temp_f31, 0.0f, 0); + HuPrcSleep(2); + BoardModelMotionSpeedSet(lbl_1_bss_D0[var_r31], 0.0f); + lbl_1_bss_D6[var_r31][temp_r30] = temp_r29; + temp_r29 = BoardSpaceFlagSearch(0, lbl_1_data_434[var_r31][temp_r30]); + temp_r3 = BoardSpaceGet(0, temp_r29); + temp_r3->flag &= ~0x04000000; + temp_r29 = BoardSpaceFlagSearch(0, lbl_1_data_434[var_r31][temp_r30 ^ 1]); + temp_r3 = BoardSpaceGet(0, temp_r29); + temp_r3->flag |= 0x04000000; + lbl_1_bss_D6[var_r31][temp_r30 ^ 1] = temp_r29; +} + +void fn_1_8264(s32 arg0, s16 arg1) { + BoardDiceDigit2DShowSet(0); + lbl_1_bss_E6 = arg0; + lbl_1_bss_E4 = arg1; + lbl_1_bss_C8 = HuPrcChildCreate(fn_1_8320, 0x2003, 0x3800, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_C8, fn_1_8420); + while (lbl_1_bss_C8) { + HuPrcVSleep(); + } + BoardDiceDigit2DShowSet(1); +} + +static void fn_1_8320(void) { + s32 temp_r30; + s8 *var_r31; + BoardSpace *var_r29; + + temp_r30 = GWSystem.player_curr; + if (lbl_1_bss_E6 != 0) { + var_r31 = &lbl_1_bss_0->unk02; + } else { + var_r31 = &lbl_1_bss_0->unk01; + } + var_r29 = BoardSpaceGet(0, lbl_1_bss_E4); + lbl_1_bss_E2 = var_r29->link[0]; + GWPlayer[temp_r30].space_curr = lbl_1_bss_E2; + fn_1_8490(temp_r30, *var_r31); + (*var_r31)++; + if (*var_r31 >= 3) { + *var_r31 = 0; + } + HuPrcEnd(); +} + +static void fn_1_8420(void) { + if (lbl_1_data_418 != -1) { + BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_418); + lbl_1_data_418 = -1; + } + lbl_1_bss_C8 = NULL; +} + +static s32 fn_1_8490(s32 arg0, s8 arg1) { + Vec sp24; + Vec sp18; + Vec spC; + float temp_f30; + float var_f29; + float var_f28; + s32 temp_r27; + omObjData *var_r26; + BssCCWork *temp_r29; + s8 var_r28; + + BoardPlayerPosGet(arg0, &sp18); + BoardSpacePosGet(0, lbl_1_bss_E2, &sp24); + PSVECSubtract(&sp24, &sp18, &spC); + temp_f30 = 180.0 * (atan2(spC.x, spC.z) / M_PI); + BoardPlayerMotBlendSet(arg0, temp_f30, 0xF); + while (!BoardPlayerMotBlendCheck(arg0)) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(arg0); + HuPrcSleep(11); + temp_r27 = GWPlayer[arg0].character; + switch (arg1) { + case 0: + lbl_1_data_418 = -1; + var_f29 = 60.0f; + var_f28 = 1.0f; + break; + case 1: + lbl_1_data_418 = BoardPlayerMotionCreate(arg0, lbl_1_data_478[temp_r27]); + var_f29 = 50.0f; + var_f28 = 2.5f; + if (GWPlayer[arg0].bowser_suit) { + BoardPlayerIdleSet(arg0); + HuPrcSleep(30); + } else { + BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, 0); + BoardPlayerMotionSpeedSet(arg0, 1.5f); + HuPrcSleep(60); + } + break; + case 2: + lbl_1_data_418 = BoardPlayerMotionCreate(arg0, lbl_1_data_458[temp_r27]); + var_f29 = 40.0f; + var_f28 = 2.0f; + if (GWPlayer[arg0].bowser_suit) { + BoardPlayerIdleSet(arg0); + HuPrcSleep(30); + } else { + BoardPlayerMotionShiftSet(arg0, lbl_1_data_418, 0.0f, 6.0f, 0x40000001); + BoardPlayerMotionSpeedSet(arg0, 3.0f); + HuPrcSleep(60); + } + break; + } + var_r26 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_8A58); + lbl_1_bss_CC = var_r26; + temp_r29 = OM_GET_WORK_PTR(var_r26, BssCCWork); + temp_r29->unk00_field0 = 0; + temp_r29->unk00_field1 = 0; + temp_r29->unk00_field2 = 0; + temp_r29->unk00_field3 = 0; + temp_r29->unk00_field4 = 0; + temp_r29->unk01 = 0; + temp_r29->unk03 = arg1; + temp_r29->unk02 = 0; + temp_r29->unk04 = lbl_1_bss_D0[lbl_1_bss_E6]; + OSs8tof32(&arg1, &temp_r29->unk08); + temp_r29->unk08 = 60.0f * (temp_r29->unk08 + 1.0f); + BoardPlayerPosLerpStart(arg0, &sp18, &sp24, var_f29); + BoardPlayerMotionSpeedSet(arg0, var_f28); + for (var_r28 = 0; GWPlayer[arg0].moving; var_r28++) { + if (!(var_r28 & 0xF)) { + omVibrate(arg0, 12, 6, 6); + } + HuPrcVSleep(); + } + temp_f30 -= 180.0f; + BoardPlayerMotBlendSet(arg0, temp_f30, 0xF); + while (!BoardPlayerMotBlendCheck(arg0)) { + HuPrcVSleep(); + } + while (lbl_1_bss_CC) { + HuPrcVSleep(); + } + HuPrcSleep(30); + if (arg1 == 2) { + BoardWinCreate(0, MAKE_MESSID(48, 40), -1); + BoardWinWait(); + BoardWinKill(); + } + BoardCameraTargetPlayerSet(arg0); + BoardCameraViewSet(1); + temp_f30 += 180.0f; + BoardPlayerMotBlendSet(arg0, temp_f30, 0xF); + while (!BoardPlayerMotBlendCheck(arg0)) { + HuPrcVSleep(); + } + BoardCameraMotionWait(); + if (arg1 == 1) { + BoardWinCreate(0, MAKE_MESSID(48, 15), -1); + BoardWinWait(); + BoardWinKill(); + } + return 0; +} + +static void fn_1_8A58(omObjData *arg0) { + Vec sp8; + u8 var_r30; + BoardSpace *var_r29; + BssCCWork *temp_r31; + + temp_r31 = OM_GET_WORK_PTR(arg0, BssCCWork); + if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { + lbl_1_bss_CC = NULL; + omDelObjEx(HuPrcCurrentGet(), arg0); + return; + } + if (temp_r31->unk01 != 0) { + temp_r31->unk01--; + return; + } + if (temp_r31->unk00_field1 != 0 && temp_r31->unk00_field4 == 0) { + BoardModelMotionStart(temp_r31->unk04, 0, 0); + BoardModelMotionTimeSet(temp_r31->unk04, temp_r31->unk08 - 60.0f); + BoardModelMotionSpeedSet(temp_r31->unk04, 1.0f); + temp_r31->unk00_field4 = 1; + } + if (temp_r31->unk00_field2 != 0) { + HuAudFXPlay(0x49C); + temp_r31->unk00_field2 = 0; + } + if (temp_r31->unk00_field3 != 0) { + HuAudFXPlay(0x49D); + temp_r31->unk00_field3 = 0; + } + switch (temp_r31->unk02) { + case 0: + if (temp_r31->unk00_field1 == 0) { + if (GWPlayer[GWSystem.player_curr].bowser_suit != 0) { + temp_r31->unk01 = 72; + } else { + temp_r31->unk01 = 30; + } + temp_r31->unk00_field2 = 1; + temp_r31->unk00_field1 = 1; + break; + } + if (BoardModelMotionTimeGet(temp_r31->unk04) >= temp_r31->unk08) { + BoardModelMotionTimeSet(temp_r31->unk04, temp_r31->unk08); + BoardModelMotionSpeedSet(temp_r31->unk04, 0.0f); + if (temp_r31->unk03 == 2) { + temp_r31->unk01 = 30; + temp_r31->unk02 = 1; + temp_r31->unk00_field3 = 1; + } else { + temp_r31->unk00_field0 = 1; + } + } + break; + case 1: + if (lbl_1_bss_E6 == 0) { + var_r30 = lbl_1_bss_0->unk00_field0; + lbl_1_bss_0->unk00_field0 ^= 1; + } else { + var_r30 = lbl_1_bss_0->unk00_field1; + lbl_1_bss_0->unk00_field1 ^= 1; + } + var_r29 = BoardSpaceGet(0, lbl_1_bss_D6[lbl_1_bss_E6][var_r30]); + var_r29->flag |= 0x04000000; + var_r29 = BoardSpaceGet(0, lbl_1_bss_D6[lbl_1_bss_E6][var_r30 ^ 1]); + var_r29->flag &= ~0x04000000; + BoardSpacePosGet(0, lbl_1_bss_D6[lbl_1_bss_E6][var_r30 ^ 1], &sp8); + BoardModelMotionStart(temp_r31->unk04, 0, 0); + BoardModelMotionTimeSet(temp_r31->unk04, 180.0f); + BoardModelPosSetV(temp_r31->unk04, &sp8); + BoardModelRotYSet(temp_r31->unk04, lbl_1_data_41C[lbl_1_bss_E6][var_r30 ^ 1]); + BoardCameraTargetModelSet(temp_r31->unk04); + temp_r31->unk02 = 2; + break; + case 2: + if (BoardModelMotionEndCheck(temp_r31->unk04) && BoardCameraMotionIsDone()) { + temp_r31->unk00_field0 = 1; + } + break; + } +} diff --git a/src/REL/w06Dll/fire.c b/src/REL/w06Dll/fire.c new file mode 100755 index 00000000..1ea92d36 --- /dev/null +++ b/src/REL/w06Dll/fire.c @@ -0,0 +1,366 @@ +#include "REL/w06Dll.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/objsub.h" +#include "game/process.h" +#include "game/window.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/window.h" + +#include "dolphin.h" +#include "math.h" + +static void fn_1_6F80(void); +static void fn_1_7210(void); +static s32 fn_1_72A4(void); +static void fn_1_72CC(s32 arg0); +static void fn_1_73EC(float arg0); +static void fn_1_74BC(s32 arg0); +static void fn_1_7574(void); +static void fn_1_7674(s32 arg0); +static void fn_1_7760(s32 arg0); +static s32 fn_1_7944(s32 arg0); + +static s8 lbl_1_bss_C6; +static s8 lbl_1_bss_C2[4]; +static s16 lbl_1_bss_C0; +static s32 lbl_1_bss_BC; +static s32 lbl_1_bss_B8; +static u8 lbl_1_bss_94_gap[0x24]; +static Process *lbl_1_bss_90; + +static s32 lbl_1_data_208[8] = { + 0x00000123, + 0x00000163, + 0x000001A3, + 0x000001E3, + 0x00000223, + 0x00000263, + 0x000002A3, + 0x000002E3 +}; + +static s8 lbl_1_data_228 = -1; +static s16 lbl_1_data_22A = -1; +static s16 lbl_1_data_22C = -1; +static s16 lbl_1_data_22E = -1; + +static s32 lbl_1_data_230[] = { + MAKE_MESSID(8, 14), + MAKE_MESSID(8, 15), + MAKE_MESSID(8, 16), + MAKE_MESSID(8, 17), + MAKE_MESSID(8, 18), + MAKE_MESSID(8, 19), + MAKE_MESSID(8, 20), + MAKE_MESSID(8, 21), + MAKE_MESSID(8, 22), + MAKE_MESSID(8, 23), + MAKE_MESSID(8, 24), + MAKE_MESSID(8, 25), + MAKE_MESSID(8, 26), + MAKE_MESSID(8, 27) +}; + +void fn_1_6EF0(void) { + BoardDiceDigit2DShowSet(0); + lbl_1_bss_90 = HuPrcChildCreate(fn_1_6F80, 0x2003, 0x3800, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_90, fn_1_7210); + while (lbl_1_bss_90) { + HuPrcVSleep(); + } + BoardDiceDigit2DShowSet(1); +} + +static void fn_1_6F80(void) { + s32 temp_r31; + s32 sp8; + + lbl_1_bss_B8 = -1; + temp_r31 = GWSystem.player_curr; + sp8 = GWPlayer[temp_r31].space_curr; + if (BoardSpaceFlagGet(0, GWPlayer[temp_r31].space_curr) & 0x2000) { + lbl_1_bss_C6 = 0; + lbl_1_bss_C0 = lbl_1_bss_C[2]; + lbl_1_bss_BC = 0x4A6; + } else { + lbl_1_bss_C6 = 1; + lbl_1_bss_C0 = lbl_1_bss_C[3]; + lbl_1_bss_BC = 0x49B; + } + fn_1_72CC(temp_r31); + fn_1_7760(temp_r31); + BoardCameraMotionWait(); + BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 0.0f, 8.0f, 0x40000001); + HuPrcSleep(8); + while (BoardModelMotionTimeGet(lbl_1_bss_C0) < 22.0f) { + HuPrcVSleep(); + } + fn_1_7674(temp_r31); + BoardModelMotionStartEndSet(lbl_1_bss_C0, 30, 60); + lbl_1_data_228 = 2; + HuPrcSleep(30); + fn_1_74BC(1); + while (!BoardModelMotionEndCheck(lbl_1_data_22C)) { + HuPrcVSleep(); + } + lbl_1_data_228 = 3; + BoardModelHookReset(lbl_1_bss_C0); + if (lbl_1_bss_B8 != -1) { + HuAudFXStop(lbl_1_bss_B8); + } + BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 60.0f, 8.0f, 0); + fn_1_73EC(0.0f); + fn_1_7574(); + while (!BoardModelMotionEndCheck(lbl_1_bss_C0)) { + HuPrcVSleep(); + } + BoardPlayerPostTurnHookSet(temp_r31, fn_1_72A4); + HuPrcEnd(); +} + +static void fn_1_7210(void) { + if (lbl_1_data_22C != -1) { + BoardModelKill(lbl_1_data_22C); + lbl_1_data_22C = -1; + } + if (lbl_1_data_22A != -1) { + BoardModelKill(lbl_1_data_22A); + lbl_1_data_22A = -1; + } + lbl_1_bss_90 = NULL; +} + +static s32 fn_1_72A4(void) { + fn_1_74BC(0); + return 1; +} + +static void fn_1_72CC(s32 arg0) { + Vec sp24; + Vec sp18; + Vec spC; + s32 var_r30; + s32 i; + + if (lbl_1_bss_C6 == 0) { + var_r30 = 0x2000; + } else { + var_r30 = 0x1000; + } + BoardPlayerPosGet(arg0, &sp18); + BoardModelPosGet(lbl_1_bss_C0, &sp24); + PSVECSubtract(&sp24, &sp18, &spC); + for (i = 0; i < 4; i++) { + if (var_r30 & BoardSpaceFlagGet(0, GWPlayer[i].space_curr)) { + lbl_1_bss_C2[i] = 1; + } else { + lbl_1_bss_C2[i] = 0; + } + } + fn_1_73EC(180.0 * (atan2(spC.x, spC.z) / M_PI)); +} + +static void fn_1_73EC(float arg0) { + s32 var_r30; + s32 i; + + for (i = 0; i < 4; i++) { + if (lbl_1_bss_C2[i] != 0) { + BoardPlayerMotBlendSet(i, arg0, 15); + } + } + do { + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (lbl_1_bss_C2[i] != 0 && !BoardPlayerMotBlendCheck(i)) { + var_r30 = 1; + } + } + HuPrcVSleep(); + } while (var_r30 != 0); +} + +static void fn_1_74BC(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (lbl_1_bss_C2[i] == 0) { + continue; + } + if (arg0 != 0) { + omVibrate(i, 12, 4, 2); + HuAudFXPlay(lbl_1_data_208[GWPlayer[i].character]); + } + BoardPlayerCopyEyeMat(i, arg0); + } +} + +static void fn_1_7574(void) { + s32 temp_r3; + s32 temp_r29; + s32 temp_r28; + s32 i; + + for (i = 0; i < 4; i++) { + if (lbl_1_bss_C2[i] == 0) { + continue; + } + temp_r3 = fn_1_7944(i); + if (temp_r3 != -1) { + temp_r29 = GWPlayer[i].items[temp_r3]; + BoardPlayerItemRemove(i, temp_r3); + temp_r28 = BoardPlayerGetCharMess(i); + BoardWinCreate(0, MAKE_MESSID(48, 16), -1); + BoardWinInsertMesSet(temp_r28, 0); + BoardWinInsertMesSet(lbl_1_data_230[temp_r29], 1); + BoardWinPlayerSet(i); + BoardWinWait(); + BoardWinKill(); + } + } +} + +static void fn_1_7674(s32 arg0) { + Vec sp8; + float var_f31; + + if (lbl_1_bss_C6 == 0) { + var_f31 = -90.0f; + } else { + var_f31 = 90.0f; + } + lbl_1_data_22C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 15), NULL, 0); + BoardModelPosGet(lbl_1_bss_C0, &sp8); + BoardModelMotionStart(lbl_1_data_22C, 0, 0); + BoardModelHookSet(lbl_1_bss_C0, "fire", lbl_1_data_22C); + lbl_1_bss_B8 = HuAudFXPlay(lbl_1_bss_BC); +} + +static void fn_1_7760(s32 arg0) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + u32 var_r30; + u32 var_r28; + s16 var_r29; + s32 i; + + if (lbl_1_bss_C6 == 0) { + var_r30 = 0x6000; + } else { + var_r30 = 0x5000; + } + for (var_r29 = i = 0; i < BoardSpaceCountGet(0); i++) { + var_r28 = BoardSpaceFlagGet(0, i + 1); + if (var_r30 == (var_r28 & var_r30)) { + var_r29 = i + 1; + break; + } + } + BoardModelPosGet(lbl_1_bss_C0, &sp20); + BoardSpacePosGet(0, var_r29, &sp2C); + PSVECSubtract(&sp2C, &sp20, &sp8); + sp8.x *= 0.4f; + sp8.y *= 0.4f; + sp8.z *= 0.4f; + PSVECAdd(&sp20, &sp8, &sp2C); + lbl_1_data_22A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0); + BoardModelVisibilitySet(lbl_1_data_22A, 0); + BoardModelPosSetV(lbl_1_data_22A, &sp2C); + sp14.x = 0.0f; + sp14.y = 200.0f; + sp14.z = 0.0f; + BoardCameraMotionStartEx(lbl_1_data_22A, 0, &sp14, 2500.0f, -1.0f, 21); + BoardCameraMotionWait(); +} + +static s8 lbl_1_data_26D[] = { + 0, 0, 1, 1, 0, + 0, 1, 1, 1, 1, + 2, 2, 2, 2 +}; + +static s8 lbl_1_data_27B[] = { 40, 30, 20, 10 }; + +static s8 lbl_1_data_27F[4][2] = { + { 35, 80 }, { 30, 70 }, + { 20, 60 }, { 10, 50 } +}; + +static s32 fn_1_7944(s32 arg0) { + s8 spB[3]; + s8 sp8[3]; + s32 var_r25; + s32 temp_r26; + s32 var_r30; + s32 temp_r27; + s32 var_r31; + s32 i; + + var_r25 = BoardPlayerItemCount(arg0); + if (var_r25 == 0) { + return -1; + } + for (var_r30 = i = 0; i < 3; i++) { + temp_r26 = GWPlayer[arg0].items[i]; + if (temp_r26 != -1) { + spB[var_r30] = temp_r26; + sp8[var_r30] = i; + var_r30++; + } + } + if (var_r30 == 0) { + return -1; + } + if (var_r30 == 1) { + return 0; + } + temp_r27 = BoardRandMod(100); + if (lbl_1_data_26D[spB[0]] > lbl_1_data_26D[spB[1]]) { + if (lbl_1_data_27B[GWPlayer[arg0].rank] > temp_r27) { + var_r31 = 1; + } else { + var_r31 = 0; + } + } else if (lbl_1_data_27B[GWPlayer[arg0].rank] > temp_r27) { + var_r31 = 0; + } else { + var_r31 = 1; + } + if (var_r30 == 3) { + if (lbl_1_data_26D[spB[var_r31]] > lbl_1_data_26D[spB[2]]) { + if (lbl_1_data_27F[GWPlayer[arg0].rank][1] > temp_r27) { + var_r31 = 2; + } + } else if (lbl_1_data_27F[GWPlayer[arg0].rank][1] < temp_r27) { + var_r31 = 2; + } + } + var_r31 = sp8[var_r31]; + return var_r31; +} + +static char *lbl_1_data_394[] = { + "01 : CHIBI KINOKO", + "02 : DEKA KINOKO", + "03 : SUPER CHIBI KINOKO", + "04 : SUPER DEKA KINOKO", + "05 : DEKACHIBI HAMMER", + "06 : WARP DOKAN", + "07 : TRADE CARD", + "08 : BIRI-Q SEAL", + "09 : TERE-YOKE LIGHT", + "10 : WAN-WAN WHISTLE", + "11 : KOOPA SUIT", + "12 : TERESA SUISYO", + "13 : MAJIN NO LAMP", + "14 : ITEM BUKURO" +}; + +static u8 lbl_1_data_3CC[0x4C] = { 0 }; diff --git a/src/REL/w06Dll/main.c b/src/REL/w06Dll/main.c index fd5e1d78..d629ed78 100755 --- a/src/REL/w06Dll/main.c +++ b/src/REL/w06Dll/main.c @@ -52,7 +52,7 @@ static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = { static omObjData *lbl_1_bss_8; static s32 lbl_1_bss_4; -void *lbl_1_bss_0; +UnkW06BoardData *lbl_1_bss_0; static s16 lbl_1_data_F0 = -1; static s16 lbl_1_data_F2 = -1; @@ -87,7 +87,7 @@ void BoardCreate(void) { s32 *var_r29; s32 i; - lbl_1_bss_0 = GWSystem.board_data; + lbl_1_bss_0 = (UnkW06BoardData*) GWSystem.board_data; BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W06, 0)); lbl_1_data_F0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 1), NULL, 0); fn_8006DDE8(lbl_1_data_F0, -1.0f); diff --git a/src/game/board/player.c b/src/game/board/player.c index 75e8692d..9be100ed 100644 --- a/src/game/board/player.c +++ b/src/game/board/player.c @@ -1782,7 +1782,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { temp_r26 = OM_GET_WORK_PTR(temp_r3, bitcopy2); temp_r26->field00_bit0 = 1; - for (var_r19 = 0; var_r19 < 180; var_r19++) { + for (var_r19 = 0; var_r19 < 180U; var_r19++) { if (BoardPlayerMotBlendCheck(arg0) != 0) break; HuPrcVSleep();