Wednesday, April 22, 2009

ASIOATA (A short introduction of all those Acronyms)

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)

11 comments:

  1. You actually forgot the "VM" part of ScummVM :P

    ReplyDelete
  2. The text on the ScummVM Homepage should actually be copyable text. Using pictures for text is like asking for such horrible accidents to happen!

    ReplyDelete
  3. Tell 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.

    ReplyDelete
  4. Oh, 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.

    ReplyDelete
  5. I already ran Monkey-Island through an disassembler. I plan this to be my primary reference, together with comparing output from an A1200.

    And 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.

    ReplyDelete
  6. 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.
    The 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

    ReplyDelete
  7. Ok, here is the perfect tfmx replayer I meant:

    http://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

    ReplyDelete
  8. thanks for all the info. Though I think peeling the TMFX-Player directly from MI will be easier ;)

    ReplyDelete
  9. > Though I think peeling the TMFX-Player directly
    > 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.

    ReplyDelete
  10. 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).

    He 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

    ReplyDelete
  11. I talked to mhilmi on irc. I know and can access all code he committed to scummvm.

    There 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.

    ReplyDelete