?login_element?

Subversion Repositories NedoOS

Rev

Rev 267 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ;-------РАБОТА СО СНАРЯДАМИ/ВЗРЫВАМИ/ЗАКЛИНАНИЯМИ/ДЫМОМ------
  2.  
  3. ;----------СНАРЯД ПЕРЕМЕЩАЕТСЯ/ДОСТИГ ЦЕЛИ---
  4. VV14    ;огн кольцо
  5.         LD A,(IY+7)
  6.         CALL N_IX
  7.         CALL HL_IX0
  8.         EX DE,HL
  9.         ;ударить по врагам
  10.         LD B,8 ;8 кв вокруг
  11.         LD HL,GO_Ntb-2
  12. VV14c   LD A,B
  13.         PUSHs
  14.         CALL WT
  15.         LD A,E
  16.         ADD A,L
  17.         LD L,A
  18.         LD A,D
  19.         ADD A,H
  20.         LD H,A
  21.         CALL _sMPAC
  22.         POPs
  23.         DJNZ VV14c
  24. VV13    ;закл "хрст шар"
  25.         PUSH IY
  26.         LD A,(IY+7)
  27.         CALL N_IXIY
  28.         LD L,(IY+0)
  29.         LD H,(IY+1)
  30.         LD E,(IY+2)
  31.         LD D,(IY+3)
  32.         POP IY
  33.         LD (IY+0),L
  34.         LD (IY+1),H
  35.         LD (IY+2),E
  36.         LD (IY+3),D
  37.         LD A,(IX+0)
  38.         OR A
  39.         JR Z,VVx_ ;цель уже погибла
  40.         LD A,(IY+9)
  41.         OR A
  42.         JR NZ,brrX
  43.         LD A,(IX+7) ;кончилось заклинание
  44.         AND %111
  45.         LD (IX+7),A
  46.         JR VVx_
  47.  
  48. VV11    ;облако после пожара
  49.         JR Z,VVx_
  50.         LD A,(IY+2)
  51.         DEC (IY+2)
  52.         OR A
  53.         JR NZ,brrX
  54.         DEC (IY+3)
  55.         JR brrX
  56.  
  57.  
  58. VV4     ;взр влш огня
  59. VV10    ;взр снр катап
  60. VV9     ;звeзды
  61.         JR NZ,brrX
  62.         JR Z,VVx_
  63.  
  64.  
  65. VV1     ;стрелы л
  66. VV2     ;cтрелы к
  67.         JR NZ,VVmov
  68.         ;разить врага N
  69.         CALL BMPACT
  70.         JR VVx_
  71.  
  72. vv5     ;огонь волш
  73. VV3     ;огонь свящ
  74.         JR NZ,VVmov
  75.         ;обжечь врага
  76.         CALL BMPACT
  77.         LD (IY+4),4
  78.         LD (IY+9),2;time
  79.         JR brrX
  80.  
  81. BULLty  ;п/п обр пуль/взр
  82.         DEFW VV1,VV2,VV3,VV4,vv5,VV6,VV7,VV8
  83.         DEFW VV9,VV10,VV11,VV12,VV13,VV14
  84. BULLER  ;-----обработчик пуль
  85.         LD IY,BULL
  86.         LD B,24
  87.         LD DE,12
  88. brr0    LD A,(IY+4)
  89.         OR A
  90.         JR Z,brr1
  91.         PUSH BC
  92.         PUSH DE
  93.         LD HL,BULLty-2
  94.         CALL WT
  95.         DEC (IY+9) ;уменьшить time
  96.         JP (HL)
  97. VVx_    LD (IY+4),0 ;исчезнов. снар
  98.         JR brrX
  99. VVmov   LD E,(IY+10) ;перемещ снар
  100.         LD D,(IY+11)
  101.         CALL CORiy_
  102. brrX    POP DE
  103.         POP BC
  104. brr1    ADD IY,DE
  105.         DJNZ brr0
  106.         RET
  107.  
  108. VV6     ;снр катап
  109.         JR NZ,VVmov
  110.         ;взрыв
  111.          LD A,2
  112.          CALL SOUNDy ;FX
  113.         CALL cMPACT
  114.         CALL sMPACT ;для второго удара в эпицентр
  115.         JR VV8a ;для третьего удара в эпицентр
  116.  
  117. VV8     ;огн.дождинка
  118.         JR Z,VV8r
  119.         LD DE,#0A01
  120.         CALL CORiy_
  121.         JR brrX
  122. VV8r    ;случайная сила удара дождя
  123.         CALL RND
  124.         AND 127
  125.         ADD A,30
  126.         LD (BFORCE-1+8),A
  127.         ;удар по врагу
  128. VV8a    CALL sMPACT
  129. VV8c    LD DE,#8F8
  130.         CALL CORiy_
  131.         LD (IY+4),10
  132.         LD (IY+9),3
  133.          LD A,8
  134.          CALL SOUNDy
  135.         JR brrX
  136.  
  137. VV7     ;плевок стеногрыза
  138.         JR NZ,VVmov
  139.         ;удар
  140.         CALL BMPACT
  141.          LD IX,(en_IX)
  142.          LD A,8
  143.          CALL SOUNDn
  144.         JR VV8c
  145.  
  146. VV12    ;cмерчь
  147.         JR Z,VVx_
  148.         LD A,(IY+8) ;фаза 0..2
  149.         INC A
  150.         CP 3
  151.         JR C,VV12i
  152.         XOR A
  153. VV12i   LD (IY+8),A
  154.         JR NZ,brrX ;скорость 1/3
  155.         LD L,(IY+0) ;выч коорд смерча
  156.         LD H,(IY+1)
  157.         ADD HL,HL
  158.         ADD HL,HL
  159.         ADD HL,HL
  160.         ADD HL,HL
  161.         LD E,H
  162.         LD L,(IY+2)
  163.         LD H,(IY+3)
  164.         ADD HL,HL
  165.         ADD HL,HL
  166.         ADD HL,HL
  167.         ADD HL,HL
  168.         LD L,E
  169.         INC L
  170.         DEC H ;<-H точка удара
  171.         PUSH HL
  172.         CALL GMAP
  173.         LD A,(HL)
  174.         OR A
  175.         POP HL
  176.         JP Z,VVx_ ;вышел на бордюр
  177.         CALL _sMPAC;гасить врагов внизу
  178.         JP VVmov
  179.  
  180. ;--------расчёты перемещения снарядов----
  181. SHFpre  LD BC,0 ;подготовка расчёта траектории
  182.         LD A,E
  183.         SUB L
  184.         JR NC,sgg0
  185.         NEG
  186.         INC C
  187. sgg0    LD E,A
  188.         LD A,D
  189.         SUB H
  190.         JR NC,sgg1
  191.         NEG
  192.         INC B
  193. sgg1    LD D,A
  194.         CP E
  195.         RET
  196.  
  197. SHFT8   ;выч смещения-8 для снарядов
  198.         ;hl--->de  вых:iy10,11
  199.         CALL SHFpre
  200.         LD A,8
  201.         PUSH AF
  202.         JR NC,s8g2
  203.         LD A,E
  204.         LD E,D
  205.         LD D,A
  206. s8g2    LD A,E  ;E-меньший
  207.         JR s8_16
  208.  
  209. SHFT16  ;выч смещения-16 для снарядов
  210.         ;hl--->de  вых:iy10,11
  211.         CALL SHFpre
  212.         LD A,16
  213.         PUSH AF
  214.         JR NC,s16g2
  215.         LD A,E
  216.         LD E,D
  217.         LD D,A
  218. s16g2   LD A,E  ;E-меньший
  219.         ADD A,A
  220. s8_16   ADD A,A
  221.         ADD A,A
  222.         ADD A,A ;x16/x8
  223.         INC A
  224.         LD E,A
  225.         LD L,D
  226.         CALL DIVB
  227.         POP AF
  228.         LD D,A
  229.         JR NC,s16g3
  230.         LD A,E
  231.         LD E,D
  232.         LD D,A
  233. s16g3   LD A,C
  234.         OR A
  235.         JR Z,s16g4
  236.         LD A,E
  237.         NEG
  238.         LD E,A
  239. s16g4   LD A,B
  240.         OR A
  241.         JR Z,s16g5
  242.         LD A,D
  243.         NEG
  244.         LD D,A
  245. s16g5   LD (IY+10),E
  246.         LD (IY+11),D
  247. exIY    POP IY
  248.         RET
  249.  
  250. DISTde  ;расст по ф-ле: max(|E-L|,|D-H|) ;Вых.A
  251.         LD A,L
  252.         SUB E
  253.         JR NC,d2e1
  254.         NEG
  255. d2e1    LD B,A
  256.         LD A,H
  257.         SUB D
  258.         JR NC,d2e2
  259.         NEG
  260. d2e2    CP B
  261.         RET NC
  262.         LD A,B
  263.         RET
  264.  
  265. DIRF    ;dir с равномерными секторами
  266.         CALL DIR
  267.         BIT 0,A
  268.         RET Z
  269.         PUSH AF
  270.         LD A,E
  271.         SUB L
  272.         JR NC,RF1
  273.         NEG
  274. RF1     LD L,A
  275.         LD A,D
  276.         SUB H
  277.         JR NC,RF2
  278.         NEG
  279. RF2     LD H,A
  280.         SLA A
  281.         CP L
  282.         JR C,RFM1
  283.         LD A,L
  284.         SLA A
  285.         CP H
  286.         JR C,RFM2
  287.         POP AF
  288.         RET
  289. RFT1    DEFB 2,2,6,6
  290. RFT2    DEFB 0,4,4,0
  291. RFM1    LD HL,RFT1
  292.         JR RFM0
  293. RFM2    LD HL,RFT2
  294. RFM0    POP AF
  295.         SRA A
  296.         JP BA
  297.  
  298.  
  299. ;---------выделение места в памяти под снаряд-----
  300. NEWBUL  ;--нов пуля/взр/закл ->IY! (Z/NZ - оК/нет места)
  301.         EXX
  302.         LD HL,BULL+4
  303.         LD DE,12
  304.         LD B,24
  305. nwb0    LD A,(HL)
  306.         OR A
  307.         JR Z,nwb2
  308.         ADD HL,DE
  309.         DJNZ nwb0
  310.         EXX
  311.         RET ;NZ-noOK
  312. nwb2    DEC HL
  313.         DEC HL
  314.         DEC HL
  315.         DEC HL
  316.         PUSH HL
  317.         POP IY
  318.         EXX
  319.         RET ;Z-ok
  320.  
  321. ;---------------ПОРОЖДЕНИЕ--СНАРЯДОВ-----------
  322.  
  323. NEWB06  ;снаряд катапульты (DE-цель)
  324.         LD C,6
  325.         JR sgg11
  326. newb05  ;огонь волш
  327.         LD C,5
  328.         JR sgg11
  329. NEWB03  ;огонь свящ (DE-цель)
  330.         LD C,3
  331.         JR sgg11
  332. NEWB07  ;плевок стеногр
  333.         LD C,7
  334.         JR sgg11
  335. NEWB01  LD C,1
  336.         JR sgg11
  337. NEWB02  ;нов стрела (DE-цель)
  338.         LD C,2
  339. sgg11   PUSH IY
  340.         CALL NEWBUL
  341.         JP NZ,exIY
  342. sgg12   LD (IY+4),C
  343.         LD A,(HER_N)
  344.         LD (IY+7),A
  345.         LD A,(IX+12)
  346.         LD (IY+5),A
  347.         CALL HL_IX0
  348.         PUSH HL
  349.         XOR A
  350.         CALL NEWiy_
  351.         PUSH DE
  352.         LD DE,#FC04
  353.         CALL CORiy_
  354.         POP DE
  355.         POP HL
  356.         LD A,(IX+2)
  357.         LD (IY+8),A
  358.         LD A,C
  359.         CP 3
  360.         JR Z,sgg36 ;для свящ
  361.         CP 5
  362.         JR Z,sgg36 ;для волш
  363.         CP 6
  364.         JR Z,sggk6 ;для кат
  365.         CALL DISTde
  366.         INC A
  367.         LD (IY+9),A
  368.         JP SHFT16
  369. sggk6   LD (IY+5),E
  370.         LD (IY+6),D
  371. sgg36   CALL DISTde
  372.         ADD A,A
  373.         INC A
  374.         LD (IY+9),A
  375.         JP SHFT8
  376.  
  377. NEWB09  ;нов звёзды в HL ;портит IY
  378.         CALL NEWBUL
  379.         RET NZ
  380.         PUSH IX
  381.         PUSH HL
  382.         CALL NEWiy_ ;A=0
  383.         LD (IY+4),9
  384.         LD (IY+9),6 ;time
  385.          LD A,5
  386.          POP HL
  387.          PUSH HL
  388.          LD (sIY56),HL
  389.          CALL SOUND9
  390.         POP HL
  391.         POP IX
  392.         RET
  393.  
  394. NEWB08  ;огн.дождинка (AL)
  395.         CALL NEWBUL
  396.         RET NZ
  397.         LD (IY+5),L
  398.         LD (IY+6),H
  399.         LD A,H
  400.         SUB 4  ;высота падения
  401.         LD H,A
  402.         XOR A
  403.         CALL NEWiy_
  404.         LD A,(HER_N)
  405.         OR #80 ;бит7=1 для заклинаний
  406.         LD (IY+7),A
  407.         LD (IY+4),8
  408.         LD (IY+9),7 ;time
  409.         RET
  410.  
  411. NEWB11  ;взр здания IX
  412.         CALL NEWBUL
  413.         RET NZ
  414.         CALL HL_IX0
  415.         CALL NEWiy_ ;A=0
  416.         LD DE,#FCF0
  417.         LD A,(IX+2)
  418.         LD C,20
  419.         CP 8
  420.         JR Z,n11w0
  421.         CP 18
  422.         JR Z,n11w0
  423.         LD DE,#0CF8
  424.         LD C,36
  425. n11w0   CALL CORiy_
  426.         LD (IY+4),11
  427.         LD (IY+9),C ;time
  428.         RET
  429.  
  430. NEWB14  ;ВХ: C=14/13 -огн кольцо/хруст шар (вых Z/NZ -ок/no mem)
  431.         PUSH IY
  432.         CALL NEWBUL
  433.         JP NZ,exIY
  434.         LD (IY+4),C
  435.         LD A,(IX+12)
  436.         LD (IY+7),A
  437.         LD (IY+9),150 ;время жизни заклинания
  438.         JP exIY
  439.  
  440. NEWB12  ;смерчь в HL
  441.         PUSH IY
  442.         CALL NEWBUL
  443.         JP NZ,exIY
  444.         LD C,L
  445.         CALL rn3
  446.         LD L,A
  447.         LD C,H
  448.         CALL rn3
  449.         LD H,A
  450.         CALL NEWiy_ ;A=0
  451.         LD DE,#8F8
  452.         CALL CORiy_
  453.         LD (IY+4),12
  454.         LD (IY+8),0
  455.         CALL RND
  456.         AND 63
  457.         ADD A,64
  458.         LD (IY+9),A ;время жизни заклинания
  459.         LD A,(HER_N)
  460.         OR #80 ;бит7=1 для заклинаний
  461.         LD (IY+7),A
  462.         CALL rn5
  463.         LD (IY+10),A
  464.         CALL rn5
  465.         LD (IY+11),A
  466.         JP exIY
  467.         ;
  468. rn5     ;rnd(-2..+2)
  469.         CALL RND
  470.         AND 7
  471.         CP 5
  472.         JR NC,rn5
  473.         DEC A
  474.         DEC A
  475.         RET
  476.         ;
  477. rn3     ;rnd C+(-1,0,0,+1)
  478.         CALL RND
  479.         AND 3
  480.         JR Z,rn3a
  481.         DEC A
  482.         DEC A
  483. rn3a    ADD A,C
  484.         JR Z,rn3b
  485.         CP 63
  486.         RET C
  487.         LD A,62
  488.         RET
  489. rn3b    INC A
  490.         RET
  491.  
  492. ;------------ВЫВОД ПУЛЬ/ВЗРЫВОВ--------
  493. WYbT    DEFW YU1,YU1,YU3,YU4,yu5,YU6,YU7,YU8,YU9
  494.         DEFW YU10,YU11,YU12,YU13,YU14,0,YU16,YU17,YU18
  495.  
  496. WYbull  ;получить Wh(C),Hh(B),IMGh(DE),выбрать страницу
  497.  
  498.         if EGA
  499. ;для EGA не надо тут узнавать размер, это сделает HeF1
  500.        
  501.         ld a,25
  502.         call _128
  503.         LD A,(IY+4)
  504.         LD HL,WYbT-2
  505.         CALL WT
  506.         JP (HL)
  507. YU1     ;стрелы
  508.         LD A,(IY+8)
  509.         AND 3
  510.         add a,18
  511. YU1a
  512.         add a,a
  513.         ld ($+3+2),a
  514.         ld iy,(0xc000)
  515.         JP HeF1
  516. yu5     ;огонь волшебников
  517. YU3     ;огонь свящ
  518.         LD A,(TIC)
  519.         AND 1
  520.         add a,22
  521.         JR YU1a
  522. YU4     ;взрыв огня волш
  523.         LD A,(IY+9)
  524.         AND 1
  525.         add a,24
  526.         JR YU1a
  527. YU6     ;снаряд катап
  528.         LD A,(IY+8)
  529.         add a,26
  530.         JR YU1a
  531. YU7     ;cнаряд стеногрыза
  532.         ld iy,(0xc000+(2*34))
  533.         JP HeF1
  534. YU8     ;огн дождь
  535.         ld iy,(0xc000+(2*35))
  536.         JP HeF1
  537. YU9     ;волш звзды
  538.         LD A,(TIC3)
  539.         add a,9;37
  540.         JR YU1a
  541. YU10    ;взр катап снаряда
  542.         LD A,3
  543.         SUB (IY+9)
  544.         add a,40
  545.         JR YU1a
  546. YU13    ;хруст шар
  547.         ld iy,(0xc000+(2*36))
  548.         JP HeF1
  549. YU14    ;огн пояс
  550.         LD A,(TIC3)
  551.         add a,37;12
  552.         JR YU1a
  553. YU11    ;взрыв здания
  554.         LD A,(TIC3)
  555.         add a,15
  556.         JR YU1a
  557. YU12    ;cмерч
  558.         LD A,(IY+8)
  559.         add a,12
  560.         JR YU1a
  561. YU16    ;дым,низ50%
  562.         LD A,(TIC3)
  563.         add a,3
  564.         JR YU1a
  565. YU17    ;дым,низ25%
  566.         LD A,(TIC3)
  567.         add a,6
  568.         JR YU1a
  569. YU18    ;дым,верх
  570.         LD A,(TIC3)
  571.         JR YU1a        
  572.        
  573.         else ;~EGA
  574.  
  575.         CALL MEM1
  576.         LD A,(IY+4)
  577.         LD HL,WYbT-2
  578.         CALL WT
  579.         JP (HL)
  580. YU1     ;стрелы
  581.         LD DE,WMISC1
  582.         LD A,(IY+8)
  583.         AND 3
  584. YU1a    ADD A,A
  585.         ADD A,A
  586.         ADD A,A
  587.         ADD A,A ;x16
  588.         LD L,A
  589.         LD H,0
  590.         ADD HL,DE
  591.         EX DE,HL
  592. YU1b    LD BC,#801
  593.         JP HeF1
  594. yu5     ;огонь волшебников
  595. YU3     ;огонь свящ
  596.         LD DE,4*16+WMISC1
  597.         LD A,(TIC)
  598.         AND 1
  599.         JR YU1a
  600. YU4     ;взрыв огня волш
  601.         LD DE,6*16+WMISC1
  602.         LD A,(IY+9)
  603.         AND 1
  604.         JR YU1a
  605. YU6     ;снаряд катап
  606.         LD A,(IY+8)
  607.         LD DE,8*16+WMISC1
  608.         JR YU1a
  609. YU7     ;cнаряд стеногрыза
  610.         LD DE,16*16+WMISC1
  611.         JR YU1b
  612. YU8     ;огн дождь
  613.         LD DE,17*16+WMISC1
  614.         JR YU1b
  615. YU9     ;волш звзды
  616.         LD DE,25*64+WMISC2
  617. YU9a    LD A,(TIC3)
  618.         RRCA
  619.         RRCA ;x64
  620.         LD L,A
  621.         LD H,0
  622.         ADD HL,DE
  623.         EX DE,HL
  624.         LD BC,#1002
  625.         JP HeF1
  626. YU10    ;взр катап снаряда
  627.         LD DE,5*144+WMISC3
  628.         LD A,3
  629.         SUB (IY+9)
  630. YU10a   JR Z,YU10c
  631.         CP 1
  632.         LD HL,144
  633.         JR Z,YU10b
  634.         ADD HL,HL
  635. YU10b   ADD HL,DE
  636.         EX DE,HL
  637. YU10c   CALL MEM6
  638.         LD BC,#1803
  639.         JP HeF1
  640. YU13    ;хруст шар
  641.         LD DE,144+WMISC3
  642.         JR YU10c
  643. YU14    ;огн пояс
  644.         LD DE,288+WMISC3
  645.         LD A,(TIC3)
  646.         OR A
  647.         JR YU10a
  648. YU11    ;взрыв здания
  649.         LD DE,WMISC4+768
  650.         LD A,(TIC3)
  651. YU11a   LD BC,#2004
  652.         OR A
  653.         JP Z,HeF1
  654.         INC D
  655.         DEC A
  656.         JP Z,HeF1
  657.         INC D
  658.         JP HeF1
  659. YU12    ;cмерч
  660.         LD DE,WMISC4
  661.         LD A,(IY+8)
  662.         JR YU11a
  663. YU16    ;дым,низ50%
  664.         LD DE,19*64+WMISC2
  665.         JR YU9a
  666. YU17    ;дым,низ25%
  667.         LD DE,22*64+WMISC2
  668.         JR YU9a
  669. YU18    ;дым,верх
  670.         LD DE,16*64+WMISC2
  671.         JR YU9a
  672.        
  673.         endif ;~EGA
  674.  
  675. vBULL   ;-------выв.пуль/закл/взр-----------------------
  676.         LD IY,BULL
  677.         LD B,24
  678.         LD DE,12
  679. vbu0    LD A,(IY+4)
  680.         OR A
  681.         JR Z,vbu1
  682.         PUSH BC
  683.         PUSH DE
  684.         CP 13
  685.         CALL NC,vbuCRR
  686.         INC A
  687.          if EGA
  688.          push iy
  689.          endif
  690.         CALL _XPUT
  691.          if EGA
  692.          pop iy
  693.          endif
  694.         POP DE
  695.         POP BC
  696. vbu1    ADD IY,DE
  697.         DJNZ vbu0
  698.         RET
  699.  
  700. vbuCRR  ;получить IY для 13,14
  701.         LD A,(IY+7)
  702.         PUSH IY
  703.         CALL N_IXIY
  704.         LD A,(IX+4)
  705.         LD HL,AT_TY_
  706.         CALL BA
  707.         DEC A
  708.         LD BC,0
  709.         JR Z,vuc1
  710.         LD C,4
  711. vuc1    POP IX
  712.         PUSH IX
  713.         LD L,(IY+0)
  714.         LD H,(IY+1)
  715.         XOR A
  716.         SBC HL,BC
  717.         CALL IX0_HL
  718.         LD L,(IY+2)
  719.         LD H,(IY+3)
  720.         ADD HL,BC
  721.         LD (IX+2),L
  722.         LD (IX+3),H
  723.         POP IY
  724.         INC A
  725.         RET
  726.  
  727.  
  728. vFLAME  ;--------дым пожарищ------------
  729.         LD IY,BUF512 ;врем данные
  730.         LD HL,brNUM
  731.         LD A,(HL)
  732.         OR A
  733.         RET Z
  734.         LD B,A
  735. vff0    INC HL
  736.         PUSH BC
  737.         PUSH HL
  738.         LD A,(HL)
  739.         CALL B_IX
  740.         CALL HL_IX0
  741.         DEC H
  742.         XOR A
  743.         CALL NEWiy_
  744.         LD A,(IX+2)
  745.         INC A
  746.         LD HL,vffDT
  747.         CALL WT
  748.         EX DE,HL
  749.         LD HL,BUF512
  750.         CALL cii_
  751.         LD A,(IX+6)
  752.         SRL A
  753.         CP (IX+3)
  754.         LD A,16
  755.         JR C,vff5
  756.         INC A
  757. vff5    LD (BUF512+4),A
  758.         OR A
  759.          if EGA
  760.          push iy
  761.          endif
  762.         CALL _XPUT
  763.          if EGA
  764.          pop iy
  765.          endif
  766.         LD HL,(BUF512+2)
  767.         LD DE,-16
  768.         ADD HL,DE
  769.         LD (BUF512+2),HL
  770.         LD A,18
  771.         LD (BUF512+4),A
  772.         OR A
  773.          if EGA
  774.          push iy
  775.          endif
  776.         CALL _XPUT
  777.          if EGA
  778.          pop iy
  779.          endif
  780.         POP HL
  781.         POP BC
  782.         DJNZ vff0
  783.         RET
  784.         ;
  785. vffDT   ;сдвиг огня по X,Y
  786.         DEFB 0,4
  787.         DEFB 0,5, 0,8, 0,7, -1,0, -2,2, 0,-2, 0,4, 0,0, -4,0
  788.         DEFB 0,0
  789.         DEFB 0,0, 0,8, 6,10, 0,0, 0,10, 0,0, 0,6, 10,-3, -9,-3
  790.