summaryrefslogtreecommitdiff
path: root/src/factories
diff options
context:
space:
mode:
authorLywx <kiritodev01@gmail.com>2026-04-09 12:54:28 -0600
committerGitHub <noreply@github.com>2026-04-09 12:54:28 -0600
commit86a69ba5547df01550616f22d599d20b00bea17c (patch)
treecb38cf6b26af87d0a19c1756bbf6c3d7b491a496 /src/factories
parentfdceee77ae54d0d57cad47108c602408adf83854 (diff)
parent432d85ccb2a9269cd84efef565bee82d184fe91d (diff)
Merge pull request #220 from inspectredc/fzx-base-audio-fix
Diffstat (limited to 'src/factories')
-rw-r--r--src/factories/fzerox/SequenceFactory.cpp15
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;