Cosa costituisce esattamente uno schermo in un tipico gioco C64?


10

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 :

Schermata di Katakis

Ci sono almeno 9 cose diverse sullo schermo:

  1. La barra del punteggio, con caratteri diversi
  2. La nave stessa
  3. Un satellite attaccato alla nave, staccabile
  4. Proiettili di armi secondarie
  5. Proiettili di armi primarie
  6. Oggetti in movimento (possono essere navi nemiche)
  7. La barra di stato, con un'immagine della nave, il numero di vite e tre sezioni che possono essere riempite
  8. La barra di carica dell'arma principale può riempire fino alla fine
  9. Uno starfield a scorrimento sullo sfondo
  10. (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?

Risposte:


13

Su c64 puoi sprite "multiplex". Dopo che sono stati disegnati, li sposti in un nuovo posto e li riutilizzi. La maggior parte degli oggetti nel mezzo sono probabilmente sprite multiplexate. In c64 è molto facile usare più di 8 sprite purché non occupino le stesse linee di scansione orizzontali. Oltre a ciò puoi effettivamente realizzare sprite di software usando la grafica dei font se necessario (proiettili almeno in questo caso).

2, 3, 6. È probabile che siano sprite.

4, 5, 9. È probabile che siano "sprite" di software per la grafica dei caratteri (8x8 pixel)

Il gioco non userebbe la modalità bitmap, richiederebbe un eccessivo spostamento di una memoria (a meno che non si facciano alcuni trucchi con i chip VIC ...). La modalità utilizzata sarebbe la modalità grafica del personaggio.

Ciò che devi disegnare dipenderà. In questo caso, se guardi abbastanza da vicino, c'è una certa dimensione (x * y pixel) che le stelle del motivo vengono ripetute, quindi sostanzialmente aggiorni la memoria dei caratteri di quei caratteri per emulare lo scorrimento del campo stellare.

Punteggio / stato che popoli all'avvio, quindi aggiornali quando necessario.

Dovresti aggiornare gli sprite e la loro posizione ogni frame. Aggiorneresti anche i proiettili. Inoltre aggiorneresti quel modello di campo stellare x * y pixel.


5
Ho guardato più da vicino sul video di Katakis. Alcuni di questi oggetti sono in realtà grafici di caratteri. Puoi effettivamente vedere guardando i colori usati. Inoltre, starfield non è in realtà solo pixel X * Y, ma leggermente diverso, ma è ancora nella grafica dei caratteri. Dovresti aggiornare la grafica dei caratteri a scorrimento ogni 8 pixel perché i registri di scorrimento hardware spostano solo la grafica di 8 pixel, dopo il trucco del software. Inoltre, non si desidera utilizzare le collisioni di sprite hardware. Non possono differenziare ciò che gli sprite effettivamente si scontrano se sono coinvolti più di 2 sprite. Solo semplici matematiche sono utili nelle collisioni.
Solo il vecchio geezer c64

2

Ho letto un articolo qualche tempo fa sulla rivista tedesca C64. I proiettili sono personaggi che agiscono come sprite come qualcuno ha già sottolineato. Nave e nemici sono folletti.

I livelli sono fatti di personaggi anche ma con una svolta. Poiché i livelli sono così enormi e la memoria è preziosa, Trenz ha scritto il suo set di strumenti per raggruppare i personaggi in moduli.

Quindi può usare moduli più grandi e comporli. Inoltre userebbe alcuni moduli patch per rendere piacevole e pulita l'intersezione dei moduli.

Tutto sommato è una specie di compressione, in cui i livelli sono descritti da blocchi anziché da char da char.

Inoltre potresti notare che in Katakis alcuni livelli hanno sfondi di parallasse.

Ciò si ottiene avendo un motivo per riempire lo sfondo, composto principalmente da caratteri 2x2 o 3x3, e animandolo (spostamento dei bit) nella direzione dello scorrimento. Ad esempio, il livello scorre di 2 pixel a sinistra, il motivo di sfondo viene fatto scorrere di 1 pixel a destra, quindi sembra scorrere più lentamente.

spero che aiuti

Un'altra cosa che puoi effettivamente vedere i singoli moduli e simili qui https://archive.org/details/64er_1989_10/page/n27 scorrere fino a pagina 24

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.