Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

75 linhas
2.9KB

  1. 1 REM =============================================
  2. 2 REM MULTICOLOR SPRITE + MUSIC DEMO
  3. 3 REM Moves a multicolor sprite while playing a
  4. 4 REM continuous bass line via the SID chip.
  5. 5 REM =============================================
  6. 10 GOSUB 1000: REM INIT SID
  7. 20 GOSUB 2000: REM INIT SPRITE
  8. 30 REM === MAIN LOOP ===
  9. 40 FOR I=0 TO 360 STEP 2
  10. 50 X=160+INT(100*SIN(I*3.14159/180))
  11. 60 Y=120+INT(70*COS(I*3.14159/180))
  12. 70 POKE 53248,X AND 255 : REM SPRITE 0 X LOW
  13. 80 LO=PEEK(53264) AND 254
  14. 90 IF X>255 THEN LO=LO OR 1
  15. 100 POKE 53264,LO : REM SPRITE 0 X HIGH BIT
  16. 110 POKE 53249,Y : REM SPRITE 0 Y
  17. 120 N=INT(I/30) AND 7
  18. 130 GOSUB 3000 : REM PLAY NOTE N
  19. 140 FOR W=1 TO 200:NEXT W : REM DELAY
  20. 150 NEXT I
  21. 160 GOSUB 4000: REM SILENCE
  22. 170 END
  23. 1000 REM ===== INIT SID =====
  24. 1010 FOR A=54272 TO 54296:POKE A,0:NEXT A : REM SILENCE ALL
  25. 1020 POKE 54296,15 : REM MAX VOLUME
  26. 1030 POKE 54272,0:POKE 54273,40 : REM VOICE 1 FREQ ~440Hz (A4)
  27. 1040 POKE 54277,9 : REM ATTACK=0 DECAY=9
  28. 1050 POKE 54278,240 : REM SUSTAIN=15 RELEASE=0
  29. 1060 RETURN
  30. 2000 REM ===== INIT SPRITE =====
  31. 2010 REM --- define multicolor ship sprite at $2000 (pointer $80) ---
  32. 2020 BASE=8192: REM $2000
  33. 2030 DATA 0,126,0, 0,255,128, 1,219,192, 3,189,224
  34. 2040 DATA 7,255,240, 15,255,248, 31,255,252, 63,255,254
  35. 2050 DATA 127,255,255, 127,255,255, 63,255,254, 31,255,252
  36. 2060 DATA 15,255,248, 7,255,240, 3,255,224, 1,219,192
  37. 2070 DATA 0,255,128, 0,126,0, 0,60,0, 0,24,0, 0,0,0
  38. 2080 FOR J=0 TO 62: READ D: POKE BASE+J,D: NEXT J
  39. 2090 POKE 2040,128 : REM SPRITE 0 POINTER = $80 (= $2000)
  40. 2100 POKE 53287,10 : REM SPRITE 0 COLOR = LIGHT RED
  41. 2110 POKE 53285,1 : REM MULTICOLOR #1 = WHITE
  42. 2120 POKE 53286,2 : REM MULTICOLOR #2 = RED
  43. 2130 POKE 53276,PEEK(53276) OR 1 : REM SPRITE 0 MULTICOLOR ON
  44. 2140 POKE 53277,PEEK(53277) OR 1 : REM SPRITE 0 X-EXPAND
  45. 2150 POKE 53271,PEEK(53271) OR 1 : REM SPRITE 0 Y-EXPAND
  46. 2160 POKE 53269,1 : REM ENABLE SPRITE 0
  47. 2170 RETURN
  48. 3000 REM ===== PLAY NOTE N =====
  49. 3010 REM FREQUENCY TABLE (lo,hi) for C major scale
  50. 3020 REM C4=4291, D4=4817, E4=5405, F4=5727, G4=6428, A4=7213, B4=8097, C5=8583
  51. 3030 FL=0:FH=0
  52. 3040 IF N=0 THEN FL=195:FH=16 : REM C4
  53. 3050 IF N=1 THEN FL=209:FH=18 : REM D4
  54. 3060 IF N=2 THEN FL=29:FH=21 : REM E4
  55. 3070 IF N=3 THEN FL=95:FH=22 : REM F4
  56. 3080 IF N=4 THEN FL=28:FH=25 : REM G4
  57. 3090 IF N=5 THEN FL=45:FH=28 : REM A4
  58. 3100 IF N=6 THEN FL=161:FH=31 : REM B4
  59. 3110 IF N=7 THEN FL=7:FH=33 : REM C5
  60. 3120 POKE 54272,FL : REM SET FREQ LOW
  61. 3130 POKE 54273,FH : REM SET FREQ HIGH
  62. 3140 POKE 54276,33 : REM TRIANGLE WAVE + GATE ON
  63. 3150 RETURN
  64. 4000 REM ===== SILENCE =====
  65. 4010 POKE 54276,32 : REM GATE OFF (RELEASE)
  66. 4020 FOR W=1 TO 500:NEXT W
  67. 4030 POKE 54276,0
  68. 4040 POKE 54296,0 : REM VOLUME OFF
  69. 4050 POKE 53269,0 : REM SPRITES OFF
  70. 4060 RETURN

Powered by TurnKey Linux.