Mega Drive'ın / Genesis'in Mimarisi

Rodrigo Copetti tarafından hazırlanan pratik bir analiz

EuropaYou tarafından çevrildi

Klasik - Son güncelleme: 29 Ağustos 2024

Mevcut olan diller: 🇬🇧 - English, 🇵🇱 - Polski, 🇧🇷 - Português (Brasil), 🇨🇳 - 简体字, 🇹🇷 - Türkçe, 🇷🇺 - Русский, 👋 - Çeviri ekleyin


Bu baskı hakkında

'Klasik' sürüm, 'modern' muadiline alternatif bir sürümdür. Çalışması için Javascript, son teknoloji CSS veya karmaşık HTML gerektirmez, bu da onu erişilebilirlik araçları veya eski internet tarayıcıları kullanan okuyucular için ideal hale getirir. Öte yandan, e-Kitap kullanıcıları artık e-Kitap sürümünü kontrol edebilirler.

Bu basım içerik açısından aynıdır. Bununla birlikte, etkileşimli widget'lar saf HTML ile çalışacak şekilde basitleştirilmiştir, ancak bunlar okuyucunun "tam sürümü" denemek istemesi durumunda orijinal makaleye bir bağlantı sunacaktır.

Her zaman olduğu gibi, bu makale okuyucuların hataları bildirmesine veya değişiklik önermesine olanak sağlamak için Github'da mevcuttur. Ayrıca seriyi anlamaya yardımcı olacak destekleyici bir okuma listesi de mevcuttur. Yazar ayrıca mevcut ve gelecek makalelerin kalitesini artırmaya yardımcı olmak için bağışları ve çevirileri de kabul etmektedir.


İçindekiler

  1. Destekleyici görüntüler
  2. Hızlı bir giriş
  3. İşlemci (CPU)
    1. Lider
      1. Tuhaf bir talimat seti
    2. İkinci muz
    3. Kullanılabilir hafıza
      1. İletişim
  4. Grafikler
    1. Çoklu ekran çözünürlüklerinin arkasında
    2. İçeriğin düzenlenmesi
      1. Kullanılabilir hafıza
    3. Kare Oluşturulması
      1. Kareler
      2. Arka Plan
      3. Ön plan
      4. Spritelar
      5. Sonuç
    4. Özel bir transfer ünitesi
    5. Video çıkışı
  5. Ses
    1. Fonksiyonellik
      1. Yamaha YM2612
      2. Texas Instruments SN76489
      3. Birleştirilmiş
    2. Kondüktör
    3. Kırma örnekleme
    4. Destekli FM Kompozisyonu
    5. (Bonus) Mega CD Sound
  6. Oyunlar
    1. İlave fonksiyonlar
    2. İlk ağ girişimleri
  7. Korsanla mücadele ve bölge kilidi
  8. Hepsi bu kadar
  9. Copyright and permissions
  10. Kaynaklar / Okumaya Devam Edin
  11. Katkıda Bulunma

Destekleyici görüntüler

Model

Image
Mega Drive.
29/10/1988 tarihinde Japonya'da piyasaya sürüldü.
Image
Genesis.
14/08/1989 tarihinde Amerika'da yayınlandı.
Image
Mega Drive.
09/1990 tarihinde Avrupa'da piyasaya sürüldü.

Anakart

Image
Anakart
Japon 'VA0' revizyonunu gösteriyor.
Üretim sonrası hataları düzeltmek için kullanılan (sonraki revizyonlarda düzgün bir şekilde düzeltilen) VDP'nin üstündeki alışılmadık ek karta dikkat edin.
Image
Önemli parçaları etiketlenmiş anakart

Diyagram

Image
Ana mimari diyagramı

Hızlı bir giriş

Sega (ve TV reklamları) bilmenizi istiyor: Konsol daha hızlı grafikler ve daha zengin sesler sağlamadığı sürece geliştiriciler iyi oyunlar üretemezler.

Yeni sistemleri, programlanmaya hazır çok sayıda zaten tanıdık bileşen içeriyor. Bu da teorik olarak geliştiricilerin sadece Sega’nın yeni GPU’su hakkında bilgi sahibi olmaları gerektiği anlamına geliyor… değil mi?


İşlemci (CPU)

Bu konsolun iki genel amaçlı işlemcisi vardır.

Lider

İlk olarak, elimizde ~7.6MHz hızında çalışan bir Motorola 68000 var, o zamanlar Amiga, (orijinal) Macintosh, Atari ST gibi birçok bilgisayarda bulunan popüler bir işlemci… İlginçtir ki, bu bilgisayarların her biri ’6502 selefi’nin yerini almıştır ve Master System (Mega Drive’ın öncüsü) 6502 CPU kullanmazken, NES kullanmıştır (ve bir şekilde Sega’nın amacı Nintendo tüketicilerini kazanmaktı). Sonuç olarak, bilgisayarların evrimi ile oyun konsolu teknolojisi arasında bir miktar korelasyon görebilirsiniz.

Image
Mega Drive’daki Motorola 68000 çipi, bu çip Hitachi’den ikinci kaynaktan alınmıştır.

Konuya dönersek, 68k ‘ana’ CPU rolüne sahiptir ve oyun mantığı, I/O ve grafik hesaplamaları için görevlendirilecektir. Aşağıdaki yeteneklere sahiptir [1]:

Eğer 32 bitlik sözcükleri işleyebilen bir CPU’da 24 bitlik adreslerin kullanılmasının ardındaki nedeni merak ediyorsanız, bunun nedeni o dönemde 4 GB belleği yönetmek için yeterli ekipmanın bulunmamasıdır. Performans ve para açısından kullanılmayan hatların uygulanması maliyetli olduğu gerçeğiyle birleştirildiğinde, Motorola makul bir uzlaşmaya vardı (24 adres hattı) ki bu da geliştiricileri tam 32 bitlik CPU’nun (68020) geldiği zaman için hazırlar.

Tuhaf bir talimat seti

80’lerin RISC devrimi öncesinde, talimat setlerinin nasıl tasarlandığını birleştirmeye çalışan önceki bir dalgaydı. Özünde, 70’lerin tüketici CPU’ları (6502 veya 8080 gibi) belleğin nasıl erişileceğini önceden tanımlamış talimatlar sağlar (buna ‘adresleme modu’ denir). Motorola, 68000 ile talimat işlevini (opcode) adresleme modundan ayırdı ve bu sonuncuyu sadece başka bir parametre (operand) haline getirdi. Bunu yaparak, geliştiriciler artık (ihtiyaçlarına göre) en optimal adresleme moduyla aynı opcodları kullanabilir.

Bu ilkeye instruction set orthogonality adı verilir ve 70’lerin sonlarında yeni nesil CPU’ları büyük ölçüde etkilemiştir, ancak RISC tasarımlarının devreye girmesiyle hızla dağılmış ve yükü etkili bir şekilde derleyicilere kaydırmıştır. Her durumda, Motorola 68k serisi 80’ler boyunca büyük popülariteye sahip oldu ve şirketlerin başka bir satıcıya geçiş yapmaya başlaması 90’ların başlarına kadar sürmedi.

İkinci muz

Bu konsolda ~3,5 MHz hızında çalışan bir Zilog Z80 CPU daha bulunmaktadır. Bu, daha önce Master System’in makalesinde analiz edilen işlemcinin aynısıdır.

Z80 genel olarak ses kontrol için kullanıldı. Böylece, 16-bit adres veri yolu aşağıdakilerden oluşur [3]:

Son olarak, her iki CPU’nun da paralel çalıştığına dikkat etmek önemlidir.

Kullanılabilir hafıza

Ana CPU, genel amaçlı verileri depolamak için 64 KB özel RAM içerir ve Z80, sesle ilgili işlemler için 8 KB RAM içerir.

İletişim

Sega, birbirinden habersiz iki bağımsız işlemci seçti, peki oyunlar ikisini aynı anda nasıl yönetebilir? Ana program 68000’de yürütülür ve bu CPU daha sonra Z80’in RAM’ine yazabilir. Böylece 68000, Z80’in RAM’ine bir program gönderebilir ve Z80’e bunu yüklemesini söyleyebilir (Z80’e bir reset sinyali göndererek) [4]. Z80 kontrol altına alındıktan sonra, 68000 diğer işlemlerle ilgilenirken, ses alt sistemini yönetmek ve daha önce açıklanan yöntemi kullanarak belleği hareket ettirmek için kullanılabilir.

Image
Mega Drive/Genesis’in bellek mimarisi.

Bir CPU diğerinin CPU veri yoluna girmek zorunda kalacağından ve her ikisi de aynı anda kullanamayacağından, her iki işlemciyi de durdurmak için etkinleştirilmesi gereken Bus arbiter adlı ekstra bir bileşen vardır, böylece bellek tehlikesiz bir şekilde yazılabilir.

Bu tasarımın düzgün bir şekilde yönetilmediği takdirde düşük performans gösterebileceğini belirtmek önemlidir, bu nedenle oyunların veri yolu hakemine özel dikkat göstermesi ve her iki CPU’yu da gerekenden daha uzun süre durdurmamaya dikkat etmesi gerekecektir.


Grafikler

Cevap Blast Processing!, başka ne bilmeniz gerekiyor?

Tamam, gerçek cevabı bilmek istiyorsanız: grafik verileri 68000 tarafından işlenir ve Video Display Processor (veya kısaca ‘VDP’) adı verilen özel bir çipte işlenir ve daha sonra ortaya çıkan kareyi (tarama çizgileri şeklinde) görüntülenmek üzere gönderir.

VDP ~13 MHz hızında çalışır ve bölgeye bağlı olarak birden fazla çözünürlük modunu destekler: NTSC’de 320x224 piksele kadar ve PAL’de 320x240 piksele kadar.

Çoklu ekran çözünürlüklerinin arkasında

Teknik olarak, VDP tarama satırı başına 40 veya 32 sütun tiles sığdırabilir ve karo satırlarının sayısı bölgeye bağlıdır (NTSC’de 28 veya PAL’de 30) [5]. Yine de, çoğu PAL oyunu PAL sistemlerinde izin verilen ekstra karolarla uğraşmaz (muhtemelen iki bölge arasında tutarlılığı korumaları gerektiğinden ve NTSC ortak paydadır), bu nedenle VDP’ye 28 satırla (NTSC sistemlerinde yapacakları gibi) işleme talimatı verirler. Bu nedenle, VDP’nin kullanılmayan alanı bir arka plan rengiyle (aşırı tarama sırasında da kullanılır) doldurmaktan başka seçeneği yoktur.

Hata ayıklama özelliklerine sahip bir emülatörde Mode Set Register #2’yi kontrol ederek hangi PAL oyunlarının NTSC modunda işlendiğini görebilirsiniz (örn. Exodus). Sağdan dördüncü bit 0 ise, VDP NTSC modunda [6] çalışıyor demektir.

Image
Sonic 2’de (1992) hızlı bir çok oyunculu mod sağlamak için oyun, bunun yerine 8x16 piksel karolar kullanarak (diğer değişikliklerle birlikte) tek oyunculu bir seviye oluşturmak için ‘taramalı modu’ etkinleştirir.
Image
Buna karşılık, Sonic 3’ün (1994) daha sofistike çok oyunculu modu, tek oyunculu seviyelerden ayrı olan özel 8x8 piksel karolara dayanır.

Ayrıca, VDP’de 8x16 haritalar oluşturmak üzere iki karoyu yığmak ve ardından bunları tek bir karo olarak ele almak için ayarlanabilen ek bir parametre vardır. Böylece dikey çözünürlük iki katına çıkar. Ancak bu, kareler artık taramalı olarak işlendiğinden (bir kare çift tarama çizgilerini, bir sonraki tek tarama çizgilerini ve benzerlerini işler) yenileme hızını yarıya indirir, bu nedenle işlevsellik açısından daha sınırlıdır. Sonic 2 ve 3’ün çok oyunculu modu bu modun iyi bir temsilidir.

Son olarak, VDP’nin aşırı tarama alanı için otomatik olarak dolgu eklediğini belirtmek gerekir, böylece oyunların hangi alanlara grafik çizmenin güvenli olduğu konusunda endişelenmesine gerek kalmaz (NES’in ‘tehlikeli bölgeleri’ ile olduğu gibi)

İçeriğin düzenlenmesi

Grafik verilerinin işlenmesi açısından, bu çipin iki işlem modu vardır:

Peki ya Mod 0 ila III? Bunlar daha da eski olan SG-1000’e ait ve Mega Drive bunları desteklemiyor.

İlginç bir not olarak, daha sonra bu sistemin eski bir geliştiricisi tarafından Mod V’in komut yapısının (oyun içinde VDP’yi kontrol etmek için kullanılır) tasarımını TMS9918’den (SG-1000’de kullanılan ünlü video çipi) miras aldığı söylendi [7]. Bu, üçüncü taraf geliştiricilerin resmi belgelere (ve ardından gelen lisans maliyetlerine) bağlı kalmadan Mode V’i kullanmalarını kolaylaştırdı.

Kullanılabilir hafıza

Image
VDP’nin bellek mimarisi.

Grafik içeriği belleğin üç bölgesine dağıtılır [8]:

Kare Oluşturulması

Aşağıdaki bölümde VDP’nin her bir kareyi nasıl çizdiği açıklanmaktadır, örnek olarak Sonic The Hedgehog kullanılmıştır. Başlamadan önce, önceki modus operandi’ye göz atmanızı tavsiye ederim çünkü burada birçok şey yeniden ele alınacaktır.

Kareler

Image
Birden fazla karo birbirine sıkıştırılmış. Gösterim amacıyla varsayılan bir palet kullanılmaktadır.
Image
Tek bir 8x8 piksel karo.
VRAM’de bazı karolar bulundu.

Tıpkı Nintendo’nun PPU’su gibi, VDP de karo tabanlı bir motordur ve bu nedenle grafik düzlemleri oluşturmak için tiles (temel 8x8 bitmapler) kullanır. VDP durumunda, her bir karo 4 bayt uzunluğunda bir dizi ile kodlanır, burada her 4 bitlik giriş bir piksele karşılık gelir ve değeri bir renk girişine karşılık gelir (bir renk paletine işaret eder).

Oyun kartuşları karoları ROM’larında saklar (kartuşlarında bulunur) ancak VDP’nin bunları okuyabilmesi için VRAM’a kopyalanmaları gerekir [9]. Geleneksel olarak, bu yalnızca belirli zaman dilimlerinde mümkündü ve CPU tarafından gerçekleştiriliyordu, neyse ki bu konsol bu görevi VDP’ye yüklemek için özel devre ekledi (ayrıntılara daha sonra gireceğiz).

Karolar toplam dört düzlem oluşturmak için kullanılır ve bunlar bir araya getirildiğinde ekranda görülen çerçeveyi oluşturur. Ayrıca, uçakların karoları birbiriyle çakışacaktır, bu nedenle VDP hangi karonun görünür olacağına uçak türüne ve karonun öncelik değerine göre karar verecektir.

Arka Plan

Image
Ayrılan arka plan haritası.
Image
Seçilen alanın işaretlendiği Tahsis Edilmiş Arka Plan haritası.

Plane B olarak da bilinen Arka Plan düzlemi, statik tiles [10] içeren kaydırılabilir bir döşeme haritasıdır (döşeme kümesi).

Bu düzlem altı farklı boyuta sahip olabilir: 256x256, 256x512, 256x1024, 512x256, 512x512, 1024x256. Programcılar, gerekli olacak kaydırma türüne daha iyi uyan boyutu seçebilirler.

Her karo yatay ve/veya dikey olarak çevrilebilir ve bir öncelik kümesine sahip olabilir.

Gösterilen örnekte, görüntülenmek üzere seçilen alanın bir kare olmadığını fark edeceksiniz… Böyle olmak zorunda değil!. VDP, tüm çerçeve, her bir tarama satırı veya her sekiz piksel için yatay kaydırma değerlerinin ayarlanmasına olanak tanır. Bu, geliştiricilerin seçilen alanı bir eşkenar dörtgen gibi şekillendirebileceği ve perspektif efektlerini simüle etmek için oyuncu hareket ettikçe açılarını değiştirebileceği anlamına gelir. Bunun gibi hileler düzlemi bozmaz, VDP her (seçilen) yatay çizgiyi alır ve ondan düzenli bir çerçeve oluşturur.

Ön plan

Image
Ayrılan ön plan haritası.
Image
Seçili alan işaretli Tahsis Edilmiş Ön Plan düzlemi.
Ön Plan düzlemi örneği, Pencere Düzlemi kullanılmaz.

Plane A [11] olarak da bilinen Ön Plan düzlemi, bu düzlemin daha yüksek önceliğe sahip olması dışında Arka Plan Düzlemi ile aynı özelliklere sahiptir, bu nedenle burada işlenen karolar doğal olarak Arka Plan Düzleminin üstünde olacaktır.

Ayrıca, bu düzlem yeni bir sub-plane oluşturmak için kendini bölmeye izin verir: Window Plane. Tek fark, ikincisinin kaydırma yapmamasıdır.

Sonuç olarak, yeni öncelik değerlerinin ve ayrı uçakların oyun tasarımcılarına yeni manzara türleri sunma imkanı verdiğini görebilirsiniz. Ayrıca, her düzlemde farklı kaydırma hızları kullanılarak bir paralaks etkisi elde edilebilir.

Spritelar

Image
Ayrılmış Sprite katmanı.
Image
Seçili alan işaretli olarak ayrılmış Sprite katmanı.

Bu düzlemde karolar sprites olarak değerlendirilir. Bunlar bir 512x512 piksel haritaya yerleştirilir ve sadece bir kısmı (VDP’nin çıkış çözünürlüğü) görüntülenmek üzere seçilir. Bu, istenmeyen sprite’ları gizlemek veya gelecekte gösterilecek diğerlerini hazırlamak için kullanışlıdır. VDP ayrıca eski bir çarpışma algılama işlevi sağlar.

Sprite’lar 4x4’e kadar karo (32x32 piksel haritası) birleştirilerek ve 16 renge kadar (transparent dahil) seçilerek oluşturulur. Daha büyük bir sprite gerekiyorsa, birden fazla sprite birleştirilerek tek bir sprite haline getirilebilir.

Tarama çizgisi başına en fazla 20 ve ekran başına 80 sprite olabilir (bunun aşılması tüm katmanı bozacaktır).

VRAM’de Sprite’ların tanımlandığı bölge Sprite Attribute Table [12] olarak adlandırılır ve her giriş karo indeksi, katman koordinatları (x ve y), link değeri (hangi sprite’ların önce çizileceğini yönetir), öncelik (en yüksek önceliğe sahip sprite, çakışmalar sırasında görüntülenecek olandır), renk paleti indeksi ve dikey ve yatay çevirme içerir.

Sonuç

Image
Ortaya çıkan kare.
Image
TV’ye yayınlanan çerçeve (NTSC formatı), VDP çerçeveyi otomatik olarak çoğu CRT TV’nin gizleyeceği overscan alanıyla kaplar.
Tada!

Kare çizilirken, sistem CRT’nin ışınının nereye baktığına bağlı olarak sırayla farklı kesme rutinlerini çağıracaktır. Muhtemelen önceki konsollarda gördüğünüz gibi, bu CPU’nun bir sonraki kare üzerinde çalışmasına (veya mevcut kareyi değiştirmesine) olanak tanır.

Geleneksel olarak, iki tür kesinti vardır: H-Blank (her yatay çizgi) ve V-Blank (her kare).

H-Blank birçok kez çağrılır ancak kısa rutinleri yürütmekle sınırlıdır. Ayrıca, yalnızca CRAM ve VSRAM’e erişilebilir, bu nedenle oyunlar yalnızca renk paletlerini güncelleyebilir veya düzlemlerini dikey olarak kaydırabilir.

V-Blank, saniyede yalnızca 50 veya 60 kez çağrılma dezavantajıyla (konsolun bölgesine bağlı olarak) daha uzun rutinlere izin verir, ancak tüm bellek konumlarına erişebilir.

Örnekteki aşırı tarama alanının sağ alt köşesinde bazı rastgele renkli noktalar bulunduğuna dikkat edin. Bu halk arasında CRAM noktaları olarak bilinir ve olan şey CPU’nun CRAM’deki paletleri güncellerken aynı zamanda VDP’nin kalan tarama hatlarını ışınlamasıdır (örnekte, bu aşırı tarama sırasında gerçekleşir). Bu çakışma, VDP’nin CPU’nun o anda yazdığı değeri getirmesine neden olur (CRAM’deki gerekli konumun aksine), böylece görüntü bozulur. Ancak, bu durumda oyun CRAM’i yalnızca aşırı taramada güncellediğinden, bu anormallik geleneksel CRT’lerde fark edilmez. Diğer oyunlar, CRAM noktalarının görünümünü dengelemek zorunda kalmak pahasına, daha fazla renk elde etmek için karenin ortasında paletleri güncellemeye çalışır.

Özel bir transfer ünitesi

Şimdiye kadar CPU’nun çerçeveleri güncellemek için neler yapabileceğini tartıştık, peki ya VDP? Daha özel bir şey sağlıyor mu? Evet, bu çip, verilerin bellek konumları arasında daha hızlı ve işlemcinin müdahalesi olmadan taşınmasını sağlayan bir Doğrudan Bellek Erişimi (kısaca ‘DMA’) özelliğine sahiptir.

DMA, H-Blank, V-Blank veya aktif durumda (herhangi bir kesme dışında) etkinleştirilebilir ve VRAM, CRAM ve/veya VSRAM üzerine yazmak için kullanılabilir [13]. Ayrıca, DMA kullanan CPU RAM aktarımları sırasında CPU veri yolu bloke olur, bu nedenle iyi planlama performans elde etmek için kritik öneme sahiptir.

Bu özelliklerin olağanüstü kullanımı yüksek çözünürlüklü grafikler, akıcı paralaks kaydırma ve yüksek kare hızları sağlayabilir. Dahası, oyununuz TV reklamlarında da yer alabilir ve her yerinde Blast Processing! işaretleri bulunabilir.

Video çıkışı

Bu konsolun ilk tasarımı (genellikle ‘Model 1’ olarak anılır) Master System ile aynı video çıkış portuna sahiptir. Sonraki ‘Model 2’ ve ‘Model 3’ bunun yerine bir mini-DIN bağlantı noktasına geçti.


Ses

Bu konsolun ses özellikleri en hafif tabirle biraz alışılmışın dışında. Mega Drive bir yandan önceki nesilden mevcut ses teknolojisini sağlarken, diğer yandan mevcut olanın üzerine yeni (ancak karmaşık) bir sentez tekniği ekliyor. Yani, bazı açılardan, her iki nesle de sahip oluyorsunuz.

Bununla birlikte, Mega Drive iki ses yongası barındırır: Bir Yamaha YM2612 ve bir Texas Instruments SN76489.

Fonksiyonellik

Şimdi her biri çok farklı olduğu için her bir çipin neler sunduğuna bakalım.

Yamaha YM2612

FM kanalları.
PCM kanalları.
Sonic The Hedgehog (1991).

Yamaha YM2612, 68000 hızında çalışan ve PCM örneklerini (8 bit çözünürlük ve 32 kHz örnekleme hızı ile) çalabilen altı FM kanalı sağlayan bir FM sentezleyicidir [14].

Frekans modülasyonu veya ‘FM’ sentezi, ses sentezlemek için kullanılan birçok profesyonel teknikten biridir, 80’lerde popülaritesi önemli ölçüde artmış ve tamamen yeni seslere yol açmıştır (birçoğunu o dönemin pop hitlerini dinleyerek bulabilirsiniz).

İnanılmaz derecede basitleştirilmiş bir özetle, FM algoritması tek bir dalga formu (taşıyıcı) alır ve başka bir dalga formu (modülatör) kullanarak frekansını değiştirir. Sonuç, farklı bir sese sahip yeni bir dalga biçimidir. Taşıyıcı-modülatör kombinasyonuna operatör adı verilir ve nihai dalga formunu oluşturmak için birden fazla operatör birbirine zincirlenebilir. Farklı kombinasyonlar farklı sonuçlara ulaşır. Bu çip kanal başına 4 operatöre izin verir.

Geleneksel PSG sentezleyicilerle karşılaştırıldığında, bu ciddi bir gelişmeydi: Artık önceden tanımlanmış dalga formlarına takılıp kalmıyordunuz.

Texas Instruments SN76489

PSG Kanalları.
Sonic The Hedgehog (1991).

Texas Instruments SN76489, üç darbe dalgası ve bir gürültü üretebilen bir PSG çipidir.

Bu aslında orijinal Master System’in ses yongası ve VDP’nin içine gömülü. Z80 hızında çalışır.

‘Pulse 3’ kanalının kullanılmadığına dikkat edin. Bunun nedeni, oyunun gürültü kanalı için üçüncü darbe kanalını modülasyon [15] için ayıran bir mod kullanmasıdır; bu, Master System’de de bulunan bir işlevdir.

Birleştirilmiş

Tüm ses kanalları.
Sonic The Hedgehog (1991).

Her iki çip de aynı anda ses çıkışı sağlayabilir, daha sonra ‘ses karıştırıcı’ adı verilen ekstra bir bileşen her iki sinyali almak ve karıştırmakla görevlendirilir.

Son olarak, elde edilen analog sinyal ses çıkışı üzerinden gönderilir.

Kondüktör

Teorik olarak, Z80’in bellek haritası, Z80’in bu iki çipe komut verebilen tek CPU olduğunu göstermektedir (bu, 68000 için bir rahatlama olabilir, çünkü ikincisi zaten diğer görevlerden bıkmıştır). Ancak pratikte Z80 kapatılabilir, böylece 68000’in YM2612’ye (ancak SN76489’a değil) erişimi olur [16]. Bu nedenle, basitlik amacıyla, bu makalede ses görevlerinin Z80’e atandığını varsayacağız.

Devam edersek, Z80 kendi başına bağımsız bir işlemcidir, bu nedenle 68000’den alınan müzik verilerini yorumlayabilmek ve iki ses yongasını buna göre etkili bir şekilde manipüle edebilmek için kendi programına (mevcut 8 KB RAM’de saklanır) ihtiyaç duyar. Bu program sequencer veya driver olarak adlandırılır.

Kırma örnekleme

Bazı müzik bestecileri daha gerçekçi sesler çalmak için PCM kanalına odaklanmaya karar verebilir ve bunun için oyunların mevcut RAM’in geri kalanını kullanarak müziklerini sürekli olarak sıralaması ve yayınlaması gerekecektir. Ana kısıtlama, bu belleği doldurmak için önce ana veri yolunun bloke edilmesi gerektiğidir (yani bu zaman diliminde ses yongalarına hiçbir komut veya örnek gönderilemez). Aksi takdirde, ses anormallikleri ortaya çıkabilir (sessizlik, donmuş notalar, düşük örnekleme hızları, vb).

Bu nedenle, bu bölümü yukarıda bahsedilen kısıtlamanın üstesinden gelmeyi başaran birkaç oyun örneğine ayırmaya karar verdim. Sıradan davul kitlerine bağlı kalmak yerine, bazı oyunlar daha zengin örnekleri tek bir PCM kanalına aktarmanın inanılmaz yollarını buldu, bu örneklere göz atın:

PCM kanalları.
Tüm ses kanalları.
Sonic The Hedgehog 3 (1994).
Bu, Michael Jackson tarafından ortaklaşa yazıldığı söylenen parçalardan biridir. Her halükarda, genel müziğin öncekilere kıyasla farklı bir ritmi vardı.
PCM kanalı (kullanılan tek kanal).
Toy Story (1995).
Bu, 68000 [17] yardımıyla gerçek zamanlı olarak sıralanır. Çok yoğun bir görev, yani sadece oyunun çok belirli noktalarında (örneğin ana menü) oynanabilir.

CD kalitesine yakın olmadıklarını biliyorum (44.1 kHz’de 16-bit), ancak bu seslerin bir zamanlar bu konsolda yeniden üretilmesinin imkansız olduğunu ve bunun önceki nesle kıyasla ne kadar ilerlemeyi temsil ettiğini vurgulamadığımı unutmayın, bu yüzden kesinlikle en azından biraz hak ediyorlar!

Destekli FM Kompozisyonu

Yamaha DX7’nin gösterge panelini kullanarak bir FM sentezleyiciyi programlamak zaten karmaşık sayılıyorsa, sadece 68k düzeneği ile müzik bestelemenin baş ağrısını hayal edin…

Neyse ki, Sega daha sonra Mega Drive müziğinin [18] oluşturulmasını (ve hata ayıklamasını) kolaylaştırmak için MS-DOS PC’ler için GEMS adlı bir yazılım dağıttı. Çok eksiksiz bir araçtı, birçok şeyin yanı sıra çok sayıda patch (aralarından seçim yapabileceğiniz önceden yapılandırılmış operatörler) içeriyordu, bu da bazı oyunların neden çok benzer seslere sahip olduğunu açıklıyor.

Ayrıca, ses alt sistemi oyunların izin verilenden daha fazla kanal oluşturmasına ve her birine bir öncelik değeri atamasına olanak sağlamıştır, ardından konsol müziği çalacağı zaman, müzik kanallarını önceliklere göre mevcut yuvalara dinamik olarak göndermiştir. Ayrıca, yüksek önceliğe sahip ancak müziksiz kanallar otomatik olarak atlanabilir.

Kanallar ayrıca verilerinin içinde koşullular uygulayarak bazı mantık içeriyordu ve oyuncunun oyunda nasıl ilerlediğine bağlı olarak müziğin ‘gelişmesini’ sağlıyordu.

(Bonus) Mega CD Sound

İşte ilginç bir gerçek: Mega CD eklentisi CD Ses için 2 ekstra kanal sağladı (diğer şeylerin yanı sıra). En ünlü oyunlarından biri olan Sonic CD çok etkileyici bir müzik kalitesine sahipti, ancak tüm oyunlar gibi döngüye girmesi gerekiyordu, sorun 1x CD okuyucuda müziğin döngüye girmesinin fark edilebilir boşluklara neden olmasıydı, bu nedenle oyun CD başlığı başlangıca dönerken başka bir PCM çipinden yürütülen döngü dolguları içeriyordu.

Bu dolgular sadece oyunun ilk betalarında bulunur ve piyasaya sürülmedi, 2011 yeniden yapımı nihayet onları içeriyordu. Bu, oyunun seviyelerinden biridir:

MegaCD version (1993).
Yeniden düzenlenmiş versiyon (2011).

Mega CD’nin versiyonundaki boşluğu fark ettiniz mi?


Oyunlar

Oyunlar çoğunlukla 68000 assembly ile yazılırken, ses sürücüsü Z80 assembly ile uygulanmaktadır. Her ikisi de kartuş ROM’unda bulunur ve mapper gerektirmeden 4 MB’a kadar boyutlandırılabilir.

İlave fonksiyonlar

Genişletilebilirlik açısından, bu tasarım NES veya SNES kadar modüler değildi. Bu nedenle, 32x gibi daha sonraki eklentiler (68k’yı devralan yeni bir yonga seti içeren) VDP’yi atlamak zorundaydı (bu nedenle ‘Konektör Kablosu’ ihtiyacı).

Kartuşlar için sadece bir özel çip üretildi, Sega Virtua Processor [19] (Samsung SSP1601’in yeniden markalanması, 16-bit Dijital Sinyal İşlemcisi), daha sonra karolar şeklinde kodlanmış çokgenler üretti (böylece VDP bunları okuyabilir). Her halükarda, SVP’nin üretiminin çok pahalı olduğu ortaya çıktığı için sadece bir oyun onunla birlikte gönderildi.

İlk ağ girişimleri

Çevrim içi hizmetler yaygın olarak benimsenmeden (ve standartlaştırılmadan) önce Sega, oyunların kullanılması için çevirmeli bir hizmet olan Sega Meganet ile şansını denedi. Meganet, kullanıcıların Sega Mega Modem adında ayrı bir aksesuar satın almalarını, ardından bunu konsolun arkasına (DE-9 konektörünün bulunduğu yere) takmalarını ve son olarak telefon hattına bağlamalarını gerektiriyordu. Oyunlar daha sonra modem ünitesini başka bir kontrolör olarak ele alacak ve onunla seri olarak iletişim kuracaktır [20] (kontrolörler için kullanılan paralel kodlamanın aksine).

Her ne olursa olsun, bu özellik Sega’nın gelecekteki revizyonlarda DE-9 konektörünü kaldırmasından ve hizmeti tamamen kapatmasından önce sadece birkaç yıl sürdü.


Korsanla mücadele ve bölge kilidi

Sega, ithal oyunları engellemek için kartuş yuvasının şeklini bölgeler arasında biraz değiştirdi, ancak aynı pin çıkışlarını korudu. Oyunlar ayrıca Version kaydının değerini kontrol ederek (bölge değerini çıkarır) ‘bölge kilitleme’ gerçekleştirebilir.

Bunu atlatmanın iki kolay yolu vardı. İlk olarak, şu üçüncü taraf kartuş dönüştürücülerden birini satın alarak. Ya da ikinci olarak, konsolu sökerek ve anakart üzerindeki Version kaydının değerini değiştiren pinleri köprüleyerek.

Yazılım korsanlığına karşı önlemler söz konusu olduğunda, en kolay kontrol SRAM boyutu üzerinde yapılıyordu: Kaçak kartuşlar herhangi bir oyunu sığdırmak için gerekenden daha fazla alana sahipti, bu nedenle oyunlar başlangıçta beklenen boyutu kontrol ediyordu. Programcılar ayrıca bilgisayar korsanlarının ilk SRAM kontrollerini kaldırması ihtimaline karşı oyunun rastgele noktalarında ekstra sağlama toplamı kontrolleri uygulayabilirler. Bunu yenmenin tek yolu, tüm çekleri sıkıcı bir şekilde bulmak ve tek tek kaldırmaktı…


Hepsi bu kadar


Katkıda Bulunma

Bu makale Konsolların Mimarileri serisinin bir parçasıdır. Eğer ilginç bulduysanız lütfen bağış yapmayı düşünün. Bağışınız, mevcut ve gelecek makalelerin kalitesini artırmama yardımcı olacak araç ve kaynakların satın alınmasını finanse etmek için kullanılacaktır.

Donate with PayPal
Become a Patreon

Ayrıca eBook sürümünü İngilizce olarak da satın alabilirsiniz. Kârları bağış olarak kabul ediyorum.

Image

Bu makale için arzu edilen araçların ve en son kazanımların bir listesi burada takip edilmektedir:

Interesting hardware to get (ordered by priority)

Acquired tools used

Alternatif olarak, değişiklikler önererek ve/veya çeviriler ekleyerek yardımcı olabilirsiniz.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-megadrive,
    url = {https://classic.copetti.org/writings/consoles/mega-drive-genesis/},
    title = {Mega Drive / Genesis Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Mega Drive / Genesis Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://classic.copetti.org/writings/consoles/mega-drive-genesis/. [Accessed: day- month- year].

Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Kaynaklar / Okumaya Devam Edin

Ses

Bonus

İşlemci (CPU)

Oyunlar

Grafikler

Fotoğrafçılık