home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 1056.dms / 1056.adf / BattlePong.AMOS / BattlePong.amosSourceCode
AMOS Source Code  |  2006-04-09  |  17KB  |  732 lines

  1. Dir$="BattlePong:"
  2. '
  3. Hide On 
  4. '  
  5. Dim S1(4),S2(4),S3(4),S4(4),YS(1),YMAX(1)
  6. Dim YA1(2),YA2(2),YA3(2),YA4(2),YA5(2),YA6(2),S(1)
  7. '
  8. INIT
  9. SPZ=1 : SZAHL=1 : SOUND=0 : SPEED=7
  10. '
  11. '-------------------------------- Hauptmenue ------------------------- 
  12. MENUE:
  13. '
  14. Load "BP_MenuSprites.ABK"
  15. '
  16. If SOUND=0
  17.    Erase 5
  18.    Load "BP_song.abk"
  19. End If 
  20. '
  21. SWIN1=0 : SWIN2=0
  22. AF=-1 : BS=0 : P1=0 : P2=0 : SPOS=0
  23. S1(0)=0 : S1(1)=0 : S1(2)=0 : S1(3)=0 : S1(4)=0
  24. S2(0)=0 : S2(1)=0 : S2(2)=0 : S2(3)=0 : S2(4)=0
  25. NAME1$="" : NAME2$=""
  26. '
  27. Screen Open 0,320,256,16,Lowres
  28. Curs Off : Flash Off 
  29. FARBENAUS
  30. Cls 0
  31. '
  32. Double Buffer 
  33. Synchro Off 
  34. '
  35. ZEIGE_BOBS
  36. PFEILANIM
  37. If SOUND=0
  38.    Mvolume 63
  39.    Music 1
  40. End If 
  41. EINBLENDEN
  42. '
  43. W=5
  44. QUIT=0
  45. '
  46. '  
  47. Repeat 
  48.    Synchro 
  49.    If MENU=0
  50.       Bob 58,110,42,5+SPZ
  51.       Bob 59,110,69,7+SZAHL
  52.       Bob 60,110,96,10+SOUND
  53.       Bob 61,110,123,12
  54.       Bob 62,110,160,13
  55.       If PM=-1
  56.          If Amreg(58,3)=0
  57.             PM=0
  58.          End If 
  59.       End If 
  60.       If Jup(1) and W>1 and PM=0
  61.          PY=-1 : MOVEPFEIL
  62.       End If 
  63.       If Jdown(1) and W<5 and PM=0
  64.          PY=1 : MOVEPFEIL
  65.       End If 
  66.       If Fire(1)=0
  67.          F=0
  68.       End If 
  69.       If Fire(1) and F=0 and PM=0
  70.          F=-1 : CHOOSE
  71.       End If 
  72.    Else 
  73.       Bob 60,80+(SPEED-4)*23,100,33
  74.       If Jright(1) and SPEED<10 and JUSE=0
  75.          Inc SPEED : JUSE=-1
  76.       End If 
  77.       If Jleft(1) and SPEED>4 and JUSE=0
  78.          Dec SPEED : JUSE=-1
  79.       End If 
  80.       If Fire(1) and JUSE=0
  81.          MENU=0
  82.          Bob 63,70,126,28
  83.          Amal 58,PFEIL$
  84.          Amal On 58
  85.       End If 
  86.       If Joy(1)=0
  87.          JUSE=0
  88.       End If 
  89.    End If 
  90.    Wait Vbl 
  91. Until QUIT=-1
  92. '
  93. Procedure ZEIGE_BOBS
  94.    Shared SPZ,SZAHL,SOUND
  95.    Bob 58,110,42,5+SPZ
  96.    Bob 59,110,69,7+SZAHL
  97.    Bob 60,110,96,10+SOUND
  98.    Bob 61,110,123,12
  99.    Bob 62,110,160,13
  100.    Bob 63,70,161,15
  101.    A$="L: Move R2,0,R3 ; Let X=320 ; Let R2=-320 ; Let R3=640/R0 ; Jump L"
  102.    For I=0 To 37
  103.       X=Rnd(320)
  104.       Y=Rnd(256)
  105.       SHAPE=Rnd(3)
  106.       Bob I,X,Y,1+SHAPE
  107.       Channel I To Bob I
  108.       Amal I,A$
  109.       Amreg(I,0)=4-SHAPE
  110.       Amreg(I,1)=X
  111.       Amreg(I,2)=-X
  112.       Amreg(I,3)=(X*2)/(4-SHAPE)
  113.    Next I
  114.    Amal On 
  115. End Proc
  116. Procedure MOVEPFEIL
  117.    Shared W,PY,PM,PFEIL$
  118.    PM=-1
  119.    W=W+PY
  120.    If W=5 and PY=1 or W=4 and PY=-1 Then ZUS=10 Else ZUS=0
  121.    Amreg(58,0)=(27+ZUS)/3
  122.    Amreg(58,1)=PY*3
  123.    Amreg(58,3)=-1
  124. End Proc
  125. Procedure CHOOSE
  126.    Shared W,SPZ,SZAHL,SOUND,QUIT
  127.    If W=1 Then SPZ=(SPZ+1) mod 2
  128.    If W=2 Then SZAHL=(SZAHL+1) mod 3
  129.    If W=3 Then SOUND=(SOUND+1) mod 2
  130.    If W=4 Then BALLSPEED
  131.    If W=5 Then QUIT=-1
  132. End Proc
  133. Procedure BALLSPEED
  134.    Shared MENU,JUSE
  135.    ' Bob Off 58 : Bob Off 59
  136.    Bob Off 60 : Bob Off 61 : Bob Off 62 : Amal Off 58 : Bob Off 63
  137.    Bob 58,110,30,12
  138.    Bob 59,22,90,32
  139.    MENU=-1 : JUSE=-1
  140. End Proc
  141. '
  142. Fade 4
  143. Wait 60
  144. Amal Off 
  145. Bob Off 
  146. Screen Close 0
  147. '
  148. '------------------------------- Game Start -------------------------- 
  149. Load "PP_icon.abk"
  150. '
  151. NAME_EINGEBEN
  152. '
  153. If SOUND=0 Then Load "PP_samples.abk"
  154. Erase 1
  155. Load "BP_Sprites2.abk"
  156. Load "Anzeige.pck",10
  157. Load "Anzeige_back.pck",11
  158. '
  159. Screen Open 0,320,256,16,Lowres
  160. Curs Off : Flash Off 
  161. Cls 0
  162. Load Iff "PP_back.pic"
  163. FARBENAUS
  164. EINBLENDEN
  165. '
  166. PRNTNAME[NAME1$,63,211]
  167. PRNTNAME[NAME2$,63,232]
  168. '
  169. Double Buffer 
  170. Synchro On 
  171. '
  172. Channel 1 To Bob 1
  173. Channel 2 To Bob 2
  174. Channel 3 To Bob 5
  175. Channel 4 To Bob 3
  176. '
  177. INITAMAL
  178. '
  179. COMP=0
  180. '
  181. LOS:
  182. '
  183. If EXTRA>0 Then Bob Off 4
  184. ANZEIGE
  185. ESC=0
  186. X1=4 : Y1=84
  187. X2=308 : Y2=84
  188. YS(0)=3 : YS(1)=3
  189. YB1=-4 : YB2=32
  190. YB3=-4 : YB4=32
  191. S(0)=0 : S(1)=0
  192. DEAD1=0 : DEAD2=0
  193. YMAX(0)=160 : YMAX(1)=160
  194. BT=BS
  195. EXTRA=0
  196. BLOCK=0
  197. YZ=Rnd(3)
  198. Z=Rnd(2)
  199. If Z=0 Then YZ=-YZ
  200. '
  201. Bob 1,X1,Y1,S(0)+1
  202. Bob 2,X2,Y2,S(1)+4
  203. Bob 3,XB,YB,7
  204. '
  205. Amal 1,A$
  206. Amal 2,B$
  207. Amal 4,D$
  208. '
  209. Amreg(0)=Y1
  210. Amreg(1,2)=S(0)+1
  211. Amreg(1,3)=YS(0)
  212. Amreg(1,4)=YMAX(0)
  213. Amreg(1)=Y2
  214. Amreg(2,2)=S(1)+4
  215. Amreg(2,3)=YS(1)
  216. Amreg(2,4)=YMAX(1)
  217. Amreg(21)=0
  218. Amreg(4,3)=0
  219. Amreg(4,4)=YA1(0)
  220. Amreg(4,5)=YA2(0)
  221. Amreg(4,6)=YA3(0)
  222. Amreg(4,7)=YA4(0)
  223. Amreg(4,8)=YA5(0)
  224. Amreg(4,9)=YA6(0)
  225. Amreg(2)=YA1(0)
  226. Amreg(3)=YA2(0)
  227. Amreg(4)=YA3(0)
  228. Amreg(5)=YA4(0)
  229. Amreg(6)=YA5(0)
  230. Amreg(7)=YA6(0)
  231. '
  232. Amal On 1
  233. Amal On 2
  234. Amal On 4
  235. '
  236. If SPZ=0 Then COMP=-1
  237. '
  238. Every 400 Gosub ZEIT : Every Off 
  239. Repeat 
  240.    If COMP=-1 Then Amreg(1)=Amreg(4,1)-12
  241.    '
  242.    Y1=Amreg(0)
  243.    Y2=Amreg(1)
  244.    '
  245.    If AF
  246.       AUFSCHLAG
  247.    Else 
  248.       If EXTRA=0
  249.          EX=Rnd(300)
  250.          If EX=0
  251.             Z=Rnd(1)
  252.             XE=Rnd(100)
  253.             YE=Rnd(160)
  254.             XE=XE+30+Z*160
  255.             YE=YE+10
  256.             EXTRA=Rnd(4)+1
  257.             If EXTRA=4 and BLOCK
  258.                EXTRA=0 : Goto W
  259.             End If 
  260.             Bob 4,XE,YE,7+EXTRA
  261.             Every On 
  262.          End If 
  263.       End If 
  264.       W:
  265.       C=Bob Col(4)
  266.       If C
  267.          Bob Off 4
  268.          On EXTRA Proc GROSS,KLEIN,SCHNELL,BLOCK,UMKEHR
  269.          EXTRA=0
  270.       End If 
  271.       Amreg(1,2)=S(0)+1
  272.       Amreg(1,3)=YS(0)
  273.       Amreg(1,4)=YMAX(0)
  274.       Amreg(2,2)=S(1)+4
  275.       Amreg(2,3)=YS(1)
  276.       Amreg(2,4)=YMAX(1)
  277.       '
  278.       XB=Amreg(22)
  279.       If XB<0
  280.          Amal Off 
  281.          Bob Off 5
  282.          DEAD1
  283.          DEAD1=-1
  284.       End If 
  285.       If XB>319
  286.          Amal Off 
  287.          Bob Off 5
  288.          DEAD2
  289.          DEAD2=-1
  290.       End If 
  291.       If Amreg(25)
  292.          Amreg(25)=0
  293.          BT=(BT+1) mod 2
  294.          If SOUND=0
  295.             Sam Play 2,2,10000
  296.          End If 
  297.       End If 
  298.    End If 
  299.    If Key State(69)=True
  300.       Amal Off 
  301.       Bob Off 
  302.       ESC=-1
  303.    End If 
  304. Until DEAD1 or DEAD2 or ESC
  305. '
  306. If SWIN1=SZAHL+1 or SWIN2=SZAHL+1 or ESC
  307.    Screen Close 0
  308.    Erase 1
  309.    Erase 2
  310.    Erase 5
  311.    Erase 10
  312.    Erase 11
  313.    Goto MENUE
  314. End If 
  315. F=-1
  316. Goto LOS
  317. '  
  318. ZEIT:
  319.    Bob Off 4
  320.    EXTRA=0
  321.    Every Off 
  322. Return 
  323. '
  324. Procedure AUFSCHLAG
  325.    Shared AF,BS,XB,YB,X1,Y1,X2,Y2,XZ,YZ,COMP,SPEED
  326.    If BS=0
  327.       XB=X1+6 : YB=Y1+12
  328.       If Fire(1)
  329.          XZ=SPEED : AF=0
  330.          Amreg(21)=XZ
  331.          Amreg(4,3)=YZ
  332.       End If 
  333.    End If 
  334.    If BS=1
  335.       XB=X2-8 : YB=Y2+12
  336.       If Fire(0) or COMP=-1
  337.          XZ=-SPEED : AF=0
  338.          Amreg(21)=XZ
  339.          Amreg(4,3)=YZ
  340.       End If 
  341.    End If 
  342.    Amreg(22)=XB
  343.    Amreg(4,1)=YB
  344. End Proc
  345. '
  346. Procedure ANZEIGE
  347.    Shared P1,P2,S1(),S2(),S3(),S4(),SZAHL
  348.    If P1=0 Then Z1=41 : Z2=10
  349.    If P1=1 Then Z1=1 : Z2=5
  350.    If P1=2 Then Z1=3 : Z2=10
  351.    If P1=3 Then Z1=4 : Z2=10
  352.    If P1=4 Then Z1=14 : Z2=15
  353.    If P1=5 Then Z1=11 : Z2=32
  354.    If P1=7 Then Z1=41 : Z2=41
  355.    If P2=0 Then Z3=41 : Z4=10
  356.    If P2=1 Then Z3=1 : Z4=5
  357.    If P2=2 Then Z3=3 : Z4=10
  358.    If P2=3 Then Z3=4 : Z4=10
  359.    If P2=4 Then Z3=14 : Z4=15
  360.    If P2=5 Then Z3=11 : Z4=32
  361.    If P2=7 Then Z3=41 : Z4=41
  362.    Paste Icon 25,221,Z1
  363.    Paste Icon 37,221,Z2
  364.    Paste Icon 272,221,Z3
  365.    Paste Icon 284,221,Z4
  366.    '
  367.    For I=0 To SZAHL*2
  368.       S3(I)=S1(I) : S4(I)=S2(I)
  369.       If S1(I)=0 Then S3(I)=10
  370.       If S2(I)=0 Then S4(I)=10
  371.       Paste Icon 186+I*15,211,S3(I)
  372.       Paste Icon 186+I*15,232,S4(I)
  373.    Next I
  374. End Proc
  375. Procedure SATZANZEIGE[SWIN,NAME$]
  376.    Shared SZAHL
  377.    Bob Off 
  378.    Unpack 10,72,60
  379.    If SWIN=SZAHL+1
  380.       PRNTNAME["SET\AND\MATCH",86,64]
  381.    Else 
  382.       PRNTNAME["SET",144,64]
  383.    End If 
  384.    PRNTNAME[NAME$,(320-Len(NAME$)*12)/2+4,82]
  385.    PRNTNAME["PRESS\FIRE\TO",86,100]
  386.    PRNTNAME["CONTINUE",116,118]
  387.    Repeat 
  388.    Until Fire(1) or Fire(0)
  389.    Unpack 11,72,60
  390. End Proc
  391. Procedure DEAD1
  392.    Shared XZ,XB,AF,P1,P2,S2(),SPOS,SWIN2,BS,SOUND,NAME2$
  393.    XZ=0 : XB=100 : AF=-1 : P2=P2+1
  394.    If SOUND=0
  395.       Sam Play 1,1,10000
  396.    End If 
  397.    If P2=3 and P1=3 or P2=8
  398.       P2=4 : P1=4
  399.    End If 
  400.    If P2=5
  401.       P1=7
  402.    End If 
  403.    If P2=4 and P1<3 or P2=6
  404.       P1=0 : P2=0 : Inc S2(SPOS)
  405.       If S2(SPOS)=6
  406.          Inc SPOS : Inc SWIN2
  407.          SATZANZEIGE[SWIN2,NAME2$]
  408.       End If 
  409.       BS=(BS+1) mod 2
  410.    End If 
  411. End Proc
  412. Procedure DEAD2
  413.    Shared XZ,XB,AF,P1,P2,S1(),SPOS,SWIN1,BS,SOUND,NAME1$
  414.    XZ=0 : XB=100 : AF=-1 : P1=P1+1
  415.    If SOUND=0
  416.       Sam Play 1,1,10000
  417.    End If 
  418.    If P1=3 and P2=3 or P1=8
  419.       P1=4 : P2=4
  420.    End If 
  421.    If P1=5
  422.       P2=7
  423.    End If 
  424.    If P1=4 and P2<3 or P1=6
  425.       P1=0 : P2=0 : Inc S1(SPOS)
  426.       If S1(SPOS)=6
  427.          Inc SPOS : Inc SWIN1
  428.          SATZANZEIGE[SWIN1,NAME1$]
  429.       End If 
  430.       BS=(BS+1) mod 2
  431.    End If 
  432. End Proc
  433. Procedure GROSS
  434.    Shared BT,S(),YMAX()
  435.    Shared YA1(),YA2(),YA3(),YA4(),YA5(),YA6(),S()
  436.    S(BT)=2 : YMAX(BT)=144
  437.    If BT=0
  438.       Amreg(4,4)=YA1(2)
  439.       Amreg(4,5)=YA2(2)
  440.       Amreg(4,6)=YA3(2)
  441.       Amreg(4,7)=YA4(2)
  442.       Amreg(4,8)=YA5(2)
  443.       Amreg(4,9)=YA6(2)
  444.    Else 
  445.       Amreg(2)=YA1(2)
  446.       Amreg(3)=YA2(2)
  447.       Amreg(4)=YA3(2)
  448.       Amreg(5)=YA4(2)
  449.       Amreg(6)=YA5(2)
  450.       Amreg(7)=YA6(2)
  451.    End If 
  452. End Proc
  453. Procedure KLEIN
  454.    Shared BT,S(),YMAX()
  455.    Shared YA1(),YA2(),YA3(),YA4(),YA5(),YA6(),S()
  456.    S(BT)=1 : YMAX(BT)=176
  457.    If BT=0
  458.       Amreg(4,4)=YA1(1)
  459.       Amreg(4,5)=YA2(1)
  460.       Amreg(4,6)=YA3(1)
  461.       Amreg(4,7)=YA4(1)
  462.       Amreg(4,8)=YA5(1)
  463.       Amreg(4,9)=YA6(1)
  464.    Else 
  465.       Amreg(2)=YA1(1)
  466.       Amreg(3)=YA2(1)
  467.       Amreg(4)=YA3(1)
  468.       Amreg(5)=YA4(1)
  469.       Amreg(6)=YA5(1)
  470.       Amreg(7)=YA6(1)
  471.    End If 
  472. End Proc
  473. Procedure SCHNELL
  474.    Shared BT,YS()
  475.    If YS(BT)>0 Then YS(BT)=6 Else YS(BT)=-6
  476. End Proc
  477. Procedure BLOCK
  478.    Shared C$,E$,BLOCK
  479.    BLOCK=-1
  480.    Bob 5,152,8,13
  481.    Amal 3,C$
  482.    Amal 5,E$
  483.    Amal On 3
  484.    Amal On 5
  485. End Proc
  486. Procedure UMKEHR
  487.    Shared BT,YS()
  488.    YS(BT)=-YS(BS)
  489. End Proc
  490. Procedure INITAMAL
  491.    Shared A$,B$,C$,D$,E$
  492.    '
  493.    ' --- Player 1 Anim ---
  494.    A$="   Loop: P ; Let R0=Joy1"
  495.    A$=A$+"      If R0&1 Jump Up"
  496.    A$=A$+"      If R0&2 Jump Down"
  497.    A$=A$+"Next: If RA<8 Jump A"
  498.    A$=A$+"      If RA>R4 Jump B"
  499.    A$=A$+"      Let Y=RA ; Let A=R2"
  500.    A$=A$+"      Jump Loop"
  501.    A$=A$+"Up:   Let RA=RA-R3 ; Jump Next"
  502.    A$=A$+"Down: Let RA=RA+R3 ; Jump Next"
  503.    A$=A$+"A:    Let RA=8     ; Jump Next"
  504.    A$=A$+"B:    Let RA=R4    ; Jump Next"
  505.    '
  506.    ' --- Player 2 Anim ---
  507.    B$="   Loop: P ; Let R0=Joy0"
  508.    B$=B$+"      If R0&1 Jump Up"
  509.    B$=B$+"      If R0&2 Jump Down"
  510.    B$=B$+"Next: If RB<8 Jump A"
  511.    B$=B$+"      If RB>R4 Jump B"
  512.    B$=B$+"      Let Y=RB ; Let A=R2"
  513.    B$=B$+"      Jump Loop"
  514.    B$=B$+"Up:   Let RB=RB-R3 ; Jump Next"
  515.    B$=B$+"Down: Let RB=RB+R3 ; Jump Next"
  516.    B$=B$+"A:    Let RB=8     ; Jump Next"
  517.    B$=B$+"B:    Let RB=R4    ; Jump Next"
  518.    '
  519.    ' --- Barikade Anim ---  
  520.    C$="AU (Let RI=Y)"
  521.    C$=C$+"Loop: P ; Move 0,152,76 ; Move 0,-152,76"
  522.    C$=C$+"      Jump Loop"
  523.    '
  524.    ' --- Ball Anim ---
  525.    D$="   Loop: P ; Let RW=RW+RV ; Let R1=R1+R3"
  526.    D$=D$+"      If RW<10 Jump I"
  527.    D$=D$+"      If RW>300 Jump K"
  528.    D$=D$+"Next: If R1<8 Jump U"
  529.    D$=D$+"      If R1>185 Jump D"
  530.    D$=D$+"Show: Let X=RW ; Let Y=R1 ; Let RX=X ; Let RY=Y"
  531.    D$=D$+"      Jump Loop"
  532.    D$=D$+"U:    Let R1=8 ; Let R3=R3*-1 ; Jump Show"
  533.    D$=D$+"D:    Let R1=185 ; Let R3=R3*-1 ; Jump Show"
  534.    D$=D$+"I:    Let RS=RA+R4+1 ; If R1<RS Jump Next"
  535.    D$=D$+"      Let RS=RA+R9 ; If R1>RS Jump Next"
  536.    D$=D$+"J:    Let RW=10 ; Let RV=RV*-1 ; Let RZ=-1"
  537.    D$=D$+"      If R3<0 Jump A"
  538.    D$=D$+"      Let RS=RA+R5+1 ; If R1<RS Jump E"
  539.    D$=D$+"      Let RS=RA+R5+1 ; Let RT=RA+R6+1 ; If R1<RS Jump M"
  540.    D$=D$+"      If R1<RT Jump F"
  541.    D$=D$+"M:    Let RS=RA+R7+1 ; Let RT=RA+R8+1 ; If R1<RS Jump O"
  542.    D$=D$+"      If R1<RT Jump G"
  543.    D$=D$+"O:    Let RS=RA+R8 ; If R1>RS Jump H"
  544.    D$=D$+"A:    Let RS=RA+R5 ; If R1<RS Jump H"
  545.    D$=D$+"      Let RS=RA+R5+1 ; Let RT=RA+R6+1 ; If R1<RS Jump P"
  546.    D$=D$+"      If R1<RT Jump G"
  547.    D$=D$+"P:    Let RS=RA+R7+1 ; Let RT=RA+R8+1 ; If R1<RS Jump Q"
  548.    D$=D$+"      If R1<RT Jump F"
  549.    D$=D$+"Q:    Let RS=RA*R8 ; If R1>RS Jump E"
  550.    D$=D$+"      Jump Next"
  551.    D$=D$+"K:    Let RS=RB+RC+1 ; If R1<RS Jump Next"
  552.    D$=D$+"      Let RS=RB+RH ; If R1>RS Jump Next"
  553.    D$=D$+"R:    Let RW=300 ; Let RV=RV*-1 ; Let RZ=-1"
  554.    D$=D$+"      If R3<0 Jump B"
  555.    D$=D$+"      Let RS=RB+RD+1 ; If R1<RS Jump E"
  556.    D$=D$+"      Let RS=RB+RD+1 ; Let RT=RB+RE+1 ; If R1<RS Jump T"
  557.    D$=D$+"      If R1<RT Jump F"
  558.    D$=D$+"T:    Let RS=RB+RF+1 ; Let RT=RB+RG+1 ; If R1<RS Jump V"
  559.    D$=D$+"      If R1<RT Jump G"
  560.    D$=D$+"V:    Let RS=RB+RG ; If R1>RS Jump H"
  561.    D$=D$+"B:    Let RS=RB+RD+1 ; If R1<RS Jump H"
  562.    D$=D$+"      Let RS=RB+RD+1 ; Let RT=RB+RE+1 ; If R1<RS Jump W"
  563.    D$=D$+"      If R1<RT Jump G"
  564.    D$=D$+"W:    Let RS=RB+RF+1 ; Let RT=RB+RG+1 ; If R1<RS Jump X"
  565.    D$=D$+"      If R1<RT Jump F"
  566.    D$=D$+"X:    Let RS=RB+RG ; If R1>RS Jump E"
  567.    D$=D$+"      Jump Next"
  568.    D$=D$+"E:    Let R3=R3-2 ; Jump Next"
  569.    D$=D$+"F:    Let R3=R3-1 ; Jump Next"
  570.    D$=D$+"G:    Let R3=R3+1 ; Jump Next"
  571.    D$=D$+"H:    Let R3=R3+2 ; Jump Next"
  572.    '
  573.    ' --- Ball_Barikade Anim --- 
  574.    E$="   A:    P ; Let R0=RX>145 ; Let R1=RX<166 ; Let R4=RI-7 ; Let R2=RY>R4 ; Let R5=RI+30 ; Let R3=RY<R5"
  575.    E$=E$+"      If R0&R1&R2&R3 Jump B"
  576.    E$=E$+"      Jump A"
  577.    E$=E$+"B:    Let RV=RV*-1 ; Let RZ=-1"
  578.    E$=E$+"      If RV>0 Jump C"
  579.    E$=E$+"      Let RW=145 ; Jump A"
  580.    E$=E$+"C:    Let RW=166 ; Jump A"
  581. End Proc
  582. Procedure INIT
  583.    Shared YA1(),YA2(),YA3(),YA4(),YA5(),YA6()
  584.    For I=0 To 2
  585.       Read YA1(I),YA2(I),YA3(I),YA4(I),YA5(I),YA6(I)
  586.    Next I
  587.    Data -6,0,7,16,23,30
  588.    Data -6,-3,1,6,10,14
  589.    Data -6,3,13,26,36,46
  590. End Proc
  591. Procedure PFEILANIM
  592.    Shared PFEIL$
  593.    PFEIL$="Anim 0,(14,1)(15,1)(16,1)(17,1)(18,1)(19,1)(20,1)(21,1)(22,1)(23,1)(24,1)(25,1)(26,1)(27,1)(28,1)(29,1)(30,1)(31,1) ;"
  594.    PFEIL$=PFEIL$+"W: If R3 Jump M ; Jump W"
  595.    PFEIL$=PFEIL$+"M: For R2=1 To R0 ; Let Y=Y+R1 ; Next R2 ; Let R3=0 ; Jump W"
  596.    Channel 58 To Bob 63
  597.    Amal 58,PFEIL$
  598.    Amal On 58
  599. End Proc
  600. Procedure FARBENAUS
  601.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  602. End Proc
  603. Procedure SOUNDAUS
  604.    For I=63 To 0 Step -1
  605.       Mvolume I
  606.       Wait Vbl 
  607.    Next I
  608.    Music Off 
  609. End Proc
  610. Procedure NAME_EINGEBEN
  611.    Shared X1,Y1,XPOS1,J1,NAME1$,NAMEEND1
  612.    Shared X2,Y2,XPOS2,J2,NAME2$,NAMEEND2,SPZ,SOUND
  613.    Screen Open 0,320,256,16,Lowres
  614.    Curs Off : Flash Off 
  615.    Cls 0
  616.    Load Iff "BP_Name.pic"
  617.    FARBENAUS
  618.    If SPZ=1 Then Screen Copy 0,11,66,150,125 To 0,167,66
  619.    EINBLENDEN
  620.    Double Buffer 
  621. '
  622.    X1=126 : Y1=40
  623.    X2=126 : Y2=40
  624.    XPOS1=23
  625.    XPOS2=179
  626.    NAMEEND1=0
  627.    NAMEEND2=SPZ-1
  628.    If SPZ=0
  629.       NAME2$="\COMPUTER\"
  630.       PRNTNAME[NAME2$,179,165]
  631.    End If 
  632. '
  633.    Repeat 
  634.       If NAMEEND1=0 Then NAME1
  635.       If NAMEEND2=0 Then NAME2
  636.    Until NAMEEND1 and NAMEEND2
  637.    Fade 3
  638.    If SOUND=0
  639.       SOUNDAUS
  640.       Erase 3
  641.    Else 
  642.       Wait 45
  643.    End If 
  644.    Screen Close 0
  645. End Proc
  646. Procedure NAME1
  647.    Shared X1,Y1,XPOS1,J1,NAME1$,NAMEEND1
  648.    If Jright(1) and J1=0 Then X1=X1+14 : J1=-1
  649.    If Jleft(1) and J1=0 Then X1=X1-14 : J1=-1
  650.    If Jdown(1) and J1=0 Then Y1=Y1+20 : J1=-1
  651.    If Jup(1) and J1=0 Then Y1=Y1-20 : J1=-1
  652.    If Joy(1)=0 Then J1=0
  653.    If X1>126 Then X1=0
  654.    If X1<0 Then X1=126
  655.    If Y1>40 Then Y1=0
  656.    If Y1<0 Then Y1=40
  657.    Bob 1,11+X1,66+Y1,34
  658.    If Fire(1) and J1=0
  659.       J1=-1
  660.       Z1=((X1/14)+1)+Y1/2
  661.       If Z1<28 and XPOS1<143
  662.          Paste Icon XPOS1,165,Z1+10
  663.          NAME1$=NAME1$+Chr$(Z1+64)
  664.          XPOS1=XPOS1+12
  665.       End If 
  666.       If Z1=28 and XPOS1<143
  667.          NAME1$=NAME1$+Chr$(Z1+64)
  668.          XPOS1=XPOS1+12
  669.       End If 
  670.       If Z1=29 and XPOS1>23
  671.          XPOS1=XPOS1-12
  672.          NAME1$=Left$(NAME1$,(XPOS1-23)/12)
  673.          Paste Icon XPOS1,165,41
  674.       End If 
  675.       If Z1=30
  676.          NAMEEND1=-1
  677.          Bob Off 1
  678.       End If 
  679.    End If 
  680. End Proc
  681. Procedure NAME2
  682.    Shared X2,Y2,XPOS2,J2,NAME2$,NAMEEND2
  683.    If Jright(0) and J2=0 Then X2=X2+14 : J2=-1
  684.    If Jleft(0) and J2=0 Then X2=X2-14 : J2=-1
  685.    If Jdown(0) and J2=0 Then Y2=Y2+20 : J2=-1
  686.    If Jup(0) and J2=0 Then Y2=Y2-20 : J2=-1
  687.    If Joy(0)=0 Then J2=0
  688.    If X2>126 Then X2=0
  689.    If X2<0 Then X2=126
  690.    If Y2>40 Then Y2=0
  691.    If Y2<0 Then Y2=40
  692.    Bob 2,167+X2,66+Y2,35
  693.    If Fire(0) and J2=0
  694.       J2=-1
  695.       Z2=((X2/14)+1)+Y2/2
  696.       If Z2<28 and XPOS2<299
  697.          Paste Icon XPOS2,165,Z2+10
  698.          NAME2$=NAME2$+Chr$(Z2+64)
  699.          XPOS2=XPOS2+12
  700.       End If 
  701.       If Z2=28 and XPOS2<299
  702.          NAME2$=NAME2$+Chr$(Z2+64)
  703.          XPOS2=XPOS2+12
  704.       End If 
  705.       If Z2=29 and XPOS2>179
  706.          XPOS2=XPOS2-12
  707.          NAME2$=Left$(NAME2$,(XPOS2-179)/12)
  708.          Paste Icon XPOS2,165,41
  709.       End If 
  710.       If Z2=30
  711.          NAMEEND2=-1
  712.          Bob Off 2
  713.       End If 
  714.    End If 
  715. End Proc
  716. Procedure PRNTNAME[NAME$,X,Y]
  717.    L=Len(NAME$)
  718.    If L>0
  719.       For I=1 To L
  720.          B$=Mid$(NAME$,I,1)
  721.          Z=Asc(B$)-54
  722.          If Z=38
  723.             Z=41
  724.          End If 
  725.          Paste Icon X,Y,Z
  726.          X=X+12
  727.       Next I
  728.    End If 
  729. End Proc
  730. Procedure EINBLENDEN
  731.    Fade 4,$0,$FE0,$FFF,$ACC,$688,$244,$355,$80,$77,$599,$F20,$C10,$900,$7AF,$47D,$14C
  732. End Proc