Le 05/02/2017 à 11:48, Christian Zietz a écrit :
Laurent Sallafranque schrieb:
The problem is in the 5 last lines : the code test for a min and max
value for register DO.
if D0 is not between $4100 and $4200, the code goes to $4eb1c and this
quit the demo immediatly.
To me this simply looks like a CPU speed test, counting the number of
loop iterations between two VBLs. I'd assume that the demo requires a
certain CPU speed to run correctly and so it wants to quit on (for
example) over-clocked CPUs.
I think the 68030 cycle accuracy of Hatari is not good enough here for
this test to pass.
You're right, this compute cpu speed.
At the moment with my dev version I get D0=$3e65, which is ~5% too
slow compared to real HW $4100-$4200 for this code loop :
$0001cd1e : 4a78 0468 tst.w $0468.w
$0001cd22 : 6600 0006 bne $1cd2a
$0001cd26 : 5240 addq.w #1,d0
$0001cd28 : 60f4 bra.s $1cd1e
Unfortunately, 100 % accuracy will not be reached immediately in
Hatari, some complex parts of the 68020/68030 pipeline and bus
sequencer are not known yet to ensure exact similar behaviour
regarding how the cpu order the memory accesses to be optimum.
Nicolas