Skip to content

Commit

Permalink
big batch of documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
kgsws committed Jun 10, 2023
1 parent 6a43154 commit 5c6ad04
Show file tree
Hide file tree
Showing 8 changed files with 251 additions and 3 deletions.
7 changes: 6 additions & 1 deletion doc/decorate.md
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,7 @@ List of supported [action functions](https://zdoom.org/wiki/Action_functions):
- `A_CheckFlag`
- `A_MonsterRefire`

## line specials
### line specials

Most [line specials](lnspec.md) **can** be used as state functions.

Expand All @@ -507,3 +507,8 @@ Special case for `Line_SetTextureOffset` line special:
Offsets have to be specified as `doom fixed point`, that is, offset `16` has to be set as `16 * 65536`.
No change has to be specified as `32767 * 65536`.
**BEWARE:** Due to numeric precision limit, max positive offset is `31` and max negative offset is `-32`!
**BEWARE:** You always have to set offset of all textures. Flags have to be either `7` or `15`.

## ZDoom differences

TODO
113 changes: 113 additions & 0 deletions doc/lnspec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Line specials

ACE Engine supports some of ZDoom [line specials](https://zdoom.org/wiki/Action_specials).
These new line specials are only available in Hexen map format or [decorate](decorate.md).

## list

Note: Some specials are not meant to be used in decorate and thus are only available in map.
Note: Not all features of specified special might be supported. It is quite likely i forgot to document some limitations.

- 1 `Polyobj_StartLine`
- `lineid` is not supported
- check [good to know](stuff.md) for limitations
- 2 `Polyobj_RotateLeft`
- 3 `Polyobj_RotateRight`
- 4 `Polyobj_Move`
- 7 `Polyobj_DoorSwing`
- 8 `Polyobj_DoorSlide`
- 10 `Door_Close`
- 12 `Door_Raise`
- 13 `Door_LockedRaise`
- 15 `Autosave`
- this does nothing in *netgame*
- custom graphic for "saving" text can be provided in `WIAUTOSV` lump
- 19 `Thing_Stop`
- 20 `Floor_LowerByValue`
- 23 `Floor_RaiseByValue`
- 26 `Stairs_BuildDown`
- 27 `Stairs_BuildUp`
- 28 `Floor_RaiseAndCrush`
- 31 `Stairs_BuildDownSync`
- 32 `Stairs_BuildUpSync`
- 35 `Floor_RaiseByValueTimes8`
- 36 `Floor_LowerByValueTimes8`
- 37 `Floor_MoveToValue`
- 40 `Ceiling_LowerByValue`
- 41 `Ceiling_RaiseByValue`
- 44 `Ceiling_CrushStop`
- 47 `Ceiling_MoveToValue`
- 49 `GlassBreak`
- spawning of `GlassJunk` is not supported
- either disable junk spawning or set your own `type`
- 53 `Line_SetTextureOffset`
- only limited use for [decorate](decorate.md)
- 55 `Line_SetBlocking`
- supported bits are `1` `2` `4` and `32`
- 62 `Plat_DownWaitUpStay`
- 64 `Plat_UpWaitDownStay`
- 70 `Teleport`
- only `tid` is supported
- only **one** destination **must** exist, **no** randomization
- 71 `Teleport_NoFog`
- only `tid` is supported
- only **one** destination **must** exist, **no** randomization
- 72 `ThrustThing`
- 73 `DamageThing`
- 74 `Teleport_NewMap`
- 76 `TeleportOther`
- 78 `TeleportInSector`
- there are some edge case differences from ZDoom how things are selected
- 97 `Ceiling_LowerAndCrushDist`
- 99 `Floor_RaiseAndCrushDoom`
- 100 `Scroll_Texture_Left`
- 101 `Scroll_Texture_Right`
- 102 `Scroll_Texture_Up`
- 103 `Scroll_Texture_Down`
- 110 `Light_RaiseByValue`
- 111 `Light_LowerByValue`
- 112 `Light_ChangeToValue`
- 113 `Light_Fade`
- 114 `Light_Glow`
- 116 `Light_Strobe`
- 117 `Light_Stop`
- 119 `Thing_Damage`
- `mod` is not supported
- 121 `Line_SetIdentification`
- only IDs up to 255 are supported
- only flag `32` (midtex3d) is supported
- 127 `Thing_SetSpecial`
- 128 `ThrustThingZ`
- 130 `Thing_Activate`
- 131 `Thing_Deactivate`
- 132 `Thing_Remove`
- 133 `Thing_Destroy`
- 134 `Thing_Projectile`
- 135 `Thing_Spawn`
- 136 `Thing_ProjectileGravity`
- 137 `Thing_SpawnNoFog`
- 139 `Thing_SpawnFacing`
- 160 `Sector_Set3dFloor`
- check [good to know](stuff.md) for limitations
- 172 `Plat_UpNearestWaitDownStay`
- 173 `NoiseAlert`
- 176 `Thing_ChangeTID`
- 179 `ChangeSkill`
- 191 `SetPlayerProperty`
- only `notarget` `fly` `fronzen` and `totallyfrozen` are supported
- 195 `Ceiling_CrushRaiseAndStayA`
- 196 `Ceiling_CrushAndRaiseA`
- 198 `Ceiling_RaiseByValueTimes8`
- 199 `Ceiling_LowerByValueTimes8`
- 200 `Generic_Floor`
- 201 `Generic_Ceiling`
- 206 `Plat_DownWaitUpStayLip`
- 212 `Sector_SetColor`
- check [good to know](stuff.md) for limitations
- 213 `Sector_SetFade`
- check [good to know](stuff.md) for limitations
- 225 `Scroll_Texture_Offsets`
- 237 `ChangeCamera`
- 239 `Floor_RaiseByValueTxTy`
- 243 `Exit_Normal`
- 244 `Exit_Secret`
19 changes: 19 additions & 0 deletions doc/lockdefs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# LOCKDEFS

A subset of [ZDoom](https://zdoom.org/wiki/LOCKDEFS) `LOCKDEFS` is supported.

## What does work

- built-in doom locks **are** present
- `clearlocks`
- `lock`
- `any`
- `message`
- `remotemessage`
- `mapcolor`
- `lockedsound`

## Map color

If you want to display locked door color in map you have to enable this feature in mod config.
See [config](config.md) for more info.
4 changes: 4 additions & 0 deletions doc/main.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Refer to [textures](textures.md) for workaround.

## TOC

- [good to know](stuff.md)
- [config](config.md)
- [fonts](fonts.md)
- [save](save.md)
Expand All @@ -28,8 +29,11 @@ Refer to [textures](textures.md) for workaround.
- [sndseq](sndseq.md)
- [trnslate](trnslate.md)
- [zmapinfo](zmapinfo.md)
- [lockdefs](lockdefs.md)
- [animdefs](animdefs.md)
- [terrain](terrain.md)
- [decorate](decorate.md)
- [sector specials](secspec.md)
- [line specials](lnspec.md)

## Expected lumps
Expand Down
16 changes: 16 additions & 0 deletions doc/secspec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Special sectors

Only a very limited amount of sector specials is supported:

- 26 `Stairs_Special1`
- 27 `Stairs_Special2`
- 82 `dDamage_LavaWimpy`
- 83 `dDamage_LavaHefty`
- 85 `hDamage_Sludge`
- 115 `Damage_InstantDeath`
- 196 `Sector_Heal`

These are supported sector flags:

- secret sector flag `1024`
- damage flags `256` and `512`
62 changes: 62 additions & 0 deletions doc/stuff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Various quiks and features

ACE Engine is a hack for DOS Doom so i has various workrounds, speed optimizations and stuff.
Here are some recommended things and good tips.

## Precalculation

Since palette color matching on 486 hardware is slow, some tables are better precalculated.
Now, ACE Engine can calculate those but it would take ages on old hardware. This is something you won't even notice in DosBox.

Main lump, `ACE_RNDR`, contains various transparency and color tables. This can be dumped to file using `-dumptables` command line parameter.
This will generate `ACE_RNDR.LMP` which you can the import to your WAD file.

Secondary lumps are various color and fog tables for sector light.
Everytime you use [ColorSetter](https://zdoom.org/wiki/Classes:ColorSetter) or [FadeSetter](https://zdoom.org/wiki/Classes:FadeSetter) up to two new tables are required.
These tables are generated by ACE Engine and can dumped using `savelight` command. Though, this has to be done for every level.
This cheat code will create lump(s) with naming scheme like `+0F0F0E0.LMP`. Import **all** generated lumps to your WAD file.

**You have to generate those tables verytime you change palette!**
The best is to generate these tables last, just before releasing your WAD.

## MAP format

ACE Engine supports *Hexen map format*. Use of this format is *recommended* as it allows you to use all new features.

## Polyobjects

Polyobjects are supported with these exceptions:

- polyobject ID `0` can **not** be used
- only `Polyobj_StartLine` can be used to define polyobject

## 3D floors

Yes, 3D floors are supported with some limitations. Thouh heavy use is not recommended as each visible 3D floor have performance hit on rendering.

- only `Y` offset of control line is supported
- **always** set `X` offset to **zero**
- only types `1` `2` and `3` are supported
- type extra `4` `16` and `32` are also supported
- only flag `64` is supported
- `flag` 512 is forced and can't be removed
- this causes different behavior to ZDoom with `FadeSetter`
- rendering limitation for masked textures (= textures with holes)
- **always** make sure total `Y` offset is never **negative**

## Colored light and sector fog

Use [ColorSetter](https://zdoom.org/wiki/Classes:ColorSetter) for colored sectors.
Use [FadeSetter](https://zdoom.org/wiki/Classes:FadeSetter) for sector fog.
If you use line special [Sector_SetColor](https://zdoom.org/wiki/Sector_SetColor) or [Sector_SetFade](https://zdoom.org/wiki/Sector_SetFade) in your map, this color or fade has to be already used in the map. Use dummy sectors with `ColorSetter` and `FadeSetter`.

Use **only one** `ColorSetter` and `FadeSetter` per sector! (one of each type)
`ColorSetter`s and `FadeSetter`s internaly **do not exist**! Giving those `thing id` for scripting has **no effect**!

## Sector actions

ACE Engine supports two sector action things. [Enter sector](https://zdoom.org/wiki/Classes:SecActEnter) and [exit sector](https://zdoom.org/wiki/Classes:SecActExit).
Both actions support all four map flags.

Use **only one** one of each type per sector!
These things internaly **do not exist**! Giving those `thing id` for scripting has **no effect**!
28 changes: 28 additions & 0 deletions doc/terrain.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# TERRAIN

A subset of [ZDoom](https://zdoom.org/wiki/TERRAIN) `TERRAIN` is supported.

## What does work

### splash

- `smallclass`
- `smallclip`
- **must** be set to **0**
- `baseclass`
- `chunkclass`
- `chunkxvelshift`
- `chunkyvelshift`
- `chunkzvelshift`
- `chunkbasezvel`
- `sound`

### terrain

- `splash`
- `liquid`
- `friction`
- `damagetype`
- `damageamount`
- `damagetimemask`
- `allowprotection`
5 changes: 3 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The same version is distributed with SHAREWARE.

## How to run this

Compile `exploit` and `code`.
Compile `exploit` and `engine`.
Engine is the main thing. After compiling you get `code.lmp`.
Exploit generates a WAD file with multiple entries. Replace `ACE_CODE` with generated `code.lmp` in any WAD editor.

Expand All @@ -34,4 +34,5 @@ TODO: explain the exploit chain

### Engine

This is a source of the entire ACE Engine. Resulting binary `code.lmp` has to be placed into generated WAD as `ACE_CODE`.
This is a source of the entire ACE Engine. Resulting binary `code.lmp` has to be placed into generated WAD as `ACE_CODE`.
NOTE: Everytime you pull new version make sure you use command `make clean` before building.

0 comments on commit 5c6ad04

Please sign in to comment.