DSx86 (PC emulator) (v0.43 beta)
Moderators:krom, SimonB, tepples, poslundc, wintermute, luna_s
-
Master_Thief
- Posts:36
- Joined:Wed Apr 28, 2010 8:55 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
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
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com
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 :)
Btw keep up the good work Pate :)
-
Crookedmouth
- Posts:1
- Joined:Sat Jun 26, 2010 10: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!
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!
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com
-
bob_fossil
- Posts:73
- Joined:Thu Jun 15, 2006 7:59 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
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
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com
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.
... 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.
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com
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.
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.
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com
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...)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.
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
Yes, that works. Thanks.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. :-)
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.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.
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
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.
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.
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
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
- Now working on DSx86 http://dsx86.patrickaalto.com
- Get LineWarsDS from http://linewars.patrickaalto.com