Decompile func0f0bb69c

This commit is contained in:
Ryan Dwyer 2020-08-01 23:15:55 +10:00
parent 3a195050e4
commit b20191cd6d
3 changed files with 54 additions and 139 deletions

View File

@ -5724,131 +5724,46 @@ glabel func0f0bb5ec
/* f0bb698: 00000000 */ nop
);
GLOBAL_ASM(
glabel func0f0bb69c
.late_rodata
glabel var7f1ad634
.word func0f0bb69c+0x38 # f0bb6d4
glabel var7f1ad638
.word func0f0bb69c+0xa4 # f0bb740
glabel var7f1ad63c
.word func0f0bb69c+0xa4 # f0bb740
glabel var7f1ad640
.word func0f0bb69c+0x60 # f0bb6fc
glabel var7f1ad644
.word func0f0bb69c+0x60 # f0bb6fc
glabel var7f1ad648
.word func0f0bb69c+0x80 # f0bb71c
glabel var7f1ad64c
.word func0f0bb69c+0xc4 # f0bb760
glabel var7f1ad650
.word func0f0bb69c+0x168 # f0bb804
glabel var7f1ad654
.word func0f0bb69c+0x168 # f0bb804
glabel var7f1ad658
.word func0f0bb69c+0xdc # f0bb778
glabel var7f1ad65c
.word func0f0bb69c+0xdc # f0bb778
glabel var7f1ad660
.word func0f0bb69c+0x118 # f0bb7b4
.text
/* f0bb69c: 3c04800a */ lui $a0,%hi(g_Vars)
/* f0bb6a0: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f0bb6a4: 8c820284 */ lw $v0,0x284($a0)
/* f0bb6a8: 27bdffe8 */ addiu $sp,$sp,-24
/* f0bb6ac: afbf0014 */ sw $ra,0x14($sp)
/* f0bb6b0: 8c4300fc */ lw $v1,0xfc($v0)
/* f0bb6b4: 2c610006 */ sltiu $at,$v1,0x6
/* f0bb6b8: 10200021 */ beqz $at,.L0f0bb740
/* f0bb6bc: 00037080 */ sll $t6,$v1,0x2
/* f0bb6c0: 3c017f1b */ lui $at,%hi(var7f1ad634)
/* f0bb6c4: 002e0821 */ addu $at,$at,$t6
/* f0bb6c8: 8c2ed634 */ lw $t6,%lo(var7f1ad634)($at)
/* f0bb6cc: 01c00008 */ jr $t6
/* f0bb6d0: 00000000 */ nop
/* f0bb6d4: c44400dc */ lwc1 $f4,0xdc($v0)
/* f0bb6d8: 0fc30869 */ jal func0f0c21a4
/* f0bb6dc: e44400e4 */ swc1 $f4,0xe4($v0)
/* f0bb6e0: 3c04800a */ lui $a0,%hi(g_Vars)
/* f0bb6e4: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f0bb6e8: 8c8f0284 */ lw $t7,0x284($a0)
/* f0bb6ec: e5e000e8 */ swc1 $f0,0xe8($t7)
/* f0bb6f0: 8c820284 */ lw $v0,0x284($a0)
/* f0bb6f4: 10000012 */ b .L0f0bb740
/* f0bb6f8: 8c4300fc */ lw $v1,0xfc($v0)
/* f0bb6fc: c44600ec */ lwc1 $f6,0xec($v0)
/* f0bb700: e44600e4 */ swc1 $f6,0xe4($v0)
/* f0bb704: 8c820284 */ lw $v0,0x284($a0)
/* f0bb708: c44800f0 */ lwc1 $f8,0xf0($v0)
/* f0bb70c: e44800e8 */ swc1 $f8,0xe8($v0)
/* f0bb710: 8c820284 */ lw $v0,0x284($a0)
/* f0bb714: 1000000a */ b .L0f0bb740
/* f0bb718: 8c4300fc */ lw $v1,0xfc($v0)
/* f0bb71c: c44a00dc */ lwc1 $f10,0xdc($v0)
/* f0bb720: 0fc30869 */ jal func0f0c21a4
/* f0bb724: e44a00e4 */ swc1 $f10,0xe4($v0)
/* f0bb728: 3c04800a */ lui $a0,%hi(g_Vars)
/* f0bb72c: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f0bb730: 8c980284 */ lw $t8,0x284($a0)
/* f0bb734: e70000e8 */ swc1 $f0,0xe8($t8)
/* f0bb738: 8c820284 */ lw $v0,0x284($a0)
/* f0bb73c: 8c4300fc */ lw $v1,0xfc($v0)
.L0f0bb740:
/* f0bb740: 2c610006 */ sltiu $at,$v1,0x6
/* f0bb744: 1020002f */ beqz $at,.L0f0bb804
/* f0bb748: 0003c880 */ sll $t9,$v1,0x2
/* f0bb74c: 3c017f1b */ lui $at,%hi(var7f1ad64c)
/* f0bb750: 00390821 */ addu $at,$at,$t9
/* f0bb754: 8c39d64c */ lw $t9,%lo(var7f1ad64c)($at)
/* f0bb758: 03200008 */ jr $t9
/* f0bb75c: 00000000 */ nop
/* f0bb760: 44808000 */ mtc1 $zero,$f16
/* f0bb764: 24080001 */ addiu $t0,$zero,0x1
/* f0bb768: e45000f8 */ swc1 $f16,0xf8($v0)
/* f0bb76c: 8c890284 */ lw $t1,0x284($a0)
/* f0bb770: 10000024 */ b .L0f0bb804
/* f0bb774: ad2800fc */ sw $t0,0xfc($t1)
/* f0bb778: 8c4a1924 */ lw $t2,0x1924($v0)
/* f0bb77c: 3c0c8007 */ lui $t4,%hi(g_HealthDamageTypes+0x4)
/* f0bb780: 240d0003 */ addiu $t5,$zero,0x3
/* f0bb784: 000a5880 */ sll $t3,$t2,0x2
/* f0bb788: 016a5821 */ addu $t3,$t3,$t2
/* f0bb78c: 000b5880 */ sll $t3,$t3,0x2
/* f0bb790: 018b6021 */ addu $t4,$t4,$t3
/* f0bb794: 8d8c0928 */ lw $t4,%lo(g_HealthDamageTypes+0x4)($t4)
/* f0bb798: 448c9000 */ mtc1 $t4,$f18
/* f0bb79c: 00000000 */ nop
/* f0bb7a0: 46809120 */ cvt.s.w $f4,$f18
/* f0bb7a4: e44400f8 */ swc1 $f4,0xf8($v0)
/* f0bb7a8: 8c8e0284 */ lw $t6,0x284($a0)
/* f0bb7ac: 10000015 */ b .L0f0bb804
/* f0bb7b0: adcd00fc */ sw $t5,0xfc($t6)
/* f0bb7b4: 0fc305bd */ jal currentPlayerGetHealthBarHeightFrac
/* f0bb7b8: 00000000 */ nop
/* f0bb7bc: 3c04800a */ lui $a0,%hi(g_Vars)
/* f0bb7c0: 24849fc0 */ addiu $a0,$a0,%lo(g_Vars)
/* f0bb7c4: 8c820284 */ lw $v0,0x284($a0)
/* f0bb7c8: 3c198007 */ lui $t9,%hi(g_HealthDamageTypes)
/* f0bb7cc: 24080001 */ addiu $t0,$zero,0x1
/* f0bb7d0: 8c4f1924 */ lw $t7,0x1924($v0)
/* f0bb7d4: 000fc080 */ sll $t8,$t7,0x2
/* f0bb7d8: 030fc021 */ addu $t8,$t8,$t7
/* f0bb7dc: 0018c080 */ sll $t8,$t8,0x2
/* f0bb7e0: 0338c821 */ addu $t9,$t9,$t8
/* f0bb7e4: 8f390924 */ lw $t9,%lo(g_HealthDamageTypes)($t9)
/* f0bb7e8: 44993000 */ mtc1 $t9,$f6
/* f0bb7ec: 00000000 */ nop
/* f0bb7f0: 46803220 */ cvt.s.w $f8,$f6
/* f0bb7f4: 46080282 */ mul.s $f10,$f0,$f8
/* f0bb7f8: e44a00f8 */ swc1 $f10,0xf8($v0)
/* f0bb7fc: 8c890284 */ lw $t1,0x284($a0)
/* f0bb800: ad2800fc */ sw $t0,0xfc($t1)
.L0f0bb804:
/* f0bb804: 8fbf0014 */ lw $ra,0x14($sp)
/* f0bb808: 27bd0018 */ addiu $sp,$sp,0x18
/* f0bb80c: 03e00008 */ jr $ra
/* f0bb810: 00000000 */ nop
);
void func0f0bb69c(void)
{
switch (g_Vars.currentplayer->healthshowmode) {
case HEALTHSHOWMODE_HIDDEN:
g_Vars.currentplayer->oldhealth = g_Vars.currentplayer->bondhealth;
g_Vars.currentplayer->oldarmour = func0f0c21a4();
break;
case HEALTHSHOWMODE_OPENING:
case HEALTHSHOWMODE_PREVIOUS:
break;
case HEALTHSHOWMODE_UPDATING:
case HEALTHSHOWMODE_CURRENT:
g_Vars.currentplayer->oldhealth = g_Vars.currentplayer->apparenthealth;
g_Vars.currentplayer->oldarmour = g_Vars.currentplayer->apparentarmour;
break;
case HEALTHSHOWMODE_CLOSING:
g_Vars.currentplayer->oldhealth = g_Vars.currentplayer->bondhealth;
g_Vars.currentplayer->oldarmour = func0f0c21a4();
break;
}
switch (g_Vars.currentplayer->healthshowmode) {
case HEALTHSHOWMODE_HIDDEN:
g_Vars.currentplayer->healthshowtime = 0;
g_Vars.currentplayer->healthshowmode = HEALTHSHOWMODE_OPENING;
break;
case HEALTHSHOWMODE_OPENING:
case HEALTHSHOWMODE_PREVIOUS:
break;
case HEALTHSHOWMODE_UPDATING:
case HEALTHSHOWMODE_CURRENT:
g_Vars.currentplayer->healthshowtime = g_HealthDamageTypes[g_Vars.currentplayer->healthdamagetype].unk04;
g_Vars.currentplayer->healthshowmode = HEALTHSHOWMODE_UPDATING;
break;
case HEALTHSHOWMODE_CLOSING:
g_Vars.currentplayer->healthshowtime = g_HealthDamageTypes[g_Vars.currentplayer->healthdamagetype].openduration * currentPlayerGetHealthBarHeightFrac();
g_Vars.currentplayer->healthshowmode = HEALTHSHOWMODE_OPENING;
break;
}
}
GLOBAL_ASM(
glabel func0f0bb814
@ -12827,10 +12742,10 @@ Gfx *func0f0c07c8(Gfx *gdl)
// Back to the player who died
setCurrentPlayerNum(prevplayernum);
g_Vars.currentplayer->dostartnewlife = true;
g_Vars.currentplayer->unk00e4 = 0;
g_Vars.currentplayer->unk00e8 = 0;
g_Vars.currentplayer->unk00ec = 0;
g_Vars.currentplayer->unk00f0 = 0;
g_Vars.currentplayer->oldhealth = 0;
g_Vars.currentplayer->oldarmour = 0;
g_Vars.currentplayer->apparenthealth = 0;
g_Vars.currentplayer->apparentarmour = 0;
g_Vars.currentplayer->stealhealth = stealhealth;
} else {
setCurrentPlayerNum(prevplayernum);
@ -12857,10 +12772,10 @@ Gfx *func0f0c07c8(Gfx *gdl)
// Back to the player who died
setCurrentPlayerNum(prevplayernum);
g_Vars.currentplayer->dostartnewlife = true;
g_Vars.currentplayer->unk00e4 = 0;
g_Vars.currentplayer->unk00e8 = 0;
g_Vars.currentplayer->unk00ec = 0;
g_Vars.currentplayer->unk00f0 = 0;
g_Vars.currentplayer->oldhealth = 0;
g_Vars.currentplayer->oldarmour = 0;
g_Vars.currentplayer->apparenthealth = 0;
g_Vars.currentplayer->apparentarmour = 0;
g_Vars.currentplayer->stealhealth = stealhealth;
} else {
setCurrentPlayerNum(prevplayernum);

View File

@ -78,7 +78,7 @@ u32 func0f0c1f08(void);
void func0f0c1ff4(void);
void propPlayerGetBbox(struct prop *prop, f32 *width, f32 *ymax, f32 *ymin);
f32 currentPlayerGetHealth(void);
u32 func0f0c21a4(void);
f32 func0f0c21a4(void);
void func0f0c2210(f32 shield);
s32 getMissionTime(void);
u32 func0f0c228c(struct prop *prop);

View File

@ -2042,11 +2042,11 @@ struct player {
/*0x00d8*/ bool isdead;
/*0x00dc*/ f32 bondhealth;
/*0x00e0*/ u32 unk00e0;
/*0x00e4*/ f32 unk00e4;
/*0x00e8*/ f32 unk00e8;
/*0x00ec*/ f32 unk00ec;
/*0x00f0*/ f32 unk00f0;
/*0x00f4*/ u32 unk00f4;
/*0x00e4*/ f32 oldhealth;
/*0x00e8*/ f32 oldarmour;
/*0x00ec*/ f32 apparenthealth;
/*0x00f0*/ f32 apparentarmour;
/*0x00f4*/ u32 damageshowtime;
/*0x00f8*/ f32 healthshowtime;
/*0x00fc*/ u32 healthshowmode;
/*0x0100*/ bool docentreupdown;