-
Notifications
You must be signed in to change notification settings - Fork 10
Systems Memory Mapping
This page details how the memory of each supported system is mapped.
Memory map obtained from https://wiki.nesdev.com/w/index.php/CPU_memory_map
| Offset | Length | Description | used by RA |
|---|---|---|---|
| $0000 | $800 | 2KB internal RAM | ✔ |
| $0800 | $800 | Mirror of $000-$7FF | ✔ |
| $1000 | $800 | Mirror of $000-$7FF | ✔ |
| $1800 | $800 | Mirror of $000-$7FF | ✔ |
| $2000 | 8 | NES PPU registers | |
| $2008 | $1FF8 | Mirrors of $2000-2007 (repeats every 8 bytes) | |
| $4000 | $20 | Registers (Mostly APU) | |
| $4020 | $1FD | Cartridge Expansion ROM | |
| $6000 | $200 | SRAM | |
| $8000 | $4000 | PRG-ROM | |
| $C000 | $400 | PRG-ROM |
https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map
https://en.wikibooks.org/wiki/N64_Programming/Memory_mapping
http://gameboy.mongenel.com/dmg/asmmemmap.html
https://www.coranac.com/tonc/text/hardware.htm#sec-memory
Source: http://www.codeslinger.co.uk/pages/projects/mastersystem/memory.html
TODO: find a more reliable source.
| Offset | Length | Description |
|---|---|---|
| 0x0C000 | 0x02000 | RAM |
https://en.wikibooks.org/wiki/Genesis_Programming https://wiki.megadrive.org/index.php?title=Main_68k_memory_map see also Jamiras comment here: https://github.com/RetroAchievements/RALibretro/issues/47#issuecomment-455374796
http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-05.html#summary
| Offset | Length | Description |
|---|---|---|
| 0x00080 | 0x00080 | RAM |
The memory map is based on the PC-8801 layout1, but excludes graphics VRAM and extended RAM.
| Bank | Offset | Length | Description |
|---|---|---|---|
| 0 | 0x00000 | 0x10000 | Main RAM |
| 1 | 0x10000 | 0x1000 | Text VRAM |
Text VRAM is also known as high-speed RAM, and is used as a main RAM area in some titles.
The entire memory space2 is mapped in the PC-8801 main RAM bank, but only RAM is exposed, so most of the mapped space will remain uninitialized.
| Offset | Length | Description |
|---|---|---|
| 0x08000 | 0x08000 | RAM |
- User Guidelines
- Developer Guidelines
- Content Guidelines
- FAQ
- Setup Guide
- Emulator Support and Issues
- Ways to Contribute
- RABot, the RA Discord Robot
- Events
- Overlay Themes
- Useful Links
- Contributing with the docs
- About Us
- Tutorials
- Developer Docs
- How to Become an Achievement Developer
- Getting Started as an Achievement Developer
- Game Identification
- Achievement Design
- Achievement Scoring
- Difficulty Scale and Balance
- Progression and Win Condition Typing
- Badge and Icon Creation
- Achievement Development Overview
- Flags
- BitCount Size
- Alt Groups
- Hit Counts
- Delta Values
- Prior Values
- Value Definition
- Condition Syntax
- Minimum Required Versions for Logic Features
- Memory Inspector
- Real Examples
- Set Development Roadmap
- Achievement Templates
- Tips and Tricks
- Leaderboards
- Rich Presence
- RATools
- Console Specific Tips
- Emulator Hotkeys for Developers
- libretro core support
- Docs To Do List
- WIP User Code of Conduct
- WIP CoC FAQ
- WIP Content Guidelines
- WIP-Jr
- WIP---Dev-Tips---Code-Notes-En-Masse
- WIP-‐-Reauthorship-Policy
- Manifesto RetroAchievements
- Código de Conduta do Usuário
- FAQ - Perguntas Frequentes
- Como contribuir se você não é um desenvolvedor
- Tutorial para Jogos Multi-Discos
- Introdução
- Primeiros Passos como um Desenvolvedor de Conquistas
- Recursos de Lógica para Achievements
- Exemplos Reais
- Dicas e Truques
- Dicas Específicas de Console
- Modelos de Achievement
- Escala de Dificuldade e Equilíbrio
- Roteiro de Desenvolvimento de um Set de Conquistas
- Criação de Ícones e Emblemas
- Leaderboards
- Rich Presence
- Design de Conquistas
- Manifesto RetroAchievements
- Código de Conducta del Usuario
- FAQ - Preguntas Frecuentes
- Tablas Globales y Reglas para la Casería de Logros
- Mi juego no esta cargando los logros
- Como contribuir si no eres un desarrollador
- Por que no deberías utilizar la función de cargar estado
- Contribuyendo con los documentos
- Como funciona la Documentación de RA
- Descargas
- Intro
- Código de Conducta del Desarrollador
- Como convertirme en un Desarrollador de Logros
- Primeros pasos como un Desarrollador de Logros
- Un vistazo al Inspector de Memoria
- Características en la Logica de un Logro
- Ejemplos Reales
- Intro
- Utilizando Hit Counts como un Temporizador
- Utilizando Valores Delta y Hit Counts para Detectar un Incremento
- Un Ejemplo Simple en como evitar el Abuso de Estados de Guardado
- Evitar el Problema de que un Contador se Incremente Dos Veces en el Mismo Frame
- Creando un Temporizador con un ResetIf Hits basándote en la Velocidad de un Juego
- Plantillas para Logros
- Tips y Trucos
- Escala de Dificultad y Balance
- Diseño de Logros
- Mapa de Desarrollo de Set
- Revisiones en Set de Logros
- Creación de Iconos y Badges
- Tablas de Clasificación
- Rich Presence
- Trabajando con el ROM apropiado
- Identificación del Juego
- Guía para Sets Bonus
- Logros para ROM hacks
- Tips Específicos por Consola