diff --git a/config/GMPE01_00/rels/w06Dll/symbols.txt b/config/GMPE01_00/rels/w06Dll/symbols.txt index 5be0a806..511bbca8 100644 --- a/config/GMPE01_00/rels/w06Dll/symbols.txt +++ b/config/GMPE01_00/rels/w06Dll/symbols.txt @@ -52,29 +52,29 @@ fn_1_4460 = .text:0x00004460; // type:function size:0x418 scope:local fn_1_4878 = .text:0x00004878; // type:function size:0x198 fn_1_4A10 = .text:0x00004A10; // type:function size:0x50 fn_1_4A60 = .text:0x00004A60; // type:function size:0xA0 -fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 -fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 -fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 -fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 -fn_1_519C = .text:0x0000519C; // type:function size:0x204 -fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 -fn_1_5490 = .text:0x00005490; // type:function size:0x23C -fn_1_56CC = .text:0x000056CC; // type:function size:0x110 -fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 -fn_1_587C = .text:0x0000587C; // type:function size:0x80 -fn_1_58FC = .text:0x000058FC; // type:function size:0x6C -fn_1_5968 = .text:0x00005968; // type:function size:0x68 -fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C -fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 -fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 -fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 -fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 -fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C -fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 -fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 -fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 -fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 -fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 +fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 scope:local +fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 scope:local +fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 scope:local +fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 scope:local +fn_1_519C = .text:0x0000519C; // type:function size:0x204 scope:local +fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 scope:local +fn_1_5490 = .text:0x00005490; // type:function size:0x23C scope:local +fn_1_56CC = .text:0x000056CC; // type:function size:0x110 scope:local +fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 scope:local +fn_1_587C = .text:0x0000587C; // type:function size:0x80 scope:local +fn_1_58FC = .text:0x000058FC; // type:function size:0x6C scope:local +fn_1_5968 = .text:0x00005968; // type:function size:0x68 scope:local +fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C scope:local +fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 scope:local +fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 scope:local +fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 scope:local +fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 scope:local +fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C scope:local +fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 scope:local +fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 scope:local +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 @@ -170,41 +170,41 @@ lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:f lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 -lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC data:4byte -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 scope:local data:byte +lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 scope:local data:byte +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local 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 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local 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:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +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 @@ -283,11 +283,11 @@ lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 scope:local data:2byt lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC scope:local lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 scope:local data:string lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0xE scope:local data:byte -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte -lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 data:2byte -lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6 -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x20 +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 scope:local data:2byte +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 @@ -347,15 +347,15 @@ lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 scope:local data:byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 scope:local data:2byte lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 scope:local lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x6 scope:local data:2byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 data:byte -lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 data:byte -lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 data:byte -lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 -lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 scope:local data:byte +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 diff --git a/configure.py b/configure.py index 6efda49e..d099d8f9 100644 --- a/configure.py +++ b/configure.py @@ -1140,7 +1140,7 @@ config.libs = [ Object(Matching, "REL/board_executor.c"), Object(Matching, "REL/w06Dll/main.c"), Object(Matching, "REL/w06Dll/mg_item.c"), - Object(NonMatching, "REL/w06Dll/mg_coin.c"), + Object(Matching, "REL/w06Dll/mg_coin.c"), Object(NonMatching, "REL/w06Dll/fire.c"), Object(NonMatching, "REL/w06Dll/bridge.c"), Object(NonMatching, "REL/w06Dll/bowser.c"), diff --git a/include/game/board/space.h b/include/game/board/space.h index 70ed236f..8c7aa9d5 100644 --- a/include/game/board/space.h +++ b/include/game/board/space.h @@ -48,6 +48,7 @@ s32 BoardSpaceStarGet(s32 index); s32 BoardSpaceStarGetCurr(void); s32 BoardSpaceStarCheck(s32 index); void BoardSpaceLandExec(s32 player, s32 space); +void BoardSpaceCameraSet(u16 mask); void BoardSpaceBlockPosSet(void); void BoardSpaceInit(s32 data_num); diff --git a/src/REL/w06Dll/mg_coin.c b/src/REL/w06Dll/mg_coin.c new file mode 100755 index 00000000..b7d0346f --- /dev/null +++ b/src/REL/w06Dll/mg_coin.c @@ -0,0 +1,757 @@ +#include "REL/w06Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/window.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/space.h" +#include "game/board/window.h" + +#include "dolphin.h" +#include "math.h" + +typedef struct { + struct { + u8 unk00_field0 : 1; + u8 unk00_field1 : 4; + u8 unk00_field2 : 1; + }; + u8 unk01; + u8 unk02; + char unk03[1]; + s16 unk04; +} Bss4CWork; + +typedef struct { + struct { + u8 unk00_field0 : 1; + u8 unk00_field1 : 2; + u8 unk00_field2 : 4; + }; + u8 unk01; + s16 unk02; + s16 unk04; +} Bss50Work; + +// Seems to be the same struct used in w03Dll/mg_coin (unkTemp) +typedef struct { + /* 0x00 */ s8 unk00; + /* 0x01 */ u8 unk01; + /* 0x02 */ s16 unk02; + /* 0x04 */ float unk04; + /* 0x08 */ Vec unk08; +} Bss54WorkData; // Size 0x14 + +// Seems to be the same struct used in w03Dll/mg_coin (unkTemp2) +typedef struct { + struct { + u8 unk00_field0 : 1; + }; + char unk01[3]; + s8 unk04; + char unk05[3]; + float unk08; + Bss54WorkData *unk0C; +} Bss54Work; + +static void fn_1_4B00(void); +static void fn_1_4BA0(void); +static s32 fn_1_4BF8(s32 arg0); +static void fn_1_4FB8(s32 arg0); +static void fn_1_519C(s32 arg0); +static void fn_1_53A0(void); +static void fn_1_5490(s32 arg0); +static void fn_1_56CC(omObjData *arg0); +static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1); +static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1); +static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1); +static void fn_1_5968(Vec *arg0); +static void fn_1_59D0(s32 arg0); +static s32 fn_1_5B0C(void); +static void fn_1_5B54(s32 arg0); +static void fn_1_5CE4(s32 arg0); +static s32 fn_1_5EBC(void); +static void fn_1_5EFC(Vec *arg0); +static void fn_1_5F58(s32 arg0, u32 *arg1); +static void fn_1_606C(omObjData *arg0); +static void fn_1_6A0C(omObjData *arg0); +static void fn_1_6C4C(s32 arg0); +static void fn_1_6E90(Bss54Work *arg0); + +static s32 lbl_1_bss_8C; +static char lbl_1_bss_5B[49]; +static s8 lbl_1_bss_5A; +static s8 lbl_1_bss_59; +static s8 lbl_1_bss_58; +static omObjData *lbl_1_bss_54; +static omObjData *lbl_1_bss_50; +static omObjData *lbl_1_bss_4C; +static Process *lbl_1_bss_48; + +static const u8 lbl_1_rodata_F0[] = { + 20, 15, 10, 5, 1 +}; + +static const u8 lbl_1_rodata_F5[] = { + 10, 7, 5, 3, 0, 0, 0 +}; + +static s16 lbl_1_data_1D8 = -1; +static s16 lbl_1_data_1DA = -1; +static s16 lbl_1_data_1DC = -1; + +void fn_1_4878(void) { + Vec sp8; + float temp_f31; + + lbl_1_data_1DC = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 7), NULL, 0); + temp_f31 = 0.3f; + BoardModelPosGet(lbl_1_bss_C[0], &sp8); + sp8.x += 115.0 * sin(M_PI); + sp8.z += 115.0 * cos(M_PI); + sp8.x -= 225.0f; + BoardModelPosSetV(lbl_1_data_1DC, &sp8); + BoardModelRotYSet(lbl_1_data_1DC, 90.0f); + BoardModelScaleSet(lbl_1_data_1DC, temp_f31, temp_f31, temp_f31); + BoardModelMotionStart(lbl_1_data_1DC, 0, 0); + BoardModelMotionSpeedSet(lbl_1_data_1DC, 0.0f); + BoardModelMotionStart(lbl_1_bss_C[0], 0, 0); + BoardModelMotionSpeedSet(lbl_1_bss_C[0], 0.0f); +} + +void fn_1_4A10(void) { + if (lbl_1_data_1DC != -1) { + BoardModelKill(lbl_1_data_1DC); + lbl_1_data_1DC = -1; + } +} + +void fn_1_4A60(void) { + lbl_1_bss_8C = 0; + BoardDiceDigit2DShowSet(0); + lbl_1_bss_48 = HuPrcChildCreate(fn_1_4BA0, 0x2003, 0x3800, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_48, fn_1_4B00); + while (lbl_1_bss_48) { + HuPrcVSleep(); + } + BoardDiceDigit2DShowSet(1); +} + +static void fn_1_4B00(void) { + if (lbl_1_data_1DA != -1) { + BoardModelMotionKill(lbl_1_bss_C[5], lbl_1_data_1DA); + lbl_1_data_1DA = -1; + } + if (lbl_1_data_1D8 != -1) { + HuWinKill(lbl_1_data_1D8); + lbl_1_data_1D8 = -1; + } + lbl_1_bss_48 = NULL; +} + +static void fn_1_4BA0(void) { + s32 temp_r31; + + temp_r31 = GWSystem.player_curr; + if (fn_1_4BF8(temp_r31) != 0) { + fn_1_4FB8(temp_r31); + } + fn_1_519C(temp_r31); + HuPrcEnd(); +} + +static s32 fn_1_4BF8(s32 arg0) { + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + BoardWinCreateChoice(2, MAKE_MESSID(48, 26), 6, 0); + if (GWPlayer[arg0].com) { + BoardComKeySetLeft(); + } + BoardWinWait(); + if (BoardWinChoiceGet() != 0) { + BoardWinCreate(2, MAKE_MESSID(48, 27), 6); + BoardWinWait(); + BoardWinKill(); + lbl_1_bss_8C = 1; + return 0; + } + BoardWinKill(); + sp14.x = 0.0f; + sp14.y = 120.0f; + sp14.z = 0.0f; + sp8.x = -32.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + BoardCameraMotionStartEx(lbl_1_bss_C[0], &sp8, &sp14, 1330.0f, -1.0f, 21); + lbl_1_data_1DA = BoardModelMotionCreate(lbl_1_bss_C[5], DATA_MAKE_NUM(DATADIR_W06, 22)); + BoardCameraMotionWait(); + BoardPlayerPosGet(arg0, &sp2C); + BoardModelPosGet(lbl_1_bss_C[0], &sp38); + sp38.x += 115.0 * sin(M_PI); + sp38.z += 115.0 * cos(M_PI); + PSVECSubtract(&sp38, &sp2C, &sp20); + PSVECNormalize(&sp20, &sp20); + BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 40); + BoardModelPosGet(lbl_1_bss_C[5], &sp2C); + BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001); + BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f); + while (GWPlayer[arg0].moving) { + BoardPlayerPosGet(arg0, &sp38); + PSVECSubtract(&sp38, &sp2C, &sp20); + BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp20.x, sp20.z) / M_PI)); + HuPrcVSleep(); + } + BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); + BoardPlayerIdleSet(arg0); + BoardPlayerRotYSet(arg0, -90.0f); + BoardAudSeqPause(0, 1, 1000); + HuPrcSleep(60); + return 1; +} + +static void fn_1_4FB8(s32 arg0) { + s16 temp_r30; + + BoardMusStart(1, 0x27, 0x7F, 0); + temp_r30 = MGSeqCreate(3, 0); + while (MGSeqStatGet(temp_r30) != 0) { + HuPrcVSleep(); + } + fn_1_53A0(); + fn_1_5490(arg0); + fn_1_5B54(arg0); + while (TRUE) { + if (fn_1_5EBC() == 4 && fn_1_5B0C() == 4) { + break; + } + HuPrcVSleep(); + } + HuWinDispOff(lbl_1_data_1D8); + BoardAudSeqFadeOut(1, 1000); + HuPrcSleep(30); + lbl_1_bss_58 = lbl_1_rodata_F0[lbl_1_bss_5A - 1]; + sprintf(lbl_1_bss_5B, "%d", lbl_1_bss_58); + BoardAudSeqPause(0, 0, 1000); + BoardWinCreate(2, MAKE_MESSID(48, 28), 6); + BoardWinInsertMesSet(MAKE_MESSID_PTR(lbl_1_bss_5B), 0); + BoardWinWait(); + BoardWinKill(); + fn_1_6C4C(arg0); + while (lbl_1_bss_54) { + HuPrcVSleep(); + } + BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0); + HuPrcSleep(8); + while (!BoardPlayerMotionEndCheck(arg0)) { + HuPrcVSleep(); + } + BoardWinCreate(2, MAKE_MESSID(48, 29), 6); + BoardWinWait(); + BoardWinKill(); +} + +static void fn_1_519C(s32 arg0) { + Vec sp20; + Vec sp14; + Vec sp8; + s16 temp_r30; + + if (lbl_1_bss_8C == 0) { + temp_r30 = GWPlayer[arg0].space_curr; + BoardPlayerPosGet(arg0, &sp20); + BoardSpacePosGet(0, temp_r30, &sp14); + } + BoardCameraTargetPlayerSet(arg0); + BoardCameraViewSet(1); + if (lbl_1_bss_8C == 0) { + BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 40); + BoardModelPosGet(lbl_1_bss_C[5], &sp20); + BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001); + BoardModelMotionSpeedSet(lbl_1_bss_C[5], 2.0f); + while (GWPlayer[arg0].moving) { + BoardPlayerPosGet(arg0, &sp14); + PSVECSubtract(&sp14, &sp20, &sp8); + BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp8.x, sp8.z) / M_PI)); + HuPrcVSleep(); + } + BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); + } + BoardModelRotYSet(lbl_1_bss_C[5], 0.0f); + BoardCameraMotionWait(); + fn_1_59D0(5); + fn_1_5CE4(5); +} + +static void fn_1_53A0(void) { + float sp8[2]; + float var_f31; + float var_f30; + + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(48, 30)); + var_f31 = -10000.0f; + var_f30 = 328.0f; + lbl_1_data_1D8 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 0); + HuWinBGTPLvlSet(lbl_1_data_1D8, 0.0f); + HuWinMesSpeedSet(lbl_1_data_1D8, 0); + HuWinMesSet(lbl_1_data_1D8, MAKE_MESSID(48, 30)); +} + +static void fn_1_5490(s32 arg0) { + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float temp_f31; + omObjData *temp_r3; + Bss4CWork *temp_r31; + s32 spC[] = { + DATA_MAKE_NUM(DATADIR_W06, 28), + DATA_MAKE_NUM(DATADIR_W06, 29), + -1 + }; + + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_56CC); + lbl_1_bss_4C = temp_r3; + temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss4CWork); + temp_r31->unk00_field0 = 0; + temp_r31->unk02 = 0; + temp_r31->unk00_field2 = 0; + temp_r31->unk00_field1 = 2; + BoardModelPosGet(lbl_1_data_1DC, &sp3C); + sp3C.x += 50.0f; + BoardPlayerPosGet(arg0, &sp30); + sp30.x -= 10.0f; + PSVECSubtract(&sp30, &sp3C, &sp24); + PSVECNormalize(&sp24, &sp18); + temp_r3->trans.x = sp24.x / 60.0f; + temp_r3->trans.y = sp24.y / 60.0f; + temp_r3->trans.z = sp24.z / 60.0f; + temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 27), spC, 0); + temp_f31 = 0.3f; + BoardModelPosSetV(temp_r31->unk04, &sp3C); + BoardModelScaleSet(temp_r31->unk04, temp_f31, temp_f31, temp_f31); + BoardModelVisibilitySet(temp_r31->unk04, 0); + BoardModelRotYSet(temp_r31->unk04, 180.0 * (atan2(sp18.x, sp18.z) / M_PI)); + BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001); + BoardModelMotionStart(lbl_1_data_1DC, 0, 0); +} + +static void fn_1_56CC(omObjData *arg0) { + Bss4CWork *temp_r31; + + temp_r31 = OM_GET_WORK_PTR(arg0, Bss4CWork); + if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { + BoardModelKill(temp_r31->unk04); + lbl_1_bss_4C = NULL; + omDelObjEx(HuPrcCurrentGet(), arg0); + return; + } + if (temp_r31->unk02 != 0) { + temp_r31->unk02--; + return; + } + switch (temp_r31->unk00_field1) { + case 0: + break; + case 1: + fn_1_57DC(arg0, temp_r31); + break; + case 4: + fn_1_58FC(arg0, temp_r31); + break; + case 2: + fn_1_587C(arg0, temp_r31); + break; + case 5: + temp_r31->unk00_field0 = 1; + break; + } +} + +static void fn_1_57DC(omObjData *arg0, Bss4CWork *arg1) { + Vec sp8; + + if (arg1->unk01 == 0) { + fn_1_59D0(3); + return; + } + BoardModelPosGet(arg1->unk04, &sp8); + sp8.x += arg0->trans.x; + sp8.y += arg0->trans.y; + sp8.z += arg0->trans.z; + BoardModelPosSetV(arg1->unk04, &sp8); + arg1->unk01--; +} + +static void fn_1_587C(omObjData *arg0, Bss4CWork *arg1) { + if (BoardModelMotionTimeGet(lbl_1_data_1DC) < 32.0f) { + return; + } + arg1->unk00_field1 = 1; + arg1->unk01 = 60; + HuAudFXPlayVolPan(0x49E, 0x7F, 0x20); + BoardModelVisibilitySet(arg1->unk04, 1); +} + +static void fn_1_58FC(omObjData *arg0, Bss4CWork *arg1) { + if (arg1->unk00_field2 == 0) { + HuAudFXPlay(0x49F); + arg1->unk00_field2 = 1; + } + if (BoardModelMotionEndCheck(arg1->unk04)) { + fn_1_59D0(0); + } +} + +static void fn_1_5968(Vec *arg0) { + Bss4CWork *temp_r31; + + if (lbl_1_bss_4C && arg0) { + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork); + BoardModelPosGet(temp_r31->unk04, arg0); + } +} + +static void fn_1_59D0(s32 arg0) { + Bss4CWork *temp_r31; + + if (!lbl_1_bss_4C) { + return; + } + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork); + temp_r31->unk00_field1 = arg0; + if (arg0 == 1) { + lbl_1_bss_4C->trans.x = 0.96666666f * sin(90 * M_PI / 180.0); + lbl_1_bss_4C->trans.z = 0.96666666f * cos(90 * M_PI / 180.0); + temp_r31->unk01 = 60; + return; + } + if (arg0 == 0) { + BoardPlayerMotionSpeedSet(temp_r31->unk04, 1.0f); + return; + } + if (arg0 == 4) { + BoardModelMotionShiftSet(temp_r31->unk04, 2, 0.0f, 8.0f, 0); + temp_r31->unk02 = 10; + return; + } +} + +static s32 fn_1_5B0C(void) { + Bss4CWork *temp_r31; + + if (lbl_1_bss_4C) { + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork); + return temp_r31->unk00_field1; + } + return -1; +} + +static s32 lbl_1_data_1E4[8] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 126), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 126), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 126), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 126), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 126), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 126), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 126), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 126) +}; + +static void fn_1_5B54(s32 arg0) { + Vec sp8; + float var_f31; + omObjData *temp_r3; + Bss50Work *temp_r31; + + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_606C); + lbl_1_bss_50 = temp_r3; + temp_r31 = OM_GET_WORK_PTR(temp_r3, Bss50Work); + temp_r31->unk00_field0 = 0; + temp_r31->unk00_field1 = arg0; + temp_r31->unk01 = 0; + temp_r31->unk00_field2 = 1; + temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 13), NULL, 0); + temp_r31->unk02 = BoardPlayerMotionCreate(arg0, lbl_1_data_1E4[GWPlayer[arg0].character]); + var_f31 = 0.3f; + BoardModelScaleSet(temp_r31->unk04, var_f31, var_f31, var_f31); + BoardPlayerPosGet(temp_r31->unk00_field1, &sp8); + BoardModelPosSetV(temp_r31->unk04, &sp8); + BoardModelVisibilitySet(temp_r31->unk04, 0); + temp_r3->trans.x = sp8.x; + temp_r3->trans.y = sp8.y; + temp_r3->trans.z = sp8.z; + lbl_1_bss_59 = 0; + lbl_1_bss_5A = 0; +} + +static void fn_1_5CE4(s32 arg0) { + Vec sp14; + Vec sp8; + Bss50Work *temp_r31; + + if (!lbl_1_bss_50) { + return; + } + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work); + temp_r31->unk00_field2 = arg0; + if (arg0 == 2) { + temp_r31->unk01 = 60; + BoardPlayerPosGet(temp_r31->unk00_field1, &sp8); + if (lbl_1_bss_5A >= 1) { + BoardModelVisibilitySet(temp_r31->unk04, 1); + } + BoardModelMotionStart(temp_r31->unk04, 0, 0x40000001); + BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001); + omVibrate(temp_r31->unk00_field1, 12, 4, 2); + fn_1_5968(&sp14); + sp8.x = sp14.x + 18.0 * sin(90 * M_PI / 180.0); + sp8.z = sp14.z + 18.0 * cos(90 * M_PI / 180.0); + BoardPlayerPosSetV(temp_r31->unk00_field1, &sp8); + BoardModelPosSetV(temp_r31->unk04, &sp8); + return; + } + if (arg0 == 3) { + BoardModelVisibilitySet(temp_r31->unk04, 0); + BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001); + return; + } +} + +static s32 fn_1_5EBC(void) { + Bss50Work *temp_r31; + + if (!lbl_1_bss_50) { + return; + } + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work); + return temp_r31->unk00_field2; +} + +static void fn_1_5EFC(Vec *arg0) { + Bss50Work *temp_r31; + + if (lbl_1_bss_50) { + temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_50, Bss50Work); + BoardPlayerPosGet(temp_r31->unk00_field1, arg0); + } +} + +static void fn_1_5F58(s32 arg0, u32 *arg1) { + u32 var_r31; + s32 var_r28; + s32 temp_r30; + + var_r31 = 0; + var_r28 = GWPlayer[arg0].port; + if (GWPlayer[arg0].com) { + temp_r30 = BoardRandMod(100); + switch (GWPlayer[arg0].diff) { + case 0: + if (temp_r30 < 12) { + var_r31 = 0x100; + } + break; + case 1: + if (temp_r30 < 22) { + var_r31 = 0x100; + } + break; + case 2: + if (temp_r30 < 50) { + var_r31 = 0x100; + } + break; + case 3: + var_r31 = 0x100; + break; + } + } else { + var_r31 = HuPadBtnDown[var_r28] & 0x100; + } + *arg1 = var_r31; +} + +static void fn_1_606C(omObjData *arg0) { + Vec sp64; + Vec sp58; + u32 var_r18; + Bss50Work *temp_r31; + + var_r18 = 0; + temp_r31 = OM_GET_WORK_PTR(arg0, Bss50Work); + if (temp_r31->unk00_field0 != 0 || BoardIsKill()) { + BoardPlayerMotionKill(temp_r31->unk00_field1, temp_r31->unk02); + BoardModelKill(temp_r31->unk04); + lbl_1_bss_50 = NULL; + omDelObjEx(HuPrcCurrentGet(), arg0); + return; + } + switch (temp_r31->unk00_field2) { + case 0: + break; + case 1: + if (fn_1_5B0C() == 3) { + fn_1_5CE4(2); + } + break; + case 2: + if (temp_r31->unk01 == 0) { + if (lbl_1_bss_5A >= 5) { + fn_1_5CE4(4); + fn_1_59D0(4); + } else { + fn_1_5CE4(3); + fn_1_59D0(1); + lbl_1_bss_59 = 0; + lbl_1_bss_5A++; + } + } else { + fn_1_5F58(temp_r31->unk00_field1, &var_r18); + if (var_r18 == 0x100) { + lbl_1_bss_59++; + if (lbl_1_bss_5A != 0 && lbl_1_bss_59 >= lbl_1_rodata_F5[lbl_1_bss_5A - 1]) { + fn_1_5CE4(4); + fn_1_59D0(4); + } + BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001); + } + temp_r31->unk01--; + } + break; + case 3: + if (fn_1_5B0C() == 3) { + fn_1_5CE4(2); + return; + } + fn_1_5968(&sp64); + BoardPlayerPosGet(temp_r31->unk00_field1, &sp58); + sp58.x = sp64.x + 18.0 * sin(90 * M_PI / 180.0); + sp58.z = sp64.z + 18.0 * cos(90 * M_PI / 180.0); + BoardPlayerPosSetV(temp_r31->unk00_field1, &sp58); + BoardModelPosSetV(temp_r31->unk04, &sp58); + BoardModelRotYSet(temp_r31->unk04, BoardPlayerRotYGet(temp_r31->unk00_field1)); + break; + case 5: + temp_r31->unk00_field0 = 1; + /* fallthrough */ + case 4: + BoardPlayerIdleSet(temp_r31->unk00_field1); + BoardPlayerRotYSet(temp_r31->unk00_field1, 0.0f); + BoardModelVisibilitySet(temp_r31->unk04, 0); + fn_1_5CE4(0); + break; + } +} + +static void fn_1_6A0C(omObjData *arg0) { + float temp_f31; + Bss54Work *temp_r29; + Bss54WorkData *var_r30; + s32 var_r26; + s32 var_r27; + s32 i; + + temp_r29 = OM_GET_WORK_PTR(arg0, Bss54Work); + if (temp_r29->unk00_field0 != 0 || BoardIsKill()) { + fn_1_6E90(temp_r29); + HuMemDirectFree(temp_r29->unk0C); + lbl_1_bss_54 = NULL; + omDelObjEx(HuPrcCurrentGet(), arg0); + return; + } + var_r30 = temp_r29->unk0C; + for (var_r27 = i = 0; i < 20; i++, var_r30++) { + if (var_r30->unk00 == 0) { + var_r27++; + } + } + if (var_r27 == 20) { + temp_r29->unk00_field0 = 1; + return; + } + var_r26 = 0; + for (i = 0; i < 20; i++) { + var_r30 = &temp_r29->unk0C[i]; + if (var_r30->unk00 == 1 && var_r26 == 0) { + var_r30->unk00 = 2; + var_r26 = 1; + } + if (var_r30->unk00 == 2) { + var_r30->unk01++; + OSu8tof32(&var_r30->unk01, &temp_f31); + var_r30->unk04 += 45.0f; + var_r30->unk08.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f; + if (var_r30->unk08.y < temp_r29->unk08) { + var_r30->unk08.y = temp_r29->unk08; + CharModelCoinEffectCreate(1, &var_r30->unk08); + BoardModelVisibilitySet(var_r30->unk02, 0); + HuAudFXPlay(7); + BoardPlayerCoinsAdd(temp_r29->unk04, 1); + omVibrate(temp_r29->unk04, 12, 6, 6); + var_r30->unk00 = 0; + } + BoardModelPosSetV(var_r30->unk02, &var_r30->unk08); + BoardModelRotYSet(var_r30->unk02, var_r30->unk04); + } + } +} + +static void fn_1_6C4C(s32 arg0) { + Vec sp8; + float var_f31; + omObjData *temp_r3; + Bss54Work *temp_r30; + Bss54WorkData *temp_r31; + s32 i; + + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_6A0C); + lbl_1_bss_54 = temp_r3; + temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss54Work); + temp_r30->unk00_field0 = 0; + temp_r30->unk04 = arg0; + temp_r30->unk0C = HuMemDirectMallocNum(HEAP_SYSTEM, 20 * sizeof(Bss54WorkData), MEMORY_DEFAULT_NUM); + BoardPlayerPosGet(arg0, &sp8); + temp_r30->unk08 = sp8.y + 80.0f; + memset(temp_r30->unk0C, 0, 20 * sizeof(Bss54WorkData)); + for (i = 0; i < lbl_1_bss_58; i++) { + if (i == 0) { + var_f31 = 0.0f; + } else { + var_f31 = BoardRandFloat(); + } + temp_r31 = &temp_r30->unk0C[i]; + temp_r31->unk00 = 1; + temp_r31->unk08.x = sp8.x + 50.0 * sin(360.0f * var_f31 * M_PI / 180.0); + temp_r31->unk08.z = sp8.z + 50.0 * cos(360.0f * var_f31 * M_PI / 180.0); + temp_r31->unk08.y = sp8.y + 600.0f + 500.0f * BoardRandFloat(); + temp_r31->unk01 = 0; + temp_r31->unk04 = 360.0f * BoardRandFloat(); + temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); + } +} + +static void fn_1_6E90(Bss54Work *arg0) { + Bss54WorkData *var_r30; + s32 i; + + for (i = 0; i < 20; i++) { + var_r30 = &arg0->unk0C[i]; + BoardModelKill(var_r30->unk02); + } +} diff --git a/src/REL/w06Dll/mg_item.c b/src/REL/w06Dll/mg_item.c index b91910c1..cf6d9691 100755 --- a/src/REL/w06Dll/mg_item.c +++ b/src/REL/w06Dll/mg_item.c @@ -5,6 +5,7 @@ #include "game/hsfanim.h" #include "game/hsfman.h" #include "game/minigame_seq.h" +#include "game/object.h" #include "game/pad.h" #include "game/process.h" #include "game/sprite.h" diff --git a/src/game/board/boo.c b/src/game/board/boo.c index 5299df98..2042ae27 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -1,16 +1,20 @@ #include "game/board/boo.h" #include "game/audio.h" #include "game/chrman.h" +#include "game/data.h" +#include "game/flag.h" #include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/objsub.h" #include "game/pad.h" #include "game/process.h" +#include "game/sprite.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 "math.h" @@ -22,8 +26,7 @@ typedef struct { s8 unk01; s8 unk02; char unk03[1]; - s16 unk04; - s16 unk06; + s16 unk04[2]; } BooEventWork; typedef struct { @@ -92,8 +95,6 @@ typedef struct { float unk04; } BallTakeCoinWork; -void BoardSpaceCameraSet(u16); - static void ComSetupStealPlayer(s32 arg0); static void ComSetStealPlayerInput(s32 arg0, s32 arg1); static void ExecCoinSteal(void); @@ -152,14 +153,14 @@ static omObjData *ballObj; static omObjData *booEventObj; static s32 booPlayerMotTbl[8][6] = { - { 0x0009000B, 0x00090013, 0x0009001B, 0x00090023, 0x0009002B, 0x00090033 }, - { 0x0009000C, 0x00090014, 0x0009001C, 0x00090024, 0x0009002C, 0x00090034 }, - { 0x0009000D, 0x00090015, 0x0009001D, 0x00090025, 0x0009002D, 0x00090035 }, - { 0x0009000E, 0x00090016, 0x0009001E, 0x00090026, 0x0009002E, 0x00090036 }, - { 0x0009000F, 0x00090017, 0x0009001F, 0x00090027, 0x0009002F, 0x00090037 }, - { 0x00090010, 0x00090018, 0x00090020, 0x00090028, 0x00090030, 0x00090038 }, - { 0x00090011, 0x00090019, 0x00090021, 0x00090029, 0x00090031, 0x00090039 }, - { 0x00090012, 0x0009001A, 0x00090022, 0x0009002A, 0x00090032, 0x0009003A } + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 11), DATA_MAKE_NUM(DATADIR_BYOKODORI, 19), DATA_MAKE_NUM(DATADIR_BYOKODORI, 27), DATA_MAKE_NUM(DATADIR_BYOKODORI, 35), DATA_MAKE_NUM(DATADIR_BYOKODORI, 43), DATA_MAKE_NUM(DATADIR_BYOKODORI, 51) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 12), DATA_MAKE_NUM(DATADIR_BYOKODORI, 20), DATA_MAKE_NUM(DATADIR_BYOKODORI, 28), DATA_MAKE_NUM(DATADIR_BYOKODORI, 36), DATA_MAKE_NUM(DATADIR_BYOKODORI, 44), DATA_MAKE_NUM(DATADIR_BYOKODORI, 52) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 13), DATA_MAKE_NUM(DATADIR_BYOKODORI, 21), DATA_MAKE_NUM(DATADIR_BYOKODORI, 29), DATA_MAKE_NUM(DATADIR_BYOKODORI, 37), DATA_MAKE_NUM(DATADIR_BYOKODORI, 45), DATA_MAKE_NUM(DATADIR_BYOKODORI, 53) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 14), DATA_MAKE_NUM(DATADIR_BYOKODORI, 22), DATA_MAKE_NUM(DATADIR_BYOKODORI, 30), DATA_MAKE_NUM(DATADIR_BYOKODORI, 38), DATA_MAKE_NUM(DATADIR_BYOKODORI, 46), DATA_MAKE_NUM(DATADIR_BYOKODORI, 54) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 15), DATA_MAKE_NUM(DATADIR_BYOKODORI, 23), DATA_MAKE_NUM(DATADIR_BYOKODORI, 31), DATA_MAKE_NUM(DATADIR_BYOKODORI, 39), DATA_MAKE_NUM(DATADIR_BYOKODORI, 47), DATA_MAKE_NUM(DATADIR_BYOKODORI, 55) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 16), DATA_MAKE_NUM(DATADIR_BYOKODORI, 24), DATA_MAKE_NUM(DATADIR_BYOKODORI, 32), DATA_MAKE_NUM(DATADIR_BYOKODORI, 40), DATA_MAKE_NUM(DATADIR_BYOKODORI, 48), DATA_MAKE_NUM(DATADIR_BYOKODORI, 56) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 17), DATA_MAKE_NUM(DATADIR_BYOKODORI, 25), DATA_MAKE_NUM(DATADIR_BYOKODORI, 33), DATA_MAKE_NUM(DATADIR_BYOKODORI, 41), DATA_MAKE_NUM(DATADIR_BYOKODORI, 49), DATA_MAKE_NUM(DATADIR_BYOKODORI, 57) }, + { DATA_MAKE_NUM(DATADIR_BYOKODORI, 18), DATA_MAKE_NUM(DATADIR_BYOKODORI, 26), DATA_MAKE_NUM(DATADIR_BYOKODORI, 34), DATA_MAKE_NUM(DATADIR_BYOKODORI, 42), DATA_MAKE_NUM(DATADIR_BYOKODORI, 50), DATA_MAKE_NUM(DATADIR_BYOKODORI, 58) } }; static s32 booSfxTbl[4][8] = { @@ -182,17 +183,17 @@ static s32 booSfxTbl[4][8] = { }; static s32 hostMess[] = { - 0x0007000E, - 0x00070014, - 0x0007001A, - 0x00070020, - 0x00070026, - 0x0007002C + MAKE_MESSID(7, 14), + MAKE_MESSID(7, 20), + MAKE_MESSID(7, 26), + MAKE_MESSID(7, 32), + MAKE_MESSID(7, 38), + MAKE_MESSID(7, 44) }; static s32 ballMdlTbl[] = { - 0x00090002, - 0x00090006 + DATA_MAKE_NUM(DATADIR_BYOKODORI, 2), + DATA_MAKE_NUM(DATADIR_BYOKODORI, 6) }; s16 BoardBooCreate(s32 arg0, Vec *arg1) { @@ -218,8 +219,8 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1) { booEventObj->trans.x = spC.x; booEventObj->trans.y = spC.y; booEventObj->trans.z = spC.z; - CreateBallMdl(&temp_r31->unk04, &spC); - return temp_r31->unk04; + CreateBallMdl(temp_r31->unk04, &spC); + return temp_r31->unk04[0]; } void BoardBooKill(void) { @@ -256,19 +257,19 @@ s32 BoardBooStealTypeSet(s32 arg0) { stealType = -1; return 0; } - if (_CheckFlag(0x10018)) { + if (_CheckFlag(FLAG_ID_MAKE(1, 24))) { var_r25 = BoardWinPortraitGet(); var_r28 = hostMess[GWBoardGet()]; } else { var_r25 = 3; - var_r28 = 0x120019; + var_r28 = MAKE_MESSID(18, 25); } BoardWinCreateChoice(1, var_r28, var_r25, 0); BoardWinAttrSet(0x10); if (stealType == 0) { - var_r28 = 0x70030; + var_r28 = MAKE_MESSID(7, 48); } else { - var_r28 = 0x70031; + var_r28 = MAKE_MESSID(7, 49); } BoardWinInsertMesSet(var_r28, 0); for (i = 0; i < 3; i++) { @@ -312,10 +313,10 @@ static void ComSetupStealPlayer(s32 arg0) { switch (GWPlayer[arg0].diff) { case 0: - var_r29 = 0x5F; + var_r29 = 95; break; case 1: - var_r29 = 0x32; + var_r29 = 50; break; case 2: var_r29 = 5; @@ -324,7 +325,7 @@ static void ComSetupStealPlayer(s32 arg0) { var_r29 = 0; break; } - var_r22 = BoardRandMod(0x64); + var_r22 = BoardRandMod(100); if (var_r22 >= var_r29) { var_r24 = 1; } else { @@ -400,9 +401,9 @@ s32 BoardBooStealMain(void) { if (var_r31 != -1) { stealType = 2; BoardPlayerItemRemove(stealTarget, var_r31); - var_r30 = 0x70004; + var_r30 = MAKE_MESSID(7, 4); } else { - var_r30 = 0x70003; + var_r30 = MAKE_MESSID(7, 3); } BoardCameraMotionWait(); for (var_r31 = 0; var_r31 < 4; var_r31++) { @@ -411,7 +412,7 @@ s32 BoardBooStealMain(void) { } } CreateBallPlayer(); - omVibrate(stealTarget, 0xC, 4, 2); + omVibrate(stealTarget, 12, 4, 2); SetBallActive(1); while (!CheckBallKill()) { HuPrcVSleep(); @@ -470,7 +471,7 @@ static void ExecCoinSteal(void) { SetBallPlayerState(4); SetBallBooState(3); punchCount = 0; - HuPrcSleep(0x78); + HuPrcSleep(120); while (GetBallBooState() != 0) { HuPrcVSleep(); } @@ -551,7 +552,7 @@ static void CreateBallView(void) { ballObj = omAddObjEx(boardObjMan, 0x1001, 0, 0, -1, BallMain); temp_r31 = OM_GET_WORK_PTR(ballObj, BallWork); temp_r31->unk00_field0 = 0; - temp_r31->unk08 = HuSprAnimMake(0x50, 0x50, 2); + temp_r31->unk08 = HuSprAnimMake(80, 80, 2); temp_r29 = temp_r31->unk08->bmp; temp_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x3200, MEMORY_DEFAULT_NUM); memset(temp_r29->data, 0, 0x3200); @@ -559,7 +560,7 @@ static void CreateBallView(void) { Hu3DModelLayerSet(temp_r31->unk04, 3); Hu3DModelCameraSet(temp_r31->unk04, 1); temp_r31->unk06 = Hu3DProjectionCreate(temp_r31->unk08, 25.0f, 100.0f, 13000.0f); - Hu3DModelProjectionSet(BoardModelIDGet(temp_r28->unk06), temp_r31->unk06); + Hu3DModelProjectionSet(BoardModelIDGet(temp_r28->unk04[1]), temp_r31->unk06); Hu3DProjectionTPLvlSet(temp_r31->unk06, 0.0f); ballCameraObj = omAddObjEx(boardObjMan, 0x7E03, 0, 0, -1, UpdateBallCamera); temp_r30 = OM_GET_WORK_PTR(ballCameraObj, BallCameraWork); @@ -589,7 +590,7 @@ static void SetBallView(s32 arg0) { BoardSpaceCameraSet(var_r31); BoardModelCameraSetAll(var_r31); BoardCameraMaskSet((u16) var_r31); - BoardCameraScissorSet(0, 0, 0x280, 0x1E0); + BoardCameraScissorSet(0, 0, 640, 480); } static void SetBallActive(s32 arg0) { @@ -623,7 +624,7 @@ static void BallMain(omObjData *arg0) { s16 *temp_r29; if (booKillF != 0 || BoardIsKill() != 0) { - temp_r29 = (s16*) &OM_GET_WORK_PTR(booEventObj, BooEventWork)->unk04; + temp_r29 = OM_GET_WORK_PTR(booEventObj, BooEventWork)->unk04; Hu3DModelProjectionReset(BoardModelIDGet(temp_r29[1]), temp_r30->unk06); Hu3DProjectionKill(temp_r30->unk06); Hu3DModelKill(temp_r30->unk04); @@ -642,8 +643,8 @@ static void BallMain(omObjData *arg0) { sp14.z = cos(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0); if (temp_r30->unk01 != 0) { temp_r30->unk02 += temp_r30->unk01; - if (temp_r30->unk02 > 0xFF) { - temp_r30->unk02 = 0xFF; + if (temp_r30->unk02 > 255) { + temp_r30->unk02 = 255; temp_r30->unk01 = 0; } else if (temp_r30->unk02 < 0) { temp_r30->unk02 = 0; @@ -671,15 +672,15 @@ static void BallRenderHook(void) { temp_r31 = OM_GET_WORK_PTR(ballObj, BallWork); sp10.a = sp10.r = sp10.g = sp10.b = 0; GXSetCopyClear(sp10, -1); - GXSetTexCopySrc(0, 0, 0xA0, 0xA0); - GXSetTexCopyDst(0x50, 0x50, GX_TF_RGB5A3, GX_TRUE); + GXSetTexCopySrc(0, 0, 160, 160); + GXSetTexCopyDst(80, 80, GX_TF_RGB5A3, GX_TRUE); GXCopyTex(temp_r31->unk08->bmp->data, GX_TRUE); - DCFlushRange(temp_r31->unk08->bmp->data, 0x3200); + DCFlushRange(temp_r31->unk08->bmp->data, 12800); GXPixModeSync(); C_MTXPerspective(sp68, 25.0f, 1.2f, 100.0f, 13000.0f); GXSetProjection(sp68, GX_PERSPECTIVE); GXSetViewport(0.0f, 0.0f, 160.0f, 160.0f, 0.0f, 1.0f); - GXSetScissor(0, 0, 0xA0, 0xA0); + GXSetScissor(0, 0, 160, 160); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); @@ -710,8 +711,8 @@ static void BallRenderHook(void) { sp20.z = 0.0f; C_MTXLookAt(sp38, &sp2C, &sp20, &sp14); GXLoadPosMtxImm(sp38, GX_PNMTX0); - sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2000000476837158; - sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333134651184; + sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2f; + sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333f; sp2C.z = -9000.0f; GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(-sp2C.x, -sp2C.y, sp2C.z); @@ -730,7 +731,7 @@ static void ExecBoo(omObjData *arg0) { if (temp_r30->unk00_field0 != 0 || BoardIsKill()) { for (i = 0; i < 2; i++) { - BoardModelKill(((s16*) ((u8*) temp_r30 + 4))[i]); + BoardModelKill(((s16*) temp_r30->unk04)[i]); } BoardWinKill(); booEventObj = NULL; @@ -801,8 +802,8 @@ static void CreateBallPlayer(void) { temp_r30->unk04[i] = BoardPlayerMotionCreate(stealTarget, var_r26); } if (stealType == 2) { - temp_r30->unk00 = BoardModelCreate(0x70076, 0, 0); - temp_r30->unk02 = BoardModelCreate(0x70082, 0, 0); + temp_r30->unk00 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 118), 0, 0); + temp_r30->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 130), 0, 0); BoardModelLayerSet(temp_r30->unk00, 0); BoardModelLayerSet(temp_r30->unk02, 0); BoardModelCameraSet(temp_r30->unk00, 1); @@ -911,7 +912,7 @@ static void BallPlayerZoomOut(omObjData *arg0, BallPlayerWork *arg1) { sp8.x = sp14.x + 120.0 * sin(-M_PI / 2); sp8.y = sp14.y; sp8.z = sp14.z + 120.0 * cos(-M_PI / 2); - BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 0x14); + BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 20); var_r29 = GWPlayer[stealTarget].character; HuAudFXPlay(booSfxTbl[0][var_r29]); SetBallPlayerState(3); @@ -933,7 +934,7 @@ static void BallPlayerScare(omObjData *arg0, BallPlayerWork *arg1) { BoardPlayerMotionShiftSet(stealTarget, temp_r29->unk04[3], 0.0f, 10.0f, 0x40000001); SetBallPlayerState(0); } else { - BoardPlayerMotBlendSet(stealTarget, temp_f31, 0xF); + BoardPlayerMotBlendSet(stealTarget, temp_f31, 15); SetBallPlayerState(2); } } @@ -954,25 +955,25 @@ static void BallPlayerPunch(omObjData *arg0, BallPlayerWork *arg1) { var_r31 = 0; temp_r29 = arg0->data; if (GWPlayer[stealTarget].com) { - temp_r30 = BoardRandMod(0x64); + temp_r30 = BoardRandMod(100); switch (GWPlayer[stealTarget].diff) { case 0: - if (temp_r30 > 0x5A) { + if (temp_r30 > 90) { var_r31 = 0x100; } break; case 1: - if (temp_r30 > 0x53) { + if (temp_r30 > 83) { var_r31 = 0x100; } break; case 2: - if (temp_r30 > 0x4B) { + if (temp_r30 > 75) { var_r31 = 0x100; } break; case 3: - if (temp_r30 > 0x44) { + if (temp_r30 > 68) { var_r31 = 0x100; } break; @@ -980,7 +981,7 @@ static void BallPlayerPunch(omObjData *arg0, BallPlayerWork *arg1) { } else { var_r31 = HuPadBtnDown[GWPlayer[stealTarget].port] & 0x100; } - if ((var_r31 & 0x100) && GetBallBooState() == 3 && battleTimer < 0x78) { + if ((var_r31 & 0x100) && GetBallBooState() == 3 && battleTimer < 120) { punchCount++; } if (arg1->unk00_field1 != 0) { @@ -1029,13 +1030,13 @@ static void BallPlayerCatch(omObjData *arg0, BallPlayerWork *arg1) { if (stealType == 0) { UpdatePlayerCoins(); HuAudFXPlay(booSfxTbl[2][temp_r28]); - omVibrate(stealTarget, 0xC, 4, 2); + omVibrate(stealTarget, 12, 4, 2); TakeBallCoin(); } if (stealType == 1) { BoardPlayerStarsAdd(stealTarget, -1); HuAudFXPlay(booSfxTbl[2][temp_r28]); - omVibrate(stealTarget, 0xC, 4, 2); + omVibrate(stealTarget, 12, 4, 2); TakeBallStar(); } BoardPlayerMotionShiftSet(stealTarget, temp_r27->unk04[0], 0.0f, 10.0f, 0); @@ -1053,11 +1054,11 @@ static void BallPlayerCatch(omObjData *arg0, BallPlayerWork *arg1) { } static s32 ballBooMdl[] = { - 0x00020013, - 0x00020014, - 0x00020015, - 0x00020016, - 0x00020017, + DATA_MAKE_NUM(DATADIR_BGUEST, 19), + DATA_MAKE_NUM(DATADIR_BGUEST, 20), + DATA_MAKE_NUM(DATADIR_BGUEST, 21), + DATA_MAKE_NUM(DATADIR_BGUEST, 22), + DATA_MAKE_NUM(DATADIR_BGUEST, 23), -1 }; @@ -1075,7 +1076,7 @@ static void BallBooCreate(void) { temp_r31->unk00_field2 = 0; temp_r31->unk01 = 0; SetBallBooState(1); - temp_r31->unk04 = BoardModelCreate(0x20012, ballBooMdl, 0); + temp_r31->unk04 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), ballBooMdl, 0); BoardModelAlphaSet(temp_r31->unk04, 0xFF); BoardModelLayerSet(temp_r31->unk04, 0); BoardModelCameraSet(temp_r31->unk04, 1); @@ -1098,7 +1099,7 @@ static void BallBooCreate(void) { ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 60.0f; ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 60.0f; ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 60.0f; - temp_r31->unk02 = 0x3C; + temp_r31->unk02 = 60; ballBooObj->scale.x = 1.0f; ballBooObj->scale.z = 1.0f; sp8.x = sp14.x - ballBooObj->trans.x; @@ -1122,7 +1123,7 @@ static void SetBallBooState(s32 arg0) { ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 30.0f; ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 30.0f; ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 30.0f; - temp_r31->unk02 = 0x1E; + temp_r31->unk02 = 30; BoardModelMotionShiftSet(temp_r31->unk04, 1, 0.0f, 10.0f, 0x40000001); } if (arg0 == 5) { @@ -1210,7 +1211,7 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) { if (attackTimer != 0) { attackTimer--; } - if (battleTimer >= 0x78) { + if (battleTimer >= 120) { SetBallBooState(4); return; } @@ -1221,14 +1222,14 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) { } return; } - if (BoardRandMod(0x64) <= 0x46) { + if (BoardRandMod(100) <= 70) { BoardModelMotionStart(arg1->unk04, 2, 0); arg1->unk00_field2 = 1; - if (BoardRandMod(0x64) > 0x32 && attackTimer == 0) { + if (BoardRandMod(100) > 50 && attackTimer == 0) { temp_r29 = GWPlayer[stealTarget].character; HuAudFXPlay(booSfxTbl[1][temp_r29]); - omVibrate(stealTarget, 0xC, 6, 6); - attackTimer = 0x30; + omVibrate(stealTarget, 12, 6, 6); + attackTimer = 48; } } } @@ -1236,10 +1237,10 @@ static void BallBooBattle(omObjData *arg0, BallBooWork *arg1) { static void BallBooAttack(omObjData *arg0, BallBooWork *arg1) { float var_f29; - if (arg1->unk02 < 0x5A) { + if (arg1->unk02 < 90) { arg1->unk02 += 6; - if (arg1->unk02 >= 0x5A) { - arg1->unk02 = 0x5A; + if (arg1->unk02 >= 90) { + arg1->unk02 = 90; SetBallBooState(0); SetBallPlayerState(5); } @@ -1263,7 +1264,7 @@ static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { arg0->rot.x = (sp8.x - arg0->trans.x) / 72.0f; arg0->rot.y = (sp8.y - arg0->trans.y) / 72.0f; arg0->rot.z = (sp8.z - arg0->trans.z) / 72.0f; - arg1->unk02 = 0x48; + arg1->unk02 = 72; } } @@ -1281,7 +1282,7 @@ static void TakeBallCoin(void) { ballTakeCoinObj->trans.z = sp8.z; var_r31 = ballTakeCoinObj->data; for (i = 0; i < 10; i++, var_r31++) { - var_r31->unk00 = BoardModelCreate(0x7000A, NULL, 1); + var_r31->unk00 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); BoardModelCameraSet(var_r31->unk00, 1); fn_8006DDE8(var_r31->unk00, -1.0f); BoardModelScaleSet(var_r31->unk00, 0.5f, 0.5f, 0.5f); @@ -1358,7 +1359,7 @@ void TakeBallStar(void) { temp_r31 = OM_GET_WORK_PTR(ballTakeCoinObj, BallTakeCoinWork); temp_r31->unk00_field0 = 0; temp_r31->unk01 = 0; - temp_r31->unk02 = BoardModelCreate(0x7000B, 0, 0); + temp_r31->unk02 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 11), 0, 0); BoardPlayerPosGet(stealTarget, &sp8); ballTakeCoinObj->trans.x = sp8.x; ballTakeCoinObj->trans.y = sp8.y + 150.0f; @@ -1430,27 +1431,27 @@ BOOL BoardBooStealLightCheck(void) { } static s8 stealSuccessTbl[][3] = { - { 0x00, 0x00, 0x00 }, - { 0x01, 0x06, 0x01 }, - { 0x07, 0x07, 0x03 }, - { 0x08, 0x0C, 0x02 }, - { 0x0D, 0x0F, 0x03 }, - { 0x10, 0x12, 0x04 }, - { 0x13, 0x14, 0x06 }, - { 0x15, 0x17, 0x05 }, - { 0x18, 0x1A, 0x06 }, - { 0x1B, 0x1C, 0x07 }, - { 0x1D, 0x1D, 0x08 }, - { 0x1E, 0x63, 0x09 } + { 0, 0, 0 }, + { 1, 6, 1 }, + { 7, 7, 3 }, + { 8, 12, 2 }, + { 13, 15, 3 }, + { 16, 18, 4 }, + { 19, 20, 6 }, + { 21, 23, 5 }, + { 24, 26, 6 }, + { 27, 28, 7 }, + { 29, 29, 8 }, + { 30, 99, 9 } }; static s8 stealTbl[][3] = { - { 0x01, 0x05, 0x0F }, - { 0x06, 0x0F, 0x19 }, - { 0x10, 0x19, 0x1B }, - { 0x1A, 0x23, 0x1E }, - { 0x24, 0x2D, 0x20 }, - { 0x2E, 0x32, 0x23 } + { 1, 5, 15 }, + { 6, 15, 25 }, + { 16, 25, 27 }, + { 26, 35, 30 }, + { 36, 45, 32 }, + { 46, 50, 35 } }; static void UpdatePlayerCoins(void) { @@ -1460,12 +1461,12 @@ static void UpdatePlayerCoins(void) { s32 i; sp8 = punchCount; - if (punchCount > 0x63) { - punchCount = 0x63; + if (punchCount > 99) { + punchCount = 99; } var_r30 = GWSystem.turn; - if (var_r30 > 0x32) { - var_r30 = 0x32; + if (var_r30 > 50) { + var_r30 = 50; } for (stealSuccess = i = 0; i < 12; i++) { if (punchCount >= stealSuccessTbl[i][0] && punchCount <= stealSuccessTbl[i][1]) { diff --git a/src/game/board/player.c b/src/game/board/player.c index 6602ea91..75e8692d 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 < 0xB4U; var_r19++) { + for (var_r19 = 0; var_r19 < 180; var_r19++) { if (BoardPlayerMotBlendCheck(arg0) != 0) break; HuPrcVSleep(); @@ -1811,9 +1811,9 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { temp_r26->field00_bit0 = 1; return; } - if (abs(sp1C) <= 0x5A) { + if (abs(sp1C) <= 90) { var_r20 = boardMotTbl[var_r18]; - } else if (abs(sp1C) <= 0xB4) { + } else if (abs(sp1C) <= 180) { var_r20 = boardMotRevTbl[var_r18]; } else { temp_r26->field00_bit0 = 1; @@ -1822,7 +1822,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { temp_r26->unk_04h = BoardPlayerMotionCreate(arg0, var_r20); OSs16tof32(&arg2, &var_f27); temp_f26 = var_f27 / 59.0f; - if (0.0f != temp_f26) { + if (temp_f26 != 0.0f) { var_f27 = 1.0f / temp_f26; } else { var_f27 = 1.0f; @@ -1830,7 +1830,7 @@ void BoardPlayerMotBlendSet(s32 arg0, s16 arg1, s16 arg2) { if (GWPlayer[arg0].bowser_suit != 0) { BoardBowserSuitMotionSetWalk(); BoardModelMotionSpeedSet(BoardBowserSuitModelGet(), var_f27 / 2); - } else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 0x2D) { + } else if (var_f21 = 8.0f * temp_f26, abs(sp1C) > 45) { var_r22 = temp_r26->unk_04h; BoardPlayerMotionShiftSet(arg0, var_r22, var_f24, var_f21, 0); BoardPlayerMotionSpeedSet(arg0, var_f27); diff --git a/src/game/hsfex.c b/src/game/hsfex.c index 33562538..7f72507c 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -457,7 +457,7 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { temp_r31 = &Hu3DCamera[i]; C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); PSMTXMultVec(sp1C, arg0, &sp10); - temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * 1.2000000476837158; + temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * 1.2f; temp_f30 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z; arg2->x = 288.0f + sp10.x * (288.0f / -temp_f31); arg2->y = 240.0f + sp10.y * (240.0f / temp_f30);