DSx86 (PC emulator) (v0.43 beta)

Post about new releases, or updated releases of homebrew projects.

Moderators:krom, SimonB, tepples, poslundc, wintermute, luna_s

Post Reply
Master_Thief
Posts:36
Joined:Wed Apr 28, 2010 8:55 pm

Post by Master_Thief » Wed Jun 23, 2010 1:05 pm

Another great release, plenty of new games now working and lots more improvements.

The 2 Castle Master's as well as Bubble Bobble no longer seem to be working though.

Now Playable
Alone In The Dark - Playable - Works perfectly, though is slow in places (mainly combat).
B.A.T - Playable - Works perfectly.
Batman Returns - Playable - Works perfectly.
Berlin 1948 - Playable - Works perfectly.
Cadaver - Playable - Works perfectly, though there are some minor graphical glitches.
Darkseed - Playable - Works perfectly.
Ford Simulator 50 - Playable - Works perfectly.
Hook - Playable - Works perfectly.
Indy 500 - Playable - Works perfectly, though is really slow.
Jimmy Whites Whirlwind Snooker - Playable - Works perfectly using just keybohard, using mouse gives an "unsupported opcode" error.
Laser Squad - Playable - Works perfectly.
Lemmings - Playable - Works Perfectly though is a little slow.
Lords Of Doom - Playable - Works perfectly using just keyboard, using mouse gives an "unsupported opcode" error.
Lost In time - Playable - Works perfectly.
Moonstone - Playable - Works perfectly
Oh No Not More Lemmings - Playable - Works Perfectly though is a little slow
Sleeping Gods Lie - Playable - Works perfectly, though is a little choppy
Space Crusade - Playable - Works Perfectly.
Speedball 2 - Playable - Has some graphic glitches ingame, but it is playable .
Spellcasting 101 - Playable - Works perfectly
Star Control 2 - Playable - Works perfectly
Stunt Island - Playable - Works perfectly, though is a little slow
The Great Escape - Playable - Works perfectly (needs moslo though).
Wizardry 1-5 - Playable - All work perfectly
Xenomorph - Playable - Cursor not shown correctly, but it's perfectly playable

Improvements
Formula 1 Grand Prix - Partially Working - Now gets ingame but gives an "unsupported opcode" error when entering a circuit
Gods - Partially Working - Game now runs, but there are various graphics problems
Guy Spy - Partially Working - Now gets in-game but gives an "unsupported opcode" when entering game
Heimdall 2 - Partially Working - Now gets ingame but gives continuous "unsupported INT call" errors
Heroes Of The Lance - Partially Working - Gets ingame, but has graphics issues
Killing Clouds - Partially working - Now gets ingame, but no cursor visible in EGA or VGA modes
Maupiti Island - Not Working - Gives lots of "unsupported port I/O" errors, then an "unsupported INT" error.
PGA Golf - Partially Working - Has some graphics errors with the menus and buttons, also the courses aren't shown properly.
Prophecy Of The Shadow - Partially Working - Now boots ingame, but crashes after selecting your character
Robocop 3 - Not Working - Graphics are corrupt, then freezes after selecting language
Spellcasting 201 - Partially Working - Graphic errors prevent some text being able to be read

No longer working
Bubble Bobble - Not Working - Now freezes at title screen (music continues to play)
Castle Master 1 - Not Working - Now freezes on character select screen
Castle Master 2 - Not Working - Now freezes after selecting begin game


Keep up the great work Pate :-)

The Logfile | Full List Of Games

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Wed Jun 23, 2010 3:23 pm

Great, thanks for the log and updated compatibility list, Master_Thief! I was looking forward to your test report. :-)

Glad to see a lot of improvement, I'll need to check Castle Master and Bubble Bobble for what I broke in them in the new version.

GODS should work in the next version, I fixed the major graphics issues it had. There is still a problem with the zoom mode as I want to fix the weird graphics mode handling properly and not just for this game.

Pate

sverx
Posts:912
Joined:Mon Apr 07, 2008 4:36 pm
Location:Italy
Contact:

Post by sverx » Fri Jun 25, 2010 2:22 pm

I noticed a little weird thing with the latest version: when switching video mode to 'jitter', some pixels on the right part of the (PC) screen goes off screen, but this happens only with some games, I guess it's because of different video modes. For instance it happens with Xenon2.

Btw keep up the good work Pate :)

Crookedmouth
Posts:1
Joined:Sat Jun 26, 2010 10:56 pm

Post by Crookedmouth » Sat Jun 26, 2010 11:56 pm

First I would like to thank you Pate for an incredible emulator. Its very exciting to me and brings so much to the DS.

Sorry if this is nothing new...

I know that probably most people might just use Windows 2.02 as a graphical user interface but I found a very small File Manager/Menu that is freeware and really works well for navigating your folders and executing executable files. Additionally it offers other file management. After version 0.15 Wolf File Manager began to work.

Furthermore, as many probably already know, AUTOEXEC.BAT files work with DSx86 when they are placed in the root of the C:/ drive. So now Wolf File Manager starts when you run DSx86.nds. For convenience I put the edited AUTOEXEC.BAT and WFM.EXE in an archive so all you need do is extract it to the root of your flash card and when you run DSx86.nds WFM will start.

Download it here
http://www.mediafire.com/?0wyj02qzko0


As an after thought I added the AUTOEXEC.BAT for Windows 2.02 so if you have the Windows folder in the root of your C: drive just place the AUTOEXEC.BAT file found in the Windows202AutoStartUp folder in the root also. It runs the VER 4 command automatically before running win.com.

I found Wolf File Manager at DOS Museum, check it out and the other great files such as ZZT which seems to work great in DSx86. Sorry you need to do the simple search in the corner because the direct links were to long. There are also a bunch of Ultima style RPGs that I haven't checked for compatibility.
http://www.dosmuseum.com/pages/themes.php

Thanks again!

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Sun Jun 27, 2010 5:02 am

sverx: Ah, yeah, I moved the actual screen data 8 pixels to the right for EGA modes in 0.15 (for the improved horizontal scroll handling), but I guess I forgot to adjust the Jitter mode screen start positions. Thanks for letting me know!

Crookedmouth: Welcome to the forum! Good info about the file manager and menu options! I hadn't realized a plain AUTOEXEC.BAT also works, I have just used the 4START.BAT in the 4DOS directory for autolaunching programs. If you feel like it, feel free to update http://dsx86compatibility.pbworks.com/C ... ility-List with info about the Wolf File Manager!

Thanks again for your continuing interest and encouragement for my work on DSx86! :-)

Pate

bob_fossil
Posts:73
Joined:Thu Jun 15, 2006 7:59 pm

Post by bob_fossil » Sun Jun 27, 2010 10:41 pm

Hi,

Here's an odd configuration file related issue, I noticed with Pushover.

1. Start game with push.exe

2. After configuration, frntend.exe is launched which shows title animation. dsx86 uses my defined frntend entry from the .ini file.

3. Games starts up. dsx86 claims frntend.exe is the current config but the emulator has switched back to the default configuration.

I tried the same with DosBox and at point 3, DosBox was showing Push.exe as the current process and not frntend. Looks like the switch back to the parent process is not seen?

Two other things: Here's a log file from Cannnon Fodder and could you make the tab key a bit wider as I keep getting a q instead of a tab keypress. :)

Thanks,

bob_fossil

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Mon Jun 28, 2010 8:30 am

Ok, thanks for the info about the config issue, it is certainly possible that return to parent process is not always detected properly. I'll look into this.

A few versions ago I increased the Tab key touch area leftward, so that you can aim for the left edge of the Tab button and it will register as a Tab key press. That should help you avoiding the 'q' button presses. :-)

The Cannon Fodder log looks like the game has jumped to F000:FFF0, which is the PC reboot address. I haven't yet coded support for that behaviour (as I'm not quite sure what would be the best way to handle a game requesting a reboot), but it is on my TODO list. This also happens in Wayne Gretzky Hockey and Jimmy White's Whirlwind Snooker if you answer the copy protection questions wrong.

Oh, btw, the new extended keyboard stuff as mentioned in my latest blog post might affect your dsx86config program. Just a heads-up in case you wish to add support to the extended keys.

Pate

sverx
Posts:912
Joined:Mon Apr 07, 2008 4:36 pm
Location:Italy
Contact:

Post by sverx » Mon Jun 28, 2010 10:02 am

Hi Pate
... do you plan to add support for Covox/Disney Sound Source? I guess it would be quite simple... just reserve an aligned 4 bytes buffer (actually a 32bit var somewhere) and impose to one of the DS audio channel to play it continuously, at high rate, the higher the better I guess.
Then every time there's a byte sent to the parallel port, just multiply it by 0x01010101 and write it to that 32 bit var. This should do the trick :D

Two list of games supporting that printer-port-connected-DAC can be found here,here and some also here.

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Mon Jun 28, 2010 11:36 am

Interesting idea sverx! I did not realize a DS audio channel could play a 4-byte buffer in a loop, I thought it needed a minimum of 16 bytes (or was it words). Is there more info about that trick somewhere (how to initialize such a playing method)? I think that would solve the SB DSP command 1C problem as well, where the PC timer is used to handle timing and the SB DSP is sent one DAC byte at a time.

Oh, and my own LineWars II game also supports Covox audio, so I don't have to go far to look for a test program. :-)

Pate

sverx
Posts:912
Joined:Mon Apr 07, 2008 4:36 pm
Location:Italy
Contact:

Post by sverx » Mon Jun 28, 2010 11:48 am

Yes, in Martin's GBATek I also read that a minimum of 16 bytes (4 words) is needed (here), but in my tests on my DSlite it worked also with just 1 word, both with 4 8-bits samples AND with 2 16-bits samples.

To play that, you just give SOUNDxSAD the buffer address, SOUNDxPNT should be 0 and SOUNDxLEN should be 1, then start replay with SOUNDxCNT = BIT(31)|BIT(27)|(64<<16)|127 ... which is SCHANNEL_ENABLE|SOUND_FORMAT_8BIT|SOUND_REPEAT|(64<<16)|SOUND_VOL(127)

edit: I forgot the freq. You can use libnds defines and use SOUND_FREQ(n) with n like 131072 (4 times 32KHz), IHMO.

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Mon Jun 28, 2010 2:33 pm

Cool, I quickly tested this with the SB Direct DAC handling, and it seems to work fine. :-) Audio quality is not all that great, though, but I'll experiment with different sampling rates and check if flushing the cache after every write will help.

Thanks again for the idea, that was very useful!

Edit: Ah, audio quality improved noticeably when I xored the byte with 0x80 instead of decimal 80. :-)

Pate

sverx
Posts:912
Joined:Mon Apr 07, 2008 4:36 pm
Location:Italy
Contact:

Post by sverx » Mon Jun 28, 2010 2:51 pm

Pate wrote:Audio quality is not all that great, though, but I'll experiment with different sampling rates and check if flushing the cache after every write will help.
I believe you should flush that part of the data cache after every write operation or it'll result in a lot of samples 'skipped'. Then, to have less delay possible in the sample reproduction, I'd use the higher frequency possible, but making sure that it doesn't slow down main memory access too much. I'd start with 23KHz x 4 for SB (it should be impossible to achieve more than 23KHz on a real SB using DSP command 1C, since it requires 2 writes -command&data- for every sample) and I'd use 44KHz x 4 for DAC (I believe nobody's using more than 44KHz replay rate...)

Hope it helps to improve, now I'm waiting to test it in the next release :)

(for the 1st parallel port the base I/O address should be written in BIOS at address 0x408. Usually the value there is 0x378)

edit: of course exadecimal is better ;)
edit again: maybe you should avoid the caching and the flushing writing directly to the buffer uncached address, I guess it's faster.

bob_fossil
Posts:73
Joined:Thu Jun 15, 2006 7:59 pm

Post by bob_fossil » Mon Jun 28, 2010 11:00 pm

Pate wrote: A few versions ago I increased the Tab key touch area leftward, so that you can aim for the left edge of the Tab button and it will register as a Tab key press. That should help you avoiding the 'q' button presses. :-)
Yes, that works. Thanks.
Pate wrote: The Cannon Fodder log looks like the game has jumped to F000:FFF0, which is the PC reboot address. I haven't yet coded support for that behaviour (as I'm not quite sure what would be the best way to handle a game requesting a reboot), but it is on my TODO list. This also happens in Wayne Gretzky Hockey and Jimmy White's Whirlwind Snooker if you answer the copy protection questions wrong.
The same files with DosBox seem to work OK - the game starts up and is playable so I'm not sure why it's trying to reboot.

Yeah, I noticed the extended keyboard stuff. I'm guessing this is the default for entries and that you'd only want to turn it off for certain games. Not sure how to specify whether a particular entry in the config file needs non extended keys?

bob_fossil

sverx
Posts:912
Joined:Mon Apr 07, 2008 4:36 pm
Location:Italy
Contact:

Post by sverx » Tue Jun 29, 2010 9:49 am

Yesterday evening I tried "Pinball Dreams", I didn't see it was already on the list as "Not Working"... well, in fact it doesn't work, it freezes.

Turns out that in the directory there are a lot of SDR files, which are executable files (they have the 'MZ' well known signature) and I guess these are TSR that works as sound driver (even 'nosound' has one).

Pate, are you already supporting TSR?

I think this would be a perfect game to try sound routines, it has separate drivers for SB, SB2, SBPro and SB16, a driver for the PC speaker (which I believe it's using PWM) and a driver for Covox too.

PWM could be also achieved on dsx86 using a similar technique to which you're using now for SB direct sample... in this case I guess you just have to dynamically adjust the maximum value the program writes to the PIT (I guess you won't ever know that before...) so that it becomes 255 in your 8 bit buffer... or -even better- turn it into 65535 and you could use a 2x16bit sample buffer... well, this sounds good also for your SB direct sample and for DAC.

Pate
Posts:242
Joined:Sat Jul 11, 2009 6:34 am
Location:Finland
Contact:

Post by Pate » Wed Jun 30, 2010 4:21 am

bob_fossil: Cannon Fodder probably detects something about the PC it does not like, so it wants to reboot. I'll try to look into that problem at some point. I have no ideas about how to select between extended/non-extended cursor keys in dsx86config, I'll leave that up to you. :-)

sverx: Yes, TSR programs are supported. I need to debug Pinball Dreams myself, but I'll probably test with other Covox programs first.

The PC Speaker PWM handling could indeed also use this trick of yours, I think the only problem is detecting when to use PWM and when normal PC Speaker sounds. I haven't yet looked into this to see whether it can be detected simply by the values/commands sent to the speaker ports.

The advantage with the 16-bit samples would be that I only need 2x sample rate instead of 4x rate, correct? I'll test this as well. The 8-bit direct DAC audio sounds pretty good already, but no harm in testing various options. :-)

I'll look into using non-cached RAM address as well, so far I haven't had a need to make a distinction between cached and non-cached RAM, so I am pretty unfamiliar with this thing.

By the way, I just quadrupled the AdLib-emulation audio volume (so it is now as loud or even louder than the SB sounds) and am in the process of implementing the rhythm instruments. I also looked into the auto-init DMA for SoundBlaster, but haven't implemented that yet. In any case looks like the focus of the next DSx86 version are the audio features. :-)

Pate

Post Reply