Raster Music Tracker Patch 16
BotB Academy Bulletins
Level 16 Chipist
Hey guys, this is something I have been working on for some time now.
Hopefully this will make music creation in the Atari 8-bit format a more pleasant experience!

Changelog for this hacked RMT version since my earlier Tuning patch 15:
- This version was based on Analmux's RMT Patch 8, so several of his changes remain in place, mainly the FILTER not muting the other channel, for example
- Most of the work was done directly in the rmtplayr.a65 code since the last patch! This will allow way more things to be done as I slowly learn how to code in 6502 ASM...
- New and improved volume lookup table, saved 128 bytes of data, at the cost of some extra cycles to be executed. Special thanks to TakuikaNinja for the idea and help implementing it! This doesn't seem to sound any different from the old code, yet the space saved is considerable!
- Improved several of my tuning tables, based on my spreadsheet maths and formulae figured out over time.
- Re-ordered several tables based on the discovery earlier that a full 256 bytes could be addressed, so the most optimal setup for the moment has been squeezed. This is not definitive yet, so changes are likely to happen as I understand better.
- 16-bit trigger now depends on having both the correct AUDCTL value, either $50 for 1+2 or $28 for 3+4, and must also use Distortion A to work at all.
- Added a dumb check for if Command 1 was used as well, will skip the hijack if detected, in order to keep certain things like percussions functional.
- 16-bit table is loaded from the space cleared from the optimised volume code, nothing lost and nothing new!
- Distortion 6 hijack is removed entirely, so instead it's temporarily replaced with an optimised Distortion A table for 15hz bass, with matching tuning to the other ones.

More can be done, I am sure of it!
Unless I fucked things up everything should play the same as before but now with some extras available, except for the 16-bit and Distortion 6 changes done like I mentioned above. :D

Also, not seen in the tracker itself, there is a Distortion C 15khz table hijack, will work by using AUDCTL 01 and Distortion C, but only in the XEX exports for now, since my earlier hijack code broke the tracker lol

Enjoy, I hope I will be able to do more soon!

Download can be found in the Atari Age thread I posted a bit earlier:

I also posted it in the Discord a moment ago :)
Level 31 Chipist
post #143918 :: 2021.07.09 6:17pm
  VinsCool and mirageofher liēkd this
3am-very-sleepy-kleeder-brain wants to ask if sap export works on this and i would guess not, right? which turns this into a fantasy-chip-tracker?
correct me if im wrong
Level 23 Chipist
irrlicht project
post #143931 :: 2021.07.10 2:51am :: edit 2021.07.10 2:52am
  anewuser, nitrofurano and VinsCool liēkd this
Wow, big fat thumbs up for this!

> New and improved volume lookup table, saved 128 bytes of data, at the cost of some extra cycles to be executed. Special thanks to TakuikaNinja for the idea and help implementing it! This doesn't seem to sound any different from the old code, yet the space saved is considerable!

Is there a switch for this? There might be situations where rastertime is more important than size (eg games/demoscene productions).

kleeder: They mention .xex works in all cases, which I think is more relevant than .sap. Imo we should allow .xex as a filetype, just like we allow .prg for sid.
Level 31 Chipist
post #143932 :: 2021.07.10 2:54am
  nitrofurano, VinsCool and irrlicht project liēkd this
.xex is allowed !!! the lyceum page for some reason just doesnt show it in the info box for this format lol

also thats crazy cool!
Level 29 Chipist
post #143935 :: 2021.07.10 3:09am
  anewuser, nitrofurano and VinsCool liēkd this
Exciting news for pokey, The list of changes sounds juicy. I am not 100% clear what they all mean (stuff like the distortion ranges) but I will definitely be giving this a go very soon.
Level 20 Chipist
post #143956 :: 2021.07.10 5:16pm
  nitrofurano, VinsCool and kleeder liēkd this
SAP does indeed work
Level 16 Chipist
post #143957 :: 2021.07.10 9:28pm
  anewuser, nitrofurano and kleeder liēkd this
Thanks everyone!

Kleeder: Yes, SAP and XEX exports do work, they were the first things tested, actually! I had more trouble getting my piss poor week old ASM experience code to work in the tracker itself, but figured it out thankfully c:

irrlicht project: Yeah, it's actually pretty simply to edit out, the only downside is that the current 16-bit tables would need to be removed entirely since they now use that space :P
It's just a matter of editing a couple lines of code to re-introduce the original huge ass 256 bytes table for the volume itself.
I'm still a very noob at coding but there definitely as a way to actually easily switch from one or another... I'll keep this in mind for a later version!

TristEndo: To make it short, improved tuning, more tables with said tuning, new method to trigger 16-bit mode, some optimisations with space in mind here and there, and a new volume code taking half the memory for a minimal performance hit!

Spring: I actually did not expect SAP exports to work at all, so I was surprised to find out my sloppy code actually worked there too, since I mostly focused on the XEX format, lol
Level 16 Chipist
post #144163 :: 2021.07.15 12:52am
  anewuser, nitrofurano, sean and mirageofher liēkd this
Raster Music Tracker Patch 16 Beta3 has been uploaded!
Download in the Atari Age thread post.

- Redone the entire hijack code using a different entry point, this made everything a lot easier to manage, and future-proof in case more tables and more hacks get added in the future
- Hijack code considerably cleaner, and should take a lot less memory and cycles to run, with hopefully no penalty on everything else.
- Got rid of the 'BASS16' code entirely, this was the base from the earlier attempt, but with the newest way to handle 16-bit, it was no longer required! saved a lot of space by the same way.
- Distortion A and Distortion C now have a fully operational switch to appropriate 15khz tuning tables, simply use the 15khz bit in the instrument to use it!
- Copied Distortion C back into Slot 6 again as a fallback for compatibility reasons, the Slot might be used for other stuff in the future, so nothing is definitive!
- Added a set of 'tabbeganddistor_extra' for the hijacked code, so mapping tables to specific slots will then be very easy to add, move, and change to different ones in the future
- 16-bit hijack code has been done in such a way that now each tables, Hi and Lo, can be used independently in their appropriate channels, automatically, using the required AUDCTL value, being $50 and $28, and must also use Distortion A
- 16-bit can also effects! just edit instruments like normal, so vibrato, detune, portamento etc can be used, however things are limited a bit due to the channels not operating as a 16-bit number
- 16-bit has been future-proofed as well, so now it would only be a simple change to, for example, allowing volume output in the Lo channels, to produce Reverse-16 sounds with the appropriate tuning tables
- There is a catch however, you have to make sure both Hi and Lo channels have the right instruments playing, else some bad (or maybe intended) sounds will be also output, an easy way to handle is to simply use the same pattern in each channels, the appropriate table will be used in each.
Level 16 Chipist
post #146029 :: 2021.08.30 12:07am
  cabbage drop, nitrofurano, kleeder, TristEndo and sean liēkd this
RMT Patch 16 Beta5 is now available!

Download in the Atari Age thread post.


- Rewritten the entire hijack routine, in a much more compact and intelligent way.
- The entire logic behind the hijacked functionalities are 100% based on the global AUDCTL value, and in a priority order. Everything can now be controlled from any instrument parameter, from any channel!
- A fail safe jump has been added in case nothing is working, so if a combination fails, or isn't possible, the player will jump to the "No Hijack" branch, effectively skipping any code that would write garbage in memory.
- Future proofed the routine to be able to add even more special checks easily, in a more elegant and clean way.
- Cleaned up many redundant blocks of my own code, and few bits here and there from the original code by Raster.
- Considerably reduced the hog of memory and cpu cycles compared to Beta3, which was very unclean and poorly optimised.
Level 31 Chipist
post #146034 :: 2021.08.30 3:37am
  mirageofher, VinsCool, anewuser and nitrofurano liēkd this
when will you enhance the trackers UI?
Level 23 Chipist
post #146037 :: 2021.08.30 8:33am
  mirageofher and VinsCool liēkd this
being able to make and choose colour themes would be great - light text on dark background is very uncomfortable for me... (i always change it in all trackers when i can do it)
Level 15 Chipist
post #146042 :: 2021.08.30 10:27am
  VinsCool, cabbage drop and nitrofurano liēkd this
you're doing amazing work vin :D
Level 16 Chipist
post #146398 :: 2021.09.06 2:08am
  mirageofher, nitrofurano and kleeder liēkd this
Big Raster Music Tracker hack update!

RMT Patch 16 Beta6:

- Brand new sa_c6502.dll by ivop, featuring a built-in Tracker binary loader, simply drop a tracker.obx in the .exe folder and run!
- Moved all tables to $B000, this will much more data to be available in memory, and future proof the space when it will be needed later
- Rewrote the entire hijack code again, this time hopefully for a long with the current memory map
- ALL modes can now have their own set of tables, making a LOT of the hijacked shit very easy to handle now, at a cost of extra memory
- Currently, 64khz (default), 15khz, 1.79mhz and 16-bit (via AUDCTL $50 or $28) will have their respective tables handled automatically, with as many slots as necessary
- All tables can FINALLY use the full 64 bytes when the tuning allows it, since the memory page is a new one between modes
- Added a handful of new tables as a test, many will need retuning, but as a proof of concept, they seem to work perfectly
- Preliminary support for these tables added: Distortion 2 64khz, Distortion A 1.79mhz, Distortion C 1.79mhz, Distortion E 1.79mhz
- Improved the Distortion A and C 15khz tables to make the full 64 bytes of tuning available, that will get rid of the disappointing cut around C-5 to the next table in memory, making that one note unavailable
- Improved the Distortion A and E 64khz to use the full 64 bytes of tuning each, with the best possible frequencies in the highest pitch, so there shouldn't be any random silence now
- 16-bit currently only has 1 table as an example, the nice Reverse-16 Clarinet, like the earlier Patch 16 versions, use with the Join+1.79mhz AUDCTL bits, they will use the correct table automatically in the respective channels
- Made several table slots dummy entries, due to missing data, but these will be added later, there is a bit of retuning to do for many combinations, aaarghhhh XD
- Virtually, the user might not see any difference between this version and the Patch 16 Beta5 release, which is in my opinion, a good thing!

Download over Atari Age:

BTW guys I'd love to change the UI a bit if I knew how, but for now that's not something I have the ability to do yet :D
Level 23 Grafxicist
big lumby
post #146436 :: 2021.09.06 3:43pm
  VinsCool, mirageofher and cabbage drop liēkd this
hell yessssss new rmt shizz
vin you are extremely valuable to the atari community, bless youuuu
Level 16 Chipist
post #147629 :: 2021.10.05 5:48pm
  MelonadeM liēkd this

RMT Patch16 Beta8

Now on github, with all the side projects and other experimental stuff.

- Added Two-Tone Filter (proper) toggle, use with Command 7, enable with XY=$FE, disable with $FD, or use $FF for Volume Only Mode
- Added the RMT Visualizer in its current state, it needs more work but works well enough for now
- Added XEX and SAP export re-creation based on the disassembly of the original files, with few experimental improvements
- Included several side projects, like the POKEY Tuning Spreadsheets, or some random experiments as code
- Included the stripped rmt.exe binary, hacked from the unofficial 1.30, for use with the .obx loader by ivop, also included (sa_c6502.dll)
- Included most .dlls that may be missing, including the newer Altirra plugins
- Some cleanup before the files were dropped here, might be easier to manage now
- Reminder, this is all experimental stuff. don't be surprised of any malfunction or unexpected behaviour, I am still learning how to code so things may become a little better in the future.

Enjoy! Atari goes on!

LOGIN or REGISTER to add your own comments!