Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Archives:

Meet mlbms

February 27th, 2006 by Multimedia Mike

Janusz Dziemidowicz has been making some nifty progress with his mlbms program for mounting game resource archive format (GRAF) files. Check this out:

$ mlbms bms/alg-lib.bms resource-files/alg-lib/maddog.lib mount/
$ ls -al mount/
total 1
dr-xr-xr-x  2 melanson users       0 Feb 26 23:05 .
drwxr-xr-x  7 melanson users    1120 Feb 26 19:07 ..
-r--r--r--  1 melanson users  305172 Feb 26 23:05 alg.mm
-r--r--r--  1 melanson users   24912 Feb 26 23:05 credits.mm
-r--r--r--  1 melanson users  314245 Feb 26 23:05 ibmlogo.mm
-r--r--r--  1 melanson users  338277 Feb 26 23:05 scen110a.mm
-r--r--r--  1 melanson users  278177 Feb 26 23:05 scen112a.mm
[... ad nauseum ...]

Slick, huh? I knew you’d think so. This command mounts the LIB GRAF from Mad Dog McCree as part of the normal filesystem.

This is the BMS script I used for parsing (might not be 100% compatible with other BMS-using programs in existence):

GoTo 2 0;
Get IndexOffset Long 0;
GoTo IndexOffset 0;
Get IndexLength Int 0;
Math IndexLength /= 17;
Math IndexLength -= 1;
For File = 1 to IndexLength;
Get FileOffset Long 0;
GetDString Filename 13 0;
SavePos PreJump 0;
GoTo FileOffset 0;
Get FileSize Long 0;
Math FileOffset += 4;
Log Filename FileOffset FileSize 0 0;
GoTo PreJump 0;
Next File;

BMS development presents an interesting challenge for me since I can’t presently compile mlbms on my main AMD64 machine (x-wing). I also have a little headless x86 box (yavin4) that serves some other duties. It can compile mlbms so I am using the 2 machines in tandem to develop BMS scripts. Behold the incredible flexibility of Linux filesystems:

  • Mount the CD-ROM on x-wing via normal Linux kernel facilities.
  • Mount x-wing’s CD-ROM mountpoint on yavin4 via sshfs/FUSE.
  • Mount the maddog.lib GRAF onto yavin4’s filesystem via mlbms/FUSE.
  • Mount yavin4’s GRAF mountpoint on x-wing via sshfs/FUSE.
  • Read and play the files inside the GRAF using multimedia programs on x-wing.

Oh, how I’m grateful that sshfs frees me from actually having to think about setting up NFS or Samba just to do basic file sharing between PCs on a local network. FUSE rocks.

According to the mlbms page, Janusz is using this as a teaching tool for his lectures. What an awesome academic example!

Posted in Open Source Multimedia | Comments Off on Meet mlbms

Comments are closed.