gibstov

Halloween Boogalo - Atari 8-bit

Oct 5th, 2013
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 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 Atari 8-bit port by Gibstov
  5. 140 REM ----
  6. 150 REM Dimension strings
  7. 160 DIM SP$(264),BE$(8),WT$(128),WE$(128),SE$(264),BT0$(8),BT1$(8),T$(2),S$(20),BL$(30)
  8. 170 DIM BX(3),BY(3),BW(3),BF(3)
  9. 200 REM Clear screen and setup variables
  10. 210 PRINT CHR$(125):POKE 752,1
  11. 220 CL = 40:RW = 24:REM Columns and Rows of screen
  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:BT0$ = SP$:BE$ = SE$:BC = SC
  20. 520 GOSUB 1510:BT1$ = SP$
  21. 530 GOSUB 1510:WT$ = SP$:WE$ = SE$:WW = SC:WH = SR
  22. 600 REM AnimationP
  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)
  35. 741 IF BW(I)=0 THEN SP$=BT0$
  36. 742 IF BW(I)=1 THEN SP$=BT1$
  37. 745 GOSUB 2010
  38. 750 IF WX = -1 THEN SP$ = WE$:X = 0:Y = 0:GOSUB 2010:WX = -2
  39. 760 IF WX >= 0 THEN SP$ = WT$:X = WX:Y = 0:GOSUB 2010:WX = WX - 1
  40. 770 IF WX = -2 AND WH + NR < RW AND RND(1) * 50 < 2 THEN WX = CL - WW - 1
  41. 780 NEXT I
  42. 790 GOTO 660
  43. 1000 REM Position cursor at X,Y
  44. 1010 POKE 84,Y+1:POKE 85,X
  45. 1020 RETURN
  46. 1500 REM Load a sprite from DATA into a string
  47. 1510 SP$ = "":SE$ = "":SR = 0:SC = 0
  48. 1520 READ T$,S$:IF LEN(SP$) > 0 THEN SP$(LEN(SP$) + 1) = CHR$(155)
  49. 1525 S$(LEN(S$)+1) = " "
  50. 1530 SP$(LEN(SP$)+1) = S$:SR = SR + 1:IF LEN(S$) > SC THEN SC = LEN(S$)
  51. 1540 BL$ = "":FOR I = 1 TO LEN(S$):BL$(LEN(BL$) + 1) = " ":NEXT I
  52. 1550 IF LEN(SE$) > 0 THEN SE$(LEN(SE$) + 1) = CHR$(155)
  53. 1560 SE$(LEN(SE$) + 1) = BL$
  54. 1570 IF T$ <> "SE" THEN GOTO 1520
  55. 1580 RETURN
  56. 2000 REM Draw sprite in SP$ at X,Y
  57. 2010 GOSUB 1010
  58. 2020 REM Set the left margin to the X position
  59. 2030 POKE 82,X:PRINT SP$;
  60. 2040 POKE 82,0
  61. 2050 RETURN
  62. 5000 DATA SP, ^
  63. 5010 DATA SP, / \
  64. 5020 DATA SP, //|\\
  65. 5030 DATA SP, / -+- \
  66. 5040 DATA SP, / \|/ \
  67. 5050 DATA SP, /_________\
  68. 5060 DATA SP, | ___ |
  69. 5070 DATA SP, || | ||::::
  70. 5080 DATA SP, /\ |-+-||IIII
  71. 5090 DATA SP, / \|_|_|| \
  72. 5100 DATA SP, / [] \ |_____
  73. 5110 DATA SP,/_____ | +-+|
  74. 5120 DATA SP, | +--+ | |+||
  75. 5130 DATA SP, | | | | +-+|
  76. 5140 DATA SP, | |o | |____|
  77. 5150 DATA SE, |___|__|_|
  78. 5160 DATA SE,^v^
  79. 5170 DATA SE,-v-
  80. 5180 DATA SP, ^
  81. 5190 DATA SP, _/(_
  82. 5200 DATA SP, <\\
  83. 5210 DATA SP, /;_)
  84. 5220 DATA SP,=='/ <===<<<
  85. 5230 DATA SP, \__\
  86. 5240 DATA SE, ''
Add Comment
Please, Sign In to add comment