Tile, Table, and Palette locations

  HUD/layer 3/FX1/Message Box Tiles: D3200 in GAMEBOY mode
  Message Box Tile Tables: bank 85 or 0x28000
  Palette: Supposedly, all but 1 palette come from the first 2 (CRE/HUD) palettes. Palette 18 seems to be loaded during the message box appearance.
      Palette 08 - Pink Text, White Instruction Type ('select' etc. text)
      Palette 0C - Blue Text (Can be used for White Instruction Type)
      Palette 18 - Green Text, Red Arrow (Save dialog)
      Palette 1C - Orange Text

Tile Table Byte Explanation

Tile Tables consist of 2 bytes, like 4E 28. The first byte is the tile number used in the tileset that the table uses. Row 1 of the tile table goes from 00-0F, row 2 is from 10-1F, and row 3 is 20-2F, and so on. If you open an unheadered rom in a tile editor and scroll down to D3200 and change to view to gameboy mode, you can see how this is done a lot easier. In the example 4E 28, you see that tile 4E (to the right of the 'S' tile) is a blank tile.

The second byte consists of 3 things all together as one: The Palette Number, the Tile Flip, and the Priority Bit. You get the value of this byte by adding the 3 parts together, like, for our example, 4E 28, you can only get the 28 by having a palette number of 08, a flip of 00, and a priority bit of 20: 08 + 00 + 20 = 28. It's actually a bit more complex than that, but this is the easy way, and the only way you really need to know.

The Palette Number can only be: 00, 04, 08, 0C, 10, 14, 18, 1C

The Tile Flip can only be:

  00 - No flip
  40 - Horizontal flip
  80 - Vertical flip
  C0 - Horizontal and vertical flip

The Priority Bit can only be: 00 or 20

  00 - Places tiles behind layer 1, layer 2, and sprites.
  20 - Places tiles in front of layer 1, layer 2, and sprites.

Letter to HEX Conversion Table

By request, I'm including conversion tables to make it easy to type the letters into a ROM with a hex editor by seeing what their hex values are. Included is the original table and one for my map patch.

Also, there are two apostrophes, but they're different. Maybe one is a single qoute and the other is an apostrophe, or they could be left single qoute and right single quote and one is used as an apostrophe… it's up to you how you use it, as they aren't used in-game.

The item description text is complex, and not listed here. Use a tile editor for that.

Original ROM:

Letter: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . , ' ' ? ! Hex: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF

DC's Map Patch:

Letter: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . , ' ' ? ! Hex: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF

Other useful info

Each line of a message box extends the entire screen. (32 8×8 pixel tiles)

The lines above and below each message box consists of a single table placed both at the top and bottom of each message box, and is 1 screen wide (32 tiles)x 1 tile tall. You can add/subtract black tiles to alter the width of the large and small message boxes, but you must also alter all the message boxes below that go with each size in order to make them appear correct. If you edit this blank space, keep in mind that you are changing it for BOTH the top and bottom of the message boxes.

The message dialog boxes use the transparent tile at 0E for all the invisible space around the boxes, or the Clearing Tiles. The priority bit hides these tiles behind layers 1 and 2, as well as sprites, but can be seen if there is nothing on layer 2, or if part of layer 2 is transparent. By default, you won't actually see those tiles because they are already using a transparent color.

The black part of the message boxes uses tile 4E by default, which is black in the right palettes. The rest of the tiles are the letters and words at the bottom of the layer 3 tileset, as well as the HUD selections.

You can use any tile in the layer 3 tileset in your messages. Mini hint maps from item messages, anyone? Message box locations (in hex, clean headerless rom) 28000-2803F Blank lines above and below large (wide) message boxes (like missiles, power bombs, super missiles, items) 28040-2807F Blank lines above and below small (narrow) message boxes (like energy tank, reserve tank, beams, save) 28080-2877E ASM used to determine which message box top and bottom to load and which message to load. 28426-28435 in the ASM: Button Tiles. These are the letter tiles used by the game depending on what you chose for SHOT and DASH in the button config. See below. 2823F in the ASM: '0E 00'. This is the tile used as the clearing tiles above and below message boxes, and during transition. By default, this tile is the transparent tile in the layer 3 tileset and has a priority of 00.

Button tiles:

E0 28 - A E1 3C - B F7 2C - X F8 38 - Y D0 38 - SEL EB 38 - L F1 38 - R 4E 28 - (space, unused?)

Message List Energy Tank 64 bytes, small 2877F-287BE Missile 256 bytes, large

word “Missile” 	287BF-287FE
blank space line 	287FF-2883E
top of missile icon 	2883F-2887E
“select” etc. text 	2887F-288BE

Super Missile 256 bytes, large

words “Super Missile” 	288BF-288FE
blank space line 	288FF-2893E
top of S.Missile icon 	2893F-2897E
“select” etc. text 	2897F-289BE

Power bomb 256 bytes, large

words “Power Bomb” 	289BF-289FE
blank space line 	289FF-28A3E
top of P. Bomb icon 	28A3F-28A7E
“select” etc. text 	28A7F-28ABE

Grapple Beam 256 bytes, large

words “Grapple Beam” 	28ABF-28AFE
blank space line 	28AFF-28B3E
top of G. Beam icon 	28B3F-28B7E
“select” etc. text 	28B7F-28BBE

X-Ray Scope 256 bytes, large

words “X-Ray Scope” 	28BBF-28BFE
blank space line 	28BFF-28C3E
top of X-Ray icon 	28C3F-28C7E
“select” etc. text 	28C7F-28CBE

Varia Suit 64 bytes, small 28CBF-28CFE Spring Ball 64 bytes, small 28CFF-28D3E Morphing Ball 64 bytes, small 28D3F-28D7E Screw Attack 64 bytes, small 28D7F-28DBE Hi-Jump 64 bytes, small 28DBF-28DFE Space Jump 64 bytes, small 28DFF-28E3E Speed Booster 256 bytes, large

words “Speed Booster” 	28E3F-28E7E
blank space line 	28E7F-28EBE
blank space line 	28EBF-28EFE
“press &” etc. text 	28EFF-28F3E

Charge Beam 64 bytes, small 28F3F-28F7E Ice Beam 64 bytes, small 28F7F-28FBE Wave Beam 64 bytes, small 28FBF-28FFE Spazer 64 bytes, small 28FFF-2903E Plasma Beam 64 bytes, small 2903F-2907E Bomb 256 bytes, large

word “Bomb” 	2907F-290BE
top of Samus pic 	290BF-290FE
middle of Samus pic 	290FF-2913E
“(morph) &” etc. text 	2913F-2917E

Map Data Access Completed. 192 bytes, small

“Map Data Access” 	2917F-291BE
blank space line 	291BF-291FE
“Completed.” 	291FF-2923E

Energy Recharge Completed. 192 bytes, small

“Energy Recharge” 	2923F-2927E
blank space line 	2927F-292BE
“Completed.” 	292BF-292FE

Missile Reload Completed. 192 bytes, small

“Missile Reload” 	292FF-2933E
blank space line 	2933F-2937E
“Completed.” 	2937F-293BE

Would you like to save? 256 bytes, small

“Would You Like” 	293BF-293FE
“To Save?” 	293FF-2943E
blank space line 	2943F-2947E
“⇒YES NO ” (when dialog appears) 	2947F-294BE

Save Completed 64 bytes, small 294BF-294FE Reserve Tank 64 bytes, small 294FF-2953E Gravity Suit 64 bytes, small 2953F-2957E These next 3 tables go to the save dialog. Make sure to edit at least the 3 'YES/NO' tables that are used. The table above with the save dialog is the one that is first loaded when the message box appears. After that, the 2 labeled below are the ones used. “⇒YES NO” 64 bytes, small; unused 29581-295C0 “⇒YES NO” 64 bytes, small; selecting YES after NO 295C1-29600 “ YES ⇒NO” 64 bytes, small; selecting NO 29601-29640 Credits

Wiki page based on DChronos' message box guide v3.

Special thanks to Jathys for help on the color/flip/priority byte, as well as pointing me towards the location of the message box data. ^_^