Sto cercando di capire le basi dello sviluppo del gioco C64 rispetto a BASIC, e potrei usare alcuni consigli su qualcosa di molto semplice, ma importante: che cosa è davvero tutta quella roba sullo schermo e come disegnarla?
Dai un'occhiata a Katakis / Denaris :
Ci sono almeno 9 cose diverse sullo schermo:
- La barra del punteggio, con caratteri diversi
- La nave stessa
- Un satellite attaccato alla nave, staccabile
- Proiettili di armi secondarie
- Proiettili di armi primarie
- Oggetti in movimento (possono essere navi nemiche)
- La barra di stato, con un'immagine della nave, il numero di vite e tre sezioni che possono essere riempite
- La barra di carica dell'arma principale può riempire fino alla fine
- Uno starfield a scorrimento sullo sfondo
- (non numerato sullo schermo) Oggetti solidi come rocce o pareti metalliche che fanno parte dello sfondo
Il C64 supporta solo 8 sprite per linea di scansione orizzontale, quindi non penso che tutto al centro dello schermo possa essere uno sprite? Suppongo che tutto ciò che richiede una collisione sarebbe uno sprite (dal momento che posso ottenere il rilevamento della collisione hardware con gli sprite), ma anche allora raggiungo rapidamente il limite di 8 sprite. Inoltre, le mie armi possono sparare molto più di un proiettile: la mia nave, il satellite e 6 proiettili sarebbero già 8 sprite di fila (guarda circa 50 secondi nel video).
Inoltre, quale modalità grafica dovrebbe usare un gioco come questo? Il Manuale di programmazione elenca la modalità Mappa bit che essenzialmente modifica direttamente la memoria dello schermo. È questa la modalità in cui dovrei normalmente lavorare? Come potrei comporre tutti gli elementi non sprite per visualizzarli sullo schermo?
Molta roba nella partitura e nella barra di stato è statica ("Area: 01" o "frame"), quindi immagino che li avrò popolati solo una volta all'inizio del livello. Le cose che necessitano di aggiornamento - il punteggio, le barre di carica in basso - verrebbero aggiornate riempiendo la memoria dello schermo di nero e disegnando il nuovo punteggio ogni fotogramma?
O devo disegnare l'intero schermo su ogni fotogramma?