Sunday, December 25, 2005

Nintendo DS Wifi library released

Stephen Stair has released the source to his Nintendo DS Wifi library.

On his December 24th entry he notes that he may not have as much time to work on it as he has in the past so has released the source as is for the library and the test application.

This library allows writing homebrew programs to wirelessly communicate over the internet using UDP, with TCP and other support 'in progress'.

The example program shipped with the source is the wardriving test application that shows a list of wireless access points that the DS can pick up.

It should now be possible to work from this to start creating some wireless applications in Nintendo DS homebrew.

Categories: ,

Thursday, December 22, 2005

Python on the Nintendo DS

Could the Python programming language be coming to the Nintendo DS?

It looks like it according to this thread on the comp.lang.python newsgroup.

Apparently it runs on the Dualis emulator but currently has corruption problems on the actual hardware. A link to download the source is available from the posting but it only seems to include the source for the keyboard. The posting mentions having to link against the standard Python static library. From the post:

You click on keys on the touch screen to enter input. Notes: The clicking on keys in the emulator is extremely non-responsive, on the DS, it is perfect. Also, the emulators do not handle displaying the right bits and pieces to the right screen, so the keyboard is displayed on the top screen and the console on the touch screen (so its kind of hard to use as you can't see the regions on the touch screen to click on). The .nds file can be recompiled to use the lcd screens right for emulators, but the .nds file was compiled to work correctly on a DS.

A problem.. On Dualis, the interpreter works perfectly. However, on the Nintendo DS, it is completely unreliable and seems to corrupt at random points. Occasionally you can get to the command line and enter one command or two, but its guaranteed to corrupt at some point. I
have no idea why this is. I have to assume that Dualis implements the processor and hardware specs more flexibly than they actually are on the DS. And that there is some way the compilation options or linking options can be modified to restrict the output to what the DS can actually run.

Nintendo DS Python Screenshot

Categories: ,

Wednesday, December 21, 2005

Nintendo DS tutorials updated

I've made some small changes to my Nintendo DS Homebrew tutorials.

The main changes were to check that they worked with the latest devkitpro and libnds releases. As the Nintendo DS toolchain is in rapid development, quite often things in the tutorials break on each release.

I've put a section at the top of each tutorial outlining the version of libnds it was tested against, and whether it runs in the DSEmu emulator.

A couple of tutorials still don't work and I've yet to track down the reason. In particular the SRAM, FIFO and Mode 5 tutorials are broken. I hope to fix these soon.

Categories: ,

DSEmu 0.4.9 is released!

I've build and released a new version of DSEmu, the open source Nintendo DS Emulator.

This version is mainly to get things working with the latest version of devkitpro and libnds. Recent updates to that toolchain changed slightly the way the touchscreen data is read. This completely broke the touchscreen in DSEmu. It also triggered a couple of other bugs related to hardware divide and thumb emulation.

The main fixes in this release were:
  • Fixed Thumb emulation bug the was occasionally causing black screens and crashes.
  • Fixed touchscreen bug that prevented it from working with devkitpro release 17.
  • Fixed even more SWI divide bugs with patch by Mark Winney.
  • Fixed some bugs in DMA and SWI divide handling.

The goal for the next release is to get the sprites and other graphic problems fixed and fix the thumb emulation issues once and for all.

Categories: ,

Tuesday, December 20, 2005

Linux Wireless Multiboot

A common method of download homebrew software to the Nintendo DS has always been 'wifime'. This uses wireless to send a ROM file to the Nintendo DS using the standard 'DS Download Play' option on the Nintendo DS.

Unfortunately WifiMe was never open sourced and was Windows only. The site is now closed, although the files are still available for download. Recently another option has become available. That is a version of the 'Wireless Multiboot' software that runs under Linux and is open source.

A tutorial on how to get things going is avaialble at the WMB setup page at the DS Wiki.

I followed the tutorial using Ubuntu Linux and it worked fine. Once all the steps were followed I was able to successfully send homebrew code to my Nintendo DS from within Linux. The tutorial makes use of libnifi which is an open source library for the wireless protocol that the Nintendo DS uses.

The only thing holding me back from being able to use Linux completely for developed Nintendo DS programs is lack of Linux software for my Gameboy Advance flash card. I might look into getting a GBA Movie Player or some other alternative mechanism for running homebrew.

With the Linux based wireless multiboot solution it's possible to do everything without a flash card of course. But it does limit the size of the data that can be stored for the program to access.

Categories: , ,

Nintendo DS Homebrew

I've decided to set up this domain to provide more timely information on the status of my various Nintendo DS Homebrew projects, as well as the status of DSEmu, the open source Nintendo DS Emulator.

Previously I was keeping updates on releases at my Nintendo DS website but the time between releases has been longer and longer, but I still make changes and updates in between. I'll be posting about those here, as well as anything else regarding my tutorials, etc.

Not much has changed with DSEmu since the 0.4.8 release, only minor bug fixes. I plan to release a new version in the next couple of weeks with these fixes as well as quite a few more. I will also be updating the tutorials to make sure they work with the current versions of DevkitPro and libnds.

Categories: ,