Skip to content

Releases: RCompanyX/ecm-R

v0.6.0-alpha

v0.6.0-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 31 Aug 14:53

What's New

New Feature

dgVoodoo2 D3D9 Renderer Capture

  • ECM-R now captures NFSU2's dgVoodoo2 D3D9 renderer through the SPEED2.EXE Direct3DCreate9 call site, including CreateDevice, EndScene, Present, and Reset. The live-capture path avoids synthetic-device probing and provider-export hooks, improving compatibility with the game's renderer facade.

Persistent Diagnostics

  • ECM-R now maintains persistent ecm-r.x86.log diagnostics with bootstrap debug capture, persisted [config] log_level, a fixed 2 MiB active limit, one .1 backup, bounded record truncation, and console-only fallback when file logging fails. These safeguards keep troubleshooting data available without allowing log growth or file errors to disrupt runtime operation.

  • Diagnostic coverage now includes bootstrap, MinHook, renderer, settings, BASS, playback, state-transition, pause, loading-screen, and mute-package events without per-tick, per-frame, or per-poll logging. Users get useful lifecycle detail while avoiding noisy high-frequency records.

CI Artifact Packaging

  • Direct pushes to main now publish a dedicated ECM-R-Win32 artifact containing the ASI, translations, README.md, and LICENSE, while other CI runs retain ecm-r-build. This gives direct main builds a predictable user-facing package without changing artifact naming for other workflows.

Release Symbols

  • Release builds now generate a matching PDB and CI publishes it as a separate symbol artifact for crash-dump analysis. Keeping symbols outside the runtime package preserves a smaller deployment while allowing maintainers to investigate matching failures.

Bug Fix

Playback Navigation While Paused

  • Previous and skip navigation no longer leave custom playback permanently silent when used during manual pause. The playback state now remains coherent so users can resume control after navigating from the paused overlay or hotkey flow.

Startup Ordering

  • Renderer, game-loop, package, and playback callbacks now respect BASS device initialization and session shutdown boundaries. This prevents early or late callbacks from attempting audio work before the device is ready or after ECM-R has disabled audio.

Renderer Failure Handling

  • Renderer startup failures now keep ECM-R loaded when direct game hooks may still reference the module. A bounded no-callback path fails closed instead of unloading the module, avoiding dangling game hook targets while making the failure finite.

dgVoodoo2 Startup

  • dgVoodoo2 startup now preserves the provider's original call and return path while waiting for live renderer callbacks. If the expected callbacks do not arrive, ECM-R fails closed without unloading, preventing startup races from breaking the game's existing renderer path.

Documentation Updates

  • Updated CHANGELOG.md for v0.6.0-alpha.
  • Updated README.md and CONFIGURATION.MD with diagnostics scope, paused-navigation behavior, and renderer startup safety details. BUILDING.md already documented the direct-main artifact, Release PDB separation, and stable runtime package layout, so no edit was needed there.
  • Updated docs/releases/v0.6.0-alpha.md. The release documentation preserves ECM-R's lineage to the original ECM project by BttrDrgn and the established runtime filename contract.

Validation

  • Release | Win-x86 build validation is pending because msbuild is not available in this environment.
  • Validated frontend/loading/racing/overlay/config contracts for all touched areas through source and documentation review; live NFSU2 execution was not available in this environment.
  • Verified the version macro, changelog structure, release link, direct-main artifact naming, separate symbol packaging, bounded diagnostics behavior, renderer callback boundaries, and release-note comparison link.

Notes

  • dgVoodoo2 remains optional third-party software, and configurations outside the tested environments are not guaranteed. ECM-R remains focused on the NFSU2 Win-x86 runtime and still requires ecm-r.x86.asi, ecm-r.x86.ini, bass.dll, and the established ecm-r/translations files in their documented locations.

Full Changelog: v0.5.15-alpha...v0.6.0-alpha

v0.5.15-alpha

v0.5.15-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 20 Aug 14:11

What's New

New Feature

Overlay Localization

  • ECM-R now provides English and neutral-Spanish localization for overlay controls, hotkey feedback, release notices, and static BASS startup errors. Runtime language changes take effect on the following frame so the overlay remains internally consistent while switching languages.

Editable Translation Bundles

  • The release adds cached editable UTF-8 translation bundles at ecm-r/translations/en.ini and ecm-r/translations/es.ini. Placeholder validation and safe English or compiled-default fallbacks keep missing or malformed bundle entries from preventing startup.

Language Configuration and Packaging

  • The [config] language = en|es setting is now persisted and repaired when it is missing or invalid. Post-build and CI checks also verify that both translation files are included in the packaged runtime, making deployment failures easier to catch before installation.

Debug Build Workflow

  • An optional manually triggered GitHub Actions workflow now builds Debug | Win-x86, verifies the DLL, ASI, and PDB, and uploads a debug artifact. This provides a repeatable diagnostic build without changing the normal Release workflow used for NFSU2 deployment.

Improvement

Translation Packaging

  • Editable translation bundles are now namespaced under ecm-r/translations/ instead of using a shared location. This reduces collisions with other mods while preserving the documented runtime layout and filenames.

Startup Diagnostics

  • ANSI-origin Windows and BASS path diagnostics are converted to UTF-8 before localized startup message boxes display them. Users can therefore receive localized setup errors without losing diagnostic text from the underlying Windows APIs.

In-Game Movie Muting

  • The existing in-game movie muting option is now promoted from Experimental to validated normal functionality, exposed in the Actions menu, and enabled by default for fresh configurations and migrations. This gives supported comic-style movie sequences consistent protection from conflicting custom music without requiring a hidden experimental control.

Movie-Muting Configuration

  • Movie-muting persistence is now canonical under [config], while the empty Experimental menu container is hidden from the current UI and retained only as an internal entry point. Configuration migration honors an existing canonical value and promotes obsolete placements to true when no canonical value exists.

Documentation Updates

  • AGENTS.md and docs/application-context.md were synchronized with the four-agent workflow, authoritative policy ownership, and current build/runtime facts. This keeps contributor guidance aligned with the behavior and packaging documented for ECM-R.
  • Updated CHANGELOG.md for v0.5.15-alpha.
  • Updated README.md and BUILDING.md to document the manually triggered debug workflow and its diagnostic artifact.
  • Updated docs/releases/v0.5.15-alpha.md. The release documentation preserves the ECM-R / ECM / BttrDrgn attribution lineage and the established runtime filename contract.

Validation

  • Release | Win-x86 build validation remains covered by GitHub Actions; a local Windows build was unavailable on this macOS host.
  • Frontend/loading/racing/overlay/config runtime validation was not runnable on this macOS host; affected documentation, translation paths, and workflow checks were reviewed against the repository contracts.
  • Verified the version bump, changelog section structure, release link, translation packaging paths, and Debug workflow output checks.

Notes

  • The manually triggered debug artifact is for diagnostics and does not replace the normal Release package. The runtime still requires ecm-r.x86.asi, ecm-r.x86.ini, bass.dll, and the namespaced translation bundles in their established locations.

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

v0.5.14-alpha

v0.5.14-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 12 Aug 15:06

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

v0.5.13-alpha

v0.5.13-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 13 Jun 13:48

What's New

Song Transition Smoothing

ECM-R has improved music loading across various scenarios where brief freezes occurred when switching tracks. The unnecessary BASS_STREAM_PRESCAN flag was performing a blocking file pre-scan during stream creation, which stalled the game's main loop. Removing this flag resolves the most common causes of stutter.

Background

The BASS_STREAM_PRESCAN flag tells BASS to scan the entire audio file before returning the stream handle. For large or remotely hosted files this can be useful, but for local music files the pre-scan added a noticeable delay without user-facing benefit. The stream is now opened with default flags and plays immediately.

Ongoing Work

Optimization is still being explored. In isolated cases, some lag may still occur depending on file size, disk speed, and system load. Further refinements to the stream creation and playback pipeline are under investigation.

Filename and Display Cleanup

ECM-R now parses filenames more reliably and displays them consistently across the overlay, playlist menu, and in-game notification.

Robust Filename Parsing

  • Filename parsing now splits on the first - character instead of the last, and trims whitespace from both sides. This correctly handles filenames with extra spaces around the separator, such as 04. - Song Test One.mp3 being displayed as 04. - Song Test One.
  • Artist and title values are now trimmed after parsing, so the overlay menu bar, playlist menu, and chyron notification show clean text without leading or trailing whitespace.

Consistent Artist - Title Display

  • The overlay menu bar previously showed only the song title; it now shows the artist alongside the title in Artist - Title format when available, matching the in-game chyron behavior.
  • The playlist menu no longer shows raw filenames with extra whitespace but instead displays the cleaned Artist - Title format that users see everywhere else.

Documentation Updates

  • Updated AGENTS.md and docs/application-context.md to document the project's subagent architecture (ecmr-plan, ecmr-dev, ecmr-release).
  • Added docs/releases/v0.5.13-alpha.md.
  • Updated CHANGELOG.md for v0.5.13-alpha.

Validation

  • Built successfully in Release | Win-x86.
  • Verified song transitions no longer cause a brief game freeze.
  • Verified filenames with extra spaces around the separator (e.g. Artist - Title.mp3) are parsed and displayed correctly.
  • Verified artist and title display in the overlay menu bar, playlist menu, and chyron notification show clean Artist - Title format.
  • Validated frontend, loading, racing, and overlay/config flows for all touched areas.

Notes

  • The overlay, playlist menu, and chyron all share the same filename-parsing logic; any future changes to parsing affect all three surfaces equally.

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

v0.5.12-alpha

v0.5.12-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 06 Jun 15:49

What's New

Unicode Filename Support

ECM-R no longer crashes when MP3 files contain Cyrillic, Korean, Japanese, or other non-ASCII characters in their filenames. The game will now enumerate, display, and play these files correctly.

Background

The game engine uses ANSI (CP-ACP) internally, which cannot represent most non-Western characters. ECM-R now stores all file paths as UTF-8 internally and converts only at the boundaries where required.

Playlist Display

  • The ECM-R in-game overlay now renders Unicode filenames correctly (Cyrillic, Korean, Japanese, etc.) in the playlist menu.
  • Fixed a bug where filenames with multiple - separators (e.g. Artist - Title - Subtitle) showed as N/A in the notification.

In-Game Notification (Chyron)

  • The chyron shows the parsed title and artist for every track.
  • Characters that cannot be represented in the game's ANSI code page display as ?. This is a game engine limitation and affects all mods that interact with the stock notification system.

INI Persistence

  • The [trax] section now stores filenames as UTF-8, which is backwards compatible with existing INI files.

Bug Fixes

  • Fixed a crash on startup when any audio file has non-ASCII characters in its name.
  • Fixed the file extension filter that was incorrectly accepting all file types regardless of the configured extension list. Extensions are now matched case-insensitively (.MP3, .WAV, etc., are recognized correctly).
  • Fixed the title parser that corrupted some track titles by trimming the first two characters.

Track Persistence Auto-Sync

ECM-R now keeps the [trax] section in sync with the actual files on disk. No manual editing or version bumps needed.

Automatic Population

  • New music files discovered in the playlist folder are automatically written to [trax] with ALL routing on the next startup.
  • Previously, new songs would play in memory but never appear in the INI unless a configuration migration was triggered.

Orphan Cleanup

  • When a music file is removed from the playlist folder, its corresponding [trax] entry is automatically cleaned up on the next startup.
  • Existing track routing values (ALL, FE, IG) are preserved while new tracks are added and orphaned entries are removed.

Documentation Updates

  • Updated README.md to document automatic [trax] population and orphan cleanup.
  • Updated CONFIGURATION.MD to note that [trax] entries are synced automatically on startup.
  • Updated docs/application-context.md with the settings::sync_trax_entries() behavior.
  • Added docs/releases/v0.5.12-alpha.md.
  • Added docs/trax-persistence-tests.md as a test plan for the persistence feature.
  • Updated CHANGELOG.md for v0.5.12-alpha.

Validation

  • Built successfully in Release | Win-x86.
  • Verified that MP3 files with Cyrillic, Korean, and mixed-script filenames enumerate and play without crashing.
  • Verified that the playlist overlay displays the correct filenames.
  • Verified that the chyron shows the parsed title and artist.
  • Verified that new tracks appear in [trax] automatically and orphaned entries are removed.

Notes

  • Track routing values (FE, IG) can still be changed manually by editing the INI file.
  • The in-game notification shows ? for characters outside the game's ANSI code page due to the NFSU2 engine limitation.
  • sync_trax_entries() runs on every startup, not just on configuration migration.

Full Changelog: v0.5.11-alpha...v0.5.12-alpha

v0.5.11-alpha

v0.5.11-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 24 May 13:52
f958357

What's New

Experimental In-Game Movie Muting

New Overlay Toggle

  • ECM-R now exposes an Experimental overlay menu with an In-Game Movie Muting toggle.
  • The toggle updates the runtime behavior immediately and persists the change back to the INI file.

Disabled by Default

  • This feature remains experimental in this release.
  • The new [experimental] ingame_movie_muting setting defaults to false.
  • While the setting stays disabled, ECM-R keeps the legacy package-driven pause and resume behavior.

Comic-Style Movie Coverage

  • When enabled, ECM-R treats NFSU2's documented IG_PlayMovie.fng package as an in-game movie mute trigger.
  • This covers comic-style career movie sequences that play before or after races through the game's IG_PlayMovie.fng path.
  • The experimental mode also reconciles pause state against the mute packages that are actually loaded so music stays paused for the full lifetime of the movie package.

Configuration Changes

Experimental Section

  • The movie-muting option now lives under a dedicated [experimental] section as ingame_movie_muting = false.
  • Existing temporary experimental_ingame_movie_muting entries migrate automatically to the new setting name and section.

Documentation Updates

  • Updated README.md to describe the experimental overlay menu entry and the new INI setting.
  • Updated CONFIGURATION.MD to document the [experimental] section and the default false value.
  • Updated docs/application-context.md to record that the movie-muting path is still experimental.
  • Updated CHANGELOG.md for v0.5.11-alpha.

Validation

  • Built successfully in Release | Win-x86.
  • Verified touched source files for editor-reported errors.
  • Manual gameplay validation confirmed that enabling the option pauses music during a comic-style race cinematic and resumes playback on race entry.

Notes

  • This release keeps the feature experimental on purpose.
  • If stop_music_on_loading_screens is enabled, loading screens can still stop the current track after the movie transition.

Full Changelog: v0.5.10-alpha...v0.5.11-alpha

v0.5.10-alpha

v0.5.10-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 10 May 18:02
0313549

What's New

Startup Release Notice

One-Time GitHub Check

  • ECM-R now resolves release availability once during overlay startup instead of retrying during per-frame UI updates.
  • The lookup runs asynchronously so the overlay stays responsive while the request is in flight.
  • WinHTTP timeouts are kept short so unreachable networks fail fast and gameplay continues without a startup popup.

Stable vs Testing Status

  • The startup notice now states whether the newer GitHub build is a stable release or a testing pre-release.
  • The tooltip mirrors that status and shows the detected tag.
  • The notice stays hidden when the current build is already up to date or the release check cannot complete.

Release Discovery Policy

Latest Non-Draft Release

  • Release discovery now reads the GitHub releases list instead of /releases/latest.
  • ECM-R explicitly follows the latest non-draft release so published testing builds remain visible in the overlay.
  • Version comparison now evaluates numeric components and prerelease suffixes before deciding that a newer release exists.

Documentation Updates

  • Updated README.md to document the startup release notice and its stable/testing wording.
  • Updated CHANGELOG.md for v0.5.10-alpha.

Validation

  • Verified the touched source and documentation files for editor-reported errors.
  • Queried the live GitHub releases list to confirm the current repository release flow exposes the draft and prerelease flags used by the new discovery policy.

Notes

  • Current release policy is latest non-draft, not latest stable only.
  • If the release check fails, ECM-R shows no release notice and continues without a popup.

Full Changelog: v0.5.9-alpha...v0.5.10-alpha

v0.5.9-alpha

v0.5.9-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 10 May 16:17

What's New

Better BASS Load Diagnostics

Clearer Startup Failure Popup

  • When ECM-R cannot load bass.dll, the startup popup now uses clearer wording.
  • The popup keeps the localized Windows error text returned by the loader.
  • The popup now also shows the exact path that ECM-R tried to load.
  • The message points users back to the README for official bass.dll download and placement guidance.

Documentation Updates

Roadmap Refresh

  • The README roadmap now lists In-Game Movie Handling as planned work.

BASS Setup Guidance

  • The README notes now explain that failed bass.dll loads show both the Windows error text and the attempted path.

Technical Changes

Stable Loader Error Capture

  • GetLastError() is now captured once before the BASS loader resets its internal state.
  • This keeps the reported Windows loader error stable in failure cases.

Validation

  • Built successfully in Release | Win-x86.
  • Reviewed the updated release and README text against the current bass_api.cpp and audio.cpp failure paths.

Notes

  • This release does not change configuration keys or runtime file names.
  • bass.dll must still be placed next to the ECM-R runtime files in the target scripts folder.

Full Changelog: v0.5.8-alpha...v0.5.9-alpha

v0.5.8-alpha

v0.5.8-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 10 May 11:00

What's New

Hotkey Rebinding and New Toggle Shortcuts

Runtime Hotkey Configuration

  • Added a dedicated Hotkeys menu to the ECM-R overlay.
  • The overlay can now rebind all existing ECM-R hotkeys at runtime:
    • toggle_overlay
    • pause_track
    • previous_track
    • skip_track
  • Added two new optional keyboard toggles:
    • toggle_shuffle
    • toggle_repeat

New Default Key Behavior

  • The new toggle_shuffle and toggle_repeat entries are created as None by default.
  • This avoids introducing new in-game key conflicts until the user assigns those actions manually.
  • Existing configurations automatically gain those two new [keys] entries on update.

Overlay Rebinding Behavior

Safe Capture Flow

  • While the overlay is waiting for a new key, ECM-R suspends all ECM-R hotkey execution.
  • Pressing the candidate key during capture no longer triggers playback, overlay, shuffle, or repeat actions.
  • Capture can be canceled explicitly from the UI without consuming a keyboard key.

Validation and Safeguards

  • Duplicate key assignments are rejected directly in the overlay.
  • Resetting a binding back to its default also respects the duplicate-assignment rule.
  • toggle_overlay cannot be cleared from the UI, which avoids stranding the user without a way to reopen the overlay.
  • If a hotkey save fails, ECM-R restores the previous runtime binding instead of leaving runtime and INI state out of sync.

Shared Shuffle and Repeat Behavior

Keyboard and Overlay Stay Aligned

  • Shuffle and repeat now use shared runtime helpers.
  • The new shuffle hotkey performs the same work as the overlay checkbox:
    • toggles shuffle_enabled
    • rebuilds the playlist order
    • resets the current playlist index
  • The new repeat hotkey uses the same toggle path and persists the updated setting immediately.

Configuration Changes

Updated [keys] Section

The generated ecm-r.x86.ini now includes:

[keys]
toggle_overlay = F11
pause_track = F8
previous_track = F9
skip_track = F10
toggle_shuffle = None
toggle_repeat = None

Accepted Unassigned Syntax

  • None and Unbound are both accepted as explicit disabled values.
  • Unsupported or duplicate key entries are normalized back to safe defaults when the configuration is loaded.

Documentation Updates

  • Updated README.md to document the new Hotkeys menu, optional shuffle/repeat hotkeys, and None / Unbound syntax.
  • Updated CONFIGURATION.MD to document the new [keys] entries, duplicate-binding rules, startup lock wording, and capture behavior.
  • Updated CHANGELOG.md for v0.5.8-alpha.

Validation

  • Verified in-game that the existing hotkeys still work, rebinding persists, duplicate bindings are rejected, and captured keys do not fire live actions during rebinding.
  • Verified that resetting to defaults also respects duplicate-binding protection.

Notes

  • The startup hotkey lock remains limited to the first startup music banner of the session.
  • Manual INI editing remains supported for recovery or manual key assignment outside the overlay.

Full Changelog: v0.5.7-alpha...v0.5.8-alpha

v0.5.7-alpha

v0.5.7-alpha Pre-release
Pre-release

Choose a tag to compare

@RCompanyX RCompanyX released this 05 May 20:27

What's New

Playback and Chyron Stability

Startup Chyron Protection

  • ECM-R now keeps its hotkeys disabled during the first startup music banner.
  • Hotkeys unlock automatically after that first chyron has been shown and dismissed once.
  • This prevents early manual pause, skip, previous, or overlay actions from interrupting the startup chyron flow.

Resume and Banner Behavior

  • Frontend FNG activity no longer resumes ECM-R playback unless the mod is actually in its gameplay-driven paused state.
  • Resuming playback now requests the current track chyron through the same deferred path used for normal track starts.
  • The current track notification is retried until the required frontend chyron UI is ready.

Overlay and About Menu

Version Visibility In-Game

  • The About menu now shows the current ECM-R version.
  • This makes it easier to confirm which build is currently loaded without leaving the game.

Technical Changes

Native Chyron Path Restoration

  • Restored the original NFSU2 chyron summon function instead of suppressing it.
  • ECM-R now calls the native summon path only when the game state is suitable for showing a chyron.
  • Frontend chyron requests wait until the expected frontend UI packages are loaded.

Input Locking During Startup

  • Added startup-only hotkey locking for toggle_overlay, pause_track, previous_track, and skip_track.
  • Input latches are synchronized while locked so held keys do not trigger a deferred action when the lock is released.
  • The lock applies only to the first startup chyron of the session and is not reused for later frontend or in-game banners.

User-Facing Notes

What You Will Notice

  • Right after launching the game, ECM-R hotkeys may appear inactive for a short time.
  • This is expected and lasts only until the first startup music banner finishes.
  • After that, hotkeys and overlay controls behave normally for the rest of the session.

Documentation Updates

  • Updated README.md to warn about the temporary startup hotkey lock.
  • Updated CONFIGURATION.MD to describe the same behavior in the key binding section.
  • Updated CHANGELOG.md for v0.5.7-alpha.

Validation

  • Verified the touched source and documentation files for editor-reported errors after the changes.
  • Runtime behavior was validated in-game for the startup hotkey lock and first chyron completion flow.

Notes

  • The startup lock is intentionally limited to the first chyron shown to the user in each session.
  • Later frontend or in-game track changes keep their normal control behavior.

Full Changelog: v0.5.6-alpha...v0.5.7-alpha