-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Codec's AMK Beta (parser version 3) #282
Draft
KungFuFurby
wants to merge
24
commits into
master
Choose a base branch
from
0216-codec-amk-beta-music-mml-parser
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains 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
This marks the beginning of the implementation for Codec's AddmusicK Beta. Note that the upcoming code will be sourced, though also probably slightly modified, from the C++ source, which is otherwise not public, unlike the rest of the extant beta: I acquired the source from Codec themselves. This branch will not be merged until all of the music changes are implemented. This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor adjustments. This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor adjustments. This commit mentions #216.
Mostly adapted from the source for Codec's AMK beta, though with some minor adjustments. This commit mentions #216.
Pretty much directly adapted from the source for Codec's AMK beta, though with some minor adjustments. Resetting key on and non-key on remote code events are not yet implemented. Technically they can be since I have them in another branch, but that still requires some inheritance, so to speak. This commit mentions #216.
Some of these require new hex commands or SPC700-side code. Others, well... they simply haven't been implemented yet.
My bad for this failed circumnavigation (and not thinking things through with using make on this before pushing).
This one stops the parser from guessing the tempo, as it already does not guess when any tempo fade is used.
An erroneous text position increment was added on where it wasn't supposed to be since it was already done, causing one of the digits to not get read correctly.
…o check The source code I got made a mistake with testing with ltempo, when ltempo was not the variable that was supposed to be checked. Also, AddmusicK used a tabbed block without using brackets, which for me is more Python-esque than C++-esque.
A bad variable reference was used, and the v commands were outputting the wrong values.
With the addition of the two remote code events tailored for the two types of events, the implementation of (!!) can be completed on a technicality.
(!!) was initially not going to be implemented in parser version 4 due to me not wanting to grab anything that required a new hex command. However, due to the way AMK Beta's Remote Gain was restored, this MML command can now make the cut into parser version 3. : and % are still cut from parser version 4, on that note: : because it requires a new hex command, and % because of a conflict with binary notation in asar (I have decided to reserve this for parsing a binary number).
Partially cherry picked off of commit e026687 . Does not include components that currently require a different commit to implement.
Didn't realize a marker was removed in the process of merging, which would have caused a compilation failure.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
c++-side
Involves the AddMusicK program itself in some way.
documentation
Improvements or additions to documentation
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.
This merge request closes #216.
The music parser additions (and modifications) that this should cover are...
:
- breaks out of an $E9 loop (requires Loop Break VCMD #89) (ready via commit e49d63f)%
- triggers percussion IDv
is enhanced to support slidest
is enhanced to support slidesw
is enhanced to support slides(!!)
resets remote code. (AMK Beta Remote Gain/Anticipation Gain Revamp #232 contains a replacement for this through remote code event IDs)(!!0)
resets both key on and non-key on remote commands(!!-1)
resets "on key on" remote commands#allsamplesimportant
is new. Optimizations are forced off for everything. For my case, this is only relevant for sample groups due to Samples filtered out in SPC files are included in the compiled ROM #121 and Sample groups are colliding with manually defined samples on ROM compilation #123 being resolved.#notranspose
is new. See Add parser flags #253: I have a similar plan.#percussion
is new and defines custom percussion. This... is problematic because of Custom percussion per song (overwrites VCMDs $C8-$CF) #130 , which has different intentions. Also, this overwrites the global percussion table. Technically I can replicate that with a VCMD not unlike what was used in AddmusicO, but again, this is conflicting...#efficient
decreases the accuracy of the pitch in exchange for speed. Requires a SPC-side modification... and since I use phrases, either a new VCMD (a$F4
command in this case) or a hot patch bit.#semiefficient
decreases the accuracy of the vibrato in exchange for speed. Requires a SPC-side modification... and since I use phrases, either a new VCMD (a$F4
command in this case) or a hot patch bit.In addition, these VCMD IDs should be translated...
$F4 $0A
->$FD
$F4 $0B
->$FE
$F4 $0C
->$FC $00 ?? ?? ??
$F4 $0D
->$FC $07 ?? ?? ??
(requires AMK Beta Remote Gain/Anticipation Gain Revamp #232 which contains this event)$F4 $0E
->$FC $08 ?? ?? ??
(requires AMK Beta Remote Gain/Anticipation Gain Revamp #232 which contains this event)$F4 $0F
-> TODO (I'm keeping phrases, so I will instead use a VCMD to add to the end of the phrase or song)$F4 $10
->$F4 $21
(requires Loop Break VCMD #89) (ready via commit 434d65a)These pull requests, once merged, will require this pull request be updated (critically, it's because they contain features that are required for this to be fully implemented):
(!!)
with negative and non-negative values) (done via commits 1605ffc and 6ca6e38, the former for(!!)
and the latter for the hex conversion):
, which breaks out of E9 loops) (ready via commits e49d63f and 434d65a, the former for:
and the latter for the hex conversion)