summaryrefslogtreecommitdiff
path: root/src/d/d_msg_unit.cpp
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-04-12 00:54:08 +0300
committerGitHub <noreply@github.com>2025-04-11 14:54:08 -0700
commitcc3e0856bfc1d7597c47c84fb428da5f8e0a5536 (patch)
tree4dadb3c5af2b853451ab4d879aeaef75e1c11502 /src/d/d_msg_unit.cpp
parent0b50e106ccc4fb32b52ee6d9487bc9b3d5fc16aa (diff)
Misc Matches using debug (#2388)
Diffstat (limited to 'src/d/d_msg_unit.cpp')
-rw-r--r--src/d/d_msg_unit.cpp122
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);
}
}