- Yazar, UP5K FPGA kullanarak "Another World" oyununu donanım üzerinde yeniden oluşturdu.
- Oyun, grafikleri üretmek için blitter ve rasterizer'ı çağıran bir sanal makine (VM) üzerinde çalışıyor.
- Yazar, FPGA üzerinde VM, blitter ve rasterizer'ın donanımsal gerçekleştirimini oluşturdu.
- Tasarım, FPGA'nın kaynak gereksinimleri içine sığıyor ve 128KB SPRAM bellek kullanıyor.
- Yazar işe, veri akışının oyun verileri ve kodu boyunca nasıl ilerlediğini anlayarak başladı.
- Tasarım, her şeyi birbirine bağlayan ve ekran yenilemeyi ekleyen bir SoC içeriyor.
- Framebuffer, SPRAM bloklarını kullanıyor ve her framebuffer SPRAM bloklarına eksiksiz biçimde eşleniyor.
- Görüntü denetleyicisi pikselleri 25 MHz'de akıtıyor ve titreşimi önlemek için çift tamponlama kullanıyor.
- Blitter, bir framebuffer'ın içeriğini başka bir framebuffer'a kopyalıyor veya framebuffer'ı tek bir renkle dolduruyor.
- Yazar, tasarımın çeşitli FPGA kartlarında çalışan donanım üzerinde oyunu başarıyla yeniden yarattı.
- Bu yazı, oyun motorundaki blitter ve rasterizer gerçekleştirimlerini ele alıyor.
- Blitter birimi pikselleri
vblank sırasında kopyalıyor; rasterizer birimi ise framebuffer üzerine çokgenler çiziyor.
- Blitter, başlangıç darbesini kontrol ediyor ve belirtilmişse renk doldurma yapıyor.
- Rasterizer, içbükey çokgenler çizmek için çokgen köşelerini çift portlu BRAM'den okuyor.
- Rasterizer, saydamlık için palet hileleri kullanıyor ve başka bir kaynak framebuffer'dan piksel kopyalayabiliyor.
- Oyun motoru, bir yazı tipi çizim motoru içeriyor ve önceden işlenmiş arka planları destekliyor.
- Derleme süreci; oyun veri dosyalarını kopyalamayı, simülasyonu çalıştırmayı veya oyunu başka donanım platformlarında oynamayı içeriyor.
- Bu yazı, Another World oyunu için FPGA üzerinde çalışan bir donanım tasarımının geliştirilmesini ele alıyor.
- Yazar; oyun testi, zamanlama ayarı, render sorunlarını düzeltme ve müzik ekleme gibi hâlâ tamamlanması gereken çeşitli işlerden söz ediyor.
- Yazar ayrıca oyunun diğer bölümlerini bağlama ve oyun durumunu kaydetme olasılığından da bahsediyor.
- Bu donanım üzerinde başka oyunlar veya demolar geliştirmek de gelecekteki olası projeler arasında yer alıyor.
- Yazı; blog serisi, port, araçlar ve ilgili materyallere bağlantılar sunuyor.
- Bu projede kullanılan Silice tasarımı MIT lisansı altında; değiştirilmiş C++ portu ise özgün GPL lisansını koruyor.
- Yazı, framebuffer, rasterizer, blitter ve sanal makine (VM) gibi temel terimleri, sektöre aşina olmayan okurlar için açıklıyor.
1 yorum
Hacker News görüşleri