diff options
| author | Lywx <kiritodev01@gmail.com> | 2026-04-09 12:54:28 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-09 12:54:28 -0600 |
| commit | 86a69ba5547df01550616f22d599d20b00bea17c (patch) | |
| tree | cb38cf6b26af87d0a19c1756bbf6c3d7b491a496 | |
| parent | fdceee77ae54d0d57cad47108c602408adf83854 (diff) | |
| parent | 432d85ccb2a9269cd84efef565bee82d184fe91d (diff) | |
Merge pull request #220 from inspectredc/fzx-base-audio-fix
| -rw-r--r-- | src/factories/fzerox/SequenceFactory.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/factories/fzerox/SequenceFactory.cpp b/src/factories/fzerox/SequenceFactory.cpp index 5a3215d..3630d81 100644 --- a/src/factories/fzerox/SequenceFactory.cpp +++ b/src/factories/fzerox/SequenceFactory.cpp @@ -1329,6 +1329,7 @@ std::optional<std::shared_ptr<IParsedData>> FZX::SequenceFactory::parse(std::vec bool largeNotes = false; bool scanPastJump = false; bool forceLargeNotes = false; + bool envelopeMarkedEnd = false; int32_t channel = -1; int32_t layer = -1; std::deque<SeqLabelInfo> posStack; @@ -1347,6 +1348,10 @@ std::optional<std::shared_ptr<IParsedData>> FZX::SequenceFactory::parse(std::vec forceLargeNotes = GetSafeNode<bool>(node, "force_large_notes"); } + if (node["envelope_end_markers"]) { + envelopeMarkedEnd = GetSafeNode<bool>(node, "envelope_end_markers"); + } + while (count < size || !posStack.empty()) { SeqCommand command; bool nextLabel = false; @@ -2025,8 +2030,14 @@ std::optional<std::shared_ptr<IParsedData>> FZX::SequenceFactory::parse(std::vec command.args.emplace_back(arg); existingPositions.insert(addr); addr += 2 * sizeof(int16_t); - if (arg == 0) { - break; + if (envelopeMarkedEnd) { + if (delay == 0xFFFF) { + break; + } + } else { + if (arg == 0) { + break; + } } } command.size = addr - envAddr; |
