Skip to content

Commit a000e5e

Browse files
committed
Memory Watch - Handle time as a signed value
1 parent cbb9aab commit a000e5e

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

ttyd-tools/rel/include/ttyd.eu.lst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,6 +1444,7 @@
14441444
80268574:_savegpr_30
14451445
80268578:_savegpr_31
14461446
802685CC:__udivdi3
1447+
802686B8:__divdi3
14471448
802687F0:__umoddi3
14481449

14491450
// printf.c

ttyd-tools/rel/include/ttyd.jp.lst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,6 +1436,7 @@
14361436
8025E9E4:_savegpr_30
14371437
8025E9E8:_savegpr_31
14381438
8025EA3C:__udivdi3
1439+
8025EB28:__divdi3
14391440
8025EC60:__umoddi3
14401441

14411442
// printf.c

ttyd-tools/rel/include/ttyd.us.lst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,6 +1442,7 @@
14421442
80264994:_savegpr_30
14431443
80264998:_savegpr_31
14441444
802649EC:__udivdi3
1445+
80264AD8:__divdi3
14451446
80264C10:__umoddi3
14461447

14471448
// printf.c

ttyd-tools/rel/source/memorywatch.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,28 @@ const char *getValueString(int32_t slot)
124124
uint32_t FPS = *reinterpret_cast<uint32_t *>(
125125
*reinterpret_cast<uint32_t *>(GlobalWorkPointer) + 0x4);
126126

127-
uint64_t CurrentTime = *reinterpret_cast<uint64_t *>(Address) / (TimeBase / FPS);
127+
int64_t CurrentTime = *reinterpret_cast<int64_t *>(Address) / (TimeBase / FPS);
128+
const char *NegativeSign = "";
128129

129-
uint32_t hour = CurrentTime / 3600 / FPS;
130-
uint32_t minute = (CurrentTime / 60 / FPS) % 60;
131-
uint32_t second = (CurrentTime / FPS) % 60;
132-
uint32_t frame = CurrentTime % FPS;
130+
// Check if the value is negative
131+
if (CurrentTime < 0)
132+
{
133+
// Convert the number to positive
134+
CurrentTime = -CurrentTime;
135+
NegativeSign = "-";
136+
}
137+
138+
// Handle the value as unsigned
139+
uint64_t CurrentTimeUnsigned = static_cast<uint64_t>(CurrentTime);
140+
141+
uint32_t hour = CurrentTimeUnsigned / 3600 / FPS;
142+
uint32_t minute = (CurrentTimeUnsigned / 60 / FPS) % 60;
143+
uint32_t second = (CurrentTimeUnsigned / FPS) % 60;
144+
uint32_t frame = CurrentTimeUnsigned % FPS;
133145

134146
sprintf(tempDisplayBuffer,
135-
"%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ".%02" PRIu32,
147+
"%s%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ".%02" PRIu32,
148+
NegativeSign,
136149
hour,
137150
minute,
138151
second,

0 commit comments

Comments
 (0)