Subversion Repositories NedoOS

Rev

Rev 833 | 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
  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
  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.         PUSH    IX
  675.         LD      IX,(BOMIX)
  676.         LD      A,(IX+UNIT_BITPARENTSBULL)
  677.         CP      1
  678.         JP      Z,POINT1
  679.         CP      2
  680.         JP      Z,POINT2
  681.         POP     IX
  682.         RET
  683. POINT1  POP     IX
  684.         LD      A,(IX+UNIT_TYPEOFTANK)
  685.         CP      1
  686.         CALL    Z,PDE1
  687.         CP      11
  688.         CALL    Z,PDE1
  689.         CP      2
  690.         CALL    Z,PDE2
  691.         CP      12
  692.         CALL    Z,PDE2
  693.         CP      3
  694.         CALL    Z,PDE3
  695.         CP      13
  696.         CALL    Z,PDE3
  697.         CP      4
  698.         CALL    Z,PDE4
  699.         LD      HL,(POINTP1)
  700.         ADD     HL,DE
  701.         LD      (POINTP1),HL
  702.         LD      HL,(JOINTP1)
  703.         ADD     HL,DE
  704.         LD      (JOINTP1),HL
  705.         RET
  706. PDE1    LD      DE,10
  707.         LD      HL,(T1)
  708.         INC     HL
  709.         LD      (T1),HL
  710.         RET
  711. PDE2    LD      DE,20
  712.         LD      HL,(T2)
  713.         INC     HL
  714.         LD      (T2),HL
  715.         RET
  716. PDE3    LD      DE,30
  717.         LD      HL,(T3)
  718.         INC     HL
  719.         LD      (T3),HL
  720.         RET
  721. PDE4    LD      DE,40
  722.         LD      HL,(T4)
  723.         INC     HL
  724.         LD      (T4),HL
  725.         RET
  726. PDE12   LD      DE,10
  727.         LD      HL,(T12)
  728.         INC     HL
  729.         LD      (T12),HL
  730.         RET
  731. PDE22   LD      DE,20
  732.         LD      HL,(T22)
  733.         INC     HL
  734.         LD      (T22),HL
  735.         RET
  736. PDE32   LD      DE,30
  737.         LD      HL,(T32)
  738.         INC     HL
  739.         LD      (T32),HL
  740.         RET
  741. PDE42   LD      DE,40
  742.         LD      HL,(T42)
  743.         INC     HL
  744.         LD      (T42),HL
  745.         RET
  746. PDE5    LD      DE,50
  747.         RET
  748. POINT2  POP     IX
  749.         LD      A,(IX+UNIT_TYPEOFTANK)
  750.         CP      1
  751.         CALL    Z,PDE12
  752.         CP      11
  753.         CALL    Z,PDE12
  754.         CP      2
  755.         CALL    Z,PDE22
  756.         CP      12
  757.         CALL    Z,PDE22
  758.         CP      3
  759.         CALL    Z,PDE32
  760.         CP      13
  761.         CALL    Z,PDE32
  762.         CP      4
  763.         CALL    Z,PDE42
  764.         LD      HL,(POINTP2)
  765.         ADD     HL,DE
  766.         LD      (POINTP2),HL
  767.         LD      HL,(JOINTP2)
  768.         ADD     HL,DE
  769.         LD      (JOINTP2),HL
  770.         RET
  771.  
  772. ENE0    LD      HL,SPRENE0;256+128+46 ;"10"
  773.         RET
  774. ENE1    LD      HL,SPRENE1;256+128+48 ;"20"
  775.         RET
  776. ENE2    LD      HL,SPRENE2;256+128+50 ;"30"
  777.         RET
  778. ENE3    LD      HL,SPRENE3;256+128+52 ;"40"
  779.         RET
  780.  
  781. SLOTIME LD      A,(TANKP)
  782.         CP      0
  783.         RET     NZ
  784.         LD      A,(TIMES)
  785.         CP      0
  786.         RET     Z
  787.         DEC     A
  788.         LD      (TIMES),A
  789.         RET
  790.  
  791. SLOTIM2 LD      A,(TANKP)
  792.         CP      0
  793.         RET     NZ
  794.         LD      A,(TIMEW)
  795.         CP      0
  796.         RET     Z
  797.         DEC     A
  798.         LD      (TIMEW),A
  799.         RET
  800.  
  801. BARM    LD      A,(BETONARM)
  802.         CP      1
  803.         JP      Z,BARM2
  804.         CP      0
  805.         RET     Z
  806.         LD      A,(TANKP)
  807.         CP      0
  808.         RET     NZ
  809.         LD      A,(BETONARM)
  810.         DEC     A
  811.         LD      (BETONARM),A
  812.         RET
  813. BETONARM        DEFB    0
  814.  
  815. BARM2   LD      A,2
  816.         LD      (STEN),A
  817.         CALL    INSTAL
  818.         XOR     A
  819.         LD      (BETONARM),A
  820.         RET
  821.  
  822. FIRE1P  LD      HL,(Keys2PlFr)  ;LD             HL,Keys2PlFr+2
  823.                 LD      B,H                             ;LD             BC,(Keys2PlFr)
  824.                 LD      C,#FE                   ;CALL   CHBIT
  825.                 IN      A,(C)
  826.         AND     L
  827.                 RET     NZ
  828.        
  829.         LD      IX,UNITS
  830.         LD      DE,4*UNITSZ;96
  831.         ADD     IX,DE
  832.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  833.         CP      0
  834.         RET     NZ
  835.         LD      A,(IX+UNIT_YESORNOT)
  836.         CP      0
  837.         RET     Z
  838.         CP      4 ;BADABUM
  839.         RET     Z
  840.         LD      A,(IX+UNIT_TIMEFORSHOTONWAR)
  841.         CP      0
  842.         RET     NZ
  843.         LD      DE,UNITSZ;24
  844.         ADD     IX,DE
  845.         LD      A,(IX+UNIT_YESORNOT)
  846.         CP      0
  847.         JP      NZ,NEXBUL4
  848.         LD      IX,UNITS
  849.         LD      DE,4*UNITSZ;96
  850.         ADD     IX,DE
  851.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  852.         LD      A,(IX+UNIT_STAR)
  853.         CP      2
  854.         CALL    NC,IX13
  855.         LD      L,(IX+UNIT_X)
  856.         LD      H,(IX+UNIT_X+1)
  857.         LD      C,(IX+UNIT_Y)
  858.         LD      B,(IX+UNIT_Y+1)
  859.         LD      A,(IX+UNIT_STAR)
  860.         LD      D,A
  861.         LD      A,(IX+UNIT_DIRECTION)
  862.         LD      E,A
  863. NEXBUL3 PUSH    DE
  864.         LD      DE,UNITSZ;24
  865.         ADD     IX,DE
  866.         POP     DE
  867.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  868.         LD      (IX+UNIT_STOPBIT),0
  869.         LD      A,D
  870.         LD      (IX+UNIT_STAR),A
  871.         PUSH    IX,HL,DE,BC
  872.         LD      A,6
  873.         CALL    AFXPLAY
  874.         POP     BC,DE,HL,IX
  875.         LD      A,E
  876.         CP      1
  877.         JP      Z,PBUL1
  878.         CP      3
  879.         JP      Z,PBUL2
  880.         CP      2
  881.         JP      Z,PBUL3
  882.         CP      4
  883.         JP      Z,PBUL4
  884.         RET
  885. SOUND   DEFB    0
  886. FIRE1   LD              A,(TIMEW)
  887.                 CP              0
  888.                 RET             NZ
  889.         IFNDEF  KEMPSTONE_HACK
  890.                 LD      HL,(Keys1PlFr)  ;LD             HL,Keys1PlFr+2
  891.                 LD      B,H                             ;LD             BC,(Keys1PlFr)
  892.                 LD      C,#FE                   ;CALL   CHBIT
  893.                 IN      A,(C)
  894.         AND     L
  895.                 RET     NZ
  896.                 ELSE
  897.                 IN              A,(#1F) ;??? TODO use OS
  898.                 AND             %00010000
  899.                 RET             Z
  900.         ENDIF
  901.                 LD              IX,UNITS
  902.                 LD              A,(IX+UNIT_BITFRIENDLYFIRE)
  903.                 CP              0
  904.                 RET             NZ
  905.                 LD              A,(IX+UNIT_YESORNOT)
  906.                 CP              0
  907.                 RET             Z
  908.                 CP              4 ;BADABUM
  909.                 RET             Z
  910.                 LD              A,(IX+UNIT_TIMEFORSHOTONWAR)
  911.                 CP              0
  912.                 RET             NZ
  913.  
  914.                 LD              DE,UNITSZ;24
  915.                 ADD             IX,DE
  916.                 LD              A,(IX+UNIT_YESORNOT)
  917.                 CP              0
  918.                 JP              NZ,NEXBUL
  919.                 LD              IX,UNITS
  920.                 LD              (IX+UNIT_TIMEFORSHOTONWAR),16
  921.                 LD              A,(IX+UNIT_STAR)
  922.                 CP              2
  923.                 CALL    NC,IX13
  924.                 LD              L,(IX+UNIT_X)
  925.                 LD              H,(IX+UNIT_X+1)
  926.                 LD              C,(IX+UNIT_Y)
  927.                 LD              B,(IX+UNIT_Y+1)
  928.                 LD              A,(IX+UNIT_STAR)
  929.                 LD              D,A
  930.                 LD              A,(IX+UNIT_DIRECTION)
  931.                 LD              E,A
  932.  
  933. NEXBUL2 PUSH    DE
  934.         LD      DE,UNITSZ;24
  935.         ADD     IX,DE
  936.         POP     DE
  937.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  938.         LD      (IX+UNIT_STOPBIT),0
  939.         LD      A,D
  940.         LD      (IX+UNIT_STAR),A
  941.         PUSH    IX,HL,DE,BC
  942.         LD      A,6
  943.         CALL    AFXPLAY
  944.         POP     BC,DE,HL,IX
  945.         LD      A,E
  946.         CP      1
  947.         JP      Z,PBUL1
  948.         CP      3
  949.         JP      Z,PBUL2
  950.         CP      2
  951.         JP      Z,PBUL3
  952.         CP      4
  953.         JP      Z,PBUL4
  954.         RET
  955. IX13
  956.         LD      (IX+UNIT_TIMEFORSHOTONWAR),10
  957.         RET
  958. NEXBUL
  959.         LD      DE,UNITSZ;24
  960.         ADD     IX,DE
  961.         LD      A,(IX+UNIT_YESORNOT)
  962.         CP      0
  963.         RET     NZ
  964.         LD      A,(IX+UNIT_STAR)
  965.         CP      0
  966.         RET     Z
  967.  
  968.         LD      IX,UNITS
  969.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  970.         LD      L,(IX+UNIT_X)
  971.         LD      H,(IX+UNIT_X+1)
  972.         LD      C,(IX+UNIT_Y)
  973.         LD      B,(IX+UNIT_Y+1)
  974.         LD      A,(IX+UNIT_STAR)
  975.         LD      D,A
  976.         LD      A,(IX+UNIT_DIRECTION)
  977.         LD      E,A
  978.         PUSH    DE
  979.         LD      DE,UNITSZ;24
  980.         ADD     IX,DE
  981.         POP     DE
  982.         JP      NEXBUL2
  983. NEXBUL4
  984.         LD      DE,UNITSZ;24
  985.         ADD     IX,DE
  986.         LD      A,(IX+UNIT_YESORNOT)
  987.         CP      0
  988.         RET     NZ
  989.         LD      A,(IX+UNIT_STAR)
  990.         CP      0
  991.         RET     Z
  992.  
  993.         LD      IX,UNITS
  994.         LD      DE,4*UNITSZ;96
  995.         ADD     IX,DE
  996.         LD      (IX+UNIT_TIMEFORSHOTONWAR),16
  997.         LD      L,(IX+UNIT_X)
  998.         LD      H,(IX+UNIT_X+1)
  999.         LD      C,(IX+UNIT_Y)
  1000.         LD      B,(IX+UNIT_Y+1)
  1001.         LD      A,(IX+UNIT_STAR)
  1002.         LD      D,A
  1003.         LD      A,(IX+UNIT_DIRECTION)
  1004.         LD      E,A
  1005.         PUSH    DE
  1006.         LD      DE,UNITSZ;24
  1007.         ADD     IX,DE
  1008.         POP     DE
  1009.         JP      NEXBUL3
  1010. PBUL1   DEC     C
  1011.         DEC     C
  1012.         DEC     C
  1013.         DEC     C
  1014.         DEC     C
  1015.         DEC     C
  1016.         LD      D,0
  1017.         LD      E,SPRBULLETRIGHT;54
  1018.         LD      (IX+UNIT_NUMBERSPRITES),E
  1019.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1020.         LD      (IX+UNIT_DIRECTION),1
  1021.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1022.         LD      (IX+UNIT_X),L
  1023.         LD      (IX+UNIT_X+1),H
  1024.         LD      (IX+UNIT_Y),C
  1025.         LD      (IX+UNIT_Y+1),B
  1026.         RET
  1027. PBUL2   INC     C
  1028.         INC     C
  1029.         INC     C
  1030.         INC     C
  1031.         INC     C
  1032.         INC     C
  1033.         LD      D,0
  1034.         LD      E,SPRBULLETRIGHT;54
  1035.         LD      (IX+UNIT_NUMBERSPRITES),E
  1036.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1037.         LD      (IX+UNIT_DIRECTION),3
  1038.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1039.         LD      (IX+UNIT_X),L
  1040.         LD      (IX+UNIT_X+1),H
  1041.         LD      (IX+UNIT_Y),C
  1042.         LD      (IX+UNIT_Y+1),B
  1043.         RET
  1044. PBUL3   INC     HL
  1045.         INC     HL
  1046.         INC     HL
  1047.         INC     HL
  1048.         INC     HL
  1049.         LD      D,0
  1050.         LD      E,SPRBULLETUP;52
  1051.         LD      (IX+UNIT_NUMBERSPRITES),E
  1052.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1053.         LD      (IX+UNIT_DIRECTION),2
  1054.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1055.         LD      (IX+UNIT_X),L
  1056.         LD      (IX+UNIT_X+1),H
  1057.         LD      (IX+UNIT_Y),C
  1058.         LD      (IX+UNIT_Y+1),B
  1059.         RET
  1060. PBUL4   DEC     HL
  1061.         DEC     HL
  1062.         DEC     HL
  1063.         DEC     HL
  1064.         DEC     HL
  1065.         LD      D,0
  1066.         LD      E,SPRBULLETUP;52
  1067.         LD      (IX+UNIT_NUMBERSPRITES),E
  1068.         LD      (IX+UNIT_NUMBERSPRITES+1),D
  1069.         LD      (IX+UNIT_DIRECTION),4
  1070.         LD      (IX+UNIT_YESORNOT),2 ;BULL1
  1071.         LD      (IX+UNIT_X),L
  1072.         LD      (IX+UNIT_X+1),H
  1073.         LD      (IX+UNIT_Y),C
  1074.         LD      (IX+UNIT_Y+1),B
  1075.         RET
  1076.  
  1077. FIGHT3
  1078.         LD      A,1
  1079.         LD      (PLAYER),A
  1080.         LD      HL,UP2
  1081.         LD      A,132 ;'3' inverted???
  1082.         LD      (HL),A
  1083.         LD      IX,UNITS
  1084.         LD      BC,SPRMYTANKLEVEL0+8;264 ;player 2
  1085.         ld (ix+(4*UNITSZ+UNIT_NUMBERSPRITES)),c ;(IX+97),C
  1086.         ld (ix+(4*UNITSZ+UNIT_NUMBERSPRITES+1)),b ;(IX+98),B
  1087.         ld (ix+(4*UNITSZ+UNIT_YESORNOT)),1 ;(IX+96),1
  1088.         ld (ix+(4*UNITSZ+UNIT_DIRECTION)),1 ;(IX+106),1
  1089.         ld (ix+(4*UNITSZ+UNIT_ANIMATION)),0 ;(IX+107),0
  1090.         ld (ix+(4*UNITSZ+UNIT_COUNTER)),0 ;(IX+108),0
  1091.         ld (ix+(4*UNITSZ+UNIT_TIMEFORSHOTONWAR)),0 ;(IX+109),0
  1092.         ld (ix+(4*UNITSZ+UNIT_STOPBIT)),0 ;(IX+110),0
  1093.         ld (ix+(4*UNITSZ+UNIT_BITFRIENDLYFIRE)),0 ;(IX+112),0
  1094.         ld (ix+(4*UNITSZ+UNIT_SHELLTIME)),0 ;(IX+113),0
  1095.         ld (ix+(4*UNITSZ+UNIT_ICE)),0 ;(IX+114),0
  1096.         ld (ix+(4*UNITSZ+UNIT_SAND)),0 ;(IX+115),0
  1097.         ld (ix+(4*UNITSZ+UNIT_TYPEOFTANK)),0 ;(IX+116),0
  1098.         ld (ix+(4*UNITSZ+UNIT_WATERWAY)),0 ;(IX+117),0
  1099.         ld (ix+(4*UNITSZ+UNIT_STAR)),0 ;(IX+118),0
  1100.         ld (ix+(4*UNITSZ+UNIT_ENERGY)),0 ;(IX+119),0
  1101.         PUSH    IX
  1102.         LD      DE,5*UNITSZ;120
  1103.         ADD     IX,DE
  1104.         LD      (IX+UNIT_STAR),0
  1105.         LD      DE,UNITSZ;24
  1106.         ADD     IX,DE
  1107.         LD      (IX+UNIT_STAR),0
  1108.         POP     IX
  1109.         RET
  1110.        
  1111. FIGHT
  1112.         PUSH    HL
  1113.         LD      A,8
  1114.         CALL    AFXPLAY
  1115.         CALL    PLAYSA2 ;play #17 sound frames
  1116.         POP     HL
  1117.         XOR     A
  1118.         LD      (PLAYER),A
  1119.         PUSH    HL
  1120.         LD      HL,UP1
  1121.        if MANYLIVES
  1122.         ld a,128+9
  1123.        else
  1124.         LD      A,132 ;'3' inverted???
  1125.        endif
  1126.         LD      (HL),A
  1127.         LD      HL,UP2
  1128.         LD      A,129
  1129.         LD      (HL),A
  1130.  
  1131.         POP     HL
  1132.         LD      IX,UNITS
  1133.         LD      (IX+UNIT_YESORNOT),1 ;SHOT1
  1134.         LD      BC,SPRMYTANKLEVEL0;256
  1135.         LD      (IX+UNIT_NUMBERSPRITES),C
  1136.         LD      (IX+UNIT_NUMBERSPRITES+1),B
  1137.         LD      (IX+UNIT_DIRECTION),1
  1138.         LD      (IX+UNIT_COUNTER),0
  1139.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  1140.         LD      (IX+UNIT_STOPBIT),0
  1141.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1142.         LD      (IX+UNIT_SHELLTIME),0
  1143.         LD      (IX+UNIT_ICE),0
  1144.         LD      (IX+UNIT_SAND),0
  1145.         LD      (IX+UNIT_TYPEOFTANK),0
  1146.         LD      (IX+UNIT_WATERWAY),0
  1147.         LD      (IX+UNIT_STAR),0
  1148.         LD      (IX+UNIT_ENERGY),0
  1149.         PUSH    IX
  1150.         LD      DE,UNITSZ;24
  1151.         ADD     IX,DE
  1152.         LD      (IX+UNIT_STAR),0
  1153.         ;LD     DE,24
  1154.         ADD     IX,DE
  1155.         LD      (IX+UNIT_STAR),0
  1156.         POP     IX
  1157.  
  1158.         LD      (IX+96),0
  1159.         LD      A,L
  1160.         CP      136
  1161.         CALL    Z,FIGHT3
  1162.         POP     HL
  1163.         XOR     A
  1164.         LD      HL,(KORM);---X
  1165.         LD      BC,(KORM2);----Y
  1166.         LD      D,2 ;nsprites
  1167.         ;CALL   PRINT ;зачем???
  1168.          xor a
  1169.          ld (sprlist+1),a ;disable sprite #0
  1170. FIGHT2  LD      HL,(Keys1PlStart)       ;LD             HL,Keys1PlStart+2
  1171.         LD      B,H                             ;LD             BC,(Keys1PlStart)
  1172.         LD      C,#FE                   ;CALL   CHBIT
  1173.         IN      A,(C)
  1174.         AND     L
  1175.         JR      Z,FIGHT2 ;wait for unpress of "start"
  1176. FIGHTT
  1177.        call clstiles_white
  1178.  
  1179.         CALL    CHEKPOINT
  1180. ;сюда попадает в том числе после прохождения уровня
  1181.        call clstiles_white
  1182.         ;LD     BC,BORDER
  1183.         ;LD     A,8
  1184.         ;OUT    (C),A
  1185.         call border8
  1186.         XOR     A
  1187.         LD      (TIMES),A
  1188.         LD      (TIMEW),A
  1189.         LD      IX,UNITS
  1190.         LD      (IX+UNIT_DIRECTION),1
  1191.         LD      (IX+UNIT_COUNTER),0
  1192.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  1193.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1194.         LD      DE,UNITSZ;24
  1195.         ADD     IX,DE
  1196.         LD      (IX+UNIT_COUNTER),0
  1197.         LD      (IX+UNIT_DIRECTION),0
  1198.         ;LD     DE,24
  1199.         ADD     IX,DE
  1200.         LD      (IX+UNIT_COUNTER),0
  1201.         LD      (IX+UNIT_DIRECTION),0
  1202.          xor a
  1203.          ld (sprlist+1),a ;disable sprite #0
  1204.          ld (sprlist+6+1),a ;disable sprite #1
  1205.          ld (sprlist+12+1),a ;disable sprite #2
  1206.          ld (sprlist+18+1),a ;disable sprite #3
  1207.         CALL    INTRO
  1208.         ;LD     BC,PAGE3
  1209.         ;LD     A,#C3
  1210.         ;OUT    (C),A
  1211.        ;call setpgc3
  1212.        ;CALL    #C000 ;init muzmain
  1213.        ;CALL    #CBB8 ;init muzboss
  1214.        ;LD      A,255
  1215.        ;LD      (SOUNDW),A ;время до окончания музыки
  1216.        xor a
  1217.        ld (SOUNDW),a ;music off ;не помогает
  1218.        call afxinit ;stop sound
  1219.  
  1220.         CALL    CLS
  1221.         CALL    TILL;               PRINT TILES ;set tilemode
  1222.         LD      A,(MAP)
  1223.         CP      15
  1224.         CALL    Z,OPRED
  1225.         CP      31
  1226.         CALL    Z,OPRED2
  1227.         CALL    PRTAN
  1228.         CALL    TEXTLEF
  1229.         XOR     A
  1230.         LD      (TANK),A
  1231.         LD      (TANKP),A
  1232.         LD      (MESTO),A
  1233.         LD      A,150
  1234.         LD      (NEWW),A
  1235.         LD      (NEWLEVEL),A
  1236.         CALL    LOADAREA
  1237.         LD      A,(MAP)
  1238.         CP      15
  1239.         JP      Z,BBBSSS
  1240.         CP      31
  1241.         JP      NZ,NTTT
  1242.         LD      A,32
  1243.         LD      (BOSTART),A
  1244.         LD      A,0
  1245.         LD      (BOS),A
  1246.         LD      A,3
  1247.         LD      (WARTAN),A
  1248.         ld ix,UNITS
  1249.         ld a,(IX+UNIT_WATERWAY)
  1250.         ld (WR1),a
  1251.         ld (IX+UNIT_WATERWAY),0
  1252.         ld a,(ix+(4*UNITSZ+UNIT_WATERWAY)) ;(IX+117)
  1253.         ld (WR2),a
  1254.         ld (ix+(4*UNITSZ+UNIT_WATERWAY)),0 ;(IX+117),0
  1255.         ld de,14*UNITSZ ;336
  1256.         add ix,de
  1257.         ld (IX+UNIT_YESORNOT),1 ;SHOT1
  1258.         ld (IX+UNIT_TYPEOFTANK),7
  1259. NTTT    CALL    BOSS
  1260.          ;jr $
  1261.          ld a,22
  1262.          ld (animwater_a),a
  1263.          ld (animwater_olda),a
  1264.         ;CALL   I22 ;???какое-то удвоение тайлов леса?
  1265.         CALL    INSTAL2
  1266.         CALL    INSARM
  1267.         ;CALL   IM2INIT ;???
  1268.  
  1269.         ld a,(timer)
  1270.         ld (uvoldtimer),a
  1271.        
  1272.          xor a
  1273.          ld (sprlist+1),a ;disable sprite #0
  1274.        call setpgc3
  1275.        CALL     #C000 ;init muzmain
  1276.        CALL     #CBB8 ;init muzboss
  1277.        LD       A,255
  1278.        LD       (SOUNDW),A ;время до окончания музыки
  1279.         JP      KERNF
  1280.  
  1281. BBBSSS  LD      A,3
  1282.         LD      (BOS2),A
  1283.         LD      A,3
  1284.         LD      (WARTAN),A
  1285.         JR      NTTT
  1286. OPRED
  1287.         LD      A,3
  1288.         LD      (WARTAN),A
  1289.         RET
  1290. OPRED2
  1291.         XOR     A
  1292.         LD      (WARTAN),A
  1293.         RET
  1294. BOS2    DEFB    0
  1295. TANKP33
  1296.         XOR     A
  1297.         RET
  1298.  
  1299. TIME    DEFB    0
  1300.  
  1301. TIME2   XOR     A
  1302.         RET
  1303.  
  1304. ANIMWATER
  1305.         LD      A,(TANKP) ;фаза анимации танка???
  1306.         CP      2
  1307.         JP      Z,ANIMW1
  1308.         RET
  1309. ANIMW   DEFB    0
  1310. ANIMW22 XOR     A
  1311.         RET
  1312. ANIMW1  LD      HL,49152+2048+128+16+8
  1313.         LD      A,(ANIMW)
  1314.         INC     A
  1315.         CP      6
  1316.         CALL    Z,ANIMW22 ;xor a
  1317.         LD      (ANIMW),A
  1318.        if 1==1
  1319.         cp 3
  1320.         ld a,(animwater_a)
  1321.         ld (animwater_olda),a
  1322.         ld a,WATERANIMTILE
  1323.         jr c,$+3
  1324.         inc a
  1325.         ld (animwater_a),a
  1326.         ld hl,tilemap
  1327.         ld b,0
  1328.         ld e,15
  1329. animwater0
  1330. animwater_olda=$+1
  1331.         ld a,WATERANIMTILE
  1332. animwater1
  1333.         dup 17 ;5 bytes (нельзя убирать последний полный!)
  1334.         cp (hl)
  1335.         jr z,animwater_ok
  1336.         inc l ;TILEMAPRIGHT
  1337.         inc l ;TILEMAPRIGHT
  1338.         edup
  1339.         ld c,BYTESPERTILELINE*2-34
  1340.         add hl,bc
  1341.         dec e
  1342.         jp nz,animwater0
  1343.         ret ;14665;18403;22939;24132;36700 на уровне с боссом
  1344. animwater_ok
  1345.        if 1==1
  1346. animwater_a=$+1
  1347.         ld c,WATERANIMTILE
  1348.         ld (hl),c
  1349.         inc l
  1350.         ld (hl),c
  1351.         set 6,l
  1352.         ld (hl),c
  1353.         dec l
  1354.         ld (hl),c
  1355.          set 3,h
  1356.         ld c,TILEFLAG1        
  1357.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1358.         inc l
  1359.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1360.         res 6,l
  1361.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1362.         dec l
  1363.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1364.          res 3,h
  1365.          set 4,h
  1366.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1367.         inc l
  1368.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1369.         set 6,l
  1370.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1371.         dec l
  1372.         ld (hl),c ;при печати тайла ставим биты изменения обоих экранов (а при печати спрайта надо только на текущем экране)
  1373.          res 4,h
  1374.         res 6,l
  1375.        else
  1376.         ex af,af'
  1377. animwater_a=$+1
  1378.        ld a,WATERANIMTILE
  1379.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1380.        inc l ;TILEMAPRIGHT
  1381.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1382.        set 6,l;TILEMAPLINEDOWN
  1383.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1384.        dec l ;TILEMAPLEFT
  1385.        PRCHAR_TILEMAP_HL;call prchar_tilemap_hl
  1386.        res 6,l;TILEMAPLINEUP
  1387.        ex af,af'
  1388.        endif
  1389.         inc l ;TILEMAPRIGHT
  1390.         inc l ;TILEMAPRIGHT
  1391.         cp (hl)
  1392.         jr z,animwater_ok
  1393.         ex af,af'
  1394.        push hl
  1395.        ld a,l
  1396.        and 63
  1397.        ld c,a ;X
  1398.        rra ;X/2
  1399.        add a,c
  1400.        add a,c
  1401.        ld c,a ;5*(X/2)
  1402.        ld hl,animwater1
  1403.        add hl,bc
  1404.        ex (sp),hl
  1405.        ex af,af'
  1406.         ret
  1407.        else
  1408.         LD      D,0
  1409.         LD      E,A
  1410.         ADD     HL,DE
  1411.         LD      DE,49152+32+56
  1412.         LD      B,1 ;wid/8-1?
  1413.         LD      C,7 ;hgt-1?
  1414.         LD      A,#C0
  1415.         LD      (PAGETO),A
  1416.         LD      A,#C0
  1417.         LD      (PAGEFR),A
  1418.         LD      A,%00110001
  1419.         CALL    DMASTART
  1420.         RET
  1421.        endif
  1422.  
  1423. MATEMAT
  1424. ;пересчёт координат юнита в адрес в tilemap
  1425.         ;LD     BC,PAGE3
  1426.         ;LD     A,#08
  1427.         ;OUT    (C),A
  1428.         LD      L,(IX+UNIT_X)
  1429.         LD      H,(IX+UNIT_X+1)
  1430. MATEMAT_HL
  1431.         call setpg8
  1432.         LD      A,L
  1433.         ;SRL    A
  1434.         ;SRL    A
  1435.         ;SRL    A
  1436.         ;SLA    A
  1437.         ;SLA    A
  1438.         ;SLA    A
  1439.          and 0xf8
  1440.         LD      L,A
  1441.         LD      A,H
  1442.         ;LD     (SPMETKA),A
  1443.          rra
  1444.         LD      A,L
  1445.          rra ;RRCA
  1446.         RRCA
  1447.         if BYTESPERTILE == 1
  1448.          rrca
  1449.         endif
  1450.         ;LD     L,A
  1451.         ;PUSH   HL
  1452.         ;POP    DE
  1453.          ld e,a
  1454.          ld d,0
  1455.         LD      L,(IX+UNIT_Y)
  1456.         LD      H,(IX+UNIT_Y+1)
  1457.         LD      A,L
  1458.         ;SRL    A
  1459.         ;SRL    A
  1460.         ;SRL    A
  1461.         ;SLA    A
  1462.         ;SLA    A
  1463.         ;SLA    A
  1464.          and 0xf8
  1465.         LD      L,A
  1466.  
  1467.         ADD     HL,HL
  1468.         ADD     HL,HL
  1469.         ADD     HL,HL
  1470.         if BYTESPERTILE == 2
  1471.          ADD    HL,HL ;
  1472.         endif
  1473.         if BYTESPERTILELINE == 256
  1474.          ADD    HL,HL ;
  1475.         endif
  1476.         PUSH    HL
  1477.         POP     BC
  1478.         ;LD     HL,#C000
  1479.         LD      HL,tilemap
  1480.         ADD     HL,DE
  1481.         ;LD     A,(SPMETKA)
  1482.         ;CP     1
  1483.         ;CALL   Z,SPADD ;hl-=256-64
  1484.         ADD     HL,BC
  1485.         LD      A,(HL)
  1486.         LD      (IX+UNIT_SAND),A
  1487.         LD      (IX+UNIT_ICE),A
  1488.         RET
  1489.  
  1490. SPACEF  LD      HL,(Keys1PlStart)       ;LD             HL,Keys1PlStart+2
  1491.                 LD      B,H                             ;LD             BC,(Keys1PlStart)
  1492.                 LD      C,#FE                   ;CALL   CHBIT
  1493.                 IN      A,(C)
  1494.         AND     L
  1495.                 RET             NZ
  1496.                 ;LD             BC,PAGE3; CHANGE MEMORY FOR SPRITES
  1497.                 ;LD             A,#08
  1498.                 ;OUT            (C),A
  1499.                 ;RET
  1500.                 jp setpg8
  1501.  
  1502. LAYERS2
  1503.         LD      HL,sprlist+22*6 ;#200
  1504.         ;LD     DE,22*6;132
  1505.         ;ADD    HL,DE
  1506.         JR      LAYER
  1507. LAYERS
  1508.         LD      HL,sprlist+24*6 ;#200
  1509.         ;LD     DE,24*6;144
  1510.         ;ADD    HL,DE
  1511. LAYER   ;LD     (HL),0;-------PRINT INSTAL SPRITES
  1512.         INC     HL
  1513.         ;LD     A,SPSIZ16+SPACT;  SIZE SPRITE Y
  1514.         ;RES    5,A
  1515.         ;SET    6,A;------------------DEACTIVACIA SPRITES
  1516.         LD      (HL),0x40;A
  1517.         ;INC    HL
  1518.         ;LD     (HL),0;--------X
  1519.         ;INC    HL
  1520.         ;LD     A,SPSIZ16; SIZE SPRITE X
  1521.         ;LD     (HL),A
  1522.         ;INC    HL
  1523.         ;LD     A,0; NUMBER OFF SPRITE IN MEMORY
  1524.         ;LD     (HL),A
  1525.         ;INC    HL
  1526.         ;LD     (HL),0
  1527.         ;INC    HL
  1528.         RET
  1529. PEXIT
  1530.         LD      IX,BRONITS
  1531.         LD      A,(ENDG)
  1532.         or a ;CP        0
  1533.         ;JR     Z,BTTT
  1534.         CALL    nz,LAYERS ;24-й спрайт закрывает список спрайтов
  1535. ;BTTT
  1536.  
  1537.         LD      A,(IX+UNIT_YESORNOT)
  1538.         CP      6
  1539.         CALL    Z,ARMS
  1540.         LD      A,(IX+UNIT_YESORNOT)
  1541.         LD      (YESORNO),A
  1542.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1543.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1544.         LD      (NUMBS),HL
  1545.         LD      E,(IX+UNIT_X)
  1546.         LD      D,(IX+UNIT_X+1)
  1547.         LD      (ADDRY),DE
  1548.         LD      E,(IX+UNIT_Y)
  1549.         LD      D,(IX+UNIT_Y+1)
  1550.         LD      (ADDRX),DE
  1551.         LD      a,(IX+UNIT_DESCRADDR)
  1552.         ;LD     D,0
  1553.         LD      (ADDR),a;DE
  1554.         ;LD     D,2
  1555.         CALL    PRINTW
  1556.  
  1557.         LD      DE,UNITSZ;24
  1558.         ADD     IX,DE
  1559.  
  1560.         LD      A,(IX+UNIT_YESORNOT)
  1561.         CP      6
  1562.         CALL    Z,ARMS
  1563.         CP      7
  1564.         CALL    Z,END1
  1565.  
  1566.         LD      A,(IX+UNIT_YESORNOT)
  1567.         LD      (YESORNO),A
  1568.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1569.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1570.         LD      (NUMBS),HL
  1571.         LD      E,(IX+UNIT_X)
  1572.         LD      D,(IX+UNIT_X+1)
  1573.         LD      (ADDRY),DE
  1574.         LD      E,(IX+UNIT_Y)
  1575.         LD      D,(IX+UNIT_Y+1)
  1576.         LD      (ADDRX),DE
  1577.         LD      a,(IX+UNIT_DESCRADDR)
  1578.         ;LD     D,0
  1579.         LD      (ADDR),a;DE
  1580.         ;LD     D,2
  1581.         CALL    PRINTW
  1582.  
  1583.         LD      DE,UNITSZ;24
  1584.         ADD     IX,DE
  1585.         LD      A,(IX+UNIT_YESORNOT)
  1586.         CP      6
  1587.         CALL    Z,ARMS
  1588.         CP      8
  1589.         CALL    Z,END2
  1590.         LD      A,(IX+UNIT_YESORNOT)
  1591.         LD      (YESORNO),A
  1592.         LD      L,(IX+UNIT_NUMBERSPRITES)
  1593.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1594.         LD      (NUMBS),HL
  1595.         LD      E,(IX+UNIT_X)
  1596.         LD      D,(IX+UNIT_X+1)
  1597.         LD      (ADDRY),DE
  1598.         LD      E,(IX+UNIT_Y)
  1599.         LD      D,(IX+UNIT_Y+1)
  1600.         LD      (ADDRX),DE
  1601.         LD      a,(IX+UNIT_DESCRADDR)
  1602.         ;LD     D,0
  1603.         LD      (ADDR),a;DE
  1604.         ;LD     D,2
  1605.         CALL    PRINTW
  1606. ;XXX    LD      BC,TSCONFIG; SPRITE PRINT
  1607. ;       LD      A,%11100000
  1608. ;       OUT     (C),A
  1609.         CALL    INTELLE
  1610.         CALL    BOSS
  1611.  
  1612.  
  1613.         CALL    NEWWAR
  1614.         CALL    ANIMWATER
  1615.  
  1616.  
  1617.         LD      A,(ENDG)
  1618.         or a;CP 0
  1619.         JR      NZ,KERFFF
  1620.         CALL    GAMEOV
  1621.         CALL    GAMEOV2
  1622.         LD      A,(TIMEW)
  1623.         or a;CP 0
  1624.         JR      NZ,KERFFF
  1625.         CALL    KEY1P
  1626.         CALL    KEY2P
  1627. KERFFF  LD      A,(TANKP)
  1628.         INC     A
  1629.         CP      4
  1630.         CALL    Z,TANKP2
  1631.         CP      8
  1632.         CALL    Z,TANKP3
  1633.         LD      (TANKP),A
  1634.         LD      A,(TANKPP)
  1635.         INC     A
  1636.         CP      32
  1637.         CALL    Z,TANKP33
  1638.         LD      (TANKPP),A
  1639. ;    CALL    EXIT; EXIT IF YOU PUSH KEY Q
  1640.         CALL    SPACEF ;setpg8 if some key in Keys1PlStart ???
  1641.         CALL    BARM ;handles (BETONARM)
  1642.         CALL    SLOTIME
  1643.         CALL    SLOTIM2
  1644.  
  1645.         ;POP IY,IX,AF,BC,DE,HL
  1646.         ;EI
  1647.         RET
  1648.  
  1649. D4      LD      D,6
  1650.         RET
  1651. BRIGHT  LD      A,(IX+UNIT_YESORNOT)
  1652.         CP      1 ;SHOT1
  1653.         RET     NZ
  1654.         LD      A,(TANKP)
  1655.         CP      3
  1656.         CALL    Z,BRI1
  1657.         CP      7
  1658.         CALL    Z,BRI2
  1659.         RET
  1660. BRI1    xor a;LD        A,0
  1661.         LD      (YESORNO),A
  1662.         RET
  1663. BRI2    LD      A,1
  1664.         LD      (YESORNO),A
  1665.         RET
  1666. SHOT2   LD      A,(TANKP)
  1667.         or a;CP 0
  1668.         RET     NZ
  1669.         LD      A,(IX+UNIT_SHELLTIME)
  1670.         or a;CP 0
  1671.         RET     Z
  1672.         DEC     A
  1673.         LD      (IX+UNIT_SHELLTIME),A
  1674.         RET
  1675.  
  1676. ;PRINTAN
  1677. logic
  1678. ;       DI
  1679. ;       PUSH HL,DE,BC,AF,IX,IY
  1680.  
  1681.         LD      A,(ENDG)
  1682.         CP      0
  1683.         JR      NZ,KERNFFF
  1684.         CALL    FIRE1
  1685.         CALL    FIRE1P
  1686. KERNFFF
  1687.         LD      IX,UNITS
  1688. PRINCIK
  1689.         LD      A,(IX+UNIT_YESORNOT)
  1690.         LD      (YESORNO),A
  1691.         CP      255 ;end of list of objects
  1692.         JP      Z,PEXIT
  1693.         CP      2
  1694.         CALL    Z,BULL1
  1695.         LD      A,(IX+UNIT_YESORNOT)
  1696.         CP      5
  1697.         CALL    Z,RELESE
  1698.         LD      A,(IX+UNIT_YESORNOT)
  1699.         CP      3
  1700.         CALL    Z,BONG1 ;попал в стену
  1701.         LD      A,(IX+UNIT_YESORNOT)
  1702.         CP      4
  1703.         CALL    Z,BADABUM ;попал в танк
  1704.         LD      A,(IX+UNIT_YESORNOT)
  1705.         CP      7
  1706.         CALL    Z,P500
  1707.         LD      A,(IX+UNIT_YESORNOT)
  1708.         CP      1
  1709.         CALL    Z,SHOT1
  1710.         LD      A,(IX+UNIT_YESORNOT)
  1711.         CP      8
  1712.         CALL    Z,LAYERS2
  1713.  
  1714.         CALL    SHOT2
  1715.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  1716.         CP      253
  1717.         JR      Z,Z1X
  1718.         or a;CP 0
  1719.         CALL    NZ,BRIGHT
  1720. Z1X     LD      L,(IX+UNIT_NUMBERSPRITES)
  1721.         LD      H,(IX+UNIT_NUMBERSPRITES+1)
  1722.         LD      A,(IX+UNIT_TYPEOFTANK)
  1723.         CP      11
  1724.         CALL    Z,ADD20
  1725.         CP      12
  1726.         CALL    Z,ADD20
  1727.         CP      13
  1728.         CALL    Z,ADD20
  1729.         LD      A,(IX+UNIT_TYPEOFTANK)
  1730.         CP      21
  1731.         CALL    NC,ADD21
  1732.         LD      A,(IX+UNIT_ANIMATION)
  1733.         CP      1
  1734.         CALL    Z,ANIMAC
  1735.         LD      A,(IX+UNIT_DIRECTION)
  1736.         CP      2
  1737.         CALL    Z,DIR2 ;if tank, hl+=4
  1738.         LD      A,(IX+UNIT_DIRECTION)
  1739.         CP      4
  1740.         CALL    Z,DIR2 ;if tank, hl+=4
  1741.         LD      (NUMBS),HL
  1742.         LD      E,(IX+UNIT_X)
  1743.         LD      D,(IX+UNIT_X+1)
  1744.         LD      (ADDRY),DE
  1745.         LD      E,(IX+UNIT_Y)
  1746.         LD      D,(IX+UNIT_Y+1)
  1747.         LD      (ADDRX),DE
  1748.  
  1749.         LD      E,(IX+UNIT_DESCRADDR)
  1750.         LD      D,0
  1751.         LD      (ADDR),DE
  1752.         LD      D,2
  1753.         LD      A,(IX+UNIT_BITFRIENDLYFIRE)
  1754.         CP      253
  1755.         CALL    Z,D4
  1756.         CALL    PRINTW
  1757.         LD      DE,UNITSZ;24
  1758.         ADD     IX,DE
  1759.         JP      PRINCIK
  1760.  
  1761. ANIMAC
  1762.         LD      A,(IX+UNIT_YESORNOT)
  1763.         CP      2
  1764.         RET     NC ;not a tank
  1765.         LD      A,(IX+UNIT_TYPEOFTANK)
  1766.         CP      21
  1767.         RET     NC
  1768.         LD      A,(TANK)
  1769.         LD      E,A
  1770.         LD      D,0
  1771.         ADD     HL,DE
  1772.         LD      A,(IX+UNIT_BITPARENTSBULL)
  1773.         CP      3
  1774.         RET     NC
  1775.         LD      A,4
  1776.         LD      (SOUNDGO),A
  1777.         RET
  1778.  
  1779. DIR2    LD      A,(IX+UNIT_YESORNOT)
  1780.         CP      2
  1781.         RET     NC ;not a tank
  1782.         INC     HL
  1783.         INC     HL
  1784.         INC     HL
  1785.         INC     HL ;hl=sprite for horizontal direction
  1786.         RET
  1787.  
  1788.  
  1789. ADDR    DEFW    0 ;смещение относительно sprlist (#200)
  1790. YESORNO DEFB    0
  1791. ADDRY   DEFW    0
  1792. ADDRX   DEFW    0
  1793.  
  1794. MESTO   DEFB    0
  1795.  
  1796. INSTAL2
  1797.         LD      IX,UNITS
  1798.         LD      DE,8*UNITSZ;192
  1799.         ADD     IX,DE
  1800. I33     LD      A,(IX+UNIT_YESORNOT)
  1801.         CP      0
  1802.         JP      Z,INST22
  1803.         LD      DE,2*UNITSZ;48
  1804.         ADD     IX,DE
  1805.         LD      A,(IX+UNIT_YESORNOT)
  1806.         CP      0
  1807.         JP      Z,INST22
  1808.         LD      DE,2*UNITSZ;48
  1809.         ADD     IX,DE
  1810.         LD      A,(IX+UNIT_YESORNOT)
  1811.         CP      0
  1812.         JP      Z,INST22
  1813.         LD      A,(BOS)
  1814.         CP      1
  1815.         JR      Z,ZZHH
  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      DE,2*UNITSZ;48
  1822.         ADD     IX,DE
  1823.         LD      A,(IX+UNIT_YESORNOT)
  1824.         CP      0
  1825.         JP      Z,INST22
  1826.         LD      DE,2*UNITSZ;48
  1827.         ADD     IX,DE
  1828.         LD      A,(IX+UNIT_YESORNOT)
  1829.         CP      0
  1830.         JP      Z,INST22
  1831. ZZHH    LD      A,255
  1832.         RET
  1833. INST22
  1834.         LD      (IX+UNIT_YESORNOT),5 ;RELESE
  1835.         LD      (IX+UNIT_DIRECTION2),3
  1836.         LD      (IX+UNIT_DIRECTION),0
  1837.         LD      HL,SPRSTAR0;256+48
  1838.         LD      (IX+UNIT_NUMBERSPRITES),L
  1839.         LD      (IX+UNIT_NUMBERSPRITES+1),H
  1840.         LD      C,0
  1841.         LD      B,0
  1842.         LD      (IX+UNIT_X),C
  1843.         LD      (IX+UNIT_X+1),B
  1844.  
  1845.         LD      A,(MESTO)
  1846.         CP      1
  1847.         CALL    Z,INS2
  1848.         CP      2
  1849.         CALL    Z,INS3
  1850.         INC     A
  1851.         LD      (MESTO),A
  1852.  
  1853.         LD      C,0
  1854.         LD      B,0
  1855.         LD      A,(BOS)
  1856.         CP      0
  1857.         CALL    NZ,BOSNEW
  1858.         LD      (IX+UNIT_Y),C
  1859.         LD      (IX+UNIT_Y+1),B
  1860.         LD      (IX+UNIT_TIMEFORSHOTONWAR),4
  1861.         LD      (IX+UNIT_STOPBIT),0
  1862.         LD      (IX+UNIT_BITFRIENDLYFIRE),0
  1863.         LD      (IX+UNIT_SHELLTIME),0
  1864.         LD      DE,UNITSZ;24
  1865.         ADD     IX,DE
  1866.         LD      (IX+UNIT_STAR),0
  1867.         RET
  1868. BOSNEW  LD      BC,32
  1869.         RET
  1870. INS2
  1871.         LD      C,128
  1872.         LD      B,0
  1873.         LD      (IX+UNIT_X),C
  1874.         LD      (IX+UNIT_X+1),B
  1875.         RET
  1876. INS3    LD      BC,256
  1877.         LD      (IX+UNIT_X),C
  1878.         LD      (IX+UNIT_X+1),B
  1879.         LD      A,255
  1880.         RET
  1881.  
  1882.        if 1==0
  1883. I22     ;LD     BC,PAGE3; CHANGE MEMORY FOR SPRITES
  1884.         ;LD     A,#08
  1885.         ;OUT    (C),A
  1886.         call setpg8
  1887.         LD      HL,#C000
  1888.         LD      B,30
  1889. LLLL    PUSH    BC
  1890.         LD      B,34
  1891. LLL     LD      A,(HL)
  1892.         CP      24 ;??? что за тайл, который надо удваивать? лес?
  1893.         CALL    Z,LL3
  1894.         INC     HL
  1895.         INC     HL
  1896.         DJNZ    LLL
  1897.         LD      DE,188
  1898.         ADD     HL,DE
  1899.         POP     BC
  1900.         DJNZ    LLLL
  1901.         RET
  1902. LL3     PUSH    HL
  1903.         LD      DE,#80
  1904.         ADD     HL,DE
  1905.         LD      (HL),A
  1906.         POP     HL
  1907.         RET
  1908.        endif
  1909.  
  1910. TILL
  1911. ;set tilemode
  1912.         if 1==0
  1913.         LD      BC,T0GPAGE
  1914.         LD      A,#C0
  1915.         OUT     (C),A
  1916.         LD      BC,TMPAG
  1917.         LD      A,#08
  1918.         OUT     (C),A
  1919.         LD      BC,T0GPAGE
  1920.         LD      A,#C0
  1921.         OUT     (C),A
  1922.         LD      BC,T1GPAGE
  1923.         LD      A,#C0
  1924.         OUT     (C),A
  1925.         LD      BC,PALSEL
  1926.         LD      A,%00000000
  1927.         OUT     (C),A
  1928.         endif
  1929.         RET
  1930.  
  1931. BULL1   LD      A,(IX+UNIT_ENERGY) ;???
  1932.         CP      2
  1933.         JR      Z,BULL2
  1934.         CP      3
  1935.         JR      Z,BULL3
  1936.         LD      A,(IX+UNIT_DIRECTION)
  1937.         CP      1
  1938.         JP      Z,BULU
  1939.         CP      3
  1940.         JP      Z,BULD
  1941.         CP      2
  1942.         JP      Z,BULR
  1943.         CP      4
  1944.         JP      Z,BULL
  1945.         RET
  1946. BULL2   LD      A,(IX+UNIT_DIRECTION)
  1947.         CP      3
  1948.         CALL    Z,BULD
  1949.         LD      A,(IX+UNIT_DIRECTION)
  1950.         CP      3
  1951.         CALL    Z,BULR
  1952.         RET
  1953. BULL3   LD      A,(IX+UNIT_DIRECTION)
  1954.         CP      3
  1955.         CALL    Z,BULD
  1956.         LD      A,(IX+UNIT_DIRECTION)
  1957.         CP      3
  1958.         CALL    Z,BULL
  1959.         RET
  1960. BULU    LD      L,(IX+UNIT_Y)
  1961.         LD      H,(IX+UNIT_Y+1)
  1962.         LD      DE,13
  1963.         ADD     HL,DE
  1964.         LD      (IX+UNIT_Y),L
  1965.         LD      (IX+UNIT_Y+1),H
  1966.         LD      A,1
  1967.         CALL    BULLSR2
  1968.         LD      L,(IX+UNIT_Y)
  1969.         LD      H,(IX+UNIT_Y+1)
  1970.         LD      DE,13
  1971.         SBC     HL,DE
  1972.         LD      (IX+UNIT_Y),L
  1973.         LD      (IX+UNIT_Y+1),H
  1974.         LD      A,(IX+UNIT_STOPBIT)
  1975.         CP      1
  1976.         JP      Z,COUNU3A
  1977.         LD      L,(IX+UNIT_Y)
  1978.         LD      H,(IX+UNIT_Y+1)
  1979.         DEC     HL
  1980.         DEC     HL
  1981.         LD      A,(IX+UNIT_STAR)
  1982.         CP      0
  1983.         CALL    NZ,ST1
  1984.         LD      A,L
  1985.         CP      248
  1986.         JP      Z,CLSBULL
  1987.         CP      247
  1988.         JP      Z,CLSBULL
  1989.         CP      246
  1990.         JP      Z,CLSBULL
  1991.         CP      245
  1992.         JP      Z,CLSBULL
  1993.        ;ld a,h
  1994.        ;or a
  1995.        ;jp nz,CLSBULL
  1996.         LD      (IX+UNIT_Y),L
  1997.         LD      (IX+UNIT_Y+1),H
  1998.         CALL    MATEMAT
  1999.         ;LD     DE,256
  2000.         ;ADD    HL,DE
  2001.          TILEMAPLINEDOWN
  2002.         LD      A,(HL)
  2003.         CP      30
  2004.         CALL    Z,EGGLE
  2005.         CP      31
  2006.         CALL    Z,EGGLE
  2007.         CP      94
  2008.         CALL    Z,EGGLE
  2009.         CP      95
  2010.         CALL    Z,EGGLE
  2011.         CP      2
  2012.         CALL    Z,COUNU
  2013.         CP      38
  2014.         CALL    Z,COUNU2
  2015.         CP      35
  2016.         CALL    Z,COUNU2
  2017.         CP      37
  2018.         CALL    Z,COUNU2
  2019.         CP      36
  2020.         CALL    Z,COUNU2
  2021.         CP      12
  2022.         CALL    Z,COUNU3
  2023.         ;INC    HL
  2024.         ;INC    HL
  2025.          TILEMAPRIGHT
  2026.         LD      A,(HL)
  2027.         CP      30
  2028.         CALL    Z,EGGLE
  2029.         CP      31
  2030.         CALL    Z,EGGLE
  2031.         CP      94
  2032.         CALL    Z,EGGLE
  2033.         CP      95
  2034.         CALL    Z,EGGLE
  2035.         CP      2
  2036.         CALL    Z,COUNU
  2037.         CP      38
  2038.         CALL    Z,COUNU2
  2039.         CP      35
  2040.         CALL    Z,COUNU2
  2041.         CP      36
  2042.         CALL    Z,COUNU2
  2043.         CP      37
  2044.         CALL    Z,COUNU2
  2045.         CP      12
  2046.         CALL    Z,COUNU3
  2047.         RET
  2048. ST1
  2049.         DEC     HL
  2050.         DEC     HL
  2051.         RET
  2052. ST22
  2053.         INC     HL
  2054.         INC     HL
  2055.         RET
  2056. COUNU   ;LD     (HL),38
  2057.          ex af,af'
  2058.         ld a,38
  2059.         call prchar_tilemap_hl
  2060.         ex af,af'
  2061.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2062.         LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2063.         RET
  2064. COUNU4  ;LD     (HL),36
  2065.          ex af,af'
  2066.         ld a,36
  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. COUNU5  ;LD     (HL),35
  2073.          ex af,af'
  2074.         ld a,35
  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. COUNU6  ;LD     (HL),37
  2081.          ex af,af'
  2082.         ld a,37
  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. COUNU2  ;LD     (HL),0
  2089.          ex af,af'
  2090.         xor a
  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. COUNU3  LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2097.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2098.         LD      A,(IX+UNIT_STAR)
  2099.         CP      3
  2100.         JP      Z,COUNU2
  2101.         RET
  2102. COUNU3A LD      (IX+UNIT_TIMEFORSHOTONWAR),0
  2103.         LD      (IX+UNIT_YESORNOT),3 ;BONG1
  2104.         RET
  2105.  
  2106. BULR    LD      L,(IX+UNIT_X)
  2107.         LD      H,(IX+UNIT_X+1)
  2108.         LD      DE,16
  2109.         SBC     HL,DE
  2110.         LD      (IX+UNIT_X),L
  2111.         LD      (IX+UNIT_X+1),H
  2112.         LD      A,2
  2113.         CALL    BULLSRA
  2114.         LD      L,(IX+UNIT_X)
  2115.         LD      H,(IX+UNIT_X+1)
  2116.         LD      DE,16
  2117.         ADD     HL,DE
  2118.         LD      (IX+UNIT_X),L
  2119.         LD      (IX+UNIT_X+1),H
  2120.         LD      A,(IX+UNIT_STOPBIT)
  2121.         CP      1
  2122.         JP      Z,COUNU3A
  2123.         LD      L,(IX+UNIT_X)
  2124.         LD      H,(IX+UNIT_X+1)
  2125.         INC     HL
  2126.         INC     HL
  2127.         LD      A,(IX+UNIT_STAR)
  2128.         CP      0
  2129.         CALL    NZ,ST22
  2130.         LD      A,H
  2131.         CP      1
  2132.         CALL    Z,BULCH
  2133.         LD      (IX+UNIT_X),L
  2134.         LD      (IX+UNIT_X+1),H
  2135.         LD      A,(IX+UNIT_ENERGY)
  2136.         CP      0
  2137.         RET     NZ
  2138.         CALL    MATEMAT
  2139.         ;INC    HL
  2140.         ;INC    HL
  2141.          TILEMAPRIGHT
  2142.         LD      A,(HL)
  2143.         CP      30
  2144.         CALL    Z,EGGLE
  2145.         CP      31
  2146.         CALL    Z,EGGLE
  2147.         CP      94
  2148.         CALL    Z,EGGLE
  2149.         CP      95
  2150.         CALL    Z,EGGLE
  2151.         CP      2
  2152.         CALL    Z,COUNU5
  2153.         CP      38
  2154.         CALL    Z,COUNU2
  2155.         CP      36
  2156.         CALL    Z,COUNU2
  2157.         CP      37
  2158.         CALL    Z,COUNU2
  2159.         CP      35
  2160.         CALL    Z,COUNU2
  2161.         CP      12
  2162.         CALL    Z,COUNU3
  2163.         ;LD     DE,256
  2164.         ;ADD    HL,DE
  2165.          TILEMAPLINEDOWN
  2166.         LD      A,(HL)
  2167.         CP      30
  2168.         CALL    Z,EGGLE
  2169.         CP      31
  2170.         CALL    Z,EGGLE
  2171.         CP      94
  2172.         CALL    Z,EGGLE
  2173.         CP      95
  2174.         CALL    Z,EGGLE
  2175.         CP      2
  2176.         CALL    Z,COUNU5
  2177.         CP      38
  2178.         CALL    Z,COUNU2
  2179.         CP      36
  2180.         CALL    Z,COUNU2
  2181.         CP      37
  2182.         CALL    Z,COUNU2
  2183.         CP      35
  2184.         CALL    Z,COUNU2
  2185.         CP      12
  2186.         CALL    Z,COUNU3
  2187.         RET
  2188. BULCH
  2189.         LD      A,L
  2190.         CP      8
  2191.         ;JP     NC,CLSBUL
  2192.         RET c
  2193. CLSBUL  POP     AF
  2194.         JP      CLSBULL
  2195.  
  2196. CLSBUL3 LD      A,L
  2197.         ;CP     248
  2198.         ;JP     Z,CLSBUL
  2199.         ;CP     247
  2200.         ;JP     Z,CLSBUL
  2201.         ;CP     246
  2202.         ;JP     Z,CLSBUL
  2203.         ;CP     245
  2204.         ;JP     Z,CLSBUL
  2205.        cp 245
  2206.        jp nc,CLSBUL
  2207.         RET
  2208.  
  2209. BULL    LD      L,(IX+UNIT_X)
  2210.         LD      H,(IX+UNIT_X+1)
  2211.         LD      DE,16
  2212.         ADD     HL,DE
  2213.         LD      (IX+UNIT_X),L
  2214.         LD      (IX+UNIT_X+1),H
  2215.         LD      A,4
  2216.         CALL    BULLSRA
  2217.         LD      L,(IX+UNIT_X)
  2218.         LD      H,(IX+UNIT_X+1)
  2219.         LD      DE,16
  2220.         SBC     HL,DE
  2221.         LD      (IX+UNIT_X),L
  2222.         LD      (IX+UNIT_X+1),H
  2223.         LD      A,(IX+UNIT_STOPBIT)
  2224.         CP      1
  2225.         JP      Z,COUNU3A
  2226.         LD      L,(IX+UNIT_X)
  2227.         LD      H,(IX+UNIT_X+1)
  2228.         ;DEC    HL
  2229.         ;DEC    HL
  2230.         LD      A,(IX+UNIT_STAR)
  2231.         CP      0
  2232.         CALL    NZ,ST1
  2233.         LD      A,H
  2234.         CP      0
  2235.         CALL    NZ,CLSBUL3
  2236.  dec hl
  2237.  dec hl
  2238.         LD      (IX+UNIT_X),L
  2239.         LD      (IX+UNIT_X+1),H
  2240.         LD      A,(IX+UNIT_ENERGY)
  2241.         CP      0
  2242.         RET     NZ
  2243.          ;LD A,l
  2244.          ;CP 248 ;???
  2245.          ;jr c,$+5
  2246.          ;ld hl,0
  2247.          ld bc,8
  2248.          add hl,bc
  2249.         CALL    MATEMAT_HL
  2250.         ;LD     DE,6
  2251.         ;ADD    HL,DE
  2252.          ;TILEMAPRIGHT
  2253.          ;TILEMAPRIGHT
  2254.          ;TILEMAPRIGHT
  2255.         ;LD     A,(IX+UNIT_X)
  2256.         ;CP     248 ;???
  2257.         ;JP     NC,NONO ;на начало следующей строки???
  2258.         ;DEC    HL
  2259.         ;DEC    HL
  2260.         ;DEC    HL
  2261.         ;DEC    HL
  2262.          ;TILEMAPLEFT
  2263.          ;TILEMAPLEFT
  2264. NONO2
  2265.         LD      A,(HL)
  2266.         CP      30
  2267.         CALL    Z,EGGLE
  2268.         CP      31
  2269.         CALL    Z,EGGLE
  2270.         CP      94
  2271.         CALL    Z,EGGLE
  2272.         CP      95
  2273.         CALL    Z,EGGLE
  2274.         CP      2
  2275.         CALL    Z,COUNU6
  2276.         CP      38
  2277.         CALL    Z,COUNU2
  2278.         CP      36
  2279.         CALL    Z,COUNU2
  2280.         CP      37
  2281.         CALL    Z,COUNU2
  2282.         CP      35
  2283.         CALL    Z,COUNU2
  2284.         CP      12
  2285.         CALL    Z,COUNU3
  2286.         ;LD     DE,256
  2287.         ;ADD    HL,DE
  2288.          TILEMAPLINEDOWN
  2289.         LD      A,(HL)
  2290.         CP      30
  2291.         CALL    Z,EGGLE
  2292.         CP      31
  2293.         CALL    Z,EGGLE
  2294.         CP      94
  2295.         CALL    Z,EGGLE
  2296.         CP      95
  2297.         CALL    Z,EGGLE
  2298.         CP      2
  2299.         CALL    Z,COUNU6
  2300.         CP      38
  2301.         CALL    Z,COUNU2
  2302.         CP      36
  2303.         CALL    Z,COUNU2
  2304.         CP      35
  2305.         CALL    Z,COUNU2
  2306.         CP      37
  2307.         CALL    Z,COUNU2
  2308.         CP      12
  2309.         CALL    Z,COUNU3
  2310.         RET
  2311. NONO    LD      L,0 ;???
  2312.         ;LD     DE,256
  2313.         ;ADD    HL,DE
  2314.          TILEMAPLINEDOWN
  2315.         JP      NONO2
  2316.        if 1==0
  2317. BULCHL
  2318.         CP      252
  2319.         JP      Z,CLSBUL
  2320.         RET
  2321.        endif
  2322. BULD    LD      L,(IX+UNIT_Y)
  2323.         LD      H,(IX+UNIT_Y+1)
  2324.         LD      DE,8
  2325.         SBC     HL,DE
  2326.         LD      (IX+UNIT_Y),L
  2327.         LD      (IX+UNIT_Y+1),H
  2328.         LD      A,3
  2329.         CALL    BULLSR2
  2330.         LD      L,(IX+UNIT_Y)
  2331.         LD      H,(IX+UNIT_Y+1)
  2332.         LD      DE,8
  2333.         ADD     HL,DE
  2334.         LD      (IX+UNIT_Y),L
  2335.         LD      (IX+UNIT_Y+1),H
  2336.         LD      A,(IX+UNIT_STOPBIT)
  2337.         CP      1
  2338.         JP      Z,COUNU3A
  2339.         LD      L,(IX+UNIT_Y)
  2340.         LD      H,(IX+UNIT_Y+1)
  2341.         INC     HL
  2342.         INC     HL
  2343.         LD      A,(IX+UNIT_STAR)
  2344.         CP      0
  2345.         CALL    NZ,ST22
  2346.         LD      A,L
  2347.         ;CP     232
  2348.         ;JP     NC,CLSBULL
  2349.         ;CP     233
  2350.         ;JP     NC,CLSBULL
  2351.         ;CP     234
  2352.         ;JP     NC,CLSBULL
  2353.         ;CP     235
  2354.        cp MAXY+8
  2355.         JP      NC,CLSBULL
  2356.         LD      (IX+UNIT_Y),L
  2357.         LD      (IX+UNIT_Y+1),H
  2358.         LD      A,(IX+UNIT_ENERGY)
  2359.         CP      0
  2360.         RET     NZ
  2361.         CALL    MATEMAT
  2362.         ;LD     DE,256
  2363.         ;ADD    HL,DE
  2364.          TILEMAPLINEDOWN
  2365.         LD      A,(HL)
  2366.         CP      30
  2367.         CALL    Z,EGGLE
  2368.         CP      31
  2369.         CALL    Z,EGGLE
  2370.         CP      94
  2371.         CALL    Z,EGGLE
  2372.         CP      95
  2373.         CALL    Z,EGGLE
  2374.         CP      2
  2375.         CALL    Z,COUNU4
  2376.         CP      38
  2377.         CALL    Z,COUNU2
  2378.         CP      36
  2379.         CALL    Z,COUNU2
  2380.         CP      35
  2381.         CALL    Z,COUNU2
  2382.         CP      37
  2383.         CALL    Z,COUNU2
  2384.         CP      12
  2385.         CALL    Z,COUNU3
  2386.         ;INC    HL
  2387.         ;INC    HL
  2388.          TILEMAPRIGHT
  2389.         LD      A,(HL)
  2390.         CP      30
  2391.         CALL    Z,EGGLE
  2392.         CP      31
  2393.         CALL    Z,EGGLE
  2394.         CP      94
  2395.         CALL    Z,EGGLE
  2396.         CP      95
  2397.         CALL    Z,EGGLE
  2398.         CP      2
  2399.         CALL    Z,COUNU4
  2400.         CP      38
  2401.         CALL    Z,COUNU2
  2402.         CP      36
  2403.         CALL    Z,COUNU2
  2404.         CP      35
  2405.         CALL    Z,COUNU2
  2406.         CP      37
  2407.         CALL    Z,COUNU2
  2408.         CP      12
  2409.         CALL    Z,COUNU3
  2410.         RET
  2411.