;z80
;assembler
;zx-spectrum

        ORG     #C000,#01
        INCBIN  "instr.C"
        ORG     #C000,#03
        INCBIN  "schl_1.C"
        ORG     #C000,#04
        INCBIN  "scrn.C"
        ORG     #C000,#06
        INCBIN  "mus1.C"
        ORG     #C000,#07
        INCBIN  "mus2.C"


        ORG     #6300

        INCLUDE "INSTALL.H",#15

START   XOR     A
        LD      (MUS+1),A
START2  XOR     A
        LD      (TYME+1),A
        LD      (FURE1+1),A
        LD      (SEL_LEV),A
        LD      (FLAG+1),A
        LD      (STR+1),A
        LD      (STP+1),A
        LD      (FCHECK6+1),A
        LD      (MUS2+1),A
        INC     A
        LD      (SCROL+1),A
        LD      (STS_1+1),A
        INC     A
        LD      (VIV_F+1),A
        LD      HL,BUFER7+336-48
        LD      (MASK+1),HL
        LD      HL,BUFER2+336-48
        LD      (CH_SPR+1),HL
        CALL    INT_OFF
        CALL    STIR
        LD      HL,SCREEN
        CALL    DECOM
        CALL    LIEW
        XOR     A
        CALL    INIT_M
        CALL    INT_ON
        LD      HL,TEXT
        CALL    IN_SP
        LD      HL,TXT1
        CALL    IN_SP
        LD      HL,TXT2
        CALL    IN_SP
        LD      HL,TXT3
        CALL    IN_SP
        LD      HL,TXT4
        CALL    IN_SP
        CALL    SELECT
        CALL    SCOR_IN
STARL   CALL    STIR
        CALL    INT_OFF
        XOR     A
        LD      (STR+1),A
        LD      (STP+1),A
        LD      (FCHECK6+1),A
        LD      (MUS2+1),A
        LD      (FLAG+1),A
        INC     A
        LD      (SCROL+1),A
        LD      (STS_1+1),A
        INC     A
        LD      (VIV_F+1),A
        LD      HL,BUFER7+336-48
        LD      (MASK+1),HL
        LD      HL,BUFER2+336-48
        LD      (CH_SPR+1),HL
        LD      A,#C9
        LD      (CLS_SC1),A
        CALL    CLS_SCR
        LD      A,#21
        LD      (CLS_SC1),A
        LD      A,20
        CALL    PAGE
        LD      HL,SCR_LEV
        CALL    DECOM
        LD      A,16
        CALL    PAGE
        LD      A,#C9
        LD      (ADRIB),A
        LD      A,(SEL_LEV)
        INC     A
        LD      B,A
        LD      HL,NUM_LEV
        LD      DE,72
        ADD     HL,DE
        DJNZ    $-1
        OR      A
        SBC     HL,DE
        LD      BC,#0303
        LD      DE,20483
        CALL    SPR_OUT
        LD      A,#3E
        LD      (ADRIB),A
        CALL    LIEW
KLR2    XOR     A               ;NZ-esli klawia navata
        IN      A,(254)
        CPL 
        AND     31
        JR      Z,KLR2
        CALL    STIR
        CALL    CLS_SCR
        CALL    INST_I
        CALL    R_EASY
        LD      HL,POL_S1
        LD      DE,16404
        LD      BC,#140C
        CALL    SAD_OUT
        LD      HL,SPR_5_5+2925
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        LD      HL,POL_S2
        LD      DE,#5080
        LD      BC,#0120
        PUSH    HL
        PUSH    BC
        CALL    SAD_OUT
        POP     BC
        POP     HL
        LD      DE,#50E0
        CALL    SAD_OUT
        CALL    WYWOD
        CALL    WIEV_S
        CALL    IN_STR
        XOR     A
        LD      (VIV_F+1),A
        INC     A
        LD      (FLAG+1),A
        LD      HL,BUF_T
        CALL    PRN_CLK
        LD      HL,SCOR_WR
        CALL    PRN_CLK
        LD      HL,SCOR_YA
        CALL    PRN_CLK
        LD      A,(SEL_LEV)
        INC     A
        CALL    INIT_M
        CALL    INT_ON
STR1    EI 
STR     LD      A,0
        HALT 
        INC     A
        JP      NZ,STRDOM
        LD      A,1
        LD      (VIV_F+1),A
        LD      HL,SPR_5_5+2700
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        EI 
        HALT 
STS_1   LD      A,1
        DEC     A
        JR      Z,STS
        LD      (STS_1+1),A
        JR      STS_1-2
STS     LD      HL,SPACE
        CALL    PRINT
        LD      A,1
        LD      (STS_1+1),A
        LD      A,(INT3+1)
        PUSH    AF
        LD      A,16
        LD      (INT3+1),A
        CALL    DUM
        POP     AF
        LD      (INT3+1),A
        CALL    WYWOD
        CALL    F_CHECK
        LD      A,(STS_1+1)
STS_3   DEC     A
        JR      Z,STS_2
        EI 
        HALT 
        JR      STS_3
STS_2   LD      HL,SPACE
        CALL    PRINT
        LD      A,1
        LD      (STS_1+1),A
        LD      HL,SPR_5_5+2925
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        CALL    SOHR
        LD      A,10
        LD      (KEY+1),A
        XOR     A
        LD      (VIV_F+1),A
        LD      (GAME+1),A
        LD      (STR+1),A
        INC     A
STRDOM  DEC     A
        JP      Z,STR1
        DEC     A
        JP      Z,STR3
        DEC     A
        JP      Z,AUTO1
        DEC     A
        JR      Z,PROST
        DEC     A
        JR      Z,CRED

;       JR      STR3
        JP      INT_OFF
PROST   LD      A,(WYW_3)
        XOR     #AF
        LD      (WYW_3),A
        CALL    WYWOD
        LD      A,(FURE1+1)
        OR      A
        LD      HL,SPR_5_5+2925
        JR      Z,PROST1
        LD      HL,SPR_5_5+3600
PROST1  LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        XOR     A
        LD      (STR+1),A
        JP      STR1

CRED    CALL    STIR
        LD      A,23
        CALL    PAGE
        LD      HL,CREDIT
        CALL    DECOM
        LD      A,16
        CALL    PAGE
        CALL    LIEW
CRED1   EI 
        HALT 
        XOR     A
        IN      A,(#FE)
        CPL 
        AND     31
        JR      NZ,CRED2
        LD      HL,(KEYS+1)
        LD      DE,KEMPST
        OR      A
        SBC     HL,DE
        LD      A,H
        OR      L
        JR      NZ,CRED1
        IN      A,(#1F)
        AND     31
        JR      Z,CRED1
CRED2   CALL    STIR
        LD      A,#C9
        LD      (CLS_SC1),A
        CALL    CLS_SCR
        LD      A,#21
        LD      (CLS_SC1),A
        CALL    WYWOD
        LD      HL,POL_S1
        LD      DE,16404
        LD      BC,#140C
        CALL    SAD_OUT
        LD      HL,BUF_T
        CALL    PRN_CLK
        LD      HL,SCOR_WR
        CALL    PRN_CLK
        LD      HL,SCOR_YA
        CALL    PRN_CLK
        LD      HL,SPR_5_5+2925
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        LD      HL,POL_S2
        LD      DE,#5080
        LD      BC,#0120
        CALL    SAD_OUT
        LD      HL,POL_S3
        LD      DE,#50A0
        LD      BC,#0220
        CALL    SAD_OUT
        LD      HL,#50E0
        LD      B,8
CRD_EK2 PUSH    HL
        LD      C,32
CRD_EK1 LD      (HL),0
        INC     L
        DEC     C
        JR      NZ,CRD_EK1
        POP     HL
        CALL    DPIX_HL
        DJNZ    CRD_EK2
        LD      HL,#5AE0
        LD      DE,#5AE1
        LD      BC,31
        LD      (HL),7
        LDIR 
        LD      A,10
        LD      (FLAG+1),A
        LD      (KEY+1),A
        XOR     A
        LD      (STR+1),A
        JP      STR1

START1  LD      A,1
        LD      (STR+1),A
        RET 
STR3    XOR     A
        LD      (FLAG+1),A
STP2    LD      A,0
        CALL    INIT_M
        XOR     A
        LD      (XREN),A
        CALL    WYWOD
        LD      A,#AF
        LD      (XREN),A
STP     LD      BC,0
STP1    EI 
        HALT 
        DEC     BC
        LD      A,B
        OR      C
        JR      NZ,STP1
        LD      A,(STP+2)
        CP      3
        JR      Z,STPL
        LD      A,(SEL_LEV)
        INC     A
        LD      (SEL_LEV),A
        CP      3
        JR      NC,STPL
        LD      A,(STP3+1)
        LD      (MUS+1),A
        JP      STARL
STPL    CALL    STIR
        CALL    SAD
        CALL    INT_ON
        CALL    WWOD_HI
STP3    LD      A,0
        LD      (MUS+1),A
        JP      START2

AUTO1   LD      IX,TAB_K
        LD      A,1
        LD      (AUTO4+1),A
        LD      B,12
AUTO5   LD      A,(IX+0)
        OR      A
        JR      Z,AUTO2
        DEC     A
        LD      (IX+0),A
AUTO3   CALL    RND
        LD      A,L
        RRA 
        CP      40
        JR      NC,$-3
        LD      E,A
        LD      D,0
        LD      HL,BUF_I+60
        ADD     HL,DE
        LD      A,(HL)
        CP      19
        JR      NZ,AUTO3
AUTO4   LD      A,0
        LD      (HL),A
        JR      AUTO5
AUTO2   LD      HL,AUTO4+1
        INC     (HL)
        INC     IX
        DJNZ    AUTO5
        CALL    WYWOD
        LD      A,#FF
        LD      (KEY+1),A
        XOR     A
        LD      (STR+1),A
        EI 
        HALT 
        JP      STR1
RND     LD      HL,0
        LD      A,R
        XOR     H
        LD      E,A
        AND     %00111111
        LD      D,A
        LD      A,(DE)
        XOR     L
        LD      H,A
        XOR     E
        RRCA 
        LD      L,A
        LD      (RND+1),HL
        RET 

SAD     CALL    INT_OFF
        LD      A,20
        CALL    PAGE
        LD      HL,SADDAM
        CALL    DECOM
        LD      A,(STP+2)
        CP      3
        JR      Z,GO
        LD      A,#C9
        LD      (ADRIB),A
        LD      HL,SPR_SAD
GO1     LD      BC,#0209
        LD      DE,20544
        CALL    SPR_OUT
        LD      A,#3E
        LD      (ADRIB),A
        JR      SAD_0
GO      LD      A,#C9
        LD      (ADRIB),A
        LD      HL,SPR_SAD+144
        JR      GO1
SAD_0   CALL    LIEW
        LD      A,19
        CALL    PAGE
SAD_4   LD      HL,49152
        LD      B,30
SAD_3   PUSH    HL
        PUSH    BC
        LD      BC,#0A06
        LD      DE,16553
        CALL    SAD_OUT
        LD      B,5
        EI 
        HALT 
        DJNZ    $-2
        XOR     A               ;NZ-esli klawia navata
        IN      A,(254)
        CPL 
        AND     31
        JR      NZ,TRY2
        POP     BC
        POP     HL
        LD      DE,540
        ADD     HL,DE
        DJNZ    SAD_3
        JR      SAD_4
TRY2    POP     BC
        POP     HL
        LD      A,16
        JP      PAGE

SAD_OUT LD      A,B
        LD      (SAD_51+1),A
        RLCA 
        RLCA 
        RLCA 
        LD      B,A
                                ;B-Y
                                ;C-X
                                ;HL-otkuda
        LD      A,C
        LD      (SAD_41+1),A
        LD      A,32
        SUB     C
        LD      (SAD_31+1),A
        PUSH    DE              ;DE-kuda
SAD_1   PUSH    BC
        PUSH    DE
        LD      B,0
        LDIR 
        POP     DE
        CALL    DPIX_DE
        POP     BC
        DJNZ    SAD_1
        POP     DE
        LD      A,D
        RRCA 
        RRCA 
        RRCA 
        AND     3
        OR      88
        LD      D,A
SAD_51  LD      B,0
SAD_2   PUSH    BC
SAD_41  LD      BC,0
        LDIR 
        EX      DE,HL
SAD_31  LD      C,0
        ADD     HL,BC
        EX      DE,HL
        POP     BC
        DJNZ    SAD_2
        RET 
;--------------------------------
NEXT_CL LD      (AD_CLK+1),HL
        EXX 
PRN_CLK LD      A,(HL)
        INC     HL
        CP      #FF
        RET     Z
        CP      #16
        JR      Z,N_POSS
CLK1    EXX 
        ADD     A,A
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        LD      DE,FONT_CL
        ADD     HL,DE
AD_CLK  LD      DE,16336
        INC     E
        LD      (AD_CLK+1),DE
        DEC     E
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        JP      PRN_CLK-1
N_POSS  LD      B,(HL)
        INC     HL
        LD      C,(HL)
        INC     HL
        PUSH    BC
        EXX 
        POP     BC
        LD      A,C
        AND     #18
        OR      #40
        LD      H,A
        LD      A,C
        AND     7
        RRCA 
        RRCA 
        RRCA 
        ADD     A,B
        LD      L,A
        JP      NEXT_CL
POFIG   LD      A,100
        LD      (STS_1+1),A
        RET 
NEXT_L  EXX 
ADRES_A LD      HL,16336
        LD      A,8
        ADD     A,H
        LD      H,A
        LD      A,L
        ADD     A,32
        LD      L,A
        JR      C,NEXT_L1
        LD      A,H
        SUB     8
        LD      H,A
NEXT_L1 LD      (ADRES_E+1),HL
        LD      (ADRES_A+1),HL
        EXX 
PRINT   LD      A,(HL)
        INC     HL
        CP      32
        JR      NC,PR_1
        OR      A
        JR      Z,POFIG
        CP      #0D
        JR      Z,NEXT_L
        CP      #16
        JR      Z,N_POS
PR_1    EXX 
        ADD     A,A
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        LD      DE,FONT-256
        ADD     HL,DE
ADRES_E LD      DE,16336
        INC     E
        LD      (ADRES_E+1),DE
        DEC     E
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        LD      A,(HL)
        LD      (DE),A
        JP      PRINT-1
N_POS   LD      B,(HL)
        INC     HL
        LD      C,(HL)
        INC     HL
        PUSH    BC
        EXX 
        POP     BC
        LD      A,C
        AND     #18
        OR      #40
        LD      H,A
        LD      A,C
        AND     7
        RRCA 
        RRCA 
        RRCA 
        ADD     A,B
        LD      L,A
        JP      NEXT_L1
ATT_S   LD      A,C
        AND     #18
        OR      #40
        LD      H,A
        LD      A,C
        AND     7
        RRCA 
        RRCA 
        RRCA 
        ADD     A,B
        LD      L,A
        RET 
PAUSE   XOR     A
        IN      A,(254)
        CPL 
        AND     31
        RET     NZ
        LD      A,1
        LD      (STP+1),A
        RET 
SPR_OUT LD      A,B             ;B-Y
        RLCA                    ;C-X
        RLCA                    ;HL-otkuda
        RLCA 
        LD      B,A
        PUSH    DE              ;DE-kuda
SPR_1   PUSH    BC
        PUSH    DE
        LD      B,0
        LDIR 
        POP     DE
        CALL    DPIX_DE
        POP     BC
        DJNZ    SPR_1
        POP     DE
ADRIB   LD      A,0
        CP      12
        JR      C,BUFAT
        CP      22
        JR      C,BUFAT_1
        RLA 
        JR      NC,BUFAT
        LD      HL,ATTR_1
        JR      BUFAT_1
;BUFAT   RLA
;       JR      NC,BUFAT_1
BUFAT   LD      HL,ATTR_2
BUFAT_1 LD      A,D
        RRCA 
        RRCA 
        RRCA 
        AND     3
        OR      88
        LD      D,A
        LDI 
        LDI 
        EX      DE,HL
        LD      BC,30
        ADD     HL,BC
        EX      DE,HL
        LDI 
        LDI 
        RET 
ATTR_1  DEFB      6,6,6,6
ATTR_2  DEFB      5,5,5,5

;-------------------------------------
INT_ON  DI 
        LD      HL,#5B00
        LD      A,H
        LD      I,A
        IM      2
        INC     A
        INC     A
        LD      B,L
        LD      (HL),A
        INC     HL
        DJNZ    $-2
        LD      (HL),A
        LD      H,A
        LD      L,H
        LD      (HL),#C3
        LD      HL,INT
        LD      (#5D5E),HL
        EI 
        RET 
INT_OFF DI 
        LD      A,#3F
        LD      I,A
        IM      1
MUS_OFF CALL    STOP_M
        LD      HL,10072
        EXX 
        EI 
        RET 
INT     PUSH    HL,DE,BC,AF,IX,IY
        EXX 
        EX      AF,AF'
        PUSH    HL,DE,BC,AF
        LD      A,7
        OUT     (254),A
        LD      A,16
        LD      BC,32765
        OUT     (C),A
FLAG    LD      A,0
        OR      A
        JR      Z,MUS
VIV_F   LD      A,0
        OR      A
        CALL    Z,VIEV_B
TYME    LD      A,0
        OR      A
        CALL    Z,TIME
STREL   CALL    KEY
MUS     LD      A,0
        OR      A
        JR      NZ,MUS1
        CALL    PLAY_M
        JR      MUS2
MUS1    CALL    STOP_M
MUS2    LD      A,0
        OR      A
        CALL    NZ,GAM_O1
SCROL   LD      A,0
        OR      A
        CALL    Z,SCROLL
INT3    LD      A,16
        LD      BC,32765
        OUT     (C),A
        XOR     A
        OUT     (254),A
        POP     AF,BC,DE,HL
        EX      AF,AF'
        EXX 
        POP     IY,IX,AF,BC,DE,HL
        EI 
        RET 
CLS_SCR XOR     A
        LD      HL,23295
        LD      DE,23294
        LD      BC,6911
        LD      (HL),A
        LDDR 
        OUT     (254),A
CLS_SC1 LD      HL,22528
        LD      DE,22529
        LD      BC,767
        LD      (HL),7
        LDIR 
        RET 

;       INCLUDE "SELECT.H",#17
;-------------------------------
TIME    LD      A,1
        DEC     A
        LD      (TIME+1),A
        CP      25
        JR      Z,TIME_1
        OR      A
        RET     NZ
TIME_C  LD      A,50
        LD      (TIME+1),A
SEC     LD      A,0
        INC     A
        LD      (SEC+1),A
        CP      60
        JR      C,TIME_1
        XOR     A
        LD      (SEC+1),A
MIN     LD      A,0
        INC     A
        LD      (MIN+1),A
        CP      60
        JR      C,TIME_1
        XOR     A
        LD      (MIN+1),A
HOUR    LD      A,0
        INC     A
        LD      (HOUR+1),A
        CP      24
        JR      C,TIME_1
        XOR     A
        LD      (HOUR+1),A
TIME_1  LD      HL,BUF_T1
        LD      A,(HOUR+1)
        CALL    CONV_1
        LD      A,(HL)
        XOR     1
        LD      (HL),A
        INC     HL
        LD      A,(MIN+1)
        CALL    CONV_1
        LD      A,(HL)
        XOR     1
        LD      (HL),A
        INC     HL
        LD      A,(SEC+1)
        CALL    CONV_1
        LD      HL,(AD_CLK+1)
        PUSH    HL
        LD      HL,BUF_T
        CALL    PRN_CLK
        POP     HL
        LD      (AD_CLK+1),HL
        RET 
CONV_1  PUSH    DE
        EX      DE,HL
        LD      H,0
        LD      L,A
        LD      BC,10
        CALL    C_7
        XOR     A
        ADD     A,L
        LD      (DE),A
        INC     DE
        EX      DE,HL
        POP     DE
        RET 
CONV_2  LD      DE,SCORE
        LD      BC,100
        CALL    C_7
        LD      BC,10
        CALL    C_7
        XOR     A
        ADD     A,L
        LD      (DE),A
        RET 
C_7     XOR     A
C_8     OR      A
        SBC     HL,BC
        JR      C,C_9
        INC     A
        JR      C_8
C_9     ADD     HL,BC
        LD      (DE),A
        INC     DE
        RET 
WYWOD   LD      B,#0A
        LD      DE,#4000
        LD      HL,BUF_I
WYW_2   PUSH    BC
        PUSH    DE
        LD      C,#0A
WYW_1   PUSH    BC
        LD      A,(HL)
        LD      (ADRIB+1),A
        INC     HL
        SLA     A
        LD      (WYWOD1+1),DE
        PUSH    DE
        JR      NC,WYW_3
        BIT     6,A
        JR      NZ,WYW_3
XREN    XOR     A
WYW_3   NOP 
        EXX 
        AND     62
        LD      L,A
        LD      H,0
        ADD     HL,HL
        PUSH    HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        POP     DE
        ADD     HL,DE
        LD      DE,SPRIT_P
        ADD     HL,DE
WYWOD1  LD      DE,0
        LD      BC,#0202
        CALL    SPR_OUT
        EXX 
        POP     DE
        INC     E
        INC     E
        POP     BC
        DEC     C
        JR      NZ,WYW_1
        POP     DE
        LD      B,16
        CALL    DPIX_DE
        DJNZ    $-3
        POP     BC
        DJNZ    WYW_2
        LD      HL,BUF_I
        LD      B,100
RES_B   RES     5,(HL)
        INC     HL
        DJNZ    RES_B
        RET 
R_EASY  LD      A,R
        LD      C,5
        AND     15
        CP      10
        JR      C,$+4
        SUB     10
        LD      E,A
        LD      D,0
        LD      HL,BUF_I
        ADD     HL,DE
        LD      (HL),13+128     ;flag igroka
        OR      A
        JR      Z,$+7
        DEC     HL
        LD      (HL),11+128     ;mina
        DEC     C
        INC     HL
        CP      9
        JR      Z,$+7
        INC     HL
        LD      (HL),11+128
        DEC     C
        DEC     HL
        LD      DE,10
        ADD     HL,DE
        LD      (HL),11+128
        LD      A,C
        LD      (TAB_J+10),A
        LD      DE,BUF_I
BUF_C   LD      A,(DE)
        OR      A
        JR      NZ,BUF_S
        LD      A,R
        RRCA 
        LD      R,A
        AND     15
        CP      11
        JR      C,$+4
        SUB     5
        LD      L,A
        LD      H,0
        LD      BC,TAB_J
        ADD     HL,BC
TAB_W   DEC     (HL)
        JP      P,BUF_Z
        LD      C,A
        INC     (HL)
TAB_A   INC     C
        INC     HL
        LD      A,(HL)
        INC     A
        JR      NZ,TAB_Y
        LD      C,A
        LD      HL,TAB_J
TAB_Y   DEC     A
        JR      Z,TAB_A
TAB_X   LD      A,C
        JR      TAB_W
BUF_Z   INC     A
        OR      128
        LD      (DE),A
BUF_S   INC     DE
        LD      HL,0-BUF_I-40
        ADD     HL,DE
        JR      NC,BUF_C
        RET 
INIT_S  LD      B,COORY
INIT1   LD      A,(DE)
        LD      (HL),0
        INC     HL
        LD      (HL),A
        INC     HL
        INC     DE
        LD      A,(DE)
        LD      (HL),A
        INC     HL
        INC     DE
        DJNZ    INIT1
        RET 
INIT_S1 LD      B,7
INIT2   PUSH    BC
        LD      B,COORY
INIT3   LD      E,(IX+0)
        LD      D,(IX+1)
        LD      C,(IX+2)
        OR      A
        RL      C
        RL      D
        RL      E
        LD      (HL),E
        INC     HL
        LD      (HL),D
        INC     HL
        LD      (HL),C
        INC     HL
        INC     IX
        INC     IX
        INC     IX
        DJNZ    INIT3
        POP     BC
        DJNZ    INIT2
        RET 
WIEV_S  LD      HL,TAB_S
        LD      DE,#50A0
        LD      A,12
        LD      (ADRIB+1),A
WIEW_S1 LD      A,(HL)
        INC     HL
        OR      A
        RET     Z
        PUSH    DE
        EXX 
        POP     DE
        PUSH    DE
        ADD     A,A
        ADD     A,A
        LD      L,A
        LD      H,0
        PUSH    HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        POP     BC
        ADD     HL,BC
        LD      BC,SPRIT_P
        ADD     HL,BC
        LD      BC,#0202
        CALL    SPR_OUT
        EXX 
        POP     DE
        INC     E
        INC     E
        JR      WIEW_S1
        RET 
SCHET   RRCA 
        RRCA 
        RRCA 
        AND     31
        RET 

FIRE    LD      A,0
        OR      A
        LD      B,A
        LD      A,10
        LD      (KEY+1),A
        JR      Z,FIRE5
        DEC     B
        JP      Z,FIRE1
        JP      FURE
FIRE5   CALL    FIRE4
        LD      HL,(COORDX)
        LD      A,H
        CALL    SCHET
        CP      21
        RET     C
        LD      H,168
        LD      A,L
        CALL    SCHET
        CP      28
        RET     NC
        CP      24
        JP      NC,AUTO
        AND     254
        LD      L,A
        SLA     L
        SLA     L
        SLA     L
        LD      (FIRW_2+1),HL
        LD      (FIR7+1),A
        PUSH    AF
        SRL     A
        INC     A
        LD      (FIRE2-4),A
        POP     AF
        LD      E,A
        LD      D,0
        LD      HL,TAB_K
        SRL     E
        ADD     HL,DE
        EX      AF,AF'
        LD      A,(HL)
        OR      A
        RET     Z
FIRW_2  LD      DE,0
        LD      (COORDX),DE
        DEC     (HL)
        JR      NZ,FIRE3
        LD      A,19
        LD      (ADRIB+1),A
        ADD     A,A
        ADD     A,A
        LD      L,A
        LD      H,0
        PUSH    HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        POP     BC
        ADD     HL,BC
        LD      BC,SPRIT_P
        ADD     HL,BC
        EX      DE,HL
        LD      HL,(COORDX)
        CALL    NPOS
        EX      DE,HL
        LD      BC,#0202
        CALL    SPR_OUT
FIRE3   EX      AF,AF'
        PUSH    AF
        LD      HL,SPR_5_5-225
        SRL     A
        INC     A
        LD      B,A
        LD      DE,225
FR_0    ADD     HL,DE
        DJNZ    FR_0
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        POP     AF
        ADD     A,A
        LD      L,A
        LD      H,0
        PUSH    HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        POP     BC
        ADD     HL,BC
        LD      BC,SPRIT_P+36
FIRE0   ADD     HL,BC
        LD      (FIRE2+1),HL
        EX      DE,HL
        LD      HL,BUFER8
        CALL    INIT_S
        LD      IX,BUFER8
        LD      HL,BUFER9
        CALL    INIT_S1
        XOR     A
        LD      (VIV+1),A
        INC     A
        LD      (FIRE+1),A
        RET 
FIRE1   LD      HL,(COORDX)
        LD      A,H
        CALL    SCHET
        CP      20
        RET     NC
        CP      12
        RET     C
        AND     254
        LD      HX,A
        LD      H,A
        SLA     H
        SLA     H
        SLA     H
        LD      A,L
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      LX,A
        LD      L,A
        SLA     L
        SLA     L
        SLA     L
        LD      (FIRW_1+1),HL
        LD      A,HX
        SRL     A
        LD      HX,A
        LD      HL,BUF_I
        LD      DE,10
        LD      B,A
FIR1    ADD     HL,DE
        DJNZ    FIR1
        LD      A,LX
        SRL     A
        LD      LX,A
        JR      Z,FIR2
        LD      B,A
FIR3    INC     HL
        DJNZ    FIR3
FIR2    LD      A,(HL)
        CP      19
        RET     NZ
FIRW_1  LD      HL,0
        LD      (COORDX),HL
        LD      BC,#0202
        CALL    NPOS
        EX      DE,HL
        LD      A,0
        LD      (ADRIB+1),A
FIRE2   LD      HL,0
        CALL    SPR_OUT
        LD      A,HX
        LD      HL,BUF_I
        LD      DE,10
        LD      B,A
FIR4    ADD     HL,DE
        DJNZ    FIR4
        LD      A,LX
        OR      A
        JR      Z,FIR7
        LD      B,A
FIR6    INC     HL
        DJNZ    FIR6
FIR7    LD      A,0
        SRL     A
        INC     A
        LD      (HL),A
KOL_SP  LD      A,40
        DEC     A
        LD      (KOL_SP+1),A
        JR      NZ,FIR_9
        LD      A,#FF
        LD      (KEY+1),A
FIR_9   LD      A,0
        LD      (FIRE+1),A
        INC     A
AUTO_1  LD      (VIV+1),A
        LD      HL,BUFER7+336-48
        LD      (MASK+1),HL
        LD      HL,BUFER2+336-48
        LD      (CH_SPR+1),HL
        LD      HL,SPR_5_5+2925
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        RET 
FIRE4   LD      HL,(COORDX)
        LD      A,H
        CALL    SCHET
        CP      12
        RET     C
        CP      20
        RET     NC
        AND     254
        LD      HX,A
        LD      H,A
        SLA     H
        SLA     H
        SLA     H
        LD      A,L
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      LX,A
        LD      L,A
        SLA     L
        SLA     L
        SLA     L
        LD      (FIRW_3+1),HL
        LD      A,HX
        SRL     A
        LD      HX,A
        LD      HL,BUF_I
        LD      DE,10
        LD      B,A
FIR_1   ADD     HL,DE
        DJNZ    FIR_1
        LD      A,LX
        SRL     A
        LD      LX,A
        JR      Z,FIR_2
        LD      B,A
FIR_3   INC     HL
        DJNZ    FIR_3
FIR_2   LD      A,(HL)
        LD      (FIRE2-4),A
        CP      19
        RET     Z
FIRW_3  LD      HL,0
        LD      (COORDX),HL
        LD      BC,#0202
        CALL    NPOS
        EX      DE,HL
        LD      A,18
        LD      (ADRIB+1),A
        LD      HL,SPRIT_P+684
        CALL    SPR_OUT
        LD      HL,BUF_I
        LD      DE,10
        LD      B,HX
FIR_4   ADD     HL,DE
        DJNZ    FIR_4
        LD      A,LX
        OR      A
        JR      Z,FIR_7
        LD      B,A
FIR_6   INC     HL
        DJNZ    FIR_6
FIR_7   LD      A,(HL)
        DEC     A
        ADD     A,A
        LD      (FIR7+1),A
        EX      AF,AF'
        LD      A,19
        LD      (HL),A
        POP     HL
        LD      HL,KOL_SP+1
        INC     (HL)
        JP      FIRE3


AUTO    LD      A,2
        LD      (STR+1),A
        JP      AUTO_1

FURE    CALL    MSU
FURE1   LD      A,0
        OR      A
        RET     NZ
GAME    LD      A,0
        OR      A
        LD      B,A
        LD      A,10
        LD      (KEY+1),A
        JR      Z,GAME_10
        DEC     B
        JP      Z,GAME_11
        LD      A,#FF
        LD      (STR+1),A
        DEC     A
        LD      (KEY+1),A
        RET 

GAME_10 LD      HL,(COORDX)
        LD      A,H
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      H,A
        LD      HX,A
        SLA     H
        SLA     H
        SLA     H
        LD      A,L
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      L,A
        LD      LX,A
        SLA     L
        SLA     L
        SLA     L
        LD      (GAMX+1),HL
        LD      A,HX
        SRL     A
        LD      HX,A
        LD      HL,BUF_I
        LD      DE,10
        OR      A
        JR      Z,GAME_1
        LD      B,A
GAME_2  ADD     HL,DE
        DJNZ    GAME_2
GAME_1  LD      A,LX
        SRL     A
        LD      LX,A
        JR      Z,GAME_3
        LD      B,A
GAME_4  INC     HL
        DJNZ    GAME_4
GAME_3  LD      A,(HL)
        AND     %10111111
        LD      (WRAG2+1),HL
        CP      11
        LD      (GAM_2-4),A
        RET     NC
GAMX    LD      HL,0
        LD      (GAMX_2+1),HL
        LD      (COORDX),HL
        LD      BC,#0202
        CALL    NPOS
        EX      DE,HL
        LD      A,18
        LD      (ADRIB+1),A
        LD      HL,SPRIT_P+648
        CALL    SPR_OUT
        LD      A,HX
        LD      HL,BUF_I
        LD      DE,10
        OR      A
        JR      Z,GAME_5
        LD      B,A
GAME_6  ADD     HL,DE
        DJNZ    GAME_6
GAME_5  LD      A,LX
        OR      A
        JR      Z,GAME_7
        LD      B,A
GAME_8  INC     HL
        DJNZ    GAME_8
GAME_7  LD      A,(HL)
        LD      (GAM_0+2),IX
        PUSH    AF
        PUSH    HL
        LD      HL,SPR_5_5-225
        AND     %10111111
        LD      B,A
        LD      DE,225
GAME_9  ADD     HL,DE
        DJNZ    GAME_9
        LD      DE,#48D5
        LD      BC,#0505
        CALL    SAD_OUT
        POP     HL
        POP     AF
        BIT     6,A
        JR      Z,FUCK
        AND     %10111111
        DEC     A
        ADD     A,A
        OR      64
        LD      (GAM7+1),A
        AND     %10111111
        JR      FUCK1
FUCK    DEC     A
        ADD     A,A
        LD      (GAM7+1),A
FUCK1   EX      AF,AF'
        LD      A,18
        LD      (ADRIB+1),A
        LD      (HL),A
        EX      AF,AF'
        ADD     A,A
        LD      L,A
        LD      H,0
        PUSH    HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        POP     BC
        ADD     HL,BC
        LD      BC,SPRIT_P+36
        ADD     HL,BC
        LD      (GAM_2+1),HL
        EX      DE,HL
        LD      HL,BUFER8
        CALL    INIT_S
        LD      IX,BUFER8
        LD      HL,BUFER9
        CALL    INIT_S1
        XOR     A
        LD      (VIV+1),A
        INC     A
        LD      (GAME+1),A
        RET 
GAME_11 LD      HL,(COORDX)
        LD      A,H
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      H,A
        LD      HY,A
        SLA     H
        SLA     H
        SLA     H
        LD      A,L
        CALL    SCHET
        CP      20
        RET     NC
        AND     254
        LD      L,A
        LD      LY,A
        SLA     L
        SLA     L
        SLA     L
        LD      (GAMX_1+1),HL
        LD      (WRAG3+1),HL
GAM_0   LD      IX,0
        LD      A,HY
        SRL     A
        LD      HY,A
        LD      A,LY
        SRL     A
        LD      LY,A
        LD      A,HX
        CP      HY
        JR      Z,G_11
        DEC     A
        CP      HY
        JR      Z,G_1
 