If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Pokémon mini/Memory Map: Difference between revisions
Jump to navigation
Jump to search
(Created page with "The common memory space for the Pokemon mini. == Broadly == * <tt>000000-000FFF (001000)</tt> = Internal BIOS * <tt>001000-001FFF (001000)</tt> = #R...") |
m (→RAM: add sprite attributes details) |
||
Line 18: | Line 18: | ||
* <tt>1000-12FF (0300)</tt> = Frame Buffer | * <tt>1000-12FF (0300)</tt> = Frame Buffer | ||
* <tt>1300-135F (0060)</tt> = Sprite Attributes | * <tt>1300-135F (0060)</tt> = [[#Sprite Attributes|Sprite Attributes]] | ||
* <tt>1360-141F (00C0)</tt> = Tile Map | * <tt>1360-141F (00C0)</tt> = Tile Map | ||
* <tt>1420-1FFF (0BE0)</tt> = General Purpose Memory | * <tt>1420-1FFF (0BE0)</tt> = General Purpose Memory | ||
Line 27: | Line 27: | ||
* <tt>1000-12FF (0300)</tt> = Frame Buffer | * <tt>1000-12FF (0300)</tt> = Frame Buffer | ||
* <tt>1300-135F (0060)</tt> = Sprite Attributes | * <tt>1300-135F (0060)</tt> = [[#Sprite Attributes|Sprite Attributes]] | ||
* <tt>1360-14DF (0180)</tt> = Tile Map | * <tt>1360-14DF (0180)</tt> = Tile Map | ||
* <tt>14E0-1FFF (0B20)</tt> = General Purpose Memory | * <tt>14E0-1FFF (0B20)</tt> = General Purpose Memory | ||
Line 34: | Line 34: | ||
* <tt>1000-12FF (0300)</tt> = Frame Buffer | * <tt>1000-12FF (0300)</tt> = Frame Buffer | ||
* <tt>1300-135F (0060)</tt> = Sprite Attributes | * <tt>1300-135F (0060)</tt> = [[#Sprite Attributes|Sprite Attributes]] | ||
* <tt>1360-1FFF (0CA0)</tt> = General Purpose Memory | * <tt>1360-1FFF (0CA0)</tt> = General Purpose Memory | ||
Line 45: | Line 45: | ||
* <tt>1000-1FFF (1000)</tt> = General Purpose Memory | * <tt>1000-1FFF (1000)</tt> = General Purpose Memory | ||
=== Sprite Attributes === | |||
Byte offset & bit mask of relevant bits (in hex). Note that the sprite position extends left and above by one sprite length, such that any sprite placed with an X of 0 or a Y of 0 will not be displayed on the screen. | |||
* <tt>00 & 7f</tt> = X position | |||
* <tt>01 & 7f</tt> = Y position | |||
* <tt>02 & ff</tt> = Index in spriteset | |||
* <tt>03 & 08</tt> = Enabled | |||
* <tt>03 & 04</tt> = Color inverted | |||
* <tt>03 & 02</tt> = Vertically flipped | |||
* <tt>03 & 01</tt> = Horizontally flipped | |||
== Registers == | == Registers == |
Revision as of 08:22, 20 July 2020
The common memory space for the Pokemon mini.
Broadly
- 000000-000FFF (001000) = Internal BIOS
- 001000-001FFF (001000) = PM RAM
- 002000-0020FF (000100) = Hardware Registers
- 002100-1FFFFF (1FDF00) = Cartridge Memory
- After this is mirrored versions of the content
RAM
Depending on how activated the Program Rendering Chip (PRC) is, this amount of memory it uses can be a different size. The PRC can have sprites and tiles separately enabled and tiles have multiple size options (for use with scrolling). Additionally, the PRC can be enabled to simply copy a buffer and not manage the buffer itself. Thus it can have one of the following schemata:
Sprites enabled and tile mode 0-2
Tile modes: 0 (12x16), 1 (16x12), or 2 (24x8)
- 1000-12FF (0300) = Frame Buffer
- 1300-135F (0060) = Sprite Attributes
- 1360-141F (00C0) = Tile Map
- 1420-1FFF (0BE0) = General Purpose Memory
Sprites enabled and tile mode 3
Tile mode 3 is 24x16
- 1000-12FF (0300) = Frame Buffer
- 1300-135F (0060) = Sprite Attributes
- 1360-14DF (0180) = Tile Map
- 14E0-1FFF (0B20) = General Purpose Memory
Sprites enabled and tiles disabled
- 1000-12FF (0300) = Frame Buffer
- 1300-135F (0060) = Sprite Attributes
- 1360-1FFF (0CA0) = General Purpose Memory
PRC set to copy only
- 1000-12FF (0300) = Frame Buffer
- 1300-1FFF (0D00) = General Purpose Memory
PRC disabled
- 1000-1FFF (1000) = General Purpose Memory
Sprite Attributes
Byte offset & bit mask of relevant bits (in hex). Note that the sprite position extends left and above by one sprite length, such that any sprite placed with an X of 0 or a Y of 0 will not be displayed on the screen.
- 00 & 7f = X position
- 01 & 7f = Y position
- 02 & ff = Index in spriteset
- 03 & 08 = Enabled
- 03 & 04 = Color inverted
- 03 & 02 = Vertically flipped
- 03 & 01 = Horizontally flipped
Registers
See here.
Cartridge Memory
- 2100-2101 (0002) = PM marker
- 2102-2107 (0006) = Reset Location
- 2108-210d (0006) = PRC Frame Copy IRQ
- 210e-2113 (0006) = PRC Render IRQ
- 2114-2119 (0006) = Timer 2 Underflow (upper) IRQ
- 211a-211f (0006) = Timer 2 Underflow (lower) IRQ
- 2120-2125 (0006) = Timer 1 Underflow (upper) IRQ
- 2126-212b (0006) = Timer 1 Underflow (lower) IRQ
- 212c-2131 (0006) = Timer 3 Underflow (upper) IRQ
- 2132-2137 (0006) = Timer 3 Comparator IRQ
- 2138-213d (0006) = 32hz Timer (256hz linked) IRQ
- 213e-2143 (0006) = 8hz Timer (256hz linked) IRQ
- 2144-2149 (0006) = 2hz Timer (256hz linked) IRQ
- 214a-214f (0006) = 1hz Timer (256hz linked) IRQ
- 2150-2155 (0006) = IR Receiver IRQ
- 2156-215b (0006) = Shake Sensor IRQ
- 215c-2161 (0006) = Power Key IRQ
- 2162-2167 (0006) = Right Key IRQ
- 2168-216d (0006) = Left Key IRQ
- 216e-2173 (0006) = Down Key IRQ
- 2174-2179 (0006) = Up Key IRQ
- 217a-217f (0006) = C Key IRQ
- 2180-2185 (0006) = B Key IRQ
- 2186-218b (0006) = A Key IRQ
- 218c-2191 (0006) =
- 2192-2197 (0006) =
- 2198-219d (0006) =
- 219e-21a3 (0006) = Cartridge IRQ
- 21a4-21ab (0008) = NINTENDO in plain text (required to boot)
- 21ac-21af (0004) = Game Code
- 21b0-21bb (000c) = Game Title (zero-padded)
- 21bc-21bd (0002) = 2P (Unknown purpose)
- 21be-21cf (0012) = Reserved (Zero)
- After this is general purpose ROM