From d918522b74a56f8d2da08eec96e8d8ef0fb3adf4 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 19 Mar 2020 20:32:58 +1000 Subject: [PATCH] Decompile frMenuTextTimeLimitValue --- src/game/data/data_020df0.c | 4 +- src/game/game_1a3340.c | 74 +++++++++++----------------------- src/include/game/game_1a3340.h | 2 +- 3 files changed, 27 insertions(+), 53 deletions(-) diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index d8656d3e1..a7a398562 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -12877,7 +12877,7 @@ struct menu_item menuitems_frtraininginfo[] = { { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty" { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&func0f1a431c, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&func0f1a43b8, (u32)&func0f1a441c, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SCROLLABLE, 6, 0x00004000, 0x0000010e, 0x0000005f, NULL }, @@ -12902,7 +12902,7 @@ struct menu_item menuitems_frtraininginfo2[] = { { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(443), (u32)&frMenuTextDifficultyName, NULL }, // "Difficulty:" { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextGoalScoreLabel, (u32)&frMenuTextGoalScoreValue, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextMinAccuracyOrTargetsLabel, (u32)&frMenuTextMinAccuracyOrTargetsValue, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&func0f1a431c, NULL }, + { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&frMenuTextTimeLimitLabel, (u32)&frMenuTextTimeLimitValue, NULL }, { MENUITEMTYPE_LABEL, 0, 0x00000002, (u32)&func0f1a43b8, (u32)&func0f1a441c, NULL }, { MENUITEMTYPE_SEPARATOR, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SCROLLABLE, 6, 0x00004000, 0x0000010e, 0x0000005f, NULL }, diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index cc36069b2..a700e63c3 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -1107,54 +1107,30 @@ char *frMenuTextTimeLimitLabel(struct menu_item *item) return g_StringPointer; } -GLOBAL_ASM( -glabel func0f1a431c -/* f1a431c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f1a4320: afbf0014 */ sw $ra,0x14($sp) -/* f1a4324: 0fc675f3 */ jal getFiringRangeData -/* f1a4328: afa40018 */ sw $a0,0x18($sp) -/* f1a432c: 90430005 */ lbu $v1,0x5($v0) -/* f1a4330: 240100ff */ addiu $at,$zero,0xff -/* f1a4334: 10610018 */ beq $v1,$at,.L0f1a4398 -/* f1a4338: 00603825 */ or $a3,$v1,$zero -/* f1a433c: 2861003c */ slti $at,$v1,0x3c -/* f1a4340: 14200005 */ bnez $at,.L0f1a4358 -/* f1a4344: 00003025 */ or $a2,$zero,$zero -.L0f1a4348: -/* f1a4348: 24e7ffc4 */ addiu $a3,$a3,-60 -/* f1a434c: 28e1003c */ slti $at,$a3,0x3c -/* f1a4350: 1020fffd */ beqz $at,.L0f1a4348 -/* f1a4354: 24c60001 */ addiu $a2,$a2,0x1 -.L0f1a4358: -/* f1a4358: 18c00008 */ blez $a2,.L0f1a437c -/* f1a435c: 3c048007 */ lui $a0,%hi(g_StringPointer2) -/* f1a4360: 3c048007 */ lui $a0,%hi(g_StringPointer2) -/* f1a4364: 3c057f1c */ lui $a1,%hi(var7f1b9838) -/* f1a4368: 24a59838 */ addiu $a1,$a1,%lo(var7f1b9838) -/* f1a436c: 0c004dad */ jal sprintf -/* f1a4370: 8c841444 */ lw $a0,%lo(g_StringPointer2)($a0) -/* f1a4374: 1000000a */ beqz $zero,.L0f1a43a0 -/* f1a4378: 00000000 */ sll $zero,$zero,0x0 -.L0f1a437c: -/* f1a437c: 3c057f1c */ lui $a1,%hi(var7f1b9844) -/* f1a4380: 24a59844 */ addiu $a1,$a1,%lo(var7f1b9844) -/* f1a4384: 8c841444 */ lw $a0,%lo(g_StringPointer2)($a0) -/* f1a4388: 0c004dad */ jal sprintf -/* f1a438c: 00e03025 */ or $a2,$a3,$zero -/* f1a4390: 10000003 */ beqz $zero,.L0f1a43a0 -/* f1a4394: 00000000 */ sll $zero,$zero,0x0 -.L0f1a4398: -/* f1a4398: 10000003 */ beqz $zero,.L0f1a43a8 -/* f1a439c: 00001025 */ or $v0,$zero,$zero -.L0f1a43a0: -/* f1a43a0: 3c028007 */ lui $v0,%hi(g_StringPointer2) -/* f1a43a4: 8c421444 */ lw $v0,%lo(g_StringPointer2)($v0) -.L0f1a43a8: -/* f1a43a8: 8fbf0014 */ lw $ra,0x14($sp) -/* f1a43ac: 27bd0018 */ addiu $sp,$sp,0x18 -/* f1a43b0: 03e00008 */ jr $ra -/* f1a43b4: 00000000 */ sll $zero,$zero,0x0 -); +char *frMenuTextTimeLimitValue(struct menu_item *item) +{ + struct frdata *frdata = getFiringRangeData(); + + if (frdata->timelimit != 255) { + s32 secs = frdata->timelimit; + s32 mins = 0; + + while (secs >= 60) { + secs -= 60; + mins++; + } + + if (mins > 0) { + sprintf(g_StringPointer2, "%dm %ds\n", mins, secs); + } else { + sprintf(g_StringPointer2, "%ds\n", secs); + } + } else { + return NULL; + } + + return g_StringPointer2; +} GLOBAL_ASM( glabel func0f1a43b8 @@ -4775,8 +4751,6 @@ void *func0f1a7878(u16 fileid, s32 arg1, s32 arg2) return func0f1a7794(fileid, arg1, arg2, 0); } -const char var7f1b9838[] = "%dm %ds\n"; -const char var7f1b9844[] = "%ds\n"; const char var7f1b984c[] = "%s"; const char var7f1b9850[] = "/%d"; const char var7f1b9854[] = "%d%s\n"; diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 9eed0cceb..d199d21b7 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -15,7 +15,7 @@ char *frMenuTextGoalScoreValue(struct menu_item *item); char *frMenuTextMinAccuracyOrTargetsLabel(struct menu_item *item); char *frMenuTextMinAccuracyOrTargetsValue(struct menu_item *item); char *frMenuTextTimeLimitLabel(struct menu_item *item); -u32 func0f1a431c(void); +char *frMenuTextTimeLimitValue(struct menu_item *item); u32 func0f1a43b8(void); u32 func0f1a441c(void); u32 func0f1a628c(void);