Decompile frRenderHudElement

This commit is contained in:
Ryan Dwyer 2020-08-07 18:35:27 +10:00
parent 3ad21771ca
commit f2e2cf0b23
3 changed files with 39 additions and 129 deletions

View File

@ -4870,128 +4870,38 @@ bool frGetFeedback(char *scorebuffer, char *zonebuffer)
return false;
}
GLOBAL_ASM(
glabel func0f1a2d88
/* f1a2d88: 27bdff98 */ addiu $sp,$sp,-104
/* f1a2d8c: afa60070 */ sw $a2,0x70($sp)
/* f1a2d90: 3c0e8008 */ lui $t6,%hi(var8007fb14)
/* f1a2d94: 8dcefb14 */ lw $t6,%lo(var8007fb14)($t6)
/* f1a2d98: afb00038 */ sw $s0,0x38($sp)
/* f1a2d9c: afa70074 */ sw $a3,0x74($sp)
/* f1a2da0: 00e03025 */ or $a2,$a3,$zero
/* f1a2da4: 00808025 */ or $s0,$a0,$zero
/* f1a2da8: afbf003c */ sw $ra,0x3c($sp)
/* f1a2dac: afa5006c */ sw $a1,0x6c($sp)
/* f1a2db0: 3c078008 */ lui $a3,%hi(var8007fb18)
/* f1a2db4: 8ce7fb18 */ lw $a3,%lo(var8007fb18)($a3)
/* f1a2db8: 27a50060 */ addiu $a1,$sp,0x60
/* f1a2dbc: 27a40064 */ addiu $a0,$sp,0x64
/* f1a2dc0: afa00014 */ sw $zero,0x14($sp)
/* f1a2dc4: 0fc55cbe */ jal textMeasure
/* f1a2dc8: afae0010 */ sw $t6,0x10($sp)
/* f1a2dcc: 8fb80060 */ lw $t8,0x60($sp)
/* f1a2dd0: 8faf006c */ lw $t7,0x6c($sp)
/* f1a2dd4: 8fab0070 */ lw $t3,0x70($sp)
/* f1a2dd8: 0018c843 */ sra $t9,$t8,0x1
/* f1a2ddc: 27ac0064 */ addiu $t4,$sp,0x64
/* f1a2de0: 01f95023 */ subu $t2,$t7,$t9
/* f1a2de4: afaa005c */ sw $t2,0x5c($sp)
/* f1a2de8: afac0010 */ sw $t4,0x10($sp)
/* f1a2dec: 02002025 */ or $a0,$s0,$zero
/* f1a2df0: 27a5005c */ addiu $a1,$sp,0x5c
/* f1a2df4: 27a60058 */ addiu $a2,$sp,0x58
/* f1a2df8: 27a70060 */ addiu $a3,$sp,0x60
/* f1a2dfc: 0fc54e16 */ jal func0f153858
/* f1a2e00: afab0058 */ sw $t3,0x58($sp)
/* f1a2e04: 0c002f02 */ jal viGetX
/* f1a2e08: 00408025 */ or $s0,$v0,$zero
/* f1a2e0c: 0c002f06 */ jal viGetY
/* f1a2e10: a7a2004c */ sh $v0,0x4c($sp)
/* f1a2e14: 93a30083 */ lbu $v1,0x83($sp)
/* f1a2e18: 8fb8007c */ lw $t8,0x7c($sp)
/* f1a2e1c: 3c0d8008 */ lui $t5,%hi(var8007fb18)
/* f1a2e20: 3c0e8008 */ lui $t6,%hi(var8007fb14)
/* f1a2e24: 2401ff00 */ addiu $at,$zero,-256
/* f1a2e28: 8dcefb14 */ lw $t6,%lo(var8007fb14)($t6)
/* f1a2e2c: 8dadfb18 */ lw $t5,%lo(var8007fb18)($t5)
/* f1a2e30: 87b9004c */ lh $t9,0x4c($sp)
/* f1a2e34: 03017824 */ and $t7,$t8,$at
/* f1a2e38: 01e34825 */ or $t1,$t7,$v1
/* f1a2e3c: 00034043 */ sra $t0,$v1,0x1
/* f1a2e40: afa8001c */ sw $t0,0x1c($sp)
/* f1a2e44: afa80048 */ sw $t0,0x48($sp)
/* f1a2e48: afa90018 */ sw $t1,0x18($sp)
/* f1a2e4c: afa90044 */ sw $t1,0x44($sp)
/* f1a2e50: 02002025 */ or $a0,$s0,$zero
/* f1a2e54: 27a5005c */ addiu $a1,$sp,0x5c
/* f1a2e58: 27a60058 */ addiu $a2,$sp,0x58
/* f1a2e5c: 8fa70074 */ lw $a3,0x74($sp)
/* f1a2e60: afa20024 */ sw $v0,0x24($sp)
/* f1a2e64: afa00028 */ sw $zero,0x28($sp)
/* f1a2e68: afa0002c */ sw $zero,0x2c($sp)
/* f1a2e6c: afae0014 */ sw $t6,0x14($sp)
/* f1a2e70: afad0010 */ sw $t5,0x10($sp)
/* f1a2e74: 0fc55b92 */ jal textRender
/* f1a2e78: afb90020 */ sw $t9,0x20($sp)
/* f1a2e7c: 8fa60078 */ lw $a2,0x78($sp)
/* f1a2e80: 00408025 */ or $s0,$v0,$zero
/* f1a2e84: 27a40064 */ addiu $a0,$sp,0x64
/* f1a2e88: 10c00030 */ beqz $a2,.L0f1a2f4c
/* f1a2e8c: 27a50060 */ addiu $a1,$sp,0x60
/* f1a2e90: 3c0a8008 */ lui $t2,%hi(var8007fb04)
/* f1a2e94: 8d4afb04 */ lw $t2,%lo(var8007fb04)($t2)
/* f1a2e98: 3c078008 */ lui $a3,%hi(var8007fb08)
/* f1a2e9c: 8ce7fb08 */ lw $a3,%lo(var8007fb08)($a3)
/* f1a2ea0: afa00014 */ sw $zero,0x14($sp)
/* f1a2ea4: 0fc55cbe */ jal textMeasure
/* f1a2ea8: afaa0010 */ sw $t2,0x10($sp)
/* f1a2eac: 8fac0060 */ lw $t4,0x60($sp)
/* f1a2eb0: 8fab006c */ lw $t3,0x6c($sp)
/* f1a2eb4: 8fb80070 */ lw $t8,0x70($sp)
/* f1a2eb8: 000c6843 */ sra $t5,$t4,0x1
/* f1a2ebc: 27b90064 */ addiu $t9,$sp,0x64
/* f1a2ec0: 016d7023 */ subu $t6,$t3,$t5
/* f1a2ec4: 270f0011 */ addiu $t7,$t8,0x11
/* f1a2ec8: afae005c */ sw $t6,0x5c($sp)
/* f1a2ecc: afaf0058 */ sw $t7,0x58($sp)
/* f1a2ed0: afb90010 */ sw $t9,0x10($sp)
/* f1a2ed4: 02002025 */ or $a0,$s0,$zero
/* f1a2ed8: 27a5005c */ addiu $a1,$sp,0x5c
/* f1a2edc: 27a60058 */ addiu $a2,$sp,0x58
/* f1a2ee0: 0fc54e16 */ jal func0f153858
/* f1a2ee4: 27a70060 */ addiu $a3,$sp,0x60
/* f1a2ee8: 0c002f02 */ jal viGetX
/* f1a2eec: 00408025 */ or $s0,$v0,$zero
/* f1a2ef0: 0c002f06 */ jal viGetY
/* f1a2ef4: a7a2004c */ sh $v0,0x4c($sp)
/* f1a2ef8: 3c0a8008 */ lui $t2,%hi(var8007fb08)
/* f1a2efc: 3c0c8008 */ lui $t4,%hi(var8007fb04)
/* f1a2f00: 8d8cfb04 */ lw $t4,%lo(var8007fb04)($t4)
/* f1a2f04: 8d4afb08 */ lw $t2,%lo(var8007fb08)($t2)
/* f1a2f08: 8fab0044 */ lw $t3,0x44($sp)
/* f1a2f0c: 8fad0048 */ lw $t5,0x48($sp)
/* f1a2f10: 87ae004c */ lh $t6,0x4c($sp)
/* f1a2f14: 02002025 */ or $a0,$s0,$zero
/* f1a2f18: 27a5005c */ addiu $a1,$sp,0x5c
/* f1a2f1c: 27a60058 */ addiu $a2,$sp,0x58
/* f1a2f20: 8fa70078 */ lw $a3,0x78($sp)
/* f1a2f24: afa20024 */ sw $v0,0x24($sp)
/* f1a2f28: afa00028 */ sw $zero,0x28($sp)
/* f1a2f2c: afa0002c */ sw $zero,0x2c($sp)
/* f1a2f30: afac0014 */ sw $t4,0x14($sp)
/* f1a2f34: afaa0010 */ sw $t2,0x10($sp)
/* f1a2f38: afab0018 */ sw $t3,0x18($sp)
/* f1a2f3c: afad001c */ sw $t5,0x1c($sp)
/* f1a2f40: 0fc55b92 */ jal textRender
/* f1a2f44: afae0020 */ sw $t6,0x20($sp)
/* f1a2f48: 00408025 */ or $s0,$v0,$zero
.L0f1a2f4c:
/* f1a2f4c: 8fbf003c */ lw $ra,0x3c($sp)
/* f1a2f50: 02001025 */ or $v0,$s0,$zero
/* f1a2f54: 8fb00038 */ lw $s0,0x38($sp)
/* f1a2f58: 03e00008 */ jr $ra
/* f1a2f5c: 27bd0068 */ addiu $sp,$sp,0x68
);
Gfx *frRenderHudElement(Gfx *gdl, s32 x, s32 y, char *string1, char *string2, u32 colour, u8 alpha)
{
s32 textheight;
s32 textwidth;
s32 x2;
s32 y2;
u32 halfalpha = alpha >> 1;
u32 fullcolour = (colour & 0xffffff00) | alpha;
textMeasure(&textheight, &textwidth, string1, var8007fb18, var8007fb14, 0);
x2 = x - (textwidth >> 1);
y2 = y;
gdl = func0f153858(gdl, &x2, &y2, &textwidth, &textheight);
gdl = textRender(gdl, &x2, &y2, string1,
var8007fb18, var8007fb14, fullcolour, halfalpha, viGetX(), viGetY(), 0, 0);
if (string2) {
textMeasure(&textheight, &textwidth, string2, var8007fb08, var8007fb04, 0);
x2 = x - (textwidth >> 1);
y2 = y + 17;
gdl = func0f153858(gdl, &x2, &y2, &textwidth, &textheight);
gdl = textRender(gdl, &x2, &y2, string2,
var8007fb08, var8007fb04, fullcolour, halfalpha, viGetX(), viGetY(), 0, 0);
}
return gdl;
}
Gfx *frRenderHud(Gfx *gdl)
{
@ -5022,7 +4932,7 @@ Gfx *frRenderHud(Gfx *gdl)
red = frFormatTime(string1);
exists = frGetHudMiddleSubtext(string2);
gdl = func0f1a2d88(gdl, viGetViewX() >> 1, viGetViewTop() + 12,
gdl = frRenderHudElement(gdl, viGetViewX() >> 1, viGetViewTop() + 12,
string1, exists ? string2 : NULL,
red ? 0xff000000 | 0xa0 : 0x00ff0000 | 0xa0,
alpha);
@ -5030,19 +4940,19 @@ Gfx *frRenderHud(Gfx *gdl)
// Score
frGetScoreValue(string1);
frGetGoalScoreText(string2);
gdl = func0f1a2d88(gdl, viGetViewLeft() + 65.0f * mult, viGetViewTop() + 12,
gdl = frRenderHudElement(gdl, viGetViewLeft() + 65.0f * mult, viGetViewTop() + 12,
string1, string2, 0x00ff00a0, alpha);
// Feedback
if (frGetFeedback(string1, string2)) {
gdl = func0f1a2d88(gdl,viGetViewLeft() + 65.0f * mult, viGetViewTop() + 40,
gdl = frRenderHudElement(gdl,viGetViewLeft() + 65.0f * mult, viGetViewTop() + 40,
string1, string2, 0x00ff00a0, alpha);
}
if (g_FiringRangeData.goalaccuracy > 0) {
red = frGetMinAccuracy(string2, frGetAccuracy(string1));
gdl = func0f1a2d88(gdl, viGetViewLeft() + viGetViewX() - 70.0f * mult, viGetViewTop() + 12,
gdl = frRenderHudElement(gdl, viGetViewLeft() + viGetViewX() - 70.0f * mult, viGetViewTop() + 12,
string1, string2,
red ? 0xff000000 | 0xa0 : 0x00ff0000 | 0xa0,
alpha);
@ -5054,7 +4964,7 @@ Gfx *frRenderHud(Gfx *gdl)
mult = 2.4;
}
gdl = func0f1a2d88(gdl, viGetViewLeft() + viGetViewX() - 70.0f * mult, viGetViewTop() + 12,
gdl = frRenderHudElement(gdl, viGetViewLeft() + viGetViewX() - 70.0f * mult, viGetViewTop() + 12,
string1, string2, 0x00ff00a0, alpha);
}

View File

@ -12,7 +12,7 @@ Gfx *func0f153628(Gfx *gdl);
Gfx *func0f153780(Gfx *gdl);
Gfx *func0f1537dc(Gfx *gdl, u32 colour);
Gfx *func0f153838(Gfx *gdl);
u32 func0f153858(void);
Gfx *func0f153858(Gfx *gdl, s32 *x, s32 *y, s32 *textwidth, s32 *textheight);
u32 func0f1538e4(void);
u32 func0f153990(void);
Gfx *func0f153a34(Gfx *gdl, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5);

View File

@ -116,7 +116,7 @@ bool frGetMinAccuracy(char *buffer, f32 accuracy);
bool frFormatTime(char *buffer);
bool frGetHudMiddleSubtext(char *buffer);
bool frGetFeedback(char *score, char *zone);
Gfx *func0f1a2d88(Gfx *gdl, s32 x, s32 y, char *string1, char *string2, u32 colour, u8 alpha);
Gfx *frRenderHudElement(Gfx *gdl, s32 x, s32 y, char *string1, char *string2, u32 colour, u8 alpha);
Gfx *frRenderHud(Gfx *gdl);
#endif