Skip to content

v0.5.14-alpha

Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 12 Aug 15:06
· 20 commits to main since this release

What's New

New Feature

Embedded Track Metadata

  • ECM-R now reads artist and title metadata from ID3v1, ID3v2, Vorbis Comments, and RIFF INFO tags. The overlay and in-game chyron can therefore show the metadata stored in the audio file instead of relying only on its filename. Missing or malformed fields continue to use the existing filename-derived Artist - Title fallback. Prototype originally proposed by @DeathWrench.

Continuous Integration

  • ECM-R now has a GitHub Actions workflow that builds the Release | Win-x86 target and uploads the .asi artifact for every push and pull request. This gives contributors and users a repeatable way to obtain a validated 32-bit build without replacing the established NFSU2 runtime layout.

Improvement

Metadata and Format Compatibility

  • Playlist entries now prefer embedded artist and title metadata while retaining the filename-derived fallback. This improves display quality for well-tagged libraries without changing how existing filenames are handled.

  • .mp1 is now explicitly documented as a legacy MPEG-1 Layer I compatibility format. QA guidance prioritizes MP2, MP3, WAV, OGG Vorbis, and AIFF for new music and testing.

  • OGG documentation now explicitly targets core BASS Ogg Vorbis support, and startup diagnostics include numeric BASS error codes for stream-open and channel-play failures. Ogg Opus and Ogg FLAC remain outside the current runtime unless separate add-ons are supplied.

Playback Resilience

  • Failed playback candidates no longer enter shuffle history or trigger unbounded autoplay retries. ECM-R now limits attempts to one playlist pass while preserving normal repeat behavior for successful playback.

  • Files that BASS cannot open are excluded from runtime playback and the read-only Playlist menu for the current session. The files remain on disk and in [trax], allowing the next launch to probe them again after the user repairs or replaces them.

Parser Hardening

  • The ID3v2 parser now prefers BASS_TAG_ID3V2_BINARY with an explicit memory bound and falls back to the legacy BASS_TAG_ID3V2 block on older BASS 2.4 builds. This keeps MP2 and AIFF metadata readable while safely falling back to ID3v1 or filename parsing for malformed tags.

  • The ID3v1 parser now uses the BASS-compatible TAG_ID3 structure layout instead of raw byte offsets. A compile-time packing assertion verifies that the structure remains the expected 128 bytes.

  • RIFF INFO parsing now handles the BASS-documented KEY=VALUE\0 representation. Malformed entries are rejected safely instead of producing unreliable metadata.

  • Vorbis and RIFF metadata walkers now guard pointers before dereferencing and use bounded string handling instead of unbounded strlen or std::string(p) calls. The existing sanity guard remains a heuristic rather than a complete memory bounds check.

Display Safety

  • Long embedded artist and title values are truncated in a UTF-8-aware way before they reach the chyron. Conversion through wide strings prevents multi-byte characters from being split at the 64-codepoint display limit.

Bug Fix

Overlay Formatting

  • Fixed a pre-existing overlay format-string bug by passing track metadata as data to ImGui::Text. Track titles containing % are now displayed safely instead of being interpreted as formatting directives.

Documentation Updates

  • Updated CHANGELOG.md to record the ECM-R changes released in v0.5.14-alpha. The existing ECM-R, ECM, and BttrDrgn attribution lineage remains intact.

  • Added docs/releases/v0.5.14-alpha.md so the release scope, validation status, and operational caveats are available alongside the changelog. The document keeps the stable ecm-r.x86.asi, ecm-r.x86.ini, and bass.dll deployment contract.

Validation

  • Built successfully in Release | Win-x86 through the repository's GitHub Actions workflow.
  • Validated frontend/loading/racing/overlay/config for all touched areas.
  • Confirmed metadata fallback behavior, BASS probe filtering, bounded playback retries, parser guards, UTF-8 truncation, and overlay formatting safety; local Windows runtime smoke testing was unavailable on macOS.

Notes

  • No new known limitations were introduced. OGG support remains limited to core BASS Ogg Vorbis; Ogg Opus and Ogg FLAC require separate add-ons that the current runtime does not load.

Full Changelog: v0.5.13-alpha...v0.5.14-alpha