From 604d24e71f3a15c20e83f2cc8605036a749f2c0d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 7 Jan 2021 12:30:30 +1000 Subject: [PATCH] Decompile propUpdateGeometry --- src/game/game_0601b0.c | 54 +++++++++------------------------- src/game/game_0b63b0.c | 2 +- src/game/propobj.c | 14 ++++----- src/include/game/game_0601b0.h | 2 +- src/include/game/game_0b63b0.h | 2 +- src/include/game/propobj.h | 2 +- src/lib/lib_233c0.c | 18 ++++++------ 7 files changed, 34 insertions(+), 60 deletions(-) diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index 9101e2928..587be3b4d 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -6763,43 +6763,17 @@ void propGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin) } } -GLOBAL_ASM( -glabel func0f066290 -/* f066290: 27bdffe8 */ addiu $sp,$sp,-24 -/* f066294: afbf0014 */ sw $ra,0x14($sp) -/* f066298: 90820000 */ lbu $v0,0x0($a0) -/* f06629c: 24010006 */ addiu $at,$zero,0x6 -/* f0662a0: 00001825 */ or $v1,$zero,$zero -/* f0662a4: 54410006 */ bnel $v0,$at,.L0f0662c0 -/* f0662a8: 24010003 */ addiu $at,$zero,0x3 -/* f0662ac: 0fc307c2 */ jal func0f0c1f08 -/* f0662b0: 00000000 */ nop -/* f0662b4: 10000010 */ b .L0f0662f8 -/* f0662b8: 00401825 */ or $v1,$v0,$zero -/* f0662bc: 24010003 */ addiu $at,$zero,0x3 -.L0f0662c0: -/* f0662c0: 54410006 */ bnel $v0,$at,.L0f0662dc -/* f0662c4: 24010001 */ addiu $at,$zero,0x1 -/* f0662c8: 0fc0a234 */ jal chrUpdateGeometry -/* f0662cc: 00000000 */ nop -/* f0662d0: 10000009 */ b .L0f0662f8 -/* f0662d4: 00401825 */ or $v1,$v0,$zero -/* f0662d8: 24010001 */ addiu $at,$zero,0x1 -.L0f0662dc: -/* f0662dc: 10410003 */ beq $v0,$at,.L0f0662ec -/* f0662e0: 24010002 */ addiu $at,$zero,0x2 -/* f0662e4: 54410005 */ bnel $v0,$at,.L0f0662fc -/* f0662e8: 8fbf0014 */ lw $ra,0x14($sp) -.L0f0662ec: -/* f0662ec: 0fc21d16 */ jal func0f087458 -/* f0662f0: 00000000 */ nop -/* f0662f4: 00401825 */ or $v1,$v0,$zero -.L0f0662f8: -/* f0662f8: 8fbf0014 */ lw $ra,0x14($sp) -.L0f0662fc: -/* f0662fc: 27bd0018 */ addiu $sp,$sp,0x18 -/* f066300: 00601025 */ or $v0,$v1,$zero -/* f066304: 03e00008 */ jr $ra -/* f066308: 00000000 */ nop -/* f06630c: 00000000 */ nop -); +bool propUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2) +{ + bool result = false; + + if (prop->type == PROPTYPE_PLAYER) { + result = playerUpdateGeometry(prop, arg1, arg2); + } else if (prop->type == PROPTYPE_CHR) { + result = chrUpdateGeometry(prop, arg1, arg2); + } else if (prop->type == PROPTYPE_OBJ || prop->type == PROPTYPE_DOOR) { + result = objUpdateGeometry(prop, arg1, arg2); + } + + return result; +} diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index e20e6fe1c..1175fa539 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -10643,7 +10643,7 @@ void func0f0c1e54(struct prop *prop, bool enable) g_Vars.players[playernum]->bondperimenabled = enable; } -bool func0f0c1f08(struct prop *prop, struct geo **arg1, struct geo **arg2) +bool playerUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2) { s32 playernum = propGetPlayerNum(prop); diff --git a/src/game/propobj.c b/src/game/propobj.c index 5950748b5..777f1084c 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -2637,7 +2637,7 @@ glabel func0f068218 /* f068270: 1040000d */ beqz $v0,.L0f0682a8 /* f068274: 02002025 */ or $a0,$s0,$zero /* f068278: 02602825 */ or $a1,$s3,$zero -/* f06827c: 0fc198a4 */ jal func0f066290 +/* f06827c: 0fc198a4 */ jal propUpdateGeometry /* f068280: 02803025 */ or $a2,$s4,$zero /* f068284: 10400008 */ beqz $v0,.L0f0682a8 /* f068288: 8fa60038 */ lw $a2,0x38($sp) @@ -5355,7 +5355,7 @@ glabel var7f1aa200 /* f06aa24: 8c440014 */ lw $a0,0x14($v0) /* f06aa28: e7ae00bc */ swc1 $f14,0xbc($sp) /* f06aa2c: 27a5003c */ addiu $a1,$sp,0x3c -/* f06aa30: 0fc198a4 */ jal func0f066290 +/* f06aa30: 0fc198a4 */ jal propUpdateGeometry /* f06aa34: 27a60038 */ addiu $a2,$sp,0x38 /* f06aa38: 10400027 */ beqz $v0,.L0f06aad8 /* f06aa3c: c7ae00bc */ lwc1 $f14,0xbc($sp) @@ -14941,7 +14941,7 @@ glabel func0f0732d4 /* f073300: afb1001c */ sw $s1,0x1c($sp) /* f073304: afb00018 */ sw $s0,0x18($sp) /* f073308: 27a5009c */ addiu $a1,$sp,0x9c -/* f07330c: 0fc198a4 */ jal func0f066290 +/* f07330c: 0fc198a4 */ jal propUpdateGeometry /* f073310: 27a60098 */ addiu $a2,$sp,0x98 /* f073314: 1040004c */ beqz $v0,.L0f073448 /* f073318: 27b000a0 */ addiu $s0,$sp,0xa0 @@ -28258,7 +28258,7 @@ s32 objTick(struct prop *prop) f32 sp112; s32 tagnum; struct geo *geos[2]; - u32 sp96; + struct geo *sp96; f32 damage; if (sp572) { @@ -28330,7 +28330,7 @@ s32 objTick(struct prop *prop) func0f069c70(obj, true, true); sp592 = true; - if (func0f087458(prop, geos, &sp96) + if (objUpdateGeometry(prop, geos, &sp96) && geos[0]->type == GEOTYPE_2 && func0002e4c4(geos[0], prop->rooms, 4) == 0) { damage = ((obj->maxdamage - obj->damage) + 1) / 250.0f; @@ -34997,7 +34997,7 @@ glabel func0f0840ac /* f0840d4: afb10018 */ sw $s1,0x18($sp) /* f0840d8: afb00014 */ sw $s0,0x14($sp) /* f0840dc: 27a5004c */ addiu $a1,$sp,0x4c -/* f0840e0: 0fc198a4 */ jal func0f066290 +/* f0840e0: 0fc198a4 */ jal propUpdateGeometry /* f0840e4: 27a60048 */ addiu $a2,$sp,0x48 /* f0840e8: 10400031 */ beqz $v0,.L0f0841b0 /* f0840ec: 27b00050 */ addiu $s0,$sp,0x50 @@ -38360,7 +38360,7 @@ void propObjSetOrUnsetHiddenFlag00400000(struct prop *prop, bool enable) } GLOBAL_ASM( -glabel func0f087458 +glabel objUpdateGeometry /* f087458: 8c830004 */ lw $v1,0x4($a0) /* f08745c: 8c670044 */ lw $a3,0x44($v1) /* f087460: 50e0003e */ beqzl $a3,.L0f08755c diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index fe61c01da..3b4649307 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -58,6 +58,6 @@ void func0f065e98(struct coord *pos, s16 *rooms, struct coord *pos2, s16 *rooms2 void roomGetProps(s16 *room, s16 *propnums, u32 size); u32 func0f066054(void); void propGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin); -u32 func0f066290(void); +bool propUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2); #endif diff --git a/src/include/game/game_0b63b0.h b/src/include/game/game_0b63b0.h index 2c74b911f..475906592 100644 --- a/src/include/game/game_0b63b0.h +++ b/src/include/game/game_0b63b0.h @@ -74,7 +74,7 @@ void func0f0c1ba4(struct coord *pos, struct coord *up, struct coord *look, struc void func0f0c1bd8(struct coord *pos, struct coord *up, struct coord *look); void allPlayersClearMemCamRoom(void); void func0f0c1e54(struct prop *prop, bool enable); -bool func0f0c1f08(struct prop *prop, struct geo **arg1, struct geo **arg2); +bool playerUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2); void currentPlayerUpdatePerimInfo(void); void propPlayerGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin); f32 currentPlayerGetHealthFrac(void); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 7848fdfc2..78b20a04e 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -243,7 +243,7 @@ u32 func0f0869cc(void); bool currentPlayerTryMountHoverbike(struct prop *prop); bool propobjInteract(struct prop *prop); void propObjSetOrUnsetHiddenFlag00400000(struct prop *prop, bool enable); -bool func0f087458(struct prop *prop, struct geo **geos, u32 *arg2); +bool objUpdateGeometry(struct prop *prop, struct geo **arg1, struct geo **arg2); void propObjGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin); void ammotypeGetPickedUpText(char *dst); void ammotypeGetDeterminer(char *dst, s32 ammotype, s32 qty); diff --git a/src/lib/lib_233c0.c b/src/lib/lib_233c0.c index cb61c198c..68a2df702 100644 --- a/src/lib/lib_233c0.c +++ b/src/lib/lib_233c0.c @@ -3707,7 +3707,7 @@ glabel platformGetRidingProps /* 26750: afa40278 */ sw $a0,0x278($sp) /* 26754: afa0005c */ sw $zero,0x5c($sp) /* 26758: 27a60270 */ addiu $a2,$sp,0x270 -/* 2675c: 0fc198a4 */ jal func0f066290 +/* 2675c: 0fc198a4 */ jal propUpdateGeometry /* 26760: 27a50274 */ addiu $a1,$sp,0x274 /* 26764: 10400095 */ beqz $v0,.L000269bc /* 26768: 27b0006c */ addiu $s0,$sp,0x6c @@ -4298,7 +4298,7 @@ glabel func00026e7c /* 26fd8: 27a60278 */ addiu $a2,$sp,0x278 /* 26fdc: 00007812 */ mflo $t7 /* 26fe0: 01f88021 */ addu $s0,$t7,$t8 -/* 26fe4: 0fc198a4 */ jal func0f066290 +/* 26fe4: 0fc198a4 */ jal propUpdateGeometry /* 26fe8: 02002025 */ or $a0,$s0,$zero /* 26fec: 1040000e */ beqz $v0,.L00027028 /* 26ff0: 03c02025 */ or $a0,$s8,$zero @@ -5326,7 +5326,7 @@ glabel func00027d1c /* 27ea8: 10400019 */ beqz $v0,.L00027f10 /* 27eac: 02002025 */ or $a0,$s0,$zero /* 27eb0: 27a5029c */ addiu $a1,$sp,0x29c -/* 27eb4: 0fc198a4 */ jal func0f066290 +/* 27eb4: 0fc198a4 */ jal propUpdateGeometry /* 27eb8: 27a60298 */ addiu $a2,$sp,0x298 /* 27ebc: 10400014 */ beqz $v0,.L00027f10 /* 27ec0: 03c02025 */ or $a0,$s8,$zero @@ -6492,7 +6492,7 @@ glabel func00028df0 /* 28f6c: 10400012 */ beqz $v0,.L00028fb8 /* 28f70: 02002025 */ or $a0,$s0,$zero /* 28f74: 27a50294 */ addiu $a1,$sp,0x294 -/* 28f78: 0fc198a4 */ jal func0f066290 +/* 28f78: 0fc198a4 */ jal propUpdateGeometry /* 28f7c: 27a60290 */ addiu $a2,$sp,0x290 /* 28f80: 1040000d */ beqz $v0,.L00028fb8 /* 28f84: 8fa40294 */ lw $a0,0x294($sp) @@ -11126,7 +11126,7 @@ glabel func0002d15c /* 2d304: 10400017 */ beqz $v0,.L0002d364 /* 2d308: 02202025 */ or $a0,$s1,$zero /* 2d30c: 27a5028c */ addiu $a1,$sp,0x28c -/* 2d310: 0fc198a4 */ jal func0f066290 +/* 2d310: 0fc198a4 */ jal propUpdateGeometry /* 2d314: 27a60288 */ addiu $a2,$sp,0x288 /* 2d318: 10400012 */ beqz $v0,.L0002d364 /* 2d31c: 8fa4028c */ lw $a0,0x28c($sp) @@ -11310,7 +11310,7 @@ glabel func0002d3b0 /* 2d5b0: 10400029 */ beqz $v0,.L0002d658 /* 2d5b4: 02002025 */ or $a0,$s0,$zero /* 2d5b8: 02e02825 */ or $a1,$s7,$zero -/* 2d5bc: 0fc198a4 */ jal func0f066290 +/* 2d5bc: 0fc198a4 */ jal propUpdateGeometry /* 2d5c0: 03c03025 */ or $a2,$s8,$zero /* 2d5c4: 10400024 */ beqz $v0,.L0002d658 /* 2d5c8: 8fa402d4 */ lw $a0,0x2d4($sp) @@ -11998,7 +11998,7 @@ glabel func0002ded8 /* 2df2c: 46083281 */ sub.s $f10,$f6,$f8 /* 2df30: afa70094 */ sw $a3,0x94($sp) /* 2df34: 27a5008c */ addiu $a1,$sp,0x8c -/* 2df38: 0fc198a4 */ jal func0f066290 +/* 2df38: 0fc198a4 */ jal propUpdateGeometry /* 2df3c: e7aa0084 */ swc1 $f10,0x84($sp) /* 2df40: 10400028 */ beqz $v0,.L0002dfe4 /* 2df44: 8fa70094 */ lw $a3,0x94($sp) @@ -12484,7 +12484,7 @@ glabel func0002e4c4 /* 2e5f8: 10400010 */ beqz $v0,.L0002e63c /* 2e5fc: 02202025 */ or $a0,$s1,$zero /* 2e600: 02a02825 */ or $a1,$s5,$zero -/* 2e604: 0fc198a4 */ jal func0f066290 +/* 2e604: 0fc198a4 */ jal propUpdateGeometry /* 2e608: 02c03025 */ or $a2,$s6,$zero /* 2e60c: 1040000b */ beqz $v0,.L0002e63c /* 2e610: 8fa4025c */ lw $a0,0x25c($sp) @@ -13356,7 +13356,7 @@ glabel func0002f02c /* 2f258: 02002025 */ or $a0,$s0,$zero /* 2f25c: 03c02825 */ or $a1,$s8,$zero /* 2f260: 27a60338 */ addiu $a2,$sp,0x338 -/* 2f264: 0fc198a4 */ jal func0f066290 +/* 2f264: 0fc198a4 */ jal propUpdateGeometry /* 2f268: afa9012c */ sw $t1,0x12c($sp) /* 2f26c: 1040000d */ beqz $v0,.L0002f2a4 /* 2f270: 8fa9012c */ lw $t1,0x12c($sp)