Gönderen Konu: Benzer Platformların Birbiri Üzerinde Emülasyonu  (Okunma sayısı 24351 defa)

0 Üye ve 3 Ziyaretçi konuyu incelemekte.

Çevrimdışı Alco

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2133
  • "Kahraman olmak, dürüst olmaktan kolaydır" Luigi P
    • Sizin Amstrad
Benzer Platformların Birbiri Üzerinde Emülasyonu
« : 10 Mayıs 2014, 14:59:31 »
Bu aralar CPC dünyasında yeni bir moda var: Speccy oyunları emülasyonu. Kısaca; Speccy'de olup da CPC'de olmayan oyunların kodlarına, elzem noktalar haricinde fazla müdahale edilmeden CPC bünyesinde çalıştırılması prensibine dayanıyor. Bu konuyla ilgili detaylı birşeyler hazırladım. Ama esas mesele bu değil şu an için...

Aklıma takılan husus; acaba benzer birşeyler Amiga-Atari ST ailesi arasında da kolayca yapılabilir mi? Ve bu bağlamda:

HoneyPot
Yok mu bize;

"Amiga'da Blitter şöyledir, o açığı Atari ST'de böyle kaparız. Copper da ise şöyle oluyor. Sprite mevzusu nispeten kolay gibi gözükse de... O dediğin emülasyonu işi ise ancak... Hatta konu olmuşken dur ben size bu aletlerin sınırlarını da tam olarak anlatayım"

minvalinde iki kelam edecek, vakti zamanında Amos kullanmadan oyun yazmış, Amiga'dan Atari'ye Conversion yapmış bir babayiğit??? Kıssadan hisse; işkembeden değil de saha tecrübesi olan birilerinden birşeyler duysak gari... Ne bileyim işte; artık conversion mı olur yoksa emülasyon mu denir, bir yerden başlasın, sonra gerisi gelir nasıl olsa.

Yani böyle nasıl desem; saha ajanı olsun, masabaşı analisti ile yürümesi zor bu işlerin :)


Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #1 : 10 Mayıs 2014, 16:41:16 »
Atari ST'den Amiga'ya port çok da zor değil. Aynen Speccy'den Amstrad'a yapılacak konversiyonlar gibi.

Bir de Bitmap Brothers gibi, baştan çok platformlu oyun tasarımına girişen şirketler var. Amiga'nın birçok donanım özelliğini gözardı eden (dual playfield, hardware scrolling, copper hileleri, sprite'lar vb) oyunlar yazmışlar.

SOTB gibi Amiga donanımı baz alınarak hazırlanan oyunların ST konversiyonları içler acısı.

Amiga V Atari ST - Shadow Of The Beast

Silkworm'un programcısı ile yapılan söyleşide de bu tarz ifadeler mevcut:

http://www.codetapper.com/amiga/interviews/ronald-pieket-weeserik/

Çevrimdışı memrah

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 188
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #2 : 11 Mayıs 2014, 19:49:19 »
Amstrad ve Spectrum'un programlarinin birbiri uzerinde calistirilmasi konusu acilmisken, hep aklima gelen bir fikrimi paylasayim.

Kisisel fikrime gore Amstrad'in eksik noktalarindan biri attribute clash'ti. Bu ne tuhaf bir onermedir dediginizi duyar gibi oldum. Aciklayayim. Bildiginiz gibi Amstrad'in 3 video modu vardi.

Cok renkli mode (MODE0) dusuk cozunurlugune ragmen bir suru renk ve sifir attribute catismasi ile bazi oyunlar icin gayet guzel bir grafik ortami sunuyordu. Ama 160X200 pixel gibi dusuk bir cozunurluk, cok renkli de olsa, 2x1'lik pixel oraninin da katkisiyla, cogu oyunun grafiklerinin blok blok gorunmesine sebep oluyordu. Grafiklerde bir Sinclair oyununun detaylari yoktu.

MODE1 yani 320×200 cozunurluklu mode ise Spectrum'dan da yuksek cozunurluklu idi fakat ne yazik ki 4 renk ile sinirli olmasi bu mode'daki oyunlarin cogunu Spectrum'daki versiyonlarina gore daha renksiz yapiyordu.

640X200 ile MODE2 sadece 2 tane renk desteklemesine ragmen, Amstrad icin onemli ve islevsel bir mode'du. Bu Amstradi potansiyel olarak is dunyasina sokan bir yetenekti, ki bence cok dogru atilmis bir adimdi. Ozellikle spreadsheet, wordprocessing gibi konularda kucuk isyerleri icin gayet yeterli is cozumleri sunabilme potansiyeli olan bir mode idi. Video cozunurlugu ve disket sayesinde random file access ozelligi olmayan Spectrum'un giremedigi "kucuk isyerleri" piyasasina boylece Amstrad girebiliyordu.

Bu durumda goruldugu gibi ortada kalan MODE1 yani 320X200 / 4renk aslinda pratikte en kullanissiziydi. Is uygulamalari icin yeterli cozunurlugu yoktu. (En az 80 kolon gerekliydi) Oyun icin ise renk sayisi yetersizdi. Bu durumda bir orta yol bulunabilir, MODE0 bol renk, MODE2 yuksek cozunurluk icin kullanilirken, MODE1 her ikisinden de minik tavizler verip, her ikisinin de ustun yonlerinden yararlanma amacli, tipki Sinclairdeki gibi 320X200 cozunurlugu koruyup, bunun uzerinde cok daha dusuk cozunurluklu bir attribute map oturtarak, 320X200 16 renk bir mode seklinde yapilabilirdi. Sinclair ZX Spectrum'da gordugumuz gibi attribute clash keyif kacirici bir ozellikti ama bunu minimum'a indirmenin yollari vardi, ve bir cok oyunda (Ornegin Dan Dare 3, Antiriad, Cauldron, vs.) gayet rengarenk grafikler kullanilmis, attribute cakismasi ise ustalikla gizlenmisti. MODE1'de bu sekilde bir compromise ile Amstrad oyunlari sadece hem cok renkli hem de cok detayli grafiklere kavusmayacak  ayni zamanda eger bu MODE dikkatlice tasarlanirsa ZX Spectrum ile de neredeyse %75 seviyelerinde uyumlu hale gelecekti. Oyun port etmek cocuk oyuncagi gibi olacakti.

Ozellikle Amstrad'in Sinclair'i satin almasi ve bilgisayar konusunda Sinclair'in tum bilgi birikiminin ve patentlerinin sahibi olmasinin ardindan, CPC serisi revize edilip %100 Sinclair ekran bellegi duzenini kullanan yeni bir mode eklemesi ile Amstrad modellerini buyuk olcude Spectrum uyumlu hale getirebilirdi. Amstrad ve Sinclair aslinda birbirlerine oldukca yakin cihazlardi.

Çevrimdışı matahari

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 209
    • The Blog of Mert Börü
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #3 : 11 Mayıs 2014, 22:06:40 »
... "emulation" ... "conversion" ... "Amiga-Atari ST ailesi" ...

Sevgili Alcofribas’ın mesajında havada uçuşan bir sürü kavram var! Bu konuda birşeyler kaleme almadan önce, hepimizin aynı şeyden bahsettiğini garantilemek amacıyla, birbiri içine girmiş kavramların açıklanması gerektiğini düşünüyorum. Bu bağlamda; öncelikle konuyu (bilgisayar teknolojileri ile sınırlamadan) genel olarak ele almaya çalışacağım, ardından da kavramları retro odaklı bir projeyle örneklemeye çalışacağım. Zira bu konu, "Atari ST’den Amiga’ya port kolaydır, tersi zordur" türü genellemelere açık olamayacak kadar karmaşık ve tecrübe gerektiren bir iştir.

Önce kavramlar:

Çok basite indirgersek, bir sistemin yazılım ve/veya donanımsal işlevselliğinin, başka bir sistem üzerinde;

- benzer işlevsellikte çalışacak şekilde yüzeysel olarak modellenmesine "benzetim" (simulation),
- aynı işlevsellikte çalışacak şekilde birebir modellenmesine ise "öykünme" (emulation) denir.

Aralarındaki en büyük fark; "modelleme hassasiyeti"dir (modeling precision).

Bu iki kavramı netleştirdiğimize göre, artık konuyu akademik seviyeden aşağı çekerek, basit bir örnekle retro muhabbetimize başlayabiliriz ;)

Diyelim ki hepimizin çok sevdiği Sinclair ZX Spectrum klasiği olan "Knight Lore" oyununu Amiga 500’de oynanır hale getirmek istiyoruz. Eğer "Knight Lore"un grafiklerini Spectrum’dan ripleyip Amiga’ya aktarırsak ve Z80’de yazılan orijinal kodu disassemble ettikten sonra benzer işlevsellikte çalışacak kodu M68000 için tekrar yazarsak, yukarıdaki tanımlara göre simulation yapmış oluyoruz.

Bu kadar basit mi? Maalesef değil :) Zira, iki sistem arasındaki donanımsal farklılıklar yüzünden "Knight Lore"u simüle edebilmek için hem grafikler üzerinde hem de kodun işlevselliği üzerinde çok önemli değişiklikler yapmak gerekiyor. Örneğin; 2 renkte çizilmiş 12 kare güneş/ay animasyonunu Amiga’ya aktardığımızda, başta "bit sırası" (bit order), "bit derinliği" (bit depth) ve "renk değerleri" (colour values) olmak üzere bazı teknik farklılıklar ile karşılaşıyoruz. Diyelim ki bu farklılıkları bu işe özel yazdığımız bir "importer" kodu ile giderdik. Bu kez de karşımıza bu grafiğin Amiga’da ekrana basılabilmesi sorunu çıkıyor. Z80’de çalışan orijinal kodun adresleme yönteminin aksine, Amiga’nın ekran adresleme sistemine uygun bir kodun yazılması gerekiyor. Bir diğer deyişle; fonksiyon girdi ve çıktılarının değişmesi sebebiyle, benzer işi yapan fonksiyonun sil baştan yazılması gerekiyor… Karmaşık mı? Biraz öyle. - İşte, bu paragrafta anlattığımız işlerin tümüne "taşıma/aktarma" (port) ya da "çevirim" (conversion) deniyor. Port/Convert etmek demek, aslında simulation sürecinin en önemli parçası demek. Sanılanın aksine, simulation'dan farklı/bağımsız bir iş değil!

Peki, biz bu yolu seçmeyip emulation yapmaya karar verseydik, o zaman ne olacaktı? Yanıt basit; "Knight Lore"un kaset kopyasını birebir (1 byte’ını bile değiştirmeden) Amiga'da çalıştırabilmek için, Spectrum’un tüm donanımsal mimarisini ve ROM’unu M68000 kodu ile cycle hassasiyetinde modellememiz gerekecekti. Bu durumda da Amiga’nın 7.14 MHz’lik M68000 işlemcisi emulation sırasında gerçek Spectrum performansını yakalayamayacağı için, oyunumuz muhtemelen 1-2 frame hızında oynayacaktı. - Kabaca özetlersek; toplam performansı birbirine yakın donanımlar arasında emulation yerine conversion’ın tercih edilmesinin asıl sebebi, aktarılan oyunda mümkün olan en iyi frame rate’i yakalama çabasıdır.

Gelelim Alcofribas’ın mesajındaki diğer iki kavrama; "Amiga" ve "Atari ST" ile kastedilen modeller hangileridir? Biliyoruz ki, hem donanımsal açıdan hem de uyumluluk açısından Amiga 500 v1.2/v1.3, Amiga 600 ve Amiga 1200 arasında dağlar kadar fark var. Amiga ile neyi kastediyoruz? Aynı soruyu "Atari ST" kavramı için de sormalıyız. Blitter desteği olmayan 520ST/1040ST'den mi, yoksa 1989 yılında piyasaya blitter desteği ile sürülen 520STE/1040STE’den mi söz ediyoruz? Sakın "Aman canım, ne önemi var!" demeyin, çünkü Alcofribas’ın sorularını net olarak yanıtlayabilmemiz için bu parametreyi de çok iyi bilmemiz lazım. Sadece ST ve STE modelleri arasındaki donanımsal farklılık bile conversion süresini +/- 3 ay değiştirebilecek kadar önem taşıyor. (Verdiğim 3 ay örneği tecrübe ile sabittir, laf olsun diye söylemedim)

Kusura bakmayın, biraz uzun bir yanıt oldu ama, sizin de göreceğiniz üzere Alcofribas’ın sorusu "ondan buna çevirim kolaydır, şundan buna çevirim zordur" türü kestirme yanıtlar verilemeyecek kadar karmaşık bir süreç…

Son olarak; böylesine önemli bir konu başlığını araladığı için Alcofribas'a teşekkürler  8)

Çevrimdışı Ref

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2883
  • Advanced User Simulator
    • ae unutmadan
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #4 : 12 Mayıs 2014, 11:35:22 »
Bu aralar CPC dünyasında yeni bir moda var: Speccy oyunları emülasyonu. Kısaca; Speccy'de olup da CPC'de olmayan oyunların kodlarına, elzem noktalar haricinde fazla müdahale edilmeden CPC bünyesinde çalıştırılması prensibine dayanıyor. Bu konuyla ilgili detaylı birşeyler hazırladım. Ama esas mesele bu değil şu an için...

Bu konu hakkında hazırladığın şeyleri blog'a mı koyacaksın ben de onu merak ettim.


Gelelim Alcofribas’ın mesajındaki diğer iki kavrama; "Amiga" ve "Atari ST" ile kastedilen modeller hangileridir?

Elbette bu çevrimi/öykünmesi yapılan tüm platformlar için sorulabilecek bir soru.

Alco'nun temelde kast ettiği şey, "aynı işlemciyi (dolayısı ile aynı makine kodunu) paylaşan aletlerdeki donanım farklılıklarının, kodlamada ne tür farklılıklar yarattığı" idi.

Bu tür bir soruya, kesin bir cevap vermek güç ama örnek verelim,

Zx Spectrum'daki Joffa'nın kodladığı "Cobra" bir zamanlama harikasıdır. Cobra spectrum donanımının tüm olanaklarını tam ekran yatay kaydırma yapmak için kullanır ve kodlaması bayağı tuhaftır, oyundaki herşey kodlaması sırasında dikey ve yatay olarak terstir, böylece spectrum'un ekran belleğinin yapısı ile stack push komutu birlikte kullanılarak hızlı kopyalama yapılır. Şimdi bu kodu amstrad'ın ekran belleğine göre uyarlamak muhtemel olarak tüm oyunu baştan yazmak demektir. Grafikler tekrar döndürülecek, baştan dizilecek, kopyalama komutları uygun komutlarla değiştirilecek vs. Fakat game logic dediğimiz, oyunun çekirdeğini oluşturan tasarım üzerine fazla müdahale gerekmeyebilir.

Diğer taraftan monokrom bir oyun rahatlıkla aktarılabilir, en azından grafik işi hafif olur.

Aynı şey amiga'dan spectruma'da konuşulabilir, atari'den amigaya da.

Çevrimdışı Alco

  • Yönetici
  • Özgür Retrocu
  • *
  • İleti: 2133
  • "Kahraman olmak, dürüst olmaktan kolaydır" Luigi P
    • Sizin Amstrad
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #5 : 12 Mayıs 2014, 12:54:37 »
Bu durumda goruldugu gibi ortada kalan MODE1 yani 320X200 / 4renk aslinda pratikte en kullanissiziydi. Is uygulamalari icin yeterli cozunurlugu yoktu. (En az 80 kolon gerekliydi) Oyun icin ise renk sayisi yetersizdi. Bu durumda bir orta yol bulunabilir, MODE0 bol renk, MODE2 yuksek cozunurluk icin kullanilirken, MODE1 her ikisinden de minik tavizler verip, her ikisinin de ustun yonlerinden yararlanma amacli, tipki Sinclairdeki gibi 320X200 cozunurlugu koruyup, bunun uzerinde cok daha dusuk cozunurluklu bir attribute map oturtarak, 320X200 16 renk bir mode seklinde yapilabilirdi. Sinclair ZX Spectrum'da gordugumuz gibi attribute clash keyif kacirici bir ozellikti ama bunu minimum'a indirmenin yollari vardi, ve bir cok oyunda (Ornegin Dan Dare 3, Antiriad, Cauldron, vs.) gayet rengarenk grafikler kullanilmis, attribute cakismasi ise ustalikla gizlenmisti. MODE1'de bu sekilde bir compromise ile Amstrad oyunlari sadece hem cok renkli hem de cok detayli grafiklere kavusmayacak  ayni zamanda eger bu MODE dikkatlice tasarlanirsa ZX Spectrum ile de neredeyse %75 seviyelerinde uyumlu hale gelecekti. Oyun port etmek cocuk oyuncagi gibi olacakti.

Ozellikle Amstrad'in Sinclair'i satin almasi ve bilgisayar konusunda Sinclair'in tum bilgi birikiminin ve patentlerinin sahibi olmasinin ardindan, CPC serisi revize edilip %100 Sinclair ekran bellegi duzenini kullanan yeni bir mode eklemesi ile Amstrad modellerini buyuk olcude Spectrum uyumlu hale getirebilirdi. Amstrad ve Sinclair aslinda birbirlerine oldukca yakin cihazlardi.
Çok güzel bir noktaya temas etmişsin. Lakin; bu tür sorulara kısa ve mantıklı yanıtlar vermek, çözümler sunmak çok da kolay değil. Zira elimizde o döneme ait; maliyet, tedarik, teslim tarihi, kapasite, yapabilirlik gibi tüm veriler yok. Haliyle bugün buradan bakıp konuşmak nispeten kolay.

RRJ derginin 0. sayısı elinde var mı bilmiyorum ama orada matahari'nin CPC Video yapısı ile ilintili çok güzel bir yazısı var. En azından bazı konularda fikir sahibi olmadan önce bilgi sahibi olmamıza önayak olacaktır. İşte o yazıdan faydalı bir paragraf:

Alıntı
Kodlamaya mola verelim. Dersimiz, “tarih”…

Amstrad, çağdaşı diğer 8-bit bilgisayarların aksine, sadece oyun için tasarlanmamıştı. O güne dek görülen en kapsamlı BASIC uyarlaması, bir satırda 80 karakter desteği (ya da diğer deyişle Mode 2’de 640x200 pixel çözünürlük) ve en ucuz seçenekte bile yeşil ekran ile birlikte sunulması, dönemin Z80 işlemci kullanan tüm bilgisayar ve konsollar içinde Amstrad’ın farklı bir kitleye hitap ettiğini gösterir nitelikteydi. Özellikle, yeşil ekran üzerinde monochrome 80 karakter kullanabilmesi ve CP/M işletim sistemi ile birlikte gelmesi, henüz yeni yeni şekillenmeye başlayan ilk kuşak masaüzeri iş uygulamalarını (hesap çizelgesi, kelime işlemci, vs.) rahatlıkla destekleyecek biçimde “döneminin ötesinde” idi.

Aslında bütün bu “iş odaklı” bilgisayar imajının ardında, Amstrad tasarımcılarının verdiği kritik bir karar yatıyordu. Amstrad, ya dönemin diğer popüler bilgisayarları (Sinclair, Acorn, Commodore, vs.) gibi oyun pazarına odaklanacaktı, ya da çok daha ciddi bir imaj ile iş dünyasına hitap edecekti. Tahmin edilenin aksine, hem oyun sektörüne hem de iş dünyasına seslenecek “hybrid” bir tasarımda karar kılındı.[1] Bu karar, pazarlama açısından (o dönemin koşullarında değerlendirildiğinde) dahiceydi. Ancak, daha kağıt üzerindeki tasarım aşamasında bile evdeki hesap çarşıya uymadı! Oyun sektörü, bitmap tabanlı ekran hafızası ve Z80’in işgücünü hafifletecek DMA destekli yan işlemciler (co-processors) talep ediyordu. İş dünyasına yönelik tasarım ise, karakter tabanlı ekran hafızası ve tek işlemci üzerine odaklı yüksek performans gerektiriyordu. Taban tabana zıt bu iki tasarımdan, ikincisi ağır bastı.

16 KB’lık “karakter tabanlı” ekran hafızasından tutun da, kasetten yükleme sırasında oluşabilecek hata durumunda bir önceki block’a geri dönerek yüklemeye kalınan yerden devam edebilme gibi en uçuk özellikler, “iş dünyası” düşünülerek tasarlandı. Terazinin “iş” kefesinin biraz ağır kaçması, oyun geliştiricileri için kabus sayılabilecek bazı özellikleri beraberinde getirdi: Çok yavaş bir firmware, doğrusal artmayan ekran adresleme yapısı ve her işin Z80 üzerinde toplandığı monoblock bir performans tasarımı...

Birçok oyun firması, Amstrad’ın bu “farklı” tasarımına odaklanmak yerine, daha sade bir mimariye sahip Sinclair ZX Spectrum için yazılmış oyunları port etmeyi ticari açıdan daha kazançlı gördü. Hal böyle olunca, Amstrad’ın teknik özelliklerini ön plana çıkaran oyunlar yerine, az renkli ve düşük çözünürlüklü Spectrum oyunları Amstrad pazarına hakim oldu. Ne acıdır ki, 1986 başında Amstrad’ın Sinclar’ı satın alması, Amstrad CPC serisininin Sinclair Spectrum serisi ile özdeşleştirilmesine, dolayısıyla da oyun sektöründeki mevcut “etkisiz” konumunun perçinlenmesine neden oldu. Bir yanda bu olumsuz imaj ve piyasaya sürülen kalitesiz oyunlar, bir yanda da iş dünyasından beklenen ilginin bulunamaması, Amstrad yöneticilerini oyun sektörüne daha yakın olmaya zorladı. İlişkilerin sıkı tutulması meyvelerini 1 yıl içinde verdi. Amstrad’ın 1984’deki ilk tanıtımının 3 yıl ardından, 1987 yılı kaliteli Amstrad oyunlar için “geç de olsa” ümit vaad etti. Exolon, Arkanoid, Operation Wolf, Zynaps ve elbette Mission Genocide gibi “native” Amstrad oyunları pazarı canlandırdı. Ne mutlu ki, bu heyecanlı dönem 1990’a dek devam etti.

Özetle, 1987-1990 yılları arasında yayınlanan birçok oyun, teknik açıdan Amstrad’ın yeteneklerini sergilemeyi “biraz geç de olsa” başardı.

Bu bağlamda; hep söylediğim başka bir hususu tekrar edeyim: Aslında o dönemde, oyunların kendi makinanda ne kadar güzel olduğu falan pek de önemli değildi. Önem arzeden tek noktada; oyunun varolup olmaması idi. Elbette bu bahsettiğim daha çok 8bit dönemine ait bir yapı. 16bit makinalarla beraber bu konuda kaliteye yönelik hassasiyet de gelişti.

Ama dediğin gibi bir video mod olabilseydi ve verimli çalışsaydı, muhakkak ki faydası da olurdu. Fakat bu oranı kestirmek pek kolay değil.

Bu konuda teknik analizleri; iki cihazı da çok iyi tanıyan biri olarak matahari daha sağlıklı yapabilir ama vakti olur mu bilemiyorum. Bir de kendisi afaki konuları konuşmayı pek sevmez :)

Peki, biz bu yolu seçmeyip emulation yapmaya karar verseydik, o zaman ne olacaktı? Yanıt basit; "Knight Lore"un kaset kopyasını birebir (1 byte’ını bile değiştirmeden) Amiga'da çalıştırabilmek için, Spectrum’un tüm donanımsal mimarisini ve ROM’unu M68000 kodu ile cycle hassasiyetinde modellememiz gerekecekti. Bu durumda da Amiga’nın 7.14 MHz’lik M68000 işlemcisi emulation sırasında gerçek Spectrum performansını yakalayamayacağı için, oyunumuz muhtemelen 1-2 frame hızında oynayacaktı. - Kabaca özetlersek; toplam performansı birbirine yakın donanımlar arasında emulation yerine conversion’ın tercih edilmesinin asıl sebebi, aktarılan oyunda mümkün olan en iyi frame rate’i yakalama çabasıdır.
Verdiğin örneği anladım, lakin benim başlıkta da belirttiğim gibi özellikle öğrenmek istediğim Amiga-Atari ST, Speccy-CPC, Atari XL-C64 gibi benzer platformlar arası işlemler. Yani; "nasıl yapılır", "benzer platform olmanın yani CPU'nun aynı olmasının bariz bir avantajı var mı yoksa çok kayda değer bir faktör değil mi ya da oran nedir" gibi soruların yanıtlarını arıyorum. Sen; Speccy-CPC ve Atari-Amiga platformlarını iyi tanıyan birisi olarak bizi, varsa yaşanmış-test edilmiş ya da varsayımsal örneklerle bilgilendirebilir misin? Bak mesela Mevlüt Bey ne güzel örneklemiş :)

Alıntı
MD: Nasıl yaptım? Amstrad, Spectrum'dan daha hızlıydı, hafızası da fazlaydı. Emüle ettim, Spectrum'u Amstrad'da... Spectrum'un ekran adresi 16384'de başlıyor ya, atıyorum Amstrad'da 25000. Bunu değiştirdim, Spectrum kodu değiştirdim. Denedim, Spectrum kodu aynen çalıştı! Renk ekledim, sesler ekledim. Tam bir hafta sonra Electric Dreams'e götürüp gösterdiğimde adam sandalyeden düştü! Buyur işte, bunu açıklamak mümkün mü ? 100 tane üniversite bitirsen olmaz... O anda acaip bir fikir geldi işte, uyguladım, denedim oldu... Adam 3 ay zaman vermişti... Ben 1 haftada bitirdim. RM: Tabi bence birazda şansınız varmış, Amstrad'un donanım, Sinclair (Spectrum)'a çok benziyor.

Kaynak: http://www.onlineoyun.gen.tr/threads/8593-Mevl%C3%BCt-D%C4%B0N%C3%87-in-tesad%C3%BCflerle-dolu-hayat-hikayesi-%28r%C3%B6portaj%29?s=20add8778c1fc8508bff0d2567bc589c#ixzz31Uh4e5a0


Gelelim Alcofribas’ın mesajındaki diğer iki kavrama; "Amiga" ve "Atari ST" ile kastedilen modeller hangileridir? Biliyoruz ki, hem donanımsal açıdan hem de uyumluluk açısından Amiga 500 v1.2/v1.3, Amiga 600 ve Amiga 1200 arasında dağlar kadar fark var. Amiga ile neyi kastediyoruz? Aynı soruyu "Atari ST" kavramı için de sormalıyız. Blitter desteği olmayan 520ST/1040ST'den mi, yoksa 1989 yılında piyasaya blitter desteği ile sürülen 520STE/1040STE’den mi söz ediyoruz? Sakın "Aman canım, ne önemi var!" demeyin, çünkü Alcofribas’ın sorularını net olarak yanıtlayabilmemiz için bu parametreyi de çok iyi bilmemiz lazım. Sadece ST ve STE modelleri arasındaki donanımsal farklılık bile conversion süresini +/- 3 ay değiştirebilecek kadar önem taşıyor. (Verdiğim 3 ay örneği tecrübe ile sabittir, laf olsun diye söylemedim)
Aslında her türden örneği duymak isterim ama "vaktim yok, tam olarak ne bilmek istiyorsun" diyorsan; piyasada yaygın olan modeller arası conversion bilgileri-trickleri duymak hoşumuza gider. Yani; A500-1.3 vs Atari ST gibi. Yoksa 89 yılında piyasaya çıkmış blitter'ın AGA'dan veya CPC+ 'dan çok da fazla piyasa şansı olmuş olduğunu sanmıyorum. Ama senin anlatacakların yaşanmış örnek olacaksa "ne çıkarsa bahtımıza" da diyebiliriz.

Bu konu hakkında hazırladığın şeyleri blog'a mı koyacaksın ben de onu merak ettim.
Daha karar vermedim. Ama bloga'a koysam bile buraya link/hatırlatma veririm.

Çevrimdışı matahari

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 209
    • The Blog of Mert Börü
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #6 : 12 Mayıs 2014, 14:31:06 »
Alco'nun temelde kast ettiği şey, "aynı işlemciyi (dolayısı ile aynı makine kodunu) paylaşan aletlerdeki donanım farklılıklarının, kodlamada ne tür farklılıklar yarattığı" idi.

Verdiğin örneği anladım, lakin benim başlıkta da belirttiğim gibi özellikle öğrenmek istediğim Amiga-Atari ST, Speccy-CPC, Atari XL-C64 gibi benzer platformlar arası işlemler. Yani; "nasıl yapılır", "benzer platform olmanın yani CPU'nun aynı olmasının bariz bir avantajı var mı yoksa çok kayda değer bir faktör değil mi ya da oran nedir" gibi soruların yanıtlarını arıyorum. Sen; Speccy-CPC ve Atari-Amiga platformlarını iyi tanıyan birisi olarak bizi, varsa yaşanmış-test edilmiş ya da varsayımsal örneklerle bilgilendirebilir misin?

Detaylı yönlendirme için ikinize de teşekkür ederim.
Soruyu, gösterdiğiniz doğrultuda yanıtlamaya çalışayım...

Conversion sırasında, her iki sistemin de aynı işlemciyi kullanıyor olması avantaj sağlar diye bir kural yok. Çevirilecek oyunun tarzından tutun da, oyunun aktarılmak istendiği sistemin mimarisine kadar birçok parametre, bu sorunun yanıtını vermemizi güçleştiriyor. Hatta çoğu kez, ortak işlemci kullanımının pek de bir avantaj sağlamadığını söyleyebiliriz. Ref'in verdiği "Cobra" örneğinde olduğu üzere...

Okuyanlara faydalı olması açısından, teorik örnekler vermek yerine, Alcofribas'ın talebine uyup "yaşanmış örnekten" yola çıkmayı, birebir yaşadıklarımı anlatmayı tercih ederim. Core Design için yaptığım Amiga-to-Atari ST conversion projelerinde edindiğim tecrübe; 16-bit dünyasında yaşanan çevirim sürecinin, 8-bit'e oranla çok daha sıkıntılı olmasıydı. Her ne kadar aynı işlemciyi kullansalar da, Amiga ve Atari ST oyunlarının birbirlerine çevirimi sırasında yaşanan sorunlar maalesef programcılar için çıldırtıcı boyuttaydı. Her iki sistemin mimari farklılığı sebebiyle, M68000 kodu dışında neredeyse hiçbirşey ortak değildi!

Örneğin; Amiga için 4 kanal yazılan PCM tabanlı müziğin Atari ST'ye aktarımı tam anlamıyla kabustu. Eğer Atari ST'nin 3 kanal YM2149F çipi üzerinde sample çalmak isteniyorsa, bu iş için M68000'in extra iş yapması gerekiyordu, ki bu da oyunun genel performansını inanılmaz derecede düşürüyordu. Bu yüzden, Amiga için yazılan sample tabanlı müzikler, YM2149F'nin 3 kanal ton/gürültü üreteçlerine uygun olacak şekilde sıfırdan yazılıyordu. Bu da fazladan harcanan emek/zaman/bütçe demekti. - Kalitesi de cabası; beste aynı kalırken, tını çok farklı oluyordu.

Amiga'dan Atari ST'ye çevirim sırasında yaşanan sorunların sebepleri kısaca şöyleydi:

  • ST ailesinde hardware tabanlı sprite olmaması,
  • STE modellerine kadar piyasaya sürülen tüm ST'lerde blitter olmaması,
  • STE modelleri ile birlikte gelen blitter'ın Amiga'nın blitter'ından çok farklı çalışması - (CPU üzerinde mutlak otorite sağlayan ST blitter'ındaki "blit-mode" ile Amiga blitter'ındaki "blitter-nasty" [DMAF_BLITHOG] mode'larının cycle bazında uyumlu olmaması),
  • STE modellerine kadar piyasaya sürülen tüm ST'lerde PCM audio desteğinin olmaması,
  • Amiga işlemcisinin 7.14 MHz'de çalışırken, Atari ST işlemcisinin 8 MHz'de çalışması - (dolayısıyla, cycle bazlı hassas hesaplamaların birbirini tutmaması),
  • Amiga mimarisinde işlemcinin, DMA cycle'ları içerisinde en az önceliğe sahip birim olması (sıralamada blitter'ın ardından en sonda gelir!), Atari ST'de ise işlemcinin herşeyin üstünde olması,
  • Ve elbette, ekran adresleme yöntemlerinin farklılığından ortaya çıkan yatay/dikey boşluk miktarının uyumsuzluğu - (dolayısıyla, oyun tasarımını ve ekranda aktif olarak kullanılan alanı olumsuz yönde etkilemesi)

Özetle; "kabus" diyebiliriz ;)

NOT: Bazen, hem Amiga hem de Atari ST için piyasaya çıkacak oyunlar "bilinçli" olarak Atari ST'nin özelliklerine göre tasarlanıyor, tamamen ticari sebeplerden dolayı Amiga trick'lerinin kullanılmamasına çaba gösteriliyordu (bkz: "Heimdall". Bu oyunun sadece 1 MB Amiga'da çalışmasının asıl sebebi, 1 MB'lık Atari ST'lere göre tasarlanmış olmasıydı). Bazen de tam aksine, sırf Amiga'nın gücüne odaklı oyunlar tasarlanıyordu (bkz: Wolfchild). - O günlerde herşey, yapımcı firmanın keyfine/bütçesine kalmıştı...

Çevrimdışı witchdoktor

  • RAAT
  • Normalleşmiş Retroman
  • *
  • İleti: 757
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #7 : 12 Mayıs 2014, 15:06:21 »
Kusura bakmayın, biraz uzun bir yanıt oldu ama, sizin de göreceğiniz üzere Alcofribas’ın sorusu "ondan buna çevirim kolaydır, şundan buna çevirim zordur" türü kestirme yanıtlar verilemeyecek kadar karmaşık bir süreç…

Matahari 'baba' da konuya girdiği için şanslıyız, ortam şenlendi doğrusu :)

Alcofribas'ın mesajındaki ana fikri ben algıladım. Foruma teknik bir konu vesilesiyle güzel bir hareketlilik getirdi.
Sistemlerin bir 'Matahari' kadar olmasa da teknik olarak tartışılıp emülasyon / simülasyon / port edilebilirlik bazında zihin jimnastiği yapmamızın önünü açtı doğrusu.

En basitinden donanımsal sprite desteği sunan sistemlerde dahi sprite nitelik ve nicelikleri oldukça farklı. MSX sistemlerde sprite'lar 16x16 pixel, C64'de 24x21 pixel, Atari 800XL'de ise 8 (player) veya 2 (missile) pixel genişlikte (yükseklik değişken) olabiliyor.

Ekran modları, çözünürlük, bitmap yapısı, karakter tabanlı ekran modu desteği olup olmaması gibi önemli rol oynuyor. Speccy'nin ekran moduna benzer bir mod C64'de yer alırken (Hires bitmap modunda 320x200, her karakterin ön ve arkaplan rengi ayarlanabiliyor), CPU'su aynı olan Amstrad'da bulunmuyor. Atari ile C64 birbirine yakın sistemler olarak düşünülebilir ama C64'ün sprite'ları çok farklı yapıda, 800XL'in CPU'su da neredeyse 2 kat hızlı ve ANTIC çipi Amiga'daki copper çipine benzer bir işlevsellikte. Ayrıca C64'ün hem hires, hem de lowres grafiklerin kombine edilmesine imkan tanıyan 'multicolor character mode' gibi bir avantajı var ki birçok oyunda bu mod kullanılmıştır ve bildiğim kadarıyla hiçbir 8-bit'lik cihazda böyle bir mod bulunmuyor.

Bu arada Matahari'ye katılmadığım bir konu var. Hiçbir port kolay değildir ama klasik Atari 520ST donanımından Amiga 500'e yapılan port'ların daha kolay olacağı da aşikar.

Bu başlık altında cihazların port etme konusunda sorun yaratan marjinal özelliklerini de tartışabiliriz aslında...

Çevrimdışı memrah

  • RAAT
  • Retro Meraklısı
  • *
  • İleti: 188
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #8 : 12 Mayıs 2014, 16:44:11 »

Ama dediğin gibi bir video mod olabilseydi ve verimli çalışsaydı, muhakkak ki faydası da olurdu. Fakat bu oranı kestirmek pek kolay değil.



Bu modelin en guzel uygulamalarindan birisini Sam Coupé orneginde goruyoruz bence.
Sam Coupé'yi zamaninda Spectrum icin cok kaliteli yan birimler ureten (ki bunlarin basinda Disciple ve Plus D gelir) MGT (Miles Gordon Technology) firmasi uretmistir. Hem sahip olduklari ZX Spectrum bilgi birikimi, hem de piyasayi cok iyi tanimalarindan dolayi, 80'lerin son yillarinda kendi urettikleri bilgisayar olan Sam Coupé'ye ekran bellegi yapisi ZX Spectrum ile bire bir ayni olan bir MODE eklemislerdir. (Mode1, 256X192, non-linear, 16 renk) Bu mode sayesinde Sam Coupé icin Spectrum oyunlarini port etmek son derece kolay olmakla kalmamis, cogu oyun direkt modifiyesiz olarak Sam Coupe'de calismistir. Sam Coupe'yi ZX Spectrum ile uyumlu yapan en onemli unsurlar birebir ayni yapiya sahip olan mode1, ve ardindan da standart ZX Spectrum ROM'unu, ZX Spectrum'da varsayilan ROM alanina (0-16384) yukleyip calistirabilmesidir.

Eger uyumluluk veya emulasyon yerine. port etmeyi ele alirsak, bu durumda bir 48K Spectrum oyun kasetini alip direkt Sam Coupé'ye yuklemek yerine 128K RAM, 3 kanal AY ses kullanan bir programi ele almak daha uygun olabilir. Bu durumda cogu oyun icin port eden programcinin isi AY muzigini SAA1099'a cevirmek, RAM paging kodlarindaki bir kac port adresini bastan duzenlemek, ve timing ayarlamalari olacak. Cogu oyunu diyorum cunku Ref'in de dedigi gibi son derece hassas timing'ler ile calisan ve farkli ZX Spectrum modelleri arasinda bile uyumsuzluk gosterenbilen bazi programlar, Coupé'nin 6Mhz Z-80B'si ve ASIC'i ile nasil tepkiler verir ve cevrim ne kadar ugrastirir orasi mechul.
Bilmem yaniliyormuyum?

Çevrimdışı wizofwor

  • RAAT
  • Tedavideki Retromanik
  • *
  • İleti: 398
Ynt: Benzer Platformların Birbiri Üzerinde Emülasyonu
« Yanıtla #9 : 13 Mayıs 2014, 08:53:25 »
Bazen, hem Amiga hem de Atari ST için piyasaya çıkacak oyunlar "bilinçli" olarak Atari ST'nin özelliklerine göre tasarlanıyor, tamamen ticari sebeplerden dolayı Amiga trick'lerinin kullanılmamasına çaba gösteriliyordu (bkz: "Heimdall". Bu oyunun sadece 1 MB Amiga'da çalışmasının asıl sebebi, 1 MB'lık Atari ST'lere göre tasarlanmış olmasıydı). Bazen de tam aksine, sırf Amiga'nın gücüne odaklı oyunlar tasarlanıyordu (bkz: Wolfchild). - O günlerde herşey, yapımcı firmanın keyfine/bütçesine kalmıştı...

Ben de bunu ilk kim söyleyecek diye bekliyordum. Maliyetleri düşürmek için birbirine yakın özellikteki sistemleri bir grup olarak ele alarak, yazılımı ortak paydaya (= en düşük özelliklere) göre geliştirip o gruptaki tüm sistemlere port etmek sanıyorum çok yaygın bir pratikti. Pazar hakimiyeti sayesinde bu uygulamadan fazla etkilenmediğini zannettiğim C64'te sprite kullanmayan ve bu sayede performansı yerlerde sürünen speccy conversion'larını farkettiğimde çok şaşırmıştım. Tabi çocuk halimizle bunları fark etmiyorduk ve bu başarısız conversionları da zevkle oynuyorduk.
Gosub ile gidilen yerden goto ile dönen adam