VOGONS


First post, by Tabris:DarkPeace

User metadata
Rank Newbie
Rank
Newbie

Firstly, PLEASE don't misinterpret this thread as a new 'some crazy idea that we're all too lazy to implement' thread.

This is possible. How can I make such a bold claim you ask ? 😎
Because it has already been demonstrated:

You see DOSBox emulates x86 + DOS + ISA Legacy Audio, etc on x86, x64, PowerPC and other architectures, that is no small feet.

However it is lacking support for some instructions that may be highly desirable to emulate for even HEAVIER DOS game emulation. (Some games might require a given instruction to run, others might just run faster, look prettier, etc).

Maybe certain DOS / Glide games need a certain instruction to render something correctly - Who knows ? (Nobody, if nobody looks). - Who will implement it ? - (Nobody, if nobody knows / cares).

... and if nobody knows / cares this will just be another thread that will fade into the history of the Internet and be forever forgotten. (But historical DOSBox Change History indicates this is unlikely).

Sounds complex, but they're still 'just [micro]op-codes' .... mmm .... that didn't make it sound 'less' complex did it. 😜

===============================================

So the little advertising spill above, and you're still reading ? - Good.

I'll cut to the chase:

My point is if you can emulate an x86 instruction on another platform then you can emulate 'newer' x86 instructions (on another platform even).

I figure during DOSBox development that 386 Protected Mode wasn't working on day one, and nor will Pentium / K5 / K6 instruction set support just 'appear' overnight, nor will it likely work within 24 hours of research & development.

So yeah, the first versions of DOSBox could not run Doom, DOS/32A, or DOS/4GW games because no doubt the instruction emulation started with something basic like the Intel 8088, 8086, 80186, 286, and finally 386. Perhaps adding some 486 like functionality in later, and likely a parallel implementation: Support for x87 FPU instructions, then a Dynamic Core, and a Dynamic FPU.

The next step in history is already mostly documented, if ~ 90% ~ of the 486 is emulated and 97% of titles work, then start working towards emulation of 5th/6th generation x86 instruction sets / op-codes.

Being able to run Win95 under DOSBox is a HUGE step, no LEAP, forwards, because it means SiSoft SANDRA and the like can now be run under DOSBox - I hope.

If I can't jump straight into the code, then I'd like to try and jump into debugging, research, and development concepts, which with help maybe I can implement myself even. (Maybe).

===============================================

Can you load a game under DOS Box and watch it not work / load correctly ?

If yes then you're most likely 'qualified' to help build a list.

But this list is unlike any of the previous lists, it is a list of CPU support vs CPU requirements for given DOS titles. Ideally for DOS games that require some rather beefy systems by DOS standards (ie: Games that need 5th and 6th generation CPUs just to run, such as the: Pentium, K5, K6, K6-2, Pentium MMX, Cyrix 6x86, etc)

===============================================

List of DOS games/applications that require certain instructions be present to load / execute / run correctly / etc:

- Which may, or may not, have been implemented in DOSBox by the time you read this.

=================================================

I'm looking for games that require (or at least can run / benefit from various x86 instructions and can be crash dumped easily while in memory for proof).

(1) Do you know a DOS game / application that REQUIRES a Pentium (or equiv) CPU ? And, ideally, does not work under DOSBox (because it is a requirement, not an optional extra) ?

Reason: Over the next 2-4 years single CPU cores will be powerful enough to emulate some rather revolutionary x86 CPUs within DOSBox compared to the current x86 instruction set support DOSBox provides. If these instructions are not supported in DOSBox then no matter how fast your PC is they simply won't work.

(2) How about DOS games / applications that REQUIRE a x87 FPU [Floating Point Unit], And, ideally, do not work under DOSBox (because it is a requirement, not an optional extra) ?

Reason: The FPU instruction set has grown since what DOSBox implements, and if certain op-codes are not emulated a given game may 'work around' it 'by design' to maximize compatibility. Not all titles will do this however.

http://users.on.net/~darkpeace

Reply 1 of 21, by gulikoza

User metadata
Rank Oldbie
Rank
Oldbie

A lengthy post...but...

I'm sure there are not a lot of games that require Pentium CPU and run in DOS. Pretty much sure there are none. When I bought a 486 in 1995, win95 was out half a year later. Game developers simply could not afford to leave all those systems behind (think of how many games *require* sse3 or even pixel shader 3 (when dx10 and ps4 is already out)). So, games that do require pentium instructions (btw: how many useful instructions has pentium added anyway - I'm not talking about mmx - I'm aware of RDTSC and CPUID...) were all Windows games. And the reason why you can't just boot XP on DOSBox is not the CPU (somebody has got XP running on his 486, so XP perfectly supports 486 CPUs) but a lot of other stuff. And if I know correctly, the FPU is fully functional...

Yes, there is stuff that doesn't run on DOSBox and while there might be bugs in the cpu core emulation, I highly doubt they don't run because of the specific CPU instruction set dosbox emulates. There are other things besides CPU... 😀

http://www.si-gamer.net/gulikoza

Reply 2 of 21, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I came across only one dos-game that required a pentium, and the only
instruction it used was RDTSC. Don't remember the name of the game though.

The pentium adds conditional fpu and integer move operations. They're
most likely not used by dos games as they're easily replaced by compatible
instructions. So not implementing those shouldn't prevent running these games.

An interesting part of the list would be games that allow certain graphics
quality settings only on pentiums, but no idea if something like that exists.

Reply 3 of 21, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author
wd wrote:

I came across only one dos-game that required a pentium, and the only
instruction it used was RDTSC. Don't remember the name of the game though.

Montezumma revenge or so. I hacked an rdtsc implementation for that game. It was happy with it. but I don't have my code anymore for it I think.

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

Reply 5 of 21, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

According to MobyGames these are all of the games with a miniumum of "Pentium" listed in the specs:
http://www.mobygames.com/browse/games/dos/tic,11/ti,68/

Obviously most if not all of these games ran fine on a 486dx4/100 and it looks like we already have all of these working under DosBox. At least the games I recognize.

As for pentium only features not available to 486's in these games I have no idea.

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

Reply 7 of 21, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Yeah, I still have to add box specs to my compatibility list. I think in 2050 when I'm finally done with my list I'll get around to uploading my results to mobygames.

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

Reply 8 of 21, by ADDiCT

User metadata
Rank Oldbie
Rank
Oldbie

So far, i've tested about 250 games in DOSBox, from 1984 (Archon) to 1997 (Shadow Warrior, Redneck Rampage). All of these worked great with DOSBox. Could it be that we're discussing a problem that does not really exist in reality?

Reply 9 of 21, by njaydg

User metadata
Rank Member
Rank
Member

An interesting part of the list would be games that allow certain graphics
quality settings only on pentiums, but no idea if something like that exists

One such game that has specific graphics/quality settings through MMX technology is Extreme Assault. I never actually had a Pentium in my DOS days, but this game has that kind of "feature". Does it actually improve anything at all? Can't say, maybe someone with a real DOS Pentium machine will clarify.

Reply 11 of 21, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I recall that one coprocessor instruction was pentium only fucompp
we do emulate though. Quake needed it.

This is from memory. I could be wrong.
In reply to first poster.
I personally have no disire to get win95 to run better on dosbox. (yes it runs allready). There are other emulators out there who can do that.
I like to focus on things that are more useful for dos gamers. So that is be able to run more dosgames, with good video and sound quality, and in the future be able to save the state of the machine so the real hard games can be finished as well.

For history sum up you are about right. although there wasn't a clear distinction between 086-386. The biggest distinction was real and protected mode.

I think instruction wise percentages around 99 % in what is emulated on the instructions. 90 % is a bit low.

for the fpu. I think 99-100 % of the 486 fpu emulated. For the pentium I don't know I haven't looked at the specs lately.

We actually try to go back to 386/486 when it comes to undocumented effects of the flags. We currently have some pentium behaviour for those.

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

Reply 12 of 21, by alvaro84

User metadata
Rank Member
Rank
Member

Interesting, I played Quake on an AMD 5x86, which is, essentially, a 486DX on steroids, so I really don't think it really needs Pentium instructons 😮

I know three more DOS applications that need MMX: the first one is Impulse Tracker, which uses it in the drivers that have resonant filtering capabilities; the other two are demos, called Event Horizon and Heaven 7 - the latter has a win32 version, though, so the loss is not that big here 😀

Shame on us, doomed from the start
May God have mercy on our dirty little hearts

Reply 15 of 21, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

MC1 and MC2 have a pentium detection sequence (ID-flag flipping
and CPUID checking), but up to now i only found them using an
additional fpu test if no pentium is detected. No pentium-only
instructions used, but didn't play for too long.
MC1 displays a intel pentium logo at the beginning, MC2 doesn't.

Reply 16 of 21, by Tabris:DarkPeace

User metadata
Rank Newbie
Rank
Newbie

wd, You running that test in DOSBox or on hardware ?

If DOSBox and it falls back to 'lower' FPU wouldn't the stream of instructions thus be different (for the 'lower' FPU).

If it does check for 2 different FPUs, and detects the 'better' FPU is present would it not attempt to use such 'higher' FPU instructions ? (with various potential results).

... and does DOSBox sport CPU flags + emulation for such 'higher' FPU instructions ? (If DOSBox is what you're using for testing - obviously if DOSBox does not sport emulation for them then the binary would know [or rather: be coded not to] use such instructions).

I'm sorry to raise the issue to be honest, since 80% of forum posters here have done nothing but try and shoot the idea down. (But not the larger masses of forum readers who are not registered and read the threads without making comments - good or bad).

Kinda concerned that only 1-2 people here do any debugging while the rest mooch (but that is open-source I guess - 😉 ).

If you can PM a good list of tools that people use now, point towards doco for it (I don't read German btw), and can help with the hex values of op-codes to look for I am happy to do the rest.

What kind of CPU can you picture DOSBox emulating on 3 GHz Core 2 rig, or similar spec down the track ?, and have you ruled out emulation scaling over multiple cores ? (vs just having it dispatch certain threads to least idle core - and yes, I do understand why one wouldn't bother with no financial incentives, etc).

http://users.on.net/~darkpeace

Reply 17 of 21, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Kinda concerned that only 1-2 people here do any debugging while the rest mooch (but that is open-source I guess - Wink ).

Well first you have to get people to actually CARE about your ideas. We've tested thousands of DOS games in DosBox and haven't had any need to worry about "pentium" instructions.

Once you've got the caring problem taken care of then you have to find the TIME.
Once you've got the TIME then you've got to figure out wether it's FEASIBLE or not and wether it's part of the projects GOALS, wether it will break a little thing called COMPATIBILITY..

Once all these things have been determined then you can begin.

What kind of CPU can you picture DOSBox emulating on 3 GHz Core 2 rig, or similar spec down the track ?, and have you ruled out emulation scaling over multiple cores ? (vs just having it dispatch certain threads to least idle core - and yes, I do understand why one wouldn't bother with no financial incentives, etc).

Presently DosBox runs at the equivalent of a Pentium 133+ on a Core 2 Duo. I believe. On my Athlon XP 2800+ it was about DX4/100 or P/100 level.

There really isn't much point to bother with multiple cores since DosBox runs so well even on low end x86 processors. I think the guys using DosBox on PDA's and the like are working on it but even there it's likely a waste of time since processor speed is increasing (so DosBox will of course be faster) and if they really want the game to work they'd be better off creating a port of the game.

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

Reply 18 of 21, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

You running that test in DOSBox or on hardware ?

dosbox only

If DOSBox and it falls back to 'lower' FPU wouldn't the stream of
instructions thus be different (for the 'lower' FPU).

There isn't really anything like a better fpu on pentiums, they just added
a bit in the cpuid capabilities field that, if set, indicates that there are
additional instructions available, namely CMOV (condifional move) and
FCMOV (conditional move of fpu regs).
I have those bits set, so if they really would use the instructions it would
crash due to this. Didn't happen (yet).

Reply 19 of 21, by dh4rm4

User metadata
Rank Oldbie
Rank
Oldbie
Tabris:DarkPeace wrote:

I'm sorry to raise the issue to be honest, since 80% of forum posters here have done nothing but try and shoot the idea down. (But not the larger masses of forum readers who are not registered and read the threads without making comments - good or bad).

Kinda concerned that only 1-2 people here do any debugging while the rest mooch (but that is open-source I guess - 😉 ).

There are far more than 2 two debuggers here. More like close to 10 different developers and a whole swathe of users, developers and outside parties that help in the overall debug process. You don't know what you're talking about.

Sorry, but you actually don't have an idea to shoot down. Some loose concepts held together by even looser definitions does not an idea make. So far your only justification for full Pentium emulation is Magic Carpet's inclusion of the "Intel Inside" pentium ad from the mid '90s. Next you talk about some sort of magical solution coming from making DOSBox multicore, yet you can't say how or why it could or would be of any benefit.

The DOSBox source is freely available so if you don't want to mooch as you so kindly put it, then go ahead and demonstrate your ideas in practice.