| |
DJ Space
Registered: Apr 2023 Posts: 22 |
Merging multiple SID files as subtunes of one file
Hey everyone. Sorry if this has already been answered but I can't find any information. I don't even know if this is possible. Lets say we have 4 SID files. I would like to know if there is a tool that can merge them together to one file with multiple subtunes.
Thank you in advance! |
|
| |
TheRyk
Registered: Mar 2009 Posts: 2478 |
I'm not aware of any tool that can do that,
My way of doing it was usually:
First relocate all tunes in order not to waste more than a page. Then code own init/play which bends Init to the Init of Sub #$00/#$01/etc depending on status of accumulator (LDA #subtune JSR Init) and Init also hacks Play Address... (let's say default LDA #$00 -> $1003, subtune #$01 -> $2003 etc)
Check out Zeit der Stille Soundtrack (the .SID file, i.e. https://csdb.dk/release/download.php?id=174905 ) and disassemble it (or let SIDDecomp do that for you), that's the last time I remember to have done that. With some minimum coding skills you should see what's going on/how it illustrates the above. |
| |
DJ Space
Registered: Apr 2023 Posts: 22 |
Thanks for the reply Ryk. Much appreciated! Although I am not familiar with even that level of coding, I 'll see what I can do :) |
| |
TheRyk
Registered: Mar 2009 Posts: 2478 |
Quoting DJ Space... I am not familiar with even that level of coding, ...)
One night on https://codebase64.org and you can code like trident...
... ok that was kidding
But for real... even for mere musicians it makes sense to learn your LDA STA to get WTF is going on in players...
thx god I'm so multi-non-talented that I fuck around universally... :D
Actually, among generalists, I'm like Hein divided by Mermaid divided by fieserwolf - I suck... but sucking in all respect imho is still cooler than ruling in e.g. Code but having no idea about SID or VIC |
| |
Raistlin
Registered: Mar 2007 Posts: 771 |
Are the 4 tunes using the same player? If so, eventually, when I finally get it finished, SIDBlaster would help… but it’s not there yet. Maybe in ~1 year and it’ll be able to give you separated code and data (in an ASM). If you’re lucky, the code for the 4 tunes would roughly match and could be edited by hand.
All that said.. can I ask why you need such a thing? The only benefit really is to save some runtime memory I think. |
| |
Raistlin
Registered: Mar 2007 Posts: 771 |
Sorry… thinking about this some more.. if the 4 tunes are your own - which i assume they are - then of course you just need a special version of whatever music editor you’re using.
Do any of the music editors output ASM?
Most that I’ve seen so far are quite nasty with mixing code and data… no neat split between the two. |
| |
DJ Space
Registered: Apr 2023 Posts: 22 |
Quote: Quoting DJ Space... I am not familiar with even that level of coding, ...)
One night on https://codebase64.org and you can code like trident...
... ok that was kidding
But for real... even for mere musicians it makes sense to learn your LDA STA to get WTF is going on in players...
thx god I'm so multi-non-talented that I fuck around universally... :D
Actually, among generalists, I'm like Hein divided by Mermaid divided by fieserwolf - I suck... but sucking in all respect imho is still cooler than ruling in e.g. Code but having no idea about SID or VIC
Haha I wish! Jokes aside, I would like to get into coding If I get some extra time. |
| |
TheRyk
Registered: Mar 2009 Posts: 2478 |
About Raistlin's suggestion:
Doing everything as subtunes e.g. in Goat Tracker in the first place spares you such trouble, of course.
But problem is if I got this right, marrying EXISTING tunes to 1 .SID file... That unfortunately ain't easily done in any tracker or its forks I know of.
Not impossible, however. One by one import patterns, .INSes etc... in your .SNG using GT... sounds like maximum punishment /o\ |
| |
wil
Registered: Jan 2019 Posts: 66 |
If the songs in question are in goattracker format, they can be easily merged with goattracker's loadmerge function. The only problem i ever had with that was when a song used an empty instrument as a silencer; my version of goattracker overwrote this instrument with the ones from the merged song. Solution was to make a small change to the silencer instrument beforehand so that it still was silent but did not appear unused. |
| |
Krill
Registered: Apr 2002 Posts: 3098 |
Quoting TheRykMy way of doing it was usually:
First relocate all tunes in order not to waste more than a page. Then code own init/play which bends Init to the Init of Sub #$00/#$01/etc depending on status of accumulator (LDA #subtune JSR Init) and Init also hacks Play Address... (let's say default LDA #$00 -> $1003, subtune #$01 -> $2003 etc) This is the way to go, regardless of the sub-tunes having the same player or not.
For more ease and less error-proneness, consider not relocating the tunes at all:
Simply copy them to $1000 at sub-tune init-time (from somewhere beyond $1000 + max-tune-size). |
| |
iAN CooG
Registered: May 2002 Posts: 3238 |
> consider not relocating the tunes at all
That's an old assumption due to how bad were coded the old players and/or old relocators.
Relocating GoatTracker tunes is no problem at all, assuming DJ Space is always using it.
Dj Space: Just send the tunes over and I'll do it in 5 minutes for you, but consider that in HVSC we onefile only games soundtracks, not demo or standalone musics. |
... 2 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |