Camoto

Camoto is intended to be a collection of integrated utilities for editing (modding) "classic DOS games", those running under MS-DOS on the PC from the early to mid 1990s.

Main features

  • Map editor for 2D tile-based/grid maps (most platform games, some early FPS games)
  • Export and import images and tilesets as .png files with transparency
  • Listen to Ad Lib music via software OPL synth (borrowed from DOSBox)
  • Edits files directly inside group/archive files, no need to extract them first or merge them later
  • Works with files in their native format, no need to distribute images of tilesets, and when changes are saved they are immediately visible if the game is launched

Currently all the libraries have been implemented, with the exception of the one to manipulate game sound effects. Many need more file formats added, which will happen once Camoto Studio has been released so that there is an editor GUI available. The eventual aim is to produce a single application which is capable of fully editing numerous games, with a consistent user interface regardless of the game being examined.

See the list of supported games.

Download

Discussion

The 'official' help forum for Camoto is the RGB Classic Games modding forum. If you run into problems or have questions about Camoto, please ask them there.

You can watch development progress by following @CamotoModding on Twitter.

User interfaces

The Camoto suite will have a handful of methods for end-users to access its functionality. Many of these will be small command-line utilities which will also serve as an example of how to use each library. There will also eventually be one large "editing studio" which will combine the functionality of all the supporting libraries into a single environment.

Current utilities are:

  • Camoto Studio (GUI) (report bug)

    Cross-platform GUI combining the entire Camoto suite into a single integrated application

  • gamearch (libgamearchive, command-line)

    View and edit group/archive files (like zip/unzip)

  • gamecomp (libgamearchive, command-line)

    Encrypt/decrypt and compress/decompress individual files

  • gametls (libgamegraphics, command-line)

    Extract (as .png), view (in ANSI/ASCII) and replace images within a tileset (a tileset is a single file containing many images)

  • gameimg (libgamegraphics, command-line)

    View (in ANSI/ASCII) and replace single-image graphics files

  • gamemap (libgamemaps, command-line)

    Examine game levels (hex dump, print metadata)

  • gamemus (libgamemusic, command-line)

    Import, export and basic conversion of game music files

Contributing

The core functionality of the Camoto suite is provided by a set of libraries, which will allow many different types of games to be edited using a standard set of programming interfaces. Anyone with an interest in reverse engineering DOS games is encouraged to download the code and implement more file formats, or visit the Game Modding Wiki and help out reverse engineering some of the many game formats still to be deciphered.

Developers

The Camoto codebase is broken up into the following libraries. Each library name is a link to the Doxygen documentation for that library.

  • Common functionality shared by multiple libraries. Endian independent stream functions, methods for reading and writing streams in units other than 8-bit bytes, and helper functions for various common tasks.

  • Interface to game archives (like .zip files where lots of game data is stored in one big file.) Allows full editing of supported file types.

  • Examine, convert and modify game graphics in all their multitude of formats. This includes tilesets, sprites, backgrounds, animations, etc.

  • Provide a standard method of level editing. This will (initially) only support 2D grid-based maps, which means platform games and some early 3D games.

  • Play and convert music from supported games. The UI for this component will include real-time OPL/Adlib conversion to MIDI (to replace DRO2MIDI.)

  • libgamesfx

    Proposed library, not yet started. Listen to and replace sound effects - digitised (PCM), synthesised (Adlib) and PC speaker. Possibly this functionality will end up in libgamemusic as so much code is common between music and sound effects.

Syndicate content