Kategori arşivi: in English

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.

cULA64 V5 is out.

in order to satisfy feature hungry spectrum users, I’ve updated the ConvertUla64 (cULA64) utiliy. This version includes latest patches from scrPlus0.12 and gui based batch conversion mode.


I tried to tidy up the UI, but it still looks ugly.

Warning, I updated sources during lunch break at work, so there may be plenty of bugs. Please feel free to report bugs here.

Download here: CULA64_v5.zip 40kb


Kullanıcılardan gelen istekler doğrultusunda CULA64’ün son sürümüne toplu iş yapabilme seçeneği ekendi. Artık bir klasördeki tüm dosyaları tek seferde dönüştürebileceksiniz. Ayrıca çevirici kodu 0.12’ye yamalandı.

Bu metni yazdığım sırada farkettiğim birşey, kasördeki dosya isimlerini sadece küçük harf olduklarında toplu işe verebiliyorsunuz. Bunu yakında düzeltirim. Programı iş yerinde yemek arasında güncellediğim için pek test etme fırsatım olmadı.

Buyrun çekin: CULA64_v5.zip 40kb

Creating 256 colour games with EmuZwin

it’s easy to convert regular zx spectrum games to 256 colour ones. EmuZwin is an another emulator supports virtual 256Colour mode. You can convert your fav game to a 256 colour game.

Here is how:
Start by downloading emuZwin. I found V2.5 is most stable version with 256 colours:
http://kolmck.net/apps/EmuZWin25.zip (700kb)

You can try other versions to test if they are working on your system:
http://kolmck.net/apps/EmuZWin_Eng.htm

-setup:
1.open a game, and pause.
2.select 256 color mode from “effects” menu
3.a window will open. do not touch any settings, click ok. monochrome data will be copied to the extended gfx memory. (this window is also kind of hard to understand behaviour, it will only shown once, so don’t make mistakes)
4.open gfx editor now.
5. Click yellow pacman face to turn it off. Only regular speccy data will be shown.

-Try to find the sprites on memory:
7. At the bottom left corner of the gfx editor, there is a textbox, you can type the width of the sprite (in characters) if the sprite you want to edit is 3 characters in width just type 3 there. Then you will scroll and find your sprites.
8. Use triangle shaped arrows to shift bytes left or right
9. Use red grid button to show grid, don’T forget to select “anchor grid to byte 0”.
10. You may see couple of same sprites around memory. One is screen, and generally games uses a buffer to create image, so dont be fooled by them. Try and find real sprite data.
10.When you find your sprites you are ready to draw new sprites over them. Click pacman again to show 256color pixels.

-editing
11.Start drawing
12.unpause the emulator to see the results and pause again before editing.

-saving
13. to be on the safe side save your gfx work seperately. Click “save” in GFX editor window. Make backups.
14. Save your game in emuzwin (ezx) format from emulator window, File > save as…
15. Close the emulator

-returning to work
15. when you decide to return to drawing again, fire up emuzwin and generally emulator will automatically start last workspace. if not, load your ezx file, open gfx editor and load your GFX file.

Have fun!

I’m using V2.5 because later versions are far more buggy, and won’t work/crash with 256col games ocassionaly.

about Samsung st550 blur problem

Last month, despite being a pricey model, I decided to buy Samsung’s ST550 because it has a front lcd panel and very good reviews on the net. But now, I’m a little disappointed from it’s results. While the camera is very fast and responsive, it suffers from blurry images. I could never be able to took a clear picture, even though I selected iso100, shorter exposure rate, superfine quality and recommended resolution. Images are always slightly blurry. I don’t really know what to expect from such small sized camera, but even my old canon ixus 70 produces better and clearer results. Samsung uses Schneider lens, so I think the problem is not lie in the lens refraction, instead ccd or cmos chip OR badly coded compression algorithym is responsible from blurry images. Even under bright daylight camera produces blurry pictures. Maybe it’s a focus problem, but you cant control focus, so maybe it needs some fine tunning in firmware. If you zoom in the image, you can see the pixels are blended together, like a smaller image made bigger by interpolating. And there is a faint halo effect, preventing yo to take a clear shot. Eg. if you take a picture of a black dot on white paper, there will be a faint gray area around the dot, like picture is off-focus but it’s not.

ST550’s menus, touchscreen panel, heptic vibration, clever motion and face detection, finger gestures, motion sensor and front lcd etc. are all good and functional. But what I really expect from a camera is taking good pictures.

Those are the most clear picture I got from this camera, which I took them in macro mode (macro generally produces nicer pictures in st550):


(note that,in those pictures, because of the heavy depth-of-field effect, focus limited to a very small area, at the tip of the die-cast model. I’m not talking about d-o-f blurrines, I’m talking about the blurrines of focused area)

the camera acts better in lowlight conditions. When every other camera sucks at night, ST550 excels. Note that, when taking night pictures, blur is often disregarded. The lowlight blur generally comes from longer exposure, but what you expect from a 1-second exposure or 1/45s exposure is much worse than ST550’s nice, relatively sharp output. Camera somehow stabilize the motion and try to eliminate blurring in lowlight by using motion sensors, optical stabilization and software processing.

This picture uses iso100 + 1second exposure, no flash and taken under a regular streetlight. And st550 has a quick timer function, the camera detects motion and wait for everyone to stop moving then it decides to take the picture. Nice and very useful feature.

Also there is no firmware update out yet, to fix some minor bugs in the on-screen user interface.

I guess it’s wise to get the model with smaller screen (ST500). Because st550’s screen so big you can’t help but touching the screen when you try to take a photo of yourself using front lcd, that brings up a menu and stops you from taking the picture. Mostly, you need to strive to exit acidental menus because of the big screen leaves no space for holding camera properly. Also smaller screen makes the camera live longer, as battery generally dies after a photo session. ST550 lasts about a day if you don’t use flash too much. Batterymeter shows half full in 5 shots, and red empty alert at 15 shoots with flash (but it will go on to take 20 more before it dies).

Smart mode is generally useless as it always chooses to turn off flash and macro mode if there is no faces around. So you need to learn the device, and use it on Program mode. I must add, “beauty shot” mode really creates amazing shots (but with a little blur). And children mode plays some animation (and you can download more at samsung.com) on front screen and creates funny photos even if you use the feature on grownups.

Samsung ST550 is a good video recorder, it works nice even if you record HD video at 1280x720x30fps.

If I get used to ST550 blur someday, I’ll be very happy. Because other than damned blur, the camera is very nice. But I should warn you, stay away from ST550.