1 puan yazan GN⁺ 2024-04-23 | 1 yorum | WhatsApp'ta paylaş
  • Super Nintendo kartuşları basit bir depolama ortamı değil; CIC kopya koruması, SRAM ve yardımcı işlemcileri birlikte barındırarak konsolun işlevlerini genişleten bir donanımdı
  • ROM kapasitesi o dönemde bayt değil bit cinsinden tanıtılıyordu; incelenen 3.378 oyun içinde Star Ocean ve Tales of Phantasia 48Mb, Super Mario World ise 4Mb idi
  • Kayıt özelliği, piliyle korunmuş SRAM'e dayanıyordu; Zelda III PCB'si gibi örneklerde ROM/RAM erişimini yöneten MAD-1 adres çözücüsü de bulunuyordu
  • Toplam 13 tür yardımcı çip, 72 oyunda kullanıldı ve CPU hızlandırma, sprite işleme, sıkıştırma açma, matematik işlemleri, poligon rasterizasyonu gibi görevleri kartuş tarafında üstlendi
  • Bu çipler o dönemde oyunların görsel ve teknik ifade gücünü ciddi biçimde genişletti, ancak S-DD1'in iç yapısı bilinmediği için grafik paketi gerektiren örneklerde olduğu gibi emülatör uygulamaları için uzun süreli bir tersine mühendislik yükü bıraktı

Kartuşun temel yapısı: CIC, ROM, SRAM

  • Super Nintendo kartuşları, yalnızca ROM çipindeki komutları ve varlıkları değil; CIC kopya koruma çipi, SRAM ve yardımcı işlemcileri de barındırabiliyordu
  • CIC, konsol tarafındaki çip ile kartuş tarafındaki çipin lockstep halinde iletişim kurmasıyla çalışır
    • Konsoldaki CIC anormal bir durum algılarsa tüm işlemcileri sıfırlar
    • Her SNES kartuşunda CIC yoktur; resmî olmayan oyun Super 3D Noah's Ark'ta CIC bulunmaz
    • Super 3D Noah's Ark'ta önce oyun konsola takılır, ardından üstüne resmî bir kartuş takılır; Noah's tarafı, resmî oyunun CIC'ini veri yolu hatlarına iletir
  • ROM kapasitesi o dönemde bayt yerine bit cinsinden belirtiliyordu
    • Zelda III, 1.048.576 bayt yerine 8Mb ROM olarak tanıtıldı
    • İncelenen liste, ABD/Japonya/Avrupa ölçütüne göre 3.378 oyunu kapsıyor
    • Star Ocean ve Tales of Phantasia, 48Mb yani 6.291.456 bayt ile en büyükler arasındaydı
    • Super Mario World, 4Mb yani 524.288 bayt ROM kullanıyordu
  • Kayıt özelliği olan bazı oyunlar, gücünü pilden alan SRAM kullanıyordu
    • Konsol kapandığında SRAM, güç tüketimini azaltmak için düşük güç moduna geçer
    • Zelda III PCB'sinde U4'te CIC (D413A), U1'de 0x80000 ROM (524.288 bayt), U2'de LH5268AF-10TLL 64Kbit SRAM (8KiB), U3'te MAD-1 bellek adres çözücüsü bulunur

Yardımcı çiplerin kapsamı ve SA-1

  • En ünlü yardımcı işlemci, 1993'te Star Fox'ta kullanılan Super FX olsa da, ondan önce de EC çipleri kullanılmıştı
  • Genel olarak 13 tür EC, 72 oyunda kullanıldı
  • SA-1, yani Super Accelerator 1, 34 kartuşta yer alan temsilî bir yardımcı çiptir
    • SNES ana CPU'suyla aynı 65C816 CPU'dur, ancak 4 kat hızlı şekilde 10,74MHz'de çalışır
    • 2KiB SRAM ve entegre CIC içerir
    • Super Mario RPG PCB'sinde ayrı bir CIC yoktur; U3'te SA-1, U1'de ROM, U2'de ise entegre kod çözücülü SRAM bulunur
    • SA-1, ayrı bir osilatör olmadan kartuş portundaki System Master clock'u alır ve içeride ikiye bölerek 21.4772700MHz / 2 = 10,74MHz hızında çalışır
  • SA-1 başlangıçta stop durumundadır; SNES CPU'su Reset Vector'ü oluşturur ve SA-1'i devam ettirir
    • SA-1'in başlangıç Instruction Pointer değeri, özel Reset Vector'den alınır
    • Çalışma modları üç tanedir: Accelerator, Parallel Processing, Mixed Processing
    • En güçlü yapılandırmada SA-1 CPU ve Super NES CPU aynı anda çalışarak Super Accelerator System performansını mevcut Super NES'e göre 5 kata çıkarır
  • Geliştirilmiş işlem gücü; PPU'nun sunduğu 128 sprite'ın tamamının animasyonu ve çarpışma algılaması, ayrıca sprite'ların gerçek zamanlı döndürülüp ölçeklendirilerek PPU VRAM'ine yazılmasında kullanıldı
    • Nintendo SA-1 demo kartuşu bu iyileştirmeleri gösterir
    • Retro oyun topluluğu, Eliminating slowdown in Super Mario World, Gradius III slowdown removal, Contra III slowdown removal gibi projelerle mevcut oyunlardaki slowdown'u azalttı
    • Oyunları SA-1'e dönüştürmek için özellikle RAM/ROM erişimlerinin yeniden eşlenmesi gerekir; bu epey karmaşık görünür ve SA-1 belgelerinde “SNES ve SA-1 aynı bellek eşlemesini kullanır” denmesi bazı soru işaretleri yaratır
    • 2019'da SA-1 Collection Project ile daha fazla SNES oyununu otomatik yeniden eşleyip SA-1'e dönüştürme çalışmaları sürüyordu

Grafik, sıkıştırma ve matematik yardımcı çipleri

  • CX4, Capcom'un çipidir ve Mega Man X2 ile Mega Man X3'ü çalıştırır
    • 3D tel kafes çizimi, çeşitli matematik işlemleri, sprite'ları ölçekleyip döndürdükten sonra VRAM'e yazma gibi işleri yapabilir
    • Örnekler MMX2'nin intro ve boss savaşı bölümlerinde görülebilir
    • CX4 yalnızca tel kafes değil; sprite functions, propulsion, vector, triangle, trigonometric functions, result tables, coordinate transform functions da sağlar ve MMX2 ile MMX3'te tüm sprite'ları işler
    • Mega Man X2 PCB'sinde U4'te CIC, U1'de 8M ROM, U2'de ek ROM, U3'te CX4, X1'de 20MHz osilatör bulunur
  • S-DD1, sprite sıkıştırma açma çipidir ve verileri doğrudan PPU VRAM'ine besleyebilir
    • Star Ocean ve Street Fighter Alpha 2 olmak üzere iki oyunda kullanıldı
    • Street Fighter Alpha 2'de round başlamadan önce görülen boş ekranın S-DD1 kaynaklı olduğu söylentisi vardı; ancak Modern Vintage Gamer'ın açıklamasına göre asıl sorun, ses örneklerinin DSP RAM'ine aktarılmasıydı
    • Street Fighter Alpha 2 PCB'sinde U1'de 4MiB ROM ve varlıkları anlık olarak açan S-DD1 bulunur; CIC, S-DD1 içine entegre edildiği için ayrı çip yoktur
  • DSP-1, DSP ailesindeki 19 destekli oyunun 16'sında yer alır; Super Mario Kart ve Pilotwings'te kullanılmıştır
    • Adındaki DSP, Digital Signal Processor anlamına gelse de, tipik bir DSP gibi sürekli sinyal işlemediği için bu adlandırmanın hatalı olduğu düşünülür
    • Geliştirici kılavuzuna göre DSP-1, blocking mode ile çalışır; yani DSP veriyi işlerken Super NES CPU'su bekler
    • Hızlı 16 bit çarpma, ters alma, sin/cos projection, vector size, rotation gibi komutlar sağlar; bu da HDMA programlaması ve Mode 7'deki 3D görünüm güncellemeleri için önemliydi
    • Super Mario Kart PCB'sinde harici CIC, ROM, kayıt için SRAM, MAD-1 adres çözücüsü, pil ve 8MHz çalışma için osilatör bulunur
    • DSP-1, DSP-1a ve DSP-1b sürümleri hata düzeltmeleri ve üretim iyileştirmeleri getirdi, ancak davranışları biraz farklılaştı; bunun sonucu Pilotwings demosunda uçağın yere çarpması görüldü
  • Bunun dışındaki daha küçük çipler de belirli oyunlarda sınırlı biçimde kullanıldı
    • DSP-2 yalnızca Dungeon Master'da Atari ST rutinlerinin dönüşümü için kullanıldı; esas olarak sprite ölçeklemeye yardım ettiği düşünülüyor
    • DSP-3 yalnızca SD Gundam GX'te kullanıldı
    • DSP-4, Top Gear 3000 ve The Planet's Champ TG 3000 adlı iki oyunda kullanıldı
    • OBC-1 yalnızca Metal Combat: Falcon's Revenge'de kullanıldı; sprite manipülasyonu için olduğu söylense de nesdev.org'da bu konuda tartışma var
    • S-RTC, yalnızca Daikaijuu Monogatari II'de gerçek zamanlı saati izleyen bir çiptir; Hudson Soft geliştiricisinin neden gerçek zaman takibine ihtiyaç duyduğu net değildir
    • Epson'un SPC7110'u, Tengai Makyou Zero, Momotaro Dentetsu Happy ve Super Power League 4'te kullanılan bir veri sıkıştırma açma çipidir; Super Power League 4'te ayrıca gerçek zamanlı saat işlevi de bulunur
    • SETA Corporation'ın ST ailesinin oyun yapay zekasını geliştirmeyi hedeflediği söylenir; ST-010 yalnızca Exhaust Heat 2'de, ST-011 yalnızca Hayazashi Nidan: Morita Shougi'de, ST-018 ise yalnızca Hayazashi Nidan Morita Shougi 2'de kullanıldı
    • ST-018, komutları dahili ROM'unda tutan ARM CPU tabanlı bir çip gibi görünür

Super FX ailesi ve topluluk modları

  • GSU-1, Star Fox, Stunt Race FX, Vortex, Dirt Racer ve Dirt Trax FX olmak üzere beş oyunda kullanıldı
    • Yardımcı çipler arasında en iyi belgelenmiş olanlardan biridir; wiki, eğitimler ve Super Nintendo Developer Manual Book II kaynakları vardır
    • 10,74MHz'de çalışır ve 21,47MHz master clock'u içeride ikiye böler
    • Dahili 512 baytlık instruction cache sayesinde SNES CPU'sunu aç bırakmadan çalışabilir
    • İşini bitirdiğinde konsol CPU'su olan C-CPU'ya interrupt gönderebilir
  • SNES'in PPU1/PPU2'si tilemap ve sprite odaklıyken, Super FX piksel render etme ve poligon rasterizasyonunda güçlüdür
    • Genellikle kartuş üzerindeki framebuffer'a render eder
    • Framebuffer içeriği VSYNC sırasında VRAM'e aktarılır
    • Star Fox PCB'sinde U3'te GSU-1, U5'te CIC, U4'te 74LS139, U1'de ROM bulunur; U2'de ise pilsiz 32KiB SRAM vardır
    • Bu SRAM, savegame için değil, kısmen Super FX framebuffer'ını tutmak için kullanılır
  • SNES topluluğu SA-1'de olduğu gibi GSU-1'e de zaman ayırıyor; Project Super FX gibi projelerle eski oyunları mümkün olduğunca iyileştirmeye çalışıyor
  • GSU-2, 21,47MHz tam hızda çalışan bir GSU-1'dir ve Super Mario World 2: Yoshi's Island, DOOM ve Winter Gold olmak üzere üç oyunda kullanıldı
    • Topluluk içinde, Star Fox kartuşundaki GSU-1'i GSU-2 ile değiştirip performans artışını gösteren deneyler yapıldı
    • SNES sürümü DOOM'un geliştiricisi Randy Linden, ne GSU çipi belgelerine ne de DOOM kaynak koduna sahip olmadan her şeyi tersine mühendislikle çözdü
    • SNES sürümü DOOM, PC seviyelerini kullanabilen tek konsol portuydu; diğer konsollarda geometrinin sadeleştirilmesi gerekmişti
    • Yoshi's Island, GSU-2'yi çoğunlukla sprite ölçekleme ve esnetme için kullanır, ardından işlenmiş sprite'ları tekrar PPU VRAM'ine yazar
    • Yoshi's Island PCB'sinde pil bulunur; bu nedenle SRAM hem framebuffer hem de kayıt durumları için kullanılır
    • DOOM, 32MHz'e overclock edildiğinde kare hızı 10-11fps'den 14-15fps'ye çıkmıştır
  • MSU-1, gerçekte piyasaya sürülen bir kartuş çipi değildir
    • Near tarafından, SNES'te CD kalitesinde ses akışı, FMV oynatma ve 4GB'a kadar RAM erişimi sağlamak amacıyla tasarlanmıştır
    • Hedefi oyun modlama topluluğudur; sonuçlar Enhanced Zelda III: A link to the past ve Enhanced Another World projelerinde görülebilir

Emülatör uygulamalarına bıraktığı yük

  • Yardımcı çipler oyuncu deneyimini ciddi ölçüde iyileştirip yayıncı maliyetlerini düşürse de, sonrasında emülatör geliştiricileri için zorlu bir sorun haline geldi
  • Sıradışı EC'lere dayanan bazı oyunlar ancak 2012'de düzgün biçimde emüle edilebildi
  • Başlangıçta S-DD1'in iç yapısı bilinmediği için Street Fighter Alpha 2 gibi oyunlar, önceden açılmış sprite graphic pack'leri gerektiren bir yöntemle “emüle” edildi
  • Çiplerin uygulanması için ciddi ölçüde tersine mühendislik gerekti
    • Bazı çiplerde işlevler hardcode edildiği için de-capping gerekmişti
    • ARM tabanlı çiplerde olduğu gibi komutları dahili ROM'da saklayan çiplerde, emülatörün BIOS dosyası sağlaması gerekir
  • 2020 itibarıyla bile en nadir çiplerden bazılarının emülasyonu hâlâ tamamlanmamıştı

1 yorum

 
GN⁺ 2024-04-23
Hacker News yorumları
  • Eski konsolların kartuşlarının PC’deki PCI genişleme kartlarıyla neredeyse aynı olması gerçekten hoşuma gidiyor
    Doğrudan veriyoluna bağlanıyorlardı ve fiilen her şeyi yapabiliyorlardı; ne yazık ki bu uygulama GameBoy Advance’ten sonra sona erdi, Nintendo DS’ten itibaren ise kartuşlar daha çok saf veri depolama aygıtlarına yaklaştı
    Bu yüzden günümüzde ışın izleme çipihttps://www.youtube.com/watch?v=2jee4tlakqo gibi tuhaf modern genişletmeler de mümkün, ayrıca fiziksel çip olarak hiç var olmayıp yalnızca yazılım emülatörlerinde var gibi görünen MSU1 genişletme çipi de mümkün hale geldi
    Teorik olarak üretimi mümkün olduğuna göre Road Blaster’ın gerçek bir SNES kartuşuhttps://www.youtube.com/watch?v=BvIXUOr4yxU da yapılabilir
    Yazının kendisinde listede “Street Fighter Zero 2” USA ROM olarak geçiyor; oysa Street Fighter Zero, Japonya’da Street Fighter Alpha için kullanılan addı, dolayısıyla Zero 2’nin Alpha 2’nin Japonya sürümü olması gerekir

    • Tam anlamıyla çılgın bir NES ters emülasyonu da var
      Burada kartuş modern bir bilgisayarla değiştirildiğinde garip şeyler oluyor. Örneğin NES üzerinden mizah hakkında fiilen bir PowerPoint sunumu yapmak gibi
      https://www.youtube.com/watch?v=ar9WRwCiSr0
    • Tamamen doğru değil. Bazı DS kartuşlarında en azından kızılötesi alıcı vardı. Örneğin Pokemon HeartGold böyleydi; Learn with Pokémon: Typing Adventure’ın ise kart üzerinden Bluetooth bile eklediğini biliyorum
      Yani işlev ekleme konusunda sınırlı bir yetenek vardı; ek bir CPU kadar ilginç olmasa da GBA’da da bu kadar inanılmaz işler yapılan çok fazla örnek yoktu
    • Pokemon SoulSilver gibi kartuşun içinde kızılötesi verici bulunan oyunların bunu nasıl yapabildiğini merak ettiriyor
      Bunun belirli kullanım senaryoları için mi planlandığını, yoksa sınırlı kartuş genişleme bileşenleri için ayrı bir kanal mı olduğunu bilmek isterdim
    • Modern SNES flash kartuşlarının MSU1’i destekleyebildiğini biliyorum. MiSTer FPGA da MSU1’i destekliyor
    • Street Fighter yerelleştirmesi berbat. Aynı adı neden farklı karakterlere değiştirip yapıştırdıklarını bilmiyorum
  • Burada atlanan bir başka ayrıntı da genişletme çipi olmayan kartuşların bile farklı performans sınıflarına sahip olması
    SNES CPU’su nominal olarak 3,58 MHz’de çalışıyordu, ama gerçekten o hızda çalışması için “FastROM” kartuş takılı olmalıydı. Nintendo yayıncılara daha ucuz bir “SlowROM” biçimi de sunuyordu; bu durumda CPU 2,68 MHz’e kadar düşüyordu
    Gecikmeyi azaltmak için SlowROM oyunlarını FastROM oyunlarına dönüştüren yamalar geliştiren modder toplulukları da var. Bazı SlowROM oyunlarının aslında FastROM için geliştirilip, yayıncının maliyet düşürme talebi nedeniyle son anda SlowROM’a çevrilmiş gibi göründüğünü okumuştum

    • Out Of This World, geliştiricinin FastROM kullanımına izin alamadığı bir SlowROM/FastROM örneği
      Yanlış hatırlamıyorsam o durumda SlowROM kullanmanın kartuş başına tam 50 sent tasarruf sağladığını iddia etmişti
    • SNES’te şaşırtıcı olan şey, dahili RAM’e bile nominal 3,58 MHz saat hızında erişilememesi ve o durumda bile sistemin yavaşlaması
      Rakibi TurboGrafx-16 genelde 7 MHz’de çalışıyordu ve benzer bellek zamanlamaları gerektiren 6502 ailesi bir CPU kullanıyordu; SNES’in hız konusunda neden bu kadar cimri olduğunu hep kafa karıştırıcı bulmuşumdur
      Yine de TurboGrafx Batı’da başarısız oldu, SNES ise dünya çapında başarılı oldu; demek ki doğru yaptığı bir şeyler vardı
    • Bunun Nintendo’nun keyfi olarak oluşturduğu bir lisans ayrımı mı, yoksa kartuşların veri okuma hızında gerçekten fark mı olduğu hep merakımı çekmiştir
      Sonuçta tüm SNES kartuşlarında mask ROM vardı
    • Donanımsal bir nedeni mi vardı, yoksa Nintendo müşterileri kazıklayıp oyuncuların hayatını daha kötü hale mi getiriyordu, merak ediyorum
    • Yazıda LoROM ve HiROM’dan bahsedildiğine göre muhtemelen aynı şeyden söz ediyor
  • Geliştiricilerin bu tür ayrıntıları YouTube vlog’u yapmak yerine yazı formatında bloglarında paylaşmaya devam etmelerini isterdim
    Birkaç KB içinde çok fazla ayrıntı sığdırılabiliyor
    “Super Mario World” hâlâ en büyük başyapıtlardan biri. İnanılmaz karakterleri, sprite’ları ve bölümleri yalnızca 360 KB içine sığdırmıştı

    • Sitede verilen dosya boyutu yanlış. Super Mario World 512 KB’dir; sondaki padding atılırsa 508 KB olur
      Ancak ZIP formatında sıkıştırıldığında yaklaşık 360 KB olur
    • Super Mario World de harika ama bence SNES’in en iyi oyunu Donkey Kong Country 2
      Harika müzik, hassas kontroller, çekici grafikler; bir platform oyununun her yönünü doğru yapmıştı
      Terranigma da neredeyse aynı seviyede ve benim sıralamamda Super Mario World muhtemelen 3. sırada olur
    • Geliştiricilerin yazı yerine YouTube’u seçmesinin büyük nedenlerinden biri, birçok durumda video içeriği çalmanın daha zor olması bence
      Metin kazınıp birkaç kelimesi değiştirilerek SEO reklam sitelerinde yeniden kullanılabiliyor
    • Atari VCS’in “Pitfall!”ı, 4 KB kartuş içine tamamen farklı 255 oyun ekranı sığdırmıştı :)
  • Kartuşa “genişletme çipi” koyabilme yeteneği modern teknolojiyle kullanılsa neler yapılabileceğini merak ediyorum
    SuperFX’in kendi framebuffer’ı olduğu ve bunun tamamını VRAM’e kopyaladığı yazıyor
    O halde teknik olarak kartuşa saçma derecede güçlü bir SoC koyup, bununla SNES çözünürlüğünde modern grafikler render edip sonuç kareyi SNES VRAM’ine kopyalamak da mümkün mü?
    Sınırın nerede olduğunu merak ediyorum

  • “SNES için DOOM’un yazarı Randy Linden’ın GSU çip dokümantasyonuna da DOOM kaynak koduna da erişimi yoktu. Hepsini tersine mühendislikle çözdü” kısmı teknik olarak etkileyici, ama bunu neden yapmak zorunda kaldığını merak ediyorum

    • Doom Wiki’de ayrıntılar var: https://doomwiki.org/wiki/Super_NES
      Portun tek programcısı olan Randy Linden oyundan çok etkilenmişti ve başlangıçta Doom’u Super NES’e kendi başına port etmeye başladı
      O dönemde Doom kaynak kodu henüz yayımlanmamış olduğundan Linden, oyunun lump yapısını ayrıntılı anlamak için Unofficial Doom Specs’e başvurdu. Kaynaklar IWAD’den çıkarıldı, ancak teknik sınırlamalar nedeniyle bazılarından yararlanılmadı
      Bir röportaja göre Super FX için geliştirme sistemi eksik olduğundan Linden, asıl port geliştirmesine başlamadan önce kendi Amiga’sında ACCESS adlı assembler, linker ve debugger araç setini bizzat oluşturdu
      Donanım kiti olarak hack’lenmiş bir Star Fox kartuşu ve değiştirilmiş iki Super NES kumandasını konsola takıp Amiga’nın paralel portuna bağladı; iki cihaz daha bağlamak için de seri protokol kullandı
      Tam bir prototip yaptıktan sonra bunu işvereni Sculptured Software’e gösterdi ve şirket geliştirmeyi tamamlamasına yardım etti. Linden, eksik seviyeleri ekleyebilmiş olmayı isterdi; ancak oyunun zaten bir Super FX 2 oyunu için azami boyut olan 16 megabite, yani yaklaşık 2 MB’a ulaştığını ve boş alanın yalnızca yaklaşık 16 bayt kaldığını söyledi
      Ayrıca Super Scope light gun, Super NES mouse ve çok oyunculu için XBAND modem desteği de ekledi. Meslektaşı programcı John Coffey, Doom serisinin bir hayranı olarak seviyeleri düzenledi; ancak bunların bir kısmı id Software tarafından reddedildi
    • Wolfenstein 3D portunda da benzer bir şey yaşanmıştı. John Carmack, Rebecca Heineman’ı teknik dokümantasyon elde etmek için patentleri okuyabilmek üzere Japonca öğrenmesi nedeniyle övmüştü
      Bu tür şeylerin etrafında her zaman harika bir tarihçe oluyor; ilgili içerikten biraz daha buraya da yazdım: https://eludevisibility.org/super-noahs-ark-3d-source-code
    • Bu örneği bilmiyorum, ama geliştirme kitleri ile SDK/dokümantasyon çoğu zaman ayrı SKU olur ve ikincisi genellikle daha pahalıdır
      Yanlış hatırlamıyorsam Crash Bandicoot ekibi de SDK’sı olmadığı için kendi kodunu çalıştırırken bellek kartı kaydıyla ilgili bir donanım hatası keşfetmişti
  • Çeşitli oyunların bayt sayılarının nereden geldiğini merak ediyorum
    Oyunlar ROM çiplerinde duruyordu ve ROM çiplerine yakışır şekilde boyutları 2’nin kuvvetleriydi. Örneğin Super Mario World 512 kb ROM olarak yayımlandı; peki 346.330 bayt sayısı nereden geliyor? Sıkıştırılmış boyut mu?

    • Sayılar ZIP boyutuna dayanan tahminler. Ama iyi bir yöntem değil
      Her ZIP’i açıp dosya sonundaki 0 bayt dolgu verisini sayan bir program yazmam gerekecek
      Bugün çok geç oldu; yarın yazıp makaleyi güncelleyeceğim
    • Sıkıştırılmış boyut gibi görünüyor. SMW.SMC’yi gzip ile sıkıştırınca 347 KB’lık bir dosya çıkıyor. Bu epey yanıltıcı
      Başka sorunlar da var. Yazı, SFA2’deki takılmanın ses verisi yüklenmesinden kaynaklandığını MVG keşfetmiş gibi anlatıyor; oysa bu, o videodan çok daha önce biliniyordu: https://forums.nesdev.org/viewtopic.php?p=70474#p70474
      RTC konusunda da oldukça kafa karışıklığı var gibi. Konsol kapalıyken ve kartuş çıkarılmışken bile saatin çalışmaya devam etmesini sağlamaya yönelik olduğu, GBC/GBA Pokemon oyunlarında olduğu gibi apaçık; ama NTSC saat sapmasından kaynaklanıyor olabileceği gibi bir şey söylüyor. Bunun ne anlama geldiğini hiç anlamıyorum
    • Veri dolgusu
  • “Super Mario World de bu işlemden geçti. Yavaşlama hatırlamıyorum ama o zaman sadece on iki yaşındaydım” kısmıyla ilgili olarak, Yoshi’s Island 4 belirli koşullarda yavaşlıyor
    Yoshi’ye binmişken Starman alıp P-Switch’e basınca oluyor; tam hatırlamadığım başka seviyeler de var. Monty Mole’ların bir anda çok sayıda fırladığı bir yerdi, sanırım Chocolate Island’dı
    Ekranda iki Sumo Bros. ile bir Amazing Flying Hammer Bro.’nun birlikte göründüğü üçüncü bir durum da vardı sanırım

    • Outrageous’ta gecikmenin inanılmaz olduğunu hatırlıyorum
  • Emülatörler için ROM’un kartuşlardan nasıl dump edildiğini hiçbir zaman anlayamadım
    Komutları ve asset’leri dump edip emülatörün yorumlayabileceği bir veri dosyası halinde paketlemeyi anlıyorum. Ama emülatör, kartuşun içindeki tüm genişletme çipi donanımını nasıl modelliyor? Orijinal kartuştan bu nasıl dump ediliyor?

    • Genişletme çipleri ROM değildir, bu yüzden ayrıca emüle edilmeleri gerekir
      Kişisel olarak SNES’in öncülü olan NES tarafındaki durumun biraz daha kötü olduğunu düşünüyorum
      NES’te mapper denen epey çok genişletme çipi vardı. Tipik işlevleri ek işlemci veya yetenek katmaktan ziyade NES’in bellek alanını genişletmekti; çünkü NES bunlar olmadan PRG ROM’da 32 KB ve CHR grafik ROM’da 4 KB veya 8 KB ile sınırlı kaldığı için çoğu oyunda yer alıyorlardı
      NES’in çıkışından sonraki oyunların çoğu bu çipleri kullandı
      Bunların da konsolun kendisiyle birlikte tamamen tersine mühendislikle çözülmesi gerekti. Neyse ki ek bir CPU’yu veya hızlandırıcıyı tersine mühendislikle çözmekten çok daha basittiler
      MMC1 ve MMC3 gibi birçok oyunda kullanılan yaygın çipler de var, MMC2 gibi fiilen Punch-Out’a özel olan çipler de
    • Dump edilmiyor. Emülatör uygulaması genişletme çipi işlevlerini yazılımla yeniden üretir
      Genişletme çipi türleri çok fazla değil, bu yüzden altından kalkılamayacak düzeyde değil
  • SNES’in kopya koruma yöntemi tüketici açısından kolayca aşılabiliyordu. Ancak oyun geliştiricileri ya da yayıncıları için durum böyle olmayabilirdi.
    O dönemde herkesin SNES için bir “yedekleme cihazı” vardı. SNES’e takılan ve üzerinde disket sürücüsü bulunan bir cihazdı; oyunları çok ucuz 3,5 inçlik disketlere “yedekliyordu”.
    Sistemin çalışması için gereken tek şey orijinal bir kartuştu; onu kopyalama cihazına taktığınızda cihaz, o kartuşun CIC çipini yeniden kullanıyordu.
    https://en.wikipedia.org/wiki/Game_backup_device

  • “DSP-1’in DSP-1, DSP-1a ve DSP-1b olmak üzere üç sürümü vardı. Hata düzeltmeleri ve üretim süreci iyileştirmeleriyle çipin davranışı biraz değişti ve bunun sonucunda Pilot Wings demosundaki uçak yere çakıldı” kısmını görünce, biri bana neden bu kadar kötü oynadığımı sorarsa bu bahaneyi kullanmalıyım diye düşündüm.