Posted by Bonkers on 1/21/2000, 10:35 pm
216.41.31.116
Here is my wonderful quality work once again. I can't wait for the really "useless" tasks. I just hope it isn't anything like add a dancing chicken to the about box. I'll have to post III.1 and III.2 separatly since this forum is b###hing about maximum sizes. III.1
First I found where Acoustica access the reg values. This is by a function at 413c88 and the one to get the cross value is at 446c55. Here is an IDA dump with some explanation and some renaming in there too.
.text:00446BE3 lea ecx, [ebp+Cross] ;This is where the Cross value is going
.text:00446BE6 push ecx
.text:00446BE7 push offset aCross ; "Cross"
.text:00446BEC push offset aReverb_10 ; "Reverb"
.text:00446BF1 mov eax, dword_0_4A8BE6
.text:00446BF6 push eax
.text:00446BF7 call sub_0_413AD8 ;Read value from reg
.text:00446BFC add esp, 14h
.text:00446BFF lea edx, [ebp+FTIME] ;FTIME Structure
.text:00446C02 push edx
.text:00446C03 call j_GetSystemTimeAsFileTime ;Go and get it
.text:00446C08 mov ecx, [ebp+C]
.text:00446C0B cmp ecx, 24BCBh ;Check if General/C is 0
.text:00446C11 jnz short loc_0_446C61 ;If isn't then jump
...
.text:00446C61 mov eax, [ebp+HighOfReal] ;High 32 bytes of FTIME
.text:00446C64 mov edx, [ebp+Cross] ;Cross value
.text:00446C67 sub eax, edx ;Subtract Cross from current
.text:00446C69 mov ecx, 0CAh
.text:00446C6E xor edx, edx
.text:00446C70 div ecx ;Divide by 202 to get number of days
.text:00446C72 mov ecx, eax
.text:00446C74 mov DaysRemaining, ecx S;tore DaysRemaining in memory
.text:00446C7A cmp ecx, 1Eh ;Check against 30
.text:00446C7D setle al ;Set al if it's less than 30 daysOnly the high 32-bytes of the FTIME value is needed since this is done in 100ns units and 0xFFFFFFFF 100ns units is something around 300-450 seconds or so. The rest is self explanatory.
URL for program is posted at end.