Ok, tengo il forum di Ready64 aggiornato sul minigame in corso di sviluppo: qui
http://digilander.iol.it/ice00/download/lss.zip trovate l'eseguibile in via di sviluppo che di volta in voltà aggiornerò. Il file è criptato e la password è "Ready64 è fantastico" tutto in minusolo, attaccato e senza le virgolette, così solo chi segue questo forum potrà provare il gioco prima del rilascio ufficiale e potrà proporre miglioramenti e correggere eventuali bug.
Il platform vuole essere piccolo clone di The Great Giana Syster.
Il personaggio è già disegnato e l'animazione utilizza due soli frames (in totale 4 sprite per avere il movimento a sinistra e quello a destra).
Probabilmente per risparmiare spazio il frame del salto rimarrà uno di quelli già presenti.
Ho iniziato a scrivere il codice semplicemente prendendo il sorgente di EFNY di Cadaver commentato sull'articolo "dissect" che invito tutti a leggere perché spiega nel minimo dettaglio come il gioco sia realizzato (guardate anche "scroll" perché spiega molte tecniche per realizzare lo scroll).
Ho cominciato a togliere tutto quello che penso non mi serva e cercato di ridurre al minimo le routine utilizzate per risparmiare spazio.
Al momento non mi preoccupo dello spazio (sperando che siano diponibili 8KB, ma se fossero 4KB vedrò di sacrificare qualcosa), inoltre l'eseguibile non è compresso e ottimizzato nello spazio.
La grafica di EFNY utilizza blocchi di caratteri 4x4 (32x32 pixels). Come dice Lasse, è preferibile utilizzare potenze di due, quindi blocchi 2x2, 4x4 perché si guadagna in facilità di gestione utilizzando l'aritmetica binaria (rispetto ad esempio a un 3x3 - che per la cronaca era la dimensione dei caratteri utilizzati in MArkanoid dello scorso anno).
2x2 mi sembrano troppo pochi, perché porterebbe ad avere una mappa molto grande in termini di occupazione di spazio. Probabilmente per un platform così, il meglio sarebbe caratteri 4x2, ma temo di sprecare troppo spazio per le mappe, per cui ho optato per 4x4.
Il blocco del terreno è composto da solo 2 caratteri base ripetuti sui 4x4, così come per le lance accuminate nel terreno.
Le nuvole si mangiano invece 8 caratteri (4x2), ma ho ottenuto 3 blocchi diversi per avere nuvole sul'orrizzonte ad altezze diverse.
In caso di problemi di spazio, tengo un solo tipo di nuvola e cancello 2 blocchi.
Al momento non aggiungo altri elementi decorativi (come siepi/alberi) per non occupare spazio e perché forse rileverà le collisioni tra sprite/dati se questo serve a ridurre il codice di gestione delle collisioni.
Lo schermo tiene 5 blocchi di caratteri in altezza, per cui mi rimane una linea vuota in basso per il titolo e ben 4 righe in alto per metterci il punteggio e contatori vari.
Ci sono pertanto due interrupt attivi (li vedete perché ho lasciato le lineette grigie colorate) che servono per modificare i paramentri dello scroll.
Infatti, lo scroll è ottenuto in hardware con una velocità tra 1 e 4 pixels (come spiegato nell'articolo) e spostando tutti i caratteri (ben 40*20) quando lo scroller hardware ha terminato il max scroll (8 pixels).
Questo si mangia metà raster line disponibili, anche perché bisogna spostare oltre alla grafica anche i colori.
A differenze di EFNY, ho optato per avere gli stessi colori per ogni blocco. Questo implica che si può effettuare lo scroll di 1/4 di locazioni di memoria (come spiegato in "scroll" e implementato in Metal Warrior 1).
Dato che non viene utilizzato il buffer video (perché porterebbe via troppo codice), questo riduce il codice da eseguire per fare lo scroll (che risulta parecchio comunque).
Col joystick in porta 2 potete provare lo scroll su una piccola mappa (potete volare sopra le lance, perché ancora non c'è il controllo collisioni).
Il prossimo passo è quello di aggiungere i mattoni in aria e attivare il salto.
Poi penso di mettere i diamanti da prendere come sprite e utilizzare un nemico
mono sprite ma qui devo ancora pensarci su.
Per stasera termino qui.
bye
S.T.