First, I'm pleased to see that tuxfamily.org is back.
I've taken some days to try to figure out why underscore demo was
always bugging at the same point.
The main explanation was the lack of pipeline emulation in the AGU.
For example :
move #<10,r0
move #<15,r0
move x:(r0),a
The register "a" should equal 10 and not 15, due to a 1
instruction delay.
This happens for parallel moves instructions.
I've implemented this behavior for all Rx, Nx and Mx registers.
I've done a lot of non regression tests with many demos, programs,
musik players, ... and didn't noticed any regression.
I've seen this pipeline restriction in some demos with mod player
sound embedded, with EKO System, and probably some other demos.
The only one I know that suffered this was underscore demo.
_ demo now renders the arrow correctly, with the blue lightened
metallic texture and runs more frames before crashing. The crash
doesn't always occur at the same point : sometimes it crashs before
or later.
The max I can now run is until this frame :
I've implemented the pipe for LUA, Parallel moves, MOVEC, TCC, MOVEP
MOVE instructions.
The motorola DSP docs also include MOVEM, but I've done many tests
and it doesn't seem to suffer the pipeline restriction.
This improvement in AGU emulation allows to feed the registers R, N
or M just in time (also if this is not recommanded by Motorola ;)