Re: [hatari-devel] Blitter emulation corner case

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Thank you for your comments. That's not the point here, however.

Everybody seems to agree that the "NO-HOG-BUT-RESTART"-method is about the only way to sensibly use the blitter anyway (at least as part of an OS where you need to be able to react on interrupts anytime, so you can't really use HOG mode, at least for larger blits).

The point is that, for now (provided there isn't any bug left hidden in Christian's code), the blitter appears to act in a nondeterministic way on the Falcon in certain situations. Christian's original loop was

while (LINE_NUM & 0x80)
    continue;

So this didn't really restart the blitter, but kept the CPU busy in the loop until the blitter was finished. Yes, this burns cycles, but other than that shouldn't affect blitter operation in any way.

With the new code (simplified):

while (LINE_NUM & 0x80)
{
    LINE_NUM = 0x80;
}

the blitter gets restarted until finished. At least for me, there is no obvious reason for the blitter to yield different blit results.

They appear to be different, though...

@Christian: LINE_NUM |= 0x80 would probably be a bit closer to Atari's example (although touching the other bits shouldn't make any difference)? If you changed your code to that, I'd be happy to test both versions again.


Am 21.05.2017 um 23:29 schrieb Cyprian Konador:


On 21 May 2017 at 10:34, Douglas Little <doug694@xxxxxxxxxxxxxx> wrote:
On ST and Falcon it should be valid to start the blitter in non-hog mode and leave it running, without restart. It will restart itself every alternate block of 64 bus cycles until complete.


I wouldn't not steal the thread but using Non HOG mode without restarting has a side effects on blitting performance.
This is because of BLiTTER's specific behaviour in NonHOG mode. More details there http://atari-forum.com/viewtopic.php?f=94&t=30908&start=25#p313292

Below my figures for blitting on real hardware - Falcon and STE, both in "ST High" mode:

Hog Mode:
F030: 2,93 MB/s
STE: 1,98 MB/s

Non Hog mode _without restarting_:
F030: 0,75 MB/s
STE: 0,90 MB/s



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/