Eski konsol oyunlarını Mac’te çalıştırmanın yolu artık yalnızca emülatörlerden geçmiyor. Giderek büyüyen decompilation ve static recompilation topluluğu; Nintendo 64, SNES, PlayStation ve Sega Genesis döneminden oyunları modern işletim sistemlerinde çalışan yerel uygulamalara dönüştürüyor.
Bu yöntem sayesinde oyunlar orijinal konsol donanımını yazılımla taklit eden klasik bir emülatör yerine doğrudan Mac için hazırlanmış yürütülebilir kod üzerinden çalışabiliyor. Star Fox 64, Super Mario 64, Streets of Rage 2 ve PlayStation sürümü Doom gibi oyunlar bu yöntemlerle macOS tarafına taşınmış durumda.
Decompilation ve static recompilation eski oyunları yerel Mac uygulamalarına dönüştürüyor
Emülasyon, bir oyunun geliştirildiği orijinal konsolun işlemcisini, belleğini, grafik donanımını ve diğer davranışlarını başka bir cihaz üzerinde yazılımla yeniden oluşturuyor. Oyun daha sonra bu sanal donanım katmanının üzerinde çalışıyor.

Modern emülatörler oldukça yüksek doğruluk seviyelerine ulaşsa da oyunla işletim sistemi arasında ek bir donanım taklit katmanı bulunuyor. Yerel portlarda ise oyun kodu modern platforma uyarlanarak doğrudan işletim sisteminde çalışan bir uygulama haline getiriliyor.
Bu çalışmaların temelinde iki farklı yöntem bulunuyor, decompilation ve static recompilation. İki yöntemin sonunda da klasik bir oyunun modern sistemde yerel olarak çalıştırılması mümkün ancak kaynak koda ulaşma biçimleri birbirinden farklı.
Decompilation yönteminde oyunun derlenmiş kodu tersine mühendislikle inceleniyor ve mümkün olduğunca orijinal davranışı üreten okunabilir kaynak kod yeniden oluşturuluyor.
Super Mario 64, Super Mario World ve Star Fox 64 gibi oyunlarda yıllar süren topluluk çalışmalarıyla oyunun fonksiyonları C veya C++ koduna dönüştürüldü. Ortaya çıkan kod daha sonra macOS, Windows ve Linux gibi modern platformlara uyarlanabiliyor.
Bu süreç yalnızca oyunun kaynak kodunu yeniden oluşturmakla bitmiyor. Nintendo 64 gibi eski bir konsolun 32 bit ve big-endian mimarisi ile günümüzdeki 64 bit little-endian bilgisayarların çalışma biçimleri arasında ciddi farklar bulunuyor.
Star Fox 64’ün decompilation tabanlı Starship portunun geliştirilmesi sırasında özellikle ses sistemi bu nedenle önemli sorunlardan biri oldu. Oyunun kodunun büyük bölümü 2024’ün başlarında çözülmüş olmasına rağmen ses sistemi Kasım 2024’e kadar yerel portta düzgün çalışmadı.
Decompilation’ın önemli avantajlarından biri geliştiricilerin oyunun okunabilir kaynak koduyla doğrudan çalışabilmesi. Starship ekibinin geliştirme sürecinde hata ayıklama, breakpoint kullanımı, değişiklikleri hızlı biçimde test etme ve oyun içindeki sistemleri belgeleme işlemleri bu kaynak kod üzerinden gerçekleştirildi. Dokuların, modellerin ve seslerin değiştirilmesi gibi modlama işlemleri de yerel portlarda daha kolay uygulanabiliyor.
Static recompilation ise oyunun kaynak kodunu baştan yeniden oluşturmak yerine konsoldaki mevcut makine kodunu modern bir platformun derleyebileceği forma çeviriyor. N64: Recompiled projesi Nintendo 64 ikili dosyalarındaki MIPS talimatlarını tek tek işleyerek C kodu üretiyor. Ortaya çıkan kod MSVC, GCC ve Clang gibi modern C derleyicileriyle derlenebiliyor.
Örneğin Nintendo 64 işlemcisindeki bir toplama talimatı karşılık gelen C işlemine çevriliyor, dallanma ve fonksiyon çağrıları da modern kod yapılarıyla yeniden oluşturuluyor.
N64: Recompiled bu işlemi oyun çalışırken anlık olarak yapmak yerine oyunun tamamı için önceden gerçekleştiriyor. Bu nedenle yöntem “static recompilation” olarak adlandırılıyor.
Static recompilation’ın dikkat çeken taraflarından biri orijinal oyunun düşük seviyeli davranışlarını koruyabilmesi. Star Fox 64 üzerinde hem decompilation hem static recompilation yöntemiyle çalışan geliştiriciler, static recompilation sürümünün orijinal oyundaki tanımsız davranışları dahi yeniden üretebildiğini ve ses sisteminin ilk aşamadan itibaren çalıştığını kaydetti.
Aynı projede kullanılan RT64 grafik sistemi geniş ekran düzeltmeleri, görüntü işleme ve kare interpolasyonu gibi modern özelliklerin eklenmesini de kolaylaştırıyor.
Ancak static recompilation da her açıdan üstün değil. Yeniden derlenen kod insan tarafından okunması için hazırlanmış klasik kaynak kod kadar kolay incelenemiyor.
Bellek düzeninin orijinal Nintendo 64 yapısına yakın tutulması bazı modlama işlemlerini kolaylaştırırken dizilerin boyutunu değiştirmek gibi başka değişiklikleri zorlaştırıyor.
Kodda yapılan değişikliklerden sonra uygulamanın yeniden derlenmesi gerekiyor. Decompilation tabanlı projelerde ise okunabilir kaynak kod, daha gelişmiş hata ayıklama ve geliştirme olanakları sunuyor.
Bu nedenle aynı oyun için iki farklı yöntemle hazırlanmış portlar da bulunabiliyor. Star Fox 64 bunun en açık örneklerinden biri. Harbour Masters tarafından geliştirilen Starship, oyunun decompilation çalışması üzerine kurulu yerel bir port olarak macOS’u destekliyor. Ayrı bir Starfox64Recomp projesi ise aynı oyunu N64: Recompiled kullanarak static recompilation yöntemiyle modern sistemlere taşıyor.
Starship’in macOS sürümünde Metal doğrudan destekleniyor ve varsayılan grafik altyapısı olarak kullanılabiliyor. OpenGL desteği de bulunuyor. Kullanıcı uygulamayı çalıştırdıktan sonra desteklenen kendi Star Fox 64 ROM dosyasını seçiyor ve gerekli oyun verileri bu dosyadan hazırlanıyor.
Buradaki ROM gereksinimi bu projelerin önemli noktalarından biri. Fan yapımı portların büyük bölümü oyunun telif hakkıyla korunan grafiklerini, müziklerini, seviyelerini ve diğer varlıklarını doğrudan dağıtmıyor.
Bunun yerine kullanıcıdan desteklenen orijinal oyun verisini sağlaması isteniyor. Starship açık biçimde telif hakkıyla korunan herhangi bir oyun varlığı içermediğini ve çalıştırmak için desteklenen bir Star Fox 64 kopyasının gerekli olduğunu belirtiyor.
Super Mario World’ün tersine mühendislikle hazırlanmış sürümü de benzer biçimde çalışıyor. Proje oyunun tamamını yeniden uyguluyor ancak seviyeler ve görseller gibi kaynakların çıkarılması için kullanıcıdan Super Mario World ROM’u istiyor. Kaynaklar çıkarıldıktan sonra ROM dosyasının sürekli olarak kullanılmasına gerek kalmıyor.
Sega Genesis döneminin Streets of Rage 2 oyunu için hazırlanan New Era projesinde de emülasyon yerine baştan tersine mühendislik uygulanmış bir yerel uygulama kullanılıyor.
macOS sürümü bulunan proje orijinal deneyimi koruyan Classic Mode’un yanında geniş ekran, ek zorluk seviyeleri, dört kişiye kadar çevrim içi ve yerel ortak oyun, tekrar sistemi ve mod desteği gibi özellikler ekliyor. Çalıştırmak için yine kullanıcının kendi Streets of Rage 2 ROM’una sahip olması gerekiyor.
PlayStation sürümü Doom da PsyDoom projesiyle modern Mac’lerde çalışıyor. PsyDoom’un güncel sürümlerinde macOS Game Mode desteği, DisplayLink üzerinden ekran senkronizasyonu, yüksek çözünürlüklü ekranlara yönelik düzeltmeler ve modern SDL sürümleri bulunuyor. Proje klasik oyunun yanında daha yüksek kare hızları ve modern görüntüleme seçenekleri gibi ek özellikler de sunuyor.
Super Mario 64 tarafında ise yıllar içinde birden fazla decompilation tabanlı port ortaya çıktı. Oyunun kaynak kodunu yeniden oluşturan temel proje Nintendo 64 sürümünün farklı bölgesel versiyonlarını kapsıyor.
Harbour Masters’ın Ghostship projesi de bu çalışmaları modern bir uygulamaya taşıyan seçenekler arasında bulunuyor ve Mac için özel düzeltmeler ile Metal tarafındaki sorunlara yönelik güncellemeler içeriyor.
Mac kullanıcıları için yalnızca konsol decompilation projeleri bulunmuyor. Mac Source Ports projesi, kaynak kodu açılmış veya topluluk tarafından modern sistemlere taşınmış çok sayıda eski oyunun Apple Silicon ve Intel Mac’ler için hazırlanmış sürümlerini bir araya getiriyor. Sitede mümkün olduğunda imzalanmış ve Apple tarafından notarize edilmiş Universal 2 uygulamalar sunuluyor.
Mac Source Ports kataloğunda Doom, Quake, Quake II, Doom 3, Postal, Fallout, Carmageddon, System Shock, Caesar 3, Heroes of Might and Magic II, Jedi Knight II: Jedi Outcast ve Jedi Academy gibi çok sayıda eski oyun için modern Mac sürümleri bulunuyor. Bunların bir bölümü tamamen açık kaynaklı oyunlardan oluşurken bazıları çalışmak için kullanıcının orijinal oyun dosyalarını sağlamasını gerektiriyor.
Ortaya çıkan yerel uygulamalar emülatörün sunduğu orijinal konsol donanımını birebir taklit etme yaklaşımından farklı olarak modern donanım özelliklerine doğrudan erişebiliyor.
Metal gibi güncel grafik API’lerinin kullanılması, yüksek çözünürlük, geniş ekran, modern kontrolcüler, yüksek yenileme hızları ve mod desteği gibi özelliklerin oyunun kendisine eklenmesine izin veriyor. Starship’in macOS’ta doğrudan Metal kullanması bu yapının çalışan örneklerinden biri.
Decompilation çalışmaları aylar hatta yıllar sürebilirken static recompilation araçları süreci önemli ölçüde kısaltabiliyor. N64: Recompiled bunun en yaygın örneklerinden biri haline geldi ve Nintendo 64 oyunlarının makine kodunu modern platformlarda derlenebilir C koduna dönüştüren ortak bir altyapı sunuyor. Böylece her oyun için orijinal konsolun tamamını yeniden taklit eden ayrı bir emülatör geliştirmek yerine oyunun kendisi modern sisteme taşınabiliyor.






