Apa sebenarnya yang membuat layar dalam game C64 yang khas?

10

Saya mencoba mencari tahu dasar-dasar pengembangan game C64 melewati BASIC, dan saya bisa menggunakan beberapa saran tentang sesuatu yang sangat mendasar, tetapi penting: Sebenarnya apa saja yang ada di layar, dan bagaimana cara menggambarnya?

Lihatlah Katakis / Denaris :

Tangkapan layar Katakis

Setidaknya ada 9 hal berbeda di layar:

  1. Bilah Skor, dengan font yang berbeda
  2. Kapal itu sendiri
  3. Satelit yang terpasang pada kapal, dapat dilepas
  4. Proyektil Senjata Sekunder
  5. Proyeksi Senjata Primer
  6. Benda bergerak (bisa jadi kapal musuh)
  7. Bilah Status, menampilkan gambar kapal, jumlah nyawa dan tiga bagian yang dapat diisi
  8. Bilah muatan senjata utama, dapat mengisi hingga akhir
  9. Gulung bintang di latar belakang
  10. (tidak bernomor di layar) Benda padat seperti batu atau dinding logam yang merupakan bagian dari latar belakang

C64 hanya mendukung 8 sprite per garis pindai horizontal, jadi saya tidak berpikir bahwa semua yang ada di tengah layar bisa berupa sprite? Saya akan berasumsi bahwa apa pun yang membutuhkan tabrakan akan menjadi sprite (karena saya bisa mendapatkan deteksi tabrakan perangkat keras dengan sprite), tetapi bahkan kemudian saya dengan cepat mencapai batas 8 sprite. Juga, senjata saya dapat menembakkan lebih dari satu proyektil - kapal saya, satelit, dan 6 peluru akan menjadi 8 sprite berturut-turut (lihat sekitar 50 detik di video).

Juga, mode grafis apa yang akan digunakan game seperti ini? Buku Pegangan Pemrograman mencantumkan Mode Peta Bit yang pada dasarnya memodifikasi memori layar secara langsung. Apakah ini mode yang biasanya harus saya pakai? Bagaimana saya menyusun semua elemen non-sprite bersama untuk menampilkannya di layar?

Banyak hal di bar skor dan status bersifat statis ("Area: 01" atau "bingkai"), jadi saya kira saya hanya akan mengisinya sekali ketika level dimulai. Hal-hal yang perlu diperbarui - skor, bilah pengisian di bagian bawah - akan diperbarui dengan mengisi memori layar dengan warna hitam dan kemudian menggambar skor baru setiap frame?

Atau apakah saya harus menggambar seluruh layar di setiap bingkai?

Michael Stum
sumber

Jawaban:

13

Pada c64 Anda dapat "multiplex" sprite. Setelah mereka ditarik, Anda memindahkannya ke tempat baru dan menggunakannya kembali. Sebagian besar objek di tengah adalah sprite multipleks. Dalam c64 sangat mudah untuk menggunakan lebih dari 8 sprite selama mereka tidak menempati scanlines horisontal yang sama. Selain itu Anda benar-benar dapat membuat sprite perangkat lunak menggunakan grafik font jika diperlukan (proyektil setidaknya dalam kasus ini).

2, 3, 6. Itu kemungkinan sprite.

4, 5, 9. Itu kemungkinan merupakan perangkat lunak "sprite" grafik karakter (8x8 piksel)

Game tidak akan menggunakan mode bitmap, itu akan membutuhkan terlalu banyak pemindahan memori (kecuali jika Anda melakukan beberapa trik chip VIC ...). Mode yang digunakan adalah mode grafik karakter.

Apa yang Anda butuhkan untuk menggambar akan tergantung. Dalam hal ini, jika Anda melihat cukup dekat, ada ukuran tertentu (x * y pixel) bintang pola yang diulangi sehingga pada dasarnya Anda akan memperbarui memori karakter font-font tersebut untuk meniru pengguliran bintang.

Skor / status yang Anda isi saat mulai, lalu perbarui bila diperlukan.

Anda harus memperbarui sprite dan posisinya masing-masing bingkai. Anda juga akan memperbarui proyektil. Anda juga akan memperbarui pola bintang x piksel x * y.

Kakek tua c64
sumber
5
Terlihat lebih dekat pada video Katakis. Beberapa objek tersebut sebenarnya adalah font grafik. Anda benar-benar dapat melihat dengan melihat warna yang digunakan. Starfield sebenarnya bukan hanya piksel X * Y, tetapi sedikit berbeda dibuat, masih dalam font grafis sekalipun. Anda harus memperbarui grafis font yang digulir setiap 8 piksel karena register gulir perangkat keras hanya memindahkan grafik 8 piksel, setelah tipuan perangkat lunak. Juga, Anda tidak ingin menggunakan tabrakan sprite perangkat keras. Mereka tidak dapat membedakan sprite apa yang sebenarnya bertabrakan jika ada lebih dari 2 sprite yang terlibat. Hanya matematika sederhana yang berguna dalam tabrakan.
Kakek tua c64
2

Saya membaca artikel beberapa waktu lalu di German C64 Magazine. Peluru adalah karakter yang bertindak sebagai sprite sebagaimana seseorang telah tunjukkan. Kapal dan musuh adalah sprite.

Level dibuat dari karakter juga tetapi dengan twist. Karena levelnya sangat besar, dan ingatannya sangat berharga, Trenz menulis seperangkat alatnya sendiri untuk mengelompokkan karakter ke dalam modul.

Jadi dia bisa menggunakan modul yang lebih besar dan menyusunnya. Dia juga akan menggunakan modul-patch tertentu untuk mendapatkan persimpangan modul yang bagus dan bersih.

Semua dalam semua jenis kompresi, di mana tingkat digambarkan blok bangunan bukan char oleh char.

Anda juga mungkin memperhatikan bahwa di Katakis beberapa level memiliki latar belakang paralaks.

Itu dibuat dengan memiliki pola untuk mengisi latar belakang, sebagian besar terbuat dari karakter 2x2 atau 3x3, dan menjiwainya (menggeser-geser) terhadap arah pengguliran. Misalnya tingkat menggulir 2 piksel ke kiri, pola latar belakang digulir 1 piksel ke kanan, maka tampaknya gulir pada kecepatan yang lebih lambat.

Semoga itu bisa membantu

Satu hal lagi yang dapat Anda lihat adalah modul tunggal dan semacamnya di sini https://archive.org/details/64er_1989_10/page/n27 gulir ke halaman 24

Kastor
sumber