diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2025-04-12 00:54:08 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-11 14:54:08 -0700 |
| commit | cc3e0856bfc1d7597c47c84fb428da5f8e0a5536 (patch) | |
| tree | 4dadb3c5af2b853451ab4d879aeaef75e1c11502 /src/d/d_msg_unit.cpp | |
| parent | 0b50e106ccc4fb32b52ee6d9487bc9b3d5fc16aa (diff) | |
Misc Matches using debug (#2388)
Diffstat (limited to 'src/d/d_msg_unit.cpp')
| -rw-r--r-- | src/d/d_msg_unit.cpp | 122 |
1 files changed, 80 insertions, 42 deletions
diff --git a/src/d/d_msg_unit.cpp b/src/d/d_msg_unit.cpp index 997abcfcb5..b429956f20 100644 --- a/src/d/d_msg_unit.cpp +++ b/src/d/d_msg_unit.cpp @@ -4,6 +4,7 @@ // #include "d/d_msg_unit.h" +#include "d/d_com_inf_game.h" #include "stdio.h" #include "d/d_kankyo.h" #include "d/d_meter2_info.h" @@ -18,10 +19,15 @@ dMsgUnit_c::~dMsgUnit_c() {} // NONMATCHING - regalloc void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) { *param_3 = 0; + bool stack9 = false; + bool stack8 = false; + int param_2b = param_2; if (param_1 == 0x10000) { sprintf(param_3, "%d", param_2); } else if (param_1 == 0x10001) { - sprintf(param_3, "%d-%d", param_2 / 10, param_2 % 10); + int tens_digit = param_2 / 10; + int ones_digit = param_2 % 10; + sprintf(param_3, "%d-%d", tens_digit, ones_digit); } else if (param_1 == 4 && param_4 == true) { int r6 = param_2 / 1000; int r5 = r6 / 60; @@ -34,51 +40,83 @@ void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) { sprintf(param_3, "%d:%02d", r5, r6); } } else if (param_1 == 3 && param_4 == true) { + f32 iVar8b; f32 dayTime = g_env_light.getDaytime(); - f32 iVar8 = 1000000.0f * dayTime; - iVar8 = ((s32)iVar8 % 15000000) / 1000000.0f; - iVar8 = 60.0f * (iVar8 / 15.0f); - sprintf(param_3, "%d:%02d", (s32)(dayTime / 15.0f), (s32)iVar8); + f32 fVar1 = dayTime / 15.0f; + iVar8b = ((s32)(1000000.0f * dayTime) % 15000000) / 1000000.0f; + f32 iVar8c = 60.0f * (iVar8b / 15.0f); + iVar8b = ((s32)(1000000.0f * dayTime) % 250000) / 1000000.0f; + f32 iVar9 = 60.0f * (iVar8b / 0.25f); + sprintf(param_3, "%d:%02d", (s32)(fVar1), (s32)iVar8c); } else { if (param_1 == 9 && param_4 == true) { - sprintf(param_3, "%d", param_2); + int param_2c = param_2; + sprintf(param_3, "%d", param_2c); + stack8 = true; } - bmg_header_t* iVar9 = (bmg_header_t*)dMeter2Info_getMsgUnitResource(); - inf1_section_t* inf1 = NULL; - str1_section_t* str1 = NULL; - int local_114 = sizeof(bmg_header_t); - u32 size = iVar9->size; - bmg_section_t* piVar12 = iVar9->section; - for (; local_114 < size; local_114 += piVar12->size) { - switch(piVar12->msgType) { - case 'FLW1': - break; - case 'FLI1': - break; - case 'DAT1': - break; - case 'INF1': - inf1 = (inf1_section_t*)piVar12; - break; - case 'STR1': - str1 = (str1_section_t*)piVar12; - break; + + if (!stack9) { + bmg_header_t* iVar9 = (bmg_header_t*)dMeter2Info_getMsgUnitResource(); + inf1_section_t* inf1 = NULL; + const void* dat1 = NULL; + str1_section_t* str1 = NULL; + int local_114 = sizeof(bmg_header_t); + u32 size = iVar9->size; + bmg_section_t* piVar12 = (bmg_section_t*)(((u8*)iVar9) + local_114); + for (; local_114 < size; local_114 += piVar12->size) { + switch(piVar12->msgType) { + case 'FLW1': + break; + case 'FLI1': + break; + case 'INF1': + inf1 = (inf1_section_t*)piVar12; + break; + case 'DAT1': + dat1 = piVar12; + break; + case 'STR1': + str1 = (str1_section_t*)piVar12; + break; + } + piVar12 = (bmg_section_t*)((u8*)piVar12 + piVar12->size); + } + + // This section is weird. The debug seems like entriesStr is outside the condition + // but the normal build doesn't really work with that. Same for inf1->entries. + + #ifdef DEBUG + inf1_entry_t* entry = &inf1->entries[param_1]; + u32 dat1EntryOffset = entry->dat1EntryOffset; + u16 startFrame = entry->startFrame; + u16 endFrame = entry->endFrame; + const char* entriesStr = str1->entries->str; + #else + u16 startFrame = inf1->entries[param_1].startFrame; + u16 endFrame = inf1->entries[param_1].endFrame; + const char* entriesStr; + #endif + const char* uVar5; + if (param_2 == 1 + #ifdef DEBUG + || (dComIfGs_getPalLanguage() == 3 && param_2 == 0) + #endif + ) { + #ifdef DEBUG + uVar5 = entriesStr + endFrame; + } else { + uVar5 = entriesStr + startFrame; + #else + uVar5 = str1->entries->str + endFrame; + } else { + uVar5 = str1->entries->str + startFrame; + #endif + } + if (strcmp(uVar5, "") == 0) { + sprintf(param_3, "%d%s", param_2, uVar5); + } else { + sprintf(param_3, "%d %s", param_2, uVar5); } - piVar12 = (bmg_section_t*)((u8*)piVar12 + piVar12->size); - } - - u32 uVar1 = inf1->entries[param_1].startFrame; - u32 uVar2 = inf1->entries[param_1].endFrame; - const char* uVar5; - if (param_2 == 1) { - uVar5 = str1->entries->str + uVar1; - } else { - uVar5 = str1->entries->str + uVar2; - } - if (strcmp(uVar5, "") == 0) { - sprintf(param_3, "%d%s", param_2, uVar5); - } else { - sprintf(param_3, "%d %s", param_2, uVar5); } if (param_1 == 3 && param_4 == true) { char acStack_d8[20]; @@ -87,7 +125,7 @@ void dMsgUnit_c::setTag(int param_1, int param_2, char* param_3, bool param_4) { } if (param_1 == 4 && param_4 == true) { char acStack_ec[20]; - setTag(5, param_2, acStack_ec, false); + setTag(5, param_2b, acStack_ec, false); strcat(param_3, acStack_ec); } } |
