[Exhumed] SEQ experiments.

CONserve on your energy and frustration with CON scripting by searching and asking questions here!

Moderator: Raze Developers

User avatar
Global Moderator
Posts: 1503
Joined: Mon Dec 02, 2013 6:01 pm
Graphics Processor: Intel (Modern GZDoom)
Location: Where corruption is redefined daily.

[Exhumed] SEQ experiments.

Post by YukiHerz »

Thanks to Dzierzan from the zdoom discord, I started messing with SEQ files using an hex editor, pistol.seq in specific.

In this point I'll detail my findings, all of this is thanks to the open nature of Raze and the source port where exhumed support was based on.

Code: Select all

Pistol SEQ
short          identifier | Always DS for weapons?
short          gPosX      | Global x position
short          gPosY      | Global y position
short          seqNum     | Number of sequences
short*seqNum   seqBegin   | Starting frame of sequences
short*seqNum   seqLength  | Duration for each sequences
short*seqNum   seqFlags   | Flags for each sequences
short          frameNum   | Number of frames
short*frameNum frameChunk | Which chunk to use for this frame
short*frameNum frameLen   | Duration of the frame on screen (new frames draw over)
short*frameNum frameFlags | 4 = Light, 128 = Weapon Action (Fire Bullet)
short          chunkNum   | Number of chunks
short*chunkNum chunkX     | X position of chunk
short*chunkNum chunkY     | Y position of chunk
short*chunkNum chunkPic   | ID of sprite inside .art file
short*chunkNum chunkFlags | Flags of each chunks
short          soundNum   | Number of sounds
long*soundNum  soundFile  | Filename of the sound (8 characters each)
short          svarNum    | Number of sound variables
short*svarNum  svarValue1 | Sound variable 1 (Unknown, may be related to volume or frame/chunk to play in)
short*svarNum  svarValue2 | See Above

Chunks, Frames and Sequences:
The SEQ file is segmented into 3 major pieces, Chunks, Frames and Sequences.

Chunks are the sprites themselves, think of them as the frames in a decorate/zscript actor definition, they point to the image file and have two values that work similarly to the offset keyword.

Frames define an additional parameter for chunks and are laid out in sequence, they have a length parameter but this does not impact the duration of the whole sequence, instead, it dictates how long the frame is displayed on screen, with the following frames rendering on top, creating an overlay effect.

Sequences have a starting frame and a duration, when the sequence is called, it calls the first frame and starts playing all the subsequent frames at a constant and unmodifiable speed (seemingly 1 frame per tic), until the amount of frames played is equal to the duration of the sequence.

Bitflags are available for all 3 sections, but I have only seen Frame flags have any use, with 4 displaying the frame in full brightness and 128 calling the weapon's firing action, like firing a pistol bullet or shooting a serpent projectile, which action happens isn't defined in the seq.
The following zip contains an Hex Workshop bookmark file for PISTOL.SEQ alongside a severely (mangled) modified pistol.seq that can be loaded with exhumed.
Download (Googledrive)

Return to “Scripting (Build)”