- 1996'da piyasaya çıkan Nintendo 64 oyunları, emülasyon yerine PC'ye yerel portlar olarak yeniden derlenebiliyor; böylece ray tracing, ultrawide ve yüksek FPS gibi iyileştirmeler uygulanabiliyor
- GitHub'dan Mr-Wiseguy'ın yayımladığı N64Recomp ve Zelda64Recomp temel araçlar; Zelda64Recomp, The Legend of Zelda: Majora's Mask oyununu PC'ye portluyor
- Bu yöntem, 2020'de yayımlanan tamamen decompile edilmiş Super Mario 64 PC portundan farklı; ancak ikisi de PC'de yerel olarak çalışarak performansı ve efekt doğruluğunu artırabiliyor
- Manuel decompile işlemi bir veya daha fazla kişinin yıllarca çalışmasını gerektirirken, N64Recomp N64 oyunlarını PC'de daha hızlı çalıştırılabilir biçime dönüştürmeyi amaçlayan bir yaklaşım
- Çıktılar asset içermediği için oynamak için ROM gerekiyor; Banjo-Kazooie, Rocket Robot ve Superman 64 da çalıştırma örnekleri olarak anılıyor
N64 oyunlarını portlama yöntemindeki değişim
- 2024'te bile Nintendo 64'ün orijinal donanımı ve oyunları meraklı topluluğundan düzenli ilgi görmeye devam ediyor
- Gelişmiş N64 deneyiminin bir sonraki aşamasının emülasyon değil, yeniden derlenmiş PC portları olma olasılığı artıyor
- GitHub'dan Mr-Wiseguy, N64Recomp ve Zelda64Recomp araçlarını yayımladı
- N64Recomp, N64 oyunlarını PC'ye yerel portlar hâline getirmek için kullanılan temel araç
- Zelda64Recomp, The Legend of Zelda: Majora's Mask oyununu PC'ye portluyor ve N64Recomp'un grafik ve kullanım kolaylığı iyileştirmelerini uyguluyor
PC portlarında mümkün olan iyileştirmeler
- Yeniden derlenmiş PC portları, orijinal N64 oyunlarına PC ortamına özgü iyileştirmeler ekleyebiliyor
-
Gerçek ray tracing
- Kare hızı sınırının kaldırılması
- Uygun ultrawide desteği
- PC'de beklenen grafik ve kullanım kolaylığı iyileştirmeleri
- Majora's Mask, emülasyon yöntemi ile yerel PC yeniden derleme yönteminde ultrawide çalıştırma karşılaştırmasına örnek olarak ele alınıyor
-
Super Mario 64 PC portundan farkı
- 2020'de yayımlanan, tamamen decompile edilmiş Super Mario 64 PC portu, ray tracing ve tüm modellerin değiştirilmesi gibi özellikleri mümkün kıldı; modlar bugün de devam ediyor
- Yeniden derleme portları, SM64 PC portu gibi decompile portlardan üretim yöntemi açısından farklı
- Her iki yöntem de PC'de yerel olarak çalışıyor; orijinal donanıma kıyasla performansı ve efekt doğruluğunu artırırken emülasyondan beklenen PC tarzı iyileştirmeleri sunabiliyor
N64Recomp neden önemli?
- N64Recomp, yeniden derleme yaklaşımıyla emülasyonun ve yerel portların avantajlarını birlikte hedefleyen bir araç
- Bir N64 oyununu manuel olarak decompile etmek, bir veya daha fazla kişinin yıllarca çalışmasını gerektiriyor
- N64 oyunlarını daha verimli biçimde PC'de hızla çalıştırılabilir duruma getiren araçlar, koruma çalışmaları yürütenler için de faydalı olabilir
RT64 ve çalıştırma örnekleri
- Dario, N64Recomp'ta ve bazı N64 emülatörlerinde kullanılan RT64 eklentisini geliştiren kişi
- Dario'nun paylaşımına göre Wiseguy, tam decompile yapmadan N64 oyunlarının PC portlarını oluşturan bir araç üzerinde 1 yıl boyunca kapalı kapılar ardında çalıştı
- Çıktılar asset içermiyor; oynamak için yalnızca ROM gerekiyor
- Çalıştırma örnekleri olarak şu oyunlar anılıyor
- Banjo-Kazooie
- Rocket Robot
- Superman 64
N64 ekosistemindeki diğer hareketler
- N64 kütüphanesi ve orijinal donanım hayranlarına yönelik başka gelişmeler de sürüyor
- Açık kaynaklı SummerCart64, mevcut konsollar için bir flash cart ve 64DD desteğini de hayata geçirdi
- Gerçek donanımla uyumlu homebrew N64 oyunları ve ROM hack'leri de yayımlanmaya devam ediyor
- 30 dövüşçü sunan Smash Remix
- Mario 64 motorunu yeniden yazma projesi Peach's Fury
2 yorum
Hacker News yorumları
Bu aracı kullanmak için hâlâ önce ROM'u disassemble etmek ve yeniden derlenebilmesi için bolca açıklama eklemek gerekiyor
Aracın kendisi harika, ama herhangi bir ROM'u neredeyse tek tıkla bağımsız bir çalıştırılabilir dosyaya dönüştürdüğü yönündeki abartı bana fazla görünüyor
Gönderideki videoda adı verilmeyen bir N64 oyunu yeniden derlenip sorunsuz çalıştırılıyordu ve ayrıca açıklama eklemeye de gerek yok gibi görünüyordu
ROM kelimenin tam anlamıyla salt okunurdur; dolayısıyla ROM'u verip native port elde etmek mümkün olur
İkiliden ikiliye dönüşüm daha sezgisel olurdu; insan girdisine de gerek yok gibi
Gerçekten harika
N64 decompilation için oluşturulan çeşitli temel araçlar başka sistemlerin decompilation paketlerine yayılıyor
Yakın zamanda gördüğüm https://decomp.me/ birden çok sistem için ilgili SDK'lar ve donanım ön ayarlarıyla işbirlikçi decompilation desteği sunuyor
Önümüzdeki birkaç yılda daha fazla sistemde bu akımın ortaya çıkacağını düşünüyorum
Bu çıktığında görmüştüm; ROM hacking alanını takip etmeyen biri olarak, bu yaklaşımın neden bu kadar geç ortaya çıktığını merak ediyorum
Assembly komutlarını C'ye çevirip sonra yeniden derlemek, başta denenebilecek bariz bir yöntem gibi görünüyor; daha önce imkânsız olup şimdi mümkün kılan başka bir atılım mı vardı, merak ediyorum
GitHub deposuna hızlıca baktığımda, ışın izleme desteği için içeride rt64 kullanıyor gibi görünüyor(https://github.com/rt64/rt64)
rt64, GPU'yu emüle etmek için ubershader tekniğini kullanıyor; şu mükemmel yazı da ubershader'ın ne olduğunu, neden gerektiğini ve ne kadar karmaşık olduğunu açıklıyor: https://dolphin-emu.org/blog/2017/07/30/ubershaders/
Bir makine dilinden başka bir dile statik yeniden derleme yapmak, pratikte çok zor ile genel olarak imkânsız arasında bir yerde duran bir alan [1]
Böyle bir yeniden derlemeyi düzgün yapmak için, yeniden derlemeyi kolaylaştıran ikili tarafında da yardım gerekir [2]; bunun üstüne çalışır hâle getirmek için yamalar da gerekir [3]
Dinamik yeniden derlemede bu sorun yoktur; orijinal ikiliyi ve varlıkları, yani ROM'u verdiğinizde genelde emüle edilen yazılımı üretebilir
Bu çözümün ne kadar genel amaçlı olduğu konusunda çok kafa karışıklığı var
Yeniden derlemeyi veya port etmeyi çok daha kolaylaştıran iş yükü azaltımı açısından çok etkileyici ve değerli, ama geleneksel emülatörlere duyulan ihtiyacın yerini alamaz
[1]: https://cs.stackexchange.com/questions/155511/why-is-static-...
[2]: N64 oyun ikilileri, genel statik yeniden derlemeyi zorlaştıran çeşitli unsurlardan tesadüfen kaçındığı için bu yaklaşıma yardımcı olabilir; ama aslında emin değilim
[3]: Majora's Mask yeniden derleme deposunda çalışması için elle hazırlanmış çok sayıda yama var: https://github.com/Mr-Wiseguy/Zelda64Recomp
Jamulator bunu NES için daha 2013'te yapmıştı, ama kimse pek umursamamış gibi görünüyor
https://andrewkelley.me/post/jamulator.html
Android'de Windows programları çalıştıran Winlator da var
https://github.com/brunodev85/winlator
Peki yazıda bağlantısı verilen YouTube videosunda yapay zeka sesi mi kullanılıyor?
N64Recomp GitHub deposunda[0] şöyle yazıyor:
"This is not the first project that uses static recompilation on game console binaries. A well known example is jamulator, which targets NES binaries."
[0]: https://github.com/Mr-Wiseguy/N64Recomp
Böyle bir durumda yeniden derleme işi sadece karmaşıklaştırır, pek büyük avantaj sağlamaz
N64 sabit donanım olduğu için biraz daha kolay
Yine de bu proje hâlâ RDP için emülasyon kullanıyor
Üretilen RSP mikrokodunu nasıl ele aldıklarını bilmiyorum; belki de hiç ele almıyorlardır
Birçok oyun sadece resmi kütüphaneyi kullanıyordu
Jamulator Zelda için benzer iyileştirmelerle birlikte çıksaydı çok daha popüler olurdu
İlgi, yöntemin kendisinden çok artık onunla neler yapılabileceğinden geliyor gibi
Videonun anlatımını da sadece Nerrel adlı gerçek bir kişi yapmış
Günümüzde yapay zeka seslerinin çok iyi hâle gelmesi, beklediğimiz şekilde konuşmayan birinden yapay zeka diye şüphelenmemize yol açıyor; bu da ilginç anlamda epey şaşırtıcı
Anlatımı zaten çok düz olduğu için eskiden beri yapay zeka gibi duyuluyordu; bunun mizahla karışan hâlini seviyorum
Tüm oyun çalıştırılabilir dosyalarının WebAssembly gibi işletim sisteminden bağımsız olması güzel olurdu
Örneğin GameAssembly gibi bir şey
Artık yeni macOS'te 32 bit oyunlar oynanamıyor, Wine'da da 32 bit Windows oyunları çalışmıyor
Wine/Crossover'da düzgün çalıştırılabilecek 64 bit
.exedosyası bulmak da neredeyse imkânsızKonsollar söz konusu olduğunda, özellikle eski oyunlar ve platforma özel yapımlar çoğu zaman çok düşük seviyeli GPU uygulama ayrıntılarına dayanır
Daha eski konsollarda, basit giriş/çıkış dışında önemli işler yapan ek özel çipler de vardı
Örneğin SNES'in ses çipi, CPU ve GPU ile paralel olarak kendi küçük programını çalıştıran tamamen bağımsız bir CPU'ydu
Elbette bundan sonraki tüm oyun geliştirmelerinde üst düzey bir sanal makineyi zorunlu kılabilirsiniz, ama konsol donanım özelliklerinin sabit olduğu düşünüldüğünde, en yeni grafiklerden yararlanmak isteyen oyunlar için rekabetçi olmayacaktır
Debian'da şunu çalıştırmam gerekiyordu
dpkg --add-architecture i386 && apt-get updateSonra
wine32paketini kurmak yeterliOyunların grafik API'si, pencere API'si, giriş API'si, ses API'si, disk API'si gibi çeşitli API'lere ihtiyacı var
Bazen hile önleme veya kopya koruma işlevleri yüzünden çekirdek modülleri de gerekiyor
Üzücü olan, açık kaynak işletim sistemlerinin geliştiricilerin kodu bir kez yazıp test ederek her yerde çalıştırabilmesi için ortak bir API kümesi sunmaya çalışmaması
Flatpak var, ama anladığım kadarıyla bir API kümesi sunmaktan ziyade, Linux dağıtımını bir sanal makinenin içine, belirtim veya dokümantasyon olmadan paketlemeye daha yakın
Çirkin ve Linux olmayan küçük işletim sistemleriyle de uyumlu değil
M1 mini'de GTA IV çalıştırdım
PlayOnMac'in kurduğu 32 bit Wine sürümünün içinde bir tür "32 on 64" emülasyonu var gibi, ama araması çok zor olduğu için gerçekte nasıl çalıştığını bilmiyorum
Mac'in eski Mac programlarına kıyasla eski Windows programlarıyla daha uyumlu olması ilginç
JVM olmasaydı Minecraft'ın Linux veya BSD türevlerini destekleyip desteklemeyeceği şüpheli
JVM sürümü olmayan Bedrock Edition Windows'u, konsolları ve telefonları destekliyor; ama açıkça mümkün olmasına rağmen macOS'i desteklemiyor
Bunun sonunda Linux’ta da çalışıp, çok düşük donanımlı taşınabilir cihazlarda N64 oyunlarını kararlı biçimde oynatabilmesi güzel olurdu.
N64, emülasyonunun zor olmasıyla kötü ünlü ama platform için native build yapılırsa performans sorunu ortadan kalkar.
Örneği burada görebilirsiniz: https://github.com/Mr-Wiseguy/Zelda64Recomp?tab=readme-ov-fi...
N64 emülasyonunun ayrıntılarını pek bilmiyorum ama 2010’ların başından beri N64 emülatörlerini kusursuz çalıştırıyorum.
Çoğunlukla büyük klasik oyunları oynadığım için daha niş oyunların performansını pek bilmiyorum.
Yaklaşık bir saat oynadım, sorun yaşamadım.
Kendim test ettim.
Bu, GoldenEye gibi oyunlarda oldukça faydalı olabilir.
Garip joystick girişini varsaydığı için PC’de oynaması zor; diğer FPS’ler gibi normal fare davranışına sahip native bir GoldenEye portu olsa harika olurdu.
Nişan almanın mod değiştirme biçimi ve imlecin hareket edip tekrar merkeze dönmesi için geçen süre, oyunun eğlenceli kısmı.
PC FPS’leri gibi koşarken serbest nişan mümkün olursa, senaryo bu varsayıma göre tasarlanmış olduğu için bence oyunu bozar.
Nerede durup nişan alacağını seçmek ve nişan alırken soğukkanlı kalmak işin cazibesi.
Yine de mod değiştirme korunup fare 1) çubuğun sağ-sol hareketi gibi Bond’u döndürse ve 2) yalnızca R’ye basılıp “nişan modu”ndayken imleci kontrol etse eğlenceli olabilir.
Açıkçası shooter’ların hepsinin doğrudan Quake tarzı WASD+fare serbest nişana geçmesi beni üzüyor.
Mod değiştirme biçimi GoldenEye’da sevdiğim o fiziksel hissi veriyor.
https://github.com/Graslu/1964GEPD/releases/tag/latest
Perfect Dark’ta da çalışıyor.
Oldukça ilginç; bunun MiSTer’da düzgün çalışan bir Conker sürümüne yol açıp açamayacağını merak ediyorum.
Örneğin bunu decompile işlemine yardımcı olarak kullanıp birisi yamalı bir sürüm yapabilir mi?
Emülatöre kıyasla avantajının ne olduğunu merak ediyorum.
Sonuçta önceden çevrilmiş bir emülatör biçimi değil mi?
Bu yaklaşım geçmişte Bleem gibi şeylerde de vardı; performans açısından avantajlı olabilir ama modern PC’lerde iyi bir emülatör genelde gayet iyi çalışıyor.
https://en.wikipedia.org/wiki/Bleem!
N64 emülatörlerinin hedefi genelde orijinal konsolun davranışını doğru biçimde yeniden üretmektir.
Buna karşılık SM64, OOT, MM’i 60 fps, widescreen, texture pack, randomizer gibi çeşitli grafik iyileştirmeleriyle oynamak isteyen çok kişi var.
Bu kişiler için bu oyunların aslında N64’te çalışmış olması fiilen önemli değil.
Hatta daha çok bir engel.
N64’ün grafik pipeline’ını emüle etmek zahmetli ve modern iyileştirmelerin önüne aktif biçimde geçiyor.
Bu proje daha çok oyunun kendisini modern biçimde ele almaya ve N64 merkezli unsurları denklemden tamamen çıkarmaya odaklanmış görünüyor.
Günümüzde bilgisayarlar N64’ten çok daha hızlı olduğu için fark göze çarpmayabilir.
Genel emülatörler önceden mi derler, yoksa JIT mi kullanır?
Değilse neden yapmadıklarını merak ediyorum.
Bu yaklaşım, yani önceden derleme, büyük bir avantaja sahip gibi görünüyor.
Ancak TeknoParrot böyle çalışmıyorsa önceden çeviri konusunda pek bilgim yok.
Örneğin TeknoParrot ile ELF binary kullanan Linux arcade oyunlarını Windows’ta çalıştırabilirsiniz; ama mimari aynı olduğu için buna her iki durumda da emülasyon demezdim.
Yorumlayarak yürütme, makinenin çeşitli parçalarının durumunu temsil eden bir sanal makine yazıp, farklı doğruluk seviyeleriyle bu durumu değiştiren komutları çalıştırma yöntemidir.
Nerdlerin gücü adına! Emülatörlere JIT derleyici eklemenin ötesine geçildi; artık binary lifting ile C'ye dönüştürüp yeniden derlemek bile mümkün