Re: Famicom-music on VIC-20
Posted: Wed Mar 24, 2021 4:12 pm
Mario is excellent! much better than my attempt.
How about the Gyruss music?
How about the Gyruss music?
The Commodore Vic 20 Forum
http://www.sleepingelephant.com/ipw-web/bulletin/bb/
http://www.sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=10050
Many thanks for your info, talking about Gyruss, I remember the arcade cabinet and this music version seems a little bit different, I don't know if is the same of the NES version or a script/adapting question btw very good work as ever, it's incredible how a music alone it's half of a game, Gyruss without this theme is not Gyruss, you cannot play it mute !ThePhotoChemist wrote: ↑Fri Mar 26, 2021 5:14 pm If anyone is curious about the current workflow for making these things:
Software required: Python 2.7, CBM Studio, FamiStudio, Famitracker (optional).
Interesting and you're welcome! I do remember that the version of the song on Kirby's Adventure sounds a little out of tune compared to the GameBoy original for some reason, so that may be inherent in the song's data tbh. I do hear a little bit of wow and flutter-like sound, which is interesting to hear from a digital sound source. Thanks for testing it!ThePhotoChemist wrote: ↑Fri Mar 19, 2021 4:47 pmThanks!
Just for fun I ran the only song I recognized from that game through the script. It's kinda... shrill. This one is weird, since it actually uses the triangle voice as a part of the melody, whereas most of these songs use it for the bassline. There are offsets in the script to shift the output data up/down octaves, but pushing it much lower made it sound kind of weird, just a bit too low.
Right now you sort of have to play around with those offsets, and shift things around until things sound right. Each channel is limited to about six octaves (B0 - B5), but you can kind of manually get around that sometimes for a larger range, since each of the VIC's square wave oscillators are also offset by one octave from each other. Ideally, the patterns with higher notes from the triangle channel (S1 in the VIC) could be manually swapped with Square1 or Square2 in Famitracker or Famistudio first for a better sound.
https://www.youtube.com/watch?v=fCY0WBFvTsA
Also for some reason any time I even think about updating the code, the noise track breaks ¯\_(ツ)_/¯ Oh well
Code: Select all
10 SYS4880
20 A=PEEK(828)
25 B=PEEK(829)
40 if A=3 THEN LOAD "cv3",B,1
50 IF A=4 THEN LOAD "cv4",B,1
60 IF A=5 THEN LOAD "cv5",B,1
70 IF A=6 THEN LOAD "cv6",B,1
80 IF A=7 THEN LOAD "cv7",B,1
90 IF A=8 THEN LOAD "cv8",B,1
100 IF A=9 THEN LOAD "cv9",B,1
110 IF A=10 THEN LOAD "cv10",B,1
I guess the loader ran out of memory.ThePhotoChemist wrote: ↑Sat Aug 07, 2021 11:01 am ...However, I am curious what the problem was, if anyone has any input!
https://www.youtube.com/watch?v=k1A85jN5ca0Victim_RLSH wrote: ↑Sat Aug 07, 2021 11:55 am That is epic! Any chance of getting some of the music from Solstice? A vic would probably explode attempting that...![]()
Thanks a lot! I'll read up a bit more on your suggestions here and see what I can do.Noizer wrote: ↑Sat Aug 07, 2021 12:18 pmI guess the loader ran out of memory.ThePhotoChemist wrote: ↑Sat Aug 07, 2021 11:01 am ...However, I am curious what the problem was, if anyone has any input!
Starting at 4609, with Sys 4880 remains 271 bytes free for basic.
In addition the machine code program must be protected, lowering basic room with, for example
Starting with Run 80
80 Poke 52,maxhighmem and Poke56,maxhighmem : clr:Run
BR
Yes, to avoid problems better to set these locations, I'm quite sure this is the problem, btw just for fun i've used this solution that lowering the basic loader and does not ask for drive prompt on start (use the $ba/#186 location for that) and use just machine code for songs without basic headers:Noizer wrote: ↑Sat Aug 07, 2021 12:18 pmI guess the loader ran out of memory.ThePhotoChemist wrote: ↑Sat Aug 07, 2021 11:01 am ...However, I am curious what the problem was, if anyone has any input!
Starting at 4609, with Sys 4880 remains 271 bytes free for basic.
In addition the machine code program must be protected, lowering basic room with, for example
Starting with Run 80
80 Poke 52,maxhighmem and Poke56,maxhighmem : clr:Run
BR
Code: Select all
0 IFA>0THENSYS4880
1 A=A+1:B=PEEK(186)
2 IFA=10THENEND
3 LOAD"CV"+STR$(A),B,1
Thanks for this, it's a lot more elegant than what I originally had. I modified this slightly to use for the Metroid OST, and it seems to work well. I'm still storing the "current song" in a register, to allow for skipping forward/backward functionality. I'd be posting the Metroid OST here too today, however I realized that 828 and 829 get overwritten when you use an SD2IEC. I'll have to recompile them all to use some other registers that won't be affected.nbla000 wrote: ↑Tue Aug 10, 2021 3:18 amYes, to avoid problems better to set these locations, I'm quite sure this is the problem, btw just for fun i've used this solution that lowering the basic loader and does not ask for drive prompt on start (use the $ba/#186 location for that) and use just machine code for songs without basic headers:Noizer wrote: ↑Sat Aug 07, 2021 12:18 pmI guess the loader ran out of memory.ThePhotoChemist wrote: ↑Sat Aug 07, 2021 11:01 am ...However, I am curious what the problem was, if anyone has any input!
Starting at 4609, with Sys 4880 remains 271 bytes free for basic.
In addition the machine code program must be protected, lowering basic room with, for example
Starting with Run 80
80 Poke 52,maxhighmem and Poke56,maxhighmem : clr:Run
BRYou have to rename songs (without basic header) as "CV 1", "CV 2", "CV 3" etc.Code: Select all
0 IFA>0THENSYS4880 1 A=A+1:B=PEEK(186) 2 IFA=10THENEND 3 LOAD"CV"+STR$(A),B,1