User Tools

Site Tools

“Let's make beautiful things today”

super:intermediate_guides:message_boxes

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. ^_^

super/intermediate_guides/message_boxes.txt · Last modified: 2015/04/26 11:19 (external edit)