Maraiah/doc/data/4-enum.md

19 KiB

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) - 2B
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 & ~1B
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