?login_element?

Subversion Repositories NedoOS

Rev

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

  1. StartGame
  2.         JP SelectGamePlay
  3. STARTGAME ;свой сервер
  4.         ;jr $
  5.         CALL WaitAn
  6. STGA ;подключение к чужому серверу
  7.         ;jr $
  8.         CALL InitGame
  9.         LD IX,HeroMy
  10.         CALL Hero
  11.         LD A,(TimeLim)
  12.         LD (TimeCh2),A
  13.         HALTER
  14.         CALL sinhro ;Процедура синхронизации
  15.         LD A,(Key)
  16.         CALL Obmen
  17.         LD (HeroYouKey),A
  18.         CALL MiniSinhro
  19.         LD A,(HeroMy)
  20.         CALL Obmen
  21.         LD (HeroYou),A
  22.         CALL MiniSinhro
  23.         LD A,(HeroMy+1)
  24.         CALL Obmen
  25.         LD (HeroYou+1),A
  26.         LD B,0
  27.         NOP
  28.         NOP
  29.         NOP
  30.         NOP
  31.         DJNZ $-4
  32.         HALTER
  33.         HALTER
  34.         XOR A
  35.         LD (DecHer),A
  36. GameCycle
  37.         ;jr $
  38.         CALL KeyMe
  39.         HALTER
  40.         CALL sinhro ;Процедура синхронизации
  41.         LD A,(Key)
  42.         CALL Obmen
  43.        ifndef CLIENT
  44.        ld a,0xf7
  45.        in a,(0xfe) ;1..5
  46.        endif
  47.         LD (HeroYouKey),A
  48.         CALL MiniSinhro
  49.         LD A,(HeroMy)
  50.         CALL Obmen
  51.         LD (OldX),A
  52.         CALL MiniSinhro
  53.         LD A,(HeroMy+1)
  54.         CALL Obmen
  55.         LD (OldY),A
  56.         LD B,0
  57.         NOP
  58.         NOP
  59.         NOP
  60.         NOP
  61.         DJNZ $-4
  62.         HALTER
  63.         CALL Ustanow
  64.         CALL MagicPrnt
  65.         CALL MagicDecl
  66.         CALL PrintVariab
  67.         CALL BulletsXY
  68.         HALTER
  69.         CALL BulletsPrnt
  70.         LD IX,HeroMy
  71.         LD IY,HeroYou
  72.         CALL HeroMove
  73.         LD A,(IX+2)
  74.         ADD A,17
  75.         LD D,(IX)
  76.         LD E,(IX+1)
  77.         CALL BlcSpr
  78.         LD E,(IX)
  79.         LD L,(IX+1)
  80.         CALL HeMap
  81.         LD A,(IX+2)
  82.         ADD A,17
  83.         LD (HL),A
  84.         CALL HeroDec
  85.         CALL HeroTelp
  86.         LD A,(Key)
  87.         PUSH AF
  88.         LD A,(HeroYouKey)
  89.         BIT 6,A
  90.         ;JP Z,Endecc
  91.         LD (Key),A
  92.         LD IX,HeroYou
  93.         LD IY,HeroMy
  94.         CALL OpoDel ;стираем с карты и экрана
  95.         CALL HeroMove
  96.         LD A,(IX+2)
  97.         ADD A,17
  98.         LD D,(IX)
  99.         LD E,(IX+1)
  100.         CALL BlcSpr
  101.         LD E,(IX)
  102.         LD L,(IX+1)
  103.         CALL HeMap
  104.         LD A,(IX+2)
  105.         ADD A,17
  106.         LD (HL),A
  107.         CALL HeroDec
  108.         CALL HeroTelp2
  109.         POP AF
  110.         LD (Key),A
  111.         CALL Dead
  112.         CALL Dead2
  113.         CALL Deler
  114.         LD A,(TimeCh)
  115.         INC A
  116.         LD (TimeCh),A
  117.         LD A,(FragLim)
  118.         CP 0
  119.         JR Z,Dalle
  120.         LD B,A
  121.         LD A,(HeroMy+3)
  122.         CP B
  123.         JR Z,Endecc
  124.         LD A,(HeroYou+3)
  125.         CP B
  126.         JR Z,Endecc
  127. Dalle
  128.         LD A,(TimeCh2)
  129.         CP 0
  130.         JR Z,DaLLe
  131.         LD A,(TimeCh)
  132.         CP 0
  133.         JR NZ,DaLLe
  134.         LD A,(TimeLim)
  135.         CP 0
  136.         ;JR Z,Endecc
  137.         DEC A
  138.         LD (TimeLim),A
  139. DaLLe   LD A,(Key)
  140.         BIT 6,A
  141.         ;JP NZ,GameCycle
  142.         ;JR Z,Endecc
  143.         JP GameCycle
  144. Endecc
  145.         LD HL,#4000
  146.         LD DE,#4001
  147.         LD BC,6143
  148.         LD (HL),0
  149.         LDIR
  150.  
  151.         LD HL,#5800
  152.         LD DE,#5801
  153.         LD BC,767
  154.         LD (HL),7
  155.         LDIR
  156.  
  157.         LD BC,Winers
  158.         CALL PrintText
  159.  
  160.         LD IX,HeroMy
  161.         LD A,(IX+2)
  162.         ADD A,17
  163.         LD D,12
  164.         LD E,10
  165.         CALL BlcSpr
  166.         LD IX,HeroYou
  167.         LD A,(IX+2)
  168.         ADD A,17
  169.         LD D,12
  170.         LD E,11
  171.         CALL BlcSpr
  172.  
  173.         LD A,(HeroMy+3)
  174.         LD DE,NumBuf+2
  175.         CALL PRNUM
  176.         LD A,22
  177.         LD (NumBuf),A
  178.         LD A,10
  179.         LD (NumBuf+1),A
  180.         LD A,24+15
  181.         LD (NumBuf+2),A
  182.         LD BC,NumBuf
  183.         CALL PrintText
  184.         LD A,(HeroYou+3)
  185.         LD DE,NumBuf+2
  186.         CALL PRNUM
  187.         LD A,22
  188.         LD (NumBuf),A
  189.         LD A,11
  190.         LD (NumBuf+1),A
  191.         LD A,24+15
  192.         LD (NumBuf+2),A
  193.         LD BC,NumBuf
  194.         CALL PrintText
  195.  
  196.         LD IX,MInfo1
  197.         CALL Menu
  198.         JP Start
  199.  
  200.  
  201.         RET
  202. Winers  DB 22,0,23,7,"Result Death Match"
  203.         DB 22,10,24,"    Your frag:  "
  204.         DB 22,11,24,"     His frag:  "
  205.         DB 22,23,24,16,7,"Press any key",0
  206.  
  207.  
  208.  
  209.  
  210. Deler
  211.         LD IX,HeroMy
  212.         LD E,(IX)
  213.         LD L,(IX+1)
  214.         CALL HeMap
  215.         LD (HL),0
  216.         LD IX,HeroYou
  217.         LD E,(IX)
  218.         LD L,(IX+1)
  219.         CALL HeMap
  220.         LD (HL),0
  221.         LD A,(Key)
  222.         RET
  223. Ustanow LD IX,HeroYou
  224.         LD E,(IX)
  225.         LD L,(IX+1)
  226.         CALL HeMap
  227.         LD A,(IX+2)
  228.         ADD A,17
  229.         LD (HL),A
  230.         LD IX,HeroMy
  231.         LD E,(IX)
  232.         LD L,(IX+1)
  233.         CALL HeMap
  234.         LD A,(IX+2)
  235.         ADD A,17
  236.         LD (HL),A
  237.         RET
  238. Dead    LD A,(HeroMy+5)
  239.         CP 0
  240.         RET NZ
  241.         LD A,(HeroMy+4)
  242.         CP 0
  243.         RET NZ
  244.         LD IX,HeroMy
  245.         CALL HeroS
  246.         LD A,100
  247.         LD (HeroMy+4),A
  248.         LD A,10
  249.         LD (HeroMy+6),A
  250.         LD A,5
  251.         LD (HeroMy+11),A
  252.         LD A,(HeroYou+3)
  253.         INC A
  254.         LD (HeroYou+3),A
  255.         RET
  256. Dead2   LD A,(HeroYou+5)
  257.         CP 0
  258.         RET NZ
  259.         LD A,(HeroYou+4)
  260.         CP 0
  261.         RET NZ
  262.         LD A,100
  263.         LD (HeroYou+4),A
  264.         LD A,10
  265.         LD (HeroYou+6),A
  266.         LD A,5
  267.         LD (HeroYou+11),A
  268.         LD A,(HeroMy+3)
  269.         INC A
  270.         LD (HeroMy+3),A
  271.  
  272.         LD IX,HeroYou
  273.         LD D,(IX)
  274.         LD E,(IX+1)
  275.         LD A,0
  276.         CALL BlcSpr
  277.         LD E,(IX)
  278.         LD L,(IX+1)
  279.         CALL HeMap
  280.         LD (HL),0
  281.         RET
  282. BulletsXY
  283.         LD HL,Bullets
  284.         LD B,64
  285. BulXY   PUSH BC
  286.         LD A,(HL)
  287.         CP 255
  288.         CALL NZ,BullXY
  289.         INC HL
  290.         INC HL
  291.         INC HL
  292.         POP BC
  293.         DJNZ BulXY
  294.         RET
  295. BullXY  PUSH HL
  296.         LD D,(HL)
  297.         INC HL
  298.         LD E,(HL)
  299.         INC HL
  300.         LD A,0
  301.         CALL BlcSpr
  302.         POP HL
  303.         PUSH HL
  304.         INC HL
  305.         INC HL
  306.         LD A,(HL)
  307.         AND %11
  308.         CP 0
  309.         JR Z,BullLe
  310.         CP 1
  311.         JR Z,BullRi
  312.         CP 2
  313.         JR Z,BullUp
  314.         CP 3
  315.         JR Z,BullDo
  316.         POP HL
  317.         RET
  318. BullLe
  319.         POP HL
  320.         PUSH HL
  321.         LD E,(HL)
  322.         INC HL
  323.         LD L,(HL)
  324.         LD A,E
  325.         CP 0
  326.         JR Z,BullNot
  327.         DEC E
  328.         CALL HeMap
  329.         CP 1
  330.         JR Z,BullNot
  331.         POP HL
  332.         PUSH AF
  333.         DEC (HL)
  334.         POP AF
  335.         CP 17
  336.         JP NC,BullYep
  337.         RET
  338. BullRi
  339.         POP HL
  340.         PUSH HL
  341.         LD E,(HL)
  342.         INC HL
  343.         LD L,(HL)
  344.         LD A,E
  345.         CP 31
  346.         JR Z,BullNot
  347.         INC E
  348.         CALL HeMap
  349.         CP 1
  350.         JP Z,BullNot
  351.         POP HL
  352.         PUSH AF
  353.         INC (HL)
  354.         POP AF
  355.         CP 17
  356.         JP NC,BullYep
  357.         RET
  358. BullUp
  359.         POP HL
  360.         PUSH HL
  361.         LD E,(HL)
  362.         INC HL
  363.         LD L,(HL)
  364.         LD A,L
  365.         CP 0
  366.         JR Z,BullNot
  367.         DEC L
  368.         CALL HeMap
  369.         CP 1
  370.         JR Z,BullNot
  371.         POP HL
  372.         INC HL
  373.         PUSH AF
  374.         DEC (HL)
  375.         DEC HL
  376.         POP AF
  377.         CP 17
  378.         JP NC,BullYep
  379.         RET
  380. BullDo
  381.         POP HL
  382.         PUSH HL
  383.         LD E,(HL)
  384.         INC HL
  385.         LD L,(HL)
  386.         LD A,L
  387.         CP 22
  388.         JR Z,BullNot
  389.         INC L
  390.         CALL HeMap
  391.         CP 1
  392.         JR Z,BullNot
  393.         POP HL
  394.         PUSH AF
  395.         INC HL
  396.         INC (HL)
  397.         DEC HL
  398.         POP AF
  399.         CP 17
  400.         JP NC,BullYep
  401.         RET
  402. BullNot
  403.         POP HL
  404.         LD (HL),255
  405.         RET
  406. BullYep
  407.         LD D,(HL)
  408.         LD (HL),255
  409.         INC HL
  410.         LD E,(HL)
  411.         INC HL
  412.         LD B,(HL)
  413.         DEC HL
  414.         DEC HL
  415.         LD IX,HeroYou
  416.         LD A,(IX)
  417.         CP D
  418.         JR NZ,HA
  419.         LD A,(IX+1)
  420.         CP E
  421.         JP NZ,HA
  422.         JR HTw1
  423. HA      LD IX,HeroMy
  424. HTw1
  425.         LD A,B
  426.         AND %100
  427.         CP %100
  428.         JP Z,Rocke
  429.  
  430.         LD A,B
  431.         AND %1000
  432.         CP %1000
  433.         JP Z,PsiQuk
  434.         LD B,10
  435. Psh1    LD A,(IX+5)
  436.         CP 0
  437.         JR Z,Psha2
  438.         DEC A
  439.         LD (IX+5),A
  440.         DJNZ Psh1
  441.         RET
  442. Psha2   LD B,10
  443. Psh2    LD A,(IX+4)
  444.         CP 0
  445.         RET Z
  446.         DEC A
  447.         LD (IX+4),A
  448.         DJNZ Psh2
  449.         RET
  450. PsiQuk
  451.         LD B,30
  452. psi1    LD A,(IX+5)
  453.         CP 0
  454.         JR Z,Psih2
  455.         DEC A
  456.         LD (IX+5),A
  457.         DJNZ psi1
  458.         RET
  459. Psih2   LD B,30
  460. psi2    LD A,(IX+4)
  461.         CP 0
  462.         RET Z
  463.         DEC A
  464.         LD (IX+4),A
  465.         DJNZ psi2
  466.         RET
  467.         RET
  468.  
  469. Rocke   LD A,B
  470.         AND %1000
  471.         CP %1000
  472.         JP Z,RoKQuk
  473.         LD B,25
  474. Roh1    LD A,(IX+5)
  475.         CP 0
  476.         JR Z,Roha2
  477.         DEC A
  478.         LD (IX+5),A
  479.         DJNZ Roh1
  480.         RET
  481. Roha2   LD B,25
  482. Roh2    LD A,(IX+4)
  483.         CP 0
  484.         RET Z
  485.         DEC A
  486.         LD (IX+4),A
  487.         DJNZ Roh2
  488.         RET
  489. RoKQuk
  490.         LD B,50
  491. Rok1    LD A,(IX+5)
  492.         CP 0
  493.         JR Z,Rokz2
  494.         DEC A
  495.         LD (IX+5),A
  496.         DJNZ Rok1
  497.         RET
  498. Rokz2   LD B,50
  499. Rok2    LD A,(IX+4)
  500.         CP 0
  501.         RET Z
  502.         DEC A
  503.         LD (IX+4),A
  504.         DJNZ Rok2
  505.         RET
  506.  
  507.  
  508.  
  509. BulletsPrnt
  510.         LD HL,Bullets
  511.         LD B,64
  512. BulPrn  PUSH BC
  513.         LD A,(HL)
  514.         CP 255
  515.         CALL NZ,BullPrnt
  516.         INC HL
  517.         INC HL
  518.         INC HL
  519.         POP BC
  520.         DJNZ BulPrn
  521.         RET
  522. BullPrnt PUSH HL
  523.         LD D,(HL)
  524.         INC HL
  525.         LD E,(HL)
  526.         INC HL
  527.         LD A,(HL)
  528.         AND %100
  529.         RRCA
  530.         RRCA
  531.         ADD A,15
  532.         CALL BlcSpr
  533.         POP HL
  534.         RET
  535. HeroTelp
  536.         LD A,(Key)
  537.         BIT 5,A
  538.         RET NZ
  539.         LD A,(Key)
  540.         BIT 4,A
  541.         RET NZ
  542.         LD A,(IX+10)
  543.         CP 0
  544.         RET Z
  545.         DEC A
  546.         LD (IX+10),A
  547.         CALL HeroS
  548.         RET
  549. HeroTelp2
  550.         LD A,(Key)
  551.         BIT 5,A
  552.         JR NZ,Her1Z
  553.         LD A,(Key)
  554.         BIT 4,A
  555.         JR NZ,Her1Z
  556.         LD A,(IX+10)
  557.         CP 0
  558.         JR Z,Her1Z
  559.         DEC A
  560.         LD (IX+10),A
  561.         LD D,(IX)
  562.         LD E,(IX+1)
  563.         LD A,0
  564.         CALL BlcSpr
  565.         RET
  566. Her1Z
  567.         RET
  568. DecHer  DB 0
  569.  
  570. HeroDec
  571.         LD A,(IX+8)
  572.         CP 0
  573.         JR Z,$+3
  574.         DEC A
  575.         LD (IX+8),A
  576.         LD A,(DecHer)
  577.         INC A
  578.         AND %111
  579.         LD (DecHer),A
  580.         LD A,(DecHer)
  581.         CP 1
  582.         RET NZ
  583.         LD A,(IX+13)
  584.         CP 0
  585.         JR Z,$+3
  586.         DEC A
  587.         LD (IX+13),A
  588.         LD A,(IX+9)
  589.         CP 0
  590.         RET Z
  591.         DEC A
  592.         LD (IX+9),A
  593.         LD A,(IX+4)
  594.         ADD A,5
  595.         LD (IX+4),A
  596.         CP 200
  597.         RET C
  598.         LD A,200
  599.         LD (IX+4),A
  600.         RET
  601.  
  602. HeroMove
  603.         LD D,(IX)
  604.         LD E,(IX+1)
  605.         LD A,0
  606.         CALL BlcSpr
  607.         LD E,(IX)
  608.         LD L,(IX+1)
  609.         CALL HeMap
  610.         LD (HL),0
  611.  
  612.         LD A,(Key)
  613.         BIT 4,A
  614.         JP Z,HeFire
  615.         BIT 0,A
  616.         JP Z,HeLe
  617.         BIT 1,A
  618.         JP Z,HeRi
  619.         BIT 3,A
  620.         JP Z,HeUp
  621.         BIT 2,A
  622.         JP Z,HeDo
  623.         BIT 5,A
  624.         JP Z,PisRoc
  625.         RET
  626. HeFire
  627.         BIT 0,A
  628.         JP Z,HeFLe
  629.         BIT 1,A
  630.         JP Z,HeFRi
  631.         BIT 3,A
  632.         JP Z,HeFUp
  633.         BIT 2,A
  634.         JP Z,HeFDo
  635.         RET
  636. HeFLe   LD A,(IX+8)
  637.         CP 0
  638.         RET NZ
  639.         LD A,(IX+6)
  640.         CP 0
  641.         RET Z
  642.         LD HL,Bullets
  643.         LD DE,3
  644.        LD A,(HL)
  645.        CP 255
  646.        JR Z,$+5
  647.          ADD HL,DE
  648.          JR $-6
  649.         PUSH HL
  650.         LD E,(IX+0)
  651.         LD L,(IX+1)
  652.         LD A,E
  653.         CP 0
  654.          jr z,popret;RET Z
  655.         DEC E
  656.         CALL HeMap
  657.         LD A,(HL)
  658.         POP HL
  659.         CP 1
  660.         RET Z
  661.         LD E,(IX+0);X
  662.         LD D,(IX+1);Y
  663.         LD (HL),E
  664.         INC HL
  665.         LD (HL),D
  666.         INC HL
  667.         LD A,(IX+7)
  668.         CP 1
  669.         JR Z,HeFLeR
  670.         LD A,%000
  671.         LD B,A
  672.         LD A,(IX+13)
  673.         CP 0
  674.         JR Z,$+6
  675.          LD A,%1000
  676.          JR $+3
  677.        LD A,%0
  678.         OR B
  679.         LD (HL),A
  680.         LD A,4
  681.         LD (IX+8),A
  682.         LD A,(IX+6)
  683.         DEC A
  684.         LD (IX+6),A
  685.         RET
  686. popret
  687.         pop hl
  688.         ret
  689.        
  690. HeFLeR  LD A,%100
  691.         LD B,A
  692.         LD A,(IX+13)
  693.         CP 0
  694.         JR Z,$+6
  695.         LD A,%1000
  696.         JR $+3
  697.         LD A,%0
  698.         OR B
  699.         LD (HL),A
  700.         LD A,10
  701.         LD (IX+8),A
  702.         LD A,(IX+6)
  703.         DEC A
  704.         LD (IX+6),A
  705.         RET
  706. HeFRi   LD A,(IX+8)
  707.         CP 0
  708.         RET NZ
  709.         LD A,(IX+6)
  710.         CP 0
  711.         RET Z
  712.         LD HL,Bullets
  713.         LD DE,3
  714.         LD A,(HL)
  715.         CP 255
  716.         JR Z,$+5
  717.         ADD HL,DE
  718.         JR $-6
  719.         PUSH HL
  720.         LD E,(IX+0)
  721.         LD L,(IX+1)
  722.         LD A,E
  723.         CP 31
  724.         RET Z
  725.         INC E
  726.         CALL HeMap
  727.         LD A,(HL)
  728.         POP HL
  729.         CP 1
  730.         RET Z
  731.         LD E,(IX+0);X
  732.         LD D,(IX+1);Y
  733.         LD (HL),E
  734.         INC HL
  735.         LD (HL),D
  736.         INC HL
  737.         LD A,(IX+7)
  738.         CP 1
  739.         JR Z,HeFRiR
  740.         LD A,%001
  741.         LD B,A
  742.         LD A,(IX+13)
  743.         CP 0
  744.         JR Z,$+6
  745.         LD A,%1000
  746.         JR $+3
  747.         LD A,%0
  748.         OR B
  749.         LD (HL),A
  750.         LD A,4
  751.         LD (IX+8),A
  752.         LD A,(IX+6)
  753.         DEC A
  754.         LD (IX+6),A
  755.  
  756.         RET
  757. HeFRiR  LD A,%101
  758.         LD B,A
  759.         LD A,(IX+13)
  760.         CP 0
  761.         JR Z,$+6
  762.         LD A,%1000
  763.         JR $+3
  764.         LD A,%0
  765.         OR B
  766.         LD (HL),A
  767.         LD A,10
  768.         LD (IX+8),A
  769.         LD A,(IX+6)
  770.         DEC A
  771.         LD (IX+6),A
  772.         RET
  773. HeFUp   LD A,(IX+8)
  774.         CP 0
  775.         RET NZ
  776.         LD A,(IX+6)
  777.         CP 0
  778.         RET Z
  779.         LD HL,Bullets
  780.         LD DE,3
  781.         LD A,(HL)
  782.         CP 255
  783.         JR Z,$+5
  784.         ADD HL,DE
  785.         JR $-6
  786.         PUSH HL
  787.         LD E,(IX+0)
  788.         LD L,(IX+1)
  789.         LD A,L
  790.         CP 0
  791.         RET Z
  792.         DEC L
  793.         CALL HeMap
  794.         LD A,(HL)
  795.         POP HL
  796.         CP 1
  797.         RET Z
  798.         LD E,(IX+0);X
  799.         LD D,(IX+1);Y
  800.         LD (HL),E
  801.         INC HL
  802.         LD (HL),D
  803.         INC HL
  804.         LD A,(IX+7)
  805.         CP 1
  806.         JR Z,HeFUpR
  807.         LD A,%010
  808.         LD B,A
  809.         LD A,(IX+13)
  810.         CP 0
  811.         JR Z,$+6
  812.         LD A,%1000
  813.         JR $+3
  814.         LD A,%0
  815.         OR B
  816.         LD (HL),A
  817.         LD A,4
  818.         LD (IX+8),A
  819.         LD A,(IX+6)
  820.         DEC A
  821.         LD (IX+6),A
  822.  
  823.         RET
  824. HeFUpR  LD A,%110
  825.         LD B,A
  826.         LD A,(IX+13)
  827.         CP 0
  828.         JR Z,$+6
  829.         LD A,%1000
  830.         JR $+3
  831.         LD A,%0
  832.         OR B
  833.         LD (HL),A
  834.         LD A,10
  835.         LD (IX+8),A
  836.         LD A,(IX+6)
  837.         DEC A
  838.         LD (IX+6),A
  839.         RET
  840. HeFDo   LD A,(IX+8)
  841.         CP 0
  842.         RET NZ
  843.         LD A,(IX+6)
  844.         CP 0
  845.         RET Z
  846.         LD HL,Bullets
  847.         LD DE,3
  848.         LD A,(HL)
  849.         CP 255
  850.         JR Z,$+5
  851.         ADD HL,DE
  852.         JR $-6
  853.         PUSH HL
  854.         LD E,(IX+0)
  855.         LD L,(IX+1)
  856.         LD A,L
  857.         CP 23
  858.         RET Z
  859.         INC L
  860.         CALL HeMap
  861.         LD A,(HL)
  862.         POP HL
  863.         CP 1
  864.         RET Z
  865.         LD E,(IX+0);X
  866.         LD D,(IX+1);Y
  867.         LD (HL),E
  868.         INC HL
  869.         LD (HL),D
  870.         INC HL
  871.         LD A,(IX+7)
  872.         CP 1
  873.         JR Z,HeFDoR
  874.         LD A,%011
  875.         LD B,A
  876.         LD A,(IX+13)
  877.         CP 0
  878.         JR Z,$+6
  879.         LD A,%1000
  880.         JR $+3
  881.         LD A,%0
  882.         OR B
  883.         LD (HL),A
  884.         LD A,4
  885.         LD (IX+8),A
  886.         LD A,(IX+6)
  887.         DEC A
  888.         LD (IX+6),A
  889.  
  890.         RET
  891. HeFDoR  LD A,%111
  892.         LD B,A
  893.         LD A,(IX+13)
  894.         CP 0
  895.         JR Z,$+6
  896.         LD A,%1000
  897.         JR $+3
  898.         LD A,%0
  899.         OR B
  900.         LD (HL),A
  901.         LD A,10
  902.         LD (IX+8),A
  903.         LD A,(IX+6)
  904.         DEC A
  905.         LD (IX+6),A
  906.         RET
  907.  
  908.  
  909.  
  910. ;Bullets DS 64*3 ;X,Y,%0000SSMM Где SS-Тип пули,MM-двежение
  911.                 ;Если X больше чем 32 то пули нет
  912.  
  913.  
  914.  
  915.  
  916.  
  917. PisRoc  LD A,(IX+12)
  918.         CP 1
  919.         RET NZ
  920.         LD A,(IX+7)
  921.         XOR 1
  922.         LD (IX+7),A
  923.         ADD A,13
  924.         LD DE,#0817
  925.         CALL BlcSpr
  926.         LD A,(IX+11)
  927.         LD B,(IX+6)
  928.         LD (IX+11),B
  929.         LD (IX+6),A
  930.         RET
  931.  
  932.  
  933. HeLe    LD A,(IX+0)
  934.         LD L,(IX+1)
  935.         DEC A
  936.         CP 255
  937.         RET Z
  938.         LD E,A
  939.         CALL HeMap
  940.         CP 1
  941.         RET Z
  942.         CALL Situcy
  943.         LD A,(IX+0)
  944.         DEC A
  945.         LD (IX+0),A
  946.         PUSH IX
  947.         CALL BulZXY
  948.         POP IX
  949.         RET
  950. HeRi    LD A,(IX+0)
  951.         LD L,(IX+1)
  952.         INC A
  953.         CP 32
  954.         RET Z
  955.         LD E,A
  956.         CALL HeMap
  957.         CP 1
  958.         RET Z
  959.         CALL Situcy
  960.         LD A,(IX+0)
  961.         INC A
  962.         LD (IX+0),A
  963.         PUSH IX
  964.         CALL BulZXY
  965.         POP IX
  966.         RET
  967. HeUp    LD E,(IX+0)
  968.         LD A,(IX+1)
  969.         DEC A
  970.         CP 255
  971.         RET Z
  972.         LD L,A
  973.         CALL HeMap
  974.         CP 1
  975.         RET Z
  976.         CALL Situcy
  977.         LD A,(IX+1)
  978.         DEC A
  979.         LD (IX+1),A
  980.         PUSH IX
  981.         CALL BulZXY
  982.         POP IX
  983.         RET
  984. HeDo    LD E,(IX+0)
  985.         LD A,(IX+1)
  986.         INC A
  987.         CP 23
  988.         RET Z
  989.         LD L,A
  990.         CALL HeMap
  991.         CP 1
  992.         RET Z
  993.         CALL Situcy
  994.         LD A,(IX+1)
  995.         INC A
  996.         LD (IX+1),A
  997.         PUSH IX
  998.         CALL BulZXY
  999.         POP IX
  1000.         RET
  1001. Situcy
  1002.         CP 2
  1003.         JP Z,Lif_10
  1004.         CP 3
  1005.         JP Z,Lif_100
  1006.         CP 4
  1007.         JP Z,Arm_50
  1008.         CP 5
  1009.         JP Z,Arm_100
  1010.         CP 6
  1011.         JP Z,Bul_Meg
  1012.         CP 7
  1013.         JP Z,Bul_Qak
  1014.         CP 8
  1015.         JP Z,Bul_Tel
  1016.         CP 9
  1017.         JP Z,Bul_Nar
  1018.         CP 10
  1019.         JP Z,Bul_Box
  1020.         CP 14
  1021.         JP Z,Bul_Roc
  1022.         CP 17
  1023.         JP NC,Havens
  1024.         RET
  1025. Situc
  1026.         CP 2
  1027.         JP Z,Lif_10
  1028.         CP 3
  1029.         JP Z,Lif_100
  1030.         CP 4
  1031.         JP Z,Arm_50
  1032.         CP 5
  1033.         JP Z,Arm_100
  1034.         CP 6
  1035.         JP Z,Bul_Meg
  1036.         CP 7
  1037.         JP Z,Bul_Qak
  1038.         CP 8
  1039.         JP Z,Bul_Tel
  1040.         CP 9
  1041.         JP Z,Bul_Nar
  1042.         CP 10
  1043.         JP Z,Bul_Box
  1044.         CP 14
  1045.         JP Z,Bul_Roc
  1046.         RET
  1047. Havens
  1048.  
  1049.         POP HL
  1050.         LD A,(IX+13)
  1051.         CP 0
  1052.         JR NZ,HavQuk
  1053.  
  1054.         LD A,(IY+5)
  1055.         CP 0
  1056.         JR Z,Have1
  1057.         DEC A
  1058.         LD (IY+5),A
  1059.         RET
  1060. Have1   LD A,(IY+4)
  1061.         CP 0
  1062.         RET Z
  1063.         DEC A
  1064.         LD (IY+4),A
  1065.         RET
  1066. HavQuk
  1067.         LD B,10
  1068. Hav1    LD A,(IY+5)
  1069.         CP 0
  1070.         JR Z,Have2
  1071.         DEC A
  1072.         LD (IY+5),A
  1073.         DJNZ Hav1
  1074.         RET
  1075. Have2   LD B,10
  1076. Hav2    LD A,(IY+4)
  1077.         CP 0
  1078.         RET Z
  1079.         DEC A
  1080.         LD (IY+4),A
  1081.         DJNZ Hav2
  1082.         RET
  1083.  
  1084. Lif_10  LD A,(IX+4)
  1085.         ADD A,10
  1086.         CP 200
  1087.         JR C,$+4
  1088.         LD A,200
  1089.         LD (IX+4),A
  1090.         LD HL,Magic+(8*2)+1
  1091.         LD A,(HL)
  1092.         DEC HL
  1093.         LD (HL),A
  1094.         RET
  1095. Lif_100 LD A,(IX+4)
  1096.         CP 100
  1097.         JR NC,$+4
  1098.         LD A,100
  1099.         LD (IX+4),A
  1100.         LD HL,Magic+(7*2)+1
  1101.         LD A,(HL)
  1102.         DEC HL
  1103.         LD (HL),A
  1104.         RET
  1105. Arm_50  LD A,(IX+5)
  1106.         ADD A,50
  1107.         CP 200
  1108.         JR C,$+4
  1109.         LD A,200
  1110.         LD (IX+5),A
  1111.         LD HL,Magic+(6*2)+1
  1112.         LD A,(HL)
  1113.         DEC HL
  1114.         LD (HL),A
  1115.         RET
  1116. Arm_100 LD A,(IX+5)
  1117.         ADD A,100
  1118.         JR C,$+6
  1119.         CP 200
  1120.         JR C,$+4
  1121.         LD A,200
  1122.         LD (IX+5),A
  1123.         LD HL,Magic+(5*2)+1
  1124.         LD A,(HL)
  1125.         DEC HL
  1126.         LD (HL),A
  1127.         RET
  1128. Bul_Meg LD A,(IX+4)
  1129.         ADD A,100
  1130.         JR C,$+6
  1131.         CP 200
  1132.         JR C,$+4
  1133.         LD A,200
  1134.         LD (IX+4),A
  1135.         LD HL,Magic+(4*2)+1
  1136.         LD A,(HL)
  1137.         DEC HL
  1138.         LD (HL),A
  1139.         RET
  1140. Bul_Qak LD A,(IX+13)
  1141.         ADD A,30
  1142.         LD (IX+13),A
  1143.         LD HL,Magic+(3*2)+1
  1144.         LD A,(HL)
  1145.         DEC HL
  1146.         LD (HL),A
  1147.         RET
  1148. Bul_Tel LD A,(IX+10)
  1149.         ADD A,1
  1150.         LD (IX+10),A
  1151.         LD HL,Magic+(2*2)+1
  1152.         LD A,(HL)
  1153.         DEC HL
  1154.         LD (HL),A
  1155.         RET
  1156. Bul_Nar LD A,(IX+9)
  1157.         ADD A,30
  1158.         LD (IX+9),A
  1159.         LD HL,Magic+(1*2)+1
  1160.         LD A,(HL)
  1161.         DEC HL
  1162.         LD (HL),A
  1163.         RET
  1164. Bul_Box LD A,(IX+7)
  1165.         CP 1
  1166.         JR Z,Bul_BOx
  1167.         OR A
  1168.         LD A,(IX+6)
  1169.         ADC A,10
  1170.         JR NC,$+4
  1171.         LD A,255
  1172.         LD (IX+6),A
  1173.         LD HL,Magic+(0*2)+1
  1174.         LD A,(HL)
  1175.         DEC HL
  1176.         LD (HL),A
  1177.         RET
  1178. Bul_BOx OR A
  1179.         LD A,(IX+6)
  1180.         ADC A,5
  1181.         JR NC,$+4
  1182.         LD A,255
  1183.         LD (IX+6),A
  1184.         LD HL,Magic+(0*2)+1
  1185.         LD A,(HL)
  1186.         DEC HL
  1187.         LD (HL),A
  1188.         RET
  1189. Bul_Roc
  1190.  
  1191.         LD A,1
  1192.         LD (IX+12),A
  1193.         LD HL,Magic+(9*2)+1
  1194.         LD A,(HL)
  1195.         DEC HL
  1196.         LD (HL),A
  1197.         LD A,(IX+7)
  1198.         CP 0
  1199.         JR Z,BulRoc1
  1200.         LD A,(IX+6)
  1201.         ADD A,5
  1202.         LD (IX+6),A
  1203.         RET
  1204. BulRoc1
  1205.         LD A,(IX+11)
  1206.         ADD A,5
  1207.         LD (IX+11),A
  1208.         RET
  1209.  
  1210.  
  1211. HeMap   LD H,0
  1212.         ADD HL,HL
  1213.         ADD HL,HL
  1214.         ADD HL,HL
  1215.         ADD HL,HL
  1216.         ADD HL,HL
  1217.         LD D,0
  1218.         ADD HL,DE
  1219.         LD DE,Map
  1220.         ADD HL,DE
  1221.         LD A,(HL)
  1222.         RET
  1223. MagicDecl
  1224.         LD HL,Magic
  1225.         LD B,10
  1226. MagDec  LD A,(HL)
  1227.         DEC A
  1228.         CP 255
  1229.         JR Z,$+3
  1230.         LD (HL),A
  1231.         INC HL
  1232.         INC HL
  1233.         DJNZ MagDec
  1234.         RET
  1235.  
  1236. HeroS
  1237.         LD D,(IX)
  1238.         LD E,(IX+1)
  1239.         LD A,0
  1240.         CALL BlcSpr
  1241.         LD D,(IX)
  1242.         LD E,(IX+1)
  1243.         LD A,0
  1244.         CALL BlcSpr
  1245.         LD E,(IX)
  1246.         LD L,(IX+1)
  1247.         CALL HeMap
  1248.         LD (HL),0
  1249.  
  1250.  
  1251. Hero    CALL Rnd
  1252.         LD DE,(SEED)
  1253.         LD A,D
  1254.         AND %11111
  1255.         CP 23
  1256.         JR NC,Hero
  1257.         LD L,A
  1258.         LD H,0
  1259.         ADD HL,HL
  1260.         ADD HL,HL
  1261.         ADD HL,HL
  1262.         ADD HL,HL
  1263.         ADD HL,HL
  1264.         LD D,0
  1265.         LD A,E
  1266.         AND %11111
  1267.         LD E,A
  1268.         ADD HL,DE
  1269.         LD DE,Map
  1270.         ADD HL,DE
  1271.         LD A,(HL)
  1272.         CP 1
  1273.         JR Z,Hero
  1274.         LD DE,(SEED)
  1275.         LD A,D
  1276.         AND %11111
  1277.         LD D,A
  1278.         LD (IX+1),A
  1279.         LD A,E
  1280.         AND %11111
  1281.         LD E,A
  1282.         LD (IX),A
  1283.         LD A,(IX+2)
  1284.         ADD A,17
  1285.         LD B,D
  1286.         LD D,E
  1287.         LD E,B
  1288.         CALL BlcSpr
  1289.         RET
  1290.  
  1291. InitGame
  1292.         LD HL,#4000
  1293.         LD DE,#4001
  1294.         LD BC,6143
  1295.         LD (HL),L
  1296.         LDIR
  1297.  
  1298.         LD HL,#5800
  1299.         LD DE,#5801
  1300.         LD BC,767
  1301.         LD (HL),7
  1302.         LDIR
  1303.  
  1304.  
  1305.         LD HL,Bullets
  1306.         LD DE,Bullets+1
  1307.         LD (HL),255
  1308.         LD BC,64*3-1
  1309.         LDIR
  1310.  
  1311.         LD A,(HeroMy+2)
  1312.         LD HL,HeroMy
  1313.         LD DE,HeroMy+1
  1314.         LD (HL),0
  1315.         LD BC,13
  1316.         LDIR
  1317.         LD (HeroMy+2),A
  1318.  
  1319.         LD A,(HeroYou+2)
  1320.         LD HL,HeroYou
  1321.         LD DE,HeroYou+1
  1322.         LD (HL),0
  1323.         LD BC,13
  1324.         LDIR
  1325.         LD (HeroYou+2),A
  1326.  
  1327.         LD BC,Test
  1328.         CALL PrintText
  1329.  
  1330.         LD A,(HeroMy+2)
  1331.         ADD A,17
  1332.         LD DE,#0017 ;X Y
  1333.         CALL BlcSpr
  1334.  
  1335.         LD A,5
  1336.         LD DE,#0417
  1337.         CALL BlcSpr
  1338.  
  1339.         LD A,7
  1340.         LD DE,#0C17
  1341.         CALL BlcSpr
  1342.  
  1343.         LD A,9
  1344.         LD DE,#0F17
  1345.         CALL BlcSpr
  1346.  
  1347.         LD A,8
  1348.         LD DE,#1217
  1349.         CALL BlcSpr
  1350.  
  1351.  
  1352.         CALL VariabInit
  1353.         CALL PrintVariab
  1354.         CALL MapPrint
  1355.         RET
  1356. MapPrint
  1357.         LD A,(ChMap)
  1358.         LD L,0
  1359.         LD H,A
  1360.         PUSH HL
  1361.         ADD HL,HL
  1362.         POP DE
  1363.         ADD HL,DE ;*0x300
  1364.         LD DE,Maps
  1365.         ADD HL,DE
  1366.         LD DE,Map
  1367.         LD BC,768
  1368.         LDIR
  1369.         LD DE,#0000
  1370.         LD HL,Map
  1371.         LD B,23
  1372. MapPr1  PUSH BC
  1373.         PUSH DE
  1374.         LD B,32
  1375. MapPr2  PUSH BC
  1376.         LD A,(HL)
  1377.         PUSH HL
  1378.         PUSH DE
  1379.         CALL BlcSpr
  1380.         POP DE
  1381.         POP HL
  1382.         INC HL
  1383.         INC D
  1384.         POP BC
  1385.         DJNZ MapPr2
  1386.         POP DE
  1387.         INC E
  1388.         POP BC
  1389.         DJNZ MapPr1
  1390.         CALL MagicPrnt
  1391.         RET
  1392. MagicPrnt
  1393.         LD HL,Magic
  1394.         LD DE,Map+768-32
  1395.         LD B,10
  1396. MagL1   PUSH BC
  1397.         LD A,(HL)
  1398.         CP 0
  1399.         CALL Z,MagPrt
  1400.         INC HL
  1401.         INC HL
  1402.         INC DE
  1403.         INC DE
  1404.         INC DE
  1405.  
  1406.         POP BC
  1407.         DJNZ MagL1
  1408.         RET
  1409. MagPrt
  1410.         PUSH HL
  1411.         PUSH DE
  1412.         EX DE,HL
  1413.         LD D,(HL)
  1414.         INC HL
  1415.         LD E,(HL)
  1416.         INC HL
  1417.         LD A,(HL)
  1418.         PUSH AF
  1419.         CALL Sravnit
  1420.         POP AF
  1421.         INC HL
  1422.         CALL BlcSpr
  1423.         POP DE
  1424.         POP HL
  1425.         PUSH HL
  1426.         PUSH DE
  1427.         EX DE,HL
  1428.         LD D,(HL)
  1429.         INC HL
  1430.         LD E,(HL)
  1431.         INC HL
  1432.         LD A,(HL)
  1433.         INC HL
  1434.         LD L,E
  1435.         LD H,0
  1436.         ADD HL,HL
  1437.         ADD HL,HL
  1438.         ADD HL,HL
  1439.         ADD HL,HL
  1440.         ADD HL,HL
  1441.         LD E,D
  1442.         LD D,0
  1443.         ADD HL,DE
  1444.         LD DE,Map
  1445.         ADD HL,DE
  1446.         LD (HL),A
  1447.         POP DE
  1448.         POP HL
  1449.         RET
  1450. Sravnit LD IX,HeroMy
  1451.         LD B,A
  1452.         LD A,(IX)
  1453.         CP D
  1454.         JR NZ,SrAv2
  1455.         LD A,(IX+1)
  1456.         CP E
  1457.         JR NZ,SrAv2
  1458.         LD A,B
  1459.         CALL Situc
  1460.         POP AF
  1461.         POP DE
  1462.         POP HL
  1463.         POP BC
  1464.         RET
  1465. SrAv2   LD IX,HeroYou
  1466.         LD A,(IX)
  1467.         CP D
  1468.         RET NZ
  1469.         LD A,(IX+1)
  1470.         CP E
  1471.         RET NZ
  1472.         LD A,B
  1473.         CALL Situc
  1474.         POP AF
  1475.         POP DE
  1476.         POP HL
  1477.         POP BC
  1478.         RET
  1479.  
  1480. VariabInit
  1481.         LD A,100
  1482.         LD (HeroMy+4),A
  1483.         LD A,10
  1484.         LD (HeroMy+6),A
  1485.         LD A,5
  1486.         LD (HeroMy+11),A
  1487.  
  1488.         LD A,100
  1489.         LD (HeroYou+4),A
  1490.         LD A,10
  1491.         LD (HeroYou+6),A
  1492.         LD A,5
  1493.         LD (HeroYou+11),A
  1494.         RET
  1495. PrintVariab
  1496.         LD A,(HeroMy+3)
  1497.         LD DE,NumBuf+2
  1498.         CALL PRNUM
  1499.         LD A,22
  1500.         LD (NumBuf),A
  1501.         LD A,23
  1502.         LD (NumBuf+1),A
  1503.         LD A,47
  1504.         LD (NumBuf+2),A
  1505.         LD BC,NumBuf
  1506.         CALL PrintText
  1507.  
  1508.         LD A,(TimeLim)
  1509.         LD DE,NumBuf+2
  1510.         CALL PRNUM
  1511.         LD A,22
  1512.         LD (NumBuf),A
  1513.         LD A,23
  1514.         LD (NumBuf+1),A
  1515.         LD A,56
  1516.         LD (NumBuf+2),A
  1517.         LD BC,NumBuf
  1518.         CALL PrintText
  1519.  
  1520.         LD A,(HeroMy+4)
  1521.         LD DE,NumBuf+3
  1522.         CALL PRNUM
  1523.         LD A,22
  1524.         LD (NumBuf),A
  1525.         LD A,23
  1526.         LD (NumBuf+1),A
  1527.         LD A,2
  1528.         LD (NumBuf+2),A
  1529.         LD BC,NumBuf
  1530.         CALL PrintText
  1531.  
  1532.         LD A,(HeroMy+5)
  1533.         LD DE,NumBuf+3
  1534.         CALL PRNUM
  1535.         LD A,22
  1536.         LD (NumBuf),A
  1537.         LD A,23
  1538.         LD (NumBuf+1),A
  1539.         LD A,10
  1540.         LD (NumBuf+2),A
  1541.         LD BC,NumBuf
  1542.         CALL PrintText
  1543.  
  1544.         LD A,(HeroMy+6)
  1545.         LD DE,NumBuf+3
  1546.         CALL PRNUM
  1547.         LD A,22
  1548.         LD (NumBuf),A
  1549.         LD A,23
  1550.         LD (NumBuf+1),A
  1551.         LD A,18
  1552.         LD (NumBuf+2),A
  1553.         LD BC,NumBuf
  1554.         CALL PrintText
  1555.  
  1556.         LD A,(HeroMy+13)
  1557.         LD DE,NumBuf+2
  1558.         CALL PRNUM
  1559.         LD A,22
  1560.         LD (NumBuf),A
  1561.         LD A,23
  1562.         LD (NumBuf+1),A
  1563.         LD A,26
  1564.         LD (NumBuf+2),A
  1565.         LD BC,NumBuf
  1566.         CALL PrintText
  1567.  
  1568.         LD A,(HeroMy+9)
  1569.         LD DE,NumBuf+2
  1570.         CALL PRNUM
  1571.         LD A,22
  1572.         LD (NumBuf),A
  1573.         LD A,23
  1574.         LD (NumBuf+1),A
  1575.         LD A,32
  1576.         LD (NumBuf+2),A
  1577.         LD BC,NumBuf
  1578.         CALL PrintText
  1579.  
  1580.         LD A,(HeroMy+10)
  1581.         LD DE,NumBuf+2
  1582.         CALL PRNUM
  1583.         LD A,22
  1584.         LD (NumBuf),A
  1585.         LD A,23
  1586.         LD (NumBuf+1),A
  1587.         LD A,38
  1588.         LD (NumBuf+2),A
  1589.         LD BC,NumBuf
  1590.         CALL PrintText
  1591.         LD A,(HeroMy+7)
  1592.         ADD A,13
  1593.         LD DE,#0817
  1594.         CALL BlcSpr
  1595.  
  1596.         RET
  1597.  
  1598. Test    DB 22,23,0,"     %       %                          "
  1599.         DB "  Frag:    Time:    HDS",0
  1600.  
  1601. BlcSpr
  1602.         LD L,A
  1603.         RLCA
  1604.         RLCA
  1605.         RLCA
  1606.         ADD A,L
  1607.         LD L,A
  1608.         LD H,Sprites/256
  1609.         LD A,E        ;DE - Координата X-D  Y-E
  1610.         AND 7         ; A - Используется в своих целях
  1611.         RRCA
  1612.         RRCA          ;DE - Адрес экрана
  1613.         RRCA
  1614.         ADD A,D
  1615.         LD D,E
  1616.         LD E,A
  1617.         LD A,D
  1618.         AND #18
  1619.         OR #40
  1620.         LD D,A
  1621.         DUP 7
  1622.         LD A,(HL)
  1623.         LD (DE),A
  1624.         INC L
  1625.         INC D
  1626.         EDUP
  1627.         LD A,(HL)
  1628.         LD (DE),A
  1629.         INC L
  1630.         SRL D
  1631.         SRL D
  1632.         SRL D
  1633.         LD A,D
  1634.         OR #50
  1635.         LD D,A
  1636.         LD A,(HL)
  1637.         LD (DE),A
  1638.         RET
  1639. ;--------------------------
  1640. SelectGamePlay
  1641.         LD HL,#4000
  1642.         LD DE,#4001
  1643.         LD BC,6143
  1644.         LD (HL),L
  1645.         LDIR
  1646.  
  1647.         LD HL,#5800
  1648.         LD DE,#5801
  1649.         LD BC,767
  1650.         LD (HL),7
  1651.         LDIR
  1652.  
  1653.         LD BC,GamePlayTXT
  1654.         CALL PrintText
  1655.  
  1656.         CALL SHero
  1657.  
  1658.         CALL Box
  1659. Selcyc
  1660.         LD A,(ChMap)
  1661.         CALL BoxMap
  1662.         LD IX,GameS
  1663.         CALL MenuLR
  1664.         CP 0
  1665.         JP Z,PrevMap
  1666.         CP 1
  1667.         JP Z,NextMap
  1668.         CP 254
  1669.         JR Z,SMenR
  1670.         JP Selcyc
  1671. SMenR
  1672.         LD IX,GameS2
  1673.         CALL MenuLR
  1674.         CP 0
  1675.         CALL Z,HeroSkin
  1676.         CP 255
  1677.         JR Z,Selcyc
  1678.         CP 254
  1679.         JR Z,Limited
  1680.         JR SMenR
  1681. HeroSkin
  1682.         LD A,(HeroMy+2)
  1683.         INC A
  1684.         CP 6
  1685.         JR NZ,$+3
  1686.         XOR A
  1687.  
  1688.         LD (HeroMy+2),A
  1689.         CALL SHero
  1690.         RET
  1691. Limited
  1692.         LD IX,GameS3
  1693.         CALL MenuLR
  1694.         CP 0
  1695.         CALL Z,LimFrag
  1696.         CP 1
  1697.         CALL Z,LimTime
  1698.         CP 255
  1699.         JP Z,SMenR
  1700.         CP 254
  1701.         JR Z,Gmp
  1702.         JR Limited
  1703. LimFrag LD A,(FragLim)
  1704.         INC A
  1705.         CP 100
  1706.         JR NZ,$+3
  1707.          XOR A
  1708.         LD (FragLim),A
  1709.         LD DE,NumBuf+2
  1710.         CALL PRNUM
  1711.         LD BC,NumBuf
  1712.         LD A,22
  1713.         LD (BC),A
  1714.         INC BC
  1715.         LD A,6
  1716.         LD (BC),A
  1717.         INC BC
  1718.         LD A,40
  1719.         LD (BC),A
  1720.         LD BC,NumBuf
  1721.         CALL PrintText
  1722.         XOR A
  1723.         RET
  1724. LimTime LD A,(TimeLim)
  1725.         INC A
  1726.         CP 100
  1727.         JR NZ,$+3
  1728.          XOR A
  1729.         LD (TimeLim),A
  1730.         LD DE,NumBuf+2
  1731.         CALL PRNUM
  1732.         LD BC,NumBuf
  1733.         LD A,22
  1734.         LD (BC),A
  1735.         INC BC
  1736.         LD A,7
  1737.         LD (BC),A
  1738.         INC BC
  1739.         LD A,40
  1740.         LD (BC),A
  1741.         LD BC,NumBuf
  1742.         CALL PrintText
  1743.         XOR A
  1744.         RET
  1745.  
  1746. PrevMap LD A,(ChMap)
  1747.         CP 0
  1748.         JP Z,Selcyc
  1749.         DEC A
  1750.         LD (ChMap),A
  1751.         JP Selcyc
  1752. NextMap LD A,(MapMax)
  1753.         LD B,A
  1754.         LD A,(ChMap)
  1755.         CP B
  1756.         JP Z,Selcyc
  1757.         INC A
  1758.         LD (ChMap),A
  1759.         JP Selcyc
  1760. Gmp
  1761.         LD IX,GameS4
  1762.         CALL MenuLR
  1763.         CP 0
  1764.         JP Z,Meka
  1765.         CP 1
  1766.         JP Z,Start
  1767.         CP 255
  1768.         JP Z,Limited
  1769.         JR Gmp
  1770. Meka
  1771.         LD L,IRAs
  1772.         LD H,IRBl
  1773.         LD BC,#FFFD
  1774.         LD DE,#FFBF
  1775.  
  1776.         LD B,D
  1777.         OUT (C),H
  1778.         IN A,(C)
  1779.         RLCA
  1780.         AND %1 ;TODO
  1781.        ld a,1
  1782.         CP 1
  1783.         JP Z,JOiner
  1784.         JP STARTGAME
  1785.  
  1786.  
  1787. NeedHelp
  1788.         LD L,IRAs
  1789.         LD H,IRBl
  1790.         LD BC,#FFFD
  1791.         LD DE,#FFBF
  1792.  
  1793.         LD B,D
  1794.         OUT (C),H
  1795.         IN A,(C)
  1796.         RLCA
  1797.         AND %1 ;TODO
  1798.        ld a,1
  1799.         CP 1
  1800.         JR Z,Ned1
  1801.         LD BC,TXT2
  1802.         CALL PrintText
  1803.         RET
  1804. Ned1    LD BC,TXT1
  1805.         CALL PrintText
  1806.         RET
  1807. MenuLR
  1808.         LD A,(IX+5)
  1809.         LD (MenuY),A
  1810. MenuCiLR HALTER
  1811.         CALL MenuPrint
  1812.         CALL NeedHelp
  1813.         HALTER
  1814.         CALL MenuPrint
  1815.         LD A,(MenuY)
  1816.         LD (IX+5),A
  1817.         CALL KeyMe
  1818.         LD A,(Key)
  1819.         BIT 0,A
  1820.         JP Z,MenuCL
  1821.         LD A,(Key)
  1822.         BIT 1,A
  1823.         JP Z,MenuCR
  1824.         LD A,(Key)
  1825.         BIT 3,A
  1826.         CALL Z,MenuCQ
  1827.         LD A,(Key)
  1828.         BIT 2,A
  1829.         CALL Z,MenuCA
  1830.         LD A,(Key)
  1831.         BIT 4,A
  1832.         JR NZ,MenuCiLR
  1833.         LD A,(MenuY)
  1834.         LD (IX+5),A
  1835.         RET
  1836. MenuCL  LD A,255
  1837.         RET
  1838. MenuCR  LD A,254
  1839.         RET
  1840. GameS   DB 6,2,4,2,1,0 ;Y,X,LEN,кол-во,STEP,Стрый Y
  1841. GameS2  DB 6,9,5,1,1,0 ;Y,X,LEN,кол-во,STEP,Стрый Y
  1842. GameS3  DB 6,17,5,2,1,0 ;Y,X,LEN,кол-во,STEP,Стрый Y
  1843. GameS4  DB 6,25,4,2,1,0 ;Y,X,LEN,кол-во,STEP,Стрый Y
  1844.  
  1845. SHero   LD A,(HeroMy+2)
  1846.         ADD A,17
  1847.         LD DE,#0906
  1848.         CALL BlcSpr
  1849.         RET
  1850. BoxMap  LD L,0
  1851.         LD H,A
  1852.         PUSH HL
  1853.         ADD HL,HL
  1854.         POP DE
  1855.         ADD HL,DE
  1856.         LD DE,Maps
  1857.         ADD HL,DE
  1858.         LD DE,#4820+2
  1859.         LD B,23
  1860. BoxMap1 PUSH BC
  1861.         PUSH DE
  1862.         LD B,4
  1863.         PUSH BC
  1864.         LD B,8
  1865.         LD A,(HL)
  1866.         SLA C
  1867.         OR C
  1868.         LD C,A
  1869.         INC HL
  1870.         DJNZ $-6
  1871.         LD A,C
  1872.         LD (DE),A
  1873.         INC E
  1874.         POP BC
  1875.         DJNZ $-15
  1876.         POP DE
  1877.         CALL DE_Down
  1878.         POP BC
  1879.         DJNZ BoxMap1
  1880.         RET
  1881. Box     LD HL,#4F00+1
  1882.         LD (HL),1
  1883.         INC L
  1884.         LD (HL),255
  1885.         INC L
  1886.         LD (HL),255
  1887.         INC L
  1888.         LD (HL),255
  1889.         INC L
  1890.         LD (HL),255
  1891.         INC L
  1892.         LD (HL),#80
  1893.         INC L
  1894.         LD HL,#4F00+64+32+1
  1895.         LD (HL),1
  1896.         INC L
  1897.         LD (HL),255
  1898.         INC L
  1899.         LD (HL),255
  1900.         INC L
  1901.         LD (HL),255
  1902.         INC L
  1903.         LD (HL),255
  1904.         INC L
  1905.         LD (HL),#80
  1906.         INC L
  1907.         LD HL,#4F00+1
  1908.         LD B,8*3
  1909.         LD (HL),1
  1910.         CALL HL_Down
  1911.         DJNZ $-5
  1912.  
  1913.         LD HL,#4F00+5+1
  1914.         LD B,8*3
  1915.         LD (HL),#80
  1916.         CALL HL_Down
  1917.         DJNZ $-5
  1918.  
  1919.         RET
  1920. HL_Down INC H
  1921.         LD A,H
  1922.         AND 7
  1923.         RET NZ
  1924.         LD A,L
  1925.         ADD A,32
  1926.         LD L,A
  1927.         RET C
  1928.         LD A,H
  1929.         SUB 8
  1930.         LD H,A
  1931.         RET
  1932. DE_Down INC D
  1933.         LD A,D
  1934.         AND 7
  1935.         RET NZ
  1936.         LD A,E
  1937.         ADD A,32
  1938.         LD E,A
  1939.         RET C
  1940.         LD A,D
  1941.         SUB 8
  1942.         LD D,A
  1943.         RET
  1944. PRNUM
  1945.         LD      (K3),A
  1946.         CALL    DELENIE;число:10
  1947.         LD      (K2),A
  1948.         CALL    DELENIE;число:100
  1949.         LD      (K1),A
  1950.         INC DE
  1951.         INC DE
  1952.         INC DE
  1953.         LD A,0
  1954.         LD (DE),A
  1955.         DEC DE
  1956.         LD      A,(K2) ;┐
  1957.         CALL    UMNA   ;│
  1958.         LD      A,(K3) ;├число-10*INT(число/10)+48
  1959.         SUB     C      ;│
  1960.         ADD     A,48   ;│
  1961.         LD      (DE),A ;┘
  1962.         DEC DE
  1963.         LD      A,(K1) ;┐
  1964.         CALL    UMNA   ;│
  1965.         LD      A,(K2) ;├INT(число/10)-10*INT(число/100)+48
  1966.         SUB     C      ;│
  1967.         ADD     A,48   ;│
  1968.         LD      (DE),A ;┘
  1969.         DEC DE
  1970.         LD      A,(K1) ;┐
  1971.         ADD     A,48   ;├INT(число/100)+48
  1972.         LD      (DE),A ;┘
  1973.         RET
  1974. UMNA    LD      C,A    ;умножение аккумулятора на 10
  1975.         LD      B,9
  1976. UM1     ADD     A,C
  1977.         DJNZ    UM1
  1978.         LD      C,A
  1979.         RET
  1980. DELENIE LD      B,0
  1981. DEL1    CP      10
  1982.         JR      C,DEL2
  1983.         SUB     10
  1984.         INC     B
  1985.         JR      DEL1
  1986. DEL2    LD      A,B
  1987.         RET
  1988. K1      DB 0
  1989. K2      DB 0
  1990. K3      DB 0
  1991.  
  1992. Rnd
  1993.           LD HL,(SEED)
  1994.           CALL RND
  1995. RND       LD A,H
  1996.           ADD HL,HL
  1997.           XOR H
  1998.           ADD HL,HL
  1999.           ADD HL,HL
  2000.           ADD HL,HL
  2001.           XOR H
  2002.           ADD HL,HL
  2003.           ADD HL,HL
  2004.           XOR H
  2005.           ADD HL,HL
  2006.           ADD HL,HL
  2007.           LD L,A
  2008.           LD (SEED),HL
  2009.           RET
  2010. SEED      DW  #381A ; НЕ НОЛЬ!
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016. NumBuf  DB "0000000",0
  2017.  
  2018.  
  2019.  
  2020.  
  2021. GamePlayTXT DB 22,5,4,7,"Map:"
  2022.         DB 22,6,4,7," Prev."
  2023.         DB 22,7,4,7," Next"
  2024.  
  2025.         DB 22,5,19," Skins:"
  2026.         DB 22,6,19,"  You"
  2027.         DB 22,5,35,"Limits:"
  2028.         DB 22,6,35,"Frag:00"
  2029.         DB 22,7,35,"Time:00"
  2030.         DB 22,5,51,"Game:"
  2031. TXT     DB 22,6,51,"Create"
  2032.         DB 22,7,51," Exit",0
  2033. TXT1    DB 22,6,51," Join ",0
  2034. TXT2    DB 22,6,51,"Create",0
  2035. ;--------------------------
  2036. ChMap   DB 0
  2037. MapMax  DB 2
  2038. ;--------------------------
  2039. Magic   DB 100,100;Bullets Box 1
  2040.         DB 250,250;Narkot
  2041.         DB 250,250;Teleport
  2042.         DB 250,250;Quake Damage
  2043.         DB 250,250;Mega Heath
  2044.         DB 150,150;Armor 2
  2045.         DB 150,150;Armor 1
  2046.         DB 0,80;2 Больничка
  2047.         DB 0,80;0-Выводить,Сколько ждать 1 Больничка
  2048.         DB 120,120;0-Рокетница
  2049. ;--------------------------
  2050. Map     DS 32*23
  2051.         DS 32
  2052. ;--------------------------
  2053. FragLim DB 0  ;Frag Limit
  2054. TimeCh2 DB 0  ;Time Limit
  2055. TimeLim DB 0  ;Time Limit
  2056. TimeCh  DB 0  ;Time Limit
  2057. ;--------------------------
  2058. Bullets DS 64*3 ;X,Y,%0000SSMM Где SS-Тип пули,MM-двежение
  2059.                 ;Если X больше чем 32 то пули нет
  2060. ;--------------------------
  2061. HeroMy  DB 0;X
  2062.         DB 0;Y
  2063.         DB 0;Скин
  2064.         DB 0;Фраги
  2065.         DB 0;Здоровье
  2066.         DB 0;Броня
  2067.         DB 0;Потроны
  2068.         DB 0;Оружие
  2069.         DB 0;Перезарядка оружия
  2070.         DB 0;Hevet Pack
  2071.         DB 0;Teloprt
  2072.         DB 0;Потроны рокетницы (при переключении меняется)
  2073.         DB 0;Собрал рокетницу-1 нет-0
  2074.         DB 0;Quake Damage
  2075.  
  2076. HeroMyKey DB 0;Кнопки
  2077. ;--------------------------
  2078. HeroYou DB 0;X
  2079.         DB 0;Y
  2080.         DB 0;Скин
  2081.         DB 0;Фраги
  2082.         DB 0;Здоровье
  2083.         DB 0;Броня
  2084.         DB 0;Патроны
  2085.         DB 0;Оружие
  2086.         DB 0;Перезарядка оружия
  2087.         DB 0;Hevet Pack
  2088.         DB 0;Teloprt
  2089.         DB 0;Потроны рокетницы (при переключении меняется)
  2090.         DB 0;Собрал рокетницу-1 нет-0
  2091.         DB 0;Quake Damed
  2092.  
  2093. HeroYouKey DB 0;Кнопки
  2094. WaitTXT DB 22,10,10,7,"Wait another player",0
  2095. WaitAn  LD HL,#4000
  2096.         LD DE,#4001
  2097.         LD (HL),0
  2098.         LD BC,6143
  2099.         LDIR
  2100.         LD HL,#5800
  2101.         LD DE,#5801
  2102.         LD BC,767
  2103.         LD (HL),7
  2104.         LDIR
  2105.  
  2106.         LD BC,WaitTXT
  2107.         CALL PrintText
  2108.         LD L,IRAs
  2109.         LD H,IRBl
  2110.         LD BC,#FFFD
  2111.         LD DE,#FFBF
  2112.         OUT (C),L
  2113.         LD B,E
  2114.         OUT (C),D
  2115.  
  2116.         LD B,D
  2117.         OUT (C),H
  2118. Sinhrz
  2119.         IN A,(C)
  2120.         RLA
  2121.         JR NC,Sinhrz
  2122.         LD BC,#FFFD
  2123.         LD DE,#FFBF
  2124.         LD B,D
  2125.         LD A,IRAs
  2126.         OUT (C),A
  2127.         LD B,E
  2128.         XOR A
  2129.         OUT (C),A
  2130.         HALTER
  2131.  
  2132.         CALL Sinhro ;Процедура синхронизации
  2133.         LD A,(ChMap)
  2134.         CALL Obmen        ;
  2135.         CALL MiniSinhro
  2136.         LD A,(TimeLim)
  2137.         CALL Obmen       ;
  2138.         CALL MiniSinhro
  2139.         LD A,(FragLim)
  2140.         CALL Obmen       ;
  2141.         CALL MiniSinhro
  2142.         LD A,(HeroMy+2)
  2143.         CALL Obmen        ;
  2144.         LD (HeroYou+2),A
  2145.         CALL MiniSinhro
  2146.  
  2147.  
  2148.  
  2149.         RET
  2150. JOiner
  2151.         LD L,IRAs
  2152.         LD H,IRBl
  2153.         LD BC,#FFFD
  2154.         LD DE,#FFBF
  2155.         LD B,D
  2156.         OUT (C),H
  2157.         IN A,(C)
  2158.         AND %10000000 ;TODO
  2159.        ld a,%10000000
  2160.         CP %10000000
  2161.         RET NZ
  2162.         ;POP HL ;???
  2163.         LD L,IRAs
  2164.         LD H,IRBl
  2165.         LD BC,#FFFD
  2166.         LD DE,#FFBF
  2167.         OUT (C),L
  2168.         LD B,E
  2169.         OUT (C),D
  2170.  
  2171.         LD B,D
  2172.         OUT (C),H
  2173. Sinhrzx
  2174.         IN A,(C)
  2175.         RLA
  2176.         ;JR NC,Sinhrzx
  2177.         LD BC,#FFFD
  2178.         LD DE,#FFBF
  2179.         LD B,D
  2180.         LD A,IRAs
  2181.         OUT (C),A
  2182.         LD B,E
  2183.         XOR A
  2184.         OUT (C),A
  2185.         HALTER
  2186.         HALTER
  2187.         CALL Sinhro
  2188.         CALL Obmen
  2189.         LD (ChMap),A
  2190.         CALL MiniSinhro
  2191.         CALL Obmen
  2192.         LD (TimeLim),A
  2193.         CALL MiniSinhro
  2194.         CALL Obmen
  2195.         LD (FragLim),A
  2196.         CALL MiniSinhro
  2197.         LD A,(HeroMy+2)
  2198.         CALL Obmen
  2199.         LD (HeroYou+2),A
  2200.         CALL MiniSinhro
  2201.         JP STGA
  2202. sinhro
  2203.        ret
  2204.         LD L,IRAs
  2205.         LD H,IRBl
  2206.         LD BC,#FFFD
  2207.         LD DE,#FFBF
  2208.  
  2209.         OUT (C),L
  2210.         LD B,E
  2211.         OUT (C),D
  2212.  
  2213.         LD B,D
  2214.  
  2215.         OUT (C),H
  2216. sinhro1
  2217.         IN A,(C)
  2218.         RLA
  2219.         JR NC,sinhro1
  2220.         OUT (C),L
  2221.         LD B,E
  2222.         XOR A
  2223.         OUT (C),A
  2224.  
  2225.         LD B,D
  2226.  
  2227.         OUT (C),H
  2228. sinhro2
  2229.         IN A,(C)
  2230.         RLA
  2231.         JR C,sinhro2
  2232.  
  2233.         OUT (C),L
  2234.         LD B,E
  2235.         OUT (C),D
  2236.  
  2237.         LD B,D
  2238.  
  2239.         OUT (C),H
  2240. sinhro3
  2241.         IN A,(C)
  2242.         RLA
  2243.         JR NC,sinhro3
  2244.         RET
  2245.  
  2246. BulZXY
  2247.         LD HL,Bullets
  2248.         LD B,64
  2249. BuZXY   PUSH BC
  2250.         LD A,(HL)
  2251.         CP 255
  2252.         CALL NZ,Buzz
  2253.         INC HL
  2254.         INC HL
  2255.         INC HL
  2256.         POP BC
  2257.         DJNZ BuZXY
  2258.         RET
  2259. Buzz
  2260.         PUSH HL
  2261.         LD D,(HL)
  2262.         INC HL
  2263.         LD E,(HL)
  2264.         POP HL
  2265.         LD A,(IX)
  2266.         CP D
  2267.         RET NZ
  2268.         LD A,(IX+1)
  2269.         CP E
  2270.         RET NZ
  2271.         CALL BullYep
  2272.         RET
  2273. OpoDel
  2274.         LD D,(IX)
  2275.         LD E,(IX+1)
  2276.         LD A,0
  2277.         CALL BlcSpr
  2278.         LD E,(IX)
  2279.         LD L,(IX+1)
  2280.         CALL HeMap
  2281.         LD (HL),0
  2282.  
  2283.        ifdef CLIENT
  2284.         LD A,(OldX)
  2285.         LD (IX),A
  2286.         LD A,(OldY)
  2287.         LD (IX+1),A
  2288.        endif
  2289.         RET
  2290.  
  2291.  
  2292.  
  2293. OldX    DB 0
  2294. OldY    DB 0