User Tools

Site Tools

“UUUGGGHHH COOOOODE”

super:intermediate_guides:message_boxes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

super:intermediate_guides:message_boxes [2015/04/26 15:19] (current)
Line 1: Line 1:
 +==== 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:
 +<file>
 +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
 +</file>
 +
 +DC's Map Patch:
 +<file>
 +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
 +</file>
 +
 +
 +==== Other useful info ====
 +
 +Each line of a message box extends the entire screen. (32 8x8 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 15:19 (external edit)