Tipik bir C64 oyununda tam olarak ne bir ekran oluşturur?


10

TEMEL geçmiş C64 oyun geliştirmenin temellerini anlamaya çalışıyorum ve çok temel ama önemli bir şey hakkında bazı tavsiyeler kullanabilirim: Ekrandaki tüm bu şeyler nedir ve nasıl çizilir?

Katakis / Denaris'e bir göz atın :

Katakis ekran görüntüsü

Ekranda en az 9 farklı şey var:

  1. Farklı yazı tipleriyle Skor çubuğu
  2. Geminin kendisi
  3. Gemiye bağlı, çıkarılabilir bir uydu
  4. İkincil Silah Mermileri
  5. Birincil Silah Mermileri
  6. Hareketli nesneler (düşman gemileri olabilir)
  7. Geminin görüntüsünü, can sayısını ve doldurabilecek üç bölümü içeren Durum çubuğu
  8. Birincil silah şarj çubuğu, sonuna kadar doldurabilir
  9. Arka planda kayan bir yıldız alanı
  10. (ekranda numaralandırılmamıştır) Arka planın parçası olan kayalar veya metal duvarlar gibi katı nesneler

C64, yatay tarama çizgisi başına sadece 8 sprite destekler, bu yüzden ekranın ortasındaki her şeyin bir sprite olabileceğini düşünmüyorum? Çarpışma gerektiren her şeyin bir sprite olacağını varsayarım (spritelarla donanım çarpışma algılaması alabildiğimden), ancak o zaman bile 8 sprite sınırına ulaştım. Ayrıca, silahlarım birden fazla mermi fırlatabilir - gemim, uydu ve 6 mermi zaten arka arkaya 8 sprite olurdu (videoya yaklaşık 50 saniyeye bakın).

Ayrıca, böyle bir oyun hangi grafik modunu kullanır? Programlama El Kitabı, ekran belleğini doğrudan değiştiren Bit Harita Modunu listeler. Bu genellikle çalışmam gereken mod mu? Sprite olmayan tüm öğeleri ekrana getirmek için nasıl bir araya getirebilirim?

Skor ve durum çubuğunda bir çok şey statik ("Alan: 01" veya "çerçeve"), bu yüzden sanırım seviye başladığında sadece bir kez dolduracağım. Güncelleme gereken şeyler - skor, alttaki şarj çubukları - ekran belleğini siyahla doldurarak ve ardından her karede yeni skoru çizerek güncellenir mi?

Yoksa tüm ekranı her kareye çizmek zorunda mıyım?

Yanıtlar:


13

C64'te spriteları "çoklayabilir". Çekildikten sonra onları yeni bir yere taşıyın ve yeniden kullanın. Ortadaki nesnelerin çoğu muhtemelen çoğullamalı spritelardır. C64'te, aynı yatay tarama çizgilerini işgal etmedikleri sürece 8'den fazla sprite kullanmak çok kolaydır. Bunun yanı sıra, gerekirse yazı tipi grafiklerini kullanarak yazılım spriteları yapabilirsiniz (bu durumda en az mermiler).

2, 3, 6. Bunlar sprite olma olasılığı yüksek.

4, 5, 9. Bunlar muhtemelen karakter grafikleri (8x8 piksel) yazılım "sprite" olacak

Oyun bitmap modunu kullanmaz, hafızanın çok fazla hareket etmesini gerektirir (bazı VIC çip hileleri yapmazsanız ...). Kullanılan mod karakter grafik modudur.

Ne çizmeniz gerektiğine bağlı. Bu durumda, yeterince yakından bakarsanız, belirli boyutta (x * y piksel) desen yıldızları tekrarlanır, böylece temelde yıldız alanının kaydırılmasını taklit etmek için bu yazı tiplerinin karakter belleğini güncellersiniz.

Başlangıçta doldurduğunuz puan / durum ve ardından gerektiğinde güncelleyin.

Spriteları ve konumlarını her karede güncellemeniz gerekir. Ayrıca mermileri de güncellersiniz. Ayrıca bu x * y piksel yıldız alanı modelini güncellersiniz.


5
Katakis videosuna daha yakından baktım. Bu nesnelerin bazıları aslında yazı tipi grafikleridir. Aslında kullanılan renklere bakarak görebilirsiniz. Ayrıca starfield aslında sadece X * Y piksel değil, biraz farklı yapılmış, yine de yazı tipi grafiklerinde. Donanım kaydırma kayıtları, sadece yazılım hilesi sonrası grafikleri 8 piksel hareket ettirdiğinden, kaydırılan yazı tipi grafiklerini her 8 pikselde bir güncellemeniz gerekir. Ayrıca, donanım hareketli grafik çarpışmaları kullanmak istemezsiniz. Eğer 2'den fazla sprite varsa spriteların çarpıştığı gerçekleri ayırt edemezler. Sadece basit matematik çarpışmalarda kullanışlı olur.
Sadece eski c64 moruk

2

Bir süre önce Alman C64 Dergisi'nde bir makale okudum. Mermiler, birisinin işaret ettiği gibi sprite görevi gören karakterlerdir. Gemi ve düşmanlar sprite.

Seviyeler de karakterlerden oluşuyor, ancak bir bükülme ile. Seviyeler çok büyük ve hafıza değerli olduğundan, Trenz karakterleri modüller halinde gruplamak için kendi araçlarını yazdı.

Böylece daha büyük modüller kullanabilir ve bunları oluşturabilir. Ayrıca modüllerin kesişimini güzel ve temiz hale getirmek için bazı yama modüllerini kullanacaktı.

Sonuçta, bir tür sıkıştırma, burada düzeyler char tarafından char yerine yapı taşları olarak tanımlanır.

Ayrıca Katakis'te bazı seviyelerin paralaks kökenli olduğunu fark edebilirsiniz.

Bu, çoğunlukla 2x2 veya 3x3 karakterlerden oluşan arka planı doldurmak için bir desene sahip olmak ve kaydırma yönüne göre hareket ettirmek (bit kaydırma) ile yapılır. Örneğin, seviye 2 piksel sola kaydırılır, arka plan deseni 1 piksel sağa kaydırılır, bu nedenle daha yavaş bir hızda kaydırılmış gibi görünür.

umarım yardımcı olur

Tek bir modülü daha görebileceğiniz bir şey daha var https://archive.org/details/64er_1989_10/page/n27 Sayfa 24'e kaydırın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.