Releases: Asure/midway-loadimg
Releases · Asure/midway-loadimg
Release list
v0.97 — IRW header standardized, CARN dedup
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
loadsmashbranch 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)
/Rheaderless flag documented in README
v0.96 — IRW header format standardized
v0.96
- IRW header format standardized — All IRW output now uses the reference 0x44-byte header format:
- Magic
0x00640194at offset 0x20 - ROM address at 0x2C
- Data-only size at 0x30 (header-exclusive)
- uint16 LE checksum at 0x34 (trailing odd byte discarded)
- Constant
0x00000004at 0x38 - Version string unified to
03/14/95for all modes - See
irw-header.mdfor the full specification
- Magic
- Always-on header summary output (Size, Magic, Addr, Dsize, Cksum, etc.)
- Fixes BIGSREC.EXE compatibility for all IRW files
v0.95
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 & 3was always correct - Multi-color mugshots still have minor differences (same class as CMP=1 cascade)
Test Results: 15 pass, 4 fail (unchanged)
v0.94
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
v0.92
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
.longline - Ignores
RLC>run-length encoding directive (falls back to raw pixel encoding)
Test Results: 15 pass, 4 fail (unchanged)
v0.91
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*92instead ofold_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
First public release of loadimg, a modern replacement for the Midway LOAD2/LOADW arcade asset tool.
What's New in v0.9
- Fixed
BBMUG16-bit checksum collisions causing false deduplication matches by adding asum2byte-sum dual-hash mechanism. - Fixed
BB6 CHEERbpp selection by properly scanning the stride-width pixel buffer (matchingLOADW's handling of padding artifacts). - Fixed
BB7cascade failures by gating the PTTBLseq/scroffset skip to< v0x654and enforcing a minimum SIZX threshold of 10. - Added
-vand--versionCLI flags. - Cleaned up debug print leftovers.
Known Limitations
- BB5 CMP=1 Encoder Cascade: The LM/TM multiplier selection algorithm diverges from
LOADWfor 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.