Language…
8 users online: Aeon, dacin, DashGamer, DixyNL, MegaSonic1999, Nemesis1407,  Segment1Zone2, toady - Guests: 236 - Bots: 389
Users: 64,795 (2,376 active)
Latest user: mathew

AddMusicKFF Winter 2022 C3 Update Thread

Super Mario WorldToolWork in ProgressResource Release

Hello! This is my Winter 2022 C3 progress update thread for AddmusicKFF!

The main thread is here. You are looking at an abbreviated version that summarizes some of the material.

What is AddMusicKFF?


AddMusicKFF is a fork of AddMusicK by Kipernal. I'm not bumping the version number unlike the others due to me having seen two past cases of doing so, and me admittedly realizing that I don't want to join the conflict myself. Plus, I'm intending on maintaining backward compatibility with the older Addmusics.
This actually originated when I created a slowdown fix for AddMusicK for Super Mario All-Stars + Super Mario World that got officially implemented in the standalone version on Super Mario World, debuting on 1.0.7. I also implemented fades to any volume for compatibility for Super Mario All-Stars and the original ID is backward compatible with Super Mario World (that hasn't been ported over yet partially because on the 65816 end, I introduce a conflict past 128 songs, and partially because that code can be improved somewhat by utilizing unused memory locations).

This version adds code containing either direct contributions or adaptations from  Atari2.0,  Kevin, Akaginite, HertzDevil, Aikku and Barrels O' Fun.

When are you planning on releasing AddmusicK 1.0.9?


Yup, the release got delayed big time. I don't actually have a timeframe on this, mostly because it got derailed during the summer. And yes, I've been working on this for over a year now.

Initially it was because I wanted to analyze the entire SMWCentral music collection, for which I have pretty much everything up to mid-August 2021. Although I did some scripting, admittedly I got analysis paralysis.

I got inspired by a conversation with a moderator to do something else: fix conversion bugs from older Addmusics. So far I've fixed quite a few of them from AddmusicM, Addmusic405, and even AddmusicK beta. However, some problems need to be resolved.

The number one parser problem I have to resolve is substitution. This affects both AddmusicM and AddmusicK. It actually affects the one modification I made to parser version 2 with regards to exact tick note lengths with modifier support: namely, the dot character is affected by this. This doesn't affect exact tick note lengths: this is because the = character terminates a definition name outright, which means it is safe to add it on (though I need to double check my code that I modified to make this happen, as I made the internal variables represent real tick lengths instead of dividers, unlike the other Addmusics).

Plus, I'm considering a hot patch VCMD on the SPC side due to implementation differences between all of the Addmusics over the years. This costs memory, so I've been gradually grinding down the memory consumption over time.

What have you done since Summer C3 2021?


Ready for 1.0.9


  • A lot of conversion bugs have been fixed from both AMK Beta and past Addmusics. For a start...
    • The & character was not handled correctly with regards to restoring ties preceding it, causing notes to start adjusting their pitch immediately instead of after the tie has occurred. I did not restore this behavior for any AddmusicK versions, and as a matter of fact, any song that was updated to the #amk=1 parser would run into a conflict. I can't do anything about these conflicts, unfortunately... though for future parser versions, I can resolve them.
    • If the lowest channel ID defined is not zero and it generates a valid hex command, the sound driver can end up in an infinite loop with no way to stop the song due to constantly running into a phrase end marker. This was applied to both older and newer ones: I actually found out someone tried to do this from a rejection log entry!
    • AddmusicM's h transposition values were not being properly overwritten by the hard-coded transposition table when the instrument was changed. Note that I didn't apply this to Addmusic405 yet because h is not supported there (and I'm considering outputting warnings for using non-native text or hex commands for this reason): it would count as a bug if it failed to overwrite the hard-coded transposition.
    • AddmusicK beta's anticipation and remote gains were grabbing the wrong values due to the variables not being organized properly.

  • The $FF VCMD for SFX has been updated to truly only fire off the last note. Both previous implementations were not quite correct: vanilla SMW rewinded one byte, and AddmusicK rewinded three bytes. In both cases, they rewound because they went to read the last known note VCMD. I, on the other hand, went with vanilla SMW's behavior of rewinding a byte, but then I keyed on the note and let everything else set themselves up, with the $FF VCMD itself being endlessly triggered. Why? Because the note length is saved, and the pitch is also generally saved, saving me a headache of reinitializing those two parameters.
  • A graphical glitch during submap transitions was traced to AddmusicK being at fault. I received a contribution from Barrels O' Fun to patch up that problem.
  • The echo buffer setup has been revamped, partially to fix a regression I accidentally caught through a Super Famicompo 3 entry where the ESA was no longer being properly set up on a zero case (now it only runs once until another local song is loaded), as well as to both optimize the code and come up with a safer way to relocate the ESA when changing the maximum EDL. There is also a bleeding edge version of this change where echo writes are not initialized, which allows for the last 256 bytes to be freely used by any music with extremely large sample data. Bug exploitation for the zero EDL case is the main reason why this is not in the actual release candidate yet (because someone may try to use echo VCMDs without initializing the EDL: in AddmusicK 1.0.8, echo writes are initialized immediately upon the local song executing the $F4 $04 VCMD, which means that they actually have an effect on the sound output)... though I'm considering adding this to the hot patch set.
  • Fixed a big bug caught by Exodust a few days before C3 even started! Namely, uppercase letters were never officially supported because they end up using undefined reads when translating to a pitch.
  • I have prepared a historical VCMD reference in the hex command section, covering the past Addmusics. This also means that I've added sources for the hex commands that are in AddmusicK itself.

Planned, but not quite ready for 1.0.9


  • Remote and anticipation gain from AddmusicK beta has been fully restored! This involved the creation of four remote code events, 5-8. Type 5 was already reserved in the first place as an alias for type 3, but I enhanced the functionality of them because anticipation gain and remote gain can run together, whereas remote code events mostly can't except for the -1 event type... along with instrument restoration on key on, which means three of them are expected to be running at once! Therefore, I had to create four remote code events:
    • Remote Code Event Type 5: Reserved for use with remote gain. Acts identical to a type 2 remote code event, but comes with built-in instrument restoration on key on.
    • Remote Code Event Type 6: Reserved for use with anticipation gain. Acts identical to a type 3 remote code event, but comes with built-in instrument restoration on key on. Takes up the same slot that is normally used for the type -1 remote code event. This is required in order for it to run in unison with type 5, which is also why these two are reserved and should otherwise not be used for modern AddmusicK songs.
    • Remote Code Event Type 7: Acts like a type 0 remote code event, but doesn't stop "key on" type events (in this case, -1 and 6).
    • Remote Code Event Type 8: Acts like a type 0 remote code event, but only stops "key on" type events (n this case, -1 and 6).

    7 and 8 were created mainly to relieve the C++ side of having to restore them every time a remote code event gets canceled.
    Due to the ADSR/GAIN bug with regards to the order of DSP register writes, this hasn't been implemented outside of the bleeding-edge branch (though it is present in the bleeding edge 1.0.9 release candidate). Plus, it actually conflicts with the GAIN command which is already implemented in the first place, which means if playback is to be consistent, I can't keep it like this and have to do something else.

Bleeding Edge exclusive for now


  • AddmusicM conversions for the special pulse wave are in for VCMD $FA! This is the last step I needed to do in order to fully restore the special pulse wave. Please note that this will affect all #amm songs, as the $FA VCMD was explicitly reserved for this purpose, rather than a series of sub-commands with a parameter.


Anything to add in that might change the playback of some songs?


In addition to four other ones that I mentioned in the preceding Summer C3 2021 thread, there's one more coming on down:


The hot patch VCMD is planned to make most or all of these optional... and to maintain playback consistency.

What has been done since Winter C3 2021 started?


  • NEW 1/11/22: A few optimizations here and there, including adding pre-fetching to the $FA VCMD set. The optimizations are larger with the new VCMDs included (though with an extra adjustment to the pre-fetching, because one of them is dependent on using the command ID).
Fanatical like a Demon
These are really great and fix a lot of bugs present in current amk. Fixes I personally found worthwhile as they were VERY noticeable were bugs that fixed the Yoshi Bongo toggling in the music and instance where you force the player off Yoshi, the Yoshi bongo channel would continue. There's also a lot more things to use for porters and its overall just a great improvement on the current amk, nice work!
Major thanks to Suika Ibuki for layout!
I'm open for music requests, just DM me on discord and we can further discuss there.
SMAS Soundtrack Status: 100% finished
YI Soundtrack Status: 100%
YI Unsampled Soundtrack Status: 100%
NSMB Soundtrack Status: 7.89%
Killer Instinct Soundtrack Status: 14.63%
SPC Thread
From our family to you, keep your pants dry, your dreams wet, and remember, hugs not drugs.
Shame this isn’t getting the traction it deserves (my guess is because the changelog is too technical for average hackers to understand), so I’d like to make a comment here. Although I have been more interested in the bleeding edge version due to more features, I’m glad to have been a great part in beta-testing AMKFF and finding major bugs from the official AMK versions! I hope this will be stable enough to be released into the tools section very soon (and I hope the AMM PWM wave at least as well as the new new SFX echo commands make it in too…). Great work! I wish you the best luck!
My Mode 0 guide.

My Discord server. It has a lot of archived ASM stuff, so check that out!

Not at all surprised if I ended up getting too technical... in hindsight I may be overdoing that one, but then again, I'm walking quite the thin line when it comes to conjuring up a version to submit to the site as 1.0.9.

The changelog itself is huge in the first place: the entry I made for the 1.0.9 release candidate is the largest one in there, and even then it's compared to AddmusicK 1.0.8 (meaning that some fine print has been omitted because it was modified on the fly, which my ongoing thread records).
I think this will be very helpful that fixes allot of bugs and issues this deserves more attention then what's been given


You are challenged by Champion Daisy!

LAYOUT FOOTER:
It's good to see more progress made on this. I don't really have much to say about it, but best of luck anyway. It will be nice to have new features and such.

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Progress is Progress. I really appreciate your work for this as its beyond what a lot of people can achieve when it comes to creating resources for SMW Hacking.
It'll be cool to see how all these fixes will effect porting and custom music insertion.

I wish you the best of luck with getting this project released and maintained. #smrpg{y}

Super Mario WorldToolWork in ProgressResource Release