VOGONS


First post, by peterferrie

User metadata
Rank Oldbie
Rank
Oldbie

While trying to run Reality Impact demo by HALO, which requires EMS (the non-EMS code tries to load selectors before entering protected mode, which of course doesn't work), the VCPI installation check always fails.
I see this check for JEMM in ems.cpp:

if (((reg_cx==0) && (reg_di==0x0012)) ...

This is not part of the VCPI spec, and prevents the demo from running.
If I skip this part and return success, the demo uses EMS properly and runs perfectly. No need for JEMM. What was the check intended to do?

Reply 1 of 10, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

http://cvscompile.aep-emu.de/cl/dosboxChangeLog.txt

2006-03-12 21:31 c2woody

* src/ints/ems.cpp: limit VCPI support to JEMM games

How To Ask Questions The Smart Way
Make your games work offline

Reply 2 of 10, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

real emm386 with ems and vcpi requires the processor to be in v86 mode all the time.
We don't like that.

So we have a hardware ems emulation and vcpi for those few games that really need it.

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

Reply 3 of 10, by peterferrie

User metadata
Rank Oldbie
Rank
Oldbie

okay, that makes sense, but the register check means that VCPI can't be detected.
Then if I disable EMS from dosbox.conf and try to load JEMM, DOSBox crashes with a stack overflow...

Reply 4 of 10, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

that register check makes sure that only the jemm games detect vcpi
no one else as they then assume the processor is in v86 mode and will sometimes exit if the processor isn't.

why disable ems if you run a jemm game ?

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

Reply 5 of 10, by peterferrie

User metadata
Rank Oldbie
Rank
Oldbie

I disabled EMS to see if JEMM would load. I thought that JEMM games would require JEMM. Anyway, the stack overflow is a bug.
So you have a problem of apps exiting because they find VCPI and not v86, and I have a problem of apps exiting because they don't find VCPI at all. :-)

Reply 6 of 10, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

i don't remember the wing commander series crashing when we didn't have the vcpi emulation.
Which game did you try ?

In the sourcefile ems.cpp you can enable vcpi if you want for your custom apps

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

Reply 7 of 10, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

You mix up the definition of what JEMM is, the games relevant system is
the emm-extension found in games like privateer and strike commander,
not the open-sourced emm386 replacement of japeth derived from the
freedos emm386 implementation.
The vcpi implementation in dosbox is far from complete but necessary for
ipx support under jemm games. So it's made available ONLY for those games
and nothing more. Especially as there's no need/use for a vcpi interface
under a hardware ems implementation like dosbox supports.

and I have a problem of apps exiting because they don't find VCPI at all

Well it's one demo, right? So not that much lost, especially as all halfwhat
intelligent extenders have a dpmi/vcpi/raw fallback strategy. I'm not sure
why they'd want to always use vcpi, but didn't check their code yet.

Reply 10 of 10, by peterferrie

User metadata
Rank Oldbie
Rank
Oldbie

The code exists to run in raw and XMS mode, too, but it doesn't work properly. The documentation says that it requires EMS because they probably couldn't work out what the problem was.