Disclaimer: the GPL versions of Maelstrom are unsupported by Ambrosia. But I’ve succeeded in doing this and wanted to share the knowledge. I can’t guarantee support on doing this, but email me your problem and I’ll try to help. Just think to tell which kind of computer you’re using and what file are you attempting to use.

In this “How to” article, we are going to use alternate sounds and sprites files, originally made for Maelstrom, with Maelstrom GPL. It has not been easy to find out, but I’m proud to show the results of my investigations, made on a Windows 2000 PC, a Mac OS X Jaguar Mac, and now on Ubuntu GNU/Linux. As the problem is, Maelstrom GPL won’t accept them as they are.

So, you have played Maelstrom on your Mac long (or not that long) ago and have some sound/sprite files you like, but you’ve moved to Mac OS X or a PC, and you have no clue how to make Maelstrom GPL use these mods? Or maybe you’ve just discovered Maelstrom GPL on one of these platforms, and you are interested in using some Maelstrom add-on files, but yet again have no clue how to do this? I didn’t, either. But I’ve managed to succeed in all cases, with OSX, Windows and Linux. Depending on your system and what you want to do, here are the instructions:

  1. You use Windows
    1. You have some old alternate files on a Mac, that you wish to move for use by Maelstrom GPL

      In this case, the best way is to binary encode the file(s) on your Mac with Drop MacBinary (uh oh, gone, use MacBinary II). Now rename the encoded file(s) Maelstrom_Sounds.bin or Maelstrom_Sprites.bin, transfer the file(s) to your PC, and put it/them in the same directory than the executable. Yep, that’s it. Do not think about transferring first then encoding, it won’t work. If the Mac has no Internet access at all, download the archive of Drop MacBinary to your PC, do not uncompress it, leave it as it is, transfer it to your Mac, and then only uncompress the archive, and use the application to encode, etc.

      Notice, however, that this only works for sound and sprite files; if you have a custom “Maelstrom Titles” file the procedure for that file is different, as in the GPL version each one of these images (that Maelstrom Titles contain) is stored as an individual BMP, and the process is not as straightforward:
      On top of what you’ve already done, open “Maelstrom Titles” with ResEdit on your Mac, copy each PICT resource and paste it to a program able to save as a BMP file (I’ve heard good things about graphic converter). Name each file “Maelstrom_Titles#<theID>.bmp” (for instance, the picture that stands for the “Are you sure you want to clear the high score list?” should get the name “Maelstrom_Titles#102.bmp”). Then transfer to the PC, and put all these BMP files in a new “new_images” directory in the main directory. Copy the CICN files found in the original “images” directory in the new directory, rename the original one “old_images” and the new one “images” (so that you keep the original artwork in case you wish to revert).

      This doesn’t work either for the score file, but I’m not going to give instruction for that one (and whatever, I’ve not succeeded in doing it): first, the format is wholly different, second, there are slight changes in the gameplay of the GPL version (so just like Bubble Trouble X, the score list should be reset), third, I want to give you or your wife / husband / son / daughter / father / mother / roommate / whatever-else a chance to enter the high score list.

    2. You want to download and use an alternate sound/sprite file found in the add-ons page

      These files are found encoded, and need to be decoded and uncompressed before use, but in such a way as to make the file be a MacBinary encoded file. Fortunately, the ways to do this are well documented, as this is necessary for users of WinNova in order to use plug-ins. Thanks go to Belthazar for writing the PC Plugin Conversion Tutorial from which these instructions were taken:

      1. Download Stuffit 9 from http://www.stuffit.com
      2. Install
      3. If the archive is .bin or .hqx, right-click and select Stuffit Archive > Expand Here - if it’s not either of these, skip this step.
      4. On the .sit file which results, or if the archive starts as .sit or .sitx, right-click and select Stuffit Archive > Expand Mac Archive > MacBinary Fork Encoding

      Now rename the appropriate files into Maelstrom_Sounds.bin or Maelstrom_Sprites.bin, and put them in the Maelstrom directory. Remember, for this you don’t need to pay anything, ignore the shareware nagging, as the expander function is free, but Aladdin decided to make only one distribution for Stuffit expander (free) and Stuffit standard (not free). Notice you can also get .sea files, just try Stuffit Archive > Expand Mac Archive > MacBinary Fork Encoding as if it was a .sit (it’s in fact a self-extracting archive, i.e. an archive that contains a Mac mini-app that can decode itself), it may work, but it may also not work and then it means the archive is a Compact pro archive, read forth.

      Unfortunately, it’s entirely possible that the archive is not a Stuffit one but a Compact Pro one instead (Compact Pro was a popular Mac archiver in the early 90’s, inlcuding the Maelstrom years); Compact Pro archives have the extension .cpt, or .sea if they’re self-extracting. To decode these archives on Windows, you’ll need ExtractorPC, an MS-DOS command-line tool that can decode such archives. To use it, the best way I’ve come up with is to:

      • tell Windows in the EXTCPT properties to not close the DOS emulation window after the end of the program, so that we can check all went well
      • rename the .cpt or .sea archive to have an 8-char long name+.cpt extension, and put it in the same directory as EXTCPT
      • make a shortcut of EXTCPT just next to it, right-click for properties, and write the command line for it to work. The command line would be <wherever it is>EXTCPT <8-char archive filename> -r -b -u. But first doing without -r (extract resource forks) allows to have the readme. However, as it is an old DOS program, files will only have 8 chars names! To avoid two files having the same name (MAELSTRO, for instance), the -u option should be specified, and the DOS screen should tell you the original name. As for -b, it’s to avoid end-of-line conversion.
      • lastly, double-click the shortcut for the extraction to actually take place

      You should now have the files that were contained in the archive in MacBinary (.bin) form, ready to be renamed into Maelstrom_Sounds.bin or Maelstrom_Sprites.bin.

      However, this still won’t work for a “Maelstrom Titles” file. I’m still trying to come up with a way that does not make you require a Mac since you may not have one available. Maybe downloading Nova (or just the converter BurgerBecky put available alone), convert the file to rez using it, and extract using EVNEW? I don’t think I can ask you that, but if you’re so inclined, why not? Some packages also come with a custom score file, but I’ve not managed to convert one, so you’ll have to make without it, sorry.

  2. You use Mac OS X
    1. You have some old alternate files on a Mac (or this Mac), that you wish to move for use by Maelstrom GPL

      The first problem is that you don’t see any sprite or sound file in the Maelstrom folder to begin with. Where have they been going? Answer: you actually find them in the Maelstrom bundle. This is a new, OSX-specific way of packaging applications. To open the bundle, you ctrl-click (or right-click with a multi-button mouse) the Maelstrom application, and the contextual menu will show you a choice: “open package contents”. Select it, it will open a folder: what you beleived was an appplication is actually a folder! It contains just one folder, “contents”. Open it. The files we want to replace are there or in one sub-folder. But first, we need to prepare the files for use by Maelstrom GPL, which doesn’t uses the usual files directly.

      The best way to convert the files is to use ToggleFork, a free utility that will get the job done. Once downloaded, drag the alternate Maelstrom Sounds file on the app. It will output a file “out.datafork” in the same folder Maelstrom Sounds is. Rename that file “Maelstrom_Sounds”. Do the same steps for the alternate Maelstrom Sprites, if applicable, renaming the file into “Maelstrom_Sprites”. Now put the converted and renamed files in the place of the old ones inside the Maelstrom GPL bundle (moving away the old ones in a safe place first if you wish to revert to them), close the bundle, and enjoy.

      Now, just like the PC folks, this doesn’t work that way for the file “Maelstrom Titles”. So, you need to open it with a resource editor (ResEdit if you have no problem with Classic, or another resource editor like Rezilla or even a Nova plug editor if you already have one), open Maestrom Titles, copy and paste each PICT resource to a program able to save in BMP, and name each saved BMP “Maelstrom_Titles#<theID>.bmp” (for instance, the picture that stands for the “Are you sure you want to clear the high score list?” should get the name “Maelstrom_Titles#102.bmp”). Put them all in a new folder named “images”. Copy the files with the cicn extension found in the “images” directory of the bundle in this new folder, move away the old “images” folder or rename it (so that you can revert to it), and put the new “images” folder in its place in the bundle.

      This doesn’t work either for the score file, but I’m not going to give instructions for that one (and whatever, I’ve not succeeded in doing it): first, the format is wholly different, second, there are slight changes in the gameplay of the GPL version (so just like Bubble Trouble X, the score list should be reset), third, I want to give you or your wife / husband / son / daughter / father / mother / roommate / whatever-else a chance to enter the high score list.

    2. You want to download and use an alternate sound/sprite file found in the add-ons page

      This is going to come down to the same thing, actually. Download and unstuff them using stuffit, and apply the instructions above for OSX, I don’t think there’s something particular to say in this case. Some packages also come with a custom score file, but I’ve not managed to convert one, so you’ll have to make without it, sorry.

  3. You use Linux

    Doing this stuff in Linux is sufficiently more complex to warrant a common section between the two cases, describing how to install these add-ons once obtained. So first read the subsection best describing your situation, then the part after these two subsections.

    1. You have some old alternate files on a Mac (or this Mac, in case you're dual booting as I do), that you wish to move for use by Maelstrom GPL

      As with the Windows folks, the easiest way to go about it is to encode the files on the Mac with Drop MacBinary (uh oh, gone, use MacBinary II), then rename the encoded file(s) Maelstrom_Sounds.bin or Maelstrom_Sprites.bin, and transfer them over to the machine you're running Linux on (using the network, a floppy, by having Linux read the Mac partition, whatever). If you can directly get access to the drive on which they are stored under Linux (as Linux now understands Mac formatted drives), for instance they are on a Mac floppy or on the Mac partition of the hard drive as you're dual-booting, you can save the trouble of booting the Mac and directly get the file from Linux, to do this write the following command-line in a shell under Linux:

      cp /<wherever you've mounted the Mac drive>/<path to>/Maelstrom\ Sprites/rsrc ~/\%Maelstrom_Sprites

      This will create a file containing the resource fork of the Maelstrom Sprites file you specified (it works the same way for a Maelstrom Sounds file) in your home folder (this isn't a MacBinary file, but Maelstrom GPL can use that too).

      Notice, however, that this only works for sound and sprite files; if you have a custom “Maelstrom Titles” file the procedure for that file is different, as in the GPL version each one of these images (that Maelstrom Titles contain) is stored as an individual BMP, and the process is not as straightforward:
      On top of what you’ve already done, open “Maelstrom Titles” with ResEdit on your Mac, copy each PICT resource and paste it to a program able to save as a BMP file (I’ve heard good things about graphic converter). Name each file “Maelstrom_Titles#<theID>.bmp” (for instance, the picture that stands for the “Are you sure you want to clear the high score list?” should get the name “Maelstrom_Titles#102.bmp”). Then transfer these to the Linux machine.

    2. You want to download and use an alternate sound/sprite file found in the add-ons page

      These files are found encoded, and need to be decoded and uncompressed before use, but in such a way as to make the file be a MacBinary encoded file. Fortunately, Aladdin (now Allume) did make a Stuffit expanding tool for Linux, unfortunately it is completely closed-source and proprietary (but it's free, as in costing 0 bucks, at least) so you might have a problem with that, and is only available for Linux on Intel processors to the best of my knowledge, so if you can't use them I'm afraid you will have to decode and uncompress these archives using another system: the sit and cpt formats of the archives (which all these archives are, even when they end in sea, as it just indicates they self-extract on the Mac and are in fact either sit or cpt internally) are completely proprietary and have never been reverse engineered to the best of my knowledge. Anyway, if you can use them, grab the tools from Allume's ftp server, Linux section. Install them however you please, and use the unstuff command on the archive you downloaded this way:

      unstuff -m=no archivefilename

      This should produce either a file, or a folder. Indeed, most of these archives are actually encoded archives, so the first command will only remove the encoding wrapper (typically BinHex, with the hqx extension), and you will only get a file; if you get a folder however, this means this was directly an archive, not encoded, but the folder you got is useless. So regardless, you will have to invoke unstuff once more, either with the file you obtained from the first unstuff, or the original file, with the line:

      unstuff -m=auto filename

      Then you should get a folder, containing the files we're interested in. Strangely enough, depending on what the archive actually was (sit or cpt), you won't get the same kind of files: sometimes the Maelstrom Sprites (or Sounds) file won't have any extension, in which case it's actually a MacBinary file you should rename into Maelstrom_Sprites.bin, but sometimes the file will have a rsrc extension, in which case it's actually just the resource fork (which Maelstrom GPL can use as well) and you should rename it %Maelstrom_Sprites. Notice this file may not necessarily be named Maelstrom Sprites (or Sounds), for instance it can be "Star Wars™ Maelstrom Sprites.rsrc" (and in fact the ™ is in MacRoman encoding and likely won't show up correctly for you) which may make it less easy to know which file is the actual sprite file and which file is the ReadMe (and there may be other files as well)

      However, this still won’t work for a “Maelstrom Titles” file. I’m still trying to come up with a way that does not make you require a Mac since you may not have one available, but contrary to the Windows folks I don't think there's any: you can always dump the PICT resources from the file using the macres util in maclib from the Maelstrom GPL source code distribution, but then I'm afraid I don't know of anything that can understand PICT files under Linux (everything I know which can understand PICT files uses QuickTime or the Mac API to handle the conversion), the PICT file format is documented but a pain to interpret, as Sam wrote himself "I looked at the "Inside Macintosh: Imaging with QuickDraw" for the PICT resource format, and freaked when I saw it was a collection of opcodes for the QuickDraw routines."; he converted them to a more portable format from a Mac.

    Now you have the converted files, you need to install them in a place the game will find them and use them. By default, Maelstrom GPL under Linux installs its support files in /usr/local/games/Maelstrom, which can only be modified by root, this isn't very practical. One solution would be, when building Maelstrom from source, configure it to use another, more available folder (in your home directory for instance); the obvious drawback is that you would have to reinstall Maelstrom manually using the source. This isn't what I did, instead, at first, I installed these files in the default folder by copying the new files there (as root, using sudo); notice that since the new files have different file names from the originals, this won't erase the originals and you will be able to revert to the original sounds/sprites by simply removing the new ones from the folder. But this isn't really satisfying, what would be much better would be to simply be able to drag and drop these mods using the Gnome file manager or Konqueror. What I ended up doing was to copy the Maelstrom folder somewhere in my home directory, and then (as root, with sudo) I replaced the original folder by a symlink pointing to the copy in my home directory, this way I can drag and drop mods in and out of there as much as I like. You could also do the converse, that is modify (as root) the /usr/local/games/Maelstrom folder to be writable by everyone, and put a symlink to that folder in your home directory (thogh this would allow everyone on your system to tamper with them). If you don't have any root access on the system Maelstrom is installed, but still want to use mods, the last resort is to do a copy of the /usr/local/games/Maelstrom folder somewhere in your home directory as I did, and set the environment variable MAELSTROM_LIB to be the path to that folder, this will direct Maelstrom GPL to look for its support files there, this will have the added bonus that you won't force other users of the same system to use the mods you put.

    Whichever way you eventually went, you should now be able to play Maelstrom GPL with modified sprites and/or sounds. If it isn't already done, you can easily add Maelstrom to the Gnome Application menu using Alacarte or to the KDE start menu, and now you should be good to go and able to blast TIE Fighers by saying "Nee!" (the combination of the Star Wars Sprites and the Monty Python sounds is perhaps the most wacky of all, and is also a good test for the procedure to follow as one is in cpt format and the other in sit, but both display sea as their extension).

There you go. I hope you will enjoy your modded versions of Maelstrom. Notice there are some files already ready for use in the Maelstrom GPL website, that do not require these instructions, so if they scare you, try these files first. Now if you excuse me, I’m going to play Maelstrom...