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:
The Priority Bit can only be: 00 or 20
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.
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
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?
|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.|
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?)
|Energy Tank||64 bytes, small||2877F-287BE|
|Missile||256 bytes, large|
|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|
|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|
|Energy Recharge Completed.||192 bytes, small|
|blank space line||2927F-292BE|
|Missile Reload Completed.||192 bytes, small|
|blank space line||2933F-2937E|
|Would you like to save?||256 bytes, small|
|“Would You Like”||293BF-293FE|
|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|
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.