Getting started
The authoring kit turns your DAAD source into a folder you copy straight onto an SD card. It compiles the database, converts your artwork and audio, stages the interpreter beside them, and can launch an emulator on the result. There is nothing to assemble by hand.
The kit runs on Windows and on Linux. The build scripts, the compiler and the picture converter ship in the kit; the emulator, the music converters, ffmpeg and the assembler are third-party downloads. Pick your platform below, then read Already have some of these?.
On either platform, keep the kit folder on a local drive: NTFS on Windows; ext4, btrfs or xfs on Linux. A FAT or exFAT USB stick, a network share or a Docker bind mount cannot keep the precise file times the incremental build relies on, and the build refuses to run there.
Windows 10 or 11. Windows PowerShell, which is part of Windows, runs the build; nothing else needs installing for a text-only game.
The interpreter, nextdaad.nex, and the DAAD compiler, NDRC, as lib\ndrc.exe, are in the kit. Gfx2Next and the video encoder are too. Download the rest and extract each into the kit's tools\ folder at the path shown:
| Tool | Provides | Extract into | Needed |
|---|---|---|---|
| Arkos Tracker 3 | SongToAky.exe, SongToSoundEffects.exe, SongToYm.exe |
tools\ArkosTracker3\tools\ |
only with .aks audio |
| CSpect | emulator, to play the result without hardware | tools\CSpect\ |
to run the build |
| ffmpeg | reads your video sources | tools\ffmpeg\ |
only when encoding an .mp4 cutscene |
| sjasmplus | Z80 assembler | tools\sjasmplus\ |
only to rebuild an extern with EXTERNS.BAT |
tools\README.txt lists the download addresses and the exact executable paths the build checks for.
Double-click BUILD.BAT to build, RUN.BAT to play the result in CSpect, CLEAN.BAT to start over.
x86_64 Linux with glibc 2.34 or newer: Ubuntu 22.04, Debian 12, Fedora 36 and later. Follow the steps below in order, in a terminal. First the programs the later steps use:
sudo apt install unzip wget ca-certificates
Then install PowerShell 7.4 or newer (pwsh), which runs the build scripts. Microsoft publishes packages for every major distribution: https://learn.microsoft.com/powershell/scripting/install/installing-powershell-on-linux
Unzip the kit into its own folder and go into it. Every command from here on runs in that folder:
unzip NextDAAD-AuthoringKit-<version>-linux.zip -d NextDAAD-AuthoringKit
cd NextDAAD-AuthoringKit
The interpreter, the compiler (lib/ndrc) and Gfx2Next (tools/gfx2next/gfx2next) ship in the Linux kit. A tool that is on your PATH is found without any setting; a tool under tools/ is found there; CONFIG.BAT points anywhere else. Install only the optional tools your game uses:
- Arkos Tracker 3 Linux release from https://www.julien-nevo.com/arkostracker/, for
.aksmusic only. Extract the Arkos zip intotools/: its own top folder isArkosTracker3/, givingtools/ArkosTracker3/tools/SongToAky. Or setARKOSDIR. - ffmpeg from your distribution (
sudo apt install ffmpeg), for video cutscenes andMUSIC PCMintros only. - CSpect Linux build from https://mdf200.itch.io/cspect plus mono (
sudo apt install mono-devel), to play the result. Extract intotools/CSpect/;run.shstarts it asmono CSpect.exe, or setCSPECTCMDinCONFIG.BATto run it some other way (Linux only, ignored on Windows). - sjasmplus, only to rebuild an extern with
externs.sh: a distribution package where one exists (sudo apt install sjasmpluson Debian), otherwise build it from https://github.com/z00m128/sjasmplus. - Python 3.10 or newer with
Pillowandnumpy, for video cutscenes only, in a virtual environment - see below.
Debian and Ubuntu do not allow pip to install into the system Python, and python3 -m venv needs the python3-venv package, so create a virtual environment once, from inside the kit folder:
sudo apt install python3 python3-venv
python3 -m venv ~/nextdaad-venv
~/nextdaad-venv/bin/pip install -r lib/requirements.txt
. ~/nextdaad-venv/bin/activate # optional: only to run python3 yourself
lib/requirementstxt pins the Pillow and numpy versions the kit is tested with. The scripts find ~/nextdaad-venv on their own, so activating it is optional; a python3 on your PATH that already has the packages is used first.
The video tuning window (./vidtune.sh) also needs PySide6. Install it into the same venv, from inside the kit folder:
~/nextdaad-venv/bin/pip install -r lib/requirements-vidtune.txt
A minimal install may lack the system libraries Qt needs; on Debian and Ubuntu, add them with:
sudo apt install libgl1 libegl1 libxkbcommon0 libfontconfig1 libdbus-1-3 libglib2.0-0
Then build and play:
chmod +x build.sh run.sh clean.sh externs.sh vidtune.sh lib/ndrc tools/gfx2next/gfx2next # only if your unzip dropped the execute bits
./build.sh
./run.sh
The shipped CONFIG.BAT has RUN=1, so until CSpect is installed each build ends with ERROR: CSpect not found after the build succeeds; set RUN=0 to build without an emulator.
build.sh, run.sh, clean.sh, externs.sh and vidtune.sh are the Linux names of the five .BAT launchers and take the same arguments.
Two things differ from Windows:
- File names are case-sensitive. Use the names this manual shows:
IMAGES/,AUDIO/,VIDEO/,001.png,STARTER.DSF,FONT.CHR. An#includeor#incbinin your source must match the file's case exactly and use/between folders. CONFIG.BATkeeps its name. It is a plain settings file ofSET NAME=valuelines that the scripts read; nothing executes it. Paths in it may use/.
Arkos Tracker, CSpect and ffmpeg are general-purpose tools you may well have installed already, and there is no need for a second copy. CONFIG.BAT has a directory setting per tool - ARKOSDIR, CSPECTDIR, FFMPEGDIR, GFXDIR, SJASMPLUSDIR - and each one you set is used instead of the folder under TOOLSDIR. Anything you leave blank still comes from TOOLSDIR, so mixing the two is fine: keep the small stuff in tools\ and point the big installs wherever they already are. Absolute paths, including ones with spaces, are fine:
SET CSPECTDIR=C:\Emulators\CSpect
SET ARKOSDIR=C:\Program Files\Arkos Tracker 3
SET FFMPEGDIR=/usr/bin
Point each at the folder the tool was installed into. Arkos Tracker and ffmpeg keep their programs in a subfolder (tools\ and bin\); either the install root or that subfolder is accepted. If you keep every tool somewhere else, point TOOLSDIR at that folder instead.
This manual covers what is specific to the Next: the kit, the build, and how each condact behaves on this target. It does not teach the DAAD language. For that:
- The DAAD Ready manual covers the DSF source format, the condact set, the system flags and the symbol tables. It is the go-to reference to write your adventure against.
- The original DAAD manual is in the
Docsfolder of the DAAD project (or a hardcopy is available here), it is the fuller treatment of the language, worth reading once you know your way around the DAAD Ready manual.
The kit compiles your DSF with its own bundled NDRC (Next DAAD Reborn Compiler). If a CONFIG.local.BAT from an older kit still sets DAADDIR or DRCDIR, it is safe to delete those lines - neither setting is read any more since it migrated from DRC to NDRC.
Any text editor can write a .DSF file, but a few tools make the job easier:
- VS Code is a good general-purpose editor for DAAD source - free, cross-platform, and with an extension marketplace covering the two tools below.
- DAAD-DSF is a VS Code extension for the DSF source format: syntax highlighting for the condact set, messages and object definitions, plus checking that flags potential compiler and structural problems before you run a build. Install it from Github releases page in the repository above.
- git tracks changes to your source as you write it, giving you a history to fall back on and, if you keep it on GitHub or similar, a backup off your own machine. In VS Code's terminal type
git initinitialise the tracking.
None of this is required - the build only reads the files described below, however they were written.
Everything the build reads lives in the kit folder:
- Your adventure, as a single
.DSFfile in the kit folder. With exactly one there, the build finds it by itself; otherwise name it inGAMEinCONFIG.BAT(base name, no extension). IMAGES\- location pictures as001.png,002.pngand so on, plusDAAD.pngfor a title screen. See Graphics for the art rules.AUDIO\- Arkos.aksmusic and effects, and.wavsamples. See Audio.VIDEO\- cutscene sources as001.mp4(or a pre-encoded001.vid). See Video.- Ready-made files in the kit folder itself - a
FONT.CHRcustom font (see Fonts) or aPOINTER.SPRmouse pointer (see Mouse), or already-converted title art. These are copied through untouched.
A pure-text game needs none of these folders. Graphics, audio and video are all optional and the build skips whatever is absent.
CONFIG.BAT holds every setting:
| Setting | Meaning |
|---|---|
GAME |
Base name of your .DSF. Blank = auto-detect the single .DSF. |
COMPRESS |
1 = ZX0-compress pictures (smaller files); 0 = raw. |
RUN |
1 = launch CSpect after a successful build; 0 = build only. |
COLS |
Text columns your game is authored for. Blank = 80 (the default), or 40 for the double-width 40-column mode. Sets the compiler's -cols option - the interpreter still boots at 80, so a 40-column game must issue GFX 1 18 in its init process. See Graphics. |
TOOLSDIR |
Folder holding the tools above. Default tools. |
GFXDIR, ARKOSDIR, CSPECTDIR, FFMPEGDIR |
Where each individual tool lives. Blank means "the folder under TOOLSDIR", so leave them alone for the simple layout and set only the ones you keep elsewhere. See What you need. |
VIDTOOLSDIR |
Same, for the folder holding videnc.exe and vidtune.exe, which the kit ships. You should not need to set this. |
NDRCVER |
The lib\ndrc.exe version this kit was tested against. BUILD.BAT refuses to build with any other - see When the build fails. |
NEXFILE |
The interpreter to ship. Default nextdaad.nex. |
NEXTDAWDIR |
Your NextDAW install, only for MUSIC NDR in a loader intro. |
INTRONEX |
The loader intro launcher to ship. Default intro.nex. |
VIDASPECT, VIDFPS, VIDOPTS, VIDOPTS_NNN |
Cutscene encoding - see Video. |
Local overrides. If a file named CONFIG.local.BAT sits beside CONFIG.BAT, it is loaded straight after it, so anything it sets wins. Put settings that belong to your machine rather than to the game there - a different TOOLSDIR, or RUN=0 for an unattended build - and CONFIG.BAT stays as the settings you would hand to someone else along with the game.
BUILD.BAT- double-click it. It compiles the database, converts graphics and audio, encodes any new video, copies the interpreter, and launches CSpect ifRUN=1. It finishes withBUILD OK: RELEASE\ is ready to copy to an SD card.RUN.BAT- launches CSpect on whatever is already inRELEASE\, without rebuilding.CLEAN.BAT- emptiesRELEASE\and clears the compiler's staged intermediates. The next build then converts everything from scratch.
The build stops at the first error, with a message naming the cause.
Pictures, sprite sets, sounds, tunes and video are only converted or copied when their source has changed since the last build. Everything else in RELEASE\ is left as it is, so a game with hundreds of pictures rebuilds in seconds. A file counts as changed when its size or modified time differs, including a file replaced by an older copy. Updating the kit or a conversion tool also converts everything again. The build deletes the output of any picture or tune you remove from the kit folder, so nothing lingers on the card from an earlier build.
Your database is compiled as DAAD version 3. If you are bringing in a game written for version 2, three behaviours change silently - see DAAD V3.
RELEASE\ is the finished SD card image. Copy its contents (not the folder) to the root of the card. It holds:
nextdaad.nex- the interpreter, the file you launch.<GAME>.NEXandINTRO\- the loader intro, when you ship one; launch<GAME>.NEXinstead. See Loader intro.GAME.DDB- your compiled adventure.0.XMB- external message text, if your game uses XMESSAGE or XMES. It must stay besideGAME.DDB; without it those messages silently print nothing.NNN.NX2/NNN.NXI- converted location pictures, andDAAD.NX2/DAAD.NXIfor a title screen (with a.zx0suffix whenCOMPRESS=1).GAME.AKY,NNN.AKY,NNN.AYS,GAME.SFB,NNN.WAV- converted and copied audio.NNN.VID- encoded cutscenes.FONT.CHR,POINTER.SPR- your custom font and pointer, if you supplied them.
STARTER.DSF ships with the kit along with example graphics, audio and video, so a first build works before you have written anything. It shows the Next-specific condacts in use - PICTURE/DISPLAY for location art, SFX for music and effects, BEEP for tones, GFX for cutscenes. Try the verbs MUSIC, MUTE, TUNE, BLEEP, ZAP, SAMPLE, MOVIE and REEL.
| Message | What to do |
|---|---|
set GAME in CONFIG.BAT |
The kit folder holds no .DSF, or more than one. Set GAME to the base name of the one you want. |
required tool missing |
The named path does not exist. Install that tool there, or fix TOOLSDIR / NEXFILE. |
wrong DAAD compiler version |
The banner lib\ndrc.exe prints does not match NDRCVER in CONFIG.BAT. This should not happen with the kit as shipped; if you have replaced ndrc.exe yourself, update NDRCVER to match. |
CSpect is running - close it before building |
CSpect holds the RELEASE\ files open. Close it and build again. |
ndrc failed compiling |
The compiler rejected your source. Its own output above the message names the line. |
GAME.DDB is N bytes, over the 65535 limit |
The database is too large. 64K is the format's own ceiling - see Limits, which suggests where to cut. |
uses #classic, which NextDAAD does not support |
Remove the #classic line from your source. It tells the compiler to imitate the original pre-DRC DAAD compiler, for the benefit of interpreters that cannot read a NextDAAD database in any case; here it only makes the database bigger. |
gfx2next not found |
Install Gfx2Next, or fix TOOLSDIR. |
expected a 320 or 256 wide PNG |
Resize the named image to exactly 320 or 256 pixels wide. |
must be a paletted 8-bit PNG |
Export the image again as an indexed-colour PNG. Truecolour is rejected. |
GAME.AKY is N bytes, over the 10208 song limit |
The tune does not fit the song slot. Shorten it, reduce channels, or stream it - see Audio. |
SongToAky not found / SongToYm not found |
Install Arkos Tracker 3, or fix TOOLSDIR. |
this encode cannot stream / cannot play at rate |
No encode of that clip fits the playback budget. Use a smaller shape, a lower frame rate, or a shorter clip - see Video delivery. |
audio bytes/frame ... exceeds |
The frame rate is below the floor sound needs. Raise VIDFPS. |
over the NXV player's ... ceiling |
The clip is too big or too long to play. The message names the longest clip your shape and frame rate allow. |
Warnings are different from errors. Anything about the sound-effects bank, or about picture transparency, is advisory - the build carries on and the game still ships.
A build that finished can still fail on the card. These are the interpreter's own messages. Each one paints a magenta bar right across the top row of the screen and prints itself into it in white, so it is legible whatever the game had drawn - and it appears in a release build as readily as a debug one. All of them stop the interpreter; reset or power-cycle to try again.
| Message | What to do |
|---|---|
NextDAAD: DDB missing - E1 |
There is no GAME.DDB beside the interpreter, or the card could not be read at all. Copy the contents of RELEASE\ to the card root, not the folder itself. |
NextDAAD: DDB oversize - E2 |
GAME.DDB is larger than the interpreter will load. See Limits. |
NextDAAD: DDB bad header - E3 |
The file is there but is not a database this build can load - a truncated or corrupted copy, most often. Rebuild and copy it again. |
NextDAAD: DDB wrong machine - E4 |
GAME.DDB is a perfectly good database, but it was compiled for a different computer - CPC, C64, MSX, PC or another. Recompile it for the Spectrum: the kit's own ddb.bat already does, so this normally means a .DDB arrived from somewhere else. Spanish and English databases are both fine; it is the machine that is wrong, not the language. |
NextDAAD: RUNTIME ERROR - E<n> |
The engine hit a fault while running your game. The digit names it: 1 is an invalid location and 4 a nested DOALL, both covered in Known differences and Platform notes; 5 is a version 3 opcode in a version 2 database, see DAAD V3. |
NextDAAD: RD STACK - E9 |
The text reader ran out of nesting depth. This should not happen with a database this kit compiled - if it does, it is worth reporting. |
Once a build runs, the game itself may still behave differently from how it did on another DAAD interpreter. Platform notes is the place to look first.