?login_element?

Subversion Repositories NedoOS

Rev

Rev 1187 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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