Re: [hatari-devel] Blitter emulation corner case |
[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]
markus@xxxxxxx schrieb: > If you send me your code, I'll be happy to test it on my Falcon. I agree > we shouldn't bother Roger too much as he has to do precious work on > EmuTOS ;) It is attached, incl. a version compiled for the 68030, i.e. with cache handling. (Again, this won't run on a plain 68000.) The code now is: LINE_NUM = 0x80; /* set busy bit: start blitter: no HOG mode */ bltround++; while (LINE_NUM & 0x80) { LINE_NUM = 0x80; /* restart Blitter */ bltround++; } LINE_NUM = 0x80; /* restart Blitter one last time, like Atari code */ This is as closely as I can replicate the Atari code without using assembler. Note that like it says in the comment, the Atari code sets the Blitter BUSY bit one last time, even if it reads back as 0: move.b #fLineBusy,d2 ; fast refer to LineBusy flag [...] move.b #mLineBusy,(a2) ; <<< start the BLiTTER >>> [...] restart: bset.b d2,(a2) ; Restart BLiTTER and test the BUSY nop ; flag state. The "nop" is executed bne restart ; prior to the BLiTTER restarting. ; Quit if the BUSY flag was clear. Christian -- Christian Zietz - CHZ-Soft - czietz@xxxxxxx WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
Attachment:
BLTEM030.ZIP
Description: Zip archive
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |