DSx86 v0.22 (Beta) (DOS emu for NDS)

DSx86 is a PC emulator for Nintendo DS. It’s purpose is to allow you to run old DOS games on your Nintendo DS game console.

Release notes:

Aug 1st, 2010 – Version 0.22 released!

This version has the refactored internals, so it most likely runs some (if not all) games slower than the previous versions. It does however now support practically all real-mode 286 CPU opcodes (not including JPE and JPO which require game-specific hacks), and also unsupported graphics opcodes should now be quite rare. The graphics opcodes are now reported as Unsupported EGA opcode or Unsupported Mode-X opcode, and unlike in previous versions, you can continue after such an opcode using the B button. However, it is likely that you will get the same error again and again, so please send me the log file if you encounter unsupported graphics opcodes. If you get a plain Unsupported opcode error, it most likely means that the program is executing data instead of code, so something has gone wrong in the code before this happened, and thus it is not possible to continue running the program. Again, I am interested in the log files produced in these situations.

Besides the refactored internals, this version has various other fixes, based on many games and other programs I have been testing. Here is a list of the programs I tested, and the changes made into DSx86 or other information about why the program fails to run properly.

Alcatraz, Terminator 2 – Judgment Day, Prehistorik and SimFarm all had various palette problems. I debugged each of these, and noticed that they each failed for different reasons, so in the end I decided to rewrite the 16-color palette handling in DSx86 completely. Now at least those games have correct palettes, so hopefully this change fixes the other games with palette problems as well. The palette handling is still not completely correct, as only the first 64 palette registers are supported in 16-color modes. This is OK for EGA emulation, but some VGA games might use special palette tricks that might still fail.

B.A.T. 2 was freezing. This was caused by the game trying to detect AdLib using Timer 2, while I have only emulated Timer 1 behaviour (and even that one pretty badly). I improved the AdLib timer behaviour, but they still don’t work properly. I have run out of Nintendo DS hardware timers, so I need to figure out a way to combine some of the existing timers or use the ARM7 timers from the ARM9 side for some less critical timing operations. In any case B.A.T. 2 now does not freeze, but it seems to run some parts of the intro far too fast. I also found and fixed a problem in the 640×480 mode blitting code when testing B.A.T. 2.

Battle Chess 4000 is reported on the compatibility list as crashing after moving a cursor, however moving the cursor seems to work fine for me, both in D-Pad and touchpad mouse mode. So, I can not debug the possible problem.

The Clue! has been on the compatibility list for a long time, so I finally decided to look into it. I found out that the crash is caused by a bug in the game. The game checks whether the system has an XMS memory driver, and stores the call address of the driver if it has. However, if a driver is not found, it still tries to call the driver, which then causes a null pointer call. I verified this behaviour in DOSBox by making it report no XMS driver, and the game crashed in DOSBox as well. So, this game won’t work until I implement XMS memory handling.
Curse of Enchantia hang in 0.21. This was caused by a bug in my refactored CMPSW opcode. I fixed that opcode and Curse of Enchantia began to work properly again.

Darkseed uses an internal flag in it’s timer INT8 handler to prohibit re-entrance of the interrupt routine. However, it calls the BIOS INT8 routine with interrupts enabled, so it is possible that the next timer interrupt will happen at this phase, and if it does, the game does not perform an End-Of-Interrupt handling properly. This caused DSx86 to stop sending new timer interrupts, causing the game to hang. I fixed this by turning interrupts off in the BIOS INT8 handler before reporting the End-Of-Interrupt, so a new timer interrupt can not happen until the code has returned from the interrupt handler completely. This seemed to fix the Darkseed hanging problem.

Jazz JackRabbit and Tyrian 2000 began failing with a “At least a 286 processor needed” error in 0.21. I found out that Windows 3.00a only uses one protected mode opcode to differentiate between a 286 and 386 processors, so I implemented that opcode and reverted back to the original 286 CPU behaviour, so these games should now detect a 286 processor again.

Maupiti Island behaves somewhat strangely. Running the maupiti.bat it first runs maupan1.exe, which basically just reserves all memory and then returns with a Terminate-and-Stay-Resident call. However, since it has reserved all memory, there is no room for 4DOS to load itself back from the EMS swap, and thus 4DOS crashes with a memory error. Not running the maupiti.bat but running the start.com directly performs an INT F2 call (which probably would be handled by the TSR program), so it crashes when the TSR program does not exist. This I need to debug further to see if it really is incompatible with 4DOS or if DSx86 does something wrong.
Nomad I quickly debugged and saw the graphical glitches, but did not have time to work on it any further. It is on my TODO list now, though.

Princess Maker 2 seems to work fine, even though it is reported as crashing with an unsupported opcode. I could not get it to crash in version 0.21 either.

Raiden had a couple of problems, it uses the VGA Mode-X VRAM as a continuous wrap-around screen area (same as what Commander Keen does in EGA mode), which was not properly supported. I fixed this, so there should be no flashing scanlines any more (this same problem was probably in Alien Breed as well, but I haven’t tested that). Another problem in Raiden is that it wants to use the horizontal smooth scroll (like Supaplex etc do in EGA mode), which again is not yet supported in Mode-X. This problem I will try to fix in the next version.

Return of the Phantom crashes after the intro. It also shows garbage on the screen when it crashes. I did not have time to debug this further, but it is now on my TODO list.

Return to Zork is reported to fail in the VGA detection, but I could not even get it to run that far before it ran into a 386 opcode. Perhaps I have a wrong version of the game.

Robocop gives an unsupported INT call. It attempts to use the BIOS – SET EVENT WAIT INTERVAL (AT,PS50+) call, which is not yet supported in DSx86. I would like to add support for that, but this again would need another hardware timer, so I need to do some hardware timer combining to support all these additional PC timers.

Shadows Over Mordor uses a JPE opcode, and in such a way that it is impossible to code a hack for it into DSx86. So, this game will sadly go to a list of games that will not run in DSx86, most likely not ever.

SimFarm is reported to give a “Sound hardware not found” error. I could not get this error to happen, when using “SoundBlaster 2.0” setting for music and digital effects. DSx86 emulates SoundBlaster 2.0 (not Pro), so if the game offers several SoundBlaster options, use that setting.
Sleepwalker is reported to give an unsupported opcode at startup, but I could not get that to happen. I played it for a little bit, and noticed that it attempts to set a tweaked screen mode with less than 200 rows, the bottom rows of which show as garbage in DSx86. This does not affect gameplay, but I’ll see if I can get rid of this problem in the upcoming versions.
Superhero League of Hoboken performs a null-pointer call, which results in an unsupported opcode. This I did not have time to debug further, but it is now on my TODO list.
Tanx crashed with unsupported port I/O error. The game wanted to setup the programmable interrupt contoller into Auto-EOI mode, which was not supported. I added support for this mode, so the game should not crash any more.
Windows 3.00a. I checked what it requires from the EMS driver, and added the required features, and got it to use EMS memory. However, I had to comment out these changes in the end, as it looks like Win 3.00a wants to execute the programs directly in the EMS memory block, and this is not supported in DSx86. Adding support for running code in EMS memory window would slow down all real-mode code execution, so I don’t want to do that. Instead, I am looking into the possibility of adding proper protected mode support at some point. So, no change in the Windows 3.00a behaviour in this version.
Wizardry 6 is supposed to crash with an unsupported opcode on the title screen, but I could not reproduce this. It seems to run fine, also in the 0.21 version.

This was the last week of my summer vacation, so after today it is back to the normal slow progress with DSx86. I won’t have much time to work on DSx86 during weekdays, so I can not get all that much done during each two-week period. I am glad I got the internal refactoring done during my summer vacation, though, as that was quite an extensive change. I had to change pretty much every single opcode that I have been spending the last year coding.

Thanks to http://www.nintendomax.com/viewtopic.php?p=33604 for the news.

http://dsx86.patrickaalto.com/

By with 0 comments
LoneWolf DS – The Chasm Of Doom (RC1) (NDS Game)

Michoko has finished book IV of the Lone Wolf series for the Nintendo DS: “The Chasm Of Doom”.

Quote:

This adventure game is a conversion of the famous Lone Wolf gamebooks written by Joe Dever in the 80’s. This is a release candidate, so it may still contain bugs. If you find one, please contact me and I’ll try to fix it as soon as possible.

Your goal is to go through the book by choosing your path and actions interactively. You will have to fight enemies, collect items and gold and make your choices wisely to survive this epic journey!

Thanks to http://nintendomax.com/viewtopic.php?t=12161 for the news.

http://www.projectaon.org/staff/frederic/index.php

By with 0 comments
Mario Paint Composer DS – Bullet Bill (28-07-2010) (NDS Application)

Mario Paint Composer DS is an indirect remake of the music composer tool found in the Super Nintendo game “Mario Paint” with a few new adaptations.

Changes:

Here is the change log:

–Bullet Bill Release July 28 2010

-Compiled with latest libraries, may fix card compatibilities
-Uses NitroFS for argv support, results in much faster startup time
-can now change the song directory via mpcds.ini file which must be in the same directory as the rom
-removed outdated splash screens
-removed wifi news feature
-fixed scrolling issue in the filebrowser using the bottom right arrows
-updated keyboard
-updated installation instructions and controls. Also added error faq to readme.

Nothing much really new here, just a fix or two.

Thanks to http://nintendomax.com/viewtopic.php?t=12157 for the news.

http://www.palib-dev.com/forum/index.php/topic,655.0.html

By with 0 comments
LuaFWii v0.9 (Wii misc)

the_marioga has updated his Lua interpreter for the Nintendo Wii. Lua is a small and powerful scripting language that is perfect for use in projects that require changes in logic without the hassle of recompiling the program’s source code.

Thanks to http://nintendomax.com/viewtopic.php?t=12139 for the news.

http://next-gen-corp.es/viewtopic.php?p=1628

By with 0 comments
Garnatron v1.7 (Wii Game)

Carles V. Ginés released a new version of his shoot em up game “Garnatron” for the Nintendo Wii.

Thanks to http://nintendomax.com/viewtopic.php?t=12154 for the news.

http://projects.bennugd.org/?details=44

By with 0 comments
WiiXplorer (r195) (Wii Application)

WiiXplorer is a file explorer for the Wii with a GUI made with LibWiiGui.

Features:

* USB2 support with cIOS202 installed
* SMB/USB/SD/DVD recursive copy/move/delete of files/directories with all files in it
* FAT and NTFS files systems support
* Rename files/directories
* Properties of files/directories
* Browse through SD/USB/SMB/DVD/WiiDisk
* Addressbar with path
* Multilanguage with custom font support
* Boot .dol/.elf files
* Playback Wii/GC Game Videos
* Open TXT/XML/MP3/OGG/WAV/BNS/AIFF files
* Supported Image Formats: PNG/JPEG/GIF/BMP/TPL/TGA/TIFF/GD/GD2
* Imageoperations zoom/slideshow
* Image converter which converts the supported formats to: PNG/JPEG/GIF/BMP/TIFF/GD/GD2
* Screenshot support at any point of the app in different formats
* ZIP/7zip/BNR/U8Archive/RARC browsing and decompressing
* Rar browsing
* Properties of archive files
* Textediting support
* PDF Viewing support
* Integrated FTP Server and FTP Client
* Music Player
* Auto-Update feature

Changes:

*Added possibility to download an URL in the startmenu if you set it as a
download link (new question when adding anR url)
*Removed the bootup mount option. The app now boots always to the last used
path.
*Fixed halt on network init even when it failed
*OnScreenKeyboard can be opened now right from the start of the texeditor
*Changable slideshow delay range increased
*Some changes on the progressbar regarding the reset of the total tranfered size
calculation
*Lot’s of optimizations in code (more use of macros)
*Initial doxgen commit (though i don’t have so many comments yet)

Thanks to http://www.nintendomax.com/viewtopic.php?t=12166&f=54 for the news.

http://code.google.com/p/wiixplorer/

By with 0 comments
1bit Invaders v2.1 (Wii Game)

1bit Invaders is a 2D free roaming space shooter with a fully destructible environment and retro monochrome graphics. To stay alive and gain points just shoot the circles before they reach your ship. Use the wiimote to aim, B button to shoot and the nunchuck analog stick to move.

Changes:

* Added background music.
* Added classic controller support.
* small changes movement speeds and most other things.

Thanks to http://www.nintendomax.com/viewtopic.php?t=12164&f=54 for the news.

http://thatotherdev.wordpress.com/

By with 0 comments
SRB2Wii v2.0.0 (RC3) (Wii Game Port)

SRB2Wii is an unofficial port of the 3D platformer fangame Sonic Robo Blast 2.

Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog fangame built using a modified version of the Doom Legacy port of Doom. SRB2 is closely inspired by the original Sonic games from the Sega Genesis, and attempts to recreate the design in 3D. While SRB2 isn’t fully completed, it already features tons of levels, enemies, speed, and quite a lot of the fun that the original Sonic games provided.

http://wiibrew.org/wiki/User:Callum/Sonic_Robo_Blast_2

By with 0 comments
StartPatch v4.3.1U (Wii Application)

StartPatch is a homebrew application that patches your System Menu v4.0, v4.1, or v4.2 in a similar fashion as Starfall. It is based upon Menu Patcher by Isaac356.

Features:

Region Free Wii Games – Allows you to Play Import Titles.
IOS Selection – Allows you to select which IOS you would like to use.
Disable HAXX, DVDX, RZDx Checks – Disables the System Menu from blocking Homebrew.
Block Disc Updates – Blocks updates which have been embedded in Discs.
Block Online Updates – Prevents online updates being installed.
Region Free Channels – Allow installation of any region Channels.
Region Free GC Games No VM Patch – Removes region restrictions on Gamecube games.
Remove NoCopy Protection (Need To Install ALL Five) – Removes the Save File Copy Protection, which prevents Save Files from being copied to SD Cards.
Move Disc Channel – Enables the Disc Channel to be moved.
No Menu BG Music – Removes the System Menu’s background music.
Recovery Mode 4th GC DPad UP – Allows you to enter the Wii’s Recovery Mode easily.
Remove Diag Disc Check – Remove Diagnostic Disc check.
Auto-Press A At Health Screen – Automatically presses “A” for you at the Health Screen.
Replace Health Screen with Backmenu – No longer displays black/white health warning screen, so no need to press A, it will go straight to the channels screen.

Brick Warning
In the unlikely case that you lose power during patching process, you may brick your Wii. This will only happen if you lose power while the patches are being applied, and as this is a quick process, there is small risk of bricking. However, if you do brick, no one is responsible. There is no warranty with this app. You should take a BootMii NAND dump and have BootMii installed as boot2 (if possible) as a precaution.

http://wiibrew.org/wiki/StartPatch

By with 0 comments
2nd GP32spain.com Coding Competition Entry Information (Wiz misc)

A list of entrants has been published, soon we can count with the following new fine products for our beloved Wiz.

Emulators
Ginge (notaz) [New emulator]
PCSX4ALL (Franxis & Chui) [New emulator]
PocketSnes v7.0.0 (Bitrider) [Updated emulator]
WS4ALL (Puck2099) [New emulator]

Games
Agressive Pong (EugeneP)
Before We Were Dead (Daniel Eriksson & Marcus Fredriksson)
Coapres (endaramiz)
Coral Sea (Isidor)
Cubex (Thor)
Firewhip (Coelophysis)
Fy.WoD! (Schnatterplatsch)
Guru Logic Champs (Ian Price)
Ken’s Labyrinth (Pickle)
Operation Fenix (Colombian Developers)
OTO Engine (Nuria)
Polarity (TJ Hooka)
RotaCuadre (Melow)
Screen Break Time (Futublog, Fede, PrinceMegahit & Drumpi)
Sqrxz (Thor, Kojote & Others)
TankRobot (Neurox)
Wiz Shooter (JQJDE)
Zombie Sorbet (Linda Randazzo & Andre T. Johansen)

http://gp32spain.com/foros/showthread.php?s=&threadid=75730

By with 0 comments