Adventure Game Studio

Community => General Discussion => Topic started by: Radiant on Sat 21/08/2010 23:15:00

Title: "Error in EXE file"
Post by: Radiant on Sat 21/08/2010 23:15:00
Well... I found this really old game I wrote on an old CD. It's written in QuickBasic 2.0, if I recall correctly, and compiled to a DOS executable requiring BASRUN. Out of nostalgia, I tried playing it again.

However, when I try to run it, it tells me "Error in EXE file", and aborts. It doesn't work in DosBox either.

Is there anyone here to whom this sounds familiar and that might be able to get the EXE to run? Thanks!
Title: Re: "Error in EXE file"
Post by: Leon on Sun 22/08/2010 13:27:17
Can you tell the name of the game? The I can give it a go.
Title: Re: "Error in EXE file"
Post by: Radiant on Sun 22/08/2010 14:01:07
http://crystalshard.net/test/ELEMENT.ZIP

The .RUN file is actually BASRUN.EXE, and the .OVL files are actually executables called by the main one, ELEMENT.EXE. It's a text adventure with CGA graphics.

I would appreciate your help in getting this to run.
Title: Re: "Error in EXE file"
Post by: Leon on Mon 23/08/2010 16:28:09
De 4 elementen..... crashed alleen bij het inlezen van de eerste .OVL :-(

Here's your solution:

Delete the .run file. This is the one causing the trouble. Find yourself a copy of brun20.exe (the one that's used when files are compiled with QuickBasic 2.0) and put it in the same dir. Then rename that brun20.exe to PJS-PC.RUN and Bob's your teapot...

I've found a copy of brun20.exe in this archive (http://www.waterengr.com/public-ftp/hydutils.exe) and was able to run the game on a genuine DOS (6.22) machine. Just checked it with DosBox which also works like a charm. But also crashes...

I'll see whether this is something related to memory or a programmatical error. 

Title: Re: "Error in EXE file"
Post by: Radiant on Tue 24/08/2010 00:34:34
Excellent, thank you!

It's probably the Basic CHAIN command that fails. If I recall correctly, it does a COMMON memory share so that it can keep the game state between the three other executables; the other executables will abort unless a certain variable is initialized in this shared memory. This setup was done because the game was too big to fit in QB's memory otherwise, back when nobody had heard of the term "gigabyte"...