VOGONS

Common searches


Reply 80 of 438, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++

ISA video cards also slow things down. However they don't slow down the CPU and can still cause issues with some games, so use these results with caution.

Your results match up with my findings. Once you disable the Cache on a slot 1 machine you need a very high FSB / clockspeed to get somehwere.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 81 of 438, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Great testing effort all! I'll try to catch up.

carlostex wrote:

Using Mt-32 on music and SB for speech, the system was always hanging randomly from the point the first speech cutscene starts.

Got a fix for this now. The problem could actually affect any game with intelligent MPU and SB digital FX.

elianda wrote:

I tried SoftMPU on one of my 386 machines.

Thanks for all these tests. QEMM has it's own API with similar functionality to EMM386 but I've no plans to add support for it in SoftMPU. Wonderland is hard-coded to expect MPU interrupts on IRQ 2, so you will need to configure your SB card's IRQ to either 2 or 9 to hear music. Music should play over the title screen.

Regarding the EMM386 version, it seems that the port trap API was added in version 4.46, so the minimum DOS version is actually 6.2 (comes with 4.48). I'll update the docs and look at adding more robust version detection.

10-15% slowdown sounds about right on a 386. I use a high frequency interrupt (4kHz) to get accurate tempo. This is only required for games that need interrupts though, and these tend to be the older games with lower CPU requirements. I'll look at automatically disabling it for Wing Commander and the others, which should speed things up.

Added EWS64XL, Maxi Sound 64 and SB16 CT1740 to the compatibility list. Next release probably in a week or so, in case anything else comes up 😀

Reply 82 of 438, by carlostex

User metadata
Rank l33t
Rank
l33t
bjt wrote:
carlostex wrote:

Using Mt-32 on music and SB for speech, the system was always hanging randomly from the point the first speech cutscene starts.

Got a fix for this now. The problem could actually affect any game with intelligent MPU and SB digital FX.

Amazing work bjt!!We're getting spoiled!!

Reply 84 of 438, by elianda

User metadata
Rank l33t
Rank
l33t

I got a question:
In INTHAND.ASM you start your Timer ISR with

TimerIntHandler:ASSUME          ds:_DATA                ; Access local vars via cs

; Call chained ISR first
pushf
call OldTimerISR

; Ensure interrupts are disabled, in case something's chained us
cli
...

I think this can be critical if some program changes the timer. Since the OldTimerISR can issue an EOI there may be an Interrupt just before CLI.
I looked up some example code and it seems the common way to prevent this is introducing a mutex flag that prevents running your own ISR multiple times in parallel.
something like this:
call OldTimerISR
cmp CS:[MFLAG],1
JNZ OwnTimerISR
IRET
@@OwnTimerISR: MOV CS:[MFLAG],1
here be OwnISR
MOV CS:[MFLAG],0
IRET

Retronn.de - Vintage Hardware Gallery, Drivers, Guides, Videos. Now with file search
Youtube Channel
FTP Server - Driver Archive and more
DVI2PCIe alignment and 2D image quality measurement tool

Reply 85 of 438, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Can't remember why I did it that way (call at start vs jmp at end) but I can't see a problem either. HW int handler enters with interrupts disabled so we'll only get an interrupt between call and cli if any handler in the chain does an sti, regardless of who issues EOI.

Don't believe the DOS int 8 handler does sti so it would have to be in a handler installed after SoftMPU (e.g. by a game). In this case we might get an interrupt before cli regardless of whether I call or jmp, as the game's handler will probably run first.

In any case the SoftMPU handler is re-entrant prior to the cli, and running it multiple times before exiting the interrupt is no problem - or do you see a problem with running out of stack/getting into an infinite loop with very high interrupt rates?

Happy to be corrected as this isn't my normal coding area (work on rendering code mainly...)

Reply 86 of 438, by elianda

User metadata
Rank l33t
Rank
l33t

Yes I was thinking of an infinite loop on high rates. But I guess this problem is rather low priority.

I have worked a little bit with the source to add QEMM386 support myself.
Well... I am still on it.

Changed the @@LoadedCheck routine to not require an alignment of the IDString
So far I added the detection of QEMM.
Got the QPIEntry (QEMM Programming Interface)
Currently debugging the Installation of the PortHandler.

The CallBack API seems to be nearly identical to EMMs, still I am not sure if it is done in Protected Mode (as EMMs) or not.

Retronn.de - Vintage Hardware Gallery, Drivers, Guides, Videos. Now with file search
Youtube Channel
FTP Server - Driver Archive and more
DVI2PCIe alignment and 2D image quality measurement tool

Reply 87 of 438, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++

Bjt could I make a suggestion...

What about creating two, or even more, drivers. One that focuses on the "easy" games like Sierra, Wing Commander and all of that, maintaining speed and stability.

And then another driver that deals with the "tough" cases that check for an IRQ?

Or the other option is to have the driver ask the user to select a mode...

Last edited by Mau1wurf1977 on 2013-07-15, 01:14. Edited 1 time in total.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 88 of 438, by j^aws

User metadata
Rank Oldbie
Rank
Oldbie
Mau1wurf1977 wrote:

ISA video cards also slow things down. However they don't slow down the CPU and can still cause issues with some games, so use these results with caution.

Yep, did consider testing an ISA VGA card, but I don't have one at hand to test. I still have a S7 board for backup anyway.

Mau1wurf1977 wrote:

Your results match up with my findings. Once you disable the Cache on a slot 1 machine you need a very high FSB / clockspeed to get somehwere.

Glad to hear - I did some basic tests before deciding on a twin-BX setup.

bjt wrote:
j^aws wrote:

are you asking whether there was a "2", "9" or a specific option for "2/9"?

Any of the above 😀 Some games are hard-coded to IRQ 2 and will work if the sound card is set to either IRQ 2 or 9 (due to the interrupt controllers being chained).

Okay, a few more tests using SoftMPU v1.3, SB=220, IRQ=5, MPU=330:

-----Sound card: Aztech 2316A (CS4248)-----

- P2@133MHz, L1/L2 cache enabled: SoftMPU initialises.

Tested and works with Might and Magic 3, and Wing Commander. BTW, I noticed MM3 isn't on your list of games? AFAIK, the game needs an intelligent mode MIDI controller - tested it with a Voyetra v24s (setting LAPC-I option doesn't work with UART mode controllers).

Also tested Ecargxus - SoftMPU initialises with the correct ports, except the MPU IRQ is the same as SB IRQ of 5 - the card is set to MPU IRQ 2.

The game either starts with no sounds, or fails to start depending on MPU IRQ chosen for game options. E.g. when game starts, choosing MPU IRQ 2 starts the game, but with no sound. However, choosing MPU IRQ 5 will freeze the screen. The sound card only has options to set MPU IRQs to 2, 7 and 10. It's not a Plug and Play card, but one of those that has jumpers and EPROM settings. I tried adding more Legacy ISA options in the BIOS, but available MPU IRQs didn't change.

-----Sound card: ESS Audiodrive 1688F-----

- P2@133MHz, L1/L2 cache enabled:
SoftMPU fails to initialise - detects MPU at 330, but reports error: Sound Blaster not detected at port 220 IRQ 5.

- P2@133MHz, L1/L2 cache disabled:
SoftMPU fails to initialise - detects MPU at 330, but reports error: Sound Blaster not detected at port 220 IRQ 5.

- P2@400MHz, L1/L2 cache enabled:
SoftMPU fails to initialise - detects MPU at 330, but reports error: Sound Blaster not detected at port 220 IRQ 5.

- P2@400MHz, L1/L2 cache disabled:
SoftMPU fails to initialise - detects MPU at 330, but reports error: Sound Blaster not detected at port 220 IRQ 5.

BTW, this card has MPU IRQ settings for 2, 5, 7, 10 and 11, and also "none" and "share IRQ". It's a Plug and Play card.

EDIT: Updated some MPU IRQ options. Also tried other settings for the card, but still the same results.

Last edited by j^aws on 2013-07-15, 01:28. Edited 1 time in total.

Reply 89 of 438, by elianda

User metadata
Rank l33t
Rank
l33t

small update:
I got the IOTrap Callback for QEMM to install (PortHandler) without errors.
SoftMPU installs and comes back to DOS command prompt. If I access one of the trapped ports it crashes - which up to now is a good sign, cause it indicates that the trap applies.

Now I have to see if I have to apply just small changes to the PortHandler or if I have to make an second one.

Retronn.de - Vintage Hardware Gallery, Drivers, Guides, Videos. Now with file search
Youtube Channel
FTP Server - Driver Archive and more
DVI2PCIe alignment and 2D image quality measurement tool

Reply 90 of 438, by bjt

User metadata
Rank Oldbie
Rank
Oldbie
Mau1wurf1977 wrote:

What about creating two, or even more, drivers.

We actually already have this situation... SoftMPU 0.5 works with the games that don't need interrupts and is a lot simpler/faster. Would be nice to have a version with the features of 1.0+ and the speed of 0.5 though.

j^aws wrote:

Okay, a few more tests using SoftMPU v1.3, SB=220, IRQ=5, MPU=330:

Just to clarify, SoftMPU doesn't use the hardware MPU IRQ at all. Rather, it uses the SB IRQ to simulate MPU interrupts. So from the point of view of the game, the SB IRQ *is* the MPU IRQ.

I can only get Ecargxus working on IRQ 2 here (SB IRQ set to 9). Not sure what's up but others have had it working on IRQ 5. Interesting about the ESS1688F, this is a common SB clone and should work. Anyone else got an ISA ESS to try? I'll try get hold of one myself as well.

Thanks for the info about Might and Magic 3, added it to the compatibility list. That takes us to 50 supported games!

elianda wrote:

I got the IOTrap Callback for QEMM to install (PortHandler) without errors.

Great work, be good to get QEMM support in. BTW if you need a debugger that works within the port handler, I found 386SWAT (http://www.sudleyplace.com/swat/) to work well. The other thing I found handy was to develop inside Bochs and use its built-in debugger.

Reply 91 of 438, by Jolaes76

User metadata
Rank Oldbie
Rank
Oldbie

"A-Train" also works with SoftMPU 1.x.
I could never launch this game set up for Roland sound on any UART mode interface. My deduction is that A-Train is another intelligent mode game (but not hardwired to IRQ2)
BTW, I read there is a compatibility problem with cutemouse 2.1 but 2.0 is OK - what exactly is the issue ?

"Ita in vita ut in lusu alae pessima iactura arte corrigenda est."

Reply 92 of 438, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++
Jolaes76 wrote:

" what exactly is the issue ?

In some games the music slows down when you move the mouse. Logitech driver has the same issue.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 93 of 438, by Great Hierophant

User metadata
Rank l33t
Rank
l33t

Perhaps the best solution would be to have a command line switch, say /l, or a SET SOFTMPU=LIGHT environment variable, to put the program into "light mode" where it can handle the simple ACK expectations of the Sierra and Origin games without degrading performance too much.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 94 of 438, by Mau1wurf1977

User metadata
Rank l33t++
Rank
l33t++

Yea something like that would be wonderful!

Because let's face it, most people will want to play Sierra, Origin and Lucasarts games and nothing else.

My website with reviews, demos, drivers, tutorials and more...
My YouTube channel

Reply 95 of 438, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Right now I'm planning to switch between modes automatically when loading each game.

Jolaes76 wrote:

"A-Train" also works with SoftMPU 1.x.

Great, added it to the list 😀

Reply 96 of 438, by gerwin

User metadata
Rank l33t
Rank
l33t

bjt,
Just out of curiosity, have you considered port trapping without depending on EMM386 or any other memory manager?

Two reasons for asking:
1) I don't use EMM386 for one. ( Instead I use 'Windows 98 Mini' as a no reboot required frontend for DOS games, Which can supply EMS automatically in a windows dosbox. Also it quickly exits to DOS and back when necessary. Note that I don't play much sierra games and have an MPU-401AT in one system anyways. )

2) Ensoniq and later creative SB16 emulation for PCI soundcards used to rely on EMM386, but Yamaha and Aureal had even better legacy emulation which also worked without EMM386.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 97 of 438, by Great Hierophant

User metadata
Rank l33t
Rank
l33t
gerwin wrote:

2) Ensoniq and later creative SB16 emulation for PCI soundcards used to rely on EMM386, but Yamaha and Aureal had even better legacy emulation which also worked without EMM386.

In my experience, some games, like DOOM, would not work with Yamaha's legacy emulation without EMM386 being loaded.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 98 of 438, by gerwin

User metadata
Rank l33t
Rank
l33t

Like what you wrote here about DSDMA: Yamaha YMF-7xx PCI Sound Cards. So only Aureal managed to emulate DMA without SBlink cable and without EMM386 (Driver name AU30DOS.COM). Either way, DMA is no issue for an MPU interface.

--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul

Reply 99 of 438, by bjt

User metadata
Rank Oldbie
Rank
Oldbie

Only two ways to trap ports:

- 386+ protected mode: TSS I/O permissions bitmap
- Real mode: Pentium debug registers (probably too slow though)

In Windows, a VXD would work. In DOS, given that protected mode is required, there's no downside to using EMM386.