Quote:
Originally Posted by ross
No, it is not managed this way, just checked to control also if my memory was broken
I extracted and commented the relevant code.
Code:
copperlist:
...
dc.l $FFE1FFFE
dc.l $0401FFFE ; wait y==$104 position
dc.l $00960040 ; 'pause' blitter (CPU can be hogged by BLTPRI)
dc.l $009C8010 ; trigger copper IRQ
dc.l $01000000 ; no bpls active
dc.l $FFFFFFFE ; CEND
irq3: ...
MOVE.W $dff01e,D1
BTST #4,D1 ; copper IRQ?
BEQ.B .skip ; no, skip
MOVE.L $dff004,D0 ; beam position
AND.L #$ff0000ff,D0 ; isolate LOF+I and x position
ADD.L #$00013610,D0 ; skip $136-$104=$32=50 lines
MOVE.L D0,$dff02a ; write new position to V(H)POSW
MOVE.W #$8040,$dff096 ; restart blitter operation
.skip BTST #5,D1
BEQ.B .skip2
..VBI_handler
This also works on OCS as opposed to using BEANCON0 (which is obviously much more convenient).
|
Good work, ross.
I know this trick since the beginning of the 90s, published in the German "Amiga Magazin". But now it's well commented and a good example how to switch the OCS from PAL into NTSC mode if needed.
BTW the cracked version of Wings of death controls via the CTRL key the switching between PAL/NTSC.