Guest User

Commodore 128 Basic Week 2 reddit.com/r/retrobattlestations

a guest
Oct 13th, 2013
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. 100 rem basic week 2: halloween boogaloo
  2. 110 rem http://reddit.com/r/retrobattlestations
  3. 120 rem written by fozztexx
  4. 130 rem commodore 128 port by rolandjuno 2013-10-13
  5. 140 rem ----
  6. 200 rem clear screen and setup variables
  7. 210 print chr$(147)chr$(5):poke53280,12:poke53281,0
  8. 220 cl = 40:rw = 24:rem columns and rows of screen
  9. 230 m=abs(peek(65533)=255)+abs(peek(215)=128)
  10. 240 if m=0 then print "sorry, this is the c128 version.":end
  11. 250 if m=2 then cl=80:fast:rem 80 column mode
  12. 300 rem load background and draw on screen
  13. 310 gosub 1510
  14. 320 nr = sr:wd = sc:wx = -2
  15. 330 x = 2:kf = x + wd:if rnd(1) > .5 then x = cl - wd - 2:kf = 0
  16. 340 y = rw - nr:kw = cl - wd - 4
  17. 350 gosub 2010
  18. 500 rem load sprites into variables
  19. 510 gosub 1510:bt$(0) = sp$:be$ = se$:bc = sc
  20. 520 gosub 1510:bt$(1) = sp$
  21. 530 gosub 1510:wt$ = sp$:we$ = se$:ww = sc:wh = sr
  22. 600 rem animation
  23. 610 nb = 3:wx = -2
  24. 620 for i = 1 to nb
  25. 630 bx(i)=int(rnd(1)*(kw-bc)):by(i)=int(rnd(1)*((rw-4-nr/2)/nb))*nb+i+1
  26. 640 bw(i) = int(rnd(1) * 2):bf(i) = int(rnd(1) * 9)
  27. 650 next i
  28. 660 for i = 1 to nb
  29. 670 y = int(bf(i) / 3):x = int((bf(i) / 3 - y) * 3 + .05)
  30. 680 x = x + bx(i) + kf :y = y + by(i):sp$ = be$:gosub 2010
  31. 710 bw(i) = bw(i) + 1:if bw(i) > 1 then bw(i) = 0
  32. 720 bf(i) = int(rnd(1) * 9)
  33. 730 y = int(bf(i) / 3):x = int((bf(i) / 3 - y) * 3 + .05)
  34. 740 x = x + bx(i) + kf :y = y + by(i):sp$ = bt$(bw(i)):gosub 2010
  35. 750 if wx = -1 then sp$ = we$:x = 0:y = 0:gosub 2010:wx = -2
  36. 760 if wx >= 0 then sp$ = wt$:x = wx:y = 0:gosub 2010:wx = wx - 1
  37. 770 if wx = -2 and wh + nr < rw and rnd(1) * 50 < 2 then wx = cl - ww - 1
  38. 780 next i
  39. 790 goto 660
  40. 1000 rem position cursor at x,y
  41. 1010 sys65520,,y,x
  42. 1020 return
  43. 1500 rem load a sprite from data into a string
  44. 1510 sp$ = "":se$ = "":sr = 0:sc = 0
  45. 1520 read t$,s$:if len(sp$) > 0 then sp$ = sp$ + chr$(13)
  46. 1530 sp$ = sp$ + s$:sr = sr + 1:if len(s$) > sc then sc = len(s$)
  47. 1540 bl$ = "":for i = 1 to len(s$):bl$ = bl$ + " ":next i
  48. 1550 if len(se$) > 0 then se$ = se$ + chr$(13)
  49. 1560 se$ = se$ + bl$
  50. 1570 if t$ <> "se" then goto 1520
  51. 1580 return
  52. 2000 rem draw sprite in sp$ at x,y
  53. 2010 se = 1:sb = 1
  54. 2020 se = instr(sp$, chr$(13), sb)
  55. 2030 if se = 0 then se = len(sp$) + 1
  56. 2040 gosub 1010
  57. 2050 print mid$(sp$, sb, se - sb);
  58. 2060 if se >= len(sp$) then return
  59. 2070 se = se + 1
  60. 2080 sb = se:y = y + 1:goto 2020
  61. 5000 data sp," ^"
  62. 5010 data sp," N M"
  63. 5020 data sp," NNBMM"
  64. 5030 data sp," N -+- M"
  65. 5040 data sp," N MBN M"
  66. 5050 data sp," NRRRRRRRRRM"
  67. 5060 data sp," B RRR B"
  68. 5070 data sp," BB B BB::::"
  69. 5080 data sp," NM B-+-BBiiii"
  70. 5090 data sp," N MBRBRBB M"
  71. 5100 data sp," N [] M BRRRRR"
  72. 5110 data sp,"NRRRRR B +-+B"
  73. 5120 data sp," B +--+ B B+BB"
  74. 5130 data sp," B B B B +-+B"
  75. 5140 data sp," B Bo B BRRRRB"
  76. 5150 data se," BRRRBRRBRB"
  77. 5160 data se,"JvK"
  78. 5170 data se,"UvI"
  79. 5180 data sp," , "
  80. 5190 data sp," RN(R "
  81. 5200 data sp," XMM "
  82. 5210 data sp," N;R) "
  83. 5220 data sp,"=='N <===<<< "
  84. 5230 data sp," MRRM "
  85. 5240 data se," `` "
Add Comment
Please, Sign In to add comment