View Single Post
Old 20 October 2019, 17:41   #17
Registered User

Join Date: Sep 2015
Location: Germany
Posts: 231
Originally Posted by ross View Post
No, it is not managed this way, just checked to control also if my memory was broken
I extracted and commented the relevant code.

    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
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.
dissident is offline  
Page generated in 0.07311 seconds with 11 queries