This page tracks support for the "Doom in Hexen" map format and related features, as seen in ZDoom. The first iteration of support is now complete. There are various exceptions and notes listed in the full documentation below where things may act differently compared to other source ports. Some of those points will be addressed over time, but others are intrinsic differences in how some things work in dsda-doom. The remaining planned features (:comet:) require more significant effort and will be addressed more gradually over time.
Symbol |
Meaning |
✔️ |
Feature is fully supported |
⚠️ |
Feature is partially supported |
☄️ |
Feature is planned later |
❌ |
Feature is not planned |
Name |
Status |
Levels |
⚠️ |
Poly Objects |
✔️ |
Thing Specials |
✔️ |
ACS |
☄️ |
MAPINFO |
☄️ |
SNDINFO |
☄️ |
SNDSEQ |
☄️ |
ANIMDEFS |
☄️ |
Value |
Name |
Status |
118 |
ZBridge |
❌ |
- |
- |
- |
888 |
MBFHelperDog |
✔️ |
- |
- |
- |
1400-1409 |
Sound Sequence |
☄️ |
1411 |
Sound Sequence Override |
☄️ |
- |
- |
- |
1500-1501 |
Line Slopes |
❌ |
- |
- |
- |
1504-1505 |
Vertex Slopes |
❌ |
- |
- |
- |
4001-4004 |
Player 5-8 Start |
❌ |
5001 |
PointPusher |
✔️ |
5002 |
PointPuller |
✔️ |
- |
- |
- |
5010 |
Pistol |
❌ |
- |
- |
- |
5050 |
Stalagmite |
❌ |
- |
- |
- |
5061 |
InvisibleBridge32 |
❌ |
- |
- |
- |
5064 |
InvisibleBridge16 |
❌ |
5065 |
InvisibleBridge8 |
❌ |
- |
- |
- |
9001 |
MapSpot |
✔️ |
- |
- |
- |
9013 |
MapSpotGravity |
✔️ |
- |
- |
- |
9024 |
PatrolPoint |
❌ |
9025 |
SecurityCamera |
❌ |
9026 |
Spark |
❌ |
9027 |
RedParticleFountain |
❌ |
9028 |
GreenParticleFountain |
❌ |
9029 |
BlueParticleFountain |
❌ |
9030 |
YellowParticleFountain |
❌ |
9031 |
PurpleParticleFountain |
❌ |
9032 |
BlackParticleFountain |
❌ |
9033 |
WhiteParticleFountain |
❌ |
- |
- |
- |
9037 |
BetaSkull |
❌ |
9038 |
ColorSetter |
❌ |
9039 |
FadeSetter |
❌ |
9040 |
MapMarker |
❌ |
9041 |
SectorFlagSetter |
❌ |
- |
- |
- |
9043-9044 |
TeleportDest* |
✔️ |
9045 |
Waterzone |
❌ |
9046 |
SecretTrigger |
❌ |
9047 |
PatrolSpecial |
❌ |
9048 |
SoundEnvironment |
❌ |
- |
- |
- |
9050-9061 |
Stealth* |
❌ |
- |
- |
- |
9070 |
InterpolationPoint |
❌ |
9071 |
PathFollower |
❌ |
9072 |
MovingCamera |
❌ |
9073 |
AimingCamera |
❌ |
9074 |
ActorMover |
❌ |
9075 |
InterpolationSpecial |
❌ |
9076 |
HateTarget |
❌ |
9077 |
UpperStackLookOnly |
❌ |
9078 |
LowerStackLookOnly |
❌ |
- |
- |
- |
9080 |
SkyViewpoint |
❌ |
9081 |
SkyPicker |
❌ |
9082 |
SectorSilencer |
❌ |
9083 |
SkyCamCompat |
❌ |
- |
- |
- |
9100 |
ScriptedMarine |
❌ |
9101-9111 |
Marine* |
❌ |
- |
- |
- |
9200 |
Decal |
❌ |
- |
- |
- |
9300-9303 |
PolyObject* |
✔️ |
- |
- |
- |
9500-9503 |
Slopes |
❌ |
- |
- |
- |
9510-9511 |
Copy Planes |
❌ |
- |
- |
- |
9982 |
SecActEyesAboveC |
❌ |
9983 |
SecActEyesBelowC |
❌ |
- |
- |
- |
9988 |
CustomSprite |
❌ |
9989 |
SecActHitFakeFloor |
❌ |
9990 |
InvisibleBridge |
❌ |
9991 |
CustomBridge |
❌ |
9992 |
SecActEyesSurface |
❌ |
9993 |
SecActEyesDive |
❌ |
9994 |
SecActUseWall |
❌ |
9995 |
SecActUse |
❌ |
9996 |
SecActHitCeil |
❌ |
9997 |
SecActExit |
❌ |
9998 |
SecActEnter |
❌ |
9999 |
SecActHitFloor |
❌ |
- |
- |
- |
14001-14064 |
AmbientSound |
☄️ |
14065 |
Custom AmbientSound |
☄️ |
14066 |
SoundSequence |
☄️ |
14067 |
AmbientSoundNoGravity |
☄️ |
- |
- |
- |
14101-14164 |
MusicChanger |
✔️ |
14165 |
Custom MusicChanger |
⚠️ |
- The Custom MusicChanger only supports the track number, which can be from 0 to 64
Name |
Status |
Dormant |
⚠️ |
Translucent |
✔️ |
Invisible |
✔️ |
Friendly |
✔️ |
Stand Still |
❌ |
- Dormant monsters still bleed.
Name |
Status |
Player Walkover |
✔️ |
Player Use |
✔️ |
Monster Walkover |
✔️ |
Projectile Hits |
✔️ |
Player Bumps |
✔️ |
Projectile Crosses |
✔️ |
Player Use (Pass Through) |
✔️ |
Projectile Hits or Crosses |
✔️ |
Name |
Status |
Repeatable Action |
✔️ |
Monster Activates |
✔️ |
Block Everything |
✔️ |
Block Players |
✔️ |
Value |
Name |
Status |
1 |
Polyobj_StartLine |
✔️ |
2 |
Polyobj_RotateLeft |
✔️ |
3 |
Polyobj_RotateRight |
✔️ |
4 |
Polyobj_Move |
✔️ |
5 |
Polyobj_ExplicitLine |
✔️ |
6 |
Polyobj_MoveTimes8 |
✔️ |
7 |
Polyobj_DoorSwing |
✔️ |
8 |
Polyobj_DoorSlide |
✔️ |
9 |
Line_Horizon |
☄️ |
10 |
Door_Close |
✔️ |
11 |
Door_Open |
✔️ |
12 |
Door_Raise |
✔️ |
13 |
Door_LockedRaise |
✔️ |
14 |
Door_Animated |
❌ |
15 |
Autosave |
❌ |
16 |
Transfer_WallLight |
☄️ |
17 |
Thing_Raise |
✔️ |
18 |
StartConversation |
❌ |
19 |
Thing_Stop |
✔️ |
20 |
Floor_LowerByValue |
✔️ |
21 |
Floor_LowerToLowest |
✔️ |
22 |
Floor_LowerToNearest |
✔️ |
23 |
Floor_RaiseByValue |
✔️ |
24 |
Floor_RaiseToHighest |
✔️ |
25 |
Floor_RaiseToNearest |
✔️ |
26 |
Stairs_BuildDown |
✔️ |
27 |
Stairs_BuildUp |
✔️ |
28 |
Floor_RaiseAndCrush |
✔️ |
29 |
Pillar_Build |
✔️ |
30 |
Pillar_Open |
✔️ |
31 |
Stairs_BuildDownSync |
✔️ |
32 |
Stairs_BuildUpSync |
✔️ |
33 |
ForceField |
✔️ |
34 |
ClearForceField |
✔️ |
35 |
Floor_RaiseByValueTimes8 |
✔️ |
36 |
Floor_LowerByValueTimes8 |
✔️ |
37 |
Floor_MoveToValue |
✔️ |
38 |
Ceiling_Waggle |
✔️ |
39 |
Teleport_ZombieChanger |
✔️ |
40 |
Ceiling_LowerByValue |
✔️ |
41 |
Ceiling_RaiseByValue |
✔️ |
42 |
Ceiling_CrushAndRaise |
✔️ |
43 |
Ceiling_LowerAndCrush |
✔️ |
44 |
Ceiling_CrushStop |
✔️ |
45 |
Ceiling_CrushRaiseAndStay |
✔️ |
46 |
Floor_CrushStop |
✔️ |
47 |
Ceiling_MoveToValue |
✔️ |
48 |
Sector_Attach3dMidtex |
❌ |
49 |
GlassBreak |
☄️ |
50 |
ExtraFloor_LightOnly |
❌ |
51 |
Sector_SetLink |
❌ |
52 |
Scroll_Wall |
⚠️ |
53 |
Line_SetTextureOffset |
✔️ |
54 |
Sector_ChangeFlags |
⚠️ |
55 |
Line_SetBlocking |
⚠️ |
56 |
Line_SetTextureScale |
✔️ |
57 |
Sector_SetPortal |
❌ |
58 |
Sector_CopyScroller |
✔️ |
59 |
Polyobj_OR_MoveToSpot |
✔️ |
60 |
Plat_PerpetualRaise |
✔️ |
61 |
Plat_Stop |
✔️ |
62 |
Plat_DownWaitUpStay |
✔️ |
63 |
Plat_DownByValue |
✔️ |
64 |
Plat_UpWaitDownStay |
✔️ |
65 |
Plat_UpByValue |
✔️ |
66 |
Floor_LowerInstant |
✔️ |
67 |
Floor_RaiseInstant |
✔️ |
68 |
Floor_MoveToValueTimes8 |
✔️ |
69 |
Ceiling_MoveToValueTimes8 |
✔️ |
70 |
Teleport |
✔️ |
71 |
Teleport_NoFog |
✔️ |
72 |
ThrustThing |
✔️ |
73 |
DamageThing |
✔️ |
74 |
Teleport_NewMap |
⚠️ |
75 |
Teleport_EndGame |
⚠️ |
76 |
TeleportOther |
✔️ |
77 |
TeleportGroup |
✔️ |
78 |
TeleportInSector |
✔️ |
79 |
Thing_SetConversation |
❌ |
80 |
ACS_Execute |
☄️ |
81 |
ACS_Suspend |
☄️ |
82 |
ACS_Terminate |
☄️ |
83 |
ACS_LockedExecute |
☄️ |
84 |
ACS_ExecuteWithResult |
☄️ |
85 |
ACS_LockedExecuteDoor |
☄️ |
86 |
Polyobj_MoveToSpot |
✔️ |
87 |
Polyobj_Stop |
✔️ |
88 |
Polyobj_MoveTo |
✔️ |
89 |
Polyobj_OR_MoveTo |
✔️ |
90 |
Polyobj_OR_RotateLeft |
✔️ |
91 |
Polyobj_OR_RotateRight |
✔️ |
92 |
Polyobj_OR_Move |
✔️ |
93 |
Polyobj_OR_MoveTimes8 |
✔️ |
94 |
Pillar_BuildAndCrush |
✔️ |
95 |
FloorAndCeiling_LowerByValue |
✔️ |
96 |
FloorAndCeiling_RaiseByValue |
✔️ |
97 |
Ceiling_LowerAndCrushDist |
✔️ |
98 |
Sector_SetTranslucent |
❌ |
99 |
Floor_RaiseAndCrushDoom |
✔️ |
100 |
Scroll_Texture_Left |
⚠️ |
101 |
Scroll_Texture_Right |
⚠️ |
102 |
Scroll_Texture_Up |
⚠️ |
103 |
Scroll_Texture_Down |
⚠️ |
104 |
Ceiling_CrushAndRaiseSilentDist |
✔️ |
105 |
Door_WaitRaise |
✔️ |
106 |
Door_WaitClose |
✔️ |
107 |
Line_SetPortalTarget |
❌ |
- |
- |
- |
109 |
Light_ForceLightning |
☄️ |
110 |
Light_RaiseByValue |
✔️ |
111 |
Light_LowerByValue |
✔️ |
112 |
Light_ChangeToValue |
✔️ |
113 |
Light_Fade |
✔️ |
114 |
Light_Glow |
✔️ |
115 |
Light_Flicker |
✔️ |
116 |
Light_Strobe |
✔️ |
117 |
Light_Stop |
✔️ |
118 |
Plane_Copy |
❌ |
119 |
Thing_Damage |
✔️ |
120 |
Radius_Quake |
✔️ |
121 |
Line_SetIdentification |
⚠️ |
- |
- |
- |
125 |
Thing_Move |
✔️ |
- |
- |
- |
127 |
Thing_SetSpecial |
✔️ |
128 |
ThrustThingZ |
✔️ |
129 |
UsePuzzleItem |
❌ |
130 |
Thing_Activate |
✔️ |
131 |
Thing_Deactivate |
✔️ |
132 |
Thing_Remove |
✔️ |
133 |
Thing_Destroy |
✔️ |
134 |
Thing_Projectile |
✔️ |
135 |
Thing_Spawn |
✔️ |
136 |
Thing_ProjectileGravity |
✔️ |
137 |
Thing_SpawnNoFog |
✔️ |
138 |
Floor_Waggle |
✔️ |
139 |
Thing_SpawnFacing |
✔️ |
140 |
Sector_ChangeSound |
☄️ |
- |
- |
- |
154 |
Teleport_NoStop |
✔️ |
- |
- |
- |
157 |
SetGlobalFogParameter |
❌ |
158 |
FS_Execute |
❌ |
159 |
Sector_SetPlaneReflection |
❌ |
160 |
Sector_Set3DFloor |
❌ |
161 |
Sector_SetContents |
❌ |
- |
- |
- |
168 |
Ceiling_CrushAndRaiseDist |
✔️ |
169 |
Generic_Crusher2 |
✔️ |
170 |
Sector_SetCeilingScale2 |
✔️ |
171 |
Sector_SetFloorScale2 |
✔️ |
172 |
Plat_UpNearestWaitDownStay |
✔️ |
173 |
NoiseAlert |
⚠️ |
174 |
SendToCommunicator |
❌ |
175 |
Thing_ProjectileIntercept |
❌ |
176 |
Thing_ChangeTID |
✔️ |
177 |
Thing_Hate |
⚠️ |
178 |
Thing_ProjectileAimed |
✔️ |
179 |
ChangeSkill |
❌ |
180 |
Thing_SetTranslation |
❌ |
181 |
Plane_Align |
❌ |
182 |
Line_Mirror |
❌ |
183 |
Line_AlignCeiling |
❌ |
184 |
Line_AlignFloor |
❌ |
185 |
Sector_SetRotation |
✔️ |
186 |
Sector_SetCeilingPanning |
✔️ |
187 |
Sector_SetFloorPanning |
✔️ |
188 |
Sector_SetCeilingScale |
✔️ |
189 |
Sector_SetFloorScale |
✔️ |
190 |
Static_Init |
⚠️ |
191 |
SetPlayerProperty |
❌ |
192 |
Ceiling_LowerToHighestFloor |
✔️ |
193 |
Ceiling_LowerInstant |
✔️ |
194 |
Ceiling_RaiseInstant |
✔️ |
195 |
Ceiling_CrushRaiseAndStayA |
✔️ |
196 |
Ceiling_CrushAndRaiseA |
✔️ |
197 |
Ceiling_CrushAndRaiseSilentA |
✔️ |
198 |
Ceiling_RaiseByValueTimes8 |
✔️ |
199 |
Ceiling_LowerByValueTimes8 |
✔️ |
200 |
Generic_Floor |
✔️ |
201 |
Generic_Ceiling |
✔️ |
202 |
Generic_Door |
✔️ |
203 |
Generic_Lift |
✔️ |
204 |
Generic_Stairs |
✔️ |
205 |
Generic_Crusher |
✔️ |
206 |
Plat_DownWaitUpStayLip |
✔️ |
207 |
Plat_PerpetualRaiseLip |
✔️ |
208 |
TranslucentLine |
⚠️ |
209 |
Transfer_Heights |
✔️ |
210 |
Transfer_FloorLight |
✔️ |
211 |
Transfer_CeilingLight |
✔️ |
212 |
Sector_SetColor |
❌ |
213 |
Sector_SetFade |
❌ |
214 |
Sector_SetDamage |
✔️ |
215 |
Teleport_Line |
✔️ |
216 |
Sector_SetGravity |
✔️ |
217 |
Stairs_BuildUpDoom |
✔️ |
218 |
Sector_SetWind |
✔️ |
219 |
Sector_SetFriction |
✔️ |
220 |
Sector_SetCurrent |
✔️ |
221 |
Scroll_Texture_Both |
✔️ |
222 |
Scroll_Texture_Model |
✔️ |
223 |
Scroll_Floor |
✔️ |
224 |
Scroll_Ceiling |
✔️ |
225 |
Scroll_Texture_Offsets |
⚠️ |
226 |
ACS_ExecuteAlways |
☄️ |
227 |
PointPush_SetForce |
✔️ |
228 |
Plat_RaiseAndStayTx0 |
✔️ |
229 |
Thing_SetGoal |
❌ |
230 |
Plat_UpByValueStayTx |
✔️ |
231 |
Plat_ToggleCeiling |
✔️ |
232 |
Light_StrobeDoom |
✔️ |
233 |
Light_MinNeighbor |
✔️ |
234 |
Light_MaxNeighbor |
✔️ |
235 |
Floor_TransferTrigger |
✔️ |
236 |
Floor_TransferNumeric |
✔️ |
237 |
ChangeCamera |
❌ |
238 |
Floor_RaiseToLowestCeiling |
✔️ |
239 |
Floor_RaiseByValueTxTy |
✔️ |
240 |
Floor_RaiseByTexture |
✔️ |
241 |
Floor_LowerToLowestTxTy |
✔️ |
242 |
Floor_LowerToHighest |
✔️ |
243 |
Exit_Normal |
✔️ |
244 |
Exit_Secret |
✔️ |
245 |
Elevator_RaiseToNearest |
✔️ |
246 |
Elevator_MoveToFloor |
✔️ |
247 |
Elevator_LowerToNearest |
✔️ |
248 |
HealThing |
✔️ |
249 |
Door_CloseWaitOpen |
✔️ |
250 |
Floor_Donut |
✔️ |
251 |
FloorAndCeiling_LowerRaise |
✔️ |
252 |
Ceiling_RaiseToNearest |
✔️ |
253 |
Ceiling_LowerToLowest |
✔️ |
254 |
Ceiling_LowerToFloor |
✔️ |
255 |
Ceiling_CrushRaiseAndStaySilA |
✔️ |
256 |
Floor_LowerToHighestEE |
✔️ |
257 |
Floor_RaiseToLowest |
✔️ |
258 |
Floor_LowerToLowestCeiling |
✔️ |
259 |
Floor_RaiseToCeiling |
✔️ |
260 |
Floor_ToCeilingInstant |
✔️ |
261 |
Floor_LowerByTexture |
✔️ |
262 |
Ceiling_RaiseToHighest |
✔️ |
263 |
Ceiling_ToHighestInstant |
✔️ |
264 |
Ceiling_LowerToNearest |
✔️ |
265 |
Ceiling_RaiseToLowest |
✔️ |
266 |
Ceiling_RaiseToHighestFloor |
✔️ |
267 |
Ceiling_ToFloorInstant |
✔️ |
268 |
Ceiling_RaiseByTexture |
✔️ |
269 |
Ceiling_LowerByTexture |
✔️ |
270 |
Stairs_BuildDownDoom |
✔️ |
271 |
Stairs_BuildUpDoomSync |
✔️ |
272 |
Stairs_BuildDownDoomSync |
✔️ |
273 |
Stairs_BuildUpDoomCrush |
✔️ |
274 |
Door_AnimatedClose |
❌ |
275 |
Floor_Stop |
✔️ |
276 |
Ceiling_Stop |
✔️ |
277 |
Sector_SetFloorGlow |
❌ |
278 |
Sector_SetCeilingGlow |
❌ |
279 |
Floor_MoveToValueAndCrush |
✔️ |
280 |
Ceiling_MoveToValueAndCrush |
✔️ |
281 |
Line_SetAutomapFlags |
✔️ |
282 |
Line_SetAutomapStyle |
✔️ |
283 |
Polyobj_StopSound |
❌ |
- Specials above 255 are not accessible in hexen format.
- Wall scrollers cannot distinguish between top, bottom, and mid textures.
- The static init supports damage, gravity, and skies only.
- Teleporting to a specific map currently...
- Always triggers the intermission screen
- Does not know about clusters (e.g., you can't bring keys through the exit)
- There may be undefined behaviour when combining new exit specials with UMAPINFO
- Line flags coming from extra arguments are ignored.
- TranslucentLine does not support additive translucency.
- Line_SetBlocking sight, hitscan, and sound are not possible in hexen format.
- Sector_ChangeFlags only supports silent, friction, and push in hexen format.
- UDMF additionally supports endgodmode, endlevel, hazard, and noattack.
- NoiseAlert only works with the default arguments.
- Thing_Hate only supports 0 for the third argument ("target only").
- ThrustThing has an implicit speed limit.
- Poly objects have no sound (no SNDSEQ lump support to define it yet).
- Poly objects may have visual errors (especially for large objects).
Value |
Name |
Status |
* |
Generalized Effects |
✔️ |
1 |
Light_Phased |
✔️ |
2-4 |
LightSequence* |
✔️ |
- |
- |
- |
26-27 |
Stairs_Special* |
✔️ |
- |
- |
- |
40-51 |
Wind* |
✔️ |
- |
- |
- |
65 |
dLight_Flicker |
✔️ |
66 |
dLight_StrobeFast |
✔️ |
67 |
dLight_StrobeSlow |
✔️ |
68 |
dLight_Strobe_Hurt |
✔️ |
69 |
dDamage_Hellslime |
✔️ |
- |
- |
- |
71 |
dDamage_Nukage |
✔️ |
72 |
dLight_Glow |
✔️ |
- |
- |
- |
74 |
dSector_DoorCloseIn30 |
✔️ |
75 |
dDamage_End |
✔️ |
76 |
dLight_StrobeSlowSync |
✔️ |
77 |
dLight_StrobeFastSync |
✔️ |
78 |
dSector_DoorRaiseIn5Mins |
✔️ |
79 |
dFriction_Low |
✔️ |
80 |
dDamage_SuperHellslime |
✔️ |
81 |
dLight_FireFlicker |
✔️ |
82 |
dDamage_LavaWimpy |
✔️ |
83 |
dDamage_LavaHefty |
✔️ |
84 |
dScroll_EastLavaDamage |
✔️ |
85 |
hDamage_Sludge |
✔️ |
- |
- |
- |
87 |
Sector_Outside |
❌ |
- |
- |
- |
104 |
sLight_Strobe_Hurt |
✔️ |
105 |
sDamage_Hellslime |
✔️ |
- |
- |
- |
115 |
Damage_InstantDeath |
✔️ |
116 |
sDamage_SuperHellslime |
✔️ |
- |
- |
- |
118 |
Scroll_StrifeCurrent |
✔️ |
- |
- |
- |
195 |
Sector_Hidden |
✔️ |
196 |
Sector_Heal |
✔️ |
197 |
Light_OutdoorLightning |
❌ |
198-199 |
Light_IndoorLightning* |
❌ |
200 |
Sky2 |
☄️ |
201-224 |
Scroll* |
✔️ |
225-244 |
Carry* |
✔️ |
- Terrain effects (e.g., from lava specials) don't exist.