• v0.1.0 7a82edbc6a

    v0.1.0
    All checks were successful
    CI / msrv (1.90) (pull_request) Successful in 44s
    CI / stable (pull_request) Successful in 58s
    CI / audit (pull_request) Successful in 15s
    CI / msrv (1.90) (push) Successful in 42s
    CI / stable (push) Successful in 57s
    CI / audit (push) Successful in 15s
    Release / build + release (push) Successful in 1m26s
    Stable

    jqueuniet released this 2026-07-23 13:34:48 +02:00 | 56 commits to main since this release

    Signed by jqueuniet
    SSH key fingerprint: SHA256:hjUxou9yR5AKBQ8zK2FkTEp12iDlEomvb63VBpXVwN4

    First public release: a Rust workspace of parsers, decoders, and a dm2
    command-line tool for the assets of Dungeon Master II: The Legend of
    Skullkeep
    , covering the PC (DOS), Macintosh, Amiga, and Sega CD editions in
    both little- and big-endian byte orders.

    Added

    • dm2 CLI — inspect, extract, convert, repack, render, and edit game
      assets:
      • info — print format metadata for a single asset file.
      • extract — unpack graphics.dat / dungeon.dat into a directory, with
        indexed-PNG transparency detection, font-sheet spacing control,
        console-family lighting (--style / --light), per-language text
        filtering, and additive type filters (--sfx, --music, --palette,
        --font, …).
      • dump — convert a recognised file to JSON.
      • convert — transcode music between formats (HMP↔MIDI, …) and savegames
        between DOS and Mac layouts.
      • repack — reassemble an original install into a target engine's expected
        layout.
      • render — render music to 16-bit audio: Mac via the SoundMusicSys synth
        (22254 Hz), DOS via OPL2/OPL3 (49716 Hz), Amiga via a Paula-faithful
        ProTracker replayer (44100 Hz). WAV to a file, raw s16le PCM to stdout.
      • verify — round-trip parse → emit → byte-compare to prove writer fidelity.
      • save — read and edit savegames.
    • dm2-graphics — parser and writer for graphics.dat (format 3/4/5, LE
      and BE), including image, palette, font, text, and sound-effect payloads.
    • dm2-dungeon — parser and writer for dungeon.dat (LE and BE variants).
    • dm2-saves — parser and writer for savegame files (SkSave.dat,
      sksave.bak), across DOS and Mac variants.
    • dm2-music — decoders for DM2 music and audio: HMI/HMP (DOS), Amiga MOD,
      and the Macintosh classic resource fork ('Midi' SMF, 'snd ' Sound Manager
      samples, plus AppleDouble v2 / MacBinary II unwrappers).
    • mod-audio — ProTracker (Amiga MOD) rendering with Paula-faithful hard
      panning.
    • dm2-ftl — parser for the FTL 68k module container used by the Sega CD
      and Amiga ports (and the DM/CSB console ports), including the zero-run
      HUNK_DATA and nibble-stream HUNK_CODE decompressors and all four
      container checksums.
    • dm2-wav — WAV writing helpers for the audio formats the game shipped.
    • dm2-binrw — workspace-internal binrw glue: trait-bounded
      parse / write / to-bytes helpers shared by the binary parsers.
    • dm2-test-fixtures — workspace-internal test helpers that resolve paths
      against fixtures/ and skip silently when a fixture is absent.
    • Per-crate examples/ demonstrating minimal use of each library crate.
    • Engineering hygiene: CI, cargo-deny supply-chain checks, Kaitai Struct
      format specs, rustdoc pages, and fuzz targets.

    Notes

    • The reusable synth crates opl-audio and sms-audio were split out of this
      workspace and are published separately on crates.io; dm2-tools consumes
      them as external dependencies.
    Downloads