Subversion Repositories NedoOS

Rev

Rev 834 | Rev 1173 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. BONUS2  DEFB    15,8,3
  2.         DEFB    17,3,0
  3.         DEFB    10,7,0
  4.         DEFB    12,11,1
  5.         DEFB    7,5,0
  6.         DEFB    10,8,0
  7.         DEFB    15,10,4
  8.         DEFB    12,7,5
  9.         DEFB    3,0,0
  10.         DEFB    18,9,0
  11.         DEFB    13,3,0
  12.         DEFB    0,0,0
  13.         DEFB    15,7,0
  14.         DEFB    7,6,5
  15.         DEFB    6,0,1
  16.         DEFB    10,0,0
  17.         DEFB    19,13,5
  18.         DEFB    17,3,0
  19.         DEFB    13,7,5
  20.         DEFB    9,0,0
  21.         DEFB    18,7,2
  22.         DEFB    16,5,1
  23.         DEFB    19,10,0
  24.         DEFB    8,0,0
  25.         DEFB    16,11,4
  26.         DEFB    10,7,0
  27.         DEFB    0,0,0
  28.         DEFB    17,10,0
  29.         DEFB    18,12,5
  30.         DEFB    16,9,4
  31.         DEFB    19,3,0
  32.         DEFB    15,0,0
  33.  
  34. RELESE  LD      A,(IX+UNIT_TIMEFORSHOTONWAR)
  35.         DEC     A
  36.         CP      0
  37.         CALL    Z,RELESE2
  38.         LD      (IX+UNIT_TIMEFORSHOTONWAR),A
  39.         RET
  40. RELESE2 LD      A,(IX+UNIT_STOPBIT)
  41.         LD      L,(IX+UNIT_NUMBERSPRITES)
  42.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  43.         INC     HL
  44.         INC     HL ;next SPRSTAR
  45.         INC     A
  46.         CP      4
  47.         CALL    Z,RELESE3
  48.         LD      (IX+UNIT_STOPBIT),A
  49.         LD      (IX+UNIT_NUMBERSPRITES),L
  50.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  51.         LD      A,4
  52.         RET
  53. RELESE3
  54.         LD      HL,SPRSTAR0;256+48
  55.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  56.         INC     A
  57.         CP      3
  58.         JP      Z,READY
  59.         LD      (IX+UNIT_BITFRIENDLYFIRE),A
  60.         XOR     A
  61.         RET
  62. READY
  63. ;момент появления нового танка на экран
  64.         LD      A,(IX+UNIT_BITPARENTSBULL)
  65.         CP      1
  66.         JP      Z,GAMEO11
  67.         CP      2
  68.         JP      Z,GAMEO22
  69.         PUSH    IX
  70.        
  71. ;стереть все символы танков (потом перепечатаем сколько надо)
  72.        if 1==1
  73.         ld de,tilemap+(BYTESPERTILELINE*1)+35
  74.         ld hl,BYTESPERTILELINE-1
  75.         ld b,10
  76. cleartanksymbols0
  77.         ld a,0xe0 ;white char
  78.         call prchar_tilemap
  79.         inc de
  80.         call prchar_tilemap
  81.         ex de,hl
  82.         add hl,de
  83.         ex de,hl
  84.         djnz cleartanksymbols0
  85.        else
  86.         LD      HL,25994
  87.         LD      A,%10001000
  88.         LD      (HL),A
  89.         INC     HL
  90.         LD      (HL),A
  91.         DEC     HL
  92.         LD      DE,#C088
  93.         LD      B,5 ;wid/8-1?
  94.         LD      C,80 ;hgt-1?
  95.         LD      A,#05
  96.         LD      (PAGEFR),A
  97.         LD      A,#10
  98.         LD      (PAGETO),A
  99.         LD      A,%00010100
  100.         CALL    DMASTART
  101.         LD      B,0
  102. NOP2    NOP
  103.         NOP
  104.         NOP
  105.         DJNZ    NOP2
  106.        endif
  107.        
  108.         LD      A,(BOS)
  109.         CP      1
  110.         JR      Z,NOBQ
  111.         LD      A,(WARTAN)
  112.         DEC     A
  113.         LD      (WARTAN),A
  114.         CALL    PRTAN
  115. NOBQ
  116.         LD      HL,WAR
  117. CIKL2   LD      A,(HL)
  118.         CP      0
  119.         JP      Z,DDS
  120.         PUSH    HL
  121.         LD      HL,TEXT5
  122.         LD      (TEXTW),HL
  123.         POP     BC
  124.         PUSH    BC
  125.         INC     BC
  126.         LD      A,(BC)
  127.          add a,8
  128.         LD      L,A
  129.         INC     BC
  130.         LD      A,(BC)
  131.         LD      H,A
  132.         POP     DE
  133.         PUSH    DE
  134.         INC     DE
  135.         INC     DE
  136.         INC     DE
  137.         LD      A,(DE)
  138.         LD      C,A
  139.         INC     DE
  140.         LD      A,(DE)
  141.         LD      B,A
  142.         LD      D,#C0 ;const
  143.         LD      E,#10 ;const
  144.         CALL    TEXT
  145.         POP     HL
  146.         INC     HL
  147.         INC     HL
  148.         INC     HL
  149.         INC     HL
  150.         INC     HL
  151.         JR      CIKL2
  152. DDS     POP     IX
  153.         CALL    NEWTANK
  154.         CALL    NEWBON
  155.         POP     HL
  156.         POP     HL
  157.         RET
  158. NEWWAR  LD      A,(WARTAN)
  159.         CP      0
  160.         RET     Z
  161.         LD      A,(MAP)
  162.         CP      31
  163.         JP      Z,NEW31
  164.         LD      A,(NEWW)
  165.         DEC     A
  166.         CP      0
  167.         JP      Z,NEWWAR2
  168.         LD      (NEWW),A
  169.         RET
  170. NEWWAR2 LD      A,150
  171.         LD      (NEWW),A
  172.         CALL    INSTAL2
  173.         CP      255
  174.         RET     Z
  175.         LD      HL,SPRSTAR0;256+48
  176.         LD      (IX+UNIT_NUMBERSPRITES),L
  177.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  178.         RET
  179. NEZ1
  180.         XOR     A
  181.         RET
  182. BADABUM
  183.         LD      A,(IX+UNIT_TIMEFORSHOTONWAR)
  184.         INC     A
  185.         LD      (IX+UNIT_TIMEFORSHOTONWAR),A
  186.         LD      (IX+UNIT_DIRECTION),0
  187.         LD      (IX+UNIT_COUNTER),0
  188.         LD      (IX+UNIT_STOPBIT),1
  189.         CP      1
  190.         JP      Z,BAD1
  191.         CP      5
  192.         JP      Z,BAD2
  193.         CP      9
  194.         JP      Z,BAD3
  195.         CP      13
  196.         JP      Z,BAD4
  197.         CP      17
  198.         JP      Z,BAD5
  199.         CP      21
  200.         JP      Z,BAD6
  201.         CP      70
  202.         JP      Z,BAD7
  203.         RET
  204. BAD1    LD      HL,SPRBOOM0;56
  205.         LD      (IX+UNIT_NUMBERSPRITES),L
  206.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  207.         LD      (IX+UNIT_DIRECTION),0
  208.         PUSH    IX
  209.         LD      A,7
  210.         CALL    AFXPLAY
  211.         POP     IX
  212.         RET
  213. BAD2    LD      HL,SPRBOOM1;58
  214.         LD      (IX+UNIT_NUMBERSPRITES),L
  215.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  216.         LD      (IX+UNIT_DIRECTION),0
  217.         RET
  218. BAD3    LD      HL,SPRBOOM2;60
  219.         LD      (IX+UNIT_NUMBERSPRITES),L
  220.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  221.         LD      (IX+UNIT_DIRECTION),0
  222.         RET
  223. BAD4
  224.         LD      HL,SPRBOOM0_;256+56
  225.         LD      (IX+UNIT_NUMBERSPRITES),L
  226.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  227.         LD      (IX+UNIT_DIRECTION),0
  228.         LD      (IX+UNIT_BITFRIENDLYFIRE),253
  229.         LD      L,(IX+UNIT_Y)
  230.         LD      H,(IX+UNIT_Y+1)
  231.         LD      DE,8
  232.         SBC     HL,DE
  233.         LD      (IX+UNIT_Y),L
  234.         LD      (IX+UNIT_Y+1),H
  235.         LD      L,(IX+UNIT_X)
  236.         LD      H,(IX+UNIT_X+1)
  237.         LD      DE,8
  238.         SBC     HL,DE
  239.         LD      (IX+UNIT_X),L
  240.         LD      (IX+UNIT_X+1),H
  241.         CALL    PRPUB
  242.         RET
  243. BAD5    LD      HL,SPRBOOM2_;256+60
  244.         LD      (IX+UNIT_NUMBERSPRITES),L
  245.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  246.         LD      (IX+UNIT_DIRECTION),0
  247.         LD      (IX+UNIT_BITFRIENDLYFIRE),253
  248.         RET
  249. BAD6    LD      A,(IX+UNIT_TYPEOFTANK)
  250.         CP      0
  251.         JR      Z,BAD7
  252.         LD      A,(IX+UNIT_TYPEOFTANK)
  253.         CALL    ENE0 ;set hl
  254.         CP      2
  255.         CALL    Z,ENE1 ;set hl
  256.         CP      3
  257.         CALL    Z,ENE2 ;set hl
  258.         CP      4
  259.         CALL    Z,ENE3 ;set hl
  260.         LD      (IX+UNIT_NUMBERSPRITES),L
  261.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  262.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  263.         LD      L,(IX+UNIT_Y)
  264.         LD      H,(IX+UNIT_Y+1)
  265.         LD      DE,8
  266.         ADD     HL,DE
  267.         LD      (IX+UNIT_Y),L
  268.         LD      (IX+UNIT_Y+1),H
  269.         LD      L,(IX+UNIT_X)
  270.         LD      H,(IX+UNIT_X+1)
  271.         LD      DE,8
  272.         ADD     HL,DE
  273.         LD      (IX+UNIT_X),L
  274.         LD      (IX+UNIT_X+1),H
  275.         RET
  276. BAD7    LD      (IX+UNIT_YESORNOT),0
  277.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  278.         XOR     A
  279.         LD      (YESORNO),A
  280.         LD      A,(IX+UNIT_SAND)
  281.         CP      254 ;eagle killed
  282.         CALL    Z,BAD8
  283.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  284.         CALL    PRIZ
  285.         LD      A,(IX+UNIT_TYPEOFTANK) ;???
  286.         CP      0
  287.         RET     Z
  288.         JP      NEXTMIS ;???
  289. BAD8    LD      A,1 ;game over???
  290.         LD      (ENDG),A
  291.         XOR     A
  292.         LD      (MAP),A
  293.         LD      HL,TEXT17
  294.         LD      A,129 ;'0' inverted?
  295.         LD      (HL),A
  296.         INC     HL
  297.         LD      (HL),A
  298.         LD      HL,LEVEL
  299.         LD      A,129 ;'0' inverted?
  300.         LD      (HL),A
  301.         INC     HL
  302.         LD      (HL),A
  303.         RET
  304. NEW31
  305.         LD      A,(TANKP)
  306.         CP      0
  307.         RET     NZ
  308.         LD      A,(NEWW)
  309.         DEC     A
  310.         CP      0
  311.         JP      Z,NEWWAR2
  312.         LD      (NEWW),A
  313.         RET
  314.  
  315.  
  316. WSEBAH  XOR     A
  317.         LD      (WARTAN),A ;no tanks remaining?
  318.         RET
  319. XS      DEFB    0
  320. END5
  321.         EI
  322.         HALT
  323.         LD      A,(XS)
  324.         INC     A
  325.         LD      (XS),A
  326.         CP      150
  327.         RET     C
  328.         XOR     A
  329.         LD      (XS),A
  330.         POP     BC
  331.         JP      END55
  332. INT55   LD      A,(WARTAN)
  333.         CP      6
  334.         RET     NC
  335.         CALL    RANDOM
  336.         CP      100
  337.         RET     NC
  338.         POP     BC
  339.         JP      I3
  340.  
  341. ENDLEV
  342.         LD      D,#C0 ;const
  343.         LD      E,#10 ;const
  344.         LD      HL,TEXEND
  345.         LD      (TEXTW),HL
  346.        if TILES87
  347.         LD      HL,112
  348.        else
  349.         LD      HL,112-16
  350.        endif
  351.         LD      BC,124-24
  352.         CALL    TEXT
  353.        call doscreen
  354.        call doscreen
  355.         CALL    RP2
  356.         POP     AF
  357.         RET
  358.  
  359. TEXEND  DEFM    "congratulations"
  360.                 DEFB    255
  361.  
  362. NJNAA   LD              HL,TEXT17
  363.                 LD              A,129 ;'0' inverted?
  364.                 LD              (HL),A
  365.                 INC             HL
  366.                 LD              A,129 ;'0' inverted?
  367.                 LD              (HL),A
  368.                 LD              HL,LEVEL
  369.                 LD              A,129 ;'0' inverted?
  370.                 LD              (HL),A
  371.                 INC             HL
  372.                 LD              A,129 ;'0' inverted?
  373.                 LD              (HL),A
  374. ;afxinit
  375.                 LD      HL,48000
  376.                 CALL    AFXINIT ;stop sound
  377.                 RET
  378.  
  379. SOUNDGO         DEFB    5
  380.  
  381. AFXCHDESC       DEFS    3*4
  382.  
  383. AFXINIT         INC             HL
  384.                         LD              (AFXBNKA+1),HL
  385.                         LD              HL,AFXCHDESC
  386.                         LD              DE,#00FF
  387.                         LD              BC,#03FD
  388. AFX0            LD              (HL),D
  389.                         INC             HL
  390.                         LD              (HL),D
  391.                         INC             HL
  392.                         LD              (HL),E
  393.                         INC             HL
  394.                         LD              (HL),E
  395.                         INC             HL
  396.                         DJNZ    AFX0
  397.                         LD              HL,#FFBF
  398.                         LD              E,#15
  399. AFX1            DEC     E
  400.                         LD              B,H
  401.                         OUT             (C),E
  402.                         LD              B,L
  403.                         OUT             (C),D
  404.                         JR              NZ,AFX1
  405.                         LD              (AFXNSEM+1),DE
  406.                         RET    
  407.  
  408. AFXFRAME        LD              BC,#03FD
  409.                         LD              IX,AFXCHDESC
  410. AFXFR0          PUSH    BC
  411.                         LD              A,11
  412.                         LD              H,(IX+1)
  413.                         CP              H
  414.                         JR              NC,AFXFR7
  415.                         LD              L,(IX+0)
  416.                         LD              E,(HL)
  417.                         INC             HL
  418.                         SUB             B
  419.                         LD              D,B
  420.                         LD              B,#FF
  421.                         OUT             (C),A
  422.                         LD              B,#BF
  423.                         LD              A,E
  424.                         AND             #0F
  425.                         OUT             (C),A
  426.                         BIT             5,E
  427.                         JR              Z,AFXFR1
  428.                         LD              A,3
  429.                         SUB             D
  430.                         ADD             A,A
  431.                         LD              B,#FF
  432.                         OUT             (C),A
  433.                         LD              B,#BF
  434.                         LD              D,(HL)
  435.                         INC             HL
  436.                         OUT             (C),D
  437.                         LD              B,#FF
  438.                         INC             A
  439.                         OUT             (C),A
  440.                         LD              B,#BF
  441.                         LD              D,(HL)
  442.                         INC             HL
  443.                         OUT             (C),D
  444.  
  445. AFXFR1          BIT             6,E
  446.                         JR              Z,AFXFR3
  447.                         LD              A,(HL)
  448.                         SUB             #20
  449.                         JR              C,AFXFR2
  450.                         LD              H,A
  451.                         LD              B,#FF
  452.                         LD              B,C
  453.                         JR              AFXFR6
  454.  
  455. AFXFR2          INC             HL
  456.                         LD              (AFXNSEM+1),A
  457.  
  458. AFXFR3          POP             BC
  459.                         PUSH    BC
  460.                         INC             B
  461.                         LD              A,%01101111
  462. AFXFR4          RRC     E
  463.                         RRCA
  464.                         DJNZ    AFXFR4
  465.                         LD              D,A
  466.                         LD              BC,AFXNSEM+2
  467.                         LD              A,(BC)
  468.                         XOR             E
  469.                         AND             D
  470.                         XOR             E
  471.                         LD              (BC),A
  472. AFXFR5          LD              C,(IX+2)
  473.                         LD              B,(IX+3)
  474.                         INC             BC
  475. AFXFR6          LD              (IX+2),C
  476.                         LD              (IX+3),B
  477.                         LD              (IX+0),L
  478.                         LD              (IX+1),H
  479.  
  480. AFXFR7          LD              BC,4
  481.                         ADD             IX,BC
  482.                         POP             BC
  483.                         DJNZ    AFXFR0
  484.                         LD              HL,#FFBF
  485. AFXNSEM         LD              DE,0
  486.                         LD              A,6
  487.                         LD              B,H
  488.                         OUT             (C),A
  489.                         LD              B,L
  490.                         OUT             (C),E
  491.                         INC             A
  492.                         LD              B,H
  493.                         OUT             (C),A
  494.                         LD              B,L
  495.                         OUT             (C),D
  496.                         RET    
  497. ONE                     DEFB    0
  498. AFXPLAY
  499.         display "AFXPLAY=",AFXPLAY
  500.                 LD              DE,0
  501.                         LD              H,E
  502.                         LD              (ONE),A
  503.                         LD              L,A
  504.                         ADD             HL,HL
  505. AFXBNKA         LD              BC,0
  506.                         ADD             HL,BC
  507.                         LD              C,(HL)
  508.                         INC             HL
  509.                         LD              B,(HL)
  510.                         ADD             HL,BC
  511.                         PUSH    HL
  512.                         LD              HL,AFXCHDESC
  513.                         LD              B,3
  514.                         LD              A,(ONE)
  515.                         CP              4
  516.                         CALL    Z,B4
  517.                         CP              5
  518.                         CALL    Z,B4
  519. AFXPL0          INC             HL
  520.                         INC             HL
  521.                         LD              A,(HL)
  522.                         INC             HL
  523.                         CP              E
  524.                         JR              C,AFXPL1
  525.                         LD              C,A
  526.                         LD              A,(HL)
  527.                         CP              D
  528.                         JR              C,AFXPL1
  529.                         LD              E,C
  530.                         LD              D,A
  531.                         PUSH    HL
  532.                         POP             IX
  533. AFXPL1          INC             HL
  534.                         DJNZ    AFXPL0
  535.                         POP             DE
  536.  
  537.                         LD              (IX-3),E
  538.                         LD              (IX-2),D
  539.                         LD              (IX-1),B
  540.                         LD              (IX-0),B
  541.                         RET
  542. B4                      LD              B,1
  543.                         RET
  544.  
  545. INSREADY        ;TRDReadFromHere HISTORE,#01            ;Loading Hi-Score table
  546.         ld de,fn_hiscore
  547.         ld hl,HISTORE
  548.         call loadfile
  549.                         CALL    CLS
  550.  
  551.                         ;LD             BC,PAGE3                                ;Loading Ending Music
  552.                         ;LD             A,#0C
  553.                         ;OUT            (C),A
  554.                         call setpgc
  555.                         ;TRDReadFromHere #C000,#23
  556.         ld de,fn_muzend
  557.         ld hl,0xc000
  558.         call loadfile
  559.  
  560.                         ;LD             BC,PAGE3                                ;Loading Main Music
  561.                         ;LD             A,#C3
  562.                         ;OUT            (C),A
  563.                         call setpgc3
  564.                         ;TRDReadFromHere #C000,#0B
  565.         ld de,fn_muzmain
  566.         ld hl,0xc000
  567.         call loadfile
  568.  
  569.                         ;TRDReadFromHere #CBB8,#0B              ;Loading Boss Music
  570.         ld de,fn_muzboss
  571.         ld hl,0xcbb8
  572.         call loadfile
  573.                                                                                
  574.                         ;TRDReadFromHere        25000,#01               ;Load Palette
  575.  
  576.                         ;LD             BC,SYSCONG      ;VRAM CHANGE
  577.                         ;LD             A,%00000110     ;14 MHZ + CACH
  578.                         ;OUT            (C),A
  579.  
  580.                         ;LD             BC,FMADDR       ;INSTAL PALITRA a4bf
  581.                         ;LD             A,%00010000
  582.                         ;OUT            (C),A
  583.  
  584.                         ;LD             HL,25000
  585.                         ;LD             DE,0
  586.                         ;LD             BC,32
  587.                         ;LDIR
  588.         ld de,pal
  589.         OS_SETPAL
  590.                         CALL    TILL ;set tilemode
  591.  
  592.                         ;TRDReadFromHere        48000,#03       ;Load Sound FX
  593.         ld de,fn_soundfx
  594.         ld hl,48000
  595.         call loadfile
  596.  
  597.                         ;LD      HL,(#5CF4)                             ;Save position of Images on disk
  598.                         ;LD             (DiskAddrImages),HL
  599.                                                
  600.                         RET
  601. PRINT1
  602. ;for CHEKPOINT
  603.         CALL    POONE
  604.         CALL    POTWO
  605.         RET
  606.  
  607. PTS     LD      B,4
  608. PBC     PUSH    BC
  609.         PUSH    HL
  610.         LD      HL,TEXPTS
  611.         LD      (TEXTW),HL
  612.         POP     HL
  613.         LD      D,#C0 ;const
  614.         LD      E,#10 ;const
  615.         LD      BC,(CBC)
  616.         PUSH    HL
  617.         CALL    TEXT
  618.         POP     HL
  619.         POP     BC
  620.         LD      DE,32
  621.         ADD     HL,DE
  622.         DJNZ    PBC
  623.         RET
  624. CBC     DEFW    92
  625.  
  626. POINTHI
  627.         LD      HL,(HISTORE)
  628.         LD      DE,TEXT4+11
  629.         LD      (TEXCLO),DE
  630.         CALL    POINT666 ;write 5 digits HL in (TEXCLO++)
  631.         LD      HL,(POINTP1)
  632.         LD      DE,TEXT4
  633.         INC     DE
  634.         INC     DE
  635.         LD      (TEXCLO),DE
  636.         CALL    POINT666 ;write 5 digits HL in (TEXCLO++)
  637.  
  638.         LD      HL,(POINTP2)
  639.         LD      DE,TEXT4+20
  640.         LD      (TEXCLO),DE
  641.         CALL    POINT666 ;write 5 digits HL in (TEXCLO++)
  642.         RET
  643. POINT666
  644. ;hl=number
  645. ;write 5 digits HL in (TEXCLO++)
  646.         PUSH    HL
  647.         LD      HL,DECTB
  648.         LD      B,#05
  649. LPPD1   LD      E,(HL)
  650.         INC     HL
  651.         LD      D,(HL)
  652.         INC     HL
  653.         EX      (SP),HL
  654.         XOR     A
  655. LPPD2   INC     A
  656.         SBC     HL,DE
  657.         JR      NC,LPPD2
  658.         ADD     HL,DE
  659.         ADD     A,47
  660.         PUSH    HL
  661.         LD      HL,(TEXCLO)
  662.         LD      (HL),A
  663.         INC     HL
  664.         LD      (TEXCLO),HL
  665.         POP     HL
  666.         EX      (SP),HL
  667.         DJNZ    LPPD1
  668.         POP     HL
  669.         RET
  670. DECTB   DEFW    10000,1000,100,10,1
  671. TEXCLO  DEFW    0
  672.  
  673. POINT
  674.         ld de,100 ;прибавка по умолчанию (для босса)
  675.         PUSH    IX
  676.         LD      IX,(BOMIX)
  677.         LD      A,(IX+UNIT_BITPARENTSBULL)
  678.         CP      1
  679.         JP      Z,POINT1
  680.         CP      2
  681.         JP      Z,POINT2
  682.         POP     IX
  683.         RET
  684. POINT1  POP     IX
  685.         LD      A,(IX+UNIT_TYPEOFTANK)
  686.         CP      1
  687.         CALL    Z,PDE1
  688.         CP      11
  689.         CALL    Z,PDE1
  690.         CP      2
  691.         CALL    Z,PDE2 ;бронетранспортёр
  692.         CP      12
  693.         CALL    Z,PDE2 ;мигающий бронетранспортёр
  694.         CP      3
  695.         CALL    Z,PDE3 ;броневик
  696.         CP      13
  697.         CALL    Z,PDE3 ;мигающий броневик
  698.         CP      4
  699.         CALL    Z,PDE4 ;не попадает на жёлтом танке на 21 уровне, но попадает на жёлтом танке на 31 уровне (когда он уже стал синим)!!! почему???
  700.          CP     14
  701.          CALL   Z,PDE4 ;на всякий случай на 21 уровне???
  702.         LD      HL,(POINTP1)
  703.         ADD     HL,DE
  704.         LD      (POINTP1),HL
  705.         LD      HL,(JOINTP1)
  706.         ADD     HL,DE
  707.         LD      (JOINTP1),HL
  708.         RET
  709. PDE1    LD      DE,10
  710.         LD      HL,(T1)
  711.         INC     HL
  712.         LD      (T1),HL
  713.         RET
  714. PDE2    LD      DE,20
  715.         LD      HL,(T2)
  716.         INC     HL
  717.         LD      (T2),HL
  718.         RET
  719. PDE3    LD      DE,30
  720.         LD      HL,(T3)
  721.         INC     HL
  722.         LD      (T3),HL
  723.         RET
  724. PDE4    LD      DE,40
  725.         LD      HL,(T4)
  726.         INC     HL
  727.         LD      (T4),HL
  728.         RET
  729. PDE12   LD      DE,10
  730.         LD      HL,(T12)
  731.         INC     HL
  732.         LD      (T12),HL
  733.         RET
  734. PDE22   LD      DE,20
  735.         LD      HL,(T22)
  736.         INC     HL
  737.         LD      (T22),HL
  738.         RET
  739. PDE32   LD      DE,30
  740.         LD      HL,(T32)
  741.         INC     HL
  742.         LD      (T32),HL
  743.         RET
  744. PDE42   LD      DE,40
  745.         LD      HL,(T42)
  746.         INC     HL
  747.         LD      (T42),HL
  748.         RET
  749. PDE5    LD      DE,50
  750.         RET
  751. POINT2  POP     IX
  752.         LD      A,(IX+UNIT_TYPEOFTANK)
  753.         CP      1
  754.         CALL    Z,PDE12
  755.         CP      11
  756.         CALL    Z,PDE12
  757.         CP      2
  758.         CALL    Z,PDE22
  759.         CP      12
  760.         CALL    Z,PDE22
  761.         CP      3
  762.         CALL    Z,PDE32
  763.         CP      13
  764.         CALL    Z,PDE32
  765.         CP      4
  766.         CALL    Z,PDE42
  767.          CP     14
  768.          CALL   Z,PDE42 ;на всякий случай на 21 уровне???
  769.         LD      HL,(POINTP2)
  770.         ADD     HL,DE
  771.         LD      (POINTP2),HL
  772.         LD      HL,(JOINTP2)
  773.         ADD     HL,DE
  774.         LD      (JOINTP2),HL
  775.         RET
  776.  
  777. ENE0    LD      HL,SPRENE0;256+128+46 ;"10"
  778.         RET
  779. ENE1    LD      HL,SPRENE1;256+128+48 ;"20"
  780.         RET
  781. ENE2    LD      HL,SPRENE2;256+128+50 ;"30"
  782.         RET
  783. ENE3    LD      HL,SPRENE3;256+128+52 ;"40"
  784.         RET
  785.  
  786. SLOTIME LD      A,(TANKP)
  787.         CP      0
  788.         RET     NZ
  789.         LD      A,(TIMES)
  790.         CP      0
  791.         RET     Z
  792.         DEC     A
  793.         LD      (TIMES),A
  794.         RET
  795.  
  796. SLOTIM2 LD      A,(TANKP)
  797.         CP      0
  798.         RET     NZ
  799.         LD      A,(TIMEW)
  800.         CP      0
  801.         RET     Z
  802.         DEC     A
  803.         LD      (TIMEW),A
  804.         RET
  805.  
  806. BARM    LD      A,(BETONARM)
  807.         CP      1
  808.         JP      Z,BARM2
  809.         CP      0
  810.         RET     Z
  811.         LD      A,(TANKP)
  812.         CP      0
  813.         RET     NZ
  814.         LD      A,(BETONARM)
  815.         DEC     A
  816.         LD      (BETONARM),A
  817.         RET
  818. BETONARM        DEFB    0
  819.  
  820. BARM2   LD      A,2
  821.         LD      (STEN),A
  822.         CALL    INSTAL
  823.         XOR     A
  824.         LD      (BETONARM),A
  825.         RET
  826.  
  827. FIRE1P  LD      HL,(Keys2PlFr)  ;LD             HL,Keys2PlFr+2
  828.                 LD      B,H                             ;LD             BC,(Keys2PlFr)
  829.                 LD      C,#FE                   ;CALL   CHBIT
  830.                 IN      A,(C)
  831.         AND     L
  832.                 RET     NZ
  833.        
  834.         LD      IX,UNITS
  835.         LD      DE,4*UNITSZ;96
  836.         ADD     IX,DE
  837.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  838.         CP      0
  839.         RET     NZ
  840.         LD      A,(IX+UNIT_YESORNOT)
  841.         CP      0
  842.         RET     Z
  843.         CP      4 ;BADABUM
  844.         RET     Z
  845.         LD      A,(IX+UNIT_TIMEFORSHOTONWAR)
  846.         CP      0
  847.         RET     NZ
  848.         LD      DE,UNITSZ;24
  849.         ADD     IX,DE
  850.         LD      A,(IX+UNIT_YESORNOT)
  851.         CP      0
  852.         JP      NZ,NEXBUL4
  853.         LD      IX,UNITS
  854.         LD      DE,4*UNITSZ;96
  855.         ADD     IX,DE
  856.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  857.         LD      A,(IX+UNIT_STAR)
  858.         CP      2
  859.         CALL    NC,IX13
  860.         LD      L,(IX+UNIT_X)
  861.         LD      H,(IX+UNIT_X+1)
  862.         LD      C,(IX+UNIT_Y)
  863.         LD      B,(IX+UNIT_Y+1)
  864.         LD      A,(IX+UNIT_STAR)
  865.         LD      D,A
  866.         LD      A,(IX+UNIT_DIRECTION)
  867.         LD      E,A
  868. NEXBUL3 PUSH    DE
  869.         LD      DE,UNITSZ;24
  870.         ADD     IX,DE
  871.         POP     DE
  872.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  873.         LD      (IX+UNIT_STOPBIT),0
  874.         LD      A,D
  875.         LD      (IX+UNIT_STAR),A
  876.         PUSH    IX,HL,DE,BC
  877.         LD      A,6
  878.         CALL    AFXPLAY
  879.         POP     BC,DE,HL,IX
  880.         LD      A,E
  881.         CP      1
  882.         JP      Z,PBUL1
  883.         CP      3
  884.         JP      Z,PBUL2
  885.         CP      2
  886.         JP      Z,PBUL3
  887.         CP      4
  888.         JP      Z,PBUL4
  889.         RET
  890. SOUND   DEFB    0
  891. FIRE1   LD              A,(TIMEW)
  892.                 CP              0
  893.                 RET             NZ
  894.         IF KEMPSTON             ;Replace 1st player's control to Kempston joystick
  895.         ld a,(kempstonbuttons) ;IN      A,(#1F)
  896.         AND     %00010000
  897.         JP      NZ,KEYFIRE1_pressed
  898.         ENDIF
  899.         LD      HL,(Keys1PlFr)  ;LD             HL,Keys1PlFr+2
  900.         LD      B,H                             ;LD             BC,(Keys1PlFr)
  901.         LD      C,#FE                   ;CALL   CHBIT
  902.         IN      A,(C)
  903.         AND     L
  904.         RET     NZ
  905. KEYFIRE1_pressed
  906.                 LD              IX,UNITS
  907.                 LD              A,(IX+UNIT_BITFRIENDLYFIRE)
  908.                 CP              0
  909.                 RET             NZ
  910.                 LD              A,(IX+UNIT_YESORNOT)
  911.                 CP              0
  912.                 RET             Z
  913.                 CP              4 ;BADABUM
  914.                 RET             Z
  915.                 LD              A,(IX+UNIT_TIMEFORSHOTONWAR)
  916.                 CP              0
  917.                 RET             NZ
  918.  
  919.                 LD              DE,UNITSZ;24
  920.                 ADD             IX,DE
  921.                 LD              A,(IX+UNIT_YESORNOT)
  922.                 CP              0
  923.                 JP              NZ,NEXBUL
  924.                 LD              IX,UNITS
  925.                 LD              (IX+UNIT_TIMEFORSHOTONWAR),16
  926.                 LD              A,(IX+UNIT_STAR)
  927.                 CP              2
  928.                 CALL    NC,IX13
  929.                 LD              L,(IX+UNIT_X)
  930.                 LD              H,(IX+UNIT_X+1)
  931.                 LD              C,(IX+UNIT_Y)
  932.                 LD              B,(IX+UNIT_Y+1)
  933.                 LD              A,(IX+UNIT_STAR)
  934.                 LD              D,A
  935.                 LD              A,(IX+UNIT_DIRECTION)
  936.                 LD              E,A
  937.  
  938. NEXBUL2 PUSH    DE
  939.         LD      DE,UNITSZ;24
  940.         ADD     IX,DE
  941.         POP     DE
  942.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  943.         LD      (IX+UNIT_STOPBIT),0
  944.         LD      A,D
  945.         LD      (IX+UNIT_STAR),A
  946.         PUSH    IX,HL,DE,BC
  947.         LD      A,6
  948.         CALL    AFXPLAY
  949.         POP     BC,DE,HL,IX
  950.         LD      A,E
  951.         CP      1
  952.         JP      Z,PBUL1
  953.         CP      3
  954.         JP      Z,PBUL2
  955.         CP      2
  956.         JP      Z,PBUL3
  957.         CP      4
  958.         JP      Z,PBUL4
  959.         RET
  960. IX13
  961.         LD      (IX+UNIT_TIMEFORSHOTONWAR),10
  962.         RET
  963. NEXBUL
  964.         LD      DE,UNITSZ;24
  965.         ADD     IX,DE
  966.         LD      A,(IX+UNIT_YESORNOT)
  967.         CP      0
  968.         RET     NZ
  969.         LD      A,(IX+UNIT_STAR)
  970.         CP      0
  971.         RET     Z
  972.  
  973.         LD      IX,UNITS
  974.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  975.         LD      L,(IX+UNIT_X)
  976.         LD      H,(IX+UNIT_X+1)
  977.         LD      C,(IX+UNIT_Y)
  978.         LD      B,(IX+UNIT_Y+1)
  979.         LD      A,(IX+UNIT_STAR)
  980.         LD      D,A
  981.         LD      A,(IX+UNIT_DIRECTION)
  982.         LD      E,A
  983.         PUSH    DE
  984.         LD      DE,UNITSZ;24
  985.         ADD     IX,DE
  986.         POP     DE
  987.         JP      NEXBUL2
  988. NEXBUL4
  989.         LD      DE,UNITSZ;24
  990.         ADD     IX,DE
  991.         LD      A,(IX+UNIT_YESORNOT)
  992.         CP      0
  993.         RET     NZ
  994.         LD      A,(IX+UNIT_STAR)
  995.         CP      0
  996.         RET     Z
  997.  
  998.         LD      IX,UNITS
  999.         LD      DE,4*UNITSZ;96
  1000.         ADD     IX,DE
  1001.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  1002.         LD      L,(IX+UNIT_X)
  1003.         LD      H,(IX+UNIT_X+1)
  1004.         LD      C,(IX+UNIT_Y)
  1005.         LD      B,(IX+UNIT_Y+1)
  1006.         LD      A,(IX+UNIT_STAR)
  1007.         LD      D,A
  1008.         LD      A,(IX+UNIT_DIRECTION)
  1009.         LD      E,A
  1010.         PUSH    DE
  1011.         LD      DE,UNITSZ;24
  1012.         ADD     IX,DE
  1013.         POP     DE
  1014.         JP      NEXBUL3
  1015. PBUL1   DEC     C
  1016.         DEC     C
  1017.         DEC     C
  1018.         DEC     C
  1019.         DEC     C
  1020.         DEC     C
  1021.         LD      D,0
  1022.         LD      E,SPRBULLETRIGHT;54
  1023.         LD      (IX+UNIT_NUMBERSPRITES),E
  1024.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1025.         LD      (IX+UNIT_DIRECTION),1
  1026.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1027.         LD      (IX+UNIT_X),L
  1028.         LD      (IX+UNIT_X+1),H
  1029.         LD      (IX+UNIT_Y),C
  1030.         LD      (IX+UNIT_Y+1),B
  1031.         RET
  1032. PBUL2   INC     C
  1033.         INC     C
  1034.         INC     C
  1035.         INC     C
  1036.         INC     C
  1037.         INC     C
  1038.         LD      D,0
  1039.         LD      E,SPRBULLETRIGHT;54
  1040.         LD      (IX+UNIT_NUMBERSPRITES),E
  1041.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1042.         LD      (IX+UNIT_DIRECTION),3
  1043.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1044.         LD      (IX+UNIT_X),L
  1045.         LD      (IX+UNIT_X+1),H
  1046.         LD      (IX+UNIT_Y),C
  1047.         LD      (IX+UNIT_Y+1),B
  1048.         RET
  1049. PBUL3   INC     HL
  1050.         INC     HL
  1051.         INC     HL
  1052.         INC     HL
  1053.         INC     HL
  1054.         LD      D,0
  1055.         LD      E,SPRBULLETUP;52
  1056.         LD      (IX+UNIT_NUMBERSPRITES),E
  1057.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1058.         LD      (IX+UNIT_DIRECTION),2
  1059.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1060.         LD      (IX+UNIT_X),L
  1061.         LD      (IX+UNIT_X+1),H
  1062.         LD      (IX+UNIT_Y),C
  1063.         LD      (IX+UNIT_Y+1),B
  1064.         RET
  1065. PBUL4   DEC     HL
  1066.         DEC     HL
  1067.         DEC     HL
  1068.         DEC     HL
  1069.         DEC     HL
  1070.         LD      D,0
  1071.         LD      E,SPRBULLETUP;52
  1072.         LD      (IX+UNIT_NUMBERSPRITES),E
  1073.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1074.         LD      (IX+UNIT_DIRECTION),4
  1075.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1076.         LD      (IX+UNIT_X),L
  1077.         LD      (IX+UNIT_X+1),H
  1078.         LD      (IX+UNIT_Y),C
  1079.         LD      (IX+UNIT_Y+1),B
  1080.         RET
  1081.  
  1082. FIGHT3
  1083.         LD      A,1
  1084.         LD      (PLAYER),A
  1085.         LD      HL,UP2
  1086.         LD      A,132 ;'3' inverted???
  1087.         LD      (HL),A
  1088.         LD      IX,UNITS
  1089.         LD      BC,SPRMYTANKLEVEL0+8;264 ;player 2
  1090.         ld (ix+(4*UNITSZ+UNIT_NUMBERSPRITES)),c ;(IX+97),C
  1091.         ld (ix+(4*UNITSZ+UNIT_NUMBERSPRITES+1)),b ;(IX+98),B
  1092.         ld (ix+(4*UNITSZ+UNIT_YESORNOT)),1 ;(IX+96),1
  1093.         ld (ix+(4*UNITSZ+UNIT_DIRECTION)),1 ;(IX+106),1
  1094.         ld (ix+(4*UNITSZ+UNIT_ANIMATION)),0 ;(IX+107),0
  1095.         ld (ix+(4*UNITSZ+UNIT_COUNTER)),0 ;(IX+108),0
  1096.         ld (ix+(4*UNITSZ+UNIT_TIMEFORSHOTONWAR)),0 ;(IX+109),0
  1097.         ld (ix+(4*UNITSZ+UNIT_STOPBIT)),0 ;(IX+110),0
  1098.         ld (ix+(4*UNITSZ+UNIT_BITFRIENDLYFIRE)),0 ;(IX+112),0
  1099.         ld (ix+(4*UNITSZ+UNIT_SHELLTIME)),0 ;(IX+113),0
  1100.         ld (ix+(4*UNITSZ+UNIT_ICE)),0 ;(IX+114),0
  1101.         ld (ix+(4*UNITSZ+UNIT_SAND)),0 ;(IX+115),0
  1102.         ld (ix+(4*UNITSZ+UNIT_TYPEOFTANK)),0 ;(IX+116),0
  1103.         ld (ix+(4*UNITSZ+UNIT_WATERWAY)),0 ;(IX+117),0
  1104.         ld (ix+(4*UNITSZ+UNIT_STAR)),0 ;(IX+118),0
  1105.         ld (ix+(4*UNITSZ+UNIT_ENERGY)),0 ;(IX+119),0
  1106.         PUSH    IX
  1107.         LD      DE,5*UNITSZ;120
  1108.         ADD     IX,DE
  1109.         LD      (IX+UNIT_STAR),0
  1110.         LD      DE,UNITSZ;24
  1111.         ADD     IX,DE
  1112.         LD      (IX+UNIT_STAR),0
  1113.         POP     IX
  1114.         RET
  1115.        
  1116. FIGHT
  1117.         PUSH    HL
  1118.         LD      A,8
  1119.         CALL    AFXPLAY
  1120.         CALL    PLAYSA2 ;play #17 sound frames
  1121.         POP     HL
  1122.         XOR     A
  1123.         LD      (PLAYER),A
  1124.         PUSH    HL
  1125.         LD      HL,UP1
  1126.        if MANYLIVES
  1127.         ld a,128+9
  1128.        else
  1129.         LD      A,132 ;'3' inverted
  1130.        endif
  1131.         LD      (HL),A
  1132.         LD      HL,UP2
  1133.         LD      A,129 ;'0' inverted
  1134.         LD      (HL),A
  1135.  
  1136.         POP     HL
  1137.         LD      IX,UNITS
  1138.         LD      (IX+UNIT_YESORNOT),1 ;SHOT1
  1139.         LD      BC,SPRMYTANKLEVEL0;256
  1140.         LD      (IX+UNIT_NUMBERSPRITES),C
  1141.         LD      (IX+UNIT_NUMBERSPRITES+1),B
  1142.         LD      (IX+UNIT_DIRECTION),1
  1143.         LD      (IX+UNIT_COUNTER),0
  1144.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  1145.         LD      (IX+UNIT_STOPBIT),0
  1146.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1147.         LD      (IX+UNIT_SHELLTIME),0
  1148.         LD      (IX+UNIT_ICE),0
  1149.         LD      (IX+UNIT_SAND),0
  1150.         LD      (IX+UNIT_TYPEOFTANK),0
  1151.         LD      (IX+UNIT_WATERWAY),0
  1152.         LD      (IX+UNIT_STAR),0
  1153.         LD      (IX+UNIT_ENERGY),0
  1154.         PUSH    IX
  1155.         LD      DE,UNITSZ;24
  1156.         ADD     IX,DE
  1157.         LD      (IX+UNIT_STAR),0
  1158.         ;LD     DE,24
  1159.         ADD     IX,DE
  1160.         LD      (IX+UNIT_STAR),0
  1161.         POP     IX
  1162.  
  1163.         LD      (IX+96),0
  1164.         LD      A,L
  1165.         CP      136
  1166.         CALL    Z,FIGHT3
  1167.         POP     HL
  1168.         XOR     A
  1169.         LD      HL,(KORM);---X
  1170.         LD      BC,(KORM2);----Y
  1171.         LD      D,2 ;nsprites
  1172.         ;CALL   PRINT ;зачем???
  1173.          xor a
  1174.          ld (sprlist+1),a ;disable sprite #0
  1175. FIGHT2  LD      HL,(Keys1PlStart)       ;LD             HL,Keys1PlStart+2
  1176.         LD      B,H                             ;LD             BC,(Keys1PlStart)
  1177.         LD      C,#FE                   ;CALL   CHBIT
  1178.         IN      A,(C)
  1179.         AND     L
  1180.         JR      Z,FIGHT2 ;wait for unpress of "start"
  1181. FIGHTT
  1182.        call clstiles_white
  1183.  
  1184.         CALL    CHEKPOINT
  1185. ;сюда попадает в том числе после прохождения уровня
  1186.        call clstiles_white
  1187.         ;LD     BC,BORDER
  1188.         ;LD     A,8
  1189.         ;OUT    (C),A
  1190.         call border8
  1191.         XOR     A
  1192.         LD      (TIMES),A
  1193.         LD      (TIMEW),A
  1194.         LD      IX,UNITS
  1195.         LD      (IX+UNIT_DIRECTION),1
  1196.         LD      (IX+UNIT_COUNTER),0
  1197.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  1198.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1199.         LD      DE,UNITSZ;24
  1200.         ADD     IX,DE
  1201.         LD      (IX+UNIT_COUNTER),0
  1202.         LD      (IX+UNIT_DIRECTION),0
  1203.         ;LD     DE,24
  1204.         ADD     IX,DE
  1205.         LD      (IX+UNIT_COUNTER),0
  1206.         LD      (IX+UNIT_DIRECTION),0
  1207.          xor a
  1208.          ld (sprlist+1),a ;disable sprite #0
  1209.          ld (sprlist+6+1),a ;disable sprite #1
  1210.          ld (sprlist+12+1),a ;disable sprite #2
  1211.          ld (sprlist+18+1),a ;disable sprite #3
  1212.         CALL    INTRO
  1213.         ;LD     BC,PAGE3
  1214.         ;LD     A,#C3
  1215.         ;OUT    (C),A
  1216.        ;call setpgc3
  1217.        ;CALL    #C000 ;init muzmain
  1218.        ;CALL    #CBB8 ;init muzboss
  1219.        ;LD      A,255
  1220.        ;LD      (SOUNDW),A ;время до окончания музыки
  1221.        xor a
  1222.        ld (SOUNDW),a ;music off ;не помогает
  1223.        call afxinit ;stop sound
  1224.  
  1225.         CALL    CLS
  1226.         CALL    TILL;               PRINT TILES ;set tilemode
  1227.         LD      A,(MAP)
  1228.         CP      15
  1229.         CALL    Z,OPRED
  1230.         CP      31
  1231.         CALL    Z,OPRED2
  1232.         CALL    PRTAN
  1233.         CALL    TEXTLEF
  1234.         XOR     A
  1235.         LD      (TANK),A
  1236.         LD      (TANKP),A
  1237.         LD      (MESTO),A
  1238.         LD      A,150
  1239.         LD      (NEWW),A
  1240.         LD      (NEWLEVEL),A
  1241.         CALL    LOADAREA
  1242.         LD      A,(MAP)
  1243.         CP      15
  1244.         JP      Z,BBBSSS
  1245.         CP      31
  1246.         JP      NZ,NTTT
  1247.         LD      A,32
  1248.         LD      (BOSTART),A
  1249.         LD      A,0
  1250.         LD      (BOS),A
  1251.         LD      A,3
  1252.         LD      (WARTAN),A
  1253.         ld ix,UNITS
  1254.         ld a,(IX+UNIT_WATERWAY)
  1255.         ld (WR1),a
  1256.         ld (IX+UNIT_WATERWAY),0
  1257.         ld a,(ix+(4*UNITSZ+UNIT_WATERWAY)) ;(IX+117)
  1258.         ld (WR2),a
  1259.         ld (ix+(4*UNITSZ+UNIT_WATERWAY)),0 ;(IX+117),0
  1260.         ld de,14*UNITSZ ;336
  1261.         add ix,de
  1262.         ld (IX+UNIT_YESORNOT),1 ;SHOT1
  1263.         ld (IX+UNIT_TYPEOFTANK),7
  1264. NTTT    CALL    BOSS
  1265.          ;jr $
  1266.          ld a,22
  1267.          ld (animwater_a),a
  1268.          ld (animwater_olda),a
  1269.         ;CALL   I22 ;???какое-то удвоение тайлов леса?
  1270.         CALL    INSTAL2
  1271.         CALL    INSARM
  1272.         ;CALL   IM2INIT ;???
  1273.  
  1274.         ld a,(timer)
  1275.         ld (uvoldtimer),a
  1276.        
  1277.          xor a
  1278.          ld (sprlist+1),a ;disable sprite #0
  1279.        call setpgc3
  1280.        CALL     #C000 ;init muzmain
  1281.        CALL     #CBB8 ;init muzboss
  1282.        LD       A,255
  1283.        LD       (SOUNDW),A ;время до окончания музыки
  1284.         JP      KERNF
  1285.  
  1286. BBBSSS  LD      A,3
  1287.         LD      (BOS2),A
  1288.         LD      A,3
  1289.         LD      (WARTAN),A
  1290.         JR      NTTT
  1291. OPRED
  1292.         LD      A,3
  1293.         LD      (WARTAN),A
  1294.         RET
  1295. OPRED2
  1296.         XOR     A
  1297.         LD      (WARTAN),A
  1298.         RET
  1299. BOS2    DEFB    0
  1300. TANKP33
  1301.         XOR     A
  1302.         RET
  1303.  
  1304. TIME    DEFB    0
  1305.  
  1306. TIME2   XOR     A
  1307.         RET
  1308.  
  1309. ANIMWATER
  1310.         LD      A,(TANKP) ;фаза анимации танка???
  1311.         CP      2
  1312.         JP      Z,ANIMW1
  1313.         RET
  1314. ANIMW   DEFB    0
  1315. ANIMW22 XOR     A
  1316.         RET
  1317. ANIMW1  LD      HL,49152+2048+128+16+8
  1318.         LD      A,(ANIMW)
  1319.         INC     A
  1320.         CP      6
  1321.         CALL    Z,ANIMW22 ;xor a
  1322.         LD      (ANIMW),A
  1323.        if 1==1
  1324.         cp 3
  1325.         ld a,(animwater_a)
  1326.         ld (animwater_olda),a
  1327.        ld c,a
  1328.         ld a,WATERANIMTILE
  1329.         jr c,$+3
  1330.         inc a
  1331.         ld (animwater_a),a
  1332.        cp c
  1333.        ret z
  1334.         ld hl,tilemap
  1335.         ld b,0
  1336.         ld e,15
  1337. animwater0
  1338. animwater_olda=$+1
  1339.         ld a,WATERANIMTILE
  1340. animwater1
  1341.         dup 17 ;5 bytes (нельзя убирать последний полный!)
  1342.         cp (hl)
  1343.         jr z,animwater_ok
  1344.         inc l ;TILEMAPRIGHT
  1345.         inc l ;TILEMAPRIGHT
  1346.         edup
  1347.         ld c,BYTESPERTILELINE*2-34
  1348.         add hl,bc
  1349.         dec e
  1350.         jp nz,animwater0
  1351.         ret ;14665;18403;22939;24132;36700 на уровне с боссом
  1352. animwater_ok
  1353.        if 1==1
  1354. animwater_a=$+1
  1355.         ld c,WATERANIMTILE
  1356.         ld (hl),c
  1357.         inc l
  1358.         ld (hl),c
  1359.         set 6,l
  1360.         ld (hl),c
  1361.         dec l
  1362.         ld (hl),c
  1363.          set 3,h
  1364.         ld c,TILEFLAG1        
  1365.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1366.         inc l
  1367.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1368.         res 6,l
  1369.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1370.         dec l
  1371.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1372.          res 3,h
  1373.          set 4,h
  1374.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1375.         inc l
  1376.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1377.         set 6,l
  1378.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1379.         dec l
  1380.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1381.          res 4,h
  1382.         res 6,l
  1383.        else
  1384.         ex af,af'
  1385. animwater_a=$+1
  1386.        ld a,WATERANIMTILE
  1387.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1388.        inc l ;TILEMAPRIGHT
  1389.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1390.        set 6,l;TILEMAPLINEDOWN
  1391.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1392.        dec l ;TILEMAPLEFT
  1393.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1394.        res 6,l;TILEMAPLINEUP
  1395.        ex af,af'
  1396.        endif
  1397.         inc l ;TILEMAPRIGHT
  1398.         inc l ;TILEMAPRIGHT
  1399.         cp (hl)
  1400.         jr z,animwater_ok
  1401.         ex af,af'
  1402.        push hl
  1403.        ld a,l
  1404.        and 63
  1405.        ld c,a ;X
  1406.        rra ;X/2
  1407.        add a,c
  1408.        add a,c
  1409.        ld c,a ;5*(X/2)
  1410.        ld hl,animwater1
  1411.        add hl,bc
  1412.        ex (sp),hl
  1413.        ex af,af'
  1414.         ret
  1415.        else
  1416.         LD      D,0
  1417.         LD      E,A
  1418.         ADD     HL,DE
  1419.         LD      DE,49152+32+56
  1420.         LD      B,1 ;wid/8-1?
  1421.         LD      C,7 ;hgt-1?
  1422.         LD      A,#C0
  1423.         LD      (PAGETO),A
  1424.         LD      A,#C0
  1425.         LD      (PAGEFR),A
  1426.         LD      A,%00110001
  1427.         CALL    DMASTART
  1428.         RET
  1429.        endif
  1430.  
  1431. MATEMAT
  1432. ;пересчёт координат юнита в адрес в tilemap
  1433.         ;LD     BC,PAGE3
  1434.         ;LD     A,#08
  1435.         ;OUT    (C),A
  1436.         LD      L,(IX+UNIT_X)
  1437.         LD      H,(IX+UNIT_X+1)
  1438. MATEMAT_HL
  1439.         call setpg8
  1440.         LD      A,L
  1441.         ;SRL    A
  1442.         ;SRL    A
  1443.         ;SRL    A
  1444.         ;SLA    A
  1445.         ;SLA    A
  1446.         ;SLA    A
  1447.          and 0xf8
  1448.         LD      L,A
  1449.         LD      A,H
  1450.         ;LD     (SPMETKA),A
  1451.          rra
  1452.         LD      A,L
  1453.          rra ;RRCA
  1454.         RRCA
  1455.         if BYTESPERTILE == 1
  1456.          rrca
  1457.         endif
  1458.         ;LD     L,A
  1459.         ;PUSH   HL
  1460.         ;POP    DE
  1461.          ld e,a
  1462.          ld d,0
  1463.         LD      L,(IX+UNIT_Y)
  1464.         LD      H,(IX+UNIT_Y+1)
  1465.         LD      A,L
  1466.         ;SRL    A
  1467.         ;SRL    A
  1468.         ;SRL    A
  1469.         ;SLA    A
  1470.         ;SLA    A
  1471.         ;SLA    A
  1472.          and 0xf8
  1473.         LD      L,A
  1474.  
  1475.         ADD     HL,HL
  1476.         ADD     HL,HL
  1477.         ADD     HL,HL
  1478.         if BYTESPERTILE == 2
  1479.          ADD    HL,HL ;
  1480.         endif
  1481.         if BYTESPERTILELINE == 256
  1482.          ADD    HL,HL ;
  1483.         endif
  1484.         PUSH    HL
  1485.         POP     BC
  1486.         ;LD     HL,#C000
  1487.         LD      HL,tilemap
  1488.         ADD     HL,DE
  1489.         ;LD     A,(SPMETKA)
  1490.         ;CP     1
  1491.         ;CALL   Z,SPADD ;hl-=256-64
  1492.         ADD     HL,BC
  1493.         LD      A,(HL)
  1494.         LD      (IX+UNIT_SAND),A
  1495.         LD      (IX+UNIT_ICE),A
  1496.         RET
  1497.  
  1498. SPACEF  LD      HL,(Keys1PlStart)       ;LD             HL,Keys1PlStart+2
  1499.                 LD      B,H                             ;LD             BC,(Keys1PlStart)
  1500.                 LD      C,#FE                   ;CALL   CHBIT
  1501.                 IN      A,(C)
  1502.         AND     L
  1503.                 RET             NZ
  1504.                 ;LD             BC,PAGE3; CHANGE MEMORY FOR SPRITES
  1505.                 ;LD             A,#08
  1506.                 ;OUT            (C),A
  1507.                 ;RET
  1508.                 jp setpg8
  1509.  
  1510. LAYERS2
  1511.         LD      HL,sprlist+22*6 ;#200
  1512.         ;LD     DE,22*6;132
  1513.         ;ADD    HL,DE
  1514.         JR      LAYER
  1515. LAYERS
  1516.         LD      HL,sprlist+24*6 ;#200
  1517.         ;LD     DE,24*6;144
  1518.         ;ADD    HL,DE
  1519. LAYER   ;LD     (HL),0;-------PRINT INSTAL SPRITES
  1520.         INC     HL
  1521.         ;LD     A,SPSIZ16+SPACT;  SIZE SPRITE Y
  1522.         ;RES    5,A
  1523.         ;SET    6,A;------------------DEACTIVACIA SPRITES
  1524.         LD      (HL),0x40;A
  1525.         ;INC    HL
  1526.         ;LD     (HL),0;--------X
  1527.         ;INC    HL
  1528.         ;LD     A,SPSIZ16; SIZE SPRITE X
  1529.         ;LD     (HL),A
  1530.         ;INC    HL
  1531.         ;LD     A,0; NUMBER OFF SPRITE IN MEMORY
  1532.         ;LD     (HL),A
  1533.         ;INC    HL
  1534.         ;LD     (HL),0
  1535.         ;INC    HL
  1536.         RET
  1537. PEXIT
  1538.         LD      IX,BRONITS
  1539.         LD      A,(ENDG)
  1540.         or a ;CP        0
  1541.         ;JR     Z,BTTT
  1542.         CALL    nz,LAYERS ;24-й спрайт закрывает список спрайтов
  1543. ;BTTT
  1544.  
  1545.         LD      A,(IX+UNIT_YESORNOT)
  1546.         CP      6
  1547.         CALL    Z,ARMS
  1548.         LD      A,(IX+UNIT_YESORNOT)
  1549.         LD      (YESORNO),A
  1550.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1551.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1552.         LD      (NUMBS),HL
  1553.         LD      E,(IX+UNIT_X)
  1554.         LD      D,(IX+UNIT_X+1)
  1555.         LD      (ADDRY),DE
  1556.         LD      E,(IX+UNIT_Y)
  1557.         LD      D,(IX+UNIT_Y+1)
  1558.         LD      (ADDRX),DE
  1559.         LD      a,(IX+UNIT_DESCRADDR)
  1560.         ;LD     D,0
  1561.         LD      (ADDR),a;DE
  1562.         ;LD     D,2
  1563.         CALL    PRINTW
  1564.  
  1565.         LD      DE,UNITSZ;24
  1566.         ADD     IX,DE
  1567.  
  1568.         LD      A,(IX+UNIT_YESORNOT)
  1569.         CP      6
  1570.         CALL    Z,ARMS
  1571.         CP      7
  1572.         CALL    Z,END1
  1573.  
  1574.         LD      A,(IX+UNIT_YESORNOT)
  1575.         LD      (YESORNO),A
  1576.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1577.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1578.         LD      (NUMBS),HL
  1579.         LD      E,(IX+UNIT_X)
  1580.         LD      D,(IX+UNIT_X+1)
  1581.         LD      (ADDRY),DE
  1582.         LD      E,(IX+UNIT_Y)
  1583.         LD      D,(IX+UNIT_Y+1)
  1584.         LD      (ADDRX),DE
  1585.         LD      a,(IX+UNIT_DESCRADDR)
  1586.         ;LD     D,0
  1587.         LD      (ADDR),a;DE
  1588.         ;LD     D,2
  1589.         CALL    PRINTW
  1590.  
  1591.         LD      DE,UNITSZ;24
  1592.         ADD     IX,DE
  1593.         LD      A,(IX+UNIT_YESORNOT)
  1594.         CP      6
  1595.         CALL    Z,ARMS
  1596.         CP      8
  1597.         CALL    Z,END2
  1598.         LD      A,(IX+UNIT_YESORNOT)
  1599.         LD      (YESORNO),A
  1600.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1601.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1602.         LD      (NUMBS),HL
  1603.         LD      E,(IX+UNIT_X)
  1604.         LD      D,(IX+UNIT_X+1)
  1605.         LD      (ADDRY),DE
  1606.         LD      E,(IX+UNIT_Y)
  1607.         LD      D,(IX+UNIT_Y+1)
  1608.         LD      (ADDRX),DE
  1609.         LD      a,(IX+UNIT_DESCRADDR)
  1610.         ;LD     D,0
  1611.         LD      (ADDR),a;DE
  1612.         ;LD     D,2
  1613.         CALL    PRINTW
  1614. ;XXX    LD      BC,TSCONFIG; SPRITE PRINT
  1615. ;       LD      A,%11100000
  1616. ;       OUT     (C),A
  1617.         CALL    INTELLE
  1618.         CALL    BOSS
  1619.  
  1620.  
  1621.         CALL    NEWWAR
  1622.         CALL    ANIMWATER
  1623.  
  1624.  
  1625.         LD      A,(ENDG)
  1626.         or a;CP 0
  1627.         JR      NZ,KERFFF
  1628.         CALL    GAMEOV
  1629.         CALL    GAMEOV2
  1630.         LD      A,(TIMEW)
  1631.         or a;CP 0
  1632.         JR      NZ,KERFFF
  1633.         CALL    KEY1P
  1634.         CALL    KEY2P
  1635. KERFFF  LD      A,(TANKP)
  1636.         INC     A
  1637.         CP      4
  1638.         CALL    Z,TANKP2
  1639.         CP      8
  1640.         CALL    Z,TANKP3
  1641.         LD      (TANKP),A
  1642.         LD      A,(TANKPP)
  1643.         INC     A
  1644.         CP      32
  1645.         CALL    Z,TANKP33
  1646.         LD      (TANKPP),A
  1647. ;    CALL    EXIT; EXIT IF YOU PUSH KEY Q
  1648.         CALL    SPACEF ;setpg8 if some key in Keys1PlStart ???
  1649.         CALL    BARM ;handles (BETONARM)
  1650.         CALL    SLOTIME
  1651.         CALL    SLOTIM2
  1652.  
  1653.         ;POP IY,IX,AF,BC,DE,HL
  1654.         ;EI
  1655.         RET
  1656.  
  1657. D4      LD      D,6
  1658.         RET
  1659. BRIGHT  LD      A,(IX+UNIT_YESORNOT)
  1660.         CP      1 ;SHOT1
  1661.         RET     NZ
  1662.         LD      A,(TANKP)
  1663.         CP      3
  1664.         CALL    Z,BRI1
  1665.         CP      7
  1666.         CALL    Z,BRI2
  1667.         RET
  1668. BRI1    xor a;LD        A,0
  1669.         LD      (YESORNO),A
  1670.         RET
  1671. BRI2    LD      A,1
  1672.         LD      (YESORNO),A
  1673.         RET
  1674. SHOT2   LD      A,(TANKP)
  1675.         or a;CP 0
  1676.         RET     NZ
  1677.         LD      A,(IX+UNIT_SHELLTIME)
  1678.         or a;CP 0
  1679.         RET     Z
  1680.         DEC     A
  1681.         LD      (IX+UNIT_SHELLTIME),A
  1682.         RET
  1683.  
  1684. ;PRINTAN
  1685. logic
  1686. ;       DI
  1687. ;       PUSH HL,DE,BC,AF,IX,IY
  1688.  
  1689.         LD      A,(ENDG)
  1690.         CP      0
  1691.         JR      NZ,KERNFFF
  1692.         CALL    FIRE1
  1693.         CALL    FIRE1P
  1694. KERNFFF
  1695.         LD      IX,UNITS
  1696. PRINCIK
  1697.         LD      A,(IX+UNIT_YESORNOT)
  1698.         LD      (YESORNO),A
  1699.         CP      255 ;end of list of objects
  1700.         JP      Z,PEXIT
  1701.         CP      2
  1702.         CALL    Z,BULL1
  1703.         LD      A,(IX+UNIT_YESORNOT)
  1704.         CP      5
  1705.         CALL    Z,RELESE
  1706.         LD      A,(IX+UNIT_YESORNOT)
  1707.         CP      3
  1708.         CALL    Z,BONG1 ;попал в стену
  1709.         LD      A,(IX+UNIT_YESORNOT)
  1710.         CP      4
  1711.         CALL    Z,BADABUM ;попал в танк
  1712.         LD      A,(IX+UNIT_YESORNOT)
  1713.         CP      7
  1714.         CALL    Z,P500
  1715.         LD      A,(IX+UNIT_YESORNOT)
  1716.         CP      1
  1717.         CALL    Z,SHOT1
  1718.         LD      A,(IX+UNIT_YESORNOT)
  1719.         CP      8
  1720.         CALL    Z,LAYERS2
  1721.  
  1722.         CALL    SHOT2
  1723.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  1724.         CP      253
  1725.         JR      Z,Z1X
  1726.         or a;CP 0
  1727.         CALL    NZ,BRIGHT
  1728. Z1X     LD      L,(IX+UNIT_NUMBERSPRITES)
  1729.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1730.         LD      A,(IX+UNIT_TYPEOFTANK)
  1731.         CP      11
  1732.         CALL    Z,ADD20
  1733.         CP      12
  1734.         CALL    Z,ADD20
  1735.         CP      13
  1736.         CALL    Z,ADD20
  1737.         LD      A,(IX+UNIT_TYPEOFTANK)
  1738.         CP      21
  1739.         CALL    NC,ADD21
  1740.         LD      A,(IX+UNIT_ANIMATION)
  1741.         CP      1
  1742.         CALL    Z,ANIMAC
  1743.         LD      A,(IX+UNIT_DIRECTION)
  1744.         CP      2
  1745.         CALL    Z,DIR2 ;if tank, hl+=4
  1746.         LD      A,(IX+UNIT_DIRECTION)
  1747.         CP      4
  1748.         CALL    Z,DIR2 ;if tank, hl+=4
  1749.         LD      (NUMBS),HL
  1750.         LD      E,(IX+UNIT_X)
  1751.         LD      D,(IX+UNIT_X+1)
  1752.         LD      (ADDRY),DE
  1753.         LD      E,(IX+UNIT_Y)
  1754.         LD      D,(IX+UNIT_Y+1)
  1755.         LD      (ADDRX),DE
  1756.  
  1757.         LD      E,(IX+UNIT_DESCRADDR)
  1758.         LD      D,0
  1759.         LD      (ADDR),DE
  1760.         LD      D,2
  1761.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  1762.         CP      253
  1763.         CALL    Z,D4
  1764.         CALL    PRINTW
  1765.         LD      DE,UNITSZ;24
  1766.         ADD     IX,DE
  1767.         JP      PRINCIK
  1768.  
  1769. ANIMAC
  1770.         LD      A,(IX+UNIT_YESORNOT)
  1771.         CP      2
  1772.         RET     NC ;not a tank
  1773.         LD      A,(IX+UNIT_TYPEOFTANK)
  1774.         CP      21
  1775.         RET     NC
  1776.         LD      A,(TANK)
  1777.         LD      E,A
  1778.         LD      D,0
  1779.         ADD     HL,DE
  1780.         LD      A,(IX+UNIT_BITPARENTSBULL)
  1781.         CP      3
  1782.         RET     NC
  1783.         LD      A,4
  1784.         LD      (SOUNDGO),A
  1785.         RET
  1786.  
  1787. DIR2    LD      A,(IX+UNIT_YESORNOT)
  1788.         CP      2
  1789.         RET     NC ;not a tank
  1790.         INC     HL
  1791.         INC     HL
  1792.         INC     HL
  1793.         INC     HL ;hl=sprite for horizontal direction
  1794.         RET
  1795.  
  1796.  
  1797. ADDR    DEFW    0 ;смещение относительно sprlist (#200)
  1798. YESORNO DEFB    0
  1799. ADDRY   DEFW    0
  1800. ADDRX   DEFW    0
  1801.  
  1802. MESTO   DEFB    0
  1803.  
  1804. INSTAL2
  1805.         LD      IX,UNITS
  1806.         LD      DE,8*UNITSZ;192
  1807.         ADD     IX,DE
  1808. I33     LD      A,(IX+UNIT_YESORNOT)
  1809.         CP      0
  1810.         JP      Z,INST22
  1811.         LD      DE,2*UNITSZ;48
  1812.         ADD     IX,DE
  1813.         LD      A,(IX+UNIT_YESORNOT)
  1814.         CP      0
  1815.         JP      Z,INST22
  1816.         LD      DE,2*UNITSZ;48
  1817.         ADD     IX,DE
  1818.         LD      A,(IX+UNIT_YESORNOT)
  1819.         CP      0
  1820.         JP      Z,INST22
  1821.         LD      A,(BOS)
  1822.         CP      1
  1823.         JR      Z,ZZHH
  1824.         LD      DE,2*UNITSZ;48
  1825.         ADD     IX,DE
  1826.         LD      A,(IX+UNIT_YESORNOT)
  1827.         CP      0
  1828.         JP      Z,INST22
  1829.         LD      DE,2*UNITSZ;48
  1830.         ADD     IX,DE
  1831.         LD      A,(IX+UNIT_YESORNOT)
  1832.         CP      0
  1833.         JP      Z,INST22
  1834.         LD      DE,2*UNITSZ;48
  1835.         ADD     IX,DE
  1836.         LD      A,(IX+UNIT_YESORNOT)
  1837.         CP      0
  1838.         JP      Z,INST22
  1839. ZZHH    LD      A,255
  1840.         RET
  1841. INST22
  1842.         LD      (IX+UNIT_YESORNOT),5 ;RELESE
  1843.         LD      (IX+UNIT_DIRECTION2),3
  1844.         LD      (IX+UNIT_DIRECTION),0
  1845.         LD      HL,SPRSTAR0;256+48
  1846.         LD      (IX+UNIT_NUMBERSPRITES),L
  1847.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  1848.         LD      C,0
  1849.         LD      B,0
  1850.         LD      (IX+UNIT_X),C
  1851.         LD      (IX+UNIT_X+1),B
  1852.  
  1853.         LD      A,(MESTO)
  1854.         CP      1
  1855.         CALL    Z,INS2
  1856.         CP      2
  1857.         CALL    Z,INS3
  1858.         INC     A
  1859.         LD      (MESTO),A
  1860.  
  1861.         LD      C,0
  1862.         LD      B,0
  1863.         LD      A,(BOS)
  1864.         CP      0
  1865.         CALL    NZ,BOSNEW
  1866.         LD      (IX+UNIT_Y),C
  1867.         LD      (IX+UNIT_Y+1),B
  1868.         LD      (IX+UNIT_TIMEFORSHOTONWAR),4
  1869.         LD      (IX+UNIT_STOPBIT),0
  1870.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1871.         LD      (IX+UNIT_SHELLTIME),0
  1872.         LD      DE,UNITSZ;24
  1873.         ADD     IX,DE
  1874.         LD      (IX+UNIT_STAR),0
  1875.         RET
  1876. BOSNEW  LD      BC,32
  1877.         RET
  1878. INS2
  1879.         LD      C,128
  1880.         LD      B,0
  1881.         LD      (IX+UNIT_X),C
  1882.         LD      (IX+UNIT_X+1),B
  1883.         RET
  1884. INS3    LD      BC,256
  1885.         LD      (IX+UNIT_X),C
  1886.         LD      (IX+UNIT_X+1),B
  1887.         LD      A,255
  1888.         RET
  1889.  
  1890.        if 1==0
  1891. I22     ;LD     BC,PAGE3; CHANGE MEMORY FOR SPRITES
  1892.         ;LD     A,#08
  1893.         ;OUT    (C),A
  1894.         call setpg8
  1895.         LD      HL,#C000
  1896.         LD      B,30
  1897. LLLL    PUSH    BC
  1898.         LD      B,34
  1899. LLL     LD      A,(HL)
  1900.         CP      24 ;??? что за тайл, который надо удваивать? лес?
  1901.         CALL    Z,LL3
  1902.         INC     HL
  1903.         INC     HL
  1904.         DJNZ    LLL
  1905.         LD      DE,188
  1906.         ADD     HL,DE
  1907.         POP     BC
  1908.         DJNZ    LLLL
  1909.         RET
  1910. LL3     PUSH    HL
  1911.         LD      DE,#80
  1912.         ADD     HL,DE
  1913.         LD      (HL),A
  1914.         POP     HL
  1915.         RET
  1916.        endif
  1917.  
  1918. TILL
  1919. ;set tilemode
  1920.         if 1==0
  1921.         LD      BC,T0GPAGE
  1922.         LD      A,#C0
  1923.         OUT     (C),A
  1924.         LD      BC,TMPAG
  1925.         LD      A,#08
  1926.         OUT     (C),A
  1927.         LD      BC,T0GPAGE
  1928.         LD      A,#C0
  1929.         OUT     (C),A
  1930.         LD      BC,T1GPAGE
  1931.         LD      A,#C0
  1932.         OUT     (C),A
  1933.         LD      BC,PALSEL
  1934.         LD      A,%00000000
  1935.         OUT     (C),A
  1936.         endif
  1937.         RET
  1938.  
  1939. BULL1   LD      A,(IX+UNIT_ENERGY) ;???
  1940.         CP      2
  1941.         JR      Z,BULL2
  1942.         CP      3
  1943.         JR      Z,BULL3
  1944.         LD      A,(IX+UNIT_DIRECTION)
  1945.         CP      1
  1946.         JP      Z,BULU
  1947.         CP      3
  1948.         JP      Z,BULD
  1949.         CP      2
  1950.         JP      Z,BULR
  1951.         CP      4
  1952.         JP      Z,BULL
  1953.         RET
  1954. BULL2   LD      A,(IX+UNIT_DIRECTION)
  1955.         CP      3
  1956.         CALL    Z,BULD
  1957.         LD      A,(IX+UNIT_DIRECTION)
  1958.         CP      3
  1959.         CALL    Z,BULR
  1960.         RET
  1961. BULL3   LD      A,(IX+UNIT_DIRECTION)
  1962.         CP      3
  1963.         CALL    Z,BULD
  1964.         LD      A,(IX+UNIT_DIRECTION)
  1965.         CP      3
  1966.         CALL    Z,BULL
  1967.         RET
  1968. BULU    LD      L,(IX+UNIT_Y)
  1969.         LD      H,(IX+UNIT_Y+1)
  1970.         LD      DE,13
  1971.         ADD     HL,DE
  1972.         LD      (IX+UNIT_Y),L
  1973.         LD      (IX+UNIT_Y+1),H
  1974.         LD      A,1
  1975.         CALL    BULLSR2
  1976.         LD      L,(IX+UNIT_Y)
  1977.         LD      H,(IX+UNIT_Y+1)
  1978.         LD      DE,13
  1979.         SBC     HL,DE
  1980.         LD      (IX+UNIT_Y),L
  1981.         LD      (IX+UNIT_Y+1),H
  1982.         LD      A,(IX+UNIT_STOPBIT)
  1983.         CP      1
  1984.         JP      Z,COUNU3A
  1985.         LD      L,(IX+UNIT_Y)
  1986.         LD      H,(IX+UNIT_Y+1)
  1987.         DEC     HL
  1988.         DEC     HL
  1989.         LD      A,(IX+UNIT_STAR)
  1990.         CP      0
  1991.         CALL    NZ,ST1 ;dec hl:dec hl (move bullet faster)
  1992.         LD      A,L
  1993.         CP      248
  1994.         JP      Z,CLSBULL
  1995.         CP      247
  1996.         JP      Z,CLSBULL
  1997.         CP      246
  1998.         JP      Z,CLSBULL
  1999.         CP      245
  2000.         JP      Z,CLSBULL
  2001.        ;ld a,h
  2002.        ;or a
  2003.        ;jp nz,CLSBULL
  2004.         LD      (IX+UNIT_Y),L
  2005.         LD      (IX+UNIT_Y+1),H
  2006.         CALL    MATEMAT
  2007.         ;LD     DE,256
  2008.         ;ADD    HL,DE
  2009.          TILEMAPLINEDOWN
  2010.         LD      A,(HL)
  2011.         CP      30
  2012.         CALL    Z,EGGLE
  2013.         CP      31
  2014.         CALL    Z,EGGLE
  2015.         CP      94
  2016.         CALL    Z,EGGLE
  2017.         CP      95
  2018.         CALL    Z,EGGLE
  2019.         CP      2
  2020.         CALL    Z,COUNU
  2021.         CP      38
  2022.         CALL    Z,COUNU2
  2023.         CP      35
  2024.         CALL    Z,COUNU2
  2025.         CP      37
  2026.         CALL    Z,COUNU2
  2027.         CP      36
  2028.         CALL    Z,COUNU2
  2029.         CP      12 ;beton
  2030.         CALL    Z,COUNU3 ;changes A!
  2031.         ;INC    HL
  2032.         ;INC    HL
  2033.          TILEMAPRIGHT
  2034.         LD      A,(HL)
  2035.         CP      30
  2036.         CALL    Z,EGGLE
  2037.         CP      31
  2038.         CALL    Z,EGGLE
  2039.         CP      94
  2040.         CALL    Z,EGGLE
  2041.         CP      95
  2042.         CALL    Z,EGGLE
  2043.         CP      2
  2044.         CALL    Z,COUNU
  2045.         CP      38
  2046.         CALL    Z,COUNU2
  2047.         CP      35
  2048.         CALL    Z,COUNU2
  2049.         CP      36
  2050.         CALL    Z,COUNU2
  2051.         CP      37
  2052.         CALL    Z,COUNU2
  2053.         CP      12 ;beton
  2054.         CALL    Z,COUNU3 ;changes A!
  2055.         RET
  2056. ST1
  2057.         DEC     HL
  2058.         DEC     HL
  2059.         RET
  2060. ST22
  2061.         INC     HL
  2062.         INC     HL
  2063.         RET
  2064. COUNU   ;LD     (HL),38
  2065.          ex af,af'
  2066.         ld a,38
  2067.         call prchar_tilemap_hl
  2068.         ex af,af'
  2069.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2070.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2071.         RET
  2072. COUNU4  ;LD     (HL),36
  2073.          ex af,af'
  2074.         ld a,36
  2075.         call prchar_tilemap_hl
  2076.         ex af,af'
  2077.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2078.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2079.         RET
  2080. COUNU5  ;LD     (HL),35
  2081.          ex af,af'
  2082.         ld a,35
  2083.         call prchar_tilemap_hl
  2084.         ex af,af'
  2085.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2086.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2087.         RET
  2088. COUNU6  ;LD     (HL),37
  2089.          ex af,af'
  2090.         ld a,37
  2091.         call prchar_tilemap_hl
  2092.         ex af,af'
  2093.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2094.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2095.         RET
  2096. COUNU2  ;LD     (HL),0
  2097.          ex af,af'
  2098.         xor a
  2099.         call prchar_tilemap_hl
  2100.         ex af,af'
  2101.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2102.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2103.         RET
  2104. COUNU3  LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2105.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2106.         LD      A,(IX+UNIT_STAR)
  2107.         CP      3 ;может пробивать бетон?
  2108.         JP      Z,COUNU2
  2109.         RET
  2110. COUNU3A LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2111.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2112.         RET
  2113.  
  2114. BULR    LD      L,(IX+UNIT_X)
  2115.         LD      H,(IX+UNIT_X+1)
  2116.         LD      DE,16
  2117.         SBC     HL,DE
  2118.         LD      (IX+UNIT_X),L
  2119.         LD      (IX+UNIT_X+1),H
  2120.         LD      A,2
  2121.         CALL    BULLSRA
  2122.         LD      L,(IX+UNIT_X)
  2123.         LD      H,(IX+UNIT_X+1)
  2124.         LD      DE,16
  2125.         ADD     HL,DE
  2126.         LD      (IX+UNIT_X),L
  2127.         LD      (IX+UNIT_X+1),H
  2128.         LD      A,(IX+UNIT_STOPBIT)
  2129.         CP      1
  2130.         JP      Z,COUNU3A
  2131.         LD      L,(IX+UNIT_X)
  2132.         LD      H,(IX+UNIT_X+1)
  2133.         INC     HL
  2134.         INC     HL
  2135.         LD      A,(IX+UNIT_STAR)
  2136.         CP      0
  2137.         CALL    NZ,ST22 ;inc hl:inc hl (move bullet faster)
  2138.         LD      A,H
  2139.         CP      1
  2140.         CALL    Z,BULCH
  2141.         LD      (IX+UNIT_X),L
  2142.         LD      (IX+UNIT_X+1),H
  2143.         LD      A,(IX+UNIT_ENERGY)
  2144.         CP      0
  2145.         RET     NZ
  2146.         CALL    MATEMAT
  2147.         ;INC    HL
  2148.         ;INC    HL
  2149.          TILEMAPRIGHT
  2150.         LD      A,(HL)
  2151.         CP      30
  2152.         CALL    Z,EGGLE
  2153.         CP      31
  2154.         CALL    Z,EGGLE
  2155.         CP      94
  2156.         CALL    Z,EGGLE
  2157.         CP      95
  2158.         CALL    Z,EGGLE
  2159.         CP      2
  2160.         CALL    Z,COUNU5
  2161.         CP      38
  2162.         CALL    Z,COUNU2
  2163.         CP      36
  2164.         CALL    Z,COUNU2
  2165.         CP      37
  2166.         CALL    Z,COUNU2
  2167.         CP      35
  2168.         CALL    Z,COUNU2
  2169.         CP      12 ;beton
  2170.         CALL    Z,COUNU3 ;changes A!
  2171.         ;LD     DE,256
  2172.         ;ADD    HL,DE
  2173.          TILEMAPLINEDOWN
  2174.         LD      A,(HL)
  2175.         CP      30
  2176.         CALL    Z,EGGLE
  2177.         CP      31
  2178.         CALL    Z,EGGLE
  2179.         CP      94
  2180.         CALL    Z,EGGLE
  2181.         CP      95
  2182.         CALL    Z,EGGLE
  2183.         CP      2
  2184.         CALL    Z,COUNU5
  2185.         CP      38
  2186.         CALL    Z,COUNU2
  2187.         CP      36
  2188.         CALL    Z,COUNU2
  2189.         CP      37
  2190.         CALL    Z,COUNU2
  2191.         CP      35
  2192.         CALL    Z,COUNU2
  2193.         CP      12 ;beton
  2194.         CALL    Z,COUNU3 ;changes A!
  2195.         RET
  2196. BULCH
  2197.         LD      A,L
  2198.         CP      8
  2199.         ;JP     NC,CLSBUL
  2200.         RET c
  2201. CLSBUL  POP     AF
  2202.         JP      CLSBULL
  2203.  
  2204. CLSBUL3 LD      A,L
  2205.         ;CP     248
  2206.         ;JP     Z,CLSBUL
  2207.         ;CP     247
  2208.         ;JP     Z,CLSBUL
  2209.         ;CP     246
  2210.         ;JP     Z,CLSBUL
  2211.         ;CP     245
  2212.         ;JP     Z,CLSBUL
  2213.        cp 245
  2214.        jp nc,CLSBUL
  2215.         RET
  2216.  
  2217. BULL    LD      L,(IX+UNIT_X)
  2218.         LD      H,(IX+UNIT_X+1)
  2219.         LD      DE,16
  2220.         ADD     HL,DE
  2221.         LD      (IX+UNIT_X),L
  2222.         LD      (IX+UNIT_X+1),H
  2223.         LD      A,4
  2224.         CALL    BULLSRA
  2225.         LD      L,(IX+UNIT_X)
  2226.         LD      H,(IX+UNIT_X+1)
  2227.         LD      DE,16
  2228.         SBC     HL,DE
  2229.         LD      (IX+UNIT_X),L
  2230.         LD      (IX+UNIT_X+1),H
  2231.         LD      A,(IX+UNIT_STOPBIT)
  2232.         CP      1
  2233.         JP      Z,COUNU3A
  2234.         LD      L,(IX+UNIT_X)
  2235.         LD      H,(IX+UNIT_X+1)
  2236.         ;DEC    HL
  2237.         ;DEC    HL
  2238.         LD      A,(IX+UNIT_STAR)
  2239.         CP      0
  2240.         CALL    NZ,ST1 ;dec hl:dec hl (move bullet faster)
  2241.         LD      A,H
  2242.         CP      0
  2243.         CALL    NZ,CLSBUL3
  2244.  dec hl
  2245.  dec hl
  2246.         LD      (IX+UNIT_X),L
  2247.         LD      (IX+UNIT_X+1),H
  2248.         LD      A,(IX+UNIT_ENERGY)
  2249.         CP      0
  2250.         RET     NZ
  2251.          ;LD A,l
  2252.          ;CP 248 ;???
  2253.          ;jr c,$+5
  2254.          ;ld hl,0
  2255.          ld bc,8
  2256.          add hl,bc
  2257.         CALL    MATEMAT_HL
  2258.         ;LD     DE,6
  2259.         ;ADD    HL,DE
  2260.          ;TILEMAPRIGHT
  2261.          ;TILEMAPRIGHT
  2262.          ;TILEMAPRIGHT
  2263.         ;LD     A,(IX+UNIT_X)
  2264.         ;CP     248 ;???
  2265.         ;JP     NC,NONO ;на начало следующей строки???
  2266.         ;DEC    HL
  2267.         ;DEC    HL
  2268.         ;DEC    HL
  2269.         ;DEC    HL
  2270.          ;TILEMAPLEFT
  2271.          ;TILEMAPLEFT
  2272. NONO2
  2273.         LD      A,(HL)
  2274.         CP      30
  2275.         CALL    Z,EGGLE
  2276.         CP      31
  2277.         CALL    Z,EGGLE
  2278.         CP      94
  2279.         CALL    Z,EGGLE
  2280.         CP      95
  2281.         CALL    Z,EGGLE
  2282.         CP      2
  2283.         CALL    Z,COUNU6
  2284.         CP      38
  2285.         CALL    Z,COUNU2
  2286.         CP      36
  2287.         CALL    Z,COUNU2
  2288.         CP      37
  2289.         CALL    Z,COUNU2
  2290.         CP      35
  2291.         CALL    Z,COUNU2
  2292.         CP      12 ;beton
  2293.         CALL    Z,COUNU3 ;changes A!
  2294.         ;LD     DE,256
  2295.         ;ADD    HL,DE
  2296.          TILEMAPLINEDOWN
  2297.         LD      A,(HL)
  2298.         CP      30
  2299.         CALL    Z,EGGLE
  2300.         CP      31
  2301.         CALL    Z,EGGLE
  2302.         CP      94
  2303.         CALL    Z,EGGLE
  2304.         CP      95
  2305.         CALL    Z,EGGLE
  2306.         CP      2
  2307.         CALL    Z,COUNU6
  2308.         CP      38
  2309.         CALL    Z,COUNU2
  2310.         CP      36
  2311.         CALL    Z,COUNU2
  2312.         CP      35
  2313.         CALL    Z,COUNU2
  2314.         CP      37
  2315.         CALL    Z,COUNU2
  2316.         CP      12 ;beton
  2317.         CALL    Z,COUNU3 ;changes A!
  2318.         RET
  2319. NONO    LD      L,0 ;???
  2320.         ;LD     DE,256
  2321.         ;ADD    HL,DE
  2322.          TILEMAPLINEDOWN
  2323.         JP      NONO2
  2324.        if 1==0
  2325. BULCHL
  2326.         CP      252
  2327.         JP      Z,CLSBUL
  2328.         RET
  2329.        endif
  2330. BULD    LD      L,(IX+UNIT_Y)
  2331.         LD      H,(IX+UNIT_Y+1)
  2332.         LD      DE,8
  2333.         SBC     HL,DE
  2334.         LD      (IX+UNIT_Y),L
  2335.         LD      (IX+UNIT_Y+1),H
  2336.         LD      A,3
  2337.         CALL    BULLSR2
  2338.         LD      L,(IX+UNIT_Y)
  2339.         LD      H,(IX+UNIT_Y+1)
  2340.         LD      DE,8
  2341.         ADD     HL,DE
  2342.         LD      (IX+UNIT_Y),L
  2343.         LD      (IX+UNIT_Y+1),H
  2344.         LD      A,(IX+UNIT_STOPBIT)
  2345.         CP      1
  2346.         JP      Z,COUNU3A
  2347.         LD      L,(IX+UNIT_Y)
  2348.         LD      H,(IX+UNIT_Y+1)
  2349.         INC     HL
  2350.         INC     HL
  2351.         LD      A,(IX+UNIT_STAR)
  2352.         CP      0
  2353.         CALL    NZ,ST22 ;inc hl:inc hl (move bullet faster)
  2354.         LD      A,L
  2355.         ;CP     232
  2356.         ;JP     NC,CLSBULL
  2357.         ;CP     233
  2358.         ;JP     NC,CLSBULL
  2359.         ;CP     234
  2360.         ;JP     NC,CLSBULL
  2361.         ;CP     235
  2362.        cp MAXY+8
  2363.         JP      NC,CLSBULL
  2364.         LD      (IX+UNIT_Y),L
  2365.         LD      (IX+UNIT_Y+1),H
  2366.         LD      A,(IX+UNIT_ENERGY)
  2367.         CP      0
  2368.         RET     NZ
  2369.         CALL    MATEMAT
  2370.         ;LD     DE,256
  2371.         ;ADD    HL,DE
  2372.          TILEMAPLINEDOWN
  2373.         LD      A,(HL)
  2374.         CP      30
  2375.         CALL    Z,EGGLE
  2376.         CP      31
  2377.         CALL    Z,EGGLE
  2378.         CP      94
  2379.         CALL    Z,EGGLE
  2380.         CP      95
  2381.         CALL    Z,EGGLE
  2382.         CP      2
  2383.         CALL    Z,COUNU4
  2384.         CP      38
  2385.         CALL    Z,COUNU2
  2386.         CP      36
  2387.         CALL    Z,COUNU2
  2388.         CP      35
  2389.         CALL    Z,COUNU2
  2390.         CP      37
  2391.         CALL    Z,COUNU2
  2392.         CP      12 ;beton
  2393.         CALL    Z,COUNU3 ;changes A!
  2394.         ;INC    HL
  2395.         ;INC    HL
  2396.          TILEMAPRIGHT
  2397.         LD      A,(HL)
  2398.         CP      30
  2399.         CALL    Z,EGGLE
  2400.         CP      31
  2401.         CALL    Z,EGGLE
  2402.         CP      94
  2403.         CALL    Z,EGGLE
  2404.         CP      95
  2405.         CALL    Z,EGGLE
  2406.         CP      2
  2407.         CALL    Z,COUNU4
  2408.         CP      38
  2409.         CALL    Z,COUNU2
  2410.         CP      36
  2411.         CALL    Z,COUNU2
  2412.         CP      35
  2413.         CALL    Z,COUNU2
  2414.         CP      37
  2415.         CALL    Z,COUNU2
  2416.         CP      12 ;beton
  2417.         CALL    Z,COUNU3 ;changes A!
  2418.         RET
  2419.