Kategori arşivi: Sinclair Zx Spectrum

Zx Spectrum’da SNA to Tap converter

Çevirici

 

 

Buraya yazmaya unutmuşum nedense. Halbuki bu benim en memnun olduğum çalışmalarımdan biriydi. 2010’un kasım ayında biraz da kafamı dağıtmak için zx microdrivelar ile oynamaya başlamıştım. Hazır elimde 10-15 kartuş olduğu için bunların içine sevdiğim oyunları doldurup hızlıca yüklemek istedim. Ne kadar masum bir istek, bu programa dönüştü:

 

Tabii bu işi yapmanın sürükle-bırak şeklinde olmasını beklemiyordum. Ama yine de küçük bir uğraşla başarılması gerekir öyle değil mi? Fakat işin aslı böyle değilmiş, çünkü zx spectrum’a çıkmış oyunların neredeyse tamamı kendi özel yükleyicilerini (custom loader) kullanıyordu ve bu yükleyiciler teyp’den gelen veriyi yüklemek üzere tasarlanmıştı. Dolayısıyla tap ya da tzx dosyalarını orjinal halleriyle microdrive’a atarak yüklemek imkansızdı. Çünkü oyunun loader kısmını microdrive’dan yüklediğinizde çalışan program verinin devamını teypten yüklemeye kalkıyordu.

Sonra aklıma emülatör snapshot formatları geldi. Snapshot’lar bilgisayarın tüm hafızası ve z80 işlemcisinin yazmaçlarını bir dosyaya görüntüleyen imajlardı. Bunları microdrive’dan yüklemek çok kolay olmalıydı!!! …mı acaba? Değildi elbette. Çünkü imaj dosyaları sadece tüm ram’i kaplamakla kalmıyor, z80 işlemcisinin de yazmaçlarını kaplıyordu. Bu durumda sizin sinclair basic’den çağırdığınız LOAD eylemi, yükleme tamamlandığında tekrar basic’e dönmek istiyordu, fakat imaj tüm hafızayı kapladığı için geriye dönülecek bir basic kalmıyordu. Dolayısıyla hem oyununuz kaldığı yerden devam edemiyor, hem de z80 yazmaçları henüz yüklenmemiş oluyordu. Bu durumu bertaraf etmek için tüm sna2tap tarzı araçlar yine kendi özel loader sistemlerini geliştirmişlerdi. Fakat, doğru tahmin ettiniz, başa döndük, dönüştürülen dosyalar yine teypten yüklemek için tasarlanmış oluyorlardı!!! Yani microdrive’a özgü bir loader yazmadıkça ya da standard loader ile yüklenen bir tap dosyası oluşturamadıkça hiçbir oyunu microdrive’a çeviremeyecektik!!!

Bir çıkmaza düşmüştüm. Nasıl olabilirdi bu? Bu devirde, zx spectrum gibi emülasyon sahnesi çok hareketli bir platformda hala yazılmamış bir çevirici?!

Problemin çözümü de kolay değildi. Çünkü standart loader veriyi yükledikten sonra basic’e dönmek istiyor, ki siz de öyle olmasını istersiniz çünkü veri yüklendikten yine basic’den vereceğiniz bir komutla yazmaçları yükleyip, oyunu kaldığı yerden devam ettirecek kodu başlatmanız gerekecektir. Yani BASIC oyun başlatılana kadar hafızada kalmak zorundaydı.

Birkaç deneme yaptım. Acaba basic güvenli olarak kaç byte alana ihtiyaç duyuyordu? Eğer hiçbir aygıt takılı değilse 500byte kadar. Tabii microdrive taktığınızda yeni eklenen komutların değişkenleri sayesinde bu biraz yükseliyor. Yetmiyor, bir de loader kod çalıştırmalısınız, yani minimum:
10 LOAD “” CODE: RANDOMIZE USR 40000
bu kod aşağı yukarı 50 byte yer kaplasa sonuç 1kb. Biraz da pay bırakınca (printer takarsanız buffer 256byte mesela) 1.4kb alan gerekiyor. Ayrıca bir de asm ile yazılmış bir başlatma koduna ihtiyacınız var. Bu kod işlemcinin yazmaçlarını dosyada göründüğü gibi yükleyip, PC yani dosyadaki Program Counter’a zıplaması gerekiyor. 17 byte zaten yazmaç verisi tutuyor. 22byte’da yükleyen kod. minimum 39byte daha. Eğerki microdrive’a yükleyecekseniz demin yazdığımız LOAD “” CODE kısmı LOAD *m,1,”dosya” CODE XXXXX,XXXXX şeklinde düzenlenmeli, yani daha fazla byte gerek.

Uzun lafın kısası, oynamak istediğimiz oyunun kapladığı hafıza içerisinde kesintisiz olarak bulunan 1355byte’lık bir alana ihtiyaç var. Bu alanı ne için kullanacağız? Snapshot imajının BASIC’le kesişen 1.4kb’lık kısmını bu boş alana taşınması, ve yükleme tamamlandıktan sonra oyun başlatılmadan önce yerine geri yapıştırılması gerek. Ve bu son yapıştırma işlemi basic ile değil, asm koduyla halledilmeli ki basic güvenle silinebilsin.

Fakat böylesi büyük bir “düzlük” her oyunda bulunamıyor. Oran %50 diyebilirim. Yani yöntem her durumda çalışmıyor. Daha kökten bir çözüme ihtiyaç vardı ve bu blog’u okuyan birçok kişinin aklına geldiği gibi, ben de sıkıştırma çözümlerini kurcalamaya başladım. Zx spectrum z80 işlemcili olduğu için ortalık sıkıştırma programı ile dolu. Zip, rar, ace, lha, lzh gibi tanıdık formatlar için bile kodlayıcı/çözücüler var. Fakat çözücü kısmın da ram’de depolanacağını, her çözücü kodun benim imajımdan yer yediğini düşünürerek küçücük bir çözücüsü olan bir sıkıştırma programına ihtiyaç duyuyordum. Ama aynı zamanda bu program bana her durumda en az %10 sıkıştırma sağlamalıydı.

Uzun ama çok uzun denemelerimden sonra bu işi başaracak çok alternatif olmadığını gördüm. Ama en ilginci bitbuster idi. Kardeş platform diyebileceğim MSX için yazılmış bitbuster extreme windows tabanlı bir paketleyici, z80 tabanlı 79byte büyüklüğünde bir decoder’den oluşuyordu. Beni biraz uğraştırsa da (asm konusunda biraz acemiyim) bitbuster’ı kendi ihtiyaçlarıma göre bir gecede düzenledim, sonuç 88byte olmuştu. Bitbuster etkileyiciydi, snapshot dosyaları standard 49kb boyutundadırlar, bu formattaki chuckie egg 11kb, Cobra 23kb ve tüm hafızayı kaplayan ve 1 byte bile boşluğu olmayan batman 33kb’a kadar küçülebiliyordu. Bu basic için istediğim kadar ram’e sahip olmam demekti. Tabiiki sonuç olarak yüklenen imaj 88byte bozulmaya uğramak zorundaydı. Bunu ekrana yüklemeyi tercih ediyorum. Eğer snapshot’larınızı ekran tazelenmeden önce alırsanız, oyununuz başlatıldığında ekran yeniden çizileceği için bitbuster’ın izi de ortadan kalkabiliyor.

Sonunda c# ile dosyayı sıkıştırıp uygun pozisyonlara yerleştiren “visual snapshot converter” adında bir program yazdım. Bu program zx spectrumda snapshot dosyalarını standart loader ile yüklenebilen TAP dosyaları haline getiriyor. Bu yöntem üretilen dosyaları tüm zx spectrum donanımlarına uyumlu hale geliyor olması demek oluyor.

Yukarıda anlattıklarım 7.11.2010 ile 23.11.2010’u kapsayan aralıkta başlayıp sonlanmış bir olaylar silsilesidir. Fikirlerin çoğu, arkadaşım ASM ile yaptığımız tartışmalar sırasında çıkmıştı. Ben kendi çeviricimi yapmaya çalışırken asm benden önce birşeyler kotarıyor, çıkan yeni problemleri farkedince geliştiriyordu.

Asm, farklı bir yöne gitti, o RLE sıkıştırmaya yöneldi, bu şekilde her seferinde 1.4kb kazanmak mümkün olamayabiliyor. Oran %85 civarında. Ayrıca asıl hadef TAP dosyası üretmek iken, asm direkt olarak wav dosyaları üretmeyi seçti. Bence ses dosyası üretmek başlı başına bir problem. Eğer komut satırından çalışan zxBoot’u edinmek istiyorsanız buraya tıklayın.

Şu anda asm’nin Zxboot’u ve benim yazdığım Visual Snapshot Converter dışında bu işi yapan program yok. Ama benimki daha şekilli oldu :))

Denemek isteyen buyursun, sonuçta deneysel bir sürüm daha var burda, proof-of-concept diyebiliriz. Onun için her çevrimden önce programı kapatıp açmanızı tavsiye ediyorum.

 

 

Simplistic Version, SnapToTap R2
Simplistic Version, SnapToTap R2

Nasıl kullanacaksınız?

Kolay: Yükle, sıkıştır, kaydet.

Detaylı anlatım:

1.Sadece Zx spectrum 48k SNA formatında dosyaları çevirir. Bir SNA dosyası bulunuz. Bu dosyalar tipik olarak 49kb boyutundadırlar.

2.”Open 48k Sna” butonuna basın ve bu dosyayı seçin. Dilerseniz show memory map seçerek zx spectrum’un ram’inin grafiksel olarak görüntülenmesini sağlayabilirsiniz.

3.Otomatik olarak sıkıştırma penceresine geçilecek, “Compress” butonuna basınız.

4.Sıkıştırma işlemi karışık ve yavaş. 100% olana kadar bekleyiniz. Hiçbir düğmeye basmayınız.

5.100%’e ulaşınca “APPLY” butonuna basarak değişiklikleri onaylayınız.

6.Çıkış penceresinde loader seçimi yapınız. Şu anda sadece microdrive ve teyp var, ileride +3Dos disk yükleme programcığını da ekleyeceğim, şu anda sürücü lastiğim kopuk olduğu için deneyemiyorum 😀

7.”Save” butonuna basın.

Bitti.

Son Sürüm için aşağıdaki bağlantıyı takip edin eski sürümler için sol taraftan “Downloads and Development” bağlantısını takip edin:

Snaptotap 2.4 güncellemesi

 

 

ZX Spectrum: Elite Collection (iPhone)

25 yıllık yazılım firması “Elite”, yeni iTunes uygulamalarını duyurdu:

Bugünden itibaren iPhone kullanıcıları, sadece 56 Pence’e (1$’dan az) zx spectrum emülasyonu yapabilecekler. Elite Kolleksionundaki oyunlar şöyle imiş:

– Turbo Esprit #3 on top 100 best games, voted for by visitors to World of Spectrum
– Saboteur #10 on top 100 best games
– Chuckie Egg the classic, developed by Nigel Alderton
– Harrier Attack inspired by the conflict in the South Atlantic
– Frank Bruno’s Boxing the UK #1 Best-Seller
– Buggy Boy the arcade original driving game

http://www.elite-systems.co.uk/elite/htdocs/user_home.php?show=26

Doğrusu, Chuckie Egg’i düşününce, touch screen kullanarak nasıl oynanacağını bilemiyorum. Kaldı ki, diğer oyunların aksine, bence o oyun sadece ve sadece orjinal 48K’nın kauçuk tuşlarıyla mükemmel oynanabilir.

SpecOS prototipi başladı…

Çok uzun zamandır birçok 8bit camiası, küçük bilgisayarlarını büyük işler yapabilmesi için modifiye ediyor, devasa kartlar üretiyor, hatta bilgisayarı baştan tasarlayanlar bile oluyor. Neden bilinmez, bu genişletmelerin hiçbiri taraftar bulmamıştır, genellikle üzerinde yazılım bulunmaz, yapması satın alması zordur, bulunmaz ya da pahalıdır.

SpecOS, ZX spectrum’u geliştirmekle uğraşmakansa, elimizde zaten bolca bulunan eski pc’lerimizi zx spectrum olarak kullanmamızı sağlaacak bir işletim sistemi projesi. “Ortalıkta ram genişletme, ekran renklerini arttırma, harddisk ve mouse bağlamaya yarayan parça parça projeler var, fakat sıradan bir pentium 133 laptopta dahi bunlar bir arada bulunuyor, öyleyse neden spectrum’a donanım eklemekle vakit kaybediyoruz? Donanım zaten orda, hem de atıl şekilde duruyor” fikriyle bu işe başlayan Paul, şu anda işletim sistemini windows altında geliştiriyor ve deniyor. SpecOS bittiğinde, bir ekran kartı, network kartı, tam klavye ve mouse, modern depolama birimleri takılmış bir zx spectrum’unuz varmış gibi olacak. OS üzerinde orjinal zx spectrum emülasyonu da ayrı bir uygulama olarak bulunacak. Proje başka eski laptoplarda çalışmak üzere tasarlansa da, pandora gibi arm işlemci kullanan mobil platformlara da port edilecek.

Paul bu işletim sisteminin günlük ihtiyaçlar için değil, bir hobi olarak kullanılmak üzere tasarlandığını söylüyor.

Videosu youtube’da:

denemek isteyenler WOS’daki başlıkta son alfa versionunu bulabilirler:

http://www.worldofspectrum.org/forums/showpost.php?p=471349&postcount=72

Bilbao’dan geçen var mı?

İspanya’nın en büyük ikinci LAN partisi olan (4000’in üzerinde LAN portu mevcut) RetroEuskal 2010, 22-25 temmuz tarihlerinde Bilbao’da yapılacak.

Bu sayfaya konu olmasının sebebi, posteri:

48k rom buraya nasıl sızdı?

Posterin arka planını oluşturan asm kodu zx spectrum rom’unun ilk satırları. Zx Spectrum, ispanyada da çok güçlü, hatta ingiltere üretime yetişemeyince 128k modellerin çoğu ispanyada üretilmiş ve satılmış. İspanyol 128k modellerin ingiltere modellerine göre farklılıkları da var. Hatta ispanyada satılan ilk 128k modellerin kutusundan nümerik klavye aparatı da çıkıyor. Bu aparatları ingiltere satıcılarında bulmak imkansız gibi olsa da, ispanya ebay’inde sürekli görünen edevatlardan. Ayrıca amerika’ya satılan Timex ntsc modeller de Portekizde üretildiği için ispanyaya da pal olarak ulaşmışlar. Arayan ispanyada PAL timex sinclairde bulabilir. Yani ispanyada zx spectrum’un seveni çok, bu sebepten grafiklerlerin de sinclair’i kullanmaları çok doğal.

DiHalt 2010 Açıkhava Demoparty

Zx Spectrum’un rusya’da yapılan partilerinden biri olan DiHalt’ın bu yılki katılımları tabiiki daha öncekilerden daha az. Ama grafik yarışmalarında yeni keşfedilen titreşimli ekran modlarının da izlerini görüyoruz. Şaşırtıcı derecede bu titreşimli modlar normal spectrumda daha iyi görünüyorlar, amiga’nın interlace modlarından çok daha az titriyorlar. Pixellerin büyük olması buna bir etki mi sağlıyor acaba? (Düşük çözünürlükte pixeller hem tek, hem de çift interlace satırını kaplıyorlar).

İnci Kabuğu (Anna Andreevskaya(Flower))
Pearl Shell, 8×1 pixellik alanda iki renk, kullanabilen MLT denilen moddu hızla backbuffer ile değiştirerek 8×1’lik alanda 4 renk elde etmeyi amaçlıyor, ayrıca renklerde karışıyor gibi görüldüğü için ara tonları da elde etmek mümkün oluyor. Bunu son zamanlarda, diagonal alanları sırayla değiştirerek, “Mescaline Synteshia” demosunda mükemmelleştirmişlerdi.

Ürkek Kuşlar (Piesiu)
Standard bir zx spectrum grafiği, 8×8’lik alanda iki renk limiti var, hiç fena değil.

CPU beni seviyor (bfox)
Yine standard bir ekran grafiği, benim de kullanmayı sevdiğim, diagonal çizgilerle clash’ı gizlemeyi amaçlayan bir stil

Pacman olmalıyım! (pROF/Alexey Rusakov(4D))
“I have to be a pacman!” yine standard bir zx spectrum ekranı, ama kabul etmek gerekir ki koyu kırmızı renk zx spectrum’a göre fazla koyu. Emulator tweak’i var gibi duruyor. Malesef zx spectrumda koyu ve açık renkler arasındaki fark burda görüldüğünden daha az.

Partide 3 adet demo da var, %40 ve Cat MegaDemo. İkisi de eğlenceli ama teknik bir gelişme ya da makineyi sınıra taşıyan bir durum yok. Belki kedi megademosunun multicolour bölümü emülatör yazarları için ilginç olabilir, çünkü tam erkan rasterlar var ve biraz titrek geldi bana, emülatör problemi olabilir.

Dihalt 2010’da böyle geçti, parti orgalarından newart bana mail atarak davet etmişti, çok sevindirici benim için, Zx Scene’i için uğraşan insanların var olduğunu görmek (Bana hatırlatmış olmasına karşın online voting’i tamamen unutup kaçırdım),rusyaya vizeler kalktığına göre belki önümüzdeki yıl Nizhny Novgorod’a gideriz, acaba direkt uçuş var mı?

Jonathan Smith, hayatını kaybetti.

Tüm zx spectrumcuların kaplerinde yer eden birçok oyunun altındaki imza, kendi sevdiği şekliyle “Joffa Smifff”, bugün sabah 10:30 itibariyle hayata gözlerini yumdu. Joffa nisan ayından beri hastanede iç kanamalar ve enfeksiyonla savaşıyordu. Son iki gündür derin uykudan uyanamamıştı ve bu sabah kötü haberi aldık (01.02.1967-26.06.2010).

PudPud: "Joffa Says R.I.P."

Jonathan Smith, Sinclair Zx Spectrum oyun piyasasındaki en iyi programcı olarak bilinir. Seveni öyle çoktur ki, 2007’de küçük bir retro gecesine davet edilince partinin düzenleneceği mekana kalabalıktan girmek mümkün olmamıştı. Bu zaten Joffa’nın ilk ve tek parti katılımıydı. Joffa’yı, son derece alçak gönüllü, en ufak bir kompleks sahibi bile olmayan biri olarak tanıdım. Son birkaç yıldır WOS forumlarında bizlerden biri olarak sohbet ediyordu, ben de onunla sohbet etme şansı bulmuş kişilerden biriyim.  Ayrıca Joffa, Saucer isimli oyununu çoook yavaş bir şekilde kodluyordu.  Birkaç yıl önce gönderdiği alfa sürümünü buradan çekebilirsiniz. Oyunda her yöne  1 pixel ekran kaydırma, yüksek hızda ekran tazeleme gibi her zx oyununda bulunamayan özellikler görülüyor. Joffa hastaneye yatmadan önce Saucer’ın bir hayli ilerlediğini bitmeye yaklaştığını söylüyordu. (Yakın arkadaşları Joffa’nın harddiskine zarar gelmemesi için ailesi ile temas halindeler.)

Jonathan Smith’in elinden çıkan tümü zx spectrum klasiği olmuş oyunlar şöyle: Cobra, Batman, Dalet Tompsons Super Test, Green Beret, Firefly, Hyper Active, Hysteria, Mikie, Kong Strikes Back, Street Hawk, Terra Cresta ve son olarak tek başına hazırladığı Pud Pud.  Jonathan ayrıca  Atari ST, Sega Megadrive, Super Nintendo, Nintendo Gameboy, Nintendo Gameboy Advance ve Cep telefonlarına oyunlar yazmıştı.

Daha fazla okuma ve diğer oyunlar için aşağıdaki linklere bir göz atın.

Jonathan Smith, hayatını kaybetti. yazısına devam et

Zx Spectrum yeniden BBC News’de…

Zx Spectrum Twitter

Vintage Computer Festival’e nedense bayağı ilgi gösteren basın (bu işin suyunun çıktığının başka bir işareti), Winston’ın birkaç yıldır geliştirdiği Spectranet’i haber yapmış. Yaklaşık 18 aydır tamamen fonksiyonel olan zx spectrum için network kartı, tcp hizmetleri ve freezer görevi gören Spectranet, festivalde Twitter client ile show yapınca basındakiler sevmiş. Halbuki aynı cihazın zx spectrum üzerinde Lynx ve Irc’yi çalıştırdığı, herhangi bir url’den direkt olarak snapshot (SNA/Z80) yükleyebildiğini de bilselerdi ne güzel olurdu.

Haa ama winston bana başka bir arkadaşı hatırlatıyor, yemeği yiyip yiyip “Ohhh” çekenlerden, ama alco’nun zamanında dediği gibi,  bizim önümüze de koysa da biraz da biz ohh çeksek diyoruz…

http://news.bbc.co.uk/2/hi/technology/10364135.stm

Zx Spectrumda VBR audio, 25fps video!

Divide kullanıcıları için video stream pakedi diVideo, standart bir zx spectrum 128 üzerinde saniyede 25 kare görüntü izletirken değişken bit oranına sahip AY ses ile ses kalitesini maksimize etmeyi hedefliyor.

Gasman tarafından kodlanan diVideo’nun tüm detayları açık, http://divideo.zxdemo.org/ adresinden okuyabilirsiniz. Basitçe bakarsak, video akışı delta frame tabanlı çalışıyor. Yani kareler arasındaki farklar kaydedilerek bit oranı düşürülmeye çalışılıyor. Bu sırada artan bant genişliği ses kalitesini yükseltmekte kullanılıyor. AY çipi zaten çok iyi ses veren bir çip değil, hareketli görüntülerin oynatıldığı sırada alınabilecek ses kalitesi biraz düşüyor.

Şu anda sadece kaynak kodu üzerinden derleme yapabilirsiniz, ama bir süre sonra windows, mac ve linux sistemler için çeviriciler hazır olacakmış.

23 Nisan!

Spectrumcu Türkler için bugün değişik bir gün. Öncelikle TBMM’nin kuruluşunu ve saltanattan kurtulmamızı (görünüşe göre tam anlamıyla kurtulamamışız bu illetten ama) kutladığımız 23 Nisan Ulusal Egemenlik ve Çocuk bayramı aynı zamanda Sinclair Zx Spectrum’un da piyasaya çıktığı gün.

Bu yüzden biz burda bayraklar açıp bandolar gezdirdiğimizde, ingilterede de retro severler Zx Spectrum’un 28.yılını kutluyor, beeperlerinden bipli sesler çıkarıyorlar.

Atatürk’ün çocuklara armağan ettiği bu günü, çocuklarımızı şenliklere götürüp onları hoş tutarak geçirdikten sonra, akşam olup yattıklarında şaraplarımızı açarak Zx Spectrum için birer kadeh tokuşturarak kutluyoruz 🙂

23 Nisan hepimize kutlu olsun!