I'll try to detail some of my
findings of the AA2 character data file format here. 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).
No hay comentarios:
Publicar un comentario