SDCC kullanarak Amstrad CPC için yapılmıştır CPC ile Pixel Boyama SDCC kullanarak Amstrad CPC için yapılmıştır
Amstrad CPC Neye Sahip? Amstrad CPC 3 video moda sahip Mode 0 – 160x200 piksel – 16 renk Mode 1 – 320x200 piksel – 4 renk Mode 2 – 640x200 piksel – 2 renk Video Memory adresleri C000’dan FFF’ye kadardır boyutu 16,833 bytetır. Video moda göre her byte 2,4 veya 8 piksel gösterebilir ekranda. Video memory’nin ilk byte’ı ekranın yukarı sol köşesinden başlar. Sonra byte sağ alt değildir. Amstrad CPC dizaynı dev bir sürpriz yapmıştır. Yapı daha karmaşık ve eğlencelidir grafik programcılar için.
Uygulama Yaparak Görelim Mutlaka tüm uygulamalarımızda crt0_cpc.rel dosyasını ekleyin!
Şimdi derleyelim ve dsk yapalım! sdcc -mz80 --code-loc 0x6038 --data-loc 0 --no-std-crt0 crt0_cpc.rel pixel01.c hex2bin pixel01.ihx CPCDiskXP -File pixel01.bin -AddAmsdosHeader 6000 -AddToNewDsk pixel01.dsk
Gördüğümüz nedir? Birçok oyunun ekran görüntüsünü (özellikle bant) hatırlarsak, bu satır dizisi bize çok tanıdık geliyor. Gördüğümüz gibi, satırlar soldan sağa 'doğrusal' olarak doldurulur, ancak çizginin sonunda, bir sonraki alt sıçramalara gitmek yerine parça parça doldurulur.
Kaç byte ve mod bilgisi Üç video modunun yüksekliği 200 satırdır, böylece bu adresler her üç mod için de sabitlenir. Bu 200 satırın her biri, moda bağlı olarak genişliği 160, 320 veya 640 pikselleri temsil eden 80 bayttır. Daha önce de söylediğimiz gibi, her bayt, moda bağlı olarak ekranın 2, 4 ya da 8 pikselini temsil eder, fakat daha da karmaşıklaştırmak için, her bir pikselin bitleri aşağıdaki gibi bayt olarak düzenlenir:
Video Bellek Yapısı CPC kullanıcı kılavuzundan
Address = 0xC000 + ((Line / 8) * 80) + ((Line % 8) * 2048) Pratik örnekler: Mod 2'de, x = 81, y = 7 pikselini 1 olarak ayarlayın: İlk olarak tablo satırına 7 bakın (0'dan başlayarak başlayın) ve adres F800, mod 2'de olduğu gibi her bayt 8 pikseldir. 81 piksel yatay konumdayken, 81/8 = 10 yönünü arttırıyoruz ve 1 dinlenmeye sahibiz, 10 yönüne ekledik ve bize F80A verdiler, şimdi bu yönde 1 bit 6'ya ayarladığımız 1 pikselini yazmak için . Mod 1'de, x = 50, y = 22 pikselini 3 olarak ayarlayın: Tablodaki 22 satırının yönü F0A0, piksele 50 geçmek için 50/4 = 12 adresine eklenir ve 2'den fazla bırakılır. toplam F0AC verir ve rengi 3 yönün 2 pikseline koyun, biz 1 ve 5 bit 1 ayarlamalıyız. Adres tablosuna bakarsanız, aralarında 8 satırdan oluşan grupta bir ilişki olduğunu görürsünüz, aralarında 2048 baytlık aralıklar ve aşağıdaki 8'lik grup için 80 bayt bulunur. Bu ilişki aracılığıyla aşağıdaki kuralla herhangi bir hattın adresini kolayca elde edebiliriz:
Örnekler!!! DEMOLAR!!!!!!!!!!!!!!
Kaynaklar: http://www.cpcmania.com/