Hi guys. Just thought I'd write down my thoughts on this. I have in mind a project that would handle many needs of the vgm community - players, input plug-ins (winamp, fb2k), web players and so on. The main idea is that, the chip emulation code being the biggest chunk of code, if we write
once, in one language, then by way of automated tools convert the code to other languages (JS, AS, Java etc.), it would make the project very versatile. The code could be reused over and over, in as many projects as you can think. For example, for the web-based VGM player, we just have to compile to JS, then write the web-specific code that would use the chip code.
The second biggest chunk of code would be the input file code. Code to read not just VGM, but many other formats (which is the reason why I've been keeping
a list of common formats for chiptunes). Once we have that, we'll be able to play any file in any output medium, including the browser. That means that we can make mirrors of existing sites (which is why I've been keeping
a list of sites with large music libraries), and just allow browsing of those mirrors
with a browser player, so people can just browse our site forever - pick a chosen or random game and just click play, possibly minimize the browser, and rock out to some chiptunes. Another scenario would be an application (desktop or mobile) that would interface with the site and allow the same actions (browsing and listening) so you can run it in the background or the system tray or something. Furthermore, if people want to have the collection (which will get quite large once we import other formats) locally, and play it, they would have a single plugin they need to install, for winamp or fb2k (or other players), which would support all of the formats and all of the chips.
I think this sounds like an awesome project, but it requires a lot of work. Firstly, we need to figure out what language we'll write all the code in. I've been searching for a tool or language for a couple of months now and I haven't found anything satisfactory. There is
haxe,
ci, and
others. I'm not satisfied with any of them, so I figured I could write my own, using the classic compiler tools flex and bison. These have been used for decades to write compilers, and there's lots of info, however, it's still difficult and I'm still struggling with it. I am trying to keep in mind practicality, so the search here continues.
Once we've settled on a language, we'll have to begin porting all the chip code to that language. Hopefully it will be object oriented and that will make things easier. There are dozens of chips to rewrite, and usually rewriting involves a cleanup as well, so the final code will be nice and clean. Each chip will extend a parent class, which will be easily reusable.
After that, we'll need to write support for the various file formats, starting with VGM. We can order these depending on the sizes of the libraries we find. Some formats require CPU emulation, but I think we can avoid that for starters. We can write that later, to have complete support for all important formats.
So, once we have both of those big code chunks, we can focus on the different platforms the code will run. Of course, for testing, we'll need to test the code when we write it, so we'll probably have the C++ and JS targets working by this step, but this is when we start completing the list of targets. Like Java for Android, for example (although I think you can use C++ on Android too).
At some point we'll have the player implemented on our site, being able to play all the files, or most of them, so we'll have that fun feature which will bring in users, and possibly contributors. I consider it an exciting project, so the extra contributors might be a side benefit. At least we'll have bug reporters, if nothing more.
So, by this point we have a pretty big project, a pretty nice website, and hopefully a lot of contributors. You may ask - why are we doing all this? It takes a lot of time to code this, and nobody's paying us. Should we monetize this somehow? Well, to tell you the truth, I'm not against monetization, and some income might pay for a better server, but that is far from now, so let's worry about this later. Personally, I hate ads, so we'll need some sort of sponsorship plan. Not sure who would sponsor this, seeing as there might be legal issues, after all, this music is extracted from commercial games. This remains to be seen. Maybe someone can do some research? The question is - how can we monetize a website dedicated to chiptunes - extracting, storing, playing, listening a large number of old video game songs. A very enjoyable site.