FF7: Why isn't the Countdown Timer hardcoded?

  • Thread starter Thread starter antd
  • Start date Start date
Status
Not open for further replies.
Code: [Select]
Code:
int __stdcall sub_72D485(int TimerValue, int DD86B0){  minutes = TimerValue / 60000;  DD86B0 = TimerValue / 60000 / 10;                      //X0:00.000  DD86B4 = minutes - 10 * DD86B0;                        //0X:00.000  seconds = (TimerValue - 60000 * minutes) / 1000;  DD86B8 = seconds / 10;                                 //00:X0.000  DD86C2 = seconds - 10 * DD86B8;                        //00:0X.000  milliseconds = TimerValue - 60000 * v3 - 1000 * v4;  DD86C6 = milliseconds / 100;                           //00:00.X00  DD86D0 = (milliseconds - 100 * (DD86C6)) / 10;         //00:00.0X0  DD86D4 = milliseconds - 100 * DD86C6 - 10 * DD86D0;    //00:00.00X}
Those addresses populate the structure at 0x9568A0, which starts out as "00:00.000" in ff7text.

I think if you change the line:
Code: [Select]
Code:
.text:0072D473                 mov     [eax+8], dl
to
Code: [Select]
Code:
.text:0072D473                 mov     [eax+8], 0h
Then it will either error or not display the millisecond count because it terminates the string early.
 
Nice!

Turns out when it doesnt get written and stays 00 it doesnt appear anyway.

{============SNOWBOARD CHANGE

{in play time format
9568A0 = 00 00 1A 00 00 1B 00 00 00
{time format
9568B0 = 1F 1F 1A 1F 1F 1B 1F 1F 00
{best format
9568D0 = 2D 2D 27 2D 2D 22 2D 2D 00

{Increment by 1
72D11D = BA 01 00 00 00 90

{time calcs
72D4D8 = B9 3C 00 00 00 (60 now not 1000)
72D495 = B9 10 0E 00 00 (3600 frames in 1 minute)
72D4C6 = 6B C9 3C 90 90 90 (60 frames)
72D50B = 6B C9 3C 90 90 90
72D51E = 6B C9 3C 90 90 90

{write to 1st/2nd digit
72D458 = 88 4A 06
72D473 = 88 50 07
{============

That's a full list of changes I've made.  Just supposing I wanted to have the display purely as frame count (so frames are literally the time in a 5 digit display), how would that work?  By the looks of it, it updates every digit individually and the code could get messy.


A few other things need editing to make this all work proper also.
 
Last edited:
The answer is pretty long. Can we take this to a new thread, appropriately titled what it is we're talking about? :)
 
Status
Not open for further replies.
Back
Top