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 |