SORU
17 Kasım 2009, Salı


Commodore 64 ekran üzerinde sınır çizmek

Tamam. 25 yıldan beri bu merakım yüzünden kapalı olmaz umarım ve hile anlamak isterdim.

Commodore 64 sınır 6569 KURBAN ile ulaşılamaz değildi. Yapabildiğin tek şey piksel çizmek için merkez alanda, imleci taşındı. Sınır eğer yanlış hatırlamıyorsam poke 53280,color ile rengini değiştirebilirsin, ancak her zaman üniforma vardı.

Yine de ben açıkça sınır tamamen adreslenebilir gibi grafik özellikli, oyun intro nerede olduğunu unutmayın. İşe yaradı ama asla bu noktaya nasıl geldiğini anlamaya çalıştım. efsaneler, bazı şartlar altında, sınır çizilmiş olabilir Sprite, zekice bir oyundu ki, ama eğer bir şehir efsanesi var bilmiyorum.

editsadece sağlanan bağlantılardan birini bu okuyun

Sprite çoklu vurdular dikey tarama çizgileri (8 Sprite, bazen 120 Sprite için). Kadar Grup Crest Krestage 3'te yayımlanan Mayıs 2007 ortak oldu algı 8'den fazla Sprite bir raster satırında, ama görünebilir atama yeni Y yaptı koordinatları daha fazla ekran yeniden görünür.

Bu şer.... raster yendi ve orada alır önce sprite... yeniden konumlandırmak

CEVAP
19 Kasım 2009, PERŞEMBE


Öncelikle sadece Sprite sınır bölgesinde veya video Bankası'nın son bayt, $3fff genellikle okuma 8 bit yinelenen bir desen (8 piksel geniş) görüntülenebilir. Sadece VİC çipi içine "not görüntüleme" sınırları. hile ne zaman Sprite veya 8 bit desen bu gördüğünüz not Aşağıya bakın.

Sınırları Sprite daha yüksek bir önceliğe sahiptir, normal bir sprite sınır bölgesinde çizildiğinde sınırın sprite kapsar. VİC chip hile ile biraz sınırları kapatabilirsiniz.

Üst ve alt sınırları oldukça kolay kapatabilirsiniz (aşağıda açıklayacağım) ve yanlardan çok kritik bir zamanlama ile sınırlar.

Öncelikle VİC çipi nasıl çalıştığı hakkında bilgi küçük bir bit c64 üzerinde.

VİC çipi üst sağ, sonra tüm ekranı çizilir kadar tekrar sağa sola bir satır aşağı, sol üst ekran çizer. Bu (NTSC birim) için 50 kez ikinci (PAL birimler için) veya saniyede 60 kere yeniden gerçekleştirir.

8-bit VİC herhangi bir zamanda tarama dikey konumunu içeren bir kayıt var. $d012. Aslında 9 bit 7 bit (Yüksek bit) saklanır ya $d011 kayıt çok fazla 255 Olası pozisyonları vardır. Herhangi bir noktada bu kayıtları okumak ve raster dikey konumunu öğrenebilirsiniz. Raster x pozisyonunu okuyabilmek için kayıt yok.

VİC çipi diğer bir özelliktir donanım kaydırma kullanarak bir sorunu çözmek için kullanıldı. Temel dikey kaydırma ekran 0-7 pikseller dikey olarak taşımak için bir donanım kayıt kullanılarak elde edildi. Bir kez ulaştı sınırı (0 veya 7 bağlı olarak yöne kaydırma) olur hareket her karakter bloğu (8x8 piksel) bir blok dikey ve beraberlik yeni veri görüntülenecek en üst (veya alt göre yönü). Bu çok iyi, kayan her 8 piksel veri "" ekrana. pop görecekti çalışır Bu sorunu çözmek için, sınır bölgesinde dikey olarak kayıt bit 3 temizleyerek 8 piksel büyür $d011 yapabilirsin. Bu 24 satır modu denir. Varsayılan olarak ekran 8x8 piksel karakter 25 sıra olacak şekilde ayarlandı. 24 satır modunda, hala alt satıra karakter çizebilirsin, sadece sınır tarafından gizli olacak.

Üst ve alt sınırları kapatmak için hile için:

1) 25 satır modu için ekranı Ayarlayın

2) raster $f2 ve $fa (sınır 24 25 satır modu ve satır modu hem de başladığı arasındaki 8 piksel) arasındaki dikey konuma gelmesini bekleyin.

3) 24 satır modu için ekrana... geçerli raster pozisyonu yukarıdaki sınır dikey hareket başlatmak Ayarlayın

4) sonra dikey raster pozisyonu ($) fa kadar Bekleyin

5) her kare Tekrarlayın

Adım 3) hileler zaten sınır çizim başladı bu düşünce içine VİC çip, hiç çizim başlar. Voila, üst ve alt sınırları açın.

Yan sınırına ilişkin farklı kayıtları ile aynı şeyi yapabilirsiniz, ancak raster yatay hareketi çok daha hızlı olduğu gibi daha sonra dikey hareketin zamanlaması çok sıkı olması gerekiyor. Ve hesap adı değişimi içine almak için başka bir sorun var. <-burada açıklamayacağım. Arama web "Tarama" bu konunun açıklaması derinlemesine. bir C64 için Kararlı için

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • fireflame65

    fireflame65

    27 Mart 2007
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007