3 puan yazan GN⁺ 2024-05-09 | 1 yorum | WhatsApp'ta paylaş

NES Tetris’te yeni kod keşfedildi

  • Hacker’lar, oyun içinden NES Tetris’i yeniden programlamanın bir yolunu keşfetti
  • Bu yöntem, oyunun sonundaki çökmeden kaçınmak isteyen yüksek skor avcılarına yardımcı olabilir

Kod çalıştırma yöntemi

  • NES Tetris’in "kill screen" durumunu kullanarak belleği manipüle eden karmaşık bir yöntemle, değiştirilmemiş donanım ve kartuş üzerinde çalışan Tetris sürümüne yeni davranışlar kodlanabiliyor
  • Benzer "rastgele kod çalıştırma" glitch’leri daha önce Super Mario World, Paper Mario ve The Legend of Zelda: Ocarina of Time gibi oyunlarda da bulunmuştu
  • NES Tetris’e harici kod enjekte etmenin temel yöntemi en az 2021’den beri kamuya açık şekilde teorize ediliyordu
  • Bu yöntem, Tetris’in yüksek skor tablosunu makine kodu komutları olarak okumaya başlamasının ayrıntılarını açıklıyor

Kontrolcü portlarıyla eğlence

  • NES Tetris’teki çökme, oyunun skor işleyicisi kareler arasında yeni skoru hesaplamak için fazla uzun sürdüğünde meydana geliyor
  • Bu gecikme yaşandığında, kontrol kodunun bir kısmı yeni kare yazma rutini tarafından kesiliyor ve komutları aramak için istenmeyen bir RAM bölümüne atlıyor
  • Tetris, Japon sürüm konsol olan Famicom üzerinde çalışırken olası girdileri işleme biçimi sayesinde oyuncular bu atlamayı manipüle edebiliyor

Yüksek skor tablosunda kod yazmak

  • Displaced Gamers’ın atlama kontrol yönteminde oyuncunun üçüncü kontrolcüde "yukarı"yı, dördüncü kontrolcüde ise sağ, sol ve aşağıyı basılı tutması gerekiyor
  • Bu sayede atlama kodu, oyunun yüksek skor listesindeki isimleri ve skorları saklayan RAM alanına gönderiliyor; bu da oyuncunun doğrudan manipüle edebileceği daha geniş bir RAM yüzeyi sağlıyor
  • Yüksek skor tablosunun hedef bölümüne "(G" yerleştirmek, oyunu yüksek skor tablosunun başka bir alanına atlamaya zorlayabiliyor
  • Buradan itibaren isimleri ve skorları NES CPU için opcode olarak sırayla okumaya başlıyor
  • Ancak isim giriş alanında kullanılabilen semboller yalnızca 43 adet ve yüksek skorun bir parçası olabilecek rakamlar da sadece 10 adet olduğundan, mevcut NES opcode komutlarının yalnızca bir kısmı yüksek skor tablosuna "kodlanabiliyor"
  • Pil destekli kayıt sistemi olmadığı için hacker’ların, Tetris her başlatıldığında bu yüksek skorları manuel olarak elde edip karmaşık isimleri girmesi gerekiyor

GN⁺ görüşü

  • Tetris’in NES sürümünde böyle gizli bir işlevin bulunması şaşırtıcı. O dönemde keşfedilmemiş gibi görünüyor; onlarca yıl sonra ortaya çıkması daha da ilginç.
  • Famicom’un genişleme portunu kullanarak böyle bir hack’in mümkün olması da ilgi çekici. Nintendo’nun kasıtlı olarak eklediği bir özellik olmasa da, Famicom’un NES’e kıyasla daha zengin özellikler sunmasının bir avantajını gösteriyor gibi.
  • Bu tür bir hatayı kullanarak tam tersine çökmesini önleyecek kod yerleştirme fikri de oldukça yaratıcı. Teorik olarak oyun oynanışını sürdürmeyi mümkün kıldığından, yüksek skor denemelerinde büyük fayda sağlayabilir.
  • Ancak bu yöntemi kullanmak için oyunu her başlattığınızda karmaşık bir kurulum yapmanız gerekmesi pratik görünmüyor. Gerçek kullanım için biraz daha otomasyona ihtiyaç var gibi.
  • Sonuçta bu yöntem, oyunu keyif için oynayan genel kullanıcılardan ziyade yüksek skor peşindeki meraklılara veya programlamaya ilgi duyanlara hitap edecek gibi görünüyor. Yaygın kullanım için pek uygun durmuyor.

1 yorum

 
GN⁺ 2024-05-09
Hacker News görüşü

Özet:

  • Stross'un Accelerando romanında geçen, "uzay-zamanın dokusunu hackleyip onun altında ne olduğunu bulmak" ifadesinin nihai hackleme hedefi olduğu fikri, bu tür bir exploit'i hatırlatıyor.
  • Tamamen pratik bir amacı olmadan, sırf eğlence için bir şeyler yapma şeklindeki hacker ruhuna sahip olmadığım için biraz utanç duyuyorum.
  • NES kartuşları ROM'dan çalışır, ancak bu exploit CPU'nun en yüksek skor tablosunu kaydetmek için kullanılan RAM'e atlamasını sağlıyor.
  • Birinin Tetris içinde Doom çalıştırmasının ne kadar süreceğini merak ediyorum.
  • Factorio içinde bantlarla devasa bir bilgisayar yapıp bir segmentation fault tetikleyerek oyundan çıkmak istiyorum.
  • Zamanın gerçekten iyi boşa harcandığını düşünüyorum.
  • Eski oyunlarda ACE bulunması çok ilginç. Bunu birkaç yıl önce Super Mario World'de görmüş ve bunun nasıl mümkün olduğuna takılıp kalmıştım.
  • Gerçekten zeki insanların tamamen işe yaramaz şeylere bu kadar zaman ve emek harcamasını görmek hoşuma gidiyor.
  • Şu anda NES Tetris'e kod enjekte etmek için bir neden olmayabilir, ama mesele bu değil. Mesele, nelerin mümkün olduğunu ve eski kodla ilkel bilgisayarlara neler yaptırılabileceğini keşfetmek.
  • Tetris'in ancak bu kadar uzun zaman sonra kırılmış olmasına şaşırdım. Bu, oyunun sonunu/jeneriğini mümkün olan en kısa sürede çalıştırmayı hedefleyen yeni bir any% koşuları döneminin habercisi gibi.
  • Ocarina of Time'da yıllardır ACE exploit'leri vardı. Oyun belleği manipüle edilip belirli giriş warp'ları düzenlenerek oyun sadece birkaç dakikada "tamamlanmış" sayılacak kadar tamamen bozulmuştu.
  • En şaşırtıcı olan, insanların sadece birkaç düğme ve analog joystick kullanarak belleği elle düzenliyor olması.
  • Rastgele kod yürütmenin mümkün hale gelmesi, sonrasında onunla ne yapıldığından her zaman daha ilginç geliyor.
  • Oyunu disassemble edip tüm bunların ne zaman ve nerede yapılacağını, sonra da bir sonraki komutu girmek için nerede manipülasyon yapılabileceğini bulmak gerçekten saygı duyulacak bir adanmışlık düzeyi.
  • 2024'te NES/SNES'e zaman harcamak bana Nintendo'nun çocuklara etik dışı zihin kontrolü/psikolojik hileler uyguladığının kanıtı gibi geliyor.
  • Bu insanların yeteneği var ve bu projeyi seçmeleri için mantıklı bir neden varmış gibi görünmüyor.