Start displaying characters on maps

This commit is contained in:
2020-06-13 15:07:32 +01:00
parent eac6017c2c
commit 7677c30572
8 changed files with 173 additions and 50 deletions

View File

@@ -631,26 +631,45 @@ suggested above:
| Offset | Size | Meaning |
| ------ | ---- | ------- |
| 0 | 179 | ??? |
| 0 | 178 | ??? |
| 178 | 1 | Character type |
| 179 | 80 | Character name |
| 259 | 10 | Character attributes |
| 259 | 1 | Weapon Skill |
| 260 | 1 | Ballistic Skill |
| 261 | 1 | Unknown |
| 262 | 1 | Leadership |
| 263 | 1 | Toughness |
| 264 | 1 | Strength |
| 265 | 1 | Action Points |
| 266 | 1 | Unknown |
| 267 | 1 | Unknown |
| 268 | 1 | Health |
| 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.
just contains `\x02` and is then null-terminated all the way through - but maybe
that's just a data thing.
Given two characters of the same time, just in different locations, differing
How about their types? `HasAction.dat` lists numbers for character types, and
those show up immediately before the name. going from the character type to the
animation group is not yet fully deciphered - captains mess up a direct
correlation - but a fixed offset table allows me to draw the characters \o/.
Orientation is not yet deciphered, however.
Given two characters of the same type, just in different locations, differing
values are seen at:
* `0x103 - 0x10c` (hodgepodge)
* `0x178 - 0x1be` (hodgepodge)
* `0x2fc` (0, 1) - squad number?
I can easily correlate certain bytes in the first range to various character
attributes. A few remain unset.
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,
@@ -658,10 +677,7 @@ 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?
`0x1b{d,e}`. This may be some kind of multiple-squares-taken-up thing.
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
@@ -673,21 +689,6 @@ 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.