VOGONS


First post, by fish

User metadata
Rank Newbie
Rank
Newbie

A lot of people seem to wish using Game Wizard or similar software in dosbox. It doesn't work. Dosbox's around quite some time until now. I think if it was easy to get these pieces of software to run, you would have done it.

Now what would be the clever way to go? write a dosbox-compatible freezer application? or is there a plugin api that enables me to write an external module? This way I could avoid taking up conventional memory (which was an issue with some games like st. thomas that needed about 600 k conventional memory).

Reply 1 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

dosbox has a debugger from itself. that one can not freeze memory but that functionality would be easy to add(as the debugger can allready break on memory changes)

most freeze application use the debugger registers on the cpu.
They are almost never used in games (maybe some extreme encryption/cdrom protection maybe)

Water flows down the stream
How to ask questions the smart way!

Reply 4 of 16, by fish

User metadata
Rank Newbie
Rank
Newbie

Qbix, does your post mean debugger registers are not implemented in dosbox [yet] ?

You mean, those programs would run if dosbox had these registers added or are there other parts which would need to be added?

Reply 5 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

dunno. debug registers are the most important.

but they will not be added i think. (might slow down a lot things.)
just stick to the dosbox debugger.
that one is much more powerful 😀 as it's completely in control of the machine (even time stops 😀

Water flows down the stream
How to ask questions the smart way!

Reply 6 of 16, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

To run gamewizard, you need to edit int10_memory.cpp,
fct INT10_SetupRomMemory and change (at the beginning)
int10.rom.used=2; (was 3)
Don't ask why.

Then set up gamewizard with "video swapping=fast" as this
will use registers instead of an (unsupported) int10 call.
Now it should be possible to run it to some degree (could
crash every now and then, stuff not working etc.).

The memory freeze does a pretty simple thing, they check
the locations periodically and re-init them. This way
you don't get "hard"-frozen values as with debug regs,
but it works with games.

hth

Reply 7 of 16, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Hm, forgot about that ems bug...
use ems=false or put the following into ems.cpp

static Bit8u EMM_AllocateMemory(Bit16u pages,Bit16u & dhandle) {
if (!pages) return EMM_ZERO_PAGES;
if ((MEM_FreeTotal()/4)<pages) { return EMM_OUT_OF_LOG;}
Bit16u handle=1;
while (emm_handles[handle].pages!=NULL_HANDLE) {
if (++handle>=EMM_MAX_HANDLES) { return EMM_OUT_OF_HANDLES;}
}
MemHandle mem=MEM_AllocatePages(pages*4,false);
if (!mem) E_Exit("EMS:Memory allocation failure");
emm_handles[handle].pages=pages;
emm_handles[handle].mem=mem;
dhandle=handle;
return EMM_NO_ERROR;
}

Reply 8 of 16, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

wd: Are these just workarounds to beat DOSBox and gamewizard into working with each other, or should some of this code actually be officially integrated into DOSBox?

Reply 9 of 16, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The first one is a workaround, as dosbox looks
correct there. I debugged this some time ago,
but didn't get to the real cause, i think they
need the vga characters at a specific position
or so.
The second one is an ems bug in dosbox, i
guess it wasn't added because it did not turn
up somewhere else (or my fix was odd or i
forgot to send it 😉

Reply 11 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author
wd wrote:
The first one is a workaround, as dosbox looks correct there. I debugged this some time ago, but didn't get to the real cause, i […]
Show full quote

The first one is a workaround, as dosbox looks
correct there. I debugged this some time ago,
but didn't get to the real cause, i think they
need the vga characters at a specific position
or so.
The second one is an ems bug in dosbox, i
guess it wasn't added because it did not turn
up somewhere else (or my fix was odd or i
forgot to send it 😉

I've never seen it. at least I don't remember it.

Water flows down the stream
How to ask questions the smart way!

Reply 12 of 16, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

well the ems patch seems to be correct.
it's stated clearly in ralphbrown that the handle only gets changed if there is no error.
modified ems code to match this behaviour.

Water flows down the stream
How to ask questions the smart way!

Reply 14 of 16, by HunterZ

User metadata
Rank l33t++
Rank
l33t++

Yes, I see it in the CVS changelog:

2005-01-12 13:44  qbix79

* src/ints/ems.cpp: Allocate memory changes handle only on succes.

This was after 0.63 was released, however, so you'll need to use a CVS build to have the fix.

Reply 16 of 16, by fish

User metadata
Rank Newbie
Rank
Newbie

With both patches applied, Game Wizard 3a Pro did run and executed most functions properly. In some cases it did odd things to the display - that's just like it behaved on 286.

Still, I'd prefer a built-in method but the thing I started is lost with my broken computer. It was ill-designed anyway. When I have something ready to present, I will present it.

The Sole Survivor.
Find me on efnet #oldgames