...
The game uses a 640x480 UI space stretched to the player's resolution. The size of widgets within this space is usually 1:1 with their bitmap's size, making it hard to scale them down while retaining detail. You can work around it somewhat by using negative bounds values, but this doesn't help with some existing widget bitmaps that are heavily cropped by bounds already (like map previews, which use the same bitmaps from Xbox but are cropped for PC).
Field | Type | Comments |
---|
| enum |
Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | |
|
| enum |
Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | |
|
| TagString |
| Rectangle2D |
Field | Type | Comments |
---|
| int16 | | int16 | | int16 | | int16 |
|
| bitfield |
Flag | Mask | Comments |
---|
| 0x1 | | | 0x2 | | | 0x4 | | | 0x8 | | | 0x10 | | | 0x20 | | | 0x40 | | | 0x80 | | | 0x100 | | | 0x200 | | | 0x400 | | | 0x800 | | | 0x1000 | | | 0x2000 | | | 0x4000 | | | 0x8000 | |
|
| uint32 |
| uint32 |
| TagDependency : bitmap |
| Block |
Field | Type | Comments |
---|
| enum | Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | | | 0xC | | | 0xD | | | 0xE | | | 0xF | | | 0x10 | | | 0x11 | | | 0x12 | | | 0x13 | | | 0x14 | | | 0x15 | | | 0x16 | | | 0x17 | | | 0x18 | | | 0x19 | | | 0x1A | | | 0x1B | | | 0x1C | | | 0x1D | | | 0x1E | | | 0x1F | | | 0x20 | | | 0x21 | | | 0x22 | | | 0x23 | | | 0x24 | | | 0x25 | | | 0x26 | | | 0x27 | | | 0x28 | | | 0x29 | | | 0x2A | | | 0x2B | | | 0x2C | | | 0x2D | | | 0x2E | | | 0x2F | | | 0x30 | | | 0x31 | | | 0x32 | | | 0x33 | | | 0x34 | | | 0x35 | | | 0x36 | | | 0x37 | | | 0x38 | | | 0x39 | | | 0x3A | |
|
|
| Block |
Field | Type | Comments |
---|
| bitfield | Flag | Mask | Comments |
---|
| 0x1 | | | 0x2 | | | 0x4 | | | 0x8 | | | 0x10 | | | 0x20 | | | 0x40 | | | 0x80 | | | 0x100 | | | 0x200 | | | 0x400 | | | 0x800 | |
| | enum | Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | | | 0xC | | | 0xD | | | 0xE | | | 0xF | | | 0x10 | | | 0x11 | | | 0x12 | | | 0x13 | | | 0x14 | | | 0x15 | | | 0x16 | | | 0x17 | | | 0x18 | | | 0x19 | | | 0x1A | | | 0x1B | | | 0x1C | | | 0x1D | | | 0x1E | | | 0x1F | | | 0x20 | | | 0x21 | |
| | enum | Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | | | 0x4 | | | 0x5 | | | 0x6 | | | 0x7 | | | 0x8 | | | 0x9 | | | 0xA | | | 0xB | | | 0xC | | | 0xD | | | 0xE | | | 0xF | | | 0x10 | | | 0x11 | | | 0x12 | | | 0x13 | | | 0x14 | | | 0x15 | | | 0x16 | | | 0x17 | | | 0x18 | | | 0x19 | | | 0x1A | | | 0x1B | | | 0x1C | | | 0x1D | | | 0x1E | | | 0x1F | | | 0x20 | | | 0x21 | | | 0x22 | | | 0x23 | | | 0x24 | | | 0x25 | | | 0x26 | | | 0x27 | | | 0x28 | | | 0x29 | | | 0x2A | | | 0x2B | | | 0x2C | | | 0x2D | | | 0x2E | | | 0x2F | | | 0x30 | | | 0x31 | | | 0x32 | | | 0x33 | | | 0x34 | | | 0x35 | | | 0x36 | | | 0x37 | | | 0x38 | | | 0x39 | | | 0x3A | | | 0x3B | | | 0x3C | | | 0x3D | | | 0x3E | | | 0x3F | | | 0x40 | | | 0x41 | | | 0x42 | | | 0x43 | | | 0x44 | | | 0x45 | | | 0x46 | | | 0x47 | | | 0x48 | | | 0x49 | | | 0x4A | | | 0x4B | | | 0x4C | | | 0x4D | | | 0x4E | | | 0x4F | | | 0x50 | | | 0x51 | | | 0x52 | | | 0x53 | | | 0x54 | | | 0x55 | | | 0x56 | | | 0x57 | | | 0x58 | | | 0x59 | | | 0x5A | | | 0x5B | | | 0x5C | | | 0x5D | | | 0x5E | | | 0x5F | | | 0x60 | | | 0x61 | | | 0x62 | | | 0x63 | | | 0x64 | | | 0x65 | | | 0x66 | | | 0x67 | | | 0x68 | | | 0x69 | | | 0x6A | | | 0x6B | | | 0x6C | | | 0x6D | | | 0x6E | | | 0x6F | | | 0x70 | | | 0x71 | | | 0x72 | | | 0x73 | | | 0x74 | | | 0x75 | | | 0x76 | | | 0x77 | | | 0x78 | | | 0x79 | | | 0x7A | | | 0x7B | | | 0x7C | | | 0x7D | | | 0x7E | | | 0x7F | | | 0x80 | | | 0x81 | | | 0x82 | | | 0x83 | | | 0x84 | | | 0x85 | | | 0x86 | | | 0x87 | | | 0x88 | | | 0x89 | | | 0x8A | | | 0x8B | | | 0x8C | | | 0x8D | | | 0x8E | | | 0x8F | | | 0x90 | | | 0x91 | | | 0x92 | | | 0x93 | | | 0x94 | | | 0x95 | | | 0x96 | | | 0x97 | | | 0x98 | | | 0x99 | | | 0x9A | | | 0x9B | | | 0x9C | | | 0x9D | | | 0x9E | | | 0x9F | | | 0xA0 | | | 0xA1 | | | 0xA2 | | | 0xA3 | | | 0xA4 | | | 0xA5 | | | 0xA6 | | | 0xA7 | | | 0xA8 | | | 0xA9 | | | 0xAA | | | 0xAB | | | 0xAC | | | 0xAD | | | 0xAE | | | 0xAF | | | 0xB0 | | | 0xB1 | | | 0xB2 | | | 0xB3 | | | 0xB4 | | | 0xB5 | | | 0xB6 | | | 0xB7 | | | 0xB8 | | | 0xB9 | | | 0xBA | | | 0xBB | | | 0xBC | | | 0xBD | |
| | TagDependency : ui_widget_definition | | TagDependency : sound | | TagString |
|
| Block |
Field | Type | Comments |
---|
| TagString | | enum | Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | | | 0x3 | |
|
|
| TagDependency : unicode_string_list |
| TagDependency : font |
| ColorARGB |
Field | Type | Comments |
---|
| float | | float | | float | | float |
|
| enum |
Option | Value | Comments |
---|
| 0x0 | | | 0x1 | | | 0x2 | |
|
| bitfield |
Flag | Mask | Comments |
---|
| 0x1 | | | 0x2 | | | 0x4 | | | 0x8 | |
|
| uint16 |
| int16 |
| int16 |
| bitfield |
Flag | Mask | Comments |
---|
| 0x1 | | | 0x2 | | | 0x4 | | | 0x8 | |
|
| TagDependency : bitmap |
| TagDependency : bitmap |
| Rectangle2D ? |
| Rectangle2D ? |
| TagDependency : ui_widget_definition |
| Block |
|
| Block |
|
Thanks to the following individuals for their research or contributions to this topic:
- Jakey (Bounds scaling workaround)
- Kavawuvi (Invader tag definitions)
- MosesOfEgypt (Tag structure research)