|ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ| | DC's Item and Save Dialog Location and Editing Guide | |________________________________________________________| By DChronos, with a little help from Jathys -Info as of 7/21/09- --Tile, Table, and Palette locations-- ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -> HUD/layer 3/FX1/Message Box Tiles: D3200 in GAMEBOY view mode -> Message Box Tile Tables: bank 85 or 0x28000 -> Palette: Uncertain,but most colors work with the normal GFX palettes for CRE tiles --Tile Table Byte Explanation-- ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ Tile Tables consist of 2 bytes, like 4E 28. The first byte is the tile number used in the tileset 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 (see below). You get this byte number 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 02 (as far as I know... also, see below) A max of 256 tiles is available to choose from. The message dialog boxes use a transparent tile at 0E for all the invisible space around the boxes, though so far, it doesn't seem to matter what's there because the priority bit (see below) hides these tiles behind layers 1 and 2 anyway. The black part of the message boxes uses tile 4E, which is black in the right palettes. The rest uses the letters and words at the bottom of the layer 3 tileset. --Priority bits added to flip/palette byte-- ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -> 00 priority bit places tiles behind layer 1, layer 2, and sprites. -> 20 priority bit places tiles in front of layer 1, layer 2, and sprites. --Other useful info-- ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ -> Each line of a message box extends the entire screen. (32 8x8 pixel tiles) -> Space above and below message boxes consists of a single table placed both at the top and bottom of each message box, and is 1 screen wide (32 tiles total). You can add/subtract black tiles to alter the width of the large and small message boxes, but you must also alter the messages below that go with them in order to make them appear correct. (check this) If you edit this blank space, keep in mind that you are changing it for BOTH the top and bottom of the message boxes. -> Make sure you use the priority bit of 20 so your tiles appear above layers 1 and 2, and the sprites! -> 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)-- ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ *Blank space above and below large (wide) message boxes (like missiles, power bombs, super missiles, items): 28000-2803F *Blank space above and below small (narrow) message boxes (like energy tank, reserve tank, beams, save): 28040-2807F *????-ASM used to determine which message box top and bottom to load and which message to load? Not sure, guessing it is. 28080-2877E -> info in () is number of bytes and type of message box, large or small (check above). *Energy Tank: (64 bytes, small) 2877F-287BE *Missiles: (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 Sumus 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 ": 2947F-294BE *"Save Completed.": (64 bytes, small) 294BF-294FE *Reserve Tank: (64 bytes, small) 294FF-2953E *Gravity Suit: (64 bytes, small) 2953F-2957E -> These 3 go to the save dialog, though I have no idea yet why there are 3 of them for "=>YES". The one with the save dialog group is the one that is first loaded when the message box appears. When you move to "NO", it switches to the no table, and when you move back to "YES" again, it switches to a different yes table than the one first loaded, one of the ones below. *"=>YES NO": (64 bytes, small) 29581-295C0 *"=>YES NO": (64 bytes, small) 295C1-29600 *" YES =>NO": (64 bytes, small) 29601-29640 ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ --> Thanks to Jathys for help on figuring out the color/flip/priority byte, as well as pointing me towards the general location of the message box tables. ^_^