Hi there,
The purpose of this blog is to document the progress of my work during this summer, thats as short as it gets.
For a bit of a backstory: Google holds annually a nice program called GSoC (Google Summer of Code), for which I applied and ultimatly ended up as one of the 1000 students chosen.
My task will be to improve ScummVM (Script Creation Utility for Maniac Mansion), particulary by adding support for additional Soundformats including TFMX(The Final Musicsystem eXtended)
You actually forgot the "VM" part of ScummVM :P
ReplyDeleteThe text on the ScummVM Homepage should actually be copyable text. Using pictures for text is like asking for such horrible accidents to happen!
ReplyDeleteTell me: are you going to reimplement TFMX using the existing TFMX 2.0 documentation (floating around the web, I have it)? Because with that documentation, nobody really produced a 100% faithful replayer for MI1 modules. For sure, you can produce a correct replayer using the original m68k disassembled code. If you need, I have a stand alone replayer for MI1 modules: it was produced stealing the original code from executable.
ReplyDeleteOh, I forgot: the stand alone replayer does work in an AmigaOS enviroment, native or emulated. It's ok if you quickly install AmigaOS 3.1 in a Winuae emulated system just to try that replayer.
ReplyDeleteI already ran Monkey-Island through an disassembler. I plan this to be my primary reference, together with comparing output from an A1200.
ReplyDeleteAnd what do you mean with 100% faithful? There are limits to how close you can get (in reasonable time), particulary as you`d need to measure and simulate the analog circutry with all its non-ideal characteristics aswell - no disassembly will help you there.
However, if you are considering WinUAE output faithfull enough, then you dont need to worry.
With 100% faithful I meant without annoying defects; all tfmx player I've tried have some kind of defect in playing MI1 modules: timing, modulation, mixing. This is probably because tfmx is not a single unique format, and there exists many implementations with little differences, distributed togheter the games with tfmx coded tunes. NOT even eagleplayer/deliplayer replayers are good enough (the ones you can find at [1]), as they sounds bad even on a true amiga.
ReplyDeleteThe only correct player is the original engine and Megaplayer (will provide it with a link later), and they sounds good on Winuae too, so it's probably not a matter of emulating weird amiga custom chips but a software issue.
[1] http://wt.exotica.org.uk/players.html
Ok, here is the perfect tfmx replayer I meant:
ReplyDeletehttp://web.cheapnet.it/imeriopretto/MegaPlayerV1.4.lha
http://web.cheapnet.it/imeriopretto/MegaPlayerV1.4.readme
Almost for sure, it was coded stealing m68k assembly routines from MI1 executable. It may help you, as it could be simple to study the disassembled code here.
Here is the tfmx specs floating around the web (you should already have it. As I've told, is probably not good to produce a decent MI1 tunes player):
http://web.cheapnet.it/imeriopretto/tfmx.txt
To add some more details you already know: MI1 tune is NOT TFMX 1.5 or 7. It's TFMX Pro [1]. As I've already told, TFMX Pro engine came in different flavor depending on the game it was released with, so it's probably for that reason it's hard to produce a replayer that works for all the title with TFMX Pro tunes. Anyway, for scummvm, it's enough if it plays correctly MI1 tune :-)
http://www.exotica.org.uk/wiki/UnExoticA/Games_By_Format/TFMX_Pro
thanks for all the info. Though I think peeling the TMFX-Player directly from MI will be easier ;)
ReplyDelete> Though I think peeling the TMFX-Player directly
ReplyDelete> from MI will be easier ;)
Yup, but you can use Megaplayer for quick test purpose instead of playing the game :-)
I can guarantee: it's perfect, can be used as a reference implementation.
Last year a person had the same GSoC project of implementing a TFMX player. I even gave him some starting code (a cleaned up version of a TFMX player floating around the web).
ReplyDeleteHe had most of the code needed to parse and play TFMX music files, so I really think you shouldn't start from scratch...
From what I can see his blog is clean now and only has information on his current GSoC project (http://www.marwanhilmi.com).
From searching Google Reader I was able to find all blog posts archived. He even has some documenting the TFMX patterns and file structure. Might be helpful. Tell if you want them or try to contact Marwan.
Hope it is this year we finally see a good TFMX player codebase. :D
I talked to mhilmi on irc. I know and can access all code he committed to scummvm.
ReplyDeleteThere are a couple players for TFMX already, problem is that they are pretty messy (and based on who-knows-what). I will have to dissect the format and player anyway to make a clean implementation, reversing the original seems the most straightforward way for doing this.
All those other players surely will help me, but more as guidance rather than a reference.