Glossary - haven1433/HexManiacAdvance GitHub Wiki
There are a few terms used throughout the documentation and application that you may want to be familiar with.
An Anchor is a mark on the data (^) that means that this location is the start of some new data. An anchor may have additional information associated with it:
- A unique name or path. You can use Ctrl+G or Goto in the menu to jump to anchors using their name. Pointers that point to the anchor will also use the anchor's name to make them easy to recognize.
- A format. A format attached to an anchor is how the program knows how to interpret complex data like text or tables.
- Pointers. If you right-click on an anchor, you can see a list of pointers that point to that anchor.
A set of 4 bytes in the game that store an address. Usually this lets some part of the data reference some other data, like linking to pokemon stats or names. It can also be used to let a fixed-length element use a variable length element, like how every pokedex entry needs a description, but not all descriptions are the same length. In the data, Pointers are underlined, highlighted in Blue, and wrapped in angle braces (<>). For example, the 4 bytes
56 34 12 08
would be interpreted as the pointer <123456>.
Most complex data in the game is stored in tables. An table is a list of a number of elements, where each element may have multiple segments. For example, pokemon battle stats are stored in a table, with several stats stored in each element, and one element for each pokemon. In an anchor format, tables use the [] characters.
A variable-length set of bytes that represent characters displayed to the player. For example, "The water is dyed a deep blue."
In an anchor format, text uses the "" characters. In tables, text is always a fixed length, so it uses a number after the quotes to express the length of the text. For example, the data.pokemon.names
table is:
^data.pokemon.names[name""11]
Which means that each name occupies 11 bytes.
Since text can be variable-length, one byte has to be used to tell the game that the text is done. This byte, 0xFF, is represented in Hex Maniac by the closing quotation mark (").
Ctrl+Click on text will open the text tool, which provides a text-specific editing experience.
Mapping involves a lot of types of data. Enough that it deserves its own glossary.
Term | Definition |
---|---|
behavior | Decides special behavior of a block, such as it being a door, or water, or ice, or grass |
block | 8 tiles arranged into 2 layers, 2 wide and 2 tall. Each tile can have a different palette |
blockmap | A list of which blocks and collisions should go in which cells. |
blockset | Data for a combination of block data, block behaviors, a tileset, and palettes. A map can have a primary blockset and a secondary blockset. |
border block | repeated pattern of blocks that are shown outside the edge of a layout |
cell | An individual 16x16 square on a map that characters can walk through. Each cell has both a block and collision. |
collision | Also called 'movement permission'. Determines whether you can walk through a cell, or if it's a wall, etc. HMA shows the selected collision via a light border around all cells that have that collision. |
connections | Maps that are connected to the current map via a North/South/East/West/Dive/Emerge movement. |
events | OWs, Scripts, Signposts, and Warps that appear on your map. OWs appear as sprites on your map, while Scripts/Signposts/Warps appear as colored squares. |
layout | A bunch of cells, arranged in a grid. This is the data that you normally think of as the 'map' and also includes the border block. |
OWs | An 'overworld event' usually visible as an item you can pick up or a character you can interact with. |
map header | Additional information about your map, such as the weather, whether or not you can run, the music, and a list of map scripts that are not tied to a specific event or cell. |
palette | 16 colors, used to color a tile or OW |
palette slot | One of 16 slots used to store background palettes, or one of 16 slots used to store foreground palettes. The GBA can only load 16+16 palettes at a time. |
tile | 1 layer of 8x8 pixels using 1 palette |
tileset | A set of up to 1024 8x8 tiles |