Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sound and DOS4GW #30

Closed
WindowsNinetyTen opened this issue Dec 21, 2018 · 12 comments
Closed

Sound and DOS4GW #30

WindowsNinetyTen opened this issue Dec 21, 2018 · 12 comments

Comments

@WindowsNinetyTen
Copy link

How can I get proper sound emulation? When I run programs the sound comes out differently from when running the programs in DOS-based OSes. And how can i get programs with DOS4GW to run? When I try to run such programs like Extreme Pinball or Action Supercross, I just get an "NTVDM has encountered an unhandled exception" error message. What can I do?

@emendelson
Copy link

Try DOSBox or DOSBox-X. NTVDMX64 isn't designed for the purposes you want.

@leecher1337
Copy link
Owner

Soundblaster 2.1 support is being worked on (ported from XP NTVDM to NT4 VDM we use here), that is what the original NTVDM on Windows XP used to provide. However be aware that this is quite an old Soundblaster DSP version and support isn't very good.
Additionally, in XP there is a kernel mode MIDI-Emulation that is being used by NTVDM, we don't have this available on 64bit OS, this needs to be investigated.

It also has to be investigated why SoundFX (http://www.softsystem.co.uk/products/soundfx.htm) and VDMSound (https://sourceforge.net/projects/vdmsound/) currently don't work properly, this will be next on my TODO-list after SB 2.1 implementation.

The problems with some protected mode extenders are known and quite hard to debug, unfortunately :-( But even original NTVDM on x86 wasn't very good at running PM programs. The original CCPU has quite some bugs in it (I fixed some of them), so possibly there are still some undiscovered bugs.
Final goal would be to implement HAXM VM as replacement for the CCPU, but I don't know yet if it can be made possible, help would be greatly appreciated, anyone who wants to work on it with me?

Like Edward said, for games you are probably better off with DOSBox for now, as the CCPU in NTVDM is quite slow, so you wouldn't be very happy with it even with fixed protected mode bugs.
Any particular reason why you want to use NTVDMx64 for gaming? Even on Windows XP 32bit with a working NTVDM, people often preferred DOSbox over it for gaming, as Soundblaster emulation etc. is superior in DOSBox (Vdmsound always was a bit sluggish compared to DOSBox).

@Amaroq-Clearwater
Copy link

Amaroq-Clearwater commented Dec 21, 2018

Regarding emulation performance (though this may not help much with sound directly)...

Why not use dynamic recompilation or API translation, as opposed to relying entirely on thunking with a virtual CPU? This could help a lot with performance, especially when dealing with Protected Mode code.

If any of the code is written in C++ and is hypothetically able to be run in parallel, then you could also take a look at OpenACC or OpenMP. It wouldn't benefit all users, but it would probably benefit most.

Lastly, I'd suggest paying Reengine's blog a visit and looking into the Ravioli memory concept. Good stuff, may help out when emulating any DOS programs that are prone to memory leaks.

@leecher1337
Copy link
Owner

You are free to contibute sourcecode to the project, make a fork and implement it.
Have fun trying to find out the inner workings of Insignia SoftPC CPU architecture and sqeeze your CPU emulator into it...
No C++, only C code (obeying C89 standard) allowed.

@Amaroq-Clearwater
Copy link

Amaroq-Clearwater commented Dec 22, 2018

Only C code? Oh dear :#
Maybe there are some OpenACC libraries/compilers for regular C code. OpenACC works by detecting certain markers in source code, and compiling it in such a way that it can still run on its original target architecture, but the marked sections of code can also run on the GPU in order to utilize GPU compute resources for parallel code. Sadly, the places where I learned about it only mentioned C++ and Fortran.

@leecher1337
Copy link
Owner

Now back on topic: Fixed a bug in the loader that prevented SoundFX 2000 zu run, now Sound works using SoundFX 2000 :-)

@WindowsNinetyTen
Copy link
Author

WindowsNinetyTen commented Jun 11, 2019

Any particular reason why you want to use NTVDMx64 for gaming?

I thought that it would be cool to be able to play some DOS games without even needing DOSBox

@peter8777555
Copy link

VDMSound for MS Windows NT/2000 DOS boxes.
SoundFX for Windows XP, 2000 & NT4.

The SoundFX or VDMSound can work on ANY X64 OS (ex: MS Windows 7 X64) ?

@leecher1337
Copy link
Owner

As it iis just a VDD for NTVDMx64, I wouldn't see a reason why it shouldn't work on any x64 Windows version NTVDMx64 supports (so also Win7 x64).

@WindowsNinetyTen
Copy link
Author

WindowsNinetyTen commented Jul 10, 2019

Anyway, how can I use SoundFX with NTVDM? For some reason I get a message with "time limit" even when I add the registry key which disables the time limit.

@peter8777555
Copy link

As it iis just a VDD for NTVDMx64,
I wouldn't see a reason why it shouldn't work on any x64 Windows version NTVDMx64 supports
(so also Win7 x64).

Bug:
VDMSound will REMOVE ALL PATH variable on Windows 7 X64.

@leecher1337
Copy link
Owner

leecher1337 commented Jul 11, 2019

Anyway, how can I use SoundFX with NTVDM? For some reason I get a message with "time limit"

See #40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants