How were DOS games' graphics made?
- entropicdecay
- Mad Mushroom
- Posts: 596
- Joined: Thu Nov 01, 2007 15:00
- Contact:
How were DOS games' graphics made?
If you look at the files of many DOS games, the graphics will be in a proprietary (not sure if I'm using the right term there) format, such as Keen Vorticons' EGALATCH.CK# or Jazz Jackrabbit's BLOCKS.### (where ### is different numbers for the episodes in Keen, and for the levels in Jazz). Does anyone know how the graphics were made? I know there was DOS image editing software. Were they drawn in one of those in more typical image file formats and then converted to the formats used in the games using file conversion programs written for the specific game? It seems like that would be more straightforward than, say, writing their own image editing programs that can save those formats, or directly writing files of those formats in a hex editor or something.
Re: How were DOS games' graphics made?
Keen's graphics were drawn in Deluxe Paint (as was the case with a lot of DOS games), and they likely used their own proprietary software to convert that into the .CK# files.
- entropicdecay
- Mad Mushroom
- Posts: 596
- Joined: Thu Nov 01, 2007 15:00
- Contact:
Re: How were DOS games' graphics made?
Thank you for the information. Makes sense.Pandakeen wrote: Mon Jun 19, 2023 18:48 Keen's graphics were drawn in Deluxe Paint (as was the case with a lot of DOS games), and they likely used their own proprietary software to convert that into the .CK# files.
Re: How were DOS games' graphics made?
I posted here about my experience with Deluxe Paint Animation to recreate the authentic look of the artwork from back then.
However, since then I've found that using mtpaint with a custom configuration is faster, and with less hassle.
I think I've only sent my instructions for that to Nisaba in 2019, though... I should really compile what I learned into a public mini-tutorial for others to use...
I've only done EGA graphics, though, like in Keen Galaxy. No idea about the best way to do something like the Jazz Jackrabbit ones.
However, since then I've found that using mtpaint with a custom configuration is faster, and with less hassle.
I think I've only sent my instructions for that to Nisaba in 2019, though... I should really compile what I learned into a public mini-tutorial for others to use...
I've only done EGA graphics, though, like in Keen Galaxy. No idea about the best way to do something like the Jazz Jackrabbit ones.
Member since at least 1998 with... ah... some long absences. I was even a moderator at one point. I'll probably keep coming back here and there as long as this place still exists.
- Spikenexus
- Vortininja
- Posts: 59
- Joined: Thu Nov 01, 2007 2:37
- Location: Australia
Re: How were DOS games' graphics made?
I've always wondered what how the tiles and spites in DOS games like Keen were created. I had a go at creating a Keen 4 mod many years ago and solely used the Win98 version of MS Paint (which I assumed the Keen artists did not use).
I missed this post the first time around, definitely going to give mtpaint a try. Perhaps I'll finish my mod in the next 20 years with the help of it (it's been 18 years since I started it...)!
Re: How were DOS games' graphics made?
Ok, here's my guide. I hope it helps someone!
Originally sent to Nisaba on PCKF in a PM on Fri May 10, 2019 3:14, and edited in 2023. I may add this to the Keenwiki or Moddingwiki if it seems useful and there are no major problems. One major thing I'm unsure about is how transparency works for Keen sprites - is one of the 16 EGA colors designated "transparent", or how does it work? Would appreciate a tip from someone who's done it... (I've only used this for working on a level background, and was hyper-focused on that use-case)
Also, I still think it's a good idea to try out Deluxe Paint Animation + Pictview (as described in my earlier post), just to see what limits the original artists were working under. Once you do that, use mtpaint to reproduce those limits while saving yourself some time!
---
mtpaint may seem at first glance a little odd. But once you get it set up (which this guide is designed to help you do), it's actually really easy to get going and it will save you tons of time compared to using more common graphics programs.
Download and install mtpaint v3.50 from here. Then open it.
Setting Shortcuts
Go to
Help>Keyboard Shortcuts
And change things to the following (if it's not already already set like that):
Set Previous/Next pattern to S and D,
Smaller/Larger Brush to W and E.
Reassign "choose colour" from "E" to "C", and reassign the line tool from "D" to "L".
Setting Shading/Dithering Patterns
I remember when I tried reproducing the Keen shading patterns by meticuously using the cut+paste tool in Microsoft Paint and really carefully trying to keep things aligned. Thankfully, there's a much better way! (A lot of mods have gotten this wrong also, probably because they weren't using the right tools)
The mtpaint handbook describes what patterns are here - for shading in EGA, they're essential. Now, mtpaint already comes with some, but they need to be modified, as one of them's misaligned. Here are the ones I've been using (almost like the original Keen, but rotated, to match the ones that show when using the dither tool in mtpaint):
Copy+paste the following text:
And save it as "keenpatterns.xbm" (or some other name ending in ".xbm"), perhaps save it in the mtpaint installation directory so it's easy to find.
Then go to
Image>Preferences>Paths>Default Patterns
and choose the .xbm file you just created.
You can also open the .xbm file in mtpaint and edit the patterns yourself to whatever you want.
To make that process easier,
View>Configure Grid>[Check] "Tile Grid", Select "8" for "Tile Width" and "Tile Height" (each pattern is an eight-tile square, this makes them easy to see when editing the .xbm file).
Setting the Palette
You'll want the palette to match the standard 16-color EGA palette.
Copy the following text into an empty file named "EGApalette.txt" (or something else with the ".txt" extension):
Then, in mtpaint, go to
Palette>Load
and load the file you just saved.
General mtpaint usage (simplified):
- Select the "pencil" tool
- Left-click is Colour A
- Right-click is Colour B
- Click to the right of any palette colour to "protect" that colour (so you can't paint over it)
Use the W/E and S/D brush and patterns hotkeys to quickly paint using dithered shading in a Commander Keen style.
- Oh, and if you use the "previous pattern" hotkey to go "earlier" than the earliest pattern, you can select from the full range of 17 patterns making up the Bayer 8x8 dither (you can't directly select them with the mouse though, not in this version).
- I haven't needed to use layers, so I don't know how they work (it's a bit different from other programs I've used, I think), but it's described here. Layers can also be used to create animations, described here.
Copy+Pasting images from another program into mtpaint:
- Select image, Ctrl+C, open mtpaint,
Edit>Load Clipboard from System, Ctrl+V
- If it doesn't paste, you may be editing an indexed image file.
Image>Convert to RGB
in mtpaint, then try again.
Copy+Pasting images from mtpaint into another mtpaint window, or from mtpaint into another program:
- Select image, Ctrl+C, Edit>Export Clipboard to System
- If in another program, Ctrl+V
- If in mtpaint, Edit>Load Clipboard from System, Ctrl+V
- Note: in v3.49.14 (which I originally wrote the guide for), this didn't work yet in windows! You needed to save the file and open it in another program directly. I think it works in v3.50, though...
Image tracing:
A useful feature if you want to use reference images for your pixel art, or want to draw it traditionally first. It's described in the manual here. Please note that you'll have to decide which of your palette colors is set to "transparent" (it's "0" aka. "black" in the handbook, but you could choose any number from 0-15 if using the 16-color EGA palette).
Originally sent to Nisaba on PCKF in a PM on Fri May 10, 2019 3:14, and edited in 2023. I may add this to the Keenwiki or Moddingwiki if it seems useful and there are no major problems. One major thing I'm unsure about is how transparency works for Keen sprites - is one of the 16 EGA colors designated "transparent", or how does it work? Would appreciate a tip from someone who's done it... (I've only used this for working on a level background, and was hyper-focused on that use-case)
Also, I still think it's a good idea to try out Deluxe Paint Animation + Pictview (as described in my earlier post), just to see what limits the original artists were working under. Once you do that, use mtpaint to reproduce those limits while saving yourself some time!
---
mtpaint may seem at first glance a little odd. But once you get it set up (which this guide is designed to help you do), it's actually really easy to get going and it will save you tons of time compared to using more common graphics programs.
Download and install mtpaint v3.50 from here. Then open it.
Setting Shortcuts
Go to
Help>Keyboard Shortcuts
And change things to the following (if it's not already already set like that):
Set Previous/Next pattern to S and D,
Smaller/Larger Brush to W and E.
Reassign "choose colour" from "E" to "C", and reassign the line tool from "D" to "L".
Setting Shading/Dithering Patterns
I remember when I tried reproducing the Keen shading patterns by meticuously using the cut+paste tool in Microsoft Paint and really carefully trying to keep things aligned. Thankfully, there's a much better way! (A lot of mods have gotten this wrong also, probably because they weren't using the right tools)
The mtpaint handbook describes what patterns are here - for shading in EGA, they're essential. Now, mtpaint already comes with some, but they need to be modified, as one of them's misaligned. Here are the ones I've been using (almost like the original Keen, but rotated, to match the ones that show when using the dither tool in mtpaint):
Copy+paste the following text:
Code: Select all
#define original_xbm_patterns_width 80
#define original_xbm_patterns_height 80
static unsigned char original_xbm_patterns_bits[] = {
0x00, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, 0x77, 0xFF, 0x33, 0x00, 0x00,
0x00, 0x22, 0xAA, 0xBB, 0xFF, 0xFF, 0xFF, 0x33, 0x00, 0x44, 0x55, 0x55,
0x55, 0x55, 0x55, 0xDD, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x88, 0xAA, 0xEE,
0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, 0x77,
0xFF, 0x33, 0x00, 0x00, 0x00, 0x22, 0xAA, 0xBB, 0xFF, 0xFF, 0xFF, 0x33,
0x00, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0xDD, 0xFF, 0xCC, 0x00, 0x00,
0x00, 0x88, 0xAA, 0xEE, 0xFF, 0xFF, 0xFF, 0xCC, 0xC3, 0xC0, 0x40, 0x44,
0xC1, 0xE3, 0x00, 0x30, 0x00, 0x33, 0xE1, 0x60, 0x20, 0x22, 0x63, 0xF7,
0x22, 0xCC, 0x66, 0x0C, 0xF0, 0x30, 0x10, 0x11, 0x36, 0x7F, 0x11, 0x03,
0x66, 0x33, 0x78, 0x18, 0x08, 0x88, 0x1C, 0x3E, 0x88, 0x00, 0x00, 0xC0,
0x3C, 0x0C, 0x04, 0x44, 0x1C, 0x3E, 0x00, 0x30, 0x00, 0x33, 0x1E, 0x06,
0x02, 0x22, 0x36, 0x7F, 0x22, 0xCC, 0x66, 0x0C, 0x0F, 0x03, 0x01, 0x11,
0x63, 0xF7, 0x11, 0x03, 0x66, 0x33, 0x87, 0x81, 0x80, 0x88, 0xC1, 0xE3,
0x08, 0x00, 0x00, 0xC0, 0x0F, 0x03, 0x01, 0x11, 0x41, 0x55, 0x00, 0x6C,
0x0F, 0x03, 0x1E, 0x06, 0x02, 0x22, 0x22, 0x22, 0x08, 0xC6, 0x0F, 0x0C,
0x3C, 0x0C, 0x04, 0x44, 0x14, 0x55, 0x11, 0x93, 0x0F, 0x30, 0x78, 0x18,
0x08, 0x88, 0x08, 0x88, 0x22, 0x39, 0x0F, 0xC0, 0xF0, 0x30, 0x10, 0x11,
0x14, 0x55, 0x00, 0x6C, 0xF0, 0x03, 0xE1, 0x60, 0x20, 0x22, 0x22, 0x22,
0x88, 0xC6, 0xF0, 0x0C, 0xC3, 0xC0, 0x40, 0x44, 0x41, 0x55, 0x11, 0x93,
0xF0, 0x30, 0x87, 0x81, 0x80, 0x88, 0x80, 0x88, 0x22, 0x39, 0xF0, 0xC0,
0x00, 0x00, 0x00, 0x02, 0x22, 0xFF, 0x11, 0x10, 0x00, 0x88, 0xFF, 0xFF,
0xFF, 0x02, 0x22, 0xFF, 0x00, 0x38, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02,
0x22, 0x03, 0x10, 0x7C, 0x00, 0x44, 0x00, 0x00, 0xFF, 0x02, 0x22, 0x03,
0x00, 0xFE, 0x18, 0x44, 0x00, 0x00, 0x00, 0x02, 0x22, 0x03, 0x55, 0xEF,
0x18, 0x22, 0x00, 0xFF, 0xFF, 0x02, 0x22, 0x03, 0x00, 0xC7, 0x00, 0x22,
0x00, 0x00, 0x00, 0x02, 0x22, 0x03, 0x10, 0x83, 0x00, 0x11, 0x00, 0x00,
0xFF, 0x02, 0x22, 0x03, 0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x22, 0x02,
0x22, 0x02, 0x22, 0x00, 0x08, 0x11, 0x55, 0x55, 0xDD, 0x00, 0x00, 0x55,
0x55, 0x55, 0x14, 0x11, 0x00, 0x00, 0x22, 0x02, 0x22, 0x02, 0x22, 0x00,
0x2A, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55, 0x22,
0x00, 0x00, 0x22, 0x02, 0x22, 0x02, 0x22, 0x82, 0x2A, 0x44, 0x00, 0x55,
0xDD, 0x00, 0x00, 0x00, 0x55, 0x44, 0x14, 0x44, 0x00, 0x00, 0x22, 0x02,
0x22, 0x02, 0x22, 0x28, 0x08, 0x88, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x88, 0x00, 0x00, 0xAA, 0x06, 0x66, 0x02, 0x22, 0x08,
0x08, 0xC0, 0xFF, 0xFF, 0xAA, 0x06, 0x66, 0xFF, 0xFF, 0x1C, 0x1C, 0x30,
0xFF, 0xFF, 0xAA, 0x06, 0x66, 0x02, 0x22, 0x3E, 0x3E, 0x0C, 0x00, 0x00,
0xAA, 0x06, 0x66, 0x02, 0x22, 0xFF, 0x7F, 0x03, 0x00, 0x00, 0xAA, 0x06,
0x66, 0x02, 0x22, 0x3E, 0x3E, 0xC0, 0x00, 0xFF, 0xAA, 0x06, 0x66, 0x02,
0xFF, 0x1C, 0x1C, 0x30, 0x00, 0xFF, 0xAA, 0x06, 0x66, 0x02, 0x22, 0x08,
0x08, 0x0C, 0x00, 0x00, 0xAA, 0x06, 0x66, 0x02, 0x22, 0x08, 0x00, 0x03,
0x71, 0x18, 0x00, 0x00, 0x80, 0x11, 0xEE, 0x08, 0x08, 0x38, 0xBB, 0x0C,
0x10, 0x00, 0x80, 0x11, 0x19, 0x14, 0x14, 0x22, 0x17, 0x06, 0x20, 0x20,
0xAA, 0x11, 0x1F, 0x22, 0x22, 0x0E, 0x0E, 0x13, 0x40, 0x50, 0x14, 0x11,
0x1F, 0xC1, 0xC9, 0x22, 0x1D, 0x30, 0x00, 0x00, 0x08, 0x0A, 0xEE, 0x22,
0x22, 0x38, 0xBB, 0x60, 0x04, 0x00, 0x08, 0x04, 0x91, 0x14, 0x14, 0x22,
0xD1, 0xC0, 0x02, 0x02, 0xAA, 0x40, 0xF1, 0x08, 0x08, 0x0E, 0xE0, 0x80,
0x01, 0x05, 0x41, 0xA0, 0xF1, 0x08, 0x08, 0x22, 0xFF, 0x0F, 0x00, 0x00,
0x00, 0x00, 0xC7, 0x08, 0x08, 0x00, 0xFF, 0x0F, 0x10, 0x6C, 0x10, 0x38,
0x01, 0x14, 0x14, 0x77, 0xFF, 0x0F, 0x38, 0xFE, 0x38, 0x38, 0x01, 0x22,
0x22, 0x22, 0xFF, 0x0F, 0x7C, 0xFE, 0x7C, 0xD6, 0x82, 0x41, 0x49, 0xAA,
0x00, 0x0F, 0x7C, 0x7C, 0xFE, 0xFE, 0x7C, 0x22, 0x22, 0x88, 0x00, 0x0F,
0x38, 0x38, 0xD6, 0xD6, 0x10, 0x14, 0x14, 0xDD, 0x00, 0x0F, 0x10, 0x10,
0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x10, 0x10,
0x28, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x21, 0x88, 0x10, 0x08, 0x88,
0x20, 0x04, 0x81, 0x7E, 0x7E, 0x12, 0x44, 0x20, 0x04, 0x88, 0x20, 0x24,
0xA5, 0x42, 0x42, 0x84, 0x22, 0x50, 0x0A, 0x8F, 0x20, 0xEE, 0x81, 0x5A,
0x42, 0x48, 0x11, 0x88, 0x11, 0x88, 0xFF, 0x20, 0x81, 0x5A, 0x42, 0x21,
0x44, 0x05, 0xA0, 0x88, 0x02, 0x04, 0xBD, 0x42, 0x42, 0x12, 0x88, 0x02,
0x40, 0x88, 0x02, 0x77, 0x81, 0x7E, 0x7E, 0x84, 0x11, 0x04, 0x20, 0xF8,
0x02, 0x24, 0xFF, 0x00, 0x00, 0x48, 0x22, 0x08, 0x10, 0x88, 0xFF, 0x20,
0x00, 0x00, 0x11, 0x80, 0x01, 0x77, 0x71, 0x14, 0x00, 0x22, 0x02, 0xAA,
0x44, 0x80, 0x01, 0x51, 0x33, 0x36, 0x00, 0x2E, 0x00, 0x00, 0x11, 0xC0,
0x03, 0x57, 0x17, 0x77, 0xFF, 0x22, 0x00, 0x55, 0x44, 0x21, 0x84, 0x00,
0x00, 0x00, 0x88, 0x3A, 0x00, 0x00, 0x11, 0x12, 0x48, 0x75, 0x74, 0x77,
0xAA, 0x22, 0x00, 0xAA, 0x44, 0x0C, 0x30, 0x45, 0x66, 0x36, 0x22, 0x2E,
0x00, 0x00, 0x11, 0x30, 0x0C, 0x77, 0x47, 0x14, 0xFF, 0x22, 0x00, 0x55,
0x44, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3A };
Then go to
Image>Preferences>Paths>Default Patterns
and choose the .xbm file you just created.
You can also open the .xbm file in mtpaint and edit the patterns yourself to whatever you want.
To make that process easier,
View>Configure Grid>[Check] "Tile Grid", Select "8" for "Tile Width" and "Tile Height" (each pattern is an eight-tile square, this makes them easy to see when editing the .xbm file).
Setting the Palette
You'll want the palette to match the standard 16-color EGA palette.
Copy the following text into an empty file named "EGApalette.txt" (or something else with the ".txt" extension):
Code: Select all
16
0,0,0
0,0,170
0,170,0
0,170,170
170,0,0
170,0,170
170,85,0
170,170,170
85,85,85
85,85,255
85,255,85
85,255,255
255,85,85
255,85,255
255,255,85
255,255,255
Palette>Load
and load the file you just saved.
General mtpaint usage (simplified):
- Select the "pencil" tool
- Left-click is Colour A
- Right-click is Colour B
- Click to the right of any palette colour to "protect" that colour (so you can't paint over it)
Use the W/E and S/D brush and patterns hotkeys to quickly paint using dithered shading in a Commander Keen style.
- Oh, and if you use the "previous pattern" hotkey to go "earlier" than the earliest pattern, you can select from the full range of 17 patterns making up the Bayer 8x8 dither (you can't directly select them with the mouse though, not in this version).
- I haven't needed to use layers, so I don't know how they work (it's a bit different from other programs I've used, I think), but it's described here. Layers can also be used to create animations, described here.
Copy+Pasting images from another program into mtpaint:
- Select image, Ctrl+C, open mtpaint,
Edit>Load Clipboard from System, Ctrl+V
- If it doesn't paste, you may be editing an indexed image file.
Image>Convert to RGB
in mtpaint, then try again.
Copy+Pasting images from mtpaint into another mtpaint window, or from mtpaint into another program:
- Select image, Ctrl+C, Edit>Export Clipboard to System
- If in another program, Ctrl+V
- If in mtpaint, Edit>Load Clipboard from System, Ctrl+V
- Note: in v3.49.14 (which I originally wrote the guide for), this didn't work yet in windows! You needed to save the file and open it in another program directly. I think it works in v3.50, though...
Image tracing:
A useful feature if you want to use reference images for your pixel art, or want to draw it traditionally first. It's described in the manual here. Please note that you'll have to decide which of your palette colors is set to "transparent" (it's "0" aka. "black" in the handbook, but you could choose any number from 0-15 if using the 16-color EGA palette).
Member since at least 1998 with... ah... some long absences. I was even a moderator at one point. I'll probably keep coming back here and there as long as this place still exists.
-
Violet CLM
- Vortininja
- Posts: 34
- Joined: Sun Nov 04, 2007 10:14
Re: How were DOS games' graphics made?
Tilesets for both Jazz 1 and Jazz 2 were drawn in Deluxe Paint. Jazz 2 ships with many of the .anm files for both games that were later converted into the games' preferred tile formats (with additional information like palettes and collision masks). The Deluxe Paint resolution was 320x200, which is a 10x6 area of 32x32 tiles, and if you look closely at both games' tilesets you can see signs they were drawn in 10x6 chunks. Jazz 1's tileset files even explicitly come in only four sizes: 10x6, 10x12, 10x18, and 10x24.
Re: How were DOS games' graphics made?
Hi Snortimer,
Thanks for your guide here. I am working on a little animated cutscene and I wanted to use Dpaint Animation to do it in order to make it have that look. I've spent a few hours drawing images, but it's not jumping out to me exactly how to use it and I have no manual and can't find one online.
After seeing this, it seems like maybe I should just use mtpaint and alter it as per your guide in order to mimic Dpaint Animation, but not have to mess around in DOSBox and all.
What's your opinion of doing pixel art animations with this old software at this point? Do you still think using mtpaint is the way to go?
My last project was done entirely with ASCII characters and I used a program called Rexpaint to do layers and then I exported frames from them and created some various Python scripts to grab, order, manipulate and export the files as mp4s. There's a library called pygame that works well for that, and of course FFMPEG.
But this time I want more colors and resolution, and I've always been curious about Dpaint Animation. Something makes me kind of just want to use it in order to fulfill that curiosity, but then it seems like mtpaint would have some serious advantages in terms of managing file types in Python and so forth. Maybe even it has some layering and history I suppose?
In any case, thanks for your guide.
Re: How were DOS games' graphics made?
Hi there, I'm really glad that the guide is useful to someone!vol.2 wrote: Sun Mar 29, 2026 22:11What's your opinion of doing pixel art animations with this old software at this point? Do you still think using mtpaint is the way to go?
I haven't actually tried doing animation with either (only static pixel art), but I'll point you to what I wrote previously regarding Deluxe Paint Animation:
Layers and multiple undos in particular seem like they might be useful, as well as being able to use more easily convertible file types, as you noted below:Snortimer wrote: Sun Mar 31, 2019 2:10Deluxe Paint Animation only opens images in LPM format, which is quite rare. The only program I found which could convert a modern image file format (such as GIF) into LPM is the DOS version of Pictview, which I'm using through DOSBox.
[...] clicking the right mouse button paints a solid stroke of the secondary colour, which is more useful than mtpaint's behaviour (where it paints the same pattern but in reverse).
The disadvantages of Deluxe Paint Animation are that there seems to be no way to protect colours (for example, so that I don't paint over the black outlines or blue sky) as in mtpaint, nor are there layers, and there's only one "undo".
And of course, using hotkeys to cycle up/down between the dithering patterns rather than having to use the mouse to select them each time. Although, I have realized since that it would be even MORE convenient if I could assign specific keys to directly select specific patterns rather than having to cycle up/down each time, quick though that is. But I never got around to requesting that feature...vol.2 wrote: Sun Mar 29, 2026 22:11But this time I want more colors and resolution, and I've always been curious about Dpaint Animation. Something makes me kind of just want to use it in order to fulfill that curiosity, but then it seems like mtpaint would have some serious advantages in terms of managing file types in Python and so forth. Maybe even it has some layering and history I suppose?
I should also mention that I found the mtpaint developer to be quite friendly and unusually willing to add well-thought-through features requested by an artist. This was years ago, though.
Mtpaint can do all sorts of things that are not what you're after, so you do need to be deliberate about which features you use and which you don't. That's why I suggested starting in Deluxe Paint Animation first, then once you've figured out what you're doing, move to mtpaint to speed things up.
I don't remember Deluxe Paint Animation to be especially unintuitive, though. What is giving you trouble? (to be honest, I found mtpaint to be much more unintuitive when I tried it without reading the manual, since a number of things such as copy+pasting didn't work how they do in most other software).
P.S. Nobody has yet answered my question from earlier in the thread:
One major thing I'm unsure about is how transparency works for Keen sprites - is one of the 16 EGA colors designated "transparent", or how does it work?
Member since at least 1998 with... ah... some long absences. I was even a moderator at one point. I'll probably keep coming back here and there as long as this place still exists.
Re: How were DOS games' graphics made?
Yes, at this point, I agree. Since I left the reply, I have banged on Dpaint Animation a lot more and figured out how to do a lot more with it. Mtpaint, by contrast, does have a lot more function clutter that I will never use, and gets in the way of efficiency.Snortimer wrote: Wed Apr 01, 2026 9:26 I don't remember Deluxe Paint Animation to be especially unintuitive, though. What is giving you trouble? (to be honest, I found mtpaint to be much more unintuitive when I tried it without reading the manual, since a number of things such as copy+pasting didn't work how they do in most other software).
Still though, I am running into some problems with figuring out the perspective operations in Dpaint Animation. In regular Dpaint II Enhanced, there is a whole separate Perspective menu that allows you to fine tune the direction your brushes extend towards. Dpaint Animation doesn't have this at all, and simply relies on a combination of setting the base parameters of the perspective and the Move menu commands.
I'm not sure you would have really had any issues with this stuff just doing 2D artwork, so it makes sense that you wouldn't find it a limitation.
In fact, I'm still not sure it's a limitation for me, but I have been going through the tutorials in Dpaint III for Amiga (with animation included), and I had to skip the whole section on the perspective commands because it's not in Dpaint Animation. I also still don't have the manual, so I'm relying on Dpaint III for the Amiga to understand the more complex animation commands, and it's not mapping 1:1, which is super annoying and takes a lot of trial and error to figure out. The menus are rearranged a lot and etc, etc.
What's more, I have realized that the PAR is starting to become a question for me. As far as I can tell, Dpaint is only 320x200 1.6 PAR, and mtpaint only does square pixels. I can correct for it in post, but it could make a difference if I want the end product to be displayable on a consumer TV at 240p (say through a console emulator or something), or maybe something else. A PC 13h capable monitor is unlikely to be the target display for this in most cases.
So I have some thinking to do there.
P.S. Nobody has yet answered my question from earlier in the thread:One major thing I'm unsure about is how transparency works for Keen sprites - is one of the 16 EGA colors designated "transparent", or how does it work?
I did my best to figure this out and this is the closest I could get. Basically, they probably had to pick a sacrificial color in Dpaint that would be recognized as "transparent;" I can't intuit any way around that. However, I don't think it worked like it would for 256 color, where the chosen index would be handled by the game engine as transparent. I think in the case of CK, they took that color and IGRAB would use it to generate a transparency plane in addition to the regular scene. I can't seem to find the source code to IGRAB anywhere out there, but there's indication that it was released at some point. Not sure if it exists alongside any of the source code dumps Id has done over the years (it probably does).
- Multimania
- Vortininja
- Posts: 100
- Joined: Sat Nov 10, 2007 8:10
- Location: Hiding in a small, cramped corner of the BwB megarocket.
- Contact:
Re: How were DOS games' graphics made?
The original Keen (4–6, at least) graphics used two separate DPAINT images, one of which was a black-and-white mask. IGRAB would combine these together.vol.2 wrote: Wed Apr 01, 2026 15:46I did my best to figure this out and this is the closest I could get. Basically, they probably had to pick a sacrificial color in Dpaint that would be recognized as "transparent;" I can't intuit any way around that. However, I don't think it worked like it would for 256 color, where the chosen index would be handled by the game engine as transparent. I think in the case of CK, they took that color and IGRAB would use it to generate a transparency plane in addition to the regular scene. I can't seem to find the source code to IGRAB anywhere out there, but there's indication that it was released at some point. Not sure if it exists alongside any of the source code dumps Id has done over the years (it probably does).P.S. Nobody has yet answered my question from earlier in the thread:One major thing I'm unsure about is how transparency works for Keen sprites - is one of the 16 EGA colors designated "transparent", or how does it work?
Basically, the graphics were broken up into 320×200 screens which were loaded with the IGRAB "load" command, and then split into individual tiles/sprites/bitmaps/etc with other igrab commands.
So, for (e.g.) the map icons, there was a "load icons" command, which would load (for EGA) an ICONSE.LBM file containing the graphics, and an ICONSME.LBM file containing the corresponding masks.
This, for instance, is the ICONSE.LBM file from Keen Dreams:
The IGRAB source code was included within the TED5 code dump, in the TEDTILES/IGRABSRC.ZIP file. I've uploaded a copy here.
-
The_Guy222
- Grunt
- Posts: 28
- Joined: Tue Sep 17, 2024 19:40
Re: How were DOS games' graphics made?
These are amazing, high-quality posts. What a treasure trove of information on how these games were made!
One of those Youtube channels that handles retrogaming or something should do a special on how Keen/Biomenace and other EGA games of the time utilized Deluxe Paint and special software to draw and animate the graphics, and how the games loaded the graphics.
One of those Youtube channels that handles retrogaming or something should do a special on how Keen/Biomenace and other EGA games of the time utilized Deluxe Paint and special software to draw and animate the graphics, and how the games loaded the graphics.




