We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Arkanoid II: Revenge of DOH (Atari ST)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Arkanoid: Revenge of DOH

Developer: Imagine
Publisher: Imagine
Platform: Atari ST
Released in EU: 1988


SourceIcon.png This game has uncompiled source code.


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)