I'm hoping that the documentation will reflect the natural structure and terminology of a template as closely as possible. However, data structures, particularly arrays, should always start at 0x00. I think I'm finally going to have to pop for the 010 editor if I'm really going to get a grasp on this. I'm working on a bracket formula that I hope can fully explain the save structure. What I've got so far seems to want to include the initial block size dword as part of the save, and not part of the block. This is consistent with the data size as external to the data, and how BLOCK markers were not included as part of blocks in SA. By extension, the checksum got pushed outside of the save; it's part of the file so it can operate on the entire save.
File = [save]+checksum
Save = series of end of block offsets/markers + blocks followed by slack
Blocks include header with optional class structures + data sub-block size + data sub-block
Data sub-blocks include a header with optional class structures + size of data pool + data pool
Data pools can be a free form series of class structures and arrays (and data bubbles?).
Data bubbles - I'm looking at those threads with data sizes, but not end of block offsets. I was thinking it would be easier to handle these as part of an array except... What would happen if I saved during a mission, tweaked the wake timer to prevent crashing, and then launched another thread? Bubbles; what else would be contained in a pool?
As you can tell I am struggling mightily to find the proper terms and concepts. Please discuss and advise.
Data bubble - here, hold this chunk of memory and don't worry about what it is.
Array - a series of identical class records serving the same purpose.
Class structure - I don't know. It sounds cool. What I'm getting at is that blocks, headers, and data pools don't (in my mind's eye) contain any fields on their own. For example. I'm looking at System Info and Miscellaneous as two class structures within the block 1 header on PC saves. For PS2 I could disable the system info class since it isn't used.
Limits, the hardcoded values that directly effect the structure of the save. It occurs to me that someone may adjust these limits and break our editor. Wouldn't it be cool if the editor could read configuration files from a limits adjuster mod to account for the changes in the save? Limits do change without mods. SA Mobile v1.06 has 75 more radar blips than previous versions. Anyway, I don't think there's anything practical we can do about this now other than keep tabs on the limits and perhaps mark them for easy retrieval later.