Repository navigation
Conversation
# Conflicts: # src/mods/Loader.lua
# Conflicts: # docs/modding.md # src/mods/Loader.lua # src/world/WorldAPI.lua
…native-sound-player-lifecycle
…native-sound-script-waits
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Native GBA
playmoncrycurrently loses its mode and defers playback to a later text dialog;waitmoncryis lowered to a no-op. This starts the recording immediately, resolves species/mode variables, and yields the actual world runner until native cry completion.FireRed/Emerald playback now handles Game Freak DPCM, all 13 cry modes, native pitch/chorus/reverse/release controls and Emerald's mode-six volume. Hoenn species use their native cry-ID control table; the importer writes the correct mapping and runtime playback repairs older stock sequential entries while retaining explicit mod overrides. PCM is cached separately from fresh, independently owned playback sources. Isolated dex playback does not replace world wait state or music attenuation.
The real audio clock runs separately from accelerated logic. Wait polling supplies a tick only when the audio service did not advance; recording-derived expiry, early source completion and the native no-pack fallback remain distinct. Native command revision 19 rejects older cry semantics before link-battle setup; party codec stays 1. Independent parent serialization changes only revision 18 -> 19: native digest
22e453523676534e, legacye33d251961f2a41dunchanged.Stack and review
Depends on #278 and the preceding portability series. Feature-only comparison. The main-based diff includes prerequisites until they merge. The contract document and source-bound QA receipt include reproduction commands and retained failure evidence. The playable fork testing branch is updated to
d9321835ad2ca50ee40028c59f3b36f2a0d34b9b; qualified source/test trees are preserved.Validation
0286d291: 285/285 engine suites, SDK 3/3, B30 and all quick tiers pass.1322ee81: 167/176 engine suites versus fresh Honor native GBA world-script sound waits and audio-clock completion #278 166/175. Exact anchored FAIL-line Counters match: the same 25 lines / nine inherited suites, with no additions or removals. SDK 3/3 and B30 pass on both.nature_powerFireRed worker was terminated at its recorded 60-second deadline with no observations. The original failed report is retained. Four fresh workers with a bounded 180-second budget all pass (9.6–19.2 seconds); every previously completed observation is unchanged. The checker gives this exhaustive mode the same bounded budget.The reference stays read-only at
535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91; no reference function is patched. CPU hardware doubles run the real engines, controllers, VMs and renderers without starting a game/GPU/audio device or writing normal saves/imports. No ROM, imported audio image or private pack is committed. Results cover the admitted FireRed/Emerald contracts, not every public audio-event timing, unsupported profile, whole mod or playthrough. Native BGM commands remain follow-up work: actualfadeoutbgm 4still stops immediately on the host instead of following the native 64-frame fade.All validation above is local. All ten PR workflows currently report
action_requiredand await upstream approval. The dedicated contract workflow has zero executed jobs; this does not establish hosted validation.Contributions by Roxas2712 are offered under the fork contribution terms and provenance notice; existing upstream and third-party terms remain applicable.
Native silent-fallback follow-up: no-pack and failed-render playback clear the current physical source while retaining the existing64-frame native wait. An earlier stopped device can no longer complete that new wait immediately. Isolated playback and older overlapping voices retain their owners. The new ROM-free regression records30 failures before the fix and passes165 checks afterward across all five GBA editions. Exact offered source
937467f1passes those165 checks plus10983 existing native PCM/script/audio-clock/field/isolated-playback checks; evidence5ec898c5ca. A dedicated CI job runs both groups. No private mod, player save or additional audio clock is changed.Covered original contributions by Roxas2712 are offered under LICENSE-ROXAS2712.md, including the specific permission for Cedric / UNDERdecoded with credit. Existing source notices and earlier permissions remain applicable.