[zxspectrum] Re: sprite con lo spectrum

  • From: Roberto Montaruli <rmontaruli@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Fri, 12 Mar 2004 06:19:52 -0800 (PST)

--- Andrea Gasparrini <andreagasparrini@xxxxxxxxxxx> wrote:
> 
>
> Mi interesserebbe avere dello procedure in L/M (linguaggio macchina ) per
> muovere i caratteri sprite, e la memoria video dello spectrum.
>

Dunque, al momento non ho nulla sottomano.
Pero' possiamo parlarne a grandi linee.

Cominciamo col definire un oggetto sprite.
Non esiste nessuno sprite nello spectrum, quindi quello che tutti noi
convenzionalmente chiamiamo sprite non e' altro che una immagine che risiede in
memoria e deve venire disegnata sullo schermo a partire da una certa
coordinata.

Quindi abbiamo da una parte lo schermo, la cui memoria comincia all'indirizzo
16384 (8000H) ed e' organizzata in maniera tuttaltro che intuitiva ma piuttosto
funzionale per quanto riguarda le routines di stampa dei caratteri.
Poi ci sono gli attributi, cioe' l'altra area di memoria che consente di
colorare i singoli pixel accesi o spenti.

In memoria abbiamo lo sprite, o meglio il nostro disegno che occupa una certa
dimensione, diciamo 16x16 pixel, ma che puo' essere di qualunque dimensione,
anche se in orizzontale e' piu' semplice se ha un numero di bit multiplo di 8.
In verticale questo problema non c'e'.

Il primo passo e' di trovare l'indirizzo della memoria video corrispondente
alle coordinate X,Y

Poi, siccome solo una volta su 8 il pixel coincide con l'inizio di un byte
occorrera' shiftare opportunamente il primo byte dello sprite.

Quindi scriverlo a video, incrementare e ripetere...

Sull'operazione "scriverlo a video" occorre approfondire se si vuole conservare
lo sfondo oppure no, e in questo caso e' necessario salvare lo sfondo in un
buffer oppure si potrebbe pensare di backuppare tutta la memoria video in
un'altra area di memoria e poi prendere lo sfondo dal backup, sovrapporci lo
sprite e poi scrivere a video il risultato: e' un'altra tecnica...

A linguaggio Z80 come sei messo?
Disponi di un compilatore?


=====
//
//   In a world without walls and fences
//     you would not need windows and gates. 
//                               (Confucio)
==
P'n'P: http://maicrosoft.italiamac.com

__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you?re looking for faster
http://search.yahoo.com

Other related posts: