diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 76aba5fe9..0938233c1 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -6680,7 +6680,7 @@ void bodyGetBloodColour(s16 bodynum, u8 *colour1, u32 *colour2) GLOBAL_ASM( -glabel func0f025288 +glabel propchrRender .late_rodata glabel var7f1a88f4 .word 0x3c088889 diff --git a/src/game/explosions/explosions.c b/src/game/explosions/explosions.c index 849966f41..3d1fc57b6 100644 --- a/src/game/explosions/explosions.c +++ b/src/game/explosions/explosions.c @@ -2829,7 +2829,7 @@ u32 explosionUpdateZ(struct prop *prop) } GLOBAL_ASM( -glabel func0f12c654 +glabel explosionRender /* f12c654: 27bdff40 */ addiu $sp,$sp,-192 /* f12c658: afbf0044 */ sw $ra,0x44($sp) /* f12c65c: afbe0040 */ sw $s8,0x40($sp) diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index 8fda25218..387caacda 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -340,73 +340,32 @@ void propDetach(struct prop *prop) } } -GLOBAL_ASM( -glabel func0f06071c -.late_rodata -glabel var7f1a9e20 -.word func0f06071c+0x98 # f0607b4 -glabel var7f1a9e24 -.word func0f06071c+0x38 # f060754 -glabel var7f1a9e28 -.word func0f06071c+0x38 # f060754 -glabel var7f1a9e2c -.word func0f06071c+0x4c # f060768 -glabel var7f1a9e30 -.word func0f06071c+0x38 # f060754 -glabel var7f1a9e34 -.word func0f06071c+0x98 # f0607b4 -glabel var7f1a9e38 -.word func0f06071c+0x60 # f06077c -glabel var7f1a9e3c -.word func0f06071c+0x74 # f060790 -glabel var7f1a9e40 -.word func0f06071c+0x88 # f0607a4 -.text -/* f06071c: 27bdffe0 */ addiu $sp,$sp,-32 -/* f060720: afbf001c */ sw $ra,0x1c($sp) -/* f060724: afb00018 */ sw $s0,0x18($sp) -/* f060728: 90ae0000 */ lbu $t6,0x0($a1) -/* f06072c: 00808025 */ or $s0,$a0,$zero -/* f060730: 00a03825 */ or $a3,$a1,$zero -/* f060734: 2dc10009 */ sltiu $at,$t6,0x9 -/* f060738: 1020001e */ beqz $at,.L0f0607b4 -/* f06073c: 000e7080 */ sll $t6,$t6,0x2 -/* f060740: 3c017f1b */ lui $at,%hi(var7f1a9e20) -/* f060744: 002e0821 */ addu $at,$at,$t6 -/* f060748: 8c2e9e20 */ lw $t6,%lo(var7f1a9e20)($at) -/* f06074c: 01c00008 */ jr $t6 -/* f060750: 00000000 */ nop -/* f060754: 00e02025 */ or $a0,$a3,$zero -/* f060758: 0fc204c4 */ jal func0f081310 -/* f06075c: 02002825 */ or $a1,$s0,$zero -/* f060760: 10000014 */ b .L0f0607b4 -/* f060764: 00408025 */ or $s0,$v0,$zero -/* f060768: 00e02025 */ or $a0,$a3,$zero -/* f06076c: 0fc094a2 */ jal func0f025288 -/* f060770: 02002825 */ or $a1,$s0,$zero -/* f060774: 1000000f */ b .L0f0607b4 -/* f060778: 00408025 */ or $s0,$v0,$zero -/* f06077c: 00e02025 */ or $a0,$a3,$zero -/* f060780: 0fc30ca8 */ jal func0f0c32a0 -/* f060784: 02002825 */ or $a1,$s0,$zero -/* f060788: 1000000a */ b .L0f0607b4 -/* f06078c: 00408025 */ or $s0,$v0,$zero -/* f060790: 00e02025 */ or $a0,$a3,$zero -/* f060794: 0fc4b195 */ jal func0f12c654 -/* f060798: 02002825 */ or $a1,$s0,$zero -/* f06079c: 10000005 */ b .L0f0607b4 -/* f0607a0: 00408025 */ or $s0,$v0,$zero -/* f0607a4: 00e02025 */ or $a0,$a3,$zero -/* f0607a8: 0fc4bc8c */ jal func0f12f230 -/* f0607ac: 02002825 */ or $a1,$s0,$zero -/* f0607b0: 00408025 */ or $s0,$v0,$zero -.L0f0607b4: -/* f0607b4: 8fbf001c */ lw $ra,0x1c($sp) -/* f0607b8: 02001025 */ or $v0,$s0,$zero -/* f0607bc: 8fb00018 */ lw $s0,0x18($sp) -/* f0607c0: 03e00008 */ jr $ra -/* f0607c4: 27bd0020 */ addiu $sp,$sp,0x20 -); +Gfx *propRender(Gfx *gdl, struct prop *prop, bool arg2) +{ + switch (prop->type) { + case 0: + break; + case PROPTYPE_OBJ: + case PROPTYPE_DOOR: + case PROPTYPE_WEAPON: + gdl = propobjRender(prop, gdl, arg2); + break; + case PROPTYPE_CHR: + gdl = propchrRender(prop, gdl, arg2); + break; + case PROPTYPE_PLAYER: + gdl = propplayerRender(prop, gdl, arg2); + break; + case PROPTYPE_EXPLOSION: + gdl = explosionRender(prop, gdl, arg2); + break; + case PROPTYPE_EFFECT: + gdl = smokeRender(prop, gdl, arg2); + break; + } + + return gdl; +} GLOBAL_ASM( glabel func0f0607c8 @@ -468,7 +427,7 @@ glabel func0f0607c8 /* f060898: 02602025 */ or $a0,$s3,$zero .L0f06089c: /* f06089c: 02002825 */ or $a1,$s0,$zero -/* f0608a0: 0fc181c7 */ jal func0f06071c +/* f0608a0: 0fc181c7 */ jal propRender /* f0608a4: 00003025 */ or $a2,$zero,$zero /* f0608a8: 3c04800a */ lui $a0,%hi(g_Vars+0x348) /* f0608ac: 8c84a308 */ lw $a0,%lo(g_Vars+0x348)($a0) @@ -501,13 +460,13 @@ glabel func0f0607c8 /* f06090c: 31cf0020 */ andi $t7,$t6,0x20 /* f060910: 51e00005 */ beqzl $t7,.L0f060928 /* f060914: 02602025 */ or $a0,$s3,$zero -/* f060918: 0fc181c7 */ jal func0f06071c +/* f060918: 0fc181c7 */ jal propRender /* f06091c: 00003025 */ or $a2,$zero,$zero /* f060920: 00409825 */ or $s3,$v0,$zero /* f060924: 02602025 */ or $a0,$s3,$zero .L0f060928: /* f060928: 02002825 */ or $a1,$s0,$zero -/* f06092c: 0fc181c7 */ jal func0f06071c +/* f06092c: 0fc181c7 */ jal propRender /* f060930: 24060001 */ addiu $a2,$zero,0x1 /* f060934: 3c03800a */ lui $v1,%hi(g_Vars+0x34c) /* f060938: 8c63a30c */ lw $v1,%lo(g_Vars+0x34c)($v1) diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index 8579b4310..a5bc9ba3f 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -11984,7 +11984,7 @@ glabel var7f1ad744 ); GLOBAL_ASM( -glabel func0f0c32a0 +glabel propplayerRender /* f0c32a0: 27bdffe8 */ addiu $sp,$sp,-24 /* f0c32a4: afbf0014 */ sw $ra,0x14($sp) /* f0c32a8: afa40018 */ sw $a0,0x18($sp) @@ -12000,7 +12000,7 @@ glabel func0f0c32a0 /* f0c32d0: 8df819c8 */ lw $t8,0x19c8($t7) /* f0c32d4: 53000005 */ beqzl $t8,.L0f0c32ec /* f0c32d8: 8fbf0014 */ lw $ra,0x14($sp) -/* f0c32dc: 0fc094a2 */ jal func0f025288 +/* f0c32dc: 0fc094a2 */ jal propchrRender /* f0c32e0: 8fa60020 */ lw $a2,0x20($sp) /* f0c32e4: afa2001c */ sw $v0,0x1c($sp) /* f0c32e8: 8fbf0014 */ lw $ra,0x14($sp) diff --git a/src/game/propobj.c b/src/game/propobj.c index 7683dc864..682bd0fb1 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -30585,7 +30585,7 @@ glabel func0f081220 ); GLOBAL_ASM( -glabel func0f081310 +glabel propobjRender .late_rodata glabel var7f1aa828 .word 0x3c888889 diff --git a/src/game/smoke/smoke.c b/src/game/smoke/smoke.c index 541a23fea..61abcbaef 100644 --- a/src/game/smoke/smoke.c +++ b/src/game/smoke/smoke.c @@ -1991,7 +1991,7 @@ u32 smokeUpdateZ(struct prop *prop) } GLOBAL_ASM( -glabel func0f12f230 +glabel smokeRender /* f12f230: 27bdff58 */ addiu $sp,$sp,-168 /* f12f234: afbf0034 */ sw $ra,0x34($sp) /* f12f238: afb20030 */ sw $s2,0x30($sp) diff --git a/src/include/game/chr/chr.h b/src/include/game/chr/chr.h index 2156e5861..840ad2751 100644 --- a/src/include/game/chr/chr.h +++ b/src/include/game/chr/chr.h @@ -34,7 +34,7 @@ u32 func0f024738(void); u32 func0f024b18(void); u32 func0f025074(void); void bodyGetBloodColour(s16 bodynum, u8 *colour1, u32 *colour2); -u32 func0f025288(void); +Gfx *propchrRender(struct prop *prop, Gfx *gdl, bool arg2); void func0f025ea4(struct chrdata *chr, struct prop *prop, s32 arg2, struct coord *coord, struct coord *coord2, struct chrdata *chr2); u32 func0f0260c4(void); u32 func0f0268bc(void); diff --git a/src/include/game/explosions/explosions.h b/src/include/game/explosions/explosions.h index 61abac4ee..e4f031d94 100644 --- a/src/include/game/explosions/explosions.h +++ b/src/include/game/explosions/explosions.h @@ -15,7 +15,7 @@ bool func0f12af5c(struct explosion *exp, struct prop *prop, struct coord *pos1, u32 func0f12b0e0(void); u32 func0f12bbdc(struct prop *prop); u32 explosionUpdateZ(struct prop *prop); -u32 func0f12c654(void); +Gfx *explosionRender(struct prop *prop, Gfx *gdl, bool arg2); u32 func0f12cd64(void); #endif diff --git a/src/include/game/game_0601b0.h b/src/include/game/game_0601b0.h index 6523bf013..8ff745d08 100644 --- a/src/include/game/game_0601b0.h +++ b/src/include/game/game_0601b0.h @@ -15,7 +15,7 @@ void func0f060538(struct prop *prop); void func0f0605c4(struct prop *prop); void propReparent(struct prop *mover, struct prop *adopter); void propDetach(struct prop *prop); -u32 func0f06071c(void); +Gfx *propRender(Gfx *gdl, struct prop *prop, bool arg2); u32 func0f0607c8(void); u32 func0f060984(void); u32 func0f060bac(void); diff --git a/src/include/game/game_0b63b0.h b/src/include/game/game_0b63b0.h index 2cc32aef1..7980d249c 100644 --- a/src/include/game/game_0b63b0.h +++ b/src/include/game/game_0b63b0.h @@ -84,7 +84,7 @@ s32 getMissionTime(void); s32 func0f0c228c(struct prop *prop); u32 func0f0c2364(void); u32 func0f0c2a58(void); -u32 func0f0c32a0(void); +Gfx *propplayerRender(struct prop *prop, Gfx *gdl, bool arg2); Gfx *currentPlayerLoadMatrix(Gfx *gdl); u32 func0f0c3320(void); void setTickMode(s32 tickmode); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 8a45b63bc..b93b74336 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -204,7 +204,7 @@ u32 func0f07fbf8(void); u32 func0f0809c4(void); u32 func0f080f8c(void); u32 func0f081220(void); -u32 func0f081310(void); +Gfx *propobjRender(struct prop *prop, Gfx *gdl, bool arg2); u32 func0f081c18(void); u32 func0f081ccc(void); u32 func0f0826cc(void); diff --git a/src/include/game/smoke/smoke.h b/src/include/game/smoke/smoke.h index 6d121a1c8..815773d80 100644 --- a/src/include/game/smoke/smoke.h +++ b/src/include/game/smoke/smoke.h @@ -13,7 +13,7 @@ void smokeClearForProp(struct prop *prop); struct smoke *smokeCreateSimple(struct coord *pos, s16 *rooms, s16 type); u32 func0f12e848(struct prop *prop); u32 smokeUpdateZ(struct prop *prop); -u32 func0f12f230(void); +Gfx *smokeRender(struct prop *prop, Gfx *gdl, bool arg2); u32 func0f12f5f8(void); #endif