Pokémon mini/Memory Map: Difference between revisions

From Data Crystal
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

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