First pass at displaying Menu files
This commit is contained in:
@@ -1,6 +1,129 @@
|
||||
# *.mnu
|
||||
|
||||
These files appear to be the UI definitions for Chaos Gate. Some relate to
|
||||
system menus, other to in-game menus.
|
||||
system menus, other to in-game menus. Their names are hardcoded into the
|
||||
`WH40K.exe` binary. Each has a `.obj` file associated with it.
|
||||
|
||||
It's an ASCII-formatted text file with a 12-line header, followed by a number
|
||||
of descriptor records.
|
||||
|
||||
Here's the top of `MainGame.mnu`:
|
||||
|
||||
```
|
||||
MainGame.obj
|
||||
BACKGROUND COLOR 0..255..-1 trans : 0
|
||||
HYPERTEXT COLOR 0..255 : 120
|
||||
FONT TYPE 0..5 : 10
|
||||
wh40k_12
|
||||
basfnt12
|
||||
wh40k_47
|
||||
wh40k_12_red
|
||||
wh40k_12_blue
|
||||
wh40k_12_green
|
||||
wh40k_12_yellow
|
||||
NULL
|
||||
```
|
||||
|
||||
The first line of the header is a `.obj` file containing sprites we want to
|
||||
display on-screen. We see entries further down have a `SPRITEID`, which must
|
||||
reference entries in that file.
|
||||
|
||||
In `SaveGame.mnu`, we can see multiple `.obj` files can be referenced.
|
||||
|
||||
There are then 3 lines that seem to be fixed descriptor names with values
|
||||
that vary. Is this font colour, perhaps? Unsure.
|
||||
|
||||
Next is a variable-length list of font names, referencing files in the `Fonts`
|
||||
directory.
|
||||
|
||||
Finally, there's a list of records that specify the menu itself. Truncated
|
||||
contents of `SaveGame.mnu`:
|
||||
|
||||
```
|
||||
#rem..........Background
|
||||
MENUID : 1
|
||||
MENUTYPE : 0
|
||||
MOVEABLE : 0
|
||||
ACTIVE : 1
|
||||
SPRITEID : 0
|
||||
ACCELERATOR: 0
|
||||
DRAW TYPE : 0
|
||||
SHARE : -1
|
||||
X-CORD : -1
|
||||
Y-CORD : -1
|
||||
DESC :
|
||||
*
|
||||
#rem..........MAIN BACKGROUND
|
||||
MENUID : 2
|
||||
MENUTYPE : 45
|
||||
MOVEABLE : 0
|
||||
ACTIVE : 1
|
||||
SPRITEID : 0
|
||||
ACCELERATOR: 0
|
||||
DRAW TYPE : 0
|
||||
SHARE : -1
|
||||
X-CORD : -1
|
||||
Y-CORD : -1
|
||||
DESC :
|
||||
#rem.......... MAIN BACKGROUND
|
||||
SUBMENUID : 1
|
||||
SUBMENUTYPE: 31
|
||||
FONTTYPE : 20
|
||||
ACTIVE : 0
|
||||
SPRITEID : -1
|
||||
ACCELERATOR: 0
|
||||
DRAW TYPE : 0
|
||||
SHARE : 0
|
||||
SOUNDTYPE : 0
|
||||
DESC :
|
||||
*
|
||||
#rem..........Chat List Box Menu
|
||||
MENUID : 21
|
||||
MENUTYPE : 1
|
||||
MOVEABLE : 0
|
||||
ACTIVE : 1
|
||||
SPRITEID : 764
|
||||
ACCELERATOR: 0
|
||||
DRAW TYPE : 0
|
||||
SHARE : -1
|
||||
X-CORD : -1
|
||||
Y-CORD : -1
|
||||
DESC :
|
||||
[...]
|
||||
*
|
||||
~
|
||||
```
|
||||
|
||||
We start processing these as soon as we see `MENUID`, I suppose. Each toplevel
|
||||
item is `*`-delimited, and the list is terminated with `~`.
|
||||
|
||||
Each menu has a list of parameters:
|
||||
|
||||
|---------|----------|---------|
|
||||
| Name | Examples | Purpose |
|
||||
|---------|----------|---------|
|
||||
| `MENUID`| `1`, `2`, `3` | Maybe linking between menus? |
|
||||
| `MENUTYPE` | `0`, `1`, `2`, `3`, `45`, `300` | ? |
|
||||
| `MOVEABLE` | `0` | Unimplemented functionality? |
|
||||
| `ACTIVE` | `0`, `1` | Boolean - whether to show the thing |
|
||||
| `SPRITEID` | `-1`, `0`, `123` | Select from `.obj` file |
|
||||
| `ACCELERATOR` | | |
|
||||
| `DRAW TYPE` | | |
|
||||
| `SHARE` | | |
|
||||
| `X-CORD` | | |
|
||||
| `Y-CORD` | | |
|
||||
| `FONTTYPE` | | |
|
||||
| `SOUNDTYPE` | | |
|
||||
| `DESC` | | |
|
||||
|
||||
|
||||
Submenus also show a couple of unique values:
|
||||
|
||||
|------|----------|---------|
|
||||
| Name | Examples | Purpose |
|
||||
|------|----------|---------|
|
||||
| `SUBMENUID` | | |
|
||||
| `SUBMENUTYPE` | | |
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user