User Tools

Site Tools


content:retrocomputing:sprite

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
content:retrocomputing:sprite [2023/07/24 21:06] – [Definizione] admincontent:retrocomputing:sprite [2023/08/15 14:45] – [Sprite animation e collision] admin
Line 159: Line 159:
 ===== Sprite animation e collision ===== ===== Sprite animation e collision =====
  
-Il seguente esempio è tratto dal libro //Commodore 64 Graphics and Sound//;... FIXME+Il seguente esempio è tratto dal libro //Commodore 64 Graphics and Sound//; è diverso rispetto al listato sopra, perché non ridefinisce gli sprite con un altro disegno, ma visualizza alternativamente due sprite, con due definizioni diverse per creare l'animazione, relative alla stessa figura (un alieno). 
 + 
 +{{:sprite:sprite-aliens.png|}} 
 +==== Definizione sprite ==== 
 + 
 +Vengono **definiti i dati di 5 sprite**, usando alcune locazioni di memoria a partire da (13*64=)832Questa area è in realtà il //cassette buffer//, per cui se si usa il registratore, i dati degli sprite verrebbero soprascritti :!: 
 + 
 +<file> 
 +130 poke2040,13:poke2041,14 
 +140 poke2042,13:poke2043,14 
 +150 poke2044,15 
 +</file> 
 + 
 +==== Spostamento e animazione ==== 
 + 
 +Si tratta quindi di 4 sprite 'alieni' più l'ultimo (2044) che rappresenta una esplosione. In realtà vengono visualizzati solo 2 sprite alla volta, all'inizio gli **sprite 0 e 2** (definiti in 2040 e 2042), uno da un lato, l'altro dal lato opposto, con un'animazione 'a gambe aperte': 
 + 
 +<file> 
 +255 rem move sprites 0 and 2 
 +260 pokevc,x:pokevc+4,255-x 
 +... 
 +285 rem display sprites 0 and 2 
 +290 pokevc+21,
 +300 for t=1 to 200:next 
 +</file> 
 + 
 +I registri nel VIC-II per le **posizioni X degli sprite 0-3** (vc=53248, vc+2=53250, vc+4=53252 e vc+6=53254): 
 + 
 +{{:sprite:vic-ii-sprite-x-pos.png|}}   
 + 
 +Il registro 'vc+21=53269' tramite il quale vengono visualizzati solo gli **sprite abilitati**: 
 + 
 +{{:sprite:vic-22-sprite-enable.png|}} 
 + 
 +Poi vengono visualizzati gli sprite 1 e 3 (2041 e 2043) con un'animazione 'a gambe chiuse', un po' più avanti nella direzione 'x': 
 + 
 +<file> 
 +305 rem move sprites 1 and 3 
 +310 pokevc+2,x+4:pokevc+6,251-x 
 +... 
 +335 rem display sprites 1 and 3 
 +340 pokevc+21,10 
 +350 for t=1 to 200:next 
 +</file> 
 + 
 +L'effetto è quello di dare un'animazione a due alieni che si avvicinano, per poi scontrarsi. Di seguito il **listato completo**:
  
 <file> <file>
Line 181: Line 226:
 210 pokevc+39,4:pokevc+40,4 210 pokevc+39,4:pokevc+40,4
 220 pokevc+41,3:pokevc+42,3 220 pokevc+41,3:pokevc+42,3
-230 pokevc+43,7:pokevc+21,0+230 pokevc+43,7:pokevc+21,0:rem disable sprites
 240 for n=1 to 10 240 for n=1 to 10
 250 for x=0 to 130 step 8 250 for x=0 to 130 step 8
content/retrocomputing/sprite.txt · Last modified: 2023/08/15 14:54 by admin