Skip to content

Releases: Asure/midway-loadimg

v0.97 — IRW header standardized, CARN dedup

Choose a tag to compare

@Asure Asure released this 13 May 08:57

v0.97 — 16 pass, 6 fail

IRW Header

  • Standardized 0x44-byte header across all modes: magic 0x00640194, data-only size, uint16 LE checksum (trailing odd byte discarded)
  • Version string unified to "03/14/95" for all modes
  • BIGSREC.EXE compatible

Dedup

  • memcmp byte-for-byte verification prevents false checksum collisions
  • Per-mode: modern (LOADW) checksum-only, /OLD2 ANIX-only + memcmp, /OLD1 off
  • CARN RACKUP and FINGRNT now pass

/OLD2 (Total Carnage)

  • SIZX uses IMG_STRIDE(w) for TBL output
  • 10/13 TBLs pass (JET/TEXT/TITLE cosmetic SIZX diffs)

Smash TV

  • Dedicated loadsmash branch with ROM-verified dedup (u105+u89 EPROM dumps)
  • Switch: git checkout loadsmash

Fixes

  • BBMUG, MK5MIL restored: modern mode checksum-only dedup
  • Consistent .TEXT trailer per mode
  • Always-on file header output (Size, Magic, Addr, Dsize, Cksum)
  • /R headerless flag documented in README

v0.96 — IRW header format standardized

Choose a tag to compare

@Asure Asure released this 12 May 14:21

v0.96

  • IRW header format standardized — All IRW output now uses the reference 0x44-byte header format:
    • Magic 0x00640194 at offset 0x20
    • ROM address at 0x2C
    • Data-only size at 0x30 (header-exclusive)
    • uint16 LE checksum at 0x34 (trailing odd byte discarded)
    • Constant 0x00000004 at 0x38
    • Version string unified to 03/14/95 for all modes
    • See irw-header.md for the full specification
  • Always-on header summary output (Size, Magic, Addr, Dsize, Cksum, etc.)
  • Fixes BIGSREC.EXE compatibility for all IRW files

v0.95

Choose a tag to compare

@Asure Asure released this 09 May 23:14

v0.95 — RLC Encoder Bug Fix

The RLC Puzzle is Solved

The while (run > 0) inner loop bug caused the encoder to emit malformed run bytes for trailing 1-3 pixel remainders. Fixed to while (run >= 4) — remainders now correctly fall through to the literal branch.

Effect

  • filestxt and authtxt RLC output is now byte-exact with the LOAD.EXE reference (after removing 1 stale trailing byte)
  • The "quantization puzzle" was actually just this encoder bug — pixel & 3 was always correct
  • Multi-color mugshots still have minor differences (same class as CMP=1 cascade)

Test Results: 15 pass, 4 fail (unchanged)

v0.94

Choose a tag to compare

@Asure Asure released this 09 May 00:23

v0.94 — RLC Run-Length Encoding for Legacy Games

Changes

  • Implemented RLC run-length encoding for LOAD.EXE output (/OLD mode)
  • Format: [1][rrrrr][cc] = run of 68 or 4-34 pixels of 2-bit color cc; [00][c2][c1][c0] = 3 literal 2-bit pixels
  • RLC> directive toggles RLC encoding on/off in LOD files
  • Flat (non-row-based) pixel array encoding matching LOAD.EXE

Test Results: 15 pass, 4 fail (unchanged)

NARCMUGS.LOD passes for filestxt (byte-exact RLC match); authtxt has 1-byte cascade due to 8bpp→2bpp color quantization differences.

v0.93

Choose a tag to compare

@Asure Asure released this 09 May 00:02

v0.93 — /OLD DMA1 Mode (Narc, Trog)

Changes

  • /OLD now disables ZON>/ZOF> compression (DMA1 hardware, no zero-run support)
  • All images stored as raw pixels in legacy mode

Test Results: 15 pass, 4 fail (unchanged)

v0.92

Choose a tag to compare

@Asure Asure released this 08 May 23:59

v0.92 — /OLD Legacy LOAD.EXE Mode

Changes

  • Added /OLD flag for legacy LOAD.EXE output format (Narc, Trog)
    • Old-style IHDR: no CTRL, PWRD, or PT3Y fields
    • SAG:L and PAL:L output on the same .long line
    • Ignores RLC> run-length encoding directive (falls back to raw pixel encoding)

Test Results: 15 pass, 4 fail (unchanged)

v0.91

Choose a tag to compare

@Asure Asure released this 08 May 23:36

v0.91 — Dynamic IHDR, Old-Format Palette Fix, WWF Test Data

Changes

  • IHDR> directive now fully dynamic: Field order, grouping (consecutive :W fields share .word lines), and formatting all follow the IHDR spec. Removed the hardcoded CTRL special case that broke line grouping when PAL:L was skipped via POF>.
  • Old-format IMG palette offset fixed: 42-byte to 50-byte IMG_REC conversion was computing pal_ofs = old_oset + n*92 instead of old_oset + n*42. Fixes palette lookups in WWF WrestleMania font files (TROGF15.IMG, TROGF7.IMG).
  • WWF test data added: MAIN.LOD and MISC.LOD with LOADW reference outputs and verbose logs.

Test Results: 15 pass, 4 fail

Passing: MK2-8MIL, BB/BB2/BB3/BB4/BB8, BBMUG, BBVDA, MISC
Failing: BB5 (3/7 CMP=1 cascade), BB6 (5/6 PLYRDSQ2 PT0X sentinel), BB7 (15/16 OUTDOOR dedup), BAM (WWF TBL format)

loadimg v0.9

Choose a tag to compare

@Asure Asure released this 08 May 10:00

First public release of loadimg, a modern replacement for the Midway LOAD2/LOADW arcade asset tool.

What's New in v0.9

  • Fixed BBMUG 16-bit checksum collisions causing false deduplication matches by adding a sum2 byte-sum dual-hash mechanism.
  • Fixed BB6 CHEER bpp selection by properly scanning the stride-width pixel buffer (matching LOADW's handling of padding artifacts).
  • Fixed BB7 cascade failures by gating the PTTBL seq/scr offset skip to < v0x654 and enforcing a minimum SIZX threshold of 10.
  • Added -v and --version CLI flags.
  • Cleaned up debug print leftovers.

Known Limitations

  • BB5 CMP=1 Encoder Cascade: The LM/TM multiplier selection algorithm diverges from LOADW for some compressed images.
  • BB6 PLYRDSQ2: PT fields fail to compute correctly due to PTTBL 40-byte stride aliasing reading pixel data.
  • BB7 OUTDOOR: A 20-byte SAG shift due to LOADW's buggy false-deduplication of LEAF7/LEAF8. This tool produces correct output, meaning it won't 100% byte-match the original buggy reference files.