diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 582abc4e9..af3414312 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -13184,7 +13184,7 @@ struct menu_dialog menudialog_2f68c = { struct menu_item menuitems_trainingstats_failed2[] = { { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(426), 0x00000000, NULL }, // "Failed!" { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&func0f1a6b7c, NULL }, // "Time Taken:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SCROLLABLE, 9, 0x00000000, 0x00000082, 0x00000064, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, @@ -13204,7 +13204,7 @@ struct menu_dialog menudialog_trainingstats_failed2 = { struct menu_item menuitems_trainingstats_completed2[] = { { MENUITEMTYPE_LABEL, 0, 0x00000032, L_MPMENU(425), 0x00000000, NULL }, // "Completed!" { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, - { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&func0f1a6b7c, NULL }, // "Time Taken:" + { MENUITEMTYPE_LABEL, 0, 0x00000002, L_MPMENU(424), (u32)&htMenuTextTimeTakenValue, NULL }, // "Time Taken:" { MENUITEMTYPE_SEPARATOR, 0, 0x00000002, 0x00000000, 0x00000000, NULL }, { MENUITEMTYPE_SCROLLABLE, 10, 0x00000000, 0x00000082, 0x00000064, NULL }, { MENUITEMTYPE_END, 0, 0x00000000, 0x00000000, 0x00000000, NULL }, diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 224ffbb8e..9f42b815d 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -4779,7 +4779,7 @@ glabel func0f106b20 /* f106bb0: 2881001a */ slti $at,$a0,0x1a /* f106bb4: 50200019 */ beqzl $at,.L0f106c1c /* f106bb8: 2401001e */ addiu $at,$zero,0x1e -/* f106bbc: 0fc687f8 */ jal func0f1a1fe0 +/* f106bbc: 0fc687f8 */ jal getHoloTrainingData /* f106bc0: 00000000 */ sll $zero,$zero,0x0 /* f106bc4: 8c430000 */ lw $v1,0x0($v0) /* f106bc8: 3c048009 */ lui $a0,%hi(menudialog_2f68c) diff --git a/src/game/game_19c990.c b/src/game/game_19c990.c index df70b762b..dea5782ff 100644 --- a/src/game/game_19c990.c +++ b/src/game/game_19c990.c @@ -6424,7 +6424,7 @@ glabel func0f1a1f70 ); GLOBAL_ASM( -glabel func0f1a1fe0 +glabel getHoloTrainingData /* f1a1fe0: 3c02800b */ lui $v0,%hi(g_HoloTrainingData) /* f1a1fe4: 03e00008 */ jr $ra /* f1a1fe8: 2442d1b0 */ addiu $v0,$v0,%lo(g_HoloTrainingData) diff --git a/src/game/game_1a3340.c b/src/game/game_1a3340.c index 3cc831172..3f0cb34a9 100644 --- a/src/game/game_1a3340.c +++ b/src/game/game_1a3340.c @@ -3574,7 +3574,7 @@ GLOBAL_ASM( glabel func0f1a6aec /* f1a6aec: 27bdffe8 */ addiu $sp,$sp,-24 /* f1a6af0: afbf0014 */ sw $ra,0x14($sp) -/* f1a6af4: 0fc687f8 */ jal func0f1a1fe0 +/* f1a6af4: 0fc687f8 */ jal getHoloTrainingData /* f1a6af8: afa40018 */ sw $a0,0x18($sp) /* f1a6afc: 8c4e0000 */ lw $t6,0x0($v0) /* f1a6b00: 000e7fc2 */ srl $t7,$t6,0x1f @@ -3598,7 +3598,7 @@ GLOBAL_ASM( glabel func0f1a6b34 /* f1a6b34: 27bdffe8 */ addiu $sp,$sp,-24 /* f1a6b38: afbf0014 */ sw $ra,0x14($sp) -/* f1a6b3c: 0fc687f8 */ jal func0f1a1fe0 +/* f1a6b3c: 0fc687f8 */ jal getHoloTrainingData /* f1a6b40: afa40018 */ sw $a0,0x18($sp) /* f1a6b44: 8c4e0000 */ lw $t6,0x0($v0) /* f1a6b48: 000e7fc2 */ srl $t7,$t6,0x1f @@ -3618,67 +3618,27 @@ glabel func0f1a6b34 /* f1a6b78: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f1a6b7c -/* f1a6b7c: 27bdffd0 */ addiu $sp,$sp,-48 -/* f1a6b80: afbf001c */ sw $ra,0x1c($sp) -/* f1a6b84: 0fc687f8 */ jal func0f1a1fe0 -/* f1a6b88: afa40030 */ sw $a0,0x30($sp) -/* f1a6b8c: 8c4e0004 */ lw $t6,0x4($v0) -/* f1a6b90: 3c014270 */ lui $at,0x4270 -/* f1a6b94: 44810000 */ mtc1 $at,$f0 -/* f1a6b98: 448e2000 */ mtc1 $t6,$f4 -/* f1a6b9c: 3c057f1c */ lui $a1,%hi(var7f1b98dc) -/* f1a6ba0: 3c067f1c */ lui $a2,%hi(var7f1b98e8) -/* f1a6ba4: 468021a0 */ cvt.s.w $f6,$f4 -/* f1a6ba8: 3c077f1c */ lui $a3,%hi(var7f1b98ec) -/* f1a6bac: 24e798ec */ addiu $a3,$a3,%lo(var7f1b98ec) -/* f1a6bb0: 24c698e8 */ addiu $a2,$a2,%lo(var7f1b98e8) -/* f1a6bb4: 24a598dc */ addiu $a1,$a1,%lo(var7f1b98dc) -/* f1a6bb8: 3c048007 */ lui $a0,%hi(g_StringPointer) -/* f1a6bbc: 46003303 */ div.s $f12,$f6,$f0 -/* f1a6bc0: 460c003e */ c.le.s $f0,$f12 -/* f1a6bc4: 00000000 */ sll $zero,$zero,0x0 -/* f1a6bc8: 45020019 */ bc1fl .L0f1a6c30 -/* f1a6bcc: 460062a1 */ cvt.d.s $f10,$f12 -/* f1a6bd0: 460c003e */ c.le.s $f0,$f12 -/* f1a6bd4: 00003025 */ or $a2,$zero,$zero -/* f1a6bd8: 45000007 */ bc1f .L0f1a6bf8 -/* f1a6bdc: 00000000 */ sll $zero,$zero,0x0 -/* f1a6be0: 46006301 */ sub.s $f12,$f12,$f0 -.L0f1a6be4: -/* f1a6be4: 24c60001 */ addiu $a2,$a2,0x1 -/* f1a6be8: 460c003e */ c.le.s $f0,$f12 -/* f1a6bec: 00000000 */ sll $zero,$zero,0x0 -/* f1a6bf0: 4503fffc */ bc1tl .L0f1a6be4 -/* f1a6bf4: 46006301 */ sub.s $f12,$f12,$f0 -.L0f1a6bf8: -/* f1a6bf8: 0fc25e5c */ jal func0f097970 -/* f1a6bfc: afa60024 */ sw $a2,0x24($sp) -/* f1a6c00: 4600020d */ trunc.w.s $f8,$f0 -/* f1a6c04: 3c048007 */ lui $a0,%hi(g_StringPointer) -/* f1a6c08: 3c057f1c */ lui $a1,%hi(var7f1b98d0) -/* f1a6c0c: 24a598d0 */ addiu $a1,$a1,%lo(var7f1b98d0) -/* f1a6c10: 44074000 */ mfc1 $a3,$f8 -/* f1a6c14: 8c841440 */ lw $a0,%lo(g_StringPointer)($a0) -/* f1a6c18: 0c004dad */ jal sprintf -/* f1a6c1c: 8fa60024 */ lw $a2,0x24($sp) -/* f1a6c20: 3c028007 */ lui $v0,%hi(g_StringPointer) -/* f1a6c24: 10000007 */ beqz $zero,.L0f1a6c44 -/* f1a6c28: 8c421440 */ lw $v0,%lo(g_StringPointer)($v0) -/* f1a6c2c: 460062a1 */ cvt.d.s $f10,$f12 -.L0f1a6c30: -/* f1a6c30: 8c841440 */ lw $a0,%lo(g_StringPointer)($a0) -/* f1a6c34: 0c004dad */ jal sprintf -/* f1a6c38: f7aa0010 */ sdc1 $f10,0x10($sp) -/* f1a6c3c: 3c028007 */ lui $v0,%hi(g_StringPointer) -/* f1a6c40: 8c421440 */ lw $v0,%lo(g_StringPointer)($v0) -.L0f1a6c44: -/* f1a6c44: 8fbf001c */ lw $ra,0x1c($sp) -/* f1a6c48: 27bd0030 */ addiu $sp,$sp,0x30 -/* f1a6c4c: 03e00008 */ jr $ra -/* f1a6c50: 00000000 */ sll $zero,$zero,0x0 -); +char *htMenuTextTimeTakenValue(struct menu_item *item) +{ + struct trainingdata *data = getHoloTrainingData(); + f32 secs = data->timetaken / 60.0f; + + if (secs >= 60.0f) { + s32 mins = 0; + + while (secs >= 60.0f) { + secs -= 60.0f; + mins++; + } + + sprintf(g_StringPointer, "%dm %2ds\n", mins, (s32)func0f097970(secs)); + return g_StringPointer; + } else { + sprintf(g_StringPointer, "%s%s%2.2fs\n", "", "", secs); + } + + return g_StringPointer; +} bool menudialogFiringRangeResults(u32 operation, struct menu_dialog *dialog, struct menustackitem *stackitem) { diff --git a/src/game/propobj.c b/src/game/propobj.c index 1b694a18c..747300d59 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -37966,7 +37966,7 @@ glabel func0f086f40 .L0f086fd4: /* f086fd4: 54410015 */ bnel $v0,$at,.L0f08702c /* f086fd8: 2401007f */ addiu $at,$zero,0x7f -/* f086fdc: 0fc687f8 */ jal func0f1a1fe0 +/* f086fdc: 0fc687f8 */ jal getHoloTrainingData /* f086fe0: 00000000 */ sll $zero,$zero,0x0 /* f086fe4: 24080001 */ addiu $t0,$zero,0x1 /* f086fe8: a3a8002b */ sb $t0,0x2b($sp) @@ -48693,7 +48693,7 @@ bool func0f09018c(struct prop *doorprop) if (g_Vars.stagenum == STAGE_CITRAINING) { struct trainingdata *a = getDeviceTrainingData(); - struct trainingdata *b = func0f1a1fe0(); + struct trainingdata *b = getHoloTrainingData(); intraining = (a && a->unk00_00) || (b && b->unk00_00) || g_Vars.currentplayer->prop->rooms[0] == 0x0a; diff --git a/src/include/game/game_19c990.h b/src/include/game/game_19c990.h index fc8ad4ae3..ebcefc28b 100644 --- a/src/include/game/game_19c990.h +++ b/src/include/game/game_19c990.h @@ -89,7 +89,7 @@ u32 func0f1a1e38(void); u32 func0f1a1e90(void); u32 func0f1a1f00(void); u32 func0f1a1f70(void); -struct trainingdata *func0f1a1fe0(void); // might be a different but similar struct +struct trainingdata *getHoloTrainingData(void); u32 func0f1a1fec(void); void func0f1a2070(void); u32 func0f1a2198(void); diff --git a/src/include/game/game_1a3340.h b/src/include/game/game_1a3340.h index 5ebbd9b2f..cdc848869 100644 --- a/src/include/game/game_1a3340.h +++ b/src/include/game/game_1a3340.h @@ -29,7 +29,7 @@ char *dtMenuTextTimeTakenValue(struct menu_item *item); u32 func0f1a6a04(void); u32 func0f1a6aec(void); u32 func0f1a6b34(void); -u32 func0f1a6b7c(void); +char *htMenuTextTimeTakenValue(struct menu_item *item); u32 func0f1a6c8c(void); u32 func0f1a6cc4(void); u32 func0f1a7554(void);