Verstehe ich hier etwas falsch? 128kB ist viel kleiner als 0xFFFFFF Bytes.
Antwort
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!
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!
- 1. x86 Assembly, wie können im Speicher gespeicherte Variablen hinzugefügt werden?
- 2. JavaScript funktioniert nicht in FF und IE
- 3. Verbindung funktioniert nicht in FF
- 4. Wie können Sie eine Annotation in einem Javadoc referenzieren?
- 5. Understanding Assembly MIPS .ALIGN und Speicher Adressierung
- 6. Wie können Sie eine Datei in ein Projekt einbeziehen/referenzieren, ohne sie in das Projektverzeichnis zu kopieren?
- 7. Assembly Verwaltung in .NET können wir unseren eigenen „Assembly Cache-Speicher“ erstellen?
- 8. Die aktuelle Assembly mit CompilerParametern referenzieren
- 9. Thread lokalen Speicher in Assembly
- 10. Referenzieren von .NET-Assembly in VB6 wird nicht funktionieren
- 11. Referenzieren einer Silverlight-Assembly von .NET
- 12. Wie referenzieren Sie ein Modell in einem Laravel-Controller?
- 13. „Onclick“ Ereignis funktioniert nicht in FF und Chrome
- 14. T4 Toolbox - Referenzieren der Klasse in der aktuellen Assembly
- 15. AJAX funktioniert nicht in FF, funktioniert gut in Chrome
- 16. Referenzieren einer COM-Assembly in Visual Studio vs Konvertieren einer COM-Assembly über tlbimp.exe
- 17. mediaPlayer.setVolume hat nicht funktioniert, wenn ein Telefon in einer Stille
- 18. Warum das führende "#FF" in hexadezimalen Farbwerten?
- 19. jquery Fade-Effekt funktioniert nicht in FF
- 20. Google Bildsuche API, hat jemand ein Beispiel, das funktioniert?
- 21. Sperrt Speicher-Manipulation über Inline-Assembly
- 22. Wie können Smart Contracts mehrere Benutzer und unterschiedlichen Speicher verwalten?
- 23. Wie funktioniert das Betriebssystem, wenn ein Thread beendet wurde?
- 24. CSS funktioniert in IE, aber nicht FF
- 25. Referenzieren Sie eine anonyme Klasse?
- 26. Media Player Kontrolle funktioniert nur in IE (nicht FF/Chrome)
- 27. Das Modul sollte ein Assembly-Manifest enthalten
- 28. jscrollpane Mausrad funktioniert nicht in ie und ff
- 29. JQuery Hover-Menü, das wie ein normales Menü funktioniert, wenn der Browser JavaScript deaktiviert hat
- 30. Wie referenzieren Sie ein C# -Projekt aus einem C++/CLi-Projekt in derselben Lösung
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
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