What does this mean? Not a whole lot, really. The layouts I extracted include some information not present in other dumps I have made, such as sizes and alignment intervals for tag_blocks, the name of the structures certain fields like tag_block indices and tag_block flags point to, addresses of misc functions, etc. These aren't terribly useful to the average person, and if interpreted wrong could lead to breaking shit.
A few things to note about these tag layouts. Firstly they are from the pc tool set, they are intended for editing tag files before they get compiled into a working map. They layouts are saved as C header files, although they are not real header files, these are not the names of the header files this data would have been stored in. Some tags and some tag_blocks have multiple field sets associated with them, meaning they have more than one layout. I chose to use what is defined as the "latest" layout to create these tag layouts with. The output can be found in the file "log.txt".
Code: Select all
- The options for enums and bitmasks are separated by a ":" character.
- _field_terminator is just used to signify the end of a list of fields, it has no data associated with it.
- I don't believe the field type _field_useless_pad is actually padding, I believe it is a legacy field left in the layouts that has a size of 0, although I'm not positive of this.
- FIELD_EXPLAINATION is just used for information in the GUI interface, it is not real data. If you see "<lb>" in an explanation it is my special character for a line break.
- _field_custom is used for functions, the only data the meta information has for it is an address of a function that gets called to do something relating to the function. I'm not sure of the actual size of this field, or if it is constant for all instances of it.
- _field_array_start is an array of elements, the elements being whats between the _field_array_start field and the _field_array_end field. The number associated with the _field_array_start field is the number of entries in the array.
- _field_char_block_index1/_field_short_block_index1/_field_long_block_index1 fields are indices into tag_blocks, the data associated with them is the name of the tag_block structure they reference.
- _field_char_block_index2/_field_short_block_index2/_field_long_block_index2 work similar to the above mentioned tag_block indices, except there is a function address used to get the block index, and a function address used to check the block selected is valid.
- _field_char_integer/_field_short_integer/_field_long_integer if these fields have extra data associated with them it means they are being used as a tag_block index, they work the same way as the previously mentioned block index fields.
- _field_byte_block_flags/_field_word_block_flags/_field_long_block_flags these fields work similar to tag_block indices, except they point to a flag field within the tag_block.