in Search
Welcome to Neopoleon - Sign in | Join | Help
Navigation: Home | Forums | Galleries

Review: Worst drawing program of all time (ever)

It’s easy enough nowadays to find a good drawing program, but it’s not so easy to find one that’s well suited to those of us on a budget.

I love all these new-fangled fancypants image editors that make it possible to seamlessly add moustaches to old photos of your grandmother, but I don’t want to shell out hundred of dollars just so that I can express myself artistically. Art is for everybody. Art saves lives. The arts are not a luxury.

That’s why I was pleased to run across something that was right in my price range. Costing absolutely nothing, this application, simply titled “EG40.BAS”, is manna from heaven. Granted, it’s from the days of DOS and is a tad on the low-res side of things, but it’s free. Only thing I can’t figure out is the meaning of “EG40.BAS” – I don’t know what that’s a reference to. Could be some kind of commie code or something. The file extension clearly indicates that this is an open source program written in BASIC, but the name itself is a mystery.

Oh, well.

I decided to test the application by performing a standard artistic benchmark: The recreation of Botticelli's Birth of Venus from start to finish. I figure that’ll give me a chance to sample most of the program’s features.

My goal, then, is to end with something like this:

Birth_of_Venus

Seems doable.

Getting started

I happen to have a copy of DOS running under Virtual PC on my Mac, and I decided that the proper way to perform this test would be under that environment. Nothing, I think, could more faithfully reproduce the experience of a 4.77Mhz IBM PC with a CGA card than a high-powered modern computer set up to emulate hardware that’s decades old and architecturally alien.

It was easy enough to get the program running. I started up a BASIC interpreter, used the “F3” macro to load the file, and then hit “F2” to run it.

Perhaps not an example of good user interface design, the startup screen for EG40 is nevertheless simple:

BasicDrawingProg_1

You’re presented with a blinking green cursor. From the size of the sucker, I’d guess that we’re running in a 40 character wide text mode.

That’s OK. I think I can draw the Birth of Venus with those limitations. A true artist rises to the challenge.

Laying the foundation

It took me about twenty minutes to get from the blank start up screen to this one:

Virtual PCScreenSnapz002

I didn’t know how to make the program draw, so I dropped into the code (open source!) and figured out what was going on. It was a spaghetti mess, but I found an INKEY$ loop where keyboard input was being monitored.

The cursor is navigated using the numeric keypad, but you have to have NUM-LOCK on for it to work. To put the “pen” down on the “canvas”, you have to hit “D”. Note that it’s case-sensitive. For the various commands to work, you also need CAPS-LOCK on.

That’s all right, though. Remember: This sucker’s free. Some poor bastard put this thing together in his spare time.

Also note that there’s a color changing feature. You can see it in action in the screenshot above. After hitting “C” the app will ask you to enter in a number corresponding to the text-mode color you’d like. I think there’s a total of 16 colors if we include black.

But things are going well, I’d say. I may only have the beginnings of Venus drawn, and that may have taken me twenty minutes, but most of that was the learning curve associated with figuring out that I had to have CAPS-LOCK on.

Saving your work

Once you’re done futzing around and you’ve gotten serious about your endeavor, you’d better start saving.

After drawing the clam shell beneath Venus, I knew I’d hit a milestone, and decided to save. Having already examined the code, I knew that this was accomplished with a simple “S”:

Virtual PCScreenSnapz004

I entered the name “BOV” which stands for “Birth of Venus”, but you probably already figured that out.

The save mechanism worked well, producing a binary file about 17k in size. Although this is larger than many JPG images of the same dimensions, it’s still quite acceptable. If you were to forward one of these images to a friend, for example, you wouldn’t find her complaining about her mailbox being cluttered with gigantic attachments. She wouldn’t be able to open the file, but that’s her problem.

I also found that, regardless of image detail, the file is always 17k. This is due to the method used to store the image, that being a direct dump of the first (roughly) 17k of video memory to file. It’s wasteful for undetailed images, but keep in mind that I could completely recreate the Birth of Venus, and it would still only be a 17k file. That’s pretty cool. Museums should be interested in this application for its potential as an archiving aid.

Looking for tools

When I got to work creating the landscape background, I started to run up against EG40’s limitations. For example, I had to draw the broad, sweeping sea with the same “brush” I used on Venus herself. While the precision of the block by block accuracy of the cursor is great for doing finely detailed work like Venus, it’s woefully malsuited to larger, more repetitive sections of the work.

Take a look at this:

Virtual PCScreenSnapz005

I had to do all that green and blue by hand – by hand. There’s no “fill” feature here, and I know because I repeatedly hit “F” trying to make something happen.

One solution to the problem I considered was to draw the outline of the sea, take a screenshot of my progress, import it into MS Paint, use Paint’s powerful fill feature, save it, and then get the picture back into EG40 where I could finish the job.

You’ve probably already hit on the problem, though: EG40 isn’t compatible with MS Paint file formats, so you’re screwed if you go this route.

It’s weird because you’d think that an open source app like this would also support common file formats, but no beans. My guess is the author intended on getting the world hooked on his drawing program, convincing people that his binary format was “all that,” and then closing the source, locking the doors, and charging like crazy for future copies and upgrades after retroactively revoking its freeware status.

Sleazy.

Speaking of the author…

I think I was about eight or nine when I wrote EG40. It was around about that time that I became obsessed with drawing programs. EG40 was my first, and I went on to write about ten more, ending with my grand masterpiece: A VGA drawing program that used the mouse. It was pretty h4x0ring cool.

Although I’ve lost most of the code that I wrote when I was a kid, I’ve managed to carry a good sampling with me through the years, having transferred it from 5 1/4 inch floppies to 3 1/2 inch floppies, then to various hard drives, and finally to CD (with HD backups).

The code is, understandably, awful, but it’s cool to still have my childhood code after all these years.

If you’re interested, you can grab the source here. Feel free to make improvements to it, but understand that nothing gets committed to the main source tree without my approval.

Published Tuesday, June 21, 2005 8:37 PM by Rory

Filed Under: ,

Comments

 

Daniel said:

Can we please see the final version of BoV?

If you want a good drawing program for free, try Paint.Net: http://www.eecs.wsu.edu/paint.net/
June 21, 2005 8:56 PM
 

James Bogosian said:

Pfft... the author of this program didn't even bother to provide extensibility hooks for alternative input, like say a TabletPC!!

Seriously though, if for some reason you haven't seen ArtRage, go out and seen it: http://www.ambientdesign.com/artrage.html

That might just get us some fancy-painted Rory-comics.
June 21, 2005 9:25 PM
 

VentStation.com said:

Hey Rory

I was thinking of downloading the Microsoft Acrylic Beta at <a href="http://www.microsoft.com/products/expression/">http://www.microsoft.com/products/expression/</a> but now I don't think I need to, after seeing the stunning results you achieved in EG40.BAS. After snapping up Macromedia, I think Adobe are running the numbers on EG40.BAS as we speak.
June 21, 2005 11:32 PM
 

Robert said:

I like the user-input validation code. (Just telling the user not to enter anything over 16.)

Heh... here comes my SQL injection attacks!
June 22, 2005 12:04 AM
 

Earl said:

I heard the next version of EG40 will support XML file formats - can you confirm?
June 22, 2005 2:50 AM
 

mark said:

Your childhood code is as elegant as Bill's!

http://intepid.com/2004-11-04/15.30/
June 22, 2005 5:05 AM
 

Rory said:

mark -

"Your childhood code is as elegant as Bill's!"

Donkey was important to me - it's how I learned to XOR images over each other.

Plus, I used to like to play it (believe it or not).
June 22, 2005 5:37 AM
 

mark said:

...actually I should say your code is *more* elegant-- hard to believe it was written by a 9 year old!

BTW I note you even coded some support for animation in there-- you could have had venus waving, which is more than Botticelli could say ;)
June 22, 2005 5:56 AM
 

Bil Simser said:

Wow, 17k for a finely tuned, well crafted work of art like "Birth of Venus". I've also emailed the Smithsonian as this must be the answer to that age old question of having art hanging around exposed to the air and falling apart in the process.

Just hang an old TTY monitor on the wall and run this puppy. I can also see this as a huge boost to the art restoration effort. Once you capture something like the Mona Lisa in this, it'll take less than the time it took to write this comment to fix any errors that Leo did.

I can't wait for the new version where it supports colours 16-31 then we can start doing some Andy Warhol.
June 22, 2005 9:35 AM
 

Grant said:

"My guess is the author intended on getting the world hooked on his drawing program, convincing people that his binary format was “all that,” and then closing the source, locking the doors, and charging like crazy for future copies and upgrades after retroactively revoking its freeware status."

I think this is a commentary of how those with an agenda can find conspiracy in everything. That _is_ what it was right? At least that's what I got out of it.

Or maybe your agenda with the entire post was to discredit the Open Source movement in general and bash Linux in particular.

THAT’S WHAT YOU’RE DOING ISN’T IT RORY?!!!! YOU MICRO$OFTIE LINUX HAT3R SPEADING FUD!!!

Or maybe it was just a post about a program you wrote when you were 9.

:)
June 22, 2005 1:34 PM
 

Rory said:

mark -

"BTW I note you even coded some support for animation in there"

That feature is totally experimental. It also looks really inefficient.

To "animate" it just loads images off disk as they're needed - no attempt to cache anything, and no support for changing the FPS.

Use this feature at your own risk.
June 22, 2005 6:03 PM
 

Rory said:

Grant -

"THAT’S WHAT YOU’RE DOING ISN’T IT RORY?!!!! YOU MICRO$OFTIE LINUX HAT3R SPEADING FUD!!!"

Yeah... I want a new boat, and I figured that posting this would be the last nail in the Linux coffin, sending my stock through the roof.

I was going to cash out, a young bajillionaire, and go spend the rest of my days floating in tropical seas, remembering the day I took the general public for a ride with "that one post."

But you saw right through it.

I am defeated.
June 22, 2005 6:05 PM
 

Alex said:

I for one lost all my childhood code :( It was lots.
June 22, 2005 10:57 PM
 

Matthew said:

The critical point here is whether or not it runs faster on Intel or PowerPC chips. Sadly, my childhood code was lost to history. My best work was on my cousin's C64. My first opus was an ASCII art rocketship that would endlessly take off and blow up.
June 23, 2005 5:12 AM
 

TrackBack said:

Sounds Horridly Familiar
June 21, 2005 10:28 PM
 

TrackBack said:

Bad, bad, BAD user interface design
June 22, 2005 3:49 AM
 

TrackBack said:

Sounds Horridly Familiar
June 22, 2005 5:47 AM
 

TrackBack said:

Rory Blyth - Neopoleon.com
June 22, 2005 2:57 PM
New Comments to this post are disabled

About Rory

I *own* this site, you loser.