From 81a86e30aa12bdb73cf24d21cbb4e34b704bc051 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 4 Mar 2020 17:28:32 +1000 Subject: [PATCH] Attempt to decompile func0f0c3b38 --- src/game/bondwalk.c | 41 ++++++++++++++++++++++++++++++++ src/game/game_0b28d0.c | 5 ---- src/include/game/bondwalk.h | 2 +- src/include/game/chr/chraction.h | 2 +- src/include/game/game_066310.h | 2 +- src/include/lib/lib_233c0.h | 2 +- 6 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index a3eb603f7..4fd66db49 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -133,6 +133,8 @@ void currentPlayerAdjustCrouchPos(s32 value) } } +const char var7f1ad750[] = "bondwalk.c"; + GLOBAL_ASM( glabel func0f0c3b38 /* f0c3b38: 27bdff90 */ addiu $sp,$sp,-112 @@ -225,6 +227,45 @@ glabel func0f0c3b38 /* f0c3c88: 00000000 */ sll $zero,$zero,0x0 ); +// Mismatch because the operands are swapped for the vector != 0 checks +//void func0f0c3b38(struct coord *reltarget, struct defaultobj *obj) +//{ +// struct coord posunk; +// struct coord vector; +// struct coord tween; +// struct coord globalthinga; +// struct coord globalthingb; +// struct coord abstarget; +// +// abstarget.x = reltarget->x + g_Vars.currentplayer->prop->pos.x; +// abstarget.y = g_Vars.currentplayer->prop->pos.y; +// abstarget.z = reltarget->z + g_Vars.currentplayer->prop->pos.z; +// +// func00024e4c(&globalthinga, &globalthingb, 0xdf, "bondwalk.c"); +// +// vector.x = globalthingb.z - globalthinga.z; +// vector.y = 0; +// vector.z = globalthinga.x - globalthingb.x; +// +// if (vector.x != 0 || vector.z != 0) { +// scaleTo1(&vector.x, &vector.y, &vector.z); +// } else { +// vector.z = 1; +// } +// +// func0f02e3dc(&globalthinga, &globalthingb, &abstarget, &vector, &posunk); +// +// tween.x = (abstarget.x - g_Vars.currentplayer->prop->pos.x) / g_Vars.lvupdate240freal; +// tween.y = 0; +// tween.z = (abstarget.z - g_Vars.currentplayer->prop->pos.z) / g_Vars.lvupdate240freal; +// +// func0f082e84(obj, &posunk, &vector, &tween, false); +//} + +const char var7f1ad75c[] = "bondwalk.c"; +const char var7f1ad768[] = "bondwalk.c"; +const char var7f1ad774[] = "bondwalk.c"; + GLOBAL_ASM( glabel func0f0c3c8c .late_rodata diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 61a6c17d5..12697263f 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -190,11 +190,6 @@ const u32 var7f1ad744[] = {0x3dd66e92}; const u32 var7f1ad748[] = {0x00000000}; const u32 var7f1ad74c[] = {0x00000000}; -const char var7f1ad750[] = "bondwalk.c"; -const char var7f1ad75c[] = "bondwalk.c"; -const char var7f1ad768[] = "bondwalk.c"; -const char var7f1ad774[] = "bondwalk.c"; - GLOBAL_ASM( glabel func0f0b28d0 /* f0b28d0: 84a30014 */ lh $v1,0x14($a1) diff --git a/src/include/game/bondwalk.h b/src/include/game/bondwalk.h index 6799a7533..cd8f95626 100644 --- a/src/include/game/bondwalk.h +++ b/src/include/game/bondwalk.h @@ -6,7 +6,7 @@ void currentPlayerWalkInit(void); void func0f0c3ad0(s32 value); void currentPlayerAdjustCrouchPos(s32 value); -u32 func0f0c3b38(void); +void func0f0c3b38(struct coord *param_1, struct defaultobj *obj); u32 func0f0c3c8c(void); u32 func0f0c3e14(void); void func0f0c4250(struct coord *delta, f32 arg1, bool arg2, f32 arg3, s32 arg4); diff --git a/src/include/game/chr/chraction.h b/src/include/game/chr/chraction.h index ebdc0aee2..50cece1d5 100644 --- a/src/include/game/chr/chraction.h +++ b/src/include/game/chr/chraction.h @@ -11,7 +11,7 @@ u32 func0f02e1cc(void); u32 func0f02e260(void); u32 func0f02e2d0(void); f32 chrGetDistanceToEntity(struct chrdata *chr, u32 entitytype, s32 entityid); -u32 func0f02e3dc(void); +void func0f02e3dc(struct coord *arg0, struct coord *arg1, struct coord *arg2, struct coord *arg3, struct coord *arg4); u32 func0f02e4f8(void); u32 func0f02e550(void); u32 func0f02e684(void); diff --git a/src/include/game/game_066310.h b/src/include/game/game_066310.h index f163cc5aa..71db1887f 100644 --- a/src/include/game/game_066310.h +++ b/src/include/game/game_066310.h @@ -205,7 +205,7 @@ u32 func0f0826cc(void); void func0f082964(struct prop *prop, s32 arg1); u32 func0f082a1c(void); u32 func0f082d74(void); -u32 func0f082e84(void); +void func0f082e84(struct defaultobj *obj, struct coord *arg1, struct coord *arg2, struct coord *arg3, bool arg4); u32 func0f082f88(struct prop *prop); u32 func0f08307c(void); u32 func0f083db0(void); diff --git a/src/include/lib/lib_233c0.h b/src/include/lib/lib_233c0.h index 05db98493..048dc7244 100644 --- a/src/include/lib/lib_233c0.h +++ b/src/include/lib/lib_233c0.h @@ -23,7 +23,7 @@ u32 func0002485c(void); u32 func00024b64(void); u32 func00024c14(void); u32 func00024e40(void); -u32 func00024e4c(void); +void func00024e4c(struct coord *arg0, struct coord *arg1, u32 arg2, char *filename); u32 func00024e98(void); u32 func00024ea4(void); u32 func00024eb0(void);