Architektur des Super Nintendo Entertainment Systems (snes)




старонка3/10
Дата канвертавання24.04.2016
Памер387.65 Kb.
1   2   3   4   5   6   7   8   9   10

6.4Soundsystem


Das Soundsystem des SNES besteht aus einem Sony 8 Bit Prozessor (SPC700) und einem Sony DSP (WWW210R6X) gefolgt von einigen Filtern und D/A-Wandlern. Eingehen wollen wir in diesem Kapitel nur auf den Prozessor, da dieser maßgeblich für die Leistung der Soundausgabe ist. (Quelle 9 – Seite 153)



Abbildung 3: Soundeinheit (Quelle: 9 – Seite 154)

Der Sony SPC700 CMOS 8 Bit Prozessor ist die Verwaltungseinheit des Soundsystems.



Taktfrequenz:

2,48MHz

ROM:

64 Byte

Adressbereich:

64KB

Timer / Counter:

(8 Bit Timer + 4 Bit Counter) x 3 im Set

Tabelle 2: Technische Daten des SPC700 (Quelle: 9 – Seite 153)

Aufgabe dieses Chips ist es, die zur Tonerzeugung benötigten Daten anzufordern und in den 64KB großen Sound-RAM zu übertragen.


Zudem wird der SPC700 zur Steuerung des DSPs verwendet. Dieser arbeitet die Anweisungen der Sound CPU zu entsprechender Zeit mit den Daten aus dem Sound-RAM ab und gibt die erzeugten digitalen Daten an die D/A-Wandler & Filter weiter.
Nun soll die Funktionsweise des SPC700 genauer erläutert werden. (Quelle: 9 – Seite 154)

Speicher


Da der SPC700 maximal 64KB Adressieren kann und dies bereits mit der Größe des RAMs ausgereizt ist, besteht ein Konflikt mit dem 64Byte großen IPL ROM, welcher den initialen Zustand der Soundeinheit nach dem Starten der Konsole enthält. Als Lösung wurden vom Adressbereich des RAMs 64Byte an den ROM abgetreten.
Der verbleibende Adressbereich ist jedoch nicht vollständig für beliebige Daten verfügbar. So sind weitere 128Byte für die Special Function Register (kurz: SFR) reserviert.
Alle noch verfügbaren Adressbereiche stehen für Sounddaten zur Verfügung. Zu beachten ist nur, dass der Bereich von 0200H – 7FFH der Bereich ist, welcher für Datentransfers benötigt wird. So sollten Daten, die öfter benötigt werden, aus diesem Bereich verschoben werden, um der Gefahr zu entgehen, dass diese bei einem weiteren Datentransfer überschrieben werden. (Quellen: 12 & 9 – Seite 154)



Abbildung 4: Adressbereich des SPC 700 (Quelle: 9 – Seite 155)

Kommunikation mit der SNES-CPU


Die zuvor angesprochenen Datentransfers des SPC700 laufen alle über den Datenbus, den B-Bus und der SNES-CPU ab. Hierzu stehen der SPC700 vier Ports zur Verfügung. Von jedem der vier Ports stehen zwei Versionen zur Verfügung: jeweils ein Read- und ein Write-Register. Die Read-Register können von der SNES-CPU beschrieben und von der Sound-CPU nur gelesen werden. Anders herum ist es bei den Write-Registern, welche nur vom SPC700 beschrieben werden können. Aufgrund der Tatsache, dass sich die Speicherstellen im Work-RAM (kurz: WRAM) des SNES befinden greifen, die SNES-CPU und die Sound-CPU mit unterschiedlichen Speicheradressen auf diesen zu. Der Sound-CPU steht nur der 8 Bit breite B-Bus zur Verfügung, die SNES-CPU kann hingegen den 24 Bit breiten A-Bus verwenden. (Quelle: 9 – Seite 161)



Abbildung 5: Transfer-Ports des SPC700 (Quelle: 9 – Seite 161)

Timer / Counter


Die 8 Bit Timer der Sound-CPU sind in Sets zusammen mit den 4Bit Countern geschaltet (je ein Timer und ein Counter). Zwei der drei Sets werden mit 8KHz angesteuert, das dritte Set hingegen mit 64KHz. Die vor den Countern befindlichen Timer können dabei wie üblich mit einem max. Wert vorbelegt werden. Sobald der Timer in Betrieb ist und den Vorgabewert erreicht, wird ein Signal an den entsprechenden Counter im Set gesendet. Dieser wird dann um 1 inkrementiert. (Quelle: 9 – Seite 164 / 165)




Abbildung 6: Timer / Counter des SPC700 (Quelle: 9 – Seite 164)

Auf die Vorgehensweise wie aus den Binärdaten ein Audiosignal erzeugt wird, möchten wir hier nicht näher eingehen. Ziehen Sie bitte hierzu Kapitel 3-2-1 aus dem 1. Entwicklerhandbuch (Quelle Nr. 9) zu Rate.


6.5Der Kopierschutz


Über den Kopierschutzchip ist wenig in Erfahrung zu bringen. Nintendo hält sich verständlicherweise auch sehr bedeckt bei dem Thema. Die Funktionsweise des Kopierschutzes hingegen ist bekannt.
Beim Einschalten der Konsole beginnt der Chip mit einem baugleichen Chip auf dem Modul zu kommunizieren. Stellt sich dabei heraus, dass kein Chip oder auch ein falscher Chip (die NTSC-Version unterscheidet sich von der PAL-Version) auf dem Modul vorhanden ist, setzt der CIC-Chip im SNES das RESET-Signal und stoppt somit alle im SNES vorhandenen Einheiten. Welche Daten zwischen den beiden Einheiten ausgetauscht werden, ist nicht bekannt. Es ist auch nicht bekannt, ob es sich bei jedem Startvorgang um die gleichen Daten handelt, die übermittelt werden; es ist aber davon auszugehen, dass der CIC-Chip im SNES ein zufälliges Signal generiert, auf welches der Chip im Modul entsprechend antwortet.
Um auf eine Frage aus unserem Vortrag zurückzukommen, möchten wir an dieser Stelle noch einmal erläutern, warum es nicht immer möglich ist, einfach die RESET-Leitung zu durchtrennen um den Kopierschutz unwirksam zu machen. Bei unseren Recherchen sind wir auf genau diese Vorgehensweise gestoßen. Und dieses Vorgehen funktionierte auch bei den ersten verfügbaren Modulen. Bei den neueren hingegen wird dieses Vorgehen vom Modul erkannt und verweigert daraufhin den Datentransfer. Auf welche Art dies vom Modul ermittelt wird ist uns aufgrund der unbekannten genauen Funktionsweise des Chips unbekannt. Wir vermuten jedoch, dass der CIC-Chip im SNES beim Setzten des RESET-Signals auch alle Übertragungen zum Pendant im Modul abbricht. Dieser könnte diesen Abbruch der Kommunikation als Indiz für das Setzten des Resets im SNES nehmen und somit den Datenaustausch zwischen ROM und SNES unterbinden. (Quelle: 13)
1   2   3   4   5   6   7   8   9   10


База данных защищена авторским правом ©shkola.of.by 2016
звярнуцца да адміністрацыі

    Галоўная старонка