Jump to content

Work in progress


doublec

Recommended Posts

I keep the dsemu Darcs repository updated between releases for those who want to try out features between releases or to hack on the code. Details are here:

 

http://www.double.co.nz/nintendo_ds/dsemu.html#source

 

Recently I pushed a partial implementation of the IPCSYNC register. This is used by the Nintendo Downloadable E3 demos to synchronise actions between the ARM7 and ARM9. I'll post on this thread as I add things to the darcs repository.

 

Currently working on:

 

- Finishing IPCSYNC. Raising interrupts when the register changes is all that needs to be done.

- Fixing implementation of coprocessor 15 memory regions. The memory access routines do not take into account the fact that the regions can be changed. This affects ARM9 memory access.

- Implement FIFO registers.

- Try to get dslinux further along its boot process.

 

Still looking into what is lacking in the DS graphics support.

 

Any requests for features? I can shuffle the order of things around if there is interest.

Link to comment
Share on other sites

  • Replies 28
  • Created
  • Last Reply

Top Posters In This Topic

I don't know anything much on the technical side, here's my list:

 

* Get X and Y keys working

 

* Get graphics working better to whatever level you are able to do

 

* At one stage dsemu could play GBA demos, this hasn't worked for a while. Although not important (there are other GBA emus around), the real DS can play them, so any DS emu should be able to as well.

 

* Is it possible to read a rom's header info to determine if it's a GBA or DS (wifi) or DS (passme), or whatever else? Rather than manually loading GBA or DS?

 

* Be able to support passthrough (PME / DS.GBA / NDS.GBA) demos

 

* Sound

 

* Is it possible to somehow automatically determine what kind of touchscreen support is needed (different ndslibs) and work accordingly?

 

 

 

I'll post more if I think of something.

Hope it's not too much.

Link to comment
Share on other sites

Thanks for that. The GBA emulation is broken because I don't build the gba DLL file. I'll be including that in the next release or two. Hopefully I haven't broken anything in that area.

 

I can determine if things are a gba or ds file I think, I'll have a play with it.

 

The touchscreen support should work whether ndslib1 or 2 is being used. I've implemented the lower level touchscreen support (the serial access to the touch screen controller) which all touchscreen access goes through eventually. My initial stab at this should work for ndslib as I specifically implement the access protocol they are using to talk to the touchscreen controller. Other libraries will probably work. Some do things slightly differently and I'll be more completely implementing the touchscreen controller soon. I recently downloaded the docs for it so hope to be able to fully emulate it.

 

On the good news front, I got DSLinux partially booting yesterday. It runs up to the point of mounting the root partition and then fails there. This required lots of fixes to the ARM9 instruction emulations. The code is in the darcs repository. DSLinux does lots of stuff with interrupts and cpsr manipulations that most homebrew demos don't so it's a good test. There are still a few problems in the emulation of some arm instructions so I may need to write some test cases of all the instructions to iron things out. It'll be good for regression testing changes to the emulator too.

 

So I'm pretty much working in the following order:

 

1. Fix ARM instruction emulation bugs.

2. Get X/Y working

3. Finish touchscreen implementation

4. Put GBA back in the emulator.

 

5. Fix up graphics issues.

6. Improve debugger

7. Sound, and other stuff.

 

I'm pretty fluid though, so the list may change. Number 1 will take a while so it'll be a bit longer for the next release. I need to write some short ARM snippets that execute every emulated instruction to test they all work right.

Link to comment
Share on other sites

I've released 0.4.5 with some fixes before I start the things mentioned above. It contains a speed improvement, various bug fixes, and partial mode 5 support. Finally Space Invaders 0.2 runs! But quite slowly unfortunately. Something to work on.

Link to comment
Share on other sites

  • 2 weeks later...

I've added to the darcs repository for dsemu code that more correctly implements the vram bank mappings. This change allows the latest WinS to work correctly, including both screens and keyboard.

 

Unfortunately some demo's that didn't work before but partially ran now crash so I'm tracking that down before I release a new version.

 

I've also got submitted patches that will go in the next version for x/y key support and a logging window for the GUI.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...