Paul's death - codingstyle/swift-dune GitHub Wiki
Paul's desert death animation relies on three different files, DEATH1.HSQ
(26 sprites), DEATH2.HSQ
(22 sprites) and DEATH3.HSQ
(34 sprites).
Background
Background contains a sky and a desert sprite.
Sky is drawn using SKY.HSQ
and desert is drawn using sprite index 0 from DEATH1.HSQ
.
Animation
Animation definitions can be found at the end of DEATH1.HSQ
after the frames and palette definitions. Like every animation, header contains:
- 0x0000 indicating the beginning of an animation (2 bytes)
- 0x0308 representing representing the remaining bytes (2 bytes, read as a UInt16 Long Endian)
Animations frames are a set of images to draw together, each represented by a set of three UInt16 LE for sprite index, X position, and Y position. Each frame ends with a 0xFFFF marker.
There are two specific tricks to handle:
- Several 0xFFFF markers can follow each other, indicating the last displayed frame should be reused.
- There is no explicit indication about which sprite file to use. Best guess is to switch to the next file once animation frames have used the last sprite index available. For example: once sprite index 25 has been used for a frame in
DEATH1.HSQ
you can switch toDEATH2.HSQ
.
File interpretation
- 🟨 = header
- 🟧 = animation size
- 🟦 = sprite index
- 🟩 = coordinates (X,Y)
- 🟪 = clear rectangle (X1,Y1,X2,Y2)