Maelstrom (classic Mac game) art?
The 1992 Mac game Maelstrom was really great, and in particular had amazing art. And according to Wikipedia, all that (including art) was released under Creative Commons in 2010.
I've found the current source: http://www.libsdl.org/projects/Maelstrom/source.html
Also available on GitHub, e.g.: https://github.com/richardjs/Maelstrom
But all the sprites were originally stored in the Mac resource fork (I think in 'cicn' resources, though I'm not 100% sure). They're now in this binary file, still in the format of a Mac resource fork. It seems the guy who did the original port to SDL just wrote C++ code to read this format directly, rather than extract the images into some more common format.
Still, that was 12 years ago. Surely somebody has extracted these resources into a sprite sheet or separate little PNGs or something by now? Perhaps my google-fu is too weak to find them. Anyone know of where these resources can be found, short of re-hacking this extracted resource fork?
Hi,
@Joe Strout: "Surely somebody has extracted these resources into a sprite sheet or separate little PNGs or something by now?"
I don't think so. But if I were you, instead of messing around with the resource file directly, I would simply hack the game's source to save the sprites in memory after they are loaded from dragonland.
The sprites are loaded in two places, here and here. After the screen->LoadImage call you can save the sprite. The variables are as follows:
Using SDL_Image it should be trivial to save that SDL_Surface into a PNG file by the name ("%04d-%d.png", baseId, index), or you could merge the frames into a single SDL_Surface and save that.
EDIT: hmmm, it looks like baseID isn't unique at all. So I guess you should write a function "SaveSpriteasPNG(BlitPtr *aBlit, char *pngname);" and call that in LoadBlits() like this:
/* -- Load in the thrusters */
if ( LoadSmallSprite(spriteres, &gThrust1, 400, SHIP_FRAMES) < 0 )
return(-1);
SaveSpriteasPNG(&gThrust1, "ghrust1.png");
EDIT2: I've attached a modified init.cpp (I had to rename it to png, just rename it back to init.cpp). If you compile the game with this, then when you run the game it will save the sprites into BMP files (I've chosen BMP over PNG so that you don't have to mess around with SDL_image linking, as SDL_SaveBMP is supported by the base SDL library). Check out the "SaveBlitasBMP()" function that I've added, and modify it to your needs if you want to.
Hope this helps,
bzt
@Joe Strout: Well? Did it work for you? Were you able to save the sprites with my init.cpp hack?
Cheers,
bzt
No, for me it was substantially easier to just pull them out of the resources file.
But thank you anyway! It was generous of you to look into it.
@Joe Strout: "for me it was substantially easier to just pull them out of the resources file."
I've thought you don't know how to do that.
"But thank you anyway! It was generous of you to look into it."
You're welcome! I'm glad you managed to get the sprites. Well done!
Cheers,
bzt
Original Maelstrom in not arcade it is strategy game in space.
https://www.myabandonware.com/game/maelstrom-1gh
..extremely brutal fight in space in Dune movie stile. But for that time it has some heart, I don't know why Mac developer use this name. In parallel, I also played Supremacy aka Overlord on C64. Thank1`s God, name is not used by Mac in some asteroid hunt.
The Mac game came out first.