Ho visto che per muvore gli sprite o caratteri si usa PRINT AT e per le collisioni ATTR, ma usando questo e muovendo troppe cose sulle schermo il gioco andrebbe a scatti come sugli MSX, quindi bignognerebbe ricorrere agli indirizzi PEEK e POKE per guadagnare velocità, difatti sui commodore che ci sono solo POKE e PEEK ma i giochi sono molto più veloci. Per caso tu conosci le tabelle delgi indirizzi per codice video spectrum?? Ciao Andrea ----- Original Message ----- From: "Alfonso Martone" <a.martone@xxxxxxxxxxx> To: <zxspectrum@xxxxxxxxxxxxx> Sent: Wednesday, March 10, 2004 12:42 AM Subject: [zxspectrum] Re: sprite con lo spectrum > > Volevo sapere come funzionano gli sprite con lo spectrum, > > Quelli che vedi nei giochi non sono "sprite" ma bitmap disegnate di > volta in volta in un punto qualsiasi dello schermo. > > Se lo Spectrum avesse avuto uno sprite controller, in 48k ci sarebbero > entrati dei giochi ancora piu' impressionanti...! > > Se per ipotesi lo sprite controller ti si brucia mentre stai giocando, > sullo schermo ti rimane la mappa del gioco ma spariscono tutti gli > omini e le parti in movimento :-) Uno sprite controller, infatti, > sovrappone (!) all'immagine da tracciare a video, un pezzo di bitmap. > "Se il pennello video e' alla linea 143 e pixel 101 allora non > tracciare quello che troveresti nella pagina di RAM video ma traccia il > terzo pixel della quarta linea dello sprite 6". Dunque se sparisce lo > sprite, non si cancella neppure un bit di quello che c'era sotto > (perche' semplicemente non era visualizzato). > > La cosa si complica se lo sprite controller deve gestirli "a colori". > Per questo il grosso degli home computer, quando ce li aveva, ce li > aveva monocromatici (nel senso che per esempio poteva dire che i bit > "zero" corrispondevano al rosso - o al trasparente - e i bit a "uno" > corrispondevano al verde; tenendo sempre sovrapposti due sprite di > colore diverso, si poteva fare qualche "effetto speciale"...). > > Alcuni sprite controller avevano addirittura la "collision detection", > cioe' se due sprite si toccano anche per un solo pixel (i pixel > dichiarati "trasparenti" non contavano), allora il processore puo' > saperlo senza andarsi a confrontare tutte le "bounding box" degli > sprite. > In parole povere, dato uno sprite controller con le caratteristiche > citate, un gioco come Manic Miner puo' essere tirato su anche su uno > Spectrum a 0,98 megahertz (e sono stato assai generoso: probabilmente > basta ancor meno potenza, giacche' a quel punto il microprocessore deve > solo dire dove possono andare gli sprite ed aggiornare il punteggio). > > Il guaio e' che a suo tempo gli "sprite" piu' comuni erano di 8x8 pixel > pixel o 16x16 pixel. Il C64 li aveva da 21x24 pixel, ma ne visualizzava > solo otto contemporaneamente, per cui il resto dell'animazione a video > (se ce n'era) andava fatto disegnando bitmap (pensa agli Atari 800, con > otto sprite monocromatici a 8x8 pixel e senza collision detection!!! > beh, sempre un filino piu' comodi dello Spectrum, sprovvisto di sprite) > > Gli UDG erano solo caratteri grafici ridefinibili, non erano sprite. Uno > sprite si puo' piazzare a partire da un qualunque pixel dello schermo. > Per piazzare un UDG 8x8 e risparmiarti i calcoli intermedi, hai bisogno > di otto versioni di questo udg (una che comincia al bit 0, una al bit > 1, etc), ognuna di 16 byte (occupano tutte due byte, ad eccezione di > quella che comincia al bit 0). Le scanline verticali sono a indirizzi > fissi per cui ci si puo' giostrare con una tabella di indirizzi > precalcolati (senza scomodare la routine della PLOT della ROM). > > E Miner Willy e' alquanto piu' grosso di un paio di UDG...! > > Siccome lo sprite controller e' indipendente dalla memoria video, allora > non si pone neppure il problema del colour clash (lo sprite controller > traccia il "proprio" sprite al posto dei colori che ci sarebbero stati > "sotto"). > > p.s.: nel 1987 restai assai sorpreso nel vedere che il mio tanto > agognato PC compatibile funzionava ordinariamente in un "modo testo"; > ero abituato allo Spectrum (che non necessitava di inizializzazioni > grafiche e comandi vari; la grafica c'era sempre, bastava scrivere in > una certa area perche' qualche pixel apparisse o sparisse dal video!!!) > e al QL (che, "mode 8" o "mode 4", sempre lo stesso concetto era!!). > >