2013-09-23 1 views
5

Verstehe ich hier etwas falsch? 128kB ist viel kleiner als 0xFFFFFF Bytes.

Antwort

5

Die Tatsache, dass der Adressraum des SNES viel größer als die tatsächliche Anzahl der Adressen ist, ist kein Problem. Auf einer 64-Bit-Maschine sind die Zeiger groß genug, um 1,844674407 × 10 Bytes zu adressieren, was etwa 10 Milliarden GB entspricht. Ich habe noch nie einen Computer mit so viel RAM gesehen, aber das ist kein Problem. Einige Adressen beziehen sich nicht auf Adressen im Speicher.

Hoffe, das hilft!

+0

Ich denke, das hilft mir, einen Teil meiner Frage zu verstehen. Vielen Dank! Die Sache ist, dass diese Adresse in der SNES-Speicherkarte tatsächlich realen Adressen entspricht. Ist nur ein bestimmter Teil dieser Adressen (128k) RAM? Was ist die andere Art von Speicher außer RAM? (Entschuldigung, wenn ich keinen Sinn habe) – VJC1288

+0

Wie bereits erwähnt (http://romhack.wikia.com/wiki/SNES_ROM_layout), enthält der Speicher mehrere * Mirror * Regionen, die Adressen sind, die zu anderen RAM-Speicherorten umleiten . Dies bedeutet, dass bestimmte Speicherbereiche verdoppelt werden, wodurch Adressen, die normalerweise ungültig sind, stattdessen zu gültigen Speicherorten umgeleitet werden. – templatetypedef

6

Okay, alte Frage, aber das ist nur in Google aufgetaucht und ich kann das vollständig beantworten.

Die Verwirrung liegt hier im Unterschied zwischen RAM, ROM und dem gesamten Adressraum des SNES. Es stimmt zwar, dass der SNES nur 128K RAM hat, das ist nur flüchtigen Speicher und berücksichtigt nicht ROM-Speicherplatz. Der Arbeitsspeicher ist den Bänken 7E und 7F zugeordnet, jeder 64K. VRAM ist ein weiterer 32K flüchtiger Speicher, aber es ist nicht innerhalb des Standardadressraums zugänglich und muss über spezielle Register geschrieben werden.

Die gebräuchlichsten ROM-Mappings (in der Community als LoROM und HiROM bezeichnet) bilden entweder 32K-Bänke in der oberen Hälfte des Adressraums in jeder Bank oder volle 64K-Bänke ab. "LoROM" bildet 32K-Bänke ab (00: 8000-00: FFFF, 01: 8000-01: FFFF, ..., 3F: 8000-3F: FFFF, gespiegelt bei 80: 8000-BF: FFFF), während HiROM 64K-Bänke abbildet (C0: 0000-C0: FFFF, C1: 0000: C1-FFFF, ... FF: 0000-FF: FFFF). Wie bereits erwähnt, arbeitet Arbeits RAM auf 64K Banks 7E und 7F. Ich bin nicht so vertraut mit SRAM funktioniert aber, dass Karten 70: 0000 Iirc und spiegelt sich in mehreren zusätzlichen Banken in der 7X-Region.

Edit: Als eine weitere Anmerkung, ROM ist natürlich nur lesbar. Dort werden Ihre Programmdaten (lesen Sie: das Spiel, seine Anweisungen und seine Assets) gespeichert. Alles, was geändert werden muss (komprimierte Daten, die dekomprimiert werden müssen, Level-Daten, Feinde, Spielerstatistiken, Tilemaps für welche Anzeigen auf den verschiedenen Hintergründen usw.), wird zur Verarbeitung in RAM (7E/7F) übertragen. ROM ist, was auf den Chips in Ihren Patronen gedruckt wird, während der RAM einfach jedes Mal, wenn das System eingeschaltet wird, mit Mülldaten gefüllt wird; Es ist ziemlich üblich, eine einfache Schleife zu verwenden, um RAM während der Initialisierungsschritte eines Spiels auf Null zu setzen.

Hoffe, dass die Dinge aufräumt!

Verwandte Themen