Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

69 rindas
2.1KB

  1. 1 REM ============================================
  2. 2 REM SPRITE-DEMO.BAS - C64 Hardware Sprite Demo
  3. 3 REM Demonstrates: sprite setup, movement,
  4. 4 REM color, enable/disable
  5. 5 REM ============================================
  6. 10 REM --- CONSTANTS ---
  7. 20 SP = 53248 : REM VIC-II base ($D000)
  8. 30 SPENA = SP+21 : REM sprite enable register ($D015)
  9. 40 EXTCOL = SP+32 : REM border color ($D020)
  10. 50 BGCOL = SP+33 : REM background color ($D021)
  11. 60 SPPTR = 2040 : REM sprite 0 pointer (screen RAM + $03F8)
  12. 100 REM --- SETUP ---
  13. 110 POKE BGCOL, 0 : REM black background
  14. 120 POKE EXTCOL, 0 : REM black border
  15. 130 PRINT CHR$(147) : REM clear screen
  16. 200 REM --- DEFINE SPRITE SHAPE (block 13 = $0340) ---
  17. 210 FOR I = 832 TO 894 : POKE I, 0 : NEXT : REM clear block 13
  18. 220 REM Draw a simple arrow shape (24 pixels wide x 21 rows)
  19. 230 REM Each row = 3 bytes
  20. 240 DATA 0,60,0,0,126,0,0,255,0,1,255,128
  21. 250 DATA 3,255,192,7,255,224,0,60,0,0,60,0
  22. 260 DATA 0,60,0,0,60,0,0,60,0,0,60,0
  23. 270 DATA 0,60,0,0,60,0,0,60,0,0,60,0
  24. 280 DATA 0,60,0,0,60,0,0,60,0,0,60,0
  25. 290 DATA 0,60,0
  26. 300 FOR I = 0 TO 62
  27. 310 READ D : POKE 832+I, D
  28. 320 NEXT I
  29. 400 REM --- POINT SPRITE 0 TO BLOCK 13 ---
  30. 410 POKE SPPTR, 13 : REM sprite 0 uses block 13
  31. 420 REM --- SET SPRITE COLOR ---
  32. 430 POKE SP+39, 7 : REM sprite 0 color = yellow ($D027)
  33. 440 REM --- ENABLE SPRITE 0 ---
  34. 450 POKE SPENA, 1 : REM enable sprite 0 bit 0
  35. 500 REM --- ANIMATE: BOUNCE SPRITE ACROSS SCREEN ---
  36. 510 X = 40 : Y = 100 : DX = 2 : DY = 1
  37. 520 FOR F = 1 TO 500
  38. 530 X = X + DX : Y = Y + DY
  39. 540 REM Bounce off edges
  40. 550 IF X < 24 OR X > 294 THEN DX = -DX
  41. 560 IF Y < 50 OR Y > 220 THEN DY = -DY
  42. 570 REM Set position
  43. 580 IF X > 255 THEN POKE SP+16,(PEEK(SP+16) OR 1) : POKE SP,X-256
  44. 590 IF X <= 255 THEN POKE SP+16,(PEEK(SP+16) AND 254) : POKE SP,X
  45. 600 POKE SP+1, Y : REM Y position
  46. 610 REM Cycle border color every 10 frames
  47. 620 IF (F AND 15) = 0 THEN POKE EXTCOL, (PEEK(EXTCOL)+1) AND 15
  48. 630 NEXT F
  49. 700 REM --- CLEAN UP ---
  50. 710 POKE SPENA, 0 : REM disable all sprites
  51. 720 POKE BGCOL, 6 : REM restore blue background
  52. 730 POKE EXTCOL, 14 : REM restore light blue border
  53. 740 PRINT "DONE."
  54. 750 END

Powered by TurnKey Linux.