gibstov

Halloween Boogalo Atari 8-bit GFX

Oct 11th, 2013
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 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 GFX port by Gibstov
  5. 150 DIM PM0$(128),PM1$(128),PM2$(128),PM3$(128),PM4$(128)
  6. 160 DIM BAT0$(8),BAT1$(8),WITCH0$(16),WITCH1$(16),SP$(8)
  7. 170 DIM CLEAR$(128),C$(1),CMD$(4)
  8. 180 DIM BX(3),BY(3),BW(3),BF(3)
  9. 200 REM Clear screen and setup variables
  10. 210 GR.7+16
  11. 220 CL = 159:RW = 95:REM Columns and Rows of screen
  12. 300 REM Load background and draw on screen
  13. 310 GOSUB 3000
  14. 320 NR = 64:WD = 76: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 1000
  18. 500 RESTORE 5000:REM Load sprites into variables
  19. 510 FOR I=1 TO 8:READ D:BAT0$(I,I)=CHR$(D):NEXT I:BC=8
  20. 520 FOR I=1 TO 8:READ D:BAT1$(I,I)=CHR$(D):NEXT I
  21. 530 FOR I=1 TO 16:READ D:WITCH0$(I,I)=CHR$(D):NEXT I:WW=16:WH=16
  22. 540 FOR I=1 TO 16:READ D:WITCH1$(I,I)=CHR$(D):NEXT I
  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. 710 BW(I) = BW(I) + 1:IF BW(I) > 1 THEN BW(I) = 0
  30. 720 BF(I) = INT(RND(1) * 9)
  31. 730 Y = INT(BF(I) / 3):X = INT((BF(I) / 3 - Y) * 3 + .05)
  32. 740 X = X + BX(I) + KF :Y = Y + BY(I)
  33. 741 IF BW(I)=0 THEN SP$=BAT0$
  34. 742 IF BW(I)=1 THEN SP$=BAT1$
  35. 745 IF I=1 THEN PM1$(Y+1)=SP$:POKE 53248,X+30
  36. 746 IF I=2 THEN PM2$(Y+1)=SP$:POKE 53249,X+30
  37. 747 IF I=3 THEN PM3$(Y+1)=SP$:POKE 53250,X+30
  38. 750 IF WX = -1 THEN X = 0:Y = 0:POKE 53251,0:POKE 53252,0:POKE 53253,0:POKE 53254,0:POKE 53255,0:WX = -2
  39. 760 IF WX >= 0 THEN X = WX:Y = 10:PM4$(Y+1)=WITCH0$:PM0$(Y+1)=WITCH1$:POKE 53251,X+40:POKE 53252,X+50:POKE 53253,X+46:POKE 53254,X+42:POKE 53255,X+38: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 RESTORE 4000:POKE 708,169:POKE 709,175:POKE 710,48
  44. 1010 CMD$="LCF"
  45. 1020 READ C$
  46. 1030 IF C$="E" THEN RETURN
  47. 1040 C=0
  48. 1050 FOR I=1 TO LEN(CMD$):IF C$=CMD$(I,I) THEN C=I
  49. 1055 NEXT I
  50. 1060 IF C=0 THEN PRINT "UNKNOWN DRAW COMMAND":END
  51. 1070 ON C GOSUB 2000,2050,2100
  52. 1080 GOTO 1020
  53. 2000 READ C,X1,Y1,X2,Y2
  54. 2010 COLOR C:PLOT X1+X,Y1+Y:DRAWTO X2+X,Y2+Y
  55. 2020 RETURN
  56. 2050 READ C,X1,Y1,R
  57. 2060 COLOR C
  58. 2070 PLOT X1+X+R*COS(0),Y1+Y+R*SIN(0):FOR I=1 TO 360 STEP 12:DRAWTO X1+X+R*COS(I),Y1+Y+R*SIN(I):NEXT I
  59. 2080 RETURN
  60. 2100 READ C,X1,Y1
  61. 2110 REM FIGURE OUT FILL
  62. 2150 RETURN
  63. 3000 A=4*(INT(PEEK(742)/4)-1)
  64. 3010 POKE 54279,A
  65. 3020 VSA=256*PEEK(135)+PEEK(134)
  66. 3030 BOA=256*PEEK(141)+PEEK(140)
  67. 3040 PM=256*A+384
  68. 3050 DISP=PM-BOA
  69. 3060 ADD=2
  70. 3070 FOR T=1 TO 5
  71. 3080 PMHIGH=INT(DISP/256)
  72. 3090 PMLOW=DISP-256*PMHIGH
  73. 3100 POKE VSA+ADD,PMLOW
  74. 3110 POKE VSA+ADD+1,PMHIGH
  75. 3120 DISP=DISP+128:ADD=ADD+8
  76. 3130 NEXT T
  77. 3140 CLEAR$(1)=CHR$(0):CLEAR$(128)=CHR$(0):CLEAR$(2)=CLEAR$
  78. 3150 PM1$=CLEAR$:PM2$=CLEAR$:PM3$=CLEAR$
  79. 3160 POKE 559,46:POKE 53277,3:POKE 623,16
  80. 3170 POKE 704,20:POKE 705,20:POKE 706,20:POKE 707,130:POKE 711,200
  81. 3180 POKE 53260,85
  82. 3200 RETURN
  83. 4000 DATA L,1,36,0,16,24
  84. 4010 DATA L,1,36,0,56,24
  85. 4020 DATA L,1,16,24,56,24
  86. 4030 DATA L,2,36,12,32,16
  87. 4040 DATA L,2,32,16,36,20
  88. 4050 DATA L,2,36,20,40,16
  89. 4060 DATA L,2,40,16,36,12
  90. 4070 DATA L,2,32,16,40,16
  91. 4080 DATA L,2,36,12,36,20
  92. 4090 DATA L,1,20,36,4,48
  93. 4100 DATA L,1,20,36,36,48
  94. 4110 DATA L,1,4,48,36,48
  95. 4120 DATA L,1,24,24,24,40
  96. 4130 DATA L,1,12,48,12,64
  97. 4140 DATA L,1,12,64,48,64
  98. 4150 DATA L,1,48,64,48,24
  99. 4160 DATA L,3,28,52,40,52
  100. 4170 DATA L,3,40,52,40,64
  101. 4180 DATA L,3,40,64,28,64
  102. 4190 DATA L,3,28,64,28,52
  103. 4200 DATA L,1,28,51,28,48
  104. 4210 DATA C,2,32,60,1
  105. 4220 DATA L,2,18,42,22,42
  106. 4230 DATA L,2,22,42,22,46
  107. 4240 DATA L,2,22,46,18,46
  108. 4250 DATA L,2,18,46,18,42
  109. 4260 DATA L,2,28,28,44,28
  110. 4270 DATA L,2,44,28,44,40
  111. 4280 DATA L,2,44,40,28,40
  112. 4290 DATA L,2,28,40,28,28
  113. 4300 DATA L,2,36,28,36,40
  114. 4310 DATA L,2,28,34,44,34
  115. 4320 DATA L,1,48,60,68,60
  116. 4330 DATA L,1,68,60,68,44
  117. 4340 DATA L,1,48,44,72,44
  118. 4350 DATA L,1,72,44,64,36
  119. 4360 DATA L,1,64,36,48,36
  120. 4370 DATA L,2,56,48,64,48
  121. 4380 DATA L,2,64,48,64,56
  122. 4390 DATA L,2,64,56,56,56
  123. 4400 DATA L,2,56,56,56,48
  124. 4410 DATA L,2,60,48,60,56
  125. 4420 DATA L,2,56,52,64,52
  126. 4430 DATA L,3,52,36,52,32
  127. 4440 DATA L,2,52,32,52,28
  128. 4450 DATA L,3,56,36,56,32
  129. 4460 DATA L,2,56,32,56,28
  130. 4470 DATA L,3,60,36,60,32
  131. 4480 DATA L,2,60,32,60,28
  132. 4490 DATA L,3,64,36,64,32
  133. 4500 DATA L,2,64,32,64,28
  134. 4600 DATA E
  135. 5000 DATA 0,0,0,255,60,24,0,0
  136. 5010 DATA 0,0,129,66,60,24,0,0
  137. 5020 DATA 0,0,0,4,14,31,0,126
  138. 5030 DATA 191,62,31,5,0,0,0,0
  139. 5040 DATA 0,0,0,0,0,0,16,0
  140. 5050 DATA 3,255,3,0,0,0,0,0
Add Comment
Please, Sign In to add comment