Some more character investigations
This commit is contained in:
@@ -598,7 +598,8 @@ Ignoring them for now, here's a first guess at a header:
|
||||
| 24 | 2 | ??? - varies. Seems related to character/squad position? |
|
||||
| 26 | 2 | ??? - invariant `00 04` |
|
||||
| 28 | 4 | ??? - varies (0 vs 5) |
|
||||
| 32 | 4 | Number of thingies (26 vs 1) |
|
||||
| 32 | 1 | Number of thingies |
|
||||
| 33 | 3 | ???. With a Lord of Change on the map, only one byte works as thingies count |
|
||||
| 36 | 20 | Padding? |
|
||||
|
||||
56 bytes of data is interesting because the value of that first, ignored byte is
|
||||
@@ -625,7 +626,78 @@ Generating a map with no characters at all, the trailer is 2,447 bytes, and the
|
||||
mission title starts at 0x3B (59). So we can say we have 20 bytes of padding as
|
||||
a first approximation?
|
||||
|
||||
The "trailer trailer", for want of a better term, seems to be organised as:
|
||||
Here's where we're at with the per-character data, going from the padding values
|
||||
suggested above:
|
||||
|
||||
| Offset | Size | Meaning |
|
||||
| ------ | ---- | ------- |
|
||||
| 0 | 179 | ??? |
|
||||
| 179 | 80 | Character name |
|
||||
| 259 | 10 | Character attributes |
|
||||
| 269 | 495 | ??? |
|
||||
| 764 | 1(?) | Squad number? |
|
||||
| 765 | 927 | ??? |
|
||||
|
||||
There's still a lot of bytes to dig through, but this allows me to load the
|
||||
character names from Chapter01 correctly, with the exception of record 57 which
|
||||
just contains `\x02` and is then null-terminated all the way through. Looking
|
||||
at the bytes for one character record, I can easily correlate certain bytes to
|
||||
various attributes; that's just done in code for the moment.
|
||||
|
||||
Given two characters of the same time, just in different locations, differing
|
||||
values are seen at:
|
||||
|
||||
* `0x103 - 0x10c` (hodgepodge)
|
||||
* `0x178 - 0x1be` (hodgepodge)
|
||||
* `0x2fc` (0, 1) - squad number?
|
||||
|
||||
In Chapter01, picking a random character (Gorgon) and looking at his squadmates,
|
||||
they are all in the same squad, and no other characters are in that squad, so it
|
||||
looks pretty diagnostic to me. There's nothing in the UI to indicate the squad,
|
||||
though.
|
||||
|
||||
Now let's look for position. In my 2-character map, they're at 65,50 and 70,55.
|
||||
Within a character, I see those numbers repeated twice - around `0x1b{9,a}` and
|
||||
`0x1b{d,e}`.
|
||||
|
||||
Characters don't seem to take up multiple x,y squares, but they *can* take up
|
||||
multiple Z levels. So maybe this is a bounding box of some kind?
|
||||
|
||||
Adding a (tall) Lord of Change to the map gave me `02 36 45 00 02 37 45`, which
|
||||
doesn't quite match what my eyes are telling me for Z,Y,X. In addition, the data
|
||||
immediately after this offset changed into a large number of coordinate-like
|
||||
sets of values - far too many for it to actually be a bounding box. However, the
|
||||
first one remains good as a position specifier.
|
||||
|
||||
Down in `0x679` (Chaos Sorcerer) or `0x68D` (Lord of Change), the map coords for
|
||||
the *other* character appears, which is downright odd. For now, just use the
|
||||
first-indexed value.
|
||||
|
||||
How about their types? We need to be able to work out which animations to show,
|
||||
so they must be uniquely identified somehow. Ultramarine captain is animation
|
||||
group 12, while chaos lord is group... 14? Not certain. I don't see either of
|
||||
those numbers in a promising spot, anyway.
|
||||
|
||||
|
||||
I do see differences at around `0x170`:
|
||||
|
||||
```
|
||||
Ultramarine Captain: 00 00 00 00 00 00 00 00 50 03 00 00 00 00 00 00
|
||||
Chaos Lord: 00 00 00 00 11 01 00 00 47 03 00 04 00 00 02 00
|
||||
```
|
||||
|
||||
Maybe they're somewhat relevant, it's hard to say.
|
||||
|
||||
Thingies next: these aren't decoded at all yet, and the sizes seem to be
|
||||
variable.
|
||||
|
||||
| Offset | Size | Meaning |
|
||||
| ------ | ---- | ------- |
|
||||
| | | |
|
||||
|
||||
|
||||
Finally, the "trailer trailer", for want of a better term, seems to be organised
|
||||
as:
|
||||
|
||||
| Offset | Size | Meaning |
|
||||
| ----- | ---- | ------- |
|
||||
@@ -633,6 +705,8 @@ The "trailer trailer", for want of a better term, seems to be organised as:
|
||||
| 255 | 2048 | Briefing |
|
||||
| 2304 | 85 | ??? - each byte is 1 or 0. Spaced so it may be partly uint32 |
|
||||
|
||||
This duplicates the information found in the `.TXT` files. No idea what the end
|
||||
data is yet.
|
||||
|
||||
## Soldiers At War
|
||||
|
||||
|
Reference in New Issue
Block a user