mirror of
https://github.com/zestydevy/marioparty3.git
synced 2024-11-23 05:19:51 +00:00
fix m2ctx.py, add asm_sizes.py, decomp gateguy funcs, various other things
This commit is contained in:
parent
07f30f3ecc
commit
a982212b42
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.gitmodules
vendored
Normal file → Executable file
0
.gitmodules
vendored
Normal file → Executable file
@ -109,8 +109,8 @@ typedef struct {
|
|||||||
/* 16 (0x10) 800D1118 */ u8 curSpaceIndex;
|
/* 16 (0x10) 800D1118 */ u8 curSpaceIndex;
|
||||||
/* 17 (0x11) 800D1119 */ u8 nextChainIndex;
|
/* 17 (0x11) 800D1119 */ u8 nextChainIndex;
|
||||||
/* 18 (0x12) 800D111A */ u8 nextSpaceIndex;
|
/* 18 (0x12) 800D111A */ u8 nextSpaceIndex;
|
||||||
/* 19 (0x13) 800D111B */ u8 unk1ChainIndex;
|
/* 19 (0x13) 800D111B */ s8 unk1ChainIndex;
|
||||||
/* 20 (0x14) 800D111C */ u8 unk1SpaceIndex;
|
/* 20 (0x14) 800D111C */ s8 unk1SpaceIndex;
|
||||||
/* 21 (0x15) 800D111D */ s8 reverseChainIndex;
|
/* 21 (0x15) 800D111D */ s8 reverseChainIndex;
|
||||||
/* 22 (0x16) 800D111E */ s8 reverseSpaceIndex;
|
/* 22 (0x16) 800D111E */ s8 reverseSpaceIndex;
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ segments:
|
|||||||
- [0xEFC0, c, gameman]
|
- [0xEFC0, c, gameman]
|
||||||
- [0xF610, asm, graphics]
|
- [0xF610, asm, graphics]
|
||||||
- [0xFCA0, asm, hmfload]
|
- [0xFCA0, asm, hmfload]
|
||||||
- [0x12E20, asm]
|
- [0x12E20, c]
|
||||||
- [0x13F90, asm]
|
- [0x13F90, asm]
|
||||||
- [0x14EA0, asm]
|
- [0x14EA0, asm]
|
||||||
- [0x19C30, asm]
|
- [0x19C30, asm]
|
||||||
@ -82,7 +82,7 @@ segments:
|
|||||||
- [0x527E0, asm]
|
- [0x527E0, asm]
|
||||||
- [0x52F30, asm, "sprman"]
|
- [0x52F30, asm, "sprman"]
|
||||||
- [0x58000, asm, "sprput"]
|
- [0x58000, asm, "sprput"]
|
||||||
- [0x5ACF0, asm]
|
- [0x5ACF0, c]
|
||||||
- [0x62750, asm]
|
- [0x62750, asm]
|
||||||
- [0x66E70, asm]
|
- [0x66E70, asm]
|
||||||
- [0x67000, asm]
|
- [0x67000, asm]
|
||||||
@ -1407,7 +1407,7 @@ segments:
|
|||||||
start: 0x3D8930
|
start: 0x3D8930
|
||||||
vram: 0x801059A0
|
vram: 0x801059A0
|
||||||
subsegments:
|
subsegments:
|
||||||
- [0x3D8930, asm]
|
- [0x3D8930, c]
|
||||||
- [0x3D8960, asm]
|
- [0x3D8960, asm]
|
||||||
- [0x3D8A70, bin] # data
|
- [0x3D8A70, bin] # data
|
||||||
|
|
||||||
@ -1418,8 +1418,8 @@ segments:
|
|||||||
start: 0x3D8A90
|
start: 0x3D8A90
|
||||||
vram: 0x801059A0
|
vram: 0x801059A0
|
||||||
subsegments:
|
subsegments:
|
||||||
- [0x3D8A90, asm]
|
- [0x3D8A90, c]
|
||||||
- [0x3D8AC0, asm]
|
- [0x3D8AC0, c]
|
||||||
- [0x3EB7D0, bin] # data
|
- [0x3EB7D0, bin] # data
|
||||||
|
|
||||||
- dir: overlays/board_arrowhead_intro
|
- dir: overlays/board_arrowhead_intro
|
||||||
|
90
src/12E20.c
Normal file
90
src/12E20.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#include "common.h"
|
||||||
|
#include "common_structs.h"
|
||||||
|
|
||||||
|
typedef struct unk_struct {
|
||||||
|
f32 unk0;
|
||||||
|
f32 unk4;
|
||||||
|
f32 unk8;
|
||||||
|
f32 unkC;
|
||||||
|
f32 unk10;
|
||||||
|
f32 unk14;
|
||||||
|
f32 unk18;
|
||||||
|
f32 unk1C;
|
||||||
|
f32 unk20;
|
||||||
|
f32 unk24;
|
||||||
|
f32 unk28;
|
||||||
|
f32 unk2C;
|
||||||
|
f32 unk30;
|
||||||
|
char unk_34[0x1C];
|
||||||
|
f32 unk_50;
|
||||||
|
char unk_44[0x1DC];
|
||||||
|
} unk_struct;
|
||||||
|
|
||||||
|
extern unk_struct* D_800A0550_A1150;
|
||||||
|
typedef f32 Matrix4f[4][4];
|
||||||
|
|
||||||
|
f32 func_8008E3F0_8EFF0(f32);
|
||||||
|
f32 func_8008EF20_8FB20(f32);
|
||||||
|
|
||||||
|
void guLookAtF(f32 mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", Hu3DCamInit);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_800123F4_12FF4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012408_13008);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_8001247C_1307C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_800124BC_130BC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012508_13108);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012564_13164);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012640_13240);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_800127C4_133C4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012888_13488);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_800128BC_134BC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_800128EC_134EC);
|
||||||
|
|
||||||
|
void func_8001291C_1351C(s16 index, vec3f *arg1, vec3f *arg2) { //Convert3Dto2D
|
||||||
|
Matrix4f sp28;
|
||||||
|
f32 temp_f20;
|
||||||
|
f32 temp_f22;
|
||||||
|
f32 temp_f24;
|
||||||
|
f32 temp_f28;
|
||||||
|
f32 temp_f2;
|
||||||
|
f32 temp_f30;
|
||||||
|
unk_struct *temp_s0;
|
||||||
|
|
||||||
|
temp_s0 = &D_800A0550_A1150[index];
|
||||||
|
guLookAtF(sp28, temp_s0->unk10, temp_s0->unk14, temp_s0->unk18, temp_s0->unk1C, temp_s0->unk20, temp_s0->unk24, temp_s0->unk28, temp_s0->unk2C, temp_s0->unk30);
|
||||||
|
temp_f30 = arg1->x;
|
||||||
|
temp_f28 = arg1->y;
|
||||||
|
temp_f2 = arg1->z;
|
||||||
|
temp_f30 -= temp_s0->unk10;
|
||||||
|
temp_f28 -= temp_s0->unk14;
|
||||||
|
temp_f2 -= temp_s0->unk18;
|
||||||
|
temp_f24 = ((temp_f30 * sp28[0][0]) + (temp_f28 * sp28[1][0])) + (temp_f2 * sp28[2][0]);
|
||||||
|
temp_f22 = ((temp_f30 * sp28[0][1]) + (temp_f28 * sp28[1][1])) + (temp_f2 * sp28[2][1]);
|
||||||
|
temp_f20 = ((temp_f30 * sp28[0][2]) + (temp_f28 * sp28[1][2])) + (temp_f2 * sp28[2][2]);
|
||||||
|
temp_f30 = func_8008EF20_8FB20(temp_s0->unk_50 / 2.0f) / func_8008E3F0_8EFF0(temp_s0->unk_50 / 2.0f) * temp_f20 * (4.0f / 3.0f);
|
||||||
|
temp_f28 = (func_8008EF20_8FB20(temp_s0->unk_50 / 2.0f) / func_8008E3F0_8EFF0(temp_s0->unk_50 / 2.0f)) * temp_f20;
|
||||||
|
arg2->x = (temp_f24 * (160.0f / (-temp_f30))) + 160.0f;
|
||||||
|
arg2->y = ((temp_f22 * (120.0f / temp_f28)) + 120.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012B14_13714);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012D0C_1390C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80012E54_13A54);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80013320_13F20);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "12E20", func_80013350_13F50);
|
256
src/5ACF0.c
Normal file
256
src/5ACF0.c
Normal file
@ -0,0 +1,256 @@
|
|||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
typedef struct TextWindow {
|
||||||
|
/* 0x00 */ u8 unk_00;
|
||||||
|
/* 0x01 */ char unk_01[3];
|
||||||
|
/* 0x04 */ char unk_04;
|
||||||
|
/* 0x05 */ u8 unk_05;
|
||||||
|
/* 0x06 */ char unk_06[0x0A];
|
||||||
|
/* 0x10 */ u8 unk_10;
|
||||||
|
/* 0x11 */ char unk_11[3];
|
||||||
|
/* 0x14 */ char unk_14[4];
|
||||||
|
/* 0x18 */ s16 unk_18;
|
||||||
|
/* 0x1A */ s16 unk_1A;
|
||||||
|
/* 0x1C */ char unk_1C[0x10];
|
||||||
|
/* 0x2C */ s16 unk_2C;
|
||||||
|
/* 0x2E */ s16 unk_2E;
|
||||||
|
/* 0x30 */ char unk_30[4];
|
||||||
|
/* 0x34 */ s16 unk_34;
|
||||||
|
/* 0x36 */ char unk_36[0x77];
|
||||||
|
/* 0xAD */ s8 usingStringIDBool[5]; //unknown size
|
||||||
|
/* 0xB2 */ s8 unk_B2[6]; //unknown size
|
||||||
|
/* 0xB8 */ s32 unk_B8[4];
|
||||||
|
/* 0xC8 */ char unk_C8[0x1B4];
|
||||||
|
} TextWindow; //sizeof 0x27C
|
||||||
|
|
||||||
|
extern TextWindow* D_800CC69C;
|
||||||
|
|
||||||
|
s32 func_800364DC_370DC(u32);
|
||||||
|
void func_800365E8_371E8(u32);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A0F0_5ACF0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A32C_5AF2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A37C_5AF7C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A3C0_5AFC0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A428_5B028);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A51C_5B11C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A54C_5B14C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A580_5B180);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A5B0_5B1B0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A5EC_5B1EC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A61C_5B21C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A674_5B274);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A6B0_5B2B0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005A968_5B568);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B040_5BC40);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B238_5BE38);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B43C_5C03C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B5EC_5C1EC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B614_5C214);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B63C_5C23C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B68C_5C28C);
|
||||||
|
|
||||||
|
void func_8005B6BC_5C2BC(s16 win_id, u32 arg1, s8 arg2) {
|
||||||
|
TextWindow* textWindow = &D_800CC69C[win_id];
|
||||||
|
|
||||||
|
if (textWindow->unk_B8[arg2] != 0) {
|
||||||
|
if (textWindow->usingStringIDBool[arg2] != 0) {
|
||||||
|
func_800365E8_371E8(textWindow->unk_B8[arg2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (0x80000000 < arg1) {
|
||||||
|
textWindow->usingStringIDBool[arg2] = 0;
|
||||||
|
textWindow->unk_B8[arg2] = arg1;
|
||||||
|
} else {
|
||||||
|
textWindow->usingStringIDBool[arg2] = 1;
|
||||||
|
textWindow->unk_B8[arg2] = func_800364DC_370DC(arg1);
|
||||||
|
}
|
||||||
|
textWindow->unk_B2[arg2] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B7B8_5C3B8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B8F8_5C4F8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005B974_5C574);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BA28_5C628);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BA54_5C654);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BA90_5C690);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BB18_5C718);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BBC0_5C7C0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BCA4_5C8A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BDA8_5C9A8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BDFC_5C9FC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BE30_5CA30);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BEE0_5CAE0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005BF70_5CB70);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005C02C_5CC2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005C060_5CC60);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005C154_5CD54);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005C190_5CD90);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CC18_5D818);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CC3C_5D83C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CCF0_5D8F0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CD38_5D938);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CD84_5D984);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CE10_5DA10);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CEB0_5DAB0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CF94_5DB94);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005CFE0_5DBE0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005D294_5DE94);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005D2D4_5DED4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005D2FC_5DEFC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005D30C_5DF0C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005D83C_5E43C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005DAA4_5E6A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005DC94_5E894);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005DD14_5E914);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005DD54_5E954);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005DDDC_5E9DC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005E0C0_5ECC0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005E1A8_5EDA8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005E1D8_5EDD8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005E348_5EF48);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005EEE4_5FAE4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F364_5FF64);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F524_60124);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F698_60298);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F744_60344);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F784_60384);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F7F4_603F4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F904_60504);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005F918_60518);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FA90_60690);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FBA4_607A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FBF8_607F8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FE54_60A54);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FE90_60A90);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8005FFA8_60BA8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800600C0_60CC0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8006010C_60D0C);
|
||||||
|
|
||||||
|
void func_80060144_60D44(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8006014C_60D4C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060174_60D74);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800601BC_60DBC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8006022C_60E2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060290_60E90);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8006034C_60F4C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060388_60F88);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060394_60F94);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800604A8_610A8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800605A4_611A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060848_61448);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060858_61458);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060880_61480);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060C14_61814);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060DEC_619EC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80060EA8_61AA8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_8006105C_61C5C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800610E0_61CE0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80061100_61D00);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80061188_61D88);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80061388_61F88);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_800615B8_621B8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80061934_62534);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "5ACF0", func_80061A5C_6265C);
|
12
src/overlays/board_gate_guy/3D8A90.c
Normal file
12
src/overlays/board_gate_guy/3D8A90.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "GateGuy.h"
|
||||||
|
|
||||||
|
typedef struct board_overlay_entrypoint {
|
||||||
|
s16 index;
|
||||||
|
void* fn;
|
||||||
|
} board_overlay_entrypoint;
|
||||||
|
|
||||||
|
extern board_overlay_entrypoint D_801186E0_3EB7D0[];
|
||||||
|
|
||||||
|
void func_801059A0_3D8A90(void) {
|
||||||
|
func_800359E0_365E0(&D_801186E0_3EB7D0, D_800A1764_A2364);
|
||||||
|
}
|
354
src/overlays/board_gate_guy/3D8AC0.c
Normal file
354
src/overlays/board_gate_guy/3D8AC0.c
Normal file
@ -0,0 +1,354 @@
|
|||||||
|
#include "GateGuy.h"
|
||||||
|
|
||||||
|
void func_801059D0_3D8AC0(void) {
|
||||||
|
D_800CDD58 = 1;
|
||||||
|
D_800D037C = 0;
|
||||||
|
func_80047B80_48780(HuPrcGetCurrent(), 0x80);
|
||||||
|
func_80100CEC(gPlayers[gCurrentPlayerIndex].controller);
|
||||||
|
func_80047BAC_487AC(HuPrcGetCurrent(), 0x80);
|
||||||
|
D_800CDD58 = 0;
|
||||||
|
D_800D037C = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80105A58_3D8B48(void) {
|
||||||
|
while (func_800E88FC() != 0) {
|
||||||
|
HuPrcVSleep();
|
||||||
|
}
|
||||||
|
HuPrcVSleep();
|
||||||
|
D_80119470 = func_800E1824(0, 0xA0, 1);
|
||||||
|
D_80119474 = func_800E1824(0xD, 0xAE, 1);
|
||||||
|
D_80119478 = func_800E1824(1, 0xBC, 1);
|
||||||
|
D_8011947C = func_800E1824(3, 0xCA, 1);
|
||||||
|
HuPrcSleep(3);
|
||||||
|
D_800CDD58 = 1;
|
||||||
|
D_800D51F8 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80105B10_3D8C00(void) {
|
||||||
|
D_800CDD58 = 0;
|
||||||
|
D_800D51F8 = 0;
|
||||||
|
func_800E1854(D_80119470);
|
||||||
|
func_800E1854(D_80119474);
|
||||||
|
func_800E1854(D_80119478);
|
||||||
|
func_800E1854(D_8011947C);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80105B64_3D8C54(void) {
|
||||||
|
D_800CD059 = 0;
|
||||||
|
HuObjInit(0xA, 0);
|
||||||
|
func_80048228_48E28(0x5A, 0, 0x4190);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80105B9C_3D8C8C(void) {
|
||||||
|
s8 sp10;
|
||||||
|
s8 sp11;
|
||||||
|
|
||||||
|
HuObjInit(0xA, 0);
|
||||||
|
func_800E94D0();
|
||||||
|
func_800E9B10(0x13, 0x241);
|
||||||
|
func_800E9F4C(0x1C, &sp10, &sp11);
|
||||||
|
func_800ECD0C(0, sp10, sp11);
|
||||||
|
func_800E9F4C(0x1B, &sp10, &sp11);
|
||||||
|
func_800ECD0C(1, sp10, sp11);
|
||||||
|
gPlayers[0].unk1ChainIndex = -1;
|
||||||
|
gPlayers[0].unk1SpaceIndex = -1;
|
||||||
|
gPlayers[1].unk1ChainIndex = -1;
|
||||||
|
gPlayers[1].unk1SpaceIndex = -1;
|
||||||
|
func_800E9D9C();
|
||||||
|
func_800E9564();
|
||||||
|
D_800CD0B0.unk_04 = 5;
|
||||||
|
D_800CD0B0.unk_02 = 0;
|
||||||
|
func_800EA760();
|
||||||
|
func_8004819C_48D9C(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80105C64_3D8D54(s32 arg0, s32 arg1, unkStruct01* arg2) {
|
||||||
|
f32 temp_f20;
|
||||||
|
|
||||||
|
func_800EB708(arg0, arg1, arg2);
|
||||||
|
temp_f20 = func_800D76D0(arg2) + 15.0f;
|
||||||
|
arg2->unk_00 = func_8008EF20_8FB20(temp_f20);
|
||||||
|
arg2->unk_08 = func_8008E3F0_8EFF0(temp_f20);
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80105CC0_3D8DB0);
|
||||||
|
|
||||||
|
void* func_80105EB0_3D8FA0(unkStruct04* arg0) {
|
||||||
|
unkStruct03* temp_v0;
|
||||||
|
unkStruct02* temp_v0_2;
|
||||||
|
|
||||||
|
temp_v0 = func_80047EA0_48AA0(&func_80105CC0_3D8DB0, 0xA, 0, 0x40);
|
||||||
|
temp_v0_2 = HuMemMemoryAlloc(temp_v0->unk_18, sizeof(unkStruct02));
|
||||||
|
temp_v0->unk_8C = temp_v0_2;
|
||||||
|
temp_v0_2->unk_00.x = arg0->unk_0C.x;
|
||||||
|
temp_v0_2->unk_00.y = arg0->unk_0C.y;
|
||||||
|
temp_v0_2->unk_00.z = arg0->unk_0C.z;
|
||||||
|
return temp_v0;
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80105F20_3D9010);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801060D0_3D91C0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010615C_3D924C);
|
||||||
|
|
||||||
|
void func_80106240_3D9330(void) {
|
||||||
|
func_800FC8C4(&D_80105540);
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80106260_3D9350(s32 arg0, unkStruct05* arg1, s32 arg2, f32 arg3) {
|
||||||
|
arg3 = arg3 + 0.5f;
|
||||||
|
if (arg2 & 9) {
|
||||||
|
func_800EC1E4(&D_80105540, arg0 + 0xC, &D_80105540, arg3);
|
||||||
|
} else {
|
||||||
|
func_800EC1E4(&D_80105540, arg1->unk_24 + 0xC, &D_80105540, arg3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_801062C0_3D93B0(s32 arg0, unkStruct05* arg1, s32 arg2, f32 arg3) {
|
||||||
|
if (arg2 & 9) {
|
||||||
|
func_800EBF2C(&D_80105540, arg0 + 0xC, &D_80105540);
|
||||||
|
} else {
|
||||||
|
func_800EBF2C(&D_80105540, arg1->unk_24 + 0xC, &D_80105540);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80106308_3D93F8);
|
||||||
|
|
||||||
|
unkStruct03* func_8010645C_3D954C(s32 arg0, s32 arg1) {
|
||||||
|
unkStruct03* temp_v0;
|
||||||
|
unkStruct06* temp_v0_2;
|
||||||
|
|
||||||
|
temp_v0 = func_80047EA0_48AA0(&func_80106308_3D93F8, 0xA, 0, 0x40);
|
||||||
|
temp_v0_2 = HuMemMemoryAlloc(temp_v0->unk_18, sizeof(unkStruct06));
|
||||||
|
temp_v0->unk_8C = temp_v0_2;
|
||||||
|
temp_v0_2->unk_00 = arg0;
|
||||||
|
temp_v0_2->unk_04 = arg1;
|
||||||
|
return temp_v0;
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801064C8_3D95B8);
|
||||||
|
|
||||||
|
void* func_80106740_3D9830(s32 arg0) {
|
||||||
|
object* temp_v0;
|
||||||
|
|
||||||
|
temp_v0 = func_800D8010(arg0 & 0xFF, 0);
|
||||||
|
func_8001C258_1CE58(*temp_v0->unk3C->unk40, 0x180, 0);
|
||||||
|
func_8001C8E4_1D4E4(*temp_v0->unk3C->unk40, 0x1800);
|
||||||
|
func_8001C448_1D048(*temp_v0->unk3C->unk40);
|
||||||
|
func_800D8944(temp_v0);
|
||||||
|
func_800D8F0C(temp_v0);
|
||||||
|
func_8001C814_1D414(*temp_v0->unk3C->unk40, 2, 1);
|
||||||
|
return temp_v0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_801067D4_3D98C4(object* arg0, s32 arg1) {
|
||||||
|
func_800D8E88();
|
||||||
|
func_8001C814_1D414(*arg0->unk3C->unk40, 3, 0);
|
||||||
|
func_80089A20_8A620(&arg0->coords, arg1);
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80106828_3D9918);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80107188_3DA278);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801079B8_3DAAA8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80107EBC_3DAFAC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801084A4_3DB594);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80108550_3DB640);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80109404_3DC4F4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80109888_3DC978);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010A210_3DD300);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010AAB0_3DDBA0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010AD48_3DDE38);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010AFB4_3DE0A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B130_3DE220);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B480_3DE570);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B4C0_3DE5B0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B528_3DE618);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B53C_3DE62C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010B54C_3DE63C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010BCD4_3DEDC4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010CE68_3DFF58);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010D424_3E0514);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010D95C_3E0A4C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010D9F4_3E0AE4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DA84_3E0B74);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DB00_3E0BF0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DB2C_3E0C1C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DC04_3E0CF4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DCA8_3E0D98);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DD3C_3E0E2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DDEC_3E0EDC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010DF68_3E1058);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E008_3E10F8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E1B4_3E12A4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E2CC_3E13BC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E2F8_3E13E8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E348_3E1438);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E3F8_3E14E8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E574_3E1664);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E614_3E1704);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E7C0_3E18B0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E8D8_3E19C8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E904_3E19F4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010E954_3E1A44);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EA74_3E1B64);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EAD4_3E1BC4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EB44_3E1C34);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EB88_3E1C78);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EC78_3E1D68);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010ED20_3E1E10);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EDA0_3E1E90);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010EFBC_3E20AC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010F12C_3E221C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8010F99C_3E2A8C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80110068_3E3158);
|
||||||
|
|
||||||
|
void func_80110B7C_3E3C6C(void) {
|
||||||
|
unkStruct07* temp_s0;
|
||||||
|
|
||||||
|
temp_s0 = func_800F375C(-1);
|
||||||
|
if (func_800F3750() == 0 && !(temp_s0->unk_17 & 4)) {
|
||||||
|
func_800F38DC(-1, -1, 2);
|
||||||
|
func_80110068_3E3158(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void func_80110BD8_3E3CC8(void) {
|
||||||
|
unkStruct07* temp_s0;
|
||||||
|
|
||||||
|
temp_s0 = func_800F375C(-1);
|
||||||
|
if ((func_800F3750() == 1) && !(temp_s0->unk_17 & 4)) {
|
||||||
|
func_800F38DC(-1, -1, 2);
|
||||||
|
func_80110068_3E3158(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80110C3C_3E3D2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80111DFC_3E4EEC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801123E8_3E54D8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801124D8_3E55C8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80112514_3E5604);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80112590_3E5680);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801125CC_3E56BC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8011264C_3E573C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801129C8_3E5AB8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80112BB4_3E5CA4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80112DA0_3E5E90);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801135D8_3E66C8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801138D0_3E69C0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8011390C_3E69FC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80113CAC_3E6D9C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801147FC_3E78EC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80115850_3E8940);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801159F8_3E8AE8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80116484_3E9574);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117480_3EA570);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117624_3EA714);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801179AC_3EAA9C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117D3C_3EAE2C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117DDC_3EAECC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117E7C_3EAF6C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117ED8_3EAFC8);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80117FFC_3EB0EC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118058_3EB148);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118178_3EB268);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801181C4_3EB2B4);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118210_3EB300);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_8011825C_3EB34C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801182A8_3EB398);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_801182E4_3EB3D4);
|
||||||
|
|
||||||
|
void func_80118320_3EB410(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118328_3EB418);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118414_3EB504);
|
||||||
|
|
||||||
|
INCLUDE_ASM(s32, "overlays/board_gate_guy/3D8AC0", func_80118530_3EB620);
|
123
src/overlays/board_gate_guy/GateGuy.h
Normal file
123
src/overlays/board_gate_guy/GateGuy.h
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
#include "common.h"
|
||||||
|
#include "process.h"
|
||||||
|
#include "common_structs.h"
|
||||||
|
|
||||||
|
typedef struct unkStruct {
|
||||||
|
s16 unk_00;
|
||||||
|
s16 unk_02;
|
||||||
|
s16 unk_04;
|
||||||
|
} unkStruct;
|
||||||
|
typedef struct unkStruct01 {
|
||||||
|
f32 unk_00;
|
||||||
|
char unk_04[4];
|
||||||
|
f32 unk_08;
|
||||||
|
} unkStruct01;
|
||||||
|
|
||||||
|
typedef struct unkStruct02 {
|
||||||
|
vec3f unk_00;
|
||||||
|
char unk_0C[4];
|
||||||
|
} unkStruct02;
|
||||||
|
|
||||||
|
struct heap_node
|
||||||
|
{
|
||||||
|
s32 size; // 0000
|
||||||
|
u8 heap_constant; // 0004
|
||||||
|
u8 used; // bool // 0005
|
||||||
|
struct heap_node *prev; // 0008
|
||||||
|
struct heap_node *next; // 000C
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct unkStruct03 {
|
||||||
|
char unk_00[0x18];
|
||||||
|
struct heap_node* unk_18;
|
||||||
|
char unk_1C[0x70];
|
||||||
|
unkStruct02* unk_8C;
|
||||||
|
} unkStruct03;
|
||||||
|
|
||||||
|
typedef struct unkStruct04 {
|
||||||
|
char unk_00[0x0C];
|
||||||
|
vec3f unk_0C;
|
||||||
|
} unkStruct04;
|
||||||
|
|
||||||
|
typedef struct unkStruct05 {
|
||||||
|
char unk_00[0x24];
|
||||||
|
s32 unk_24;
|
||||||
|
} unkStruct05;
|
||||||
|
|
||||||
|
typedef struct unkStruct06 {
|
||||||
|
s32 unk_00;
|
||||||
|
s32 unk_04;
|
||||||
|
f32 unk_08;
|
||||||
|
char unk_0C[4];
|
||||||
|
} unkStruct06;
|
||||||
|
|
||||||
|
typedef struct unkStruct07 {
|
||||||
|
char unk_00[0x17];
|
||||||
|
u8 unk_17;
|
||||||
|
} unkStruct07;
|
||||||
|
|
||||||
|
void func_800359E0_365E0(void*, s16);
|
||||||
|
extern s16 D_800A1764_A2364;
|
||||||
|
|
||||||
|
extern s8 gCurrentPlayerIndex;
|
||||||
|
extern player gPlayers[4];
|
||||||
|
void func_80047B80_48780(struct process*, s32);
|
||||||
|
void func_80047BAC_487AC(struct process*, s32);
|
||||||
|
void func_80100CEC(u8);
|
||||||
|
extern s16 D_800CDD58;
|
||||||
|
extern s16 D_800D037C;
|
||||||
|
s32 func_800E1824(s32, s32, s32);
|
||||||
|
s32 func_800E88FC(void);
|
||||||
|
extern s16 D_800D51F8;
|
||||||
|
extern s32 D_80119470;
|
||||||
|
extern s32 D_80119474;
|
||||||
|
extern s32 D_80119478;
|
||||||
|
extern s32 D_8011947C;
|
||||||
|
void func_800E1854(s32);
|
||||||
|
extern s16 D_800D51F8;
|
||||||
|
extern s32 D_80119470;
|
||||||
|
extern s32 D_80119474;
|
||||||
|
extern s32 D_80119478;
|
||||||
|
extern s32 D_8011947C;
|
||||||
|
void HuObjInit(s32, s32);
|
||||||
|
void func_80048228_48E28(s32, s32, s32);
|
||||||
|
extern s8 D_800CD059;
|
||||||
|
void func_8004819C_48D9C(s32);
|
||||||
|
void func_800E94D0(void);
|
||||||
|
void func_800E9564(void);
|
||||||
|
void func_800E9B10(s32, s32);
|
||||||
|
void func_800E9D9C(void);
|
||||||
|
void func_800E9F4C(s32, s8*, s8*);
|
||||||
|
void func_800EA760(void);
|
||||||
|
void func_800ECD0C(s32, s8, s8);
|
||||||
|
f32 func_8008E3F0_8EFF0(f32);
|
||||||
|
f32 func_8008EF20_8FB20(f32);
|
||||||
|
f32 func_800D76D0(void*);
|
||||||
|
void func_800EB708(s32, s32, unkStruct01*);
|
||||||
|
void * HuMemMemoryAlloc(struct heap_node * heap, s32 size);
|
||||||
|
unkStruct03* func_80047EA0_48AA0(void*, s32, s32, s32);
|
||||||
|
void func_80105CC0_3D8DB0(void); //probably takes object as arg
|
||||||
|
void func_800FC8C4(void*);
|
||||||
|
extern s32 D_80105540;
|
||||||
|
void func_800EC1E4(void*, s32, void*, f32);
|
||||||
|
extern s32 D_80105540;
|
||||||
|
extern unkStruct D_800CD0B0;
|
||||||
|
void func_800EBF2C(void*, s32, void*);
|
||||||
|
void func_80106308_3D93F8(void);
|
||||||
|
void func_8001C258_1CE58(s16, s32, s32);
|
||||||
|
void func_8001C448_1D048(s16);
|
||||||
|
void func_8001C814_1D414(s16, s32, s32);
|
||||||
|
void func_8001C8E4_1D4E4(s16, s32);
|
||||||
|
void* func_800D8010(s32, s32);
|
||||||
|
void func_800D8944(void*);
|
||||||
|
void func_800D8F0C(void*);
|
||||||
|
void func_80089A20_8A620(vec3f*, s32);
|
||||||
|
void func_800D8E88(void);
|
||||||
|
s16 func_800F3750(void);
|
||||||
|
void* func_800F375C(s32);
|
||||||
|
void func_800F38DC(s32, s32, s32);
|
||||||
|
void func_80110068_3E3158(s32);
|
||||||
|
s16 func_800F3750(void);
|
||||||
|
void* func_800F375C(s32);
|
||||||
|
void func_800F38DC(s32, s32, s32);
|
||||||
|
void func_80110068_3E3158(s32);
|
15
src/overlays/gate_guy_intro1/3D8930.c
Normal file
15
src/overlays/gate_guy_intro1/3D8930.c
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
typedef struct board_overlay_entrypoint {
|
||||||
|
s16 index;
|
||||||
|
void* fn;
|
||||||
|
} board_overlay_entrypoint;
|
||||||
|
|
||||||
|
void func_800359E0_365E0(void*, s16);
|
||||||
|
extern s16 D_800A1764_A2364;
|
||||||
|
extern board_overlay_entrypoint D_80105AE0_3D8A70[];
|
||||||
|
|
||||||
|
void func_801059A0_3D8930(void) {
|
||||||
|
//func_800359E0_365E0 is ExecBoardScene from mp1
|
||||||
|
func_800359E0_365E0(D_80105AE0_3D8A70, D_800A1764_A2364);
|
||||||
|
}
|
@ -434,3 +434,5 @@ _Ldunscale = 0x800843EC;
|
|||||||
_Genld = 0x80084484;
|
_Genld = 0x80084484;
|
||||||
|
|
||||||
guNormalize = 0x80082B00;
|
guNormalize = 0x80082B00;
|
||||||
|
gCurrentPlayerIndex = 0x800CD067;
|
||||||
|
guLookAtF = 0x80088210;
|
79
tools/asm_sizes.py
Executable file
79
tools/asm_sizes.py
Executable file
@ -0,0 +1,79 @@
|
|||||||
|
#! /usr/bin/python3
|
||||||
|
|
||||||
|
import json
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
|
|
||||||
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
asm_dir = script_dir + "/../asm/nonmatchings"
|
||||||
|
|
||||||
|
modes = [ "min", "max", "avg", "total", "size" ]
|
||||||
|
|
||||||
|
sizes = {}
|
||||||
|
|
||||||
|
funcs = {}
|
||||||
|
|
||||||
|
|
||||||
|
# Calculate the number of instructions in a .s file
|
||||||
|
def calc_insns(f_path):
|
||||||
|
ret = 0
|
||||||
|
with open(f_path) as f:
|
||||||
|
f_lines = f.readlines()
|
||||||
|
for line in f_lines:
|
||||||
|
if line.startswith("/* "):
|
||||||
|
ret += 1
|
||||||
|
funcs[f_path.split("/")[-1][:-2]] = ret
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
# Calculate different data points for each .c files and store them as a Tuple
|
||||||
|
def do_dir(root, dir):
|
||||||
|
max = 0
|
||||||
|
min = 0
|
||||||
|
total = 0
|
||||||
|
|
||||||
|
files = glob.glob(os.path.join(root, dir) + "/*.s")
|
||||||
|
|
||||||
|
for f in files:
|
||||||
|
amt = calc_insns(f)
|
||||||
|
if amt > max:
|
||||||
|
max = amt
|
||||||
|
if min == 0 or amt < min:
|
||||||
|
min = amt
|
||||||
|
total += amt
|
||||||
|
|
||||||
|
avg = 0 if len(files) == 0 else total / len(files)
|
||||||
|
|
||||||
|
sizes[root + "/" + dir] = ((min, max, total, avg, len(files)))
|
||||||
|
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description="A tool to receive information about the number of non-matching .s files "
|
||||||
|
+"per .c file, or the size of .s files, measured by their number of instructions. "
|
||||||
|
+"Option -p is used by default if no option is specified.")
|
||||||
|
group = parser.add_mutually_exclusive_group()
|
||||||
|
group.add_argument("-f", "--files", help="Default. Print the number of non-matching .s files per .c file, ordered by size.", action='store_true', required=False)
|
||||||
|
group.add_argument("-a", "--alphabetical", help="Print the size of .s files, ordered by name.", action='store_true', required=False)
|
||||||
|
group.add_argument("-s", "--size", help="Print the size of .s files, ordered by size.", action='store_true', required=False)
|
||||||
|
parser.add_argument("-l", "--limit", help="Only print the .c --files that are greater than or equal to the value.", type=int, default=0, required=False)
|
||||||
|
parser.add_argument("-m", "--mode", help="Switches between output modes for --files. Allowed values are: {min, max, avg, total, size}.", choices=modes, default="size", metavar='', required=False)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
for root, dirs, files in os.walk(asm_dir):
|
||||||
|
for asm_dir in dirs:
|
||||||
|
do_dir(root, asm_dir)
|
||||||
|
|
||||||
|
if args.alphabetical:
|
||||||
|
print(json.dumps(dict(sorted(funcs.items(), key=lambda f: f[0])), indent=4))
|
||||||
|
elif args.size:
|
||||||
|
print(json.dumps(dict(sorted(funcs.items(), key=lambda f: f[1])), indent=4))
|
||||||
|
else:
|
||||||
|
for thing in sorted(sizes.keys(), key=lambda x: sizes[x][modes.index(args.mode)]):
|
||||||
|
val = sizes[thing][modes.index(args.mode)]
|
||||||
|
if val > args.limit:
|
||||||
|
print(thing.split("nonmatchings/")[1].ljust(50) + str(val))
|
89
tools/m2ctx.py
Normal file → Executable file
89
tools/m2ctx.py
Normal file → Executable file
@ -1,68 +1,73 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Generates a "context" file for use with mips_to_c
|
|
||||||
# ./m2ctx.py file.c [output.c]
|
|
||||||
|
|
||||||
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
import tempfile
|
||||||
|
|
||||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
root_dir = os.path.abspath(os.path.join(script_dir, ".."))
|
root_dir = os.path.abspath(os.path.join(script_dir, ".."))
|
||||||
src_dir = root_dir + "src/"
|
src_dir = root_dir + "src/"
|
||||||
|
|
||||||
|
# Project-specific
|
||||||
|
CPP_FLAGS = [
|
||||||
|
"-Iinclude",
|
||||||
|
"-Isrc",
|
||||||
|
"-Ibuild/include",
|
||||||
|
"-Iinclude/engine",
|
||||||
|
"-D_LANGUAGE_C",
|
||||||
|
"-DF3DEX_GBI_2",
|
||||||
|
"-D_MIPS_SZLONG=32",
|
||||||
|
"-D__attribute__(...)=",
|
||||||
|
"-D__asm__(...)=",
|
||||||
|
"-ffreestanding",
|
||||||
|
"-DM2CTX",
|
||||||
|
]
|
||||||
|
|
||||||
def get_c_dir(dirname):
|
def import_c_file(in_file) -> str:
|
||||||
for root, dirs, files in os.walk(src_dir):
|
|
||||||
for directory in dirs:
|
|
||||||
if directory == dirname:
|
|
||||||
return os.path.join(root, directory)
|
|
||||||
|
|
||||||
|
|
||||||
def get_c_file(directory):
|
|
||||||
for root, dirs, files in os.walk(directory):
|
|
||||||
for file in files:
|
|
||||||
if file.endswith(".c") and "data" not in file:
|
|
||||||
return file
|
|
||||||
|
|
||||||
|
|
||||||
def import_c_file(in_file):
|
|
||||||
in_file = os.path.relpath(in_file, root_dir)
|
in_file = os.path.relpath(in_file, root_dir)
|
||||||
cpp_command = ["gcc", "-E", "-P", "-Iinclude", "-Isrc","-D_LANGUAGE_C",
|
cpp_command = ["gcc", "-E", "-P", "-dM", *CPP_FLAGS, in_file]
|
||||||
"-ffreestanding", "-DF3DEX_GBI_2", "-D_MIPS_SZLONG=32", "-DSCRIPT(...)={}", in_file]
|
cpp_command2 = ["gcc", "-E", "-P", *CPP_FLAGS, in_file]
|
||||||
|
|
||||||
|
with tempfile.NamedTemporaryFile(suffix=".c") as tmp:
|
||||||
|
stock_macros = subprocess.check_output(["gcc", "-E", "-P", "-dM", tmp.name], cwd=root_dir, encoding="utf-8")
|
||||||
|
|
||||||
|
out_text = ""
|
||||||
try:
|
try:
|
||||||
return subprocess.check_output(cpp_command, cwd=root_dir, encoding="utf-8")
|
out_text += subprocess.check_output(cpp_command, cwd=root_dir, encoding="utf-8")
|
||||||
|
out_text += subprocess.check_output(cpp_command2, cwd=root_dir, encoding="utf-8")
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
print(
|
print(
|
||||||
"Failed to preprocess input file, when running command:\n"
|
"Failed to preprocess input file, when running command:\n"
|
||||||
+ cpp_command,
|
+ ' '.join(cpp_command),
|
||||||
file=sys.stderr,
|
file=sys.stderr,
|
||||||
)
|
)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
if not out_text:
|
||||||
|
print("Output is empty - aborting")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
for line in stock_macros.strip().splitlines():
|
||||||
|
out_text = out_text.replace(line + "\n", "")
|
||||||
|
return out_text
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) > 1:
|
parser = argparse.ArgumentParser(
|
||||||
c_file_path = Path.cwd() / sys.argv[1]
|
description="""Create a context file which can be used for mips_to_c"""
|
||||||
if len(sys.argv) > 2:
|
)
|
||||||
out_file_path = Path.cwd() / sys.argv[2]
|
parser.add_argument(
|
||||||
m2ctx(c_file_path, out_file_path)
|
"c_file",
|
||||||
|
help="""File from which to create context""",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
output = import_c_file(args.c_file)
|
||||||
|
|
||||||
def m2ctx(c_file_path, out_file_path):
|
with open(os.path.join(root_dir, "ctx.c"), "w", encoding="UTF-8") as f:
|
||||||
processed = import_c_file(c_file_path)
|
f.write(output)
|
||||||
processed_lines = processed.split("\n")
|
|
||||||
output = []
|
|
||||||
|
|
||||||
for line in processed_lines:
|
|
||||||
if ("__attribute__" not in line
|
|
||||||
and "__asm" not in line):
|
|
||||||
output.append(line)
|
|
||||||
|
|
||||||
with open(out_file_path, "w", encoding="UTF-8") as f:
|
|
||||||
f.write("\n".join(output))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
Loading…
Reference in New Issue
Block a user