From KeenWiki
Jump to: navigation, search
Original developerK1n9 Duk3
Last stable release1.4
GalaxyView program screenshot

GalaxyView is a Level Viewer for Keen Galaxy created by K1n9 Duk3.

This tool allows to view the levels from all the Keen games with the actual tile graphics being read from the game's graphics files. It is basically TED5 minus map editing capabilities, but plus Win32 code and PNG export for each of the level planes. It was written to create map graphics for this very keenwiki.

It was first released 2011-02-03. The latest updated version is 1.4.

Featured games

  • Commander Keen 4-6
  • Commander Keen: Keen Dreams
  • Catacomb 3-D
  • The Catacomb Trilogy (Abyss, Apocalypse & Armageddon)
  • Dangerous Dave 3 & 4
  • Rescue Rover 2
  • Bio Menace

(For now, only the CGA and EGA versions of the games are supported.)


To use GalaxyView 1.4 extract all files from the archive and run the GalaxyView.exe to start the program. You will the be asked to open a GAMEMAPS.??? file (in some cases the file is named EDITMAPS.???, or KDREAMS.MAP for KEEN DREAMS). The program will then have to read the

  • GFXINFOE.???
  • EGAHEAD.???
  • EGADICT.???
  • MAPHEAD.???
  • MAPDICT.??? (only required for KEEN DREAMS and DAVE 3 & 4)

The program will try to load them from the same directory the specified GAMEMAPS.??? is located in. If this fails, it will look through all the EXE's in that folder and see if one of them matches an entry in the GalaxyView.ini. If that's the case, it will extract the missing data files from the EXE.

If you're viewing KEEN or DAVE files and the viewer found one of the above files missing, you will be asked if you want to read the TileInfo data from the EXE. If you select cancel, you will be asked to open a custom TileInfo file. If you cancel that, the viewer will not display any collision info.


ARROW KEYS scroll through the level.
PAGE UP / PAGE DOWN change the level number (FAST level change!)
TAB toggles between sprites, tiles and numbers for the InfoPlane
ESC / ALT+F4 terminates the program
F1 displays the current LevelNumber and the name of the level
F2 saves the level's planes to separate PNG files
F4 exports the images from the xGAGRAPH file
F5 - F8 changes the zoom level (1x - 4x)

Control notes

If the file you opened is called MAPTEMP, the viewer will assume that the file is not caramelized. If the map file you want to view can't be read correctly, try renaming it to MAPTEMP (or to something else it it's already named MAPTEMP) and open the renamed file. If you switch to a level number that has no level data, the program will skip over all empty level entries until it reaches the next level that has data. When you hit F2, the game will save the PNG files in the program's directory without asking you for a filename. The files will be labeled:

Level x Plane y.png

Planes 0-2 are the level's planes, plane 3 contains the collision data and plane 4 cantains the sprites of the objects placed on the map. Planes 3 and 4 will only be saved if you loaded a TileInfo file or sprite info is available. Keep in mind that the program will overwrite any existing files, so move them to another folder after you're done exporting from a GAMEMAPS.??? file. When you try to open mods, make sure all the files have the correct structure and match the filenames listed above. For KEEN DREAMS, the extension has to be .KDR for all files, except for the EGAGRAPH file, which can be KDREAMS.EGA.

Adding new versions to the INI

If you run the viewer on a game version that the viewer has no info for, it will offer to scan through all the executables in that folder and write its findings to the logfile. These can be used as a basis to add the new version to the INI. To add a new version, you need the location of the following files:

  • MAPDICT (KEEN DREAMS and DAVE 3 & 4 only)

The ?GAHEAD can be either in 3-byte or the old 4-byte format (Keen Dreams). If you want to use the 4-byte format, you have to add "4_byte_xgahead = 1 to the section or the program will assume it's in 3-byte format. In most cases there are multiple DICTs in an EXE. The first is usually for audio (If the audio file is named AUDIOT, then there's no DICT for audio!), the 2nd is for graphics (xGADICT) and the third (if present) is the MAPDICT. This rule does NOT apply to KEEN DREAMS! There, the order is xGA, MAP and then AUDIO.
Now use the locations and create a new section in the INI. If there already is an entry for another version of the game, you can copy the tile start and count entries from the other version. If the size of the xGAHEAD file is the same as in your version, these values should work just fine.
Now start up the viewer and try to read the maps. If it crashes, have a look at the logfile again. If it didn't go beyond reading the info chunks for unmasked, masked and sprites, either the xGAHEAD or DICT are wrong or the game is missing one of the info chunks (like in Dave 3 & 4). Change the values for that until the viewer is able to find the start chunks for unmasked, masked and sprites.
The tile8's start directly after the sprite chunks (SpriteStart + SpriteCount), the tile8M's one chunk later and the tile16's two chunk after the sprites. The Tile16M's start at Tile16Start+Tile16Count. Try setting the count of those tiles to a high value (120/40/3000/3000) and run the viewer. Press F4 to export all images and have a look at the exported tile images. Now reduce the tile count until the exported tile images look okay.
The TileInfo file usually follows directly after the MAPHEAD in the EXE. Just add 402 (size of the maphead data) to the location of the MAPHEAD to get the location if the TileInfo data. (For KEEN DREAMS and DAVE 3 & 4 you need to add 502, not 402!) The size of the TileInfo data is 2*Tile16Count+7*Tile16MCount.

Sprite display

As of version 1.4, this viewer is able to display sprites from the xGAGRAPH file for each object placed in the InfoPlane. This requires a mapping from tile number to sprite number, which will be read from INI files. By default, the viewer tries to read a file called SPRITES.INI from the folder that contains the opened map file. Sprite info will be read from the section sprites in that file. If the file doesn't exist, the viewer will try to read the sprite info from it's own INI file, GalaxyView.INI. Have a look at the sections for Keen 4-6 to see how this works. You can assign a sprite number and x/y offsets to each object:


Output screenshots

These example screenshots are take from the 10th Keen 4 Level Lifewater Oasis

Known Issues

  • For some reason, the viewer has trouble reading the InfoPlane of level 6 in Ceilick's Dead in the Desert. It seems like the EDITMAPS.CK6 file might be corrupted.
  • Rescue Rover 2 uses at least two different color palettes: One for the menu and the other for in-game graphics. So some of the graphics might look a little weird in the viewer.

Version Changes

v1.4   added support for MapTemp format (Bio Menace)
got sprite display implemented
v1.3   added CGA support
v1.2   cleaned up the code
some more options read from INI instead of being hard-coded
added support for the Keen 4 1.0 Demo
TileInfo can now be disabled for games that can't use it
will now scan through unknown executables and write its findings to log.txt

See also

External links