Cosmo's Cosmic Adventure

From ModdingWiki
Jump to navigation Jump to search
Cosmo's Cosmic Adventure
Cosmo's Cosmic Adventure.png
There is no image of a modified version of this game — upload one!
Levels?Tick.png Editable
Tiles?Tick.png Editable
Sprites?Tick.png Editable
Fullscreen?Tick.png Editable
Sound?Tick.png Editable
Music?Tick.png Editable
Text?X mark.svg Not editable
Story/cutscenes?X mark.svg Not editable
UI/menus?X mark.svg Not editable
Demos?X mark.svg Not editable

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)

Tools

The following tools are able to work with this game.

Name PlatformGroup/archives Levels Graphics Music Sounds Text Saves .exe patch Notes
Camoto Linux/WindowsEditEditEditEditNoNoNoNo
Camoto/gamearchive.js AnyEditNoNoNoNoNoNoNo
CosEdit DOS GUINoEditNoNoNoNoNoNo
Cosgraph Windows GUIReadNoEditEditEditNoNoNo
Cosmo Edit DOS consoleNoEditNoNoNoNoNoNo
TExtract DOS consoleReadNoNoNoNoNoNoNo
Wombat Windows GUIViewViewViewViewViewViewNoNo

Game Engines

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

File formats

The following file formats are used by this game.

Filename Format Details
*.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
actors.mni
bd*.mni
cartoon.mni
masktile.mni
players.mni
status.mni
tiles.mni
Cosmo Tileset Format Tilesets with 8×8 tiles
tileattr.mni Cosmo Tile Attributes Tile properties
cosmo*.stn
cosmo*.vol
VOL Format Archive file storing the game data
a*.mni
bonus[12].mni
Cosmo Level Format Levels
m*.mni
(except masktile.mni)
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

Notes

  • 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!