Re: [hatari-devel] Blitter emulation corner case

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


Here are the results from my Falcon. Ran three times (individual results are identical).

A quick cross-check seems to show results are again a little different from Roger's test runs? Can't make much sense out of that currently, to be honest . How does it look compared to your STE results?

Cheers,

Markus



Am 21.05.2017 um 13:44 schrieb Christian Zietz:
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

>>>>> OP = 1 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

>>>>> OP = 3 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 19 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

Total Blitter iterations: 16

>>>>> OP = 1 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

>>>>> OP = 3 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 19 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

Total Blitter iterations: 16

>>>>> OP = 1 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

>>>>> OP = 3 <<<<<

SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 0

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 0, NFSR = 1

0 1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 0

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = +2, FXSR = 1, NFSR = 1

1 3 5 7 9 11 13 15 17 19 -1 -1 -1 -1 -1 -1 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 0

-1 -1 -1 -1 -1 -1 55 56 57 58 59 60 61 62 63 19 



SRC_INC = DST_INC = -2, FXSR = 0, NFSR = 1

-1 -1 -1 -1 -1 -1 54 55 56 57 58 59 60 61 62 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 0

-1 -1 -1 -1 -1 -1 45 47 49 51 53 55 57 59 61 63 



SRC_INC = DST_INC = -2, FXSR = 1, NFSR = 1

-1 -1 -1 -1 -1 -1 44 46 48 50 52 54 56 58 60 62 

Total Blitter iterations: 16



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