Sevgili Ref,
Spreadsheet'inizi inceledim.
- Amstrad satırındaki bilgiler doğrudur. (Tek eksik, interlace çözünürlüğünün belirtilmemiş olması.)
- Bulduğunuz CPCWiki linki, eksikleri olmasına karşın, bu konu hakkındaki birçok soruyu yanıtlayacak niteliktedir.
İzninizle, konuya farklı bir açıdan yaklaşıp CPCWiki'de
kaleme alınmamış birkaç hususu paylaşayım. Belki ileride sizin ya da bir başka Z80 programcısının işine yarayabilir.
Kısaca özetlersek;Her ne kadar Amstrad CPC ailesi ile ilgili birçok online kaynakta en yüksek çözünürlük olarak
832x288 pixel kullanılabileceği belirtilse de, aslında birkaç küçük CRTC trick yardımıyla
832x292 pixel çözünürlük ekrana basılabilir.
Ancak,
- Her iki çözünürlüğün de 'standart dışı' olması,
- Amstrad MP1/MP2 modülatör çıktısının standart PAL TV ile görüntülenmesinde yaşanan senkronizasyon sorunları,
- Amstrad monitör modelleri arasındaki teknik uyumsuzluklar,
- Amstrad CRTC versiyonları arasındaki zamanlama/overscan uyumsuzlukları,
- CPU'nun tamamen bu işe odaklanarak başka bir iş yapamaması,
sebepleriyle,
pratikte en fazla
768x288 pixel çözünürlük tercih edilir. Eğer
interlace kullanılırsa, tarama satır (scanline) sayısı ikiye katlanarak
768x576 pixel ekrana basılır.
Detaya girersek;Düşeyde iki VSync arasında toplam 312 adet tarama satırı mevcuttur. VCC=R7, VCC=R6 ve VSync için gereken süre yüzünden, 24 tarama satırı kullanılmaz. Toplam tarama satırı 288 ile sınırlı tutulur. (Bazı CRTC trickleri sayesinde bu sayıyı 4 arttırarak 292'ye çekmek mümkün, ancak CPC ailesi için tek tip CRTC olmamasından kaynaklanan uyumsuzluklar yüzünden en fazla 288 tercih edilir.)
Yatayda ise durum biraz daha farklı. Ekran Mode'larından bağımsız olarak, her tarama satırında 64 adet NOP komutu çalıştırılacak kadar süre (64x4 T-state) bulunur. Bu sabit süre içerisinde her Mode'da farklı sayıda pixel ekrana basılır. Örneğin Mode 2'de 4 T-state'lik süre içerisinde, önceden ekran hafızasına yazılmış olması kaydıyla, 2 renkten oluşan toplam 16 pixel ekrana taşınır. Bu işlemin 64 kez tekrarlandığını düşünürsek, Amstrad'ın Mode 2'de her tarama satırı için aslında 1024 pixel taşıyabilme potansiyeli olduğunu kolayca görürüz. Ancak, HSync ve benzeri senkronizasyon işlemleri için gereken süreler aradan çıkarılınca, geriye en fazla 832 pixel kalır.
Border kapatılarak overscan mode'una geçilmesi durumunda, Mode 2'de standart ekran hafızası kullanılarak bir tarama satırında 768 pixel ekrana kolayca basılabilir. 768 pixel'den fazla (örneğin 832 pixel) satır genişliği durumunda ise, max. ekran hafızası 32K olabileceği için, ya pixel basmadan sadece raster boyama yoluna gidilir ya da ekran hafıza adresi her tarama satırında yeniden tanımlanır. Bu durumda CPU'nun neredeyse tamamı rasterline işlemlerine ayırıldığı için bu yöntem pek tercih edilmez, sadece 768 pixel ile sınırlı tutulur.
*NOT: Yukarıdaki bilgiler sadece gerçek Amstrad donanımları için geçerlidir. Emülatörlerin durumu bambaşka. Günümüz standartları çerçevesinde bulabileceğimiz en kaliteli Amstrad emülatörü olan WinApe, alttan/üstten toplam 18 tarama satırını kırparak en fazla sadece 768x270 pixel çözünürlüğü destekler! (Bu yüzden yazılan kodların gerçek bir donanım üzerinde test edilmesini şiddetle tavsiye ederim.)