Cosmo's Cosmic Adventure
Cosmo's Cosmic Adventure, also known simply as Cosmo, is a three part series chronicling the adventures of Cosmo, a small, green sucker-handed alien boy who is seeking his parents after a comet collision forces them to land their ship on a dangerous and uncharted planet.
The Cosmo engine was later updated and used for Duke Nukem II, so the two games share a number of file formats.
In 2020, the source code was reverse-engineered by Scott Smitelli, and is currently hosted on Github, under the name CosmoRE. (See below)
The following tools are able to work with this game.
|Cosmo Edit||DOS console||No||Edit||No||No||No||No||No||No|
- Cosmo-Engine - An open source game engine for playing Cosmo's Cosmic Adventure on modern systems.
- CosmoRE - a 96% reconstructed/reverse-engineered source code from the original .EXE binaries, created by Scott Smitelli.
The following file formats are used by this game.
|*.mni (32,000 bytes)||Full-screen planar EGA||320×200 full-screen images (in four planes: blue, green, red, intensity)|
|*.mni (4,000 bytes)||B800 Text||Text screens shown at exit|
|Cosmo Tileset Format||Tilesets with 8×8 tiles|
|tileattr.mni||Cosmo Tile Attributes||Tile properties|
|VOL Format||Archive file storing the game data|
|Cosmo Level Format||Levels|
|IMF Format||Background music - see #Notes below|
|sounds*.mni||Inverse Frequency Sound format||PC speaker sound effects|
|cosmo*.sv*||Cosmo Savegame Format||Saved games. cosmo?.svt is a temporary save written at the start of each level|
|*info.mni||Cosmo Tileinfo Format||How to lay out the actor tiles into complete frames|
|prevdemo.mni||Cosmo Demo Format||Game demo format|
|cosmo*.cfg||Cosmo Config Format||Game configuration format|
- Graphics limitations and glitches:
- The masktile graphics can be corrupted by a buffer overflow by the addition of a large enough IMF music file to the group file (usually around 40KB). (That is, the music goes over it's intended memory boundary.) This is not permanent, and will only occur until the offending file is removed or a smaller or less-complex file is imported in its place.
- Actor graphics can be corrupted by a self-contained arithmetic overflow by the addition of too many sprites. (that is, it writes to the end of the allocated block, then back around to the beginning, where it overwrites the header data.) Again, this is not permanent unless the user does not change the data in the group file.
- If an actor (a good example would be Cosmo himself) is behind a masked tile with the foreground bit set on it, any transparent regions of the tile overlapping the actor will remove those regions on the actor, showing the background instead.
- Directory miscellany:
- The game reads from the VOL and STN archive files in preference to the current directory, but will read from the current directory if the archive files are not present. Any game files in the current directory will not be read while the VOL/STN files are present. To modify a file, it will either need to be imported back into the VOL/STN, or the VOL/STN should have its entire contents extracted into the game folder and then be removed or renamed.
- A directory path (relative to the current directory) can be given on the command line. Any files that the game writes (saved games, high scores, etc.) will be written to this folder instead. This is probably to allow running the game directly from read-only media like a CD.
- The *.stn files appear to be for "standard" data common to all episodes, as the files are identical between all three games. It is a curiosity that there are three identical STN files, rather than a single cosmo.stn shared amongst all three episodes.
- Game Engine Glitches:
- In editing levels, if two or more blue moving platforms collide, the tiles that overlap will disappear. Furthermore, if Cosmo stands anywhere on any one of these platforms when they collide, he will literally be deleted from the level, and the game engine will treat him as if he had died or fallen off the bottom of the screen, restarting the level over again.
- If a player actor is not specified in a level file, a unique event can occur. The level coordinates of the player from the previous level (or any level, if using the warp cheat) carry over, meaning that the player can enter the level in a very different spot than what was intended before, even entering the level trapped inside a wall!