Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I'll try to detail some of my findings of the AA2 character data file format here as I'm working on it for my online AA2 trait editor (http://aa2.zawiarr.com). I did most of the work charting this info myself, but some fellow anons in /hgg/ helped out initially so big thanks to them.
- The data is stored inside a PNG container, and all offsets are based of the first IEND (49 45 4E 44) of the file. All values are in hex (0x) unless otherwise specified.
- | Offset | What | Length | Value/Info
- +--------+----------------------+--------+-----------------------------------------
- | 0 | PNG IEND | 4 | (49 45 4E 44)
- | 1D | Last name text | 104 | Null terminated, so effectively 259 characters max. Text format info below.
- | 121 | First name text | 104 | Same as above.
- | 225 | Profile text | FF | Editor says max 255 chars, but keeps reading if not terminated.
- | 692 | Intelligence | 1 | 00 to 04: Lowest -> Highest.
- | 698 | Strength | 1 | 00 to 04: Lowest -> Highest.
- | 6A3 | Sociability | 1 | 00 to 04: Lowest -> Highest.
- | 6A4 | Fighting style | 1 | 00 to 02: No restraint, One blow, Irregular.
- | 6A5 | Virtue | 1 | 00 to 04: Lowest -> Highest.
- | 6A6 | Sexual orientation | 1 | 00 to 04: Hetero, Lean hetero, Bisexual, Lean homo, Homo.
- | 6A7 | Sexual experience | 1 | 00 or 01 (False or True)
- | 6A8 | Anal experience | 1 | 00 or 01
- | 6AA | Character traits | 26 | There are 38 traits each one byte, value is either 00 or 01. Order same as in the editor.
- | 6D0 | Rainbow status | 1 | 00 or 01
- | 6D1 | Sexual Preferences | D | Same as the traits, but only 13.
- ยค These are the confirmed values for now. I assume most of the other follows roughly in the same order they are presented in the character editor, as that seems to be the common pattern. I will edit in more values once I have confirmed them properly.
- Text format
- ------------
- The text format was a real pain to figure out. The text is coded in japanese Shift-JIS encoding, and then all the bytes are flipped for some weird reason I really don't understand. So to read it back you first need to extract a text block, then do a bitwise inversion on all bytes (xor FF or ~). You then get Shift-JIS (where ASCII is readable at least) which can be converted to something actually useful (UTF-8). To write back you just reverse the process. Also note that since this seems to be using C-strings you should terminate all text with null (\0) before inverting (or FF (~\0) after the invert).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement