‘Yazılım & Donanım’ Kategorisi Arşivi

6502 Yeniden Üretimde (W65C02S6PG-14)

Açıkçası benim açımdan inanılmaz heyecan verici bir durum yok. Çünkü ne yazık ki bu yeni üretilen çip 6510’un, yani Commodore 64’ün içindeki çipin yerini alabilecek birşey değil. Ancak yine de 6502 uyumlu ve 6502’nin 1 MHZ’lik hızının yanısıra 14 MHZ hızında üretilmiş olması çok güzel bir gelişme.

6502 uyumlu W65C02S6PG-14

6502 uyumlu W65C02S6PG-14

WDC (Western Design Center) firması tarafından 40 pin olarak üretilen çip £4.90 fiyatından satışa sunulacakmış. Ayrıca firma FPGA’ler için 65C02 isimli bir de sanal versiyon yayınlayacağını duyurmuş. Yani modern donanımlarda 14 MHZ’lik 6502 kullanarak ilginç retro projelere imza atılabilir ve elimizdeki 30+ senelik 6502 tabanlı kod birikimiyle hızlıca bu yeni cihazlar için çeşitli yazılımlar, demolar, oyunlar geliştirebiliriz.

“Commodore 64” 30 Yaşında!

Benden az daha genç olan Commodore 64 ilk kez Commodore International firması bünyesinde yer alan Commodore Business Machines ya da yaygın kullanılan kısaltmasıyla CBM tarafından 1982 yılının Ocak ayında tanıtılmıştı. Aynı yılın bahar aylarında üretime giren ünlü cihaz, Ağustos ayında 595 dolarlık fiyatıyla elektronik/bilgisayar marketlerin raflarında yerini almıştı.

 

Commodore Logosu

Commodore 64, sık sık C64 ya da Commodore’un sol tarafta gördüğünüz ünlü logosu yüzünden C=64 şeklinde kısaltmalarla kullanılmıştır.

 

 

 

Commodore 64’ün donanımsal özellikleri şu şekilde özetlenebilir.

İşlemci Çipi: MOS Teknoloji 6510 – ~1 Mhz (PAL: 0.985 Mhz, NTSC: 1.023 Mhz)
Bellek: 64 KB RAM + 20 KB ROM
Görüntü Çipi: VIC-II (320×200 tek renk ya da 160×200 16 renk grafik modu ve 8 donanımsal yaratık desteği)
Ses Çipi: SID (8 bit 3 kanal, eski modellerde 6581, yeni modellerde 8580 kullanılmıştır)
Bağlantı Noktaları: Güç ünitesi, 2 x joystick (ya da mouse/paddle v.b.), kartuş, anten bağlantısı (RF), eski component A/V çıkışı (luma, chroma, mono audio), disk drive, teyp ve RS-232

Commodore 64 Modelleri:

Aslında detaya girildiğinde daha fazla model olduğu görülse de özellikle dış görünüş ve SID çipleri birbirinden farklı olan 2 ana model aşağıdaki gibi kategorilendirilebilir.

Eski kasa (ilk üretim):

Commodore 64 (Eski Kasa)

Yeni kasa:

Commodore 64 (Yeni Kasa)

30 Yılda Neler Değişti?

 

Bu konuda uzun uzun çok şey yazılabilir ancak şu şekilde açıklanabilir sanırım.

Yie Ar Kung-Fu (Orjinal 1985)

Yie Ar Kung-Fu (By Veto 2010)

Bu grafiklerdeki ilerlemeye basit bir örnek. Üretildiği tarihlerde kesinlikle mümkün olmayan ve yaklaşık olarak 90’ların başından günümüze kadar kademe kademe gelişen yeni grafik modlarının kalitede en son ulaştığı seviye diyebileceğim NUFLI modundan başka örnekler verecek olursak;

NUFLI 1

NUFLI 2

İşte 80’lerdeki o basit görünüşlü oyun ve demolardan görsel kalite açısından gelinen nokta budur.

Geçen 30 Yıl İçersinde Donanımın Sınırlarındaki Değişim

 

Değişim elbette ki sadece grafik tarafında olmadı. Aslında ilk üretilen Commodore 64’den hiçbir farkı olmayan cihazların donanım sınırları zamanla genişledi. Yani eskiden donanımın yapabileceği öngörülmeyen şeyler, günümüzde oldukça sıradan bir biçimde yapılabiliyor. Örneğin Commodore 64’de 320×200 çözünürlükteki iç ekranın dışında kalan çerçeve (border), daha 80’li yıllarda açılarak bu alana yaratıklardan (sprite) oluşan grafikler basılmaya başlandı. Önce alt/üst, sonrasında da iki yandaki çerçeveler bazı donanım aldatmacalarıyla açılabildi. İlginçtir ki bu o dönemde birbirinden tamamen bağımsız olarak üretilmiş birçok bilgisayarda benzer yöntemlerle yapılabiliyordu.

Yıllar ilerledikçe başlangıçta kullanılması tavsiye edilmeyen illegal opcodelar yani kullanımı onaylanmayan ve dökümante edilmemiş işlemci komutları (Commodore 64’ün Programcı’nın El Kitabı’nda bu özellikle belirtilmiştir), yıllar ilerledikçe hemen her Commodore 64 programcısının başı sıkıştığında baş vurduğu yöntemler haline geldi.

Commodore 64 her ne kadar donanımsal grafik kaydırma özelliğini desteklemese de, yine VIC-II çipini kandırmak suretiyle çok az işlemci gücü harcayarak grafikleri ekranda dilediğimiz gibi kaydırmak mümkün oldu. Bu da özellikle 80 sonu, 90 başlarında çok kaliteli ve çok renkli grafikleri olan platform oyunları, shoot’em up’lar olarak bize geri döndü.

Elbette ki Commodore 64’ün limitlerini zorlama konusunda en çok çaba sarfeden ve sonuç alanlar Commodore 64 scenerları oldu. Demoscene dünyasındaki rekabet her geçen gün birbirinden üstün demoların yayınlanmasına ve “Commodore 64’de yapılması olanaksız” denen birçok efektin yapılabilmesine neden oldu.

Örnek Demolar:

[youtube_sc url=”yFdjWSaDlIo” title=”Edge%20Of%20Disgrace%20-%20Part%201″ width=”384″]

[youtube_sc url=”0b4uGv-9xpw” title=”Edge%20Of%20Disgrace%20-%20Part%202″ width=”384″]

[youtube_sc url=”Z8trliwndrU” title=”Snapshot%20-%20Part%201″ width=”384″]

[youtube_sc url=”PEmf4FBakBE” title=”Snapshot%20-%20Part%202″ width=”384″]

Commodore 64 hakkında daha yazılacak çok şey var ancak bu seferlik

30. yaş günün kutlu olsun eski dostum ve çocukluk arkadaşım

demekle yetineceğim. Belki ilerleyen süreçte Commodore 64 üzerine daha detaylı blog yazıları da yayınlayabilirim, kim bilir.

Ekran Kartlarının Geleceği – Eski Teknik, Yeni Nesil

2000 yılından bu yana ekran kartlarının gelişimi denildiği anda akla hep shader teknolojisinin bir adım daha ileri gidişi, bellek ve GPU işlem kapasitesinin artması geliyor. Peki nereye kadar böyle devam edecek? Aslında hemen hemen bu dönemin sonuna geldik sayılır. Birkaç senedir NVidia, ATI gibi büyük ekran kartı üreticileri eski bir dost olan Ray Tracing ile flört etmeye başladı.

Eski (şu an için kullanılan) metoda biraz göz atalım.

Rasterization

Üçgenlerden Oluşan Bir Arazi

Üçgenlerden Oluşan Bir Arazi

Eski metod, Rasterization şeklinde isimlendirilmiştir. Herşey iki boyutlu çokgenler üzerinden oluşturulmaktadır. Genellikle üçgen ya da dörtgen kullanılarak ekrandaki objeler oluşturulur.

Bir üçgen nasıl çizilir? Elimizde bir kağıt varsa ve insan kadar gelişmiş bir canlıysak bu o kadar da zor bir iş değildir. Ancak bilgisayarları ele aldığımız durumda ekranda bir matris şeklinde dizilmiş pixeller karşımıza çıkıyor ve işimiz biraz zorlaşıyor. Düşünün ki kareli metod defterindeki karelerin içini karalayarak bir üçgen çizmemiz gerekiyor. Üçgeni öncelikle elimizle karelerden bağımsız olarak aşağıdaki gibi çizebiliriz.
 
Üçgen Çizimi 1

Üçgen Çizimi 1

Buradaki siyah kareler bilgisayar ekranındaki pikselleri temsil etmektedir. Üçgeni satır satır çizeceğimizi varsayalım. Öncelikle bulmamız gereken her satırda hangi karelerin ilk ve son kareler olarak seçilmesi gerektiğidir. Bu kareleri aşağıdaki resimde mavi ile işaretledik.

Üçgen Çizimi 2

Üçgen Çizimi 2

Artık tek yapılması gereken her satırdaki mavi kareler arasında kalan bölgeyi yatayda doldurmak. Bunun sonucunda ise aşağıdaki görüntü elde edilir.

Üçgen Çizimi 3

Üçgen Çizimi 3

Özetle Rasterization dediğimiz metot kullanıldığında çizim ekrandaki her bir çokgen için satır satır yapılır.

Üçgenler ya da dörtgenler karmaşık bir objeyi modellemekte yeterli olur mu? Örneğin bir insan modeli nasıl görünecektir?

Bruce Lee - Wireframe

Bruce Lee - Wireframe

Görüldüğü gibi Bruce Lee’yi tanımakta hiç zorlanmıyoruz. Ancak bu modeldeki çokgen sayısı epey bir yüksektir ve oyunlardaki gibi gerçek zamanlı olarak kullanılmak için ideal bir model değildir. Eğer yumuşak hatlara sahip bir model istiyorsak ya yüksek adette çokgen kullanacağız ya da ekran kartlarının shader özelliklerini kullanarak bazı çözümler üreteceğiz.

Şimdi gelelim diğer metoda.

Ray Tracing

Ray Tracing, gerçek yaşama uygun görüş simülasyonu için çok daha iyi bir tekniktir. İnsan gözü etrafındakileri nasıl görür, hemen hemen bunu bire bir simüle etmektedir.

Gerçek hayatta gözümüz ışık kaynağından gelen ve diğer objelerin yansıttığı ışığı toplar. Ancak bir bilgisayar ekranı söz konusu olduğunda ekrandaki tüm piksellerin ışık toplayabilmesi için ışık kaynağından oldukça yüksek sayıda (güneş mesafesindeki bir ışık kaynağı göz önüne alındığında sonsuza gidebilecek miktarda) ışın atmak gerekmektedir. Bu nedenle bilgisayarda Ray Tracing gerçek hayata göre ters bir mantıkla uygulanır. Işık kaynağından izlemciye değil izlemciden ışık kaynağına doğru ışınlar atılır. Yani ekranda kaç adet piksel var ise o sayıda ışın atılacaktır.

Ray Tracing Java Simülatör (2 Boyutlu)

Bu linkteki simülatör Ray Tracing’in çalışma presibini anlamanıza yardımcı olacaktır.

Ray Tracing sonucunda nasıl bir görüntü oluşur? Bunun Rasterization’a göre avantajı nedir? Oluşan görüntü şu şekildedir.

Bir Ray Tracing Örneği

Bir Ray Tracing Örneği

Bu örnekte de görüldüğü gibi Ray Tracing oldukça gerçekçi ve yumuşak hatlara sahip objeler ortaya çıkmasını sağlar. En önemli özelliklerinden biri de yansıma ve gölge gibi Rasterization tekniğinde oldukça yüksek maliyetli hesaplamalar gerektiren ve bu derece gerçekçi olamayan efektleri oldukça kolay ve gerçekçi bir biçimde hesaplayabilmesidir.

Peki Ray Tracing ile ne derece gerçekçi görüntüler elde edilebilir? Buna bir örnek görelim.

Tay Tracing - Cam Yüzeyler

Ray Tracing - Cam Yüzeyler

Ray Tracing’in en başarılı olduğu konulardan biri materyallerdir. Resimde de görüldüğü gibi cam yüzeylerin sahip olduğu saydamlık, ışık kırılması, gölge-yarı gölge v.b. özellikler gerçeğe çok yakın olarak simüle edilebilmektedir.

"Rasterization" - "Ray Tracing" Kıyaslama

"Rasterization" - "Ray Tracing" Kıyaslama

Rasterization ile Ray Tracing’i kıyaslayacak olursak soldaki gibi bir sonuç ile karşı karşıya geliriz. Görüldüğü üzere her iki resimde de aynı objeler, aynı kamera açısı, aynı desenler kullanılmıştır. Ancak Ray Tracing tekniğinde çaydanlık ve kaşık metalik özellikleri nedeniyle sadece ışığı değil çevredeki diğer objeleri de yansıtmaktadırlar. Bunun haricinde de genel olarak Ray Tracing metodunda objeler daha yumuşak hatlara sahiptir ve çevreyle daha uyumlu olarak resmin içinde yer almaktadırlar.

Ray Tracing günümüzde gerçek zamanlı olarak pek kullanılmamaktadır. Örnekleri mevcutsa da bu güne kadarki denemelerde yüksek çözünürlüklerde ve detaylı bir biçimde kullanıldığında en fazla saniyede birkaç kare çizdirilebilmektedir. Diğer bir deyişle oldukça düşük FPS’ler elde edilmektedir. Ancak intel, nvidia, amd gibi firmalar yakın gelecekte bunu değiştirecek donanımları hazırlamaya başladılar bile.

Quake Wars Ray Tracing 1

Quake Wars - Ray Tracing 1

Quake Wars oyununun Intel tarafından Ray Tracing kullanan bir versiyonu hazırlanmıştır. Oyunun görüntü kalitesi ve efektleri ciddi bir oranda yükselmiştir.

Quake Wars Ray Tracing 1

Quake Wars - Ray Tracing 2

Rasterization ve Ray Tracing’in Kıyaslaması, Avantaj ve Dezavantajları

Rasterization’ın en büyük özelliği bir çokgenin çizilme zamanının oldukça kısa olmasıdır. Örneğin ekranı kaplayan büyüklükte bir üçgen söz konusu olduğunda Rasterization hızlı bir biçimde bu üçgeni çizebilir. Ancak Ray Tracing kullanıldığı taktirde bu üçgenin yer aldığı bölgedeki tüm pikseller için birer (veya birden fazla) ışın atılması gerekmektedir ki bu çok daha yavaş bir işlemdir. Ancak ekrandaki çokgen sayısı arttıkça Rasterization’ın dezavantajları ortaya çıkmaya başlar. Bazı durumlarda üçgenlerin bir kısmı tamamen ya da kısmen fuzuli olarak çizdirilebilir. Bunun nedeni arkada kalan, önüne başka çokgenler çizdirilen yüzeylerdir. Ancak Ray Tracing’de her zaman ekrandaki piksel sayısı kadar ışın atılacaktır. Bu ışınlar her doğrultuda (şeffaflık durumu haricinde) en yakın yüzeye çarpacak ve arkasındaki yüzeylerle ilgili bir işleme tabi tutulmayacaklardır. Yine de her durumda o doğrultudaki en yakın çarpışma yapan yüzeyi bulmak için farklı algoritmalar kullanmak gerekmektedir.

Rasterization’ın Ray Tracing’e göre günümüzdeki en göze çarpan avantajı donanımların bu teknik için gerekli fonksiyonları donanımsal olarak desteklemeleridir. Vertex Shader, Pixel (Fragment) Shader, Geometry Shader gibi özellikler CPU’yu rahatlatarak gerekli işlemlerin GPU üzerinde yapılmasını sağlamakta ve tamamen bu hesaplara özel optimize edilmiş ekran kartları çok yüksek hızlara ulaşılmasına olanak tanımaktadır. Gelecekte Ray Tracing’in ekran kartları tarafından desteklenmeye başlaması ile Rasterization’ın bu avantajı silinecek ve çok daha gerçekçi üç boyutlu sahneler elde etmemizi sağlayan Ray Tracing, oyunlar ve uygulamalar tarafından yeni standart olarak benimsenecektir.

İşin en komik yanı ise Ray Tracing’in yeni değil, oldukça eski bir teknoloji olması ve gerçek zamanlı olarak bile birçok kullanım örneğinin bulunmasıdır. Sanırım donanım üreticileri Rasterization ile pazardan elde edebilecekleri kârın son damlasına kadar suyunu sıkmadan köklü bir değişikliğe gitmek istemediler. Ancak artık zamanıdır, yakında hep beraber Ray Tracing tekniğinin önümüze sunacağı inanılmaz gerçekçi dünyaların büyüsü ile sanal ortamlarda yolculuk ediyor olacağız.