Maraiah/doc/data/4-enum.md

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 -->