448 lines
19 KiB
Markdown
448 lines
19 KiB
Markdown
|
# ENUMERATIONS ################################################################
|
||
|
|
||
|
Here is a list of names and descriptions for enumerations used throughout this
|
||
|
document. The names may not match those used in the original engine and are
|
||
|
re-named for clarity of purpose.
|
||
|
|
||
|
### Picture Opcode ###
|
||
|
|
||
|
Operations used in QuickDraw images. Aleph One ignores most of these, so it's
|
||
|
only necessary to document what's ignored and how to process CopyBits. (If
|
||
|
you're interested in the QuickDraw format, Apple has legacy documents still
|
||
|
available on the Internet.)
|
||
|
|
||
|
Opcodes `$0100` through `$7FFF` are skipped by seeking forward by the most
|
||
|
significant byte's value times two.
|
||
|
|
||
|
Opcodes `$8000` through `$8100` are reserved and therefore ignored.
|
||
|
|
||
|
Any unspecified opcodes are not worth skipping, and the state machine should
|
||
|
exit upon reading them.
|
||
|
|
||
|
| Name | Value | Ignored | Extra data |
|
||
|
| ---- | ----- | :-----: | ---------- |
|
||
|
| `NoOp` | `$0000` | No | None |
|
||
|
| `Clip` | `$0001` | Yes | `u16 Size`, `(Size & ~1) - 2`B |
|
||
|
| `BkPat` | `$0002` | Yes | 8B |
|
||
|
| `TxFont` | `$0003` | Yes | 2B |
|
||
|
| `TxFace` | `$0004` | Yes | 2B |
|
||
|
| `TxMode` | `$0005` | Yes | 2B |
|
||
|
| `SpExtra` | `$0006` | Yes | 4B |
|
||
|
| `PnSize` | `$0007` | Yes | 4B |
|
||
|
| `PnMode` | `$0008` | Yes | 2B |
|
||
|
| `PnPat` | `$0009` | Yes | 8B |
|
||
|
| `FillPat` | `$000A` | Yes | 8B |
|
||
|
| `OvSize` | `$000B` | Yes | 4B |
|
||
|
| `Origin` | `$000C` | Yes | 4B |
|
||
|
| `TxSize` | `$000D` | Yes | 2B |
|
||
|
| `FgColor` | `$000E` | Yes | 4B |
|
||
|
| `BgColor` | `$000F` | Yes | 4B |
|
||
|
| `TxRatio` | `$0010` | Yes | 8B |
|
||
|
| `VersionOp` | `$0011` | Yes | 2B |
|
||
|
| `PnLocHFrac` | `$0015` | Yes | 2B |
|
||
|
| `ChExtra` | `$0016` | Yes | 2B |
|
||
|
| `RGBFgCol` | `$001A` | Yes | 6B |
|
||
|
| `RGBBkCol` | `$001B` | Yes | 6B |
|
||
|
| `HiliteMode` | `$001C` | Yes | None |
|
||
|
| `HiliteColor` | `$001D` | Yes | 6B |
|
||
|
| `DefHilite` | `$001E` | Yes | None |
|
||
|
| `OpColor` | `$001F` | Yes | 6B |
|
||
|
| `Line` | `$0020` | Yes | 8B |
|
||
|
| `LineFrom` | `$0021` | Yes | 4B |
|
||
|
| `ShortLine` | `$0022` | Yes | 6B |
|
||
|
| `ShortLineFrom` | `$0023` | Yes | 2B |
|
||
|
| `LineJustify` | `$002D` | Yes | 10B |
|
||
|
| `GlyphState` | `$002E` | Yes | 8B |
|
||
|
| `FrameRect` | `$0030` | Yes | 8B |
|
||
|
| `PaintRect` | `$0031` | Yes | 8B |
|
||
|
| `EraseRect` | `$0032` | Yes | 8B |
|
||
|
| `InvertRect` | `$0033` | Yes | 8B |
|
||
|
| `FillRect` | `$0034` | Yes | 8B |
|
||
|
| `FrameSameRect` | `$0038` | Yes | None |
|
||
|
| `PaintSameRect` | `$0039` | Yes | None |
|
||
|
| `EraseSameRect` | `$003A` | Yes | None |
|
||
|
| `InvertSameRect` | `$003B` | Yes | None |
|
||
|
| `FillSameRect` | `$003C` | Yes | None |
|
||
|
| `PackBitsRect` | `$0098` | No | CopyBits structure |
|
||
|
| `PackBitsRgn` | `$0099` | No | CopyBits structure |
|
||
|
| `DirectBitsRect` | `$009A` | No | CopyBits structure |
|
||
|
| `DirectBitsRgn` | `$009B` | No | CopyBits structure |
|
||
|
| `ShortComment` | `$00A0` | Yes | 2B |
|
||
|
| `LongComment` | `$00A1` | Yes | 2B, `u16 Size`, `Size & ~1`B |
|
||
|
| `OpEndPic` | `$00FF` | No | 2B |
|
||
|
| `Version` | `$02FF` | Yes | 2B |
|
||
|
| `HeaderOp` | `$0C00` | Yes | Header Op structure |
|
||
|
| `CompressedQuickTime` | `$8200` | No | QuickTime Image structure |
|
||
|
|
||
|
### CopyBits Pixel Depth ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Pal1` | `1` | Color mapped bit |
|
||
|
| `Pal2` | `2` | Color mapped dibit |
|
||
|
| `Pal4` | `4` | Color mapped nibble |
|
||
|
| `Pal8` | `8` | Color mapped byte |
|
||
|
| `X1RGB5` | `16` | X1RGB5 |
|
||
|
| `RGB8` | `32` | RGB8 (if NoPad) or XRGB8 |
|
||
|
|
||
|
### Pack Type ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Default` | `0` | Always pack |
|
||
|
| `None` | `1` | Never pack |
|
||
|
| `NoPad` | `2` | Never pack, no padding channel in 32bpp mode |
|
||
|
| `RLE16` | `3` | Only pack in 16bpp mode |
|
||
|
| `RLE32` | `4` | Only pack in 32bpp mode, no padding channel |
|
||
|
|
||
|
### Polygon Type ###
|
||
|
|
||
|
| Name | Value | Description | Permutation |
|
||
|
| ---- | ----- | ----------- | ----------- |
|
||
|
| `Normal` | `0` | Normal, no effects | None |
|
||
|
| `ImpassItem` | `1` | Items may not pass | None |
|
||
|
| `ImpassMons` | `2` | Monsters may not pass | None |
|
||
|
| `Hill` | `3` | Hill (for King of the Hill) | None |
|
||
|
| `Base` | `4` | Base (for Capture The Flag et al) | Team |
|
||
|
| `Platform` | `5` | Platform | Plat index |
|
||
|
| `TrigLightOn` | `6` | Triggers light on | Light index |
|
||
|
| `TrigPlatOn` | `7` | Triggers platform on | Plat index |
|
||
|
| `TrigLightOff` | `8` | Triggers light off | Poly index |
|
||
|
| `TrigPlatOff` | `9` | Triggers platform off | Poly index |
|
||
|
| `Teleporter` | `10` | Teleports to polygon centroid | Poly index |
|
||
|
| `ZoneBorder` | `11` | Zone border | None |
|
||
|
| `Goal` | `12` | Goal point | None |
|
||
|
| `TrigMonsVis` | `13` | Triggers near-by visible monsters | None |
|
||
|
| `TrigMonsInv` | `14` | Triggers near-by invisible monsters | None |
|
||
|
| `TrigMonsDual` | `15` | Same as TrigMonsInv | None |
|
||
|
| `TrigItems` | `16` | Triggers near-by invisible items | None |
|
||
|
| `MustExplore` | `17` | Must be entered for Exploration | None |
|
||
|
| `AutoExit` | `18` | Teleports to next level if success | None |
|
||
|
|
||
|
### Old Polygon Type ###
|
||
|
|
||
|
| Name | Value | Description | Permutation |
|
||
|
| ---- | ----- | ----------- | ----------- |
|
||
|
| `Normal` | `0` | Normal, no effects | None |
|
||
|
| `ImpassItem` | `1` | Items may not pass | None |
|
||
|
| `ImpassMons` | `2` | Monsters may not pass | None |
|
||
|
| `MinorOuch` | `3` | Damages the player a little | None |
|
||
|
| `MajorOuch` | `4` | Damages the player a lot | Team |
|
||
|
| `Platform` | `5` | Platform | Plat index |
|
||
|
| `TrigLightOn` | `6` | Triggers light on | Light index |
|
||
|
| `TrigPlatOn` | `7` | Triggers platform on | Plat index |
|
||
|
| `TrigLightOff` | `8` | Triggers light off | Poly index |
|
||
|
| `TrigPlatOff` | `9` | Triggers platform off | Poly index |
|
||
|
| `Teleporter` | `10` | Teleports to polygon centroid | Poly index |
|
||
|
| `Glue` | `11` | Slows the player down | None |
|
||
|
| `GlueTrigger` | `12` | TODO | TODO |
|
||
|
| `SuperGlue` | `13` | Slows the player down a lot | None |
|
||
|
| `MustExplore` | `14` | Must be entered for Exploration | None |
|
||
|
| `AutoExit` | `15` | Teleports to next level if success | None |
|
||
|
|
||
|
### Control Panel Type ###
|
||
|
|
||
|
This is used internally for each control panel preset and determines the
|
||
|
permutation each one uses.
|
||
|
|
||
|
| Name | Value | Description | Permutation |
|
||
|
| ---- | ----- | ----------- | ----------- |
|
||
|
| `Oxygen` | `0` | Oxygen refuel | None |
|
||
|
| `Shield` | `1` | Health charger | None |
|
||
|
| `Shield2x` | `2` | Health charger (2x) | None |
|
||
|
| `Shield3x` | `3` | Health charger (3x) | None |
|
||
|
| `Light` | `4` | Light switch | Light index |
|
||
|
| `Platform` | `5` | Platform switch | Plat index |
|
||
|
| `Tag` | `6` | Tag switch | Tag or -1 |
|
||
|
| `PatternBuf` | `7` | Save station | None |
|
||
|
| `Terminal` | `8` | Computer terminal | None |
|
||
|
|
||
|
### Side Type ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Full` | `0` | First texture is mapped over the whole side |
|
||
|
| `High` | `1` | First texture is mapped on the ceiling panel |
|
||
|
| `Low` | `2` | First texture is mapped on the floor panel |
|
||
|
| `Composite` | `3` | Composite texture (Not implemented) |
|
||
|
| `Split` | `4` | First texture for ceiling panel, second for floor |
|
||
|
|
||
|
"Panel" here refers to a protrusion in between two polygons. These would be
|
||
|
mapped to upper/lower textures in Doom for instance. Even the source code for
|
||
|
Marathon 2 itself acknowledges how redundant this enumeration is.
|
||
|
|
||
|
### Saved Object Group ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| TODO | `0` | Monster |
|
||
|
| TODO | `1` | Object |
|
||
|
| TODO | `2` | Item |
|
||
|
| TODO | `3` | Player |
|
||
|
| TODO | `4` | Goal |
|
||
|
| TODO | `5` | Sound source (facing is sound volume) |
|
||
|
|
||
|
### Transfer Mode ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Normal` | `0` | Normal |
|
||
|
| `FadeBlack` | `1` | Fade to black |
|
||
|
| `Invisibility` | `2` | Invisibility |
|
||
|
| `Invisibility2` | `3` | Invisibility (subtle) |
|
||
|
| `Pulsate` | `4` | Pulsate (polygons only) |
|
||
|
| `Wobble` | `5` | Wobble (polygons only) |
|
||
|
| `Wobble2` | `6` | Wobble (fast, polygons only) |
|
||
|
| `Static` | `7` | Static |
|
||
|
| `Static2` | `8` | 50% static |
|
||
|
| `Sky` | `9` | Sky |
|
||
|
| `Smear` | `10` | Smear |
|
||
|
| `StaticFade` | `11` | Static (fade out) |
|
||
|
| `StaticPulse` | `12` | Static (pulsating) |
|
||
|
| `FoldIn` | `13` | Fold-in |
|
||
|
| `FoldOut` | `14` | Fold-out |
|
||
|
| `SlideHorz` | `15` | Horizontal slide |
|
||
|
| `SlideHorz2` | `16` | Horizontal slide (fast) |
|
||
|
| `SlideVert` | `17` | Vertical slide |
|
||
|
| `SlideVert2` | `18` | Vertical slide (fast) |
|
||
|
| `Wander` | `19` | Wander |
|
||
|
| `Wander2` | `20` | Wander (fast) |
|
||
|
| `BigSky` | `21` | Big sky |
|
||
|
|
||
|
### Light Type ###
|
||
|
|
||
|
| Name | Value | Description |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Normal` | `0` | Normal light |
|
||
|
| `Strobe` | `1` | Strobe light |
|
||
|
| `Media` | `2` | Media light |
|
||
|
|
||
|
### Old Light Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Normal` | `0` |
|
||
|
| `Rheostat` | `1` |
|
||
|
| `Flourescent` | `2` |
|
||
|
| `Strobe` | `3` |
|
||
|
| `Flickers` | `4` |
|
||
|
| `Pulsates` | `5` |
|
||
|
| `Annoying` | `6` |
|
||
|
| `EnergyEfficient` | `7` |
|
||
|
|
||
|
### Old Light Mode ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `TurningOn` | `0` |
|
||
|
| `Active` | `1` |
|
||
|
| `TurningOff` | `2` |
|
||
|
| `Inactive` | `3` |
|
||
|
| `Toggle` | `4` |
|
||
|
|
||
|
- `TurningOn` and `Active` mean the new light created from this should have the
|
||
|
`InitActive` flag. Others do not mean anything.
|
||
|
|
||
|
### Wad Version ###
|
||
|
|
||
|
Used to determine how the engine loads the Wad file.
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `VerBase` | `0` |
|
||
|
| `VerDir` | `1` |
|
||
|
| `VerOver` | `2` |
|
||
|
| `VerMI` | `4` |
|
||
|
|
||
|
- `VerBase` has no directory entry.
|
||
|
- `VerDir` has a directory entry.
|
||
|
- `VerOver` supports data overlays.
|
||
|
- `VerMI` is used for Marathon Infinity data.
|
||
|
|
||
|
### Data Version ###
|
||
|
|
||
|
Used to determine how the engine loads map data.
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `DataM1` | `0` |
|
||
|
| `DataM2` | `1` |
|
||
|
|
||
|
- `DataM1` means Marathon 1 map data.
|
||
|
- `DataM2` means Marathon 2 map data.
|
||
|
|
||
|
### Terminal Group Type ###
|
||
|
|
||
|
| Name | Value | Permutation |
|
||
|
| ---- | ----- | ----------- |
|
||
|
| `Logon` | `0` | Pict ID |
|
||
|
| `Unfinished` | `1` | None |
|
||
|
| `Success` | `2` | None |
|
||
|
| `Failure` | `3` | None |
|
||
|
| `Info` | `4` | None |
|
||
|
| `End` | `5` | None |
|
||
|
| `TeleInter` | `6` | Level ID |
|
||
|
| `TeleIntra` | `7` | Polygon ID |
|
||
|
| `Checkpoint` | `8` | Goal ID |
|
||
|
| `Sound` | `9` | Sound ID |
|
||
|
| `Movie` | `10` | Movie ID |
|
||
|
| `Track` | `11` | Track ID |
|
||
|
| `Pict` | `12` | Pict ID |
|
||
|
| `Logoff` | `13` | Pict ID |
|
||
|
| `Camera` | `14` | Object ID |
|
||
|
| `Static` | `15` | 1/30 secs |
|
||
|
| `Tag` | `16` | Tag number |
|
||
|
|
||
|
### Terminal Color ###
|
||
|
|
||
|
These are the default colors. These can be overridden with mods.
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `LightGreen` | `0` |
|
||
|
| `White` | `1` |
|
||
|
| `Red` | `2` |
|
||
|
| `DarkGreen` | `3` |
|
||
|
| `LightBlue` | `4` |
|
||
|
| `Yellow` | `5` |
|
||
|
| `DarkRed` | `6` |
|
||
|
| `DarkBlue` | `7` |
|
||
|
| `Color8` | `8` |
|
||
|
| `Color9` | `9` |
|
||
|
|
||
|
### Sound Behaviour ###
|
||
|
|
||
|
Sound behaviours are used to determine falloff and volume bounds of a sound.
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Quiet` | `0` |
|
||
|
| `Normal` | `1` |
|
||
|
| `Loud` | `2` |
|
||
|
|
||
|
- `Quiet` sounds will not be heard at all when obstructed, and only play at full
|
||
|
volume point-blank. They fall off very quickly, with a range of only 5 world
|
||
|
units.
|
||
|
- `Normal` sounds will be heard at at most half volume when obstructed, and fall
|
||
|
off at 10 world units unobstructed.
|
||
|
- `Loud` sounds will be heard at 3/4 volume when obstructed and can be heard at
|
||
|
full volume for twice the distance as a normal sound, and fall off at 15 units
|
||
|
unobstructed.
|
||
|
|
||
|
### Light Function ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Constant` | `0` |
|
||
|
| `Linear` | `1` |
|
||
|
| `Smooth` | `2` |
|
||
|
| `Flicker` | `3` |
|
||
|
|
||
|
- `Constant` maintains the final intensity for `Period`.
|
||
|
- `Linear` transitions between the initial and final intensities over `Period`.
|
||
|
- `Smooth` does a sine transition in the same fashion as `Linear`.
|
||
|
- `Flicker` flickers between a random smoothed intensity and the final one.
|
||
|
|
||
|
### Media Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Water` | `0` |
|
||
|
| `Lava` | `1` |
|
||
|
| `Goo` | `2` |
|
||
|
| `Sewage` | `3` |
|
||
|
| `Jjaro` | `4` |
|
||
|
|
||
|
### Texture Collection ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Water` | `0` |
|
||
|
| `Lava` | `1` |
|
||
|
| `Sewage` | `2` |
|
||
|
| `Jjaro` | `3` |
|
||
|
| `Pfhor` | `4` |
|
||
|
|
||
|
These are the default texture sets.
|
||
|
|
||
|
### Landscape ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `LhowonDay` | `0` |
|
||
|
| `LhowonNight` | `1` |
|
||
|
| `Moon` | `2` |
|
||
|
| `Space` | `3` |
|
||
|
|
||
|
These are the default landscapes.
|
||
|
|
||
|
### Platform Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `SphtDoor` | `0` |
|
||
|
| `SphtDoorSplit` | `1` |
|
||
|
| `SphtDoorLock` | `2` |
|
||
|
| `SphtPlat` | `3` |
|
||
|
| `SphtPlatNoisy` | `4` |
|
||
|
| `SphtDoorHeavy` | `5` |
|
||
|
| `PfhorDoor` | `6` |
|
||
|
| `SphtPlatHeavy` | `7` |
|
||
|
| `PfhorPlatform` | `8` |
|
||
|
|
||
|
This apparently used to do something, but now does nothing, and is merely left
|
||
|
over for editor preset usage.
|
||
|
|
||
|
### Weapon Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Melee` | `0` |
|
||
|
| `Normal` | `1` |
|
||
|
| `DualFunc` | `2` |
|
||
|
| `DualPistol` | `3` |
|
||
|
| `Multipurpose` | `4` |
|
||
|
|
||
|
### Casing Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Rifle` | `0` |
|
||
|
| `Pistol` | `1` |
|
||
|
| `PistolLeft` | `2` |
|
||
|
| `PistolRight` | `3` |
|
||
|
| `SMG` | `4` |
|
||
|
| `None` | `65535` |
|
||
|
|
||
|
### Damage Type ###
|
||
|
|
||
|
| Name | Value |
|
||
|
| ---- | ----- |
|
||
|
| `Explosion` | `0` |
|
||
|
| `ElectricalStaff` | `1` |
|
||
|
| `Projectile` | `2` |
|
||
|
| `Absorbed` | `3` |
|
||
|
| `Flame` | `4` |
|
||
|
| `HoundClaws` | `5` |
|
||
|
| `AlienProjectile` | `6` |
|
||
|
| `HulkSlap` | `7` |
|
||
|
| `CompilerBolt` | `8` |
|
||
|
| `FusionBolt` | `9` |
|
||
|
| `HunterBolt` | `10` |
|
||
|
| `Fist` | `11` |
|
||
|
| `Teleporter` | `12` |
|
||
|
| `Defender` | `13` |
|
||
|
| `YetiClaws` | `14` |
|
||
|
| `YetiProjectile` | `15` |
|
||
|
| `Crushing` | `16` |
|
||
|
| `Lava` | `17` |
|
||
|
| `Suffocation` | `18` |
|
||
|
| `Goo` | `19` |
|
||
|
| `EnergyDrain` | `20` |
|
||
|
| `OxygenDrain` | `21` |
|
||
|
| `HummerBolt` | `22` |
|
||
|
| `ShotgunProjectile` | `23` |
|
||
|
| `None` | `65535` |
|
||
|
|
||
|
<!-- EOF -->
|