TOP1:     EQU     0100H
TOP2:     EQU     09F7H
TOP3:     EQU     1032H
STAGE2:   EQU     1A61H
WSCORE:   EQU     31C7H
MAIN:     EQU     TOP1+0056H
JPTUCH:   EQU     TOP1+0338H
MOVE:     EQU     TOP1+05DEH
RTURN:    EQU     TOP1+0603H
DSET:     EQU     TOP1+064BH
CLSPRI:   EQU     TOP1+068FH
UNFADE:   EQU     TOP1+070AH
FADE:     EQU     TOP1+072FH
SCROLL:   EQU     TOP1+07D2H
SCOLOR:   EQU     TOP1+07D4H
SWHICH:   EQU     TOP1+07D6H
CONTRT:   EQU     TOP1+07D7H
STOCK:    EQU     TOP1+07DCH
SCORE:    EQU     TOP1+07DDH
MASTER:   EQU     TOP1+07E7H
PORIDAT:  EQU     TOP1+07F7H
MHYOUJ:   EQU     TOP2+0000H
MSDATA:   EQU     TOP2+04F8H
STRIG:    EQU     TOP3+0000H
DEAD:     EQU     TOP3+004CH
TUCH0:    EQU     TOP3+00A3H
TUCH1:    EQU     TOP3+00A4H
TUCH2:    EQU     TOP3+00B9H
TUCH3:    EQU     TOP3+00D5H
TUCH4:    EQU     TOP3+00EBH
MSSTR:    EQU     TOP3+00FBH
TURBO:    EQU     TOP3+0167H
CURE:     EQU     TOP3+01CFH
TECHNO:   EQU     TOP3+029FH
TUCH5:    EQU     TOP3+02E3H
PARTY:    EQU     TOP3+035BH
TUCH6:    EQU     TOP3+039CH
RND:      EQU     TOP3+03BDH
HOME:     EQU     TOP3+03CDH
          ORG     1450H
;
;---- STAGE DATA ----
;
TITLE:    LD      IX,SCOLOR
          LD      A,2
          LD      (IX+0),A
          LD      A,1
          LD      (IX+1),A
          LD      A,00001001B
          LD      (IX+2),A
          ;
MENSET:   CALL    CLSPRI
          CALL    UNFADE
          LD      A,4
          CALL    MAIN
          CALL    DSSS   ;MOJI
          DEFW    TOP2+015AH
          DEFB    44,70
          CALL    DSSS
          DEFW    TOP2+0176H
          DEFB    100,70
          CALL    DSSS
          DEFW    TOP2+0193H
          DEFB    156,70
          CALL    DSSS
          DEFW    TOP2+01AFH
          DEFB    212,70
          LD      A,3
          CALL    MAIN
          CALL    DSSS
          DEFW    TOP2+0193H
          DEFB     44,178
          CALL    DSSS
          DEFW    TOP2+01C8H
          DEFB    100,178
          CALL    DSSS
          DEFW    TOP2+01D4H
          DEFB    156,178
          CALL    DSSS
          DEFW    TOP2+01E9H
          DEFB    212,178
          LD      A,77
          CALL    MAIN
          ;
          CALL    DSET
          DEFW    MSDATA,PATER2
          DEFB    128,128,255
          DEFB    0,0,0,3,0
          DEFB    00101000B
          LD      A,34
          CALL    MAIN
          CALL    DSET
          DEFW    MOJI,MJIPAT
          DEFB    3,255,0,2,0,50
          DEFB    50,0,00100101B
          ;
          LD      B,0
LOSTI:    CALL    STRIG
          JP      Z,NEXTGO
          CALL    MAIN
          DJNZ    LOSTI
          CALL    FADE
          LD      A,10
          CALL    MAIN
          JP      WSCORE
          ;
NEXTGO:   CALL    FADE
          LD      A,16
          CALL    MAIN
          JP      STAGE1
          ;
DSSS:     POP     HL
          LD      E,(HL)
          INC     HL
          LD      D,(HL)
          INC     HL
          LD      C,(HL)
          INC     HL
          LD      B,(HL)
          INC     HL
          LD      (DSSD+0),DE
          LD      (DSSD+4),BC
          CALL    DSET
DSSD:     DEFW    0,PATER1,0
          DEFB    250,0,0,16,3,0
          DEFB    001010B
          PUSH    HL
          LD      A,1
          CALL    MAIN
          RET
          ;
MOJI:     DEFB    'P',15,30
          DEFB    'U',30,30
          DEFB    'S',45,30
          DEFB    'H',60,30
          DEFB    'S',90,30
          DEFB    'P',105,30
          DEFB    'A',120,30
          DEFB    'C',135,30
          DEFB    'E',150,30,0
          ;
MJIPAT:   LD      A,(IX+1)
          AND     3
          RLCA
          RLCA
          RLCA
          OR      00100101B
          LD      (IX+15),A
          JP      MHYOUJ
;
;---- PATERN ROUTINE ----
;
PATER1:   LD      A,(IX+1)
          INC     (IX+1)
          CP      8
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-26
          DEFB    0,-4,2
          CP      30
          JR      NC,PJ1
          AND     2
          JR      Z,$+11
          CALL    MOVE
          DEFB    0,4,0
          DEFB    0,0,0
          CALL    MOVE
          DEFB    0,-4,0
          DEFB    0,0,0
PJ1:      CP      66
          JR      NC,$+20
          CALL    RTURN
          DEFB    128,128,128
          DEFB    0,2,0
          CALL    MOVE
          DEFB    0,0,0
          DEFB    0,2,0
          CALL    MOVE
          DEFB    0,0,16
          DEFB    1,2,2
          ;
PATER2:   LD      A,(IX+1)
          INC     (IX+1)
          CP      16
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-10
          DEFB    2,0,0
          JR      NZ,PJ2
          SET     1,(IX+15)
          LD      A,200
          LD      (IX+9),A
          LD      A,16
PJ2:      CP      34
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-8
          DEFB    2,0,0
          CP      70
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,0
          DEFB    0,-1,-1
          CP      120
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,0
          DEFB    0,0,-1
          CP      190
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,0
          DEFB    -1,0,0
          LD      A,34
          LD      (IX+1),A
          JR      PATER2
;
;---- STAGE1 PROGRAM ----
;
STAGE1:   CALL    CLSPRI
          LD      HL,0
          LD      (SCORE),HL
          LD      A,00001000B
          LD      (SWHICH),A
          CALL    DSET
          DEFW    STAGM1,MHYOUJ
          DEFB    11,40,0,0,0,44
          DEFB    0,0,00010101B
          CALL    DSET
          DEFW    STAGM2,MHYOUJ
          DEFB    11,40,0,0,0,40
          DEFB    50,0,00010001B
          CALL    UNFADE
          LD      A,32
          CALL    MAIN
          CALL    FADE
          LD      A,8
          CALL    MAIN
          LD      A,3
          LD      (STOCK),A
          CALL    MSSTR
          ;
CONT:     LD      HL,STAGD1
          LD      DE,SCROLL
          LD      BC,9
          LDIR
          LD      HL,JPDAT1
          LD      DE,JPTUCH
          LD      BC,32
          LDIR
          LD      A,24
          CALL    MAIN
         ;JP      BOSS
          LD      B,192
LOOP:     LD      HL,RETLOP
          PUSH    HL
          CALL    RND
          CP      90
          JP      C,CHARA1
          CP      150
          JP      C,CHARA2
          CP      200
          JP      C,CHARA3
          CP      240
          JP      C,TECHNO
          JP      PARTY
RETLOP:   CALL    TURBO
          CALL    CURE
          LD      A,B
          RLCA
          RLCA
          AND     3
          INC     A
          INC     A
          CALL    MAIN
          DJNZ    LOOP
          ;
          LD      A,(SWHICH)
          AND     11111110B
          LD      (SWHICH),A
          LD      HL,CONT2
          LD      (CONTRT),HL
CONT2:    LD      A,28
          CALL    MAIN
          LD      B,40
LOOP2:    CALL    CHARA3
          CALL    CHARA3
          LD      A,2
          CALL    MAIN
          DJNZ    LOOP2
          LD      B,50
LOOP3:    CALL    CHARA1
          CALL    CHARA1
          CALL    CURE
          CALL    TURBO
          LD      A,2
          CALL    MAIN
          DJNZ    LOOP3
          LD      A,16
          CALL    MAIN
          JP      BOSS
;
; STAGE1 DATA
;
STAGD1:   DEFB    32,5,11,2
          DEFB    01011011B
          DEFW    CONT,DEAD
          ;
JPDAT1:   DEFW    TUCH0,TUCH1
          DEFW    TUCH2,TUCH3
          DEFW    TUCH4,TUCH5
          DEFW    TUCH6,TUCH6
          DEFW    TUCH7,TUCH8
          DEFW    TUCH0,TUCH0
          DEFW    TUCH0,TUCH0
          DEFW    TUCH0,TUCH0
          ;
STAGM1:   DEFB    'Z',60,80
          DEFB    'O',75,80
          DEFB    'N',90,80
          DEFB    'E',105,80
          DEFB    '1',120,80,0
STAGM2:   DEFB    'P',30,80
          DEFB    'L',60,80
          DEFB    'A',90,80
          DEFB    'N',120,80
          DEFB    'E',150,80,0
;
; STAGE 1 -- CHARACTER 1
;
CHARA1:   CALL    RND
          CP      186
          JR      NC,$-5
          ADD     A,38
          LD      (CHARD1+4),A
          CALL    RND
          CP      196
          JR      NC,$-5
          ADD     A,44
          LD      (CHARD1+5),A
          CALL    DSET
CHARD1:   DEFW    CHAPT1,CHAMV1
          DEFB    0,0,250,0,0,0
          DEFB    10,1,00000000B
          RET
          ;
CHAMV1:   CALL    MOVE
          DEFB    0,0,-32,0,0,-2
          ;
CHAPT1:   DEFB    4,0
          DEFB    -32, 18, 18
          DEFB     32, 18, 18
          DEFB      0,-36, 18
          DEFB      0,  0,-36
          DEFB    1,2,3,1,4,2,0
          DEFB    4,3,0,0
;
; STAGE 2 -- CHARACTER 2
;
CHARA2:   CALL    RND
          AND     127
          ADD     A,64
          LD      (CHARD2+4),A
          CALL    RND
          AND     127
          ADD     A,64
          LD      (CHARD2+5),A
          CALL    DSET
CHARD2:   DEFW    CHAPT2,CHAMV2
          DEFB    0,0,255,0,0,0
          DEFB    2,2,00000000B
          RET
          ;
CHAPT2:   DEFB    11,3
          DEFB    -12,-48,-12
          DEFB    -12,-48, 12
          DEFB     12,-48, 12
          DEFB     12,-48,-12
          DEFB    -12, 48,-12
          DEFB    -12, 48, 12
          DEFB     12, 48, 12
          DEFB     12, 48,-12
          DEFB      0, 24,  0
          DEFB      0,-24,  0
          DEFB      0,  0,  0
          DEFB    1,2,3,4,1,5,6
          DEFB    7,8,5,0,4,8,0
          DEFB    3,7,0,2,6,0,0
          ;
CHAMV2:   CALL    MOVE
          DEFB    0,0,-16,2,0,0
;
; STAGE 1 -- CHARACTER 3
;
CHARA3:   CALL    RND
          LD      (CHARD3+4),A
          CALL    RND
          AND     127
          ADD     A,64
          LD      (CHARD3+5),A
          CALL    DSET
CHARD3:   DEFW    CHAPT2,CHAMV3
          DEFB    128,128,255
          DEFB    0,0,0,2,2,00000000B
          RET
          ;
CHAMV3:   LD      A,(IX+9)
          SUB     32
          LD      (IX+9),A
          RET
;
; STAGE 1 -- BOSS
;
BOSSPT:   DEFB    10,0
          DEFB      0,-48, 17
          DEFB      0,-61,  0
          DEFB    -13,-48,  0
          DEFB      0,-35,  0
          DEFB     13,-48,  0
          DEFB      0, 48, 17
          DEFB      0, 61,  0
          DEFB    -13, 48,  0
          DEFB      0, 35,  0
          DEFB     13, 48,  0
          DEFB    2,3,4,5,2,0,2,1,4,0
          DEFB    3,1,5,0,7,8,9,10,7,0
          DEFB    7,6,9,0,8,6,10,0,0
          ;
BOSMV1:   LD      A,(PORIDAT)
          OR      A
          JR      Z,ENDMV1
          LD      A,(IX+1)
          INC     (IX+1)
          CP      16
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-8,2,0,0
          CP      32
          JR      NC,$+11
          CALL    MOVE
          DEFB    -4,0,0,0,0,0
          CP      64
          JR      NC,$+11
          CALL    MOVE
          DEFB    4,0,0,0,2,0
          CP      80
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-4,0,0,0
          CP      112
          JR      NC,$+11
          CALL    MOVE
          DEFB    -4,0,0,0,-2,0
          CP      144
          JR      NC,$+11
          CALL    MOVE
          DEFB    2,0,6,1,-2,0
          XOR     A
          LD      (IX+1),A
          JR      BOSMV1
ENDMV1:   XOR     A
          LD      (IX+0),A
          RET
          ;
BOSMV2:   LD      A,(PORIDAT)
          OR      A
          JR      Z,ENDMV2
          LD      A,(IX+1)
          INC     (IX+1)
          CP      16
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-8,0,0,2
          CP      32
          JR      NC,$+11
          CALL    MOVE
          DEFB    -4,0,0,0,0,3
          CP      64
          JR      NC,$+11
          CALL    MOVE
          DEFB    4,0,0,0,0,0
          CP      80
          JR      NC,$+11
          CALL    MOVE
          DEFB    0,0,-4,0,0,-3
          CP      112
          JR      NC,$+11
          CALL    MOVE
          DEFB    -4,0,0,0,0,1
          CP      144
          JR      NC,$+11
          CALL    MOVE
          DEFB    2,0,6,-1,0,2
          XOR     A
          LD      (IX+1),A
          JR      BOSMV2
ENDMV2:   XOR     A
          LD      (IX+0),A
          RET
          ;
BOSS:     CALL    DSET
          DEFW    ATACKM,MHYOUJ
          DEFB    9,16,1,1,0
          DEFB    68,80,0,00100101B
          LD      A,17
          CALL    MAIN
          CALL    CLSPRI
          CALL    DSET
          DEFW    COREPT,BOSMV2
          DEFB    128,128,230
          DEFB    0,0,0,9,9,00000000B
          CALL    DSET
          DEFW    BOSSPT,BOSMV1
          DEFB    128,128,230
          DEFB    0,0,0,5,8,00000000B
          CALL    DSET
          DEFW    BOSSPT,BOSMV2
          DEFB    128,128,230
          DEFB    8,0,0,5,8,00000000B
LOOP8:    LD      A,1
          CALL    MAIN
          LD      A,(PORIDAT)
          OR      A
          JR      NZ,LOOP8
          LD      HL,HOME
          LD      (MASTER+5),HL
LOOP9:    LD      A,1
          CALL    MAIN
          LD      A,(MASTER+1)
          OR      A
          JR      NZ,LOOP9
          ;
          CALL    DSET
          DEFW    STAGM1,MHYOUJ
          DEFB    10,24,0,0,0,38,8
          DEFB    0,00000101B
          CALL    DSET
          DEFW    CLEARM,MHYOUJ
          DEFB    10,24,0,0,0,38,134
          DEFB    0,00000101B
          LD      A,28
          CALL    MAIN
          CALL    DSET
          DEFW    BONUSM,MHYOUJ
          DEFB    10,24,0,0,0,0,55
          DEFB    0,00000101B
          CALL    DSET
          DEFW    SCOREM,MHYOUJ
          DEFB    10,24,0,0,0,8,80
          DEFB    0,00010101B
          LD      HL,(SCORE)
          LD      DE,1000
          ADD     HL,DE
          JR      NC,$+5
          LD      HL,65535
          LD      (SCORE),HL
          LD      A,(STOCK)
          INC     A
          CP      10
          JR      C,$+4
          LD      A,9
          LD      (STOCK),A
          LD      A,30
          CALL    MAIN
          CALL    FADE
          LD      A,24
          CALL    MAIN
          JP      STAGE2
          ;
TUCH7:    CALL    TUCH2
          LD      A,(MASTER+9)
          XOR     127
          ADD     A,17
          LD      (MASTER+9),A
          RET
          ;
TUCH8:    LD      A,64
          LD      (MASTER+8),A
          LD      A,(IX+13)
          CP      9
          JR      NZ,$+8
          LD      A,8
          LD      (IX+13),A
          RET
          CP      8
          JR      NZ,$+8
          LD      A,6
          LD      (IX+13),A
          RET
          XOR     A
          LD      (IX+0),A
          RET
          ;
COREPT:   DEFB    6,0
          DEFB      0,-24,  0
          DEFB      0, 24,  0
          DEFB      0,  0,-13
          DEFB    -14,  0,  0
          DEFB      0,  0, 13
          DEFB     13,  0,  0
          DEFB    1,4,2,6,1,0,5,4,3,6,5,0
          DEFB    1,3,2,5,1,0,0
          ;
ATACKM:   DEFB    'A',20,0, 'T',40,0,  'A',60,0,  'C',80,0,  'K',100,0,0
CLEARM:   DEFB    'C',60,30,'L',75,30, 'E',90,30, 'A',105,30,'R',120,30,0
BONUSM:   DEFB    'B',88,30,'O',108,30,'N',128,30,'U',148,30,'S',168,30,0
SCOREM:   DEFB    '1',98,60,'0',113,60,'0',128,60,'0',142,60
          DEFB    '1',98,90,'U',113,90,'P',128,90,0
          ;
END:      EQU     $
