VOGONS


First post, by kolano

User metadata
Rank Oldbie
Rank
Oldbie

Counter to my original presumption, this title does work with official releases. My problem seems regulated to builds /w patches, ykhwong's in particular. I presume such is related to one of that build's various patches, though I'm unclear which may be at fault. I also expect further discussion here to be closed, unless someone is able to identify the specific problematic patch.

The shareware game Megatron...
http://www.dosgamesarchive.com/download/megatron-vga/
...runs under DOSBox (tested with .74 and r3686), but in ykhwong's SVN as well as the MB6 releases the game immediately crashes to a DOS prompt with the error...
File "vol000.pix" is missing!

Last edited by kolano on 2011-04-12, 13:43. Edited 8 times in total.

Reply 1 of 8, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The shareware version you linked runs fine for me in 0.72, 0.73, and 0.74 with default settings. Tried choosing both Vulture and Mad Cat before moving around in the maze; no sign of a problem. Also tried marking all the game files as read-only, but still no error. Telling you this doesn't solve the problem, but at least there is no general compatibility issue.

Try all default settings in DOSBox; and if the error persists, please list everything you do to run the game with the exact MOUNT lines.

Reply 4 of 8, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

...runs under DOSBox (tested with .74)

Then use the official release if it works there.

Reply 5 of 8, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

When programs open files or devices, the first handle number given by DOS is normally 5, with the lower numbers pre-assigned to devices. Official DOSBox sources emulate the behavior correctly, but in ykhwong's build the first handle given is 4. Most programs won't care, but Megatron gets confused.

The issue is also in MegaBuild 6, so it seems likely to have migrated to/from there. Perhaps this information will help the maintainers of the custom builds to find what needs to be fixed.

Reply 6 of 8, by ykhwong

User metadata
Rank Oldbie
Rank
Oldbie
ripsaw8080 wrote:

The issue is also in MegaBuild 6, so it seems likely to have migrated to/from there. Perhaps this information will help the maintainers of the custom builds to find what needs to be fixed.

Yes, I have borrowed many part from MB6 source. Similiar issue also occurs when trying to install LBA2 in C:\.

kolano, custom builds of DOSBox are not officially supported here or by developers. You can see a notice "Do not report any bug to developers because these builds are experimental and NOT officially supported." on my website. Similiar warnings may exist on some other websites that provide unofficial SVN builds. I'll take a look at the source when time allows. You may also have to contact with h-a-l-9000 for the file missing error.

Reply 7 of 8, by kolano

User metadata
Rank Oldbie
Rank
Oldbie
ykhwong wrote:

kolano, custom builds of DOSBox are not officially supported here or by developers. You can see a notice "Do not report any bug to developers because these builds are experimental and NOT officially supported." on my website. Similiar warnings may exist on some other websites that provide unofficial SVN builds. I'll take a look at the source when time allows. You may also have to contact with h-a-l-9000 for the file missing error.

I'm aware, and wouldn't have posted this had I realized it only occurred in the patched builds. Figured it might be good to identify the issue more specifically though, since the post existed anyway.

The issue also effects the PC Demo "Fluid motion" by Valhalla...
http://pouet.net/prod.php?which=3535
...which is unable to save it's config file under patched builds.

Reply 8 of 8, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

This code in shell.cpp sets up the file handle table in the shell's PSP, which is copied into all child PSPs:

/* The start of the filetable in the psp must look like this:
* 01 01 01 00 02
* In order to achieve this: First open 2 files. Close the first and
* duplicate the second (so the entries get 01) */
Bit16u dummy=0;
DOS_OpenFile("CON",OPEN_READWRITE,&dummy); /* STDIN */
DOS_OpenFile("CON",OPEN_READWRITE,&dummy); /* STDOUT */
DOS_CloseFile(0); /* Close STDIN */
DOS_ForceDuplicateEntry(1,0); /* "new" STDIN */
DOS_ForceDuplicateEntry(1,2); /* STDERR */
DOS_OpenFile("CON",OPEN_READWRITE,&dummy); /* STDAUX */
DOS_OpenFile("CON",OPEN_READWRITE,&dummy); /* STDPRN */

In the custom builds the last device name is changed from "CON" to "PRN". If no printer devices are configured, the open fails and a handle entry is not created. By changing "parallel1=disabled" to "parallel1=file append:print.out", or some other setting that enables a printer, Megatron is happy because all expected device handle entries exist. So, there's a simple workaround.

This seems like an easy solution:

if (!DOS_OpenFile("PRN",OPEN_READWRITE,&dummy))   /* STDPRN */
DOS_OpenFile("CON",OPEN_READWRITE,&dummy);

A more complicated approach would change the PRN device to be openable when no printer is configured.