the cutting room mirror

Arkanoid II: Revenge of DOH (Atari ST)

This article has a talk page!
view on tcrf.net

This page contains no introduction.
What makes this game notable or what is it about? Are you a bad enough dude to save this article?

Uncompiled Code#

Several source code fragments throughout the game, resulting in loads of code to dig through. These can be seen at the hex addresses seen below in the .stx dump.

23770:

        YDRCT-X(A1)
BONST:  BSR RANDSUB
        AND #2,D0
        SUBQ #1,D0
        MOVE D0,XDRCT-X(A1)
NBONST: MOVE BADTYPE,D1
        ASL #2,D1
        MOVE L #BADADD,A4
        ADD D1,A4
        MOVE.L BADRST-BADADD(A4),D0
        MOVE.L D0,(A2)
        ADD.L BADMSK-BADADD(A4),D0
        MOVE.L D0,MASK-SRCE(A2)
        MOVE.L BADHEI-BADADD(A4),HEI-SRCE(A2)
TCLOSE: ADDQ.W #1,Y+18
        SUBQ.L #2,HEI+140
        BGT.S NPART
        CLR.B TADIRN
        MOVE #-1,C+18
        BRA.S NPART
NPART:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BREKKER:TST.B BREK
        BEQ NBREKR
        MOVE.L #-1,BACKS+768+52
        MOVE.L #-1,BACKS+768+32
        LEA SRCE+116,A0
        MOVE.L (A0),D0
        ADD.L #$B40,D0
        CMP.L #$6AA38,D0
        BCS.S BRKJN
        MOVE.L #$68878,D0
BRKJN:  MOVE.L D0,(A0)
NBREKR:
MLOOPEND:
;******************************************************
        BSR.L REPCOPY
        MOVE #1,CNTR
BREPLP: MOVE CNTR,D0
        BSR.L replace
        ADDQ.W #1,CNTR
        CMP.W #64,CNTR
        BCS.S BREPLP
        MOVE #15,D1
        MOVE #48,D0
PRNLP:  BSR DIRECT
        ADDQ #1,D0
        DBRA D1,PRNLP
        MOVE #22,D1
        MOVE #1,D0
EPRLP:  BSR.L prnt
        ADDQ #1,D0
        DBRA D1,EPRLP
        TST SYNC
        BEQ NS1
        BSR SETSCRN
NS1:    MOVE #23,D1
        MOVE #24

23F6F:

              BALLS
          BEQ CAPSET
          CMP #1,D0
          BEQ GSNAK
          CMP #2,D0
          BEQ B16
MULTIMEG: MOVE #1,MEGA
          MOVE.L #$5A950,BALLTYPE
          BRA DISPJN
BADMULT:  MOVE #8,BADMAX
          BRA CAPSET
B16:      MOVE.B #16,BALLS
          MOVE.L #ESHOT,D7
          BSR SON
          MOVE BALLINPLAY,D0
          BSR TRNSCLC
          BSR TRNSIN
          MOVE #48,D0
          BSR TRNSCLC
          MOVE SPEED,D0
          ASL #4,D0
          MOVE.L #DIRTABX,A0
          ADD D0,A0
          MOVE #7,d1
B16ER:    MOVE DIRTABY-DIRTABX(A0),YDRCT
          MOVE (A0)+,XDRCT
          TST 256(A5)
          BPL B162
          BSR TRNSOUT
B162:     NEG YDRCT
          ADDQ.L #2,A5
          TST 256(A5)
          BPL B163
          BSR TRNSOUT
B163:     ADDQ.L #2,A5
          DBRA D1,B16ER
          BRA CAPSET
GLAS:     MOVE.B #LAS,BATTYPE
          MOVE.L #X+48,MAXSHOTS
          BRA CAPSET
GSNAK:    MOVE BALLINPLAY,D0
          BSR TRNSCLC
          BSR TRNSIN
          MOVE X,SNAKX
          MOVE Y,SNAKY
          MOVE XDRCT,SNAKXD
          MOVE YDRCT,SNAKYD
          MOVE ANGLE,SNAKANG
          MOVE #11,D0
          SUB.B BALLS,D0
          MOVE D0,SNAKCNTR
          MOVE.B #20,SPEEDUP
          BRA CAPSET
NGOL:
CAPSET:   MOVE.B OLDBT,D7
          BEQ.L STRNS
          CMP.B #ext,D7
          BEQ.S EXRET
          CMP.B #SHRINK,D7
          BEQ SHRKRET
          CMP.B #TWIN,D7
          BEQ CAPFIN
          CMP.B #GHOST,D7
          BEQ GHOSTRET
          CMP.B #las,D7
          BNE.L STRNS
          MOVE.L #$6E340,SRCE+4
          MOVE.L #$6E350,MASK+4
          MOVE.B #24,GLOCNT
RETNGLO:  MOVE.L #-$820,GLODRN
          MOVE.B #2,TRANS
          BRA.S CAPFIN
EXRET:    MOVE.L #$6D2D0,SRCE+4
          MOVE.L #$6D2E8,MASK+4
          MOVE.B #16,GLOCNT
          MOVE #1,XCHNGE
          MOVE.L #E5,D7
          BSR.L son
          BRA.S RETNGLO
SHRKRET:  MOVE.L #$6D470,SRCE+4
          MOVE.L #$6D488,MASK+4
          MOVE.B #16,GLOCNT
          MOVE #-1,XCHNGE
          MOVE.L #E42,D7
          BSR son
          BRA.S RETNGLO
GHOSTRET: MOVE #-1,C+4
          MOVE #-1,C+6
STRNS:    BSR.L STRANS
CAPFIN:   MOVE.L #player1 +2,A0
          BSR.L score
CAPEND:   MOVE #$FFFF,C+10
NOCAP:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPARKLE

SPARKLER: SUBQ.W #1,SKCNTR
          BNE.S NSPARKLER
          MOVE #2,SKCNTR
          MOVE.L #X,A0
          MOVE.L #30,D1
          ADD.L D1,A0
SPKLFLP:  TST 256(A0)
          BMI.S SPKLNFND
          MOVEQ #0,D0
          MOVE 256(A0),D0
          ADDQ #1,D0
          CMP.W #24,D0
          BCS.S SPKOK
          MOVE.W #$FFFF,D0
SPKOK:    MOVE D0,256(A0)
SPKLNFND: SUBQ.W #2,A0
          SUBQ.W #2,D1
          CMP.W #28,D1
          BCC.S SPKLFLP
NSPARKLER:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PARTER

PARTER:   CMP.W #1,SKCNTR
          BNE.L NPART
          TST DOH
          BNE PUSTULE
          TST.B TADIRN
          BEQ.L NPART
          BMI.L TCLOSE
          ADDQ.L #2,HEI+140
          SUBQ.W #1,Y+18
          BPL.L NPART
          MOVE.B #-1,TADIRN
          CLR XDRCT
          MOVE #1,YDRCT
          MOVE #7,Y
          BRA BADGEN
PUSTULE:  MOVEQ #0,D0
          MOVE.B TADIRN,D0
          TST.B D0
          BEQ NPART
          ADD.B D0,SRCE+260+3
          ADDQ.B #1,TACNTR
          CMP.B #3,TACNTR
          BEQ PUSBAD
          CMP.B #6,TACNTR
          BNE NPART
          MOVE #-1,C+18
          CLR.B TADIRN
          BRA NPART
PUSBAD:   NEG.B TADIRN
          MOVE BADMAX,D0
          CMP BADNO,D0
          BLE NPART
          MOVE PXD,XDRCT
          MOVE PYD,YDRCT
          MOVE X+18,D0
          ADD PXD,D0
          ADD PXD,D0
          MOVE D0,X+18
          MOVE Y+18,D0
          ADD PYD,D0
          ADD PYD,D0
          MOVE D0,Y
BADGEN:   MOVE.L #X+64,A1
          MOVE.L #SRCE+224,A2
          MOVE.B #8,CNTR
BADSLP:   CMP.W #0,256(A1)
          BMI.S BADST
          ADDQ.L #2,A1
          ADDQ.L #4,A2
          SUBQ.B #1,CNTR
          BNE.S BADSLP
          BRA.L TCLOSE
BADST:    MOVE #64,D0
          SUB.B CNTR,D0
          MOVE X+18,(A1)
          MOVE D0,C-X(A1)
          MOVE Y,Y-X(A1)
          MOVE XDRCT,XDRCT-X(A1)
          MOVE YDRCT,YDRCT-X(A1)
          MOVE #-1,ANGLE-X(A1)
          ADDQ #1,BADNO
          BSR RANDSUB
          AND BADAND,D0
          ADD BADPLUS,D0
          MOVE D0,BADTYPE
          MOVE D0,XCALC-X(A1)
          CMP #7,D0
          BNE NBONST

27C35:

BEQ.S INPT
CMP.B #13,D0
BEQ.S NHENT
MOVE

28108:

BSR.L prnt
MOVE

28AC0:

     IVES,D0
MOVE

28D30:

         ,A0
LEA OGRID,A1
GDT HB

29206:

          DBRA D1,COPLP2
          MOVE.B round+6,11(A0,D0.W)
          MOVE.B round+7,12(A0,D0.W)
          ADD #17,D0
          MOVE.B #32,(A0,D0.W)
          MOVE.B #32,1(A0,D0.W)
          MOVE.B #32,2(A0,D0.W)
          MOVE.L #hiscore,A1
          MOVE #4,D1
HISCLP:   MOVE.B (A0,D1.W),(A1,D1.W)
          DBRA D1,HISCLP
          BSR.L HISCPRNT
HIPAST:   MOVE D0,D3
          MOVE.L A0,A3
          MOVE.L #records,A4
          MOVE #0,X
          MOVE #25,Y
          BSR.L ymes
          MOVE.L #hitable,A4
          BSR.L pmes
          TST.B CNTR
          BMI.L NHENT
          MOVE CNTR,D0
          LSL #4,D0
          ADD #105,D0
          MOVE D0,Y
          MOVE #192,X
          MOVE #2,D2
INPT:     BSR.L twvbl
          BSR.L inkey
          TST.B D0
          BEQ.S INPT
          CMP.B #13,D0
          BEQ.S NHENT
          MOVE.L D0,D1
          SWAP D1
          CMP.B #$0E,D1
          BNE.S NDELETE
          CMP #2,D2
          BEQ.S INPT
          SUBQ #8,X
          MOVE #32,D0
          BSR.L textprnt
          SUBQ #8,X
          ADDQ #1,D2
          SUBQ #1,D3
          BRA.S INPT
NDELETE:  TST.B D2
          BMI.S INPT
          CMP.B #32,D0
          BEQ.S INPOK
          AND.L #223,D0
          CMP.B #65,D0
          BCS.S INPT
          CMP.B #91,D0
          BCC.S INPT
INPOK:    MOVE.B D0,(A3,D3.W)
          BSR.L textprnt
          ADDQ.B #1,D3
          SUBQ #1,D2
          BRA.S INPT
NHENT:    LEA gotune,A1
          LEA gotune,A0
          LEA gotune+2,A2
          BSR.L tunest
          MOVE.B #24,TRANS2
          MOVE.B #24,TRANS3
          MOVE #80,D0
          BSR.L twayter
          TST.B PLAYERMAX
          BEQ.S mbwt
          TST.B OLIVES
          BPL.L SWPLAYERS
mbwt:     MOVE #400,CNTR
mbwait:   BSR.L wvbl
          SUBQ #1,CNTR
          BEQ.S RESTART
          TST.B mbut
          BEQ.S mbwait
RESTART:  BRA.L NUGAME
BROUT:    MOVE.L #E13,D7
          BSR son
          CLR.B PRIORITY
          BSR.L INITPHYS
          BSR.L ALLOUT
          MOVE.L #$7F2D0,BACKS+4
          MOVE.L #19,BACKW+4
          MOVE.L #12,BACKH+4
          MOVE.B #40,CNTR
BRLP:     MOVE X+8,D0
          ADD.W BATMOV,D0
          MOVE D0,X+8
          BSR.L wvbl
          MOVE #4,D0
          BSR.L replace
          MOVE #8,D0
          BSR.L prnt
          MOVE #13,D0
          BSR prnt
          MOVE #4,D0
          BSR.L prnt
          MOVE #1,D0
          BSR.L replace
          CMP #-30,X+8
          BLT BRFIN
          CMP #220,X+8
          BLT.S BRLP
BRFIN:    MOVE #100,CNTR
BRSC:     MOVE.L #player1 +3,A0
          BSR.L score
          BSR.L SCOREPRNT
          SUBQ #1,CNTR
          BNE.S BRSC
          BSR.L wvbl
NUSC:     BSR.L INITPHYS
          MOVE.L #round+7,A0
          BSR.L score
          MOVE SCREEN,D1
          AND #254,D1
          MOVEQ #5,D0
          SUB BATMOV,D0
          LSR #1,D0
          ADD D0,D1
          MOVE D1,SCREEN
          BRA.L NUSCREEN
LAST:     TST.B LASTHIT
          BPL NTOUT
          CMP #2,DOH
          BEQ ATLAST
          BPL ENDSTORY
          TST.W C+2
          BMI B1OUT
          BRA NTOUT
B1OUT:    BSR ALLOUT
          MOVE.L #EFADE,D7,D0
EPRLP2:   BSR.L prnt
          ADDQ #1,D0
          DBRA D1,EPRLP2
NSPKPRT:  BSR KEYS
BOTWAIT:  TST SYNC
          BEQ BOTWAIT
          BSR SETSCRN
          BSR.L wvbl2
          BSR SWAPSCRN
          TST.B SCORFLG
          BEQ.S NSCPR
          BSR.L SCOREPRNT
NSCPR:    TST.B BREK
          BEQ.S NTOUT2
          MOVE.W #1,BATMOV
          MOVE XMAX,D0
          ADDQ #8,D0
          CMP X+8,D0
          BCS.L BROUT
          NEG BATMOV
          CMP #12,X+8
          BCS BROUT
NTOUT2:   TST DOH
          BNE LAST
NTOUT:    TST DECIDE
          BEQ NDECIDE
          SUBQ #1,DECIDE
          BNE NDECIDE
          MOVE #1,BATMOV
          CMP #90,X+8
          BCC BROUT
          NEG BATMOV
          BRA BROUT
NDECIDE:  TST FIN
          BNE END
          TST.B BALLS
          BGT.L MLOOP
          MOVE.L #-1,BACKS+208
          MOVE.L #-1,BACKCOP+208
          MOVE.L #E7,D7
          BSR.L son
          BSR.L ALLOUT
          BSR.L INITPHYS
          TST DOH
          BEQ NLASTDEED
          MOVE PURPLE,PALREG+20
NLASTDEED:BSR.L NORMBAT
          MOVE.L #$68880,SRCE+4
          MOVE.L #$68890,MASK+4
          SUBQ #2,Y+8
          MOVE.L #14,HEI+4
          MOVE.L #4,D1
DISAPPEAR:MOVE #4,D0
          BSR.L prnt
          MOVE.W #5,D0
          BSR.L wayter
          MOVE.L SRCE+4,D0
          ADD.L #$8C0,D0
          MOVE.L D0,SRCE+4
          ADD.L #$10,D0
          MOVE.L D0,MASK+4
          MOVE #4,D0
          BSR.L replace
          DBRA D1,DISAPPEAR
          SUBQ.B #1,LIVES
          BMI.L DEED
          LEA REBCNTR,A0
          MOVE #31,D0
SREAPLP:  TST.W (A0)
          BMI.S SREAPNXT
          MOVE.L 128(A0),A6
          MOVE.L #-1,128(A0)
          MOVE.L #-1,(A0)
          MOVE.B REAPHITS,(A6)
          MOVEM.L A0-A6/D0-D7,-(SP)
          BSR REAPRNT
          MOVEM.L (SP)+,A0-A6/D0-D7
SREAPNXT: ADDQ #4,A0
          DBRA D0,SREAPLP
          LEA X+48,A1
MOVREPLP: MOVE 256(A1),D0
          BMI MOVRNXT
          MOVE D0,C
          ADD #128,D0
          MOVE XCALC-X(A1),X
          MOVE YCALC-X(A1),Y
          BSR GRIDDLE
          MOVE.B D0,(A6)
MOVRNXT:  ADDQ #2,A1
          CMP.L #X+64,A1
          BNE MOVREPLP
          TST.B PLAYERMAX
          BEQ.L NUMAN
SWPLAYERS:TST.B OLIVES
          BMI.L NUMAN
          MOVE.B LIVES,D0
          MOVE.B OLIVES,LIVES
          MOVE.B D0,OLIVES
          MOVE SCREEN,D0
          MOVE OSCREEN,SCREEN
          MOVE D0,OSCREEN
          MOVE.B round+6,D0
          MOVE.B Oround,round+6
          MOVE.B D0,Oround
          MOVE.B round+7,D0
          MOVE.B Oround+1,round+7
          MOVE.B D0,Oround+1
          MOVE.B OXTR,D0
          MOVE.B XTR,OXTR
          MOVE.B D0,XTR
          MOVE.B LASTHIT,D0
          MOVE.B OLASTHIT,LASTHIT
          MOVE.B D0,OLASTHIT
          MOVE #4,D1
          LEA player1,A0
          LEA player2,A1
SCTRNS:   MOVE.B (A0),D0
          MOVE.B (A1),(A0)+
          MOVE.B D0,(A1)+
          DBRA D1,SCTRNS
          BSR INITPHYS
          EOR.W #31,PLAYERY
          MOVE #127,D1
          LEA GRID,A0
          LEA OGRID,A1
GDTRNS:   MOVE.L (A0),D0
          MOVE.L (A1),(A0)+
          MOVE.L D0,(A1)+
          DBRA D1,GDTRNS
          ADDQ.B #1,FIRST
          BEQ.L NUSCREEN1
          CMP #66,SCREEN
          BPL NUSCREEN1
          MOVE.B #1,FIRST
          BRA.L NUPLAY
DEED:     MOVE.L #gameover,A4
          MOVE #76,X
          MOVE #152,Y
          CLR.B TEXTMSK
          BSR.L pmes
          MOVE.L #50,D0
          BSR.L wayter
          LEA hituneB,A0
          LEA hitune,A1
          LEA hitune,A2
          BSR.L tunest
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
HISCORE

LASTJN:   BSR.L clrplay
          MOVE.B #1,TEXTMSK
          LEA hitable+8,A0
          LEA player1,A1
          CLR.W CNTR
SCPOS:    MOVE CNTR,D0
          ASL #5,D0
          CLR.W D1
SCMP:     MOVE.B (A0,D0.W),D2
          CMP.B (A1,D1.W),D2
          BEQ.S SCMPNXT
          BCC.S SCPNXT
          BRA.S COPLP
SCMPNXT:  ADDQ #1,D0
          ADDQ #1,D1
          CMP #5,D1
          BNE.S SCMP
SCPNXT:   ADDQ #1,CNTR
          CMP #5,CNTR
          BCS.S SCPOS
          MOVE #-1,CNTR
          BRA.L HIPAST
COPLP:    LEA hitable+104,A2
          MOVE.W #3,D0
          SUB CNTR,D0
          BMI.S COPPER
COPLP4:   MOVE #18,D1
COPLP3:   MOVE.B (A2,D1.W),32(A2,D1.W)
          DBRA D1,COPLP3
          SUB.L #32,A2
          DBRA D0,COPLP4
COPPER:   MOVE CNTR,D0
          ASL #5,D0
          MOVE #4,D1
          ADDQ #4,D0
COPLP2:   MOVE.B (A1,D1.W),(A0,D0.W)
          SUBQ #1,D(-

2D45D:

   Q #2,A0
DBRA D0,TENT

2EC96:

            Q #2,A0
          DBRA D0,TENTSET
          MOVE.L (SP)+,PHYS
          MOVE #68,SCREEN
          BRA NUSCREEN
ENDSTORY: BSR TUNOFF
          BSR ALLOUT
          MOVE #5,D0
          BSR REPLACE
          BSR SETSCRN
          CLR PALREG+20
          MOVE #81,C+10
          ADDQ #6,Y+10
          ADDQ #3,X+10
          MOVE.L #$3DB80,SRCE+324
          MOVE.L #EWAH,D7
          BSR SON
          MOVE #3,D1
SHRINKA:  ADD.L #$10,SRCE+324
MOVE #5,D0
          BSR PRNT
          MOVE #10,D0
          BSR WAYTER
          DBRA D1,SHRINKA
          MOVE #5,D0
          BSR REPLACE
          MOVE #10,D0
          BSR WAYTER
          BSR.L INITPHYS
          BSR DARK
          BSR.L transfer
          BSR.L CZERO
          MOVE.B #1,SUPERUSER
          BSR BLUESHIP
          BSR.L SCOREPRNT
          BSR.L HISCPRNT
          LEA hituneB,A0
          LEA hitune,A1
          LEA hitune,A2
          BSR tunest
          MOVE.L #$78000,A0
          MOVE.L #$70000,A1
          MOVE #$1F40,D0
SHBK:     MOVE.L (A0)+,(A1)+
          DBRA D0,SHBK
          CLR CNTR
          MOVE.L #$69058,SRCE+328
          MOVE #82,C+2
          MOVE #98,X+2
          MOVE #151,Y+2
          MOVE #83,C
          MOVE #134,X
          MOVE #60,Y
          MOVE.L #$6BB98,SRCE+332
LASTALP:  BSR WVBL
          MOVE #0,D0
          BSR REPLACE
          MOVE CNTR,D0
          AND #7,D0
          BNE NHCLOSE
          CMP #38,CNTR
          BMI NHOPEN
          CMP #58,CNTR
          BPL NHOPEN
          ADD.L #$780,SRCE+328
          MOVE #1,D

2F898:

          BSR SON
          MOVE #$467,COL5
          MOVE #$007,COL12
          MOVE #$345,COL13
          MOVE #$004,COL14
          CLR PALREG+20; RING BLACK
          MOVE #3,INTON
          MOVE #$777,D0
BRFADE:   MOVE.L #COL5,A0
          MOVE #3,D1
BRFADE1:  MOVE D0,(A0)
          BSR WVBL
          BSR WVBL
          BSR WVBL
          ADDQ #2,A0
          DBRA D1,BRFADE1
          SUB #$111,D0
          BPL BRFADE
          MOVE.L PHYS,-(SP)
          MOVE #69,C
          MOVE #54,Y
          MOVE #70,X
          BSR PRNT0
          BSR SWAPSCRN
          BSR PRNT0
          MOVE.L #$70000,PHYS
          BSR PRNT0
          MOVE.L (SP)+,PHYS
          MOVE #70,C+2
          MOVE #68,Y+2
          MOVE #96,X+2
          MOVE.B #-1,LASTHIT
          CLR BADMAX
          CLR BADNO
          CLR INTON
          BSR SETSCRN
          MOVE #30,D0
          LEA C+10,A0
          MOVE.L #-1,D1
BSLP:     MOVE.L D1,(A0)+
          DBRA D0,BSLP
          BSR BREKSTART
          MOVE #1,D0
          BSR PRNT
          MOVE #20,D0
          BSR WAYTER
          MOVE PURPLE,PALREG+20
          MOVE #20,D0
          BSR WAYTER
          CLR CNTR
          BSR SWAPSCRN
BRAINLP:  BSR REPCOPY
          BSR BAT
          MOVE #1,D0
          BSR REPLACE
          MOVE #1,D0
          BSR PRNT
          MOVE #4,D0
          BSR REPLACE
          MOVE #4,D0
          BSR PRNT
          BSR WVBL
          BSR SETSCRN
          BSR WVBL
          BSR SWAPSCRN
          ADDQ #1,CNTR
          MOVE CNTR,D0
          LSR #2,D0
          SUB D0,Y+2
          BPL BRAINLP
          MOVE #1,D0
          BSR REPLACE
          BSR REPCOPY
          MOVE #1,D0
          BSR REPLACE
          MOVE #-1,C+2
          CLR DOH
          BRA NTOUT
ATLAST:   MOVE.L #$3CBA0,SRCE+184
          MOVE.L PHYS,-(SP)
          BSR.L ALLOUT
          MOVE.L #$78000,PHYS
          Bsr setscrn
          MOVE.L #E12,D7
          BSR.L son
          MOVE #56,CNTR
          MOVE.L #$38030,SRCE+188
          MOVE #47,C
          MOVE #68,X
          MOVE #28,Y
DERES:    BSR.L prnt0
          ADD.L #$140,SRCE+188
          ADDQ #2,Y
          BSR.L wvbl
          SUBQ #1,CNTR
          BNE.S DERES
          MOVE #$777,CNTR
FADER:    MOVE CNTR,D0
          MOVE D0,PALREG+20
          MOVE #4,D0
          BSR.L wayter
          SUB #$111,CNTR
          BPL.S FADER
          MOVE.L #$70000,PHYS
          BSR SCLR
          MOVE.L #$78000,PHYS
          MOVE #79,C
          MOVE #40,Y
          MOVE #85,X
          BSR PRNT0
          MOVE #90,X
          BSR PRNT0
          MOVE #$705,PURPLE
          MOVE #$705,PALREG+20
          MOVE.L #$78000,A0
          MOVE.L #$70000,A1
          MOVE.L #$40000,A2
          MOVE #$1F40,D0
DBBLP:    MOVE.L (A0),(A1)+
          MOVE.L (A0)+,(A2)+
          DBRA D0,DBBLP
          MOVE #3,DOH
          MOVE.L #gridmap+$4C80,A0
          MOVE.L #GRID+16,A1
          MOVE.L #71,D0
SCRSLP2:  MOVE.L (A0)+,(A1)+
          DBRA D0,SCRSLP2
          MOVE.L #C+12,A0
          MOVE #59,D0
ZERLOP:   MOVE #-1,(A0)+
          DBRA D0,ZERLOP
          MOVE.L #X+32,A0
          MOVE #19,D0
TENTSET:  MOVE #-1,C-X(A0)
          MOVE #2,YDRCT-X(A0)
          ADD

5034F:

OR.B #$20,D0
CMP.B #$29,D0 
; TAB TO END
; BEQ.L end
CMP.B #$73,D0
BNE

517A1:

          CMP.B #32,D0
          BNE NPAUSE
PAUSEON:  BSR inkey
          MOVE D0,PRESS
          CMP.B #32,D0
          BEQ PAUSEON
PAUSEOFF: TST.B MBUT
          BEQ PAUSEOFF
          MOVE X+8,D0
          SUB #9,D0
          MOVE D0,mpos
          MOVE #2,SYNC
          BRA NOKEYS
NPAUSE:   TST.B SUPERUSER
          BEQ NOKEYS
          OR.B #$20,D0
          CMP.B #$29,D0 
          ; TAB TO END
          ; BEQ.L end
          CMP.B #$73,D0
          BNE NOKEYS
          CMP #2,DOH
          BGE NOKEYS
          BSR BREKSTART
NOKEYS:   RTS
T:        BSR LOADALL
          BRA START
LOADALL:  MOVE.L #F1,A0
          BSR.S LOAD
          MOVE.L #F2,A0
          BSR.S LOAD
          MOVE.L #F3,A0
          BSR.S LOAD
          MOVE.L #F4,A0
          BSR.S LOAD
          MOVE.L #F5,A0
          BSR.S LOAD
          MOVE.L #F6,A0
          BSR.S LOAD
          MOVE.L #F7,A0
          BSR.S LOAD
          MOVE.L #F8,A0
          BSR.S LOAD
          MOVE.L #F9,A0
          BSR.S LOAD
          MOVE.L #F10,A0
          BSR.S LOAD
          BSR BLAKGHOST
          MOVE.L BLACKG,BLACKGC

(Source: ggn (D-Bug forums), Divingkataetheweirdo)