Calico

Calico is a source port based on the Atari Jaguar version of Doom by James Haley (Quasar), a back port which allows playing that version of the game on Windows, Linux, and Mac personal computers. Developed under a philosophy similar to that of Chocolate Doom, it aims to preserve the original version with maximum fidelity and compatibility.

Features
Calico allows playing the Atari Jaguar version of Doom when provided with either a (legally obtainable via use of a backup device), or the extracted IWAD file from inside it (these files should be named  or, respectively, in order to be autodetected - use of the  command-line switch is also supported).

Calico utilizes render to texture via to provide a scalable window with optional hardware filtering and support for variable aspect ratio. The latter is particularly useful for authenticity's sake, since different television sets displayed the game's signal differently.

As of the v1.0 release, support for intermission music and network games is not yet present, but is planned for a future release.

Development
Returning the code base from the Jaguar game console back to the PC required replacement of all of the "GAS" assembly-language modules targeted at the Tom and Jerry Jaguar processors with equivalent portable logic written in. The recent release of the 3DO source code by Rebecca Heineman proved useful, as the game logic portions of that port's code are largely identical to the Jaguar code in terms of logic (the Jaguar code was originally written in C, and then compiled and hand-tuned as assembly - other ports based on the Jaguar version use this original C code as their basis). The Doom64 EX port by Samuel Villarreal (Kaiser) also proved useful for additional verification. Portions of both of these code bases were used directly where the logic was identical or only required minor modifications.

For making the rendering functional, it was necessary to reverse engineer the assembly directly and thoroughly in most cases, since the other available code bases use different rendering approaches, particularly in the later phases of scene generation.

Extensive code is also used from Kex 2 and the Eternity Engine to provide OpenGL rendering, library utilities, and integration with the library.