40 lines
1.9 KiB
Plaintext
40 lines
1.9 KiB
Plaintext
Pustina -- Player
|
|
Locked step multiplayer oriented engine with great restrictions.
|
|
We do not use abstractions, as the simplicity of the required set of features should allow for platform-specific implementations.
|
|
|
|
|
|
---- Restrictions ----
|
|
* Fixed sized paletted frambuffer, defaulted to 640x480. Scaling by 2 is possible.
|
|
* Deterministic logic via Q15.16 fixed point numbers.
|
|
* .gam image format, derived from .gif. RLE and Delta Frame Optimiztion is added, palette is predefined.
|
|
* Images are 16x16 or multiples of it, aligning to the grid.
|
|
* Tile view is capped at 29x29, the rest is allocated to interface.
|
|
* 30 FPS display rate.
|
|
* Fonts are in ASCII bitmaps. Tile slicing commands are issued to render them in.
|
|
* Audio samples are in our own .sam format (s8 frame delta + lzw).
|
|
* Music pieces are written in our own simple .tam tracker format, using the same .sam sample db.
|
|
* Connections are over TCP and their supersets (like WebSocket).
|
|
* Textbox provides another client-controlled view, with history.
|
|
* Content usage has to be predefined, to allow preloading and compilation.
|
|
|
|
|
|
---- Building ----
|
|
==== DOS ====
|
|
Open Watcom 2.0 32bit toolchain is used under Linux host.
|
|
Place a copy of DOS4GW.EXE alongside the executable.
|
|
Expect to need to configure $INCLUDE and $LIB variables.
|
|
|
|
|
|
---- .sam format ----
|
|
Thin sample compressing scheme tailored for use with .tam tracker.
|
|
Leading and tailing silence is stored as number of frames.
|
|
Sample data is 1 channel only, but panning can be expressed via graph.
|
|
Sample bit format is signed 8 bit delta, first frame is delta against 0. Clamping is allowed.
|
|
Generic LZW compression is applied as the last step.
|
|
|
|
|
|
---- .dab format ---
|
|
Compressed streamed content database format.
|
|
It allows for seeked access of required portions only via the content table.
|
|
Content table stores pathing, content and compression metadata as well as sized offset inside the file.
|