First post, by OSH
- Rank
- Member
Hi!
One simple question. Will DOSBOX have Pentium MMX emulation?
Hi!
One simple question. Will DOSBOX have Pentium MMX emulation?
Little incentive to do so for DOS games: http://www.tomshardware.com/reviews/pentium-m … tions,19-3.html
What programs that use MMX did you have in mind?
It's not for DOS. rather for Windows based games. I know, DOSBOX is not intended to run Windows 9x, but simply I want to know, will be Pentium MMX emulation implemented or not. Only this 😀
Probably at the very least when Windows 9x is supported, so sometime not soon if ever.
I'm patient, I can wait 😀
What windows based thing needs it?
A game "Jane's Israeli Air Force". This game works only under Win95/98 and need MMX. I want test gulikoza's Glide addition, but this game won't install under Windows 95 while will be MMX emulation implemented.
This game works only under Win95/98 and need MMX.
What message do you get?
"This game requires Pentium MMX" or similar...
I'd actually like to see that to be able to use Impulse Tracker with resonant filters (which require MMX) in DosBox.
wrote:What windows based thing needs it?
Virtual On also requires MMX and it's for Windows. Rebel Moon Rising needs MMX as well. Serious Sam is also another MMX requiring game.
For DOS, I know two things that make use of MMX - Extreme Assault (For bilinear additive explosion sprite filtering) and Armored Fist 2 (not for new features, but the game does make heavy use of MMX optimizations for performance). ZSNES for DOS also uses MMX for filtered scalers and sound interpolation (huge speed boost there vs. a machine that doesn't MMX at the same clock rate)
Nothing for what i'd implement a complex additional instruction set into the emulation,
especially not for the "for performance reasons" argument, so good luck.
Well in Impulse Tracker it's not "for performance reasons" but the only way to get resonant filtering working... :\
I had been looking into this issue some time ago. The instruction set isn't that complex in itself IIRC.
The main difficulty for implementing MMX efficiently is that the MMX and FPU instructions share the same registers, which have to be cleared everytime a program switches from one to the other.
It shouldn't be too hard to add it to the interpreter (*)(using structs/union datatypes?), but mixing it with the current ASM implementation of the FPU used with the dynamic core could be tedious (unless, you decide to emulate the MMX instructions without using the actual MMX instructions of the host, but it won't probably be as fast).
(*) It would still probably take me months to get it implemented, since I would have to
1) get really familiar with the DOSBox code base
2) get my hands dirty and write some real C++ code (I can already parse most of it though I still have some issues with nested (function) pointers definitions and dereferencing. Adding some instructions to a working interpreter should be doable.)
3) fiddle with the quirks of the x86 architecture 😁
how about using sse registers and emulating mmx instructions with sse (I assume they are similar enough?). That would work for dynamic core. For dynrec, one would have to write C alternatives...
Don't have to write it, there's mmx in qemu and bochs that could be ported or use the mmx library.
IIRC, there is some overlap between MMX and SSE, but no 1 to 1 mapping. I don't think that SSE can work on short ints (and/or chars, I don't remember exactly), for example, and I think that some other MMX instructions are unique too.
i8registrations, What do you mean by "the MMX library"?
Digging back to 2007 I found this: http://sourceforge.net/projects/simd-cph/
I also found another, intel(+linux)-only MMX emulation lib here: http://www-sop.inria.fr/members/Sylvain.Pion/progs/mmx-emu/
The second one. "does not run under windows" but look at the source. The code is very simple and the only thing tying it to Linux is that he's using sigcontext.h directly, which can be gotten to through glibc.
According to this: http://shibuya.cool.ne.jp/narikuni/src/directx/DirectX.cpp
Direct X has MMX emulation.