Start displaying characters on maps
This commit is contained in:
@@ -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.
|
||||
|
||||
|
Reference in New Issue
Block a user