SBVGM (DOS) VGM Player

Schedules and announcements about program releases.

Re: SBVGM (DOS) VGM Player

Postby Jepael » 2017-1-08 @ 21:29

Oh yeah, sorry for talking offtopic stuff previously, so I created a new thread for my CMS/GameBlaster stuff here : viewtopic.php?f=9&t=51695

@ElBrunzy: Yes we were talking about how to compile DosBox with NewRisingSun's VGM capture patches, with an older compiler that does not support latest C++14 standards he was writing the code with. I use just GCC/G++ (Gnu compiler) whatever comes by default with 64-bit Linux, he was using 32-bit MinGW environment in Windows with newer compiler.
Jepael
Oldbie
 
Posts: 833
Joined: 2005-6-15 @ 19:28
Location: Finland

Re: SBVGM (DOS) VGM Player

Postby ElBrunzy » 2017-1-14 @ 04:41

I wanted more music to listen with sbvgm, so at lunch today I started seeking your table on the SBVGM.TXT and seek vgmrips to see what music each chipset could offer. To help me I made a list and started to note each system I found using a chipset. I decide to finish it and post it here in the hope that it could help someone else.

Again the more I use your software the more I enjoy it. I feel it was a very good move to buy an sound blaster 1.5 and add the CM/S chips. I think you should stop to call sbvgm an simple experiment and start to call it one of the most awesome hardware player around!

Code: Select all
+------------------+------------------------------+
| VGM chipset      | Host hardware                |
+==================+==============================+
| YMF262           | adlib, soundblasters, PC/AT, |
|                  | arcade                       |
+------------------+------------------------------+
| YM3812           | PC/AT, toaplan 1, SNK 68000, |
|                  | adlib, sound blasters,       |
|                  | arcade                       |
+------------------+------------------------------+
| YM3256*          | Commodore SFX, arcade,       |
|                  | SNK Triple Z80               |
+------------------+------------------------------+
| Y8950            | SNK Triple Z80, MSX, arcade, |
|                  | MSX2                         |
+------------------+------------------------------+
| YM2413           | Sega master system (japan),  |
|                  | arcade, MSX, MSX2            |
+------------------+------------------------------+
| SAA1099          | arcade, CM/S, Game Blaster,  |
|                  | sound blasters, SAM Coupé,   |
|                  | Silicon Graphics             |
+------------------+------------------------------+
| RP2A03           | Nintendo NES, Famicom        |
+------------------+------------------------------+
| SN76489 variants | Sega master system, arcade,  |
|                  | TI-99/4A, BBC Micro,         |
|                  | IBM PCjr, System C-2,        |
|                  | System 1, System 2,          |
|                  | System E, SG-1000, Pico,     |
|                  | Tandy 1000, Coleco,          |
|                  | Game Gear, Sega Genesis      |
+------------------+------------------------------+
| AY-3-8910        | MSX2, MSX, MCR-2, arcade,    |
|                  | ZX Spectrum 128, SJ System,  |
|                  | M64, M52, VIC Dual, Vectrex, |
|                  | MCR, M58, CP1610, PIC1650,   |
|                  | Intellivision, Amstrad CPC,  |
|                  | Oric 1, Colour Genie,        |
|                  | Elektor TVGC, Atari ST       |
+------------------+------------------------------+

*was it really ym3256 or 3526?

I did some test with arkanoid on Atari ST via a ym2149 and sbvgm would play it, via ay-3-8910 I guess, so I added Atari ST here.
User avatar
ElBrunzy
Member
 
Posts: 358
Joined: 2014-1-26 @ 03:50
Location: Quebec / Canada

Re: SBVGM (DOS) VGM Player

Postby OPLx » 2017-1-14 @ 08:46

ElBrunzy wrote:I wanted more music to listen with sbvgm, so at lunch today I started seeking your table on the SBVGM.TXT and seek vgmrips to see what music each chipset could offer. To help me I made a list and started to note each system I found using a chipset. I decide to finish it and post it here in the hope that it could help someone else.

Thank you! I'm sure others will find it useful. :)

ElBrunzy wrote:Again the more I use your software the more I enjoy it. I feel it was a very good move to buy an sound blaster 1.5 and add the CM/S chips. I think you should stop to call sbvgm an simple experiment and start to call it one of the most awesome hardware player around!

I really do appreciate your kind comments! When I started working on the player, I never really intended it to have the number of features it has as it was meant to be a quick test for some ideas I had. I wish I could call it the most awesome player ... but alas, I'm intimately aware of the flaws that are still there. All-in-all, my greatest reward is just knowing that you and others are able to find it of value and that it allows people relive some of the old musical nostalgia from older software on actual PC hardware. :)

ElBrunzy wrote:*was it really ym3256 or 3526?

I did some test with arkanoid on Atari ST via a ym2149 and sbvgm would play it, via ay-3-8910 I guess, so I added Atari ST here.

It was a typographical error; it should actually be YM3526. Believe it or not, it's been so long that I don't remember implementing support for YM2149, but it has a lot of similarities to the AY-3-8910 so I'm not surprised that it is there. I must have forgotten to list it in the supported chips list. Thank you for letting me know. :)
OPLx
Newbie
 
Posts: 71
Joined: 2014-2-15 @ 17:02

Re: SBVGM (DOS) VGM Player

Postby ElBrunzy » 2017-1-15 @ 02:56

I had a tought that I would like to share. It might came from the root of your player, it call for experimentation. Sometime your player refuse to play a file recorded for a supported player and dont give much information about why. Othertimes it say that the vgm is not supported by player! But my "research" lead me to beleive that most chips must be built around the same framework at some point compatible. I am also not sure composers always take advantage of every specific aspect of each chips.

I have found that a same music file could be played differently depending if I use the adlib or the cms sbvgm.exe command switch. I enjoy the fact that I can do that, it often give interesting variants of a favorite.

Now I dont know how you link the sound hardware to the vgm source, furthermore how you priorise a sound hardware when a vgm source is supported by both. I would like to suggest you add the ability to override the vgm source. I have took a peek at the vgm header to have an idea about the format and what your player have to deal with. At least it make sence now how sega master's space harrier bios music can support the two chip present on the japanese sms. I did try your cmsview tool on it but a clue has to give. Maybe the user would provide the speed of the chip, or use the clock for wich the vgm was originaly recorded for ?

I would show transparency and say that my goal behind that request is to make sure there is no way to listen some YM2203 music however mangled they are on sbvgm.exe. Maybe you see an easier way to achieve my goal ? Maybe I could just edit the vgm header too... :roll:
User avatar
ElBrunzy
Member
 
Posts: 358
Joined: 2014-1-26 @ 03:50
Location: Quebec / Canada

Re: SBVGM (DOS) VGM Player

Postby OPLx » 2017-1-15 @ 13:00

ElBrunzy wrote:I had a tought that I would like to share. It might came from the root of your player, it call for experimentation. Sometime your player refuse to play a file recorded for a supported player and dont give much information about why. Othertimes it say that the vgm is not supported by player! But my "research" lead me to beleive that most chips must be built around the same framework at some point compatible. I am also not sure composers always take advantage of every specific aspect of each chips.

I see you have been digging around a little; wonderful! :)

ElBrunzy wrote:I have found that a same music file could be played differently depending if I use the adlib or the cms sbvgm.exe command switch. I enjoy the fact that I can do that, it often give interesting variants of a favorite.

Do you mind telling me which music file this would be? I tried to test the player on as many VGMs as possible, but there are far too many as you know.

ElBrunzy wrote:Now I dont know how you link the sound hardware to the vgm source, furthermore how you priorise a sound hardware when a vgm source is supported by both. I would like to suggest you add the ability to override the vgm source. I have took a peek at the vgm header to have an idea about the format and what your player have to deal with. At least it make sence now how sega master's space harrier bios music can support the two chip present on the japanese sms. I did try your cmsview tool on it but a clue has to give. Maybe the user would provide the speed of the chip, or use the clock for wich the vgm was originaly recorded for ?

Some of the Master System VGMs only have audio commands for either just the YM2413 or the SN76489. The player will generally try to play VGM files that support two chips like on the Master System. In this case, it would be the YM3812 interpreting the YM2413 data and the C/MS chips interpreting the SN76489 data. With this configuration, the player should work ... unless there is a bug. If you could tell me which VGM data might be causing trouble, I should be able to track down the source of the problem. The C/MS View tool is only really useful for manipulating a portion of the registers on the SAA1099 chip and probably won't give much insight to what the VGM data represents. I made it back when I was doing research into how to interpret the NES/Famicom's VGM data on the SAA1099.

ElBrunzy wrote:I would show transparency and say that my goal behind that request is to make sure there is no way to listen some YM2203 music however mangled they are on sbvgm.exe. Maybe you see an easier way to achieve my goal ? Maybe I could just edit the vgm header too... :roll:

Aaaaah! I see what you are trying to do. I think this part is very tricky. Just changing the header information in the VGM file will not be enough as the VGM data targets a particular audio chip; you would have to essentially re-generate the data for whichever chips you wanted to target. The YM2203 has a YM2419 core and an FM core. Unfortunately, the YM2203 FM core will not work or sound correct on a YM3812 since the algorithms that combine the FM signals are different. The better candidate would be the YMF262 (OPL3) chip since it has four operators (like the YM2203). Unfortunately though, the OPL3 chip's FM core only supports two out of the eight possible four-operator configurations available on the YM2203. I had considered attempting interpret the YM2203 and YM2612 commands on the OPL3, but after examining the differences I realized that the amount of work required to do this was outside the scope of the amount of time I have available.

I am generally never one to say "it is impossible", but it would require finding a means to get the OPL3 to behave (as much as possible) like the YM2203. If could be done, here is one possible approach:

The OPL3 can be configured in a flexible way where it is possible to have a combination of one, two, and four operator settings active at once. With this in mind, for for the YM2419 core in the YM2203:

  • Configure three channels (that are not used for four operator configuration) to act as the three square wave channels.
  • Configure one channel (from one of the channels used for rhythm mode) to act as the YM2419 core noise channel (I haven't had a chance to directly manipulate the noise generator on the OPL2 or OPL3).
What is left then is the YM2203's FM channels. Apparently there is a two-operator mode and a four-operator mode. The real work would be figuring out how to use the remaining channels on the OPL3 to simulate the YM2203's four-operator algorithms; this is the part that would take a lot of time and experimentation.

Having written all of that, the "easiest" way would be to:
  • Configure a portion of the OPL2 or OPL3 to handle the YM2419 commands
  • On the OPL2, ignore the four-operator settings and just play some default instrument (or no sound at all).
  • On the OPL3, ignore the four-operator settings for the algorithms it does not support, and play a default instrument (or no sound at all).
This will obviously work, but given that there is no way to know what the VGM data will be like, I don't think it would sound good at all.

Perhaps you might be interested in writing new music with the OPL2 or OPL3 that would create wonderful memories for yourself and possibly others? :happy:
OPLx
Newbie
 
Posts: 71
Joined: 2014-2-15 @ 17:02

Re: SBVGM (DOS) VGM Player

Postby NewRisingSun » 2017-1-15 @ 18:51

There is a slight imperfection in the percussion channel when playing .VGM files from Arcade systems using the YM3526 chip at clock frequencies other than 3579545 Hz. Maybe it's unavoidable when converting master clock frequencies, but the cymbals in the attached file sound weird.
Attachments
Dangar - Ufo Robo - 02 - Skyscraper.zip
(6.63 KiB) Downloaded 1 time
NewRisingSun
Oldbie
 
Posts: 669
Joined: 2005-9-02 @ 02:26

Re: SBVGM (DOS) VGM Player

Postby OPLx » 2017-1-15 @ 23:07

You're absolutely right! Thank you for pointing this out and the example file. On both the YM3526 and the YM3812 or YMF262 the tom-tom and cymbal channels use operators 14 and 17 respectively. I think the noise generator is used for the cymbal channel. Unfortunately as a side effect of converting the master clock frequencies, the frequency of the tom-tom will affect how the cymbal sounds. :(

I've been meaning to do some tests with the noise generator, so I might find out something that would allow a workaround of sorts or find the actual source of the problem if it turns to not be related the frequency conversion.
OPLx
Newbie
 
Posts: 71
Joined: 2014-2-15 @ 17:02

Previous

Return to Release Announcements

Who is online

Users browsing this forum: No registered users and 1 guest