TODO List

= Tasks =

This page is kind of a TODO list for the Dolphin project: project members add interesting ideas they don't have time to implement here. If you are a developer looking to contribute to Dolphin, picking one of these ideas might be a good way to start! Join us on IRC to ask for more informations if needed: #dolphin-dev @ freenode.

Add curl support
* Proposed by: Parlane * Difficulty: average * Blocked by: Replace OpenSSL in wii-network

Curl is needed for the WC24 side of things and would also be beneficial to the "Check for updates" task below. We need to make sure we can have curl work with PolarSSL.

"Check for updates" feature
* Proposed by: Parlane * Difficulty: easy

Will require some changes on the website side, ping delroth if you want to work on that.

Hardware errors detection
* Proposed by: delroth * Difficulty: average

A lot of people overclock their CPU and/or memory to run Dolphin at full speed. This could potentially cause stability issues misdiagnosed as bugs in Dolphin. I'm not sure if there is an easy way to check for this kind of issues because they are very random (compared to issues due to bad memory), but having this kind of feature might be a good way to avoid invalid issues.

Generate crash informations on JIT segfault
* Proposed by: delroth * Difficulty: easy/average

When JIT-ed PPC code crashes because of an invalid memory access, the curent behavior is to display a cryptic message box to the user ("BackPatch - no support for operand size 1", or "Unhandled disasm case in write handler") and/or kill the whole program. This makes it hard to debug these issues after the crash happened because no debug informations has been left behind.

Writing a crash dump file with the PPC backtrace, state of all the PPC registers, x86 code of the JIT block that caused the crash + exact instruction causing the crash, and maybe informations about the user hardware would be very nice.

Implement Post-Processing shaders in D3D11
* Proposed by: Sonicadvance1 * Difficulty: average

The OpenGL backend already supports post-processing shaders while the D3D11 backend doesn't. Implementing this feature should allow persons to use the same shaders for both the D3D and OGL backend by abstracting portions of the shaders out.

Implement more fastmem methods
* Proposed by: Sonicadvance1 * Difficulty: average/hard

Fastmem/backpatch has long been a method in Dolphin to gain additional(5-15%) speed out of a game due to slow memory accesses. Currently this is only being done for 32bit loads. Memory accesses can be further sped up by supporting 32bit stores and then even moving down to the 16bit and 8bit loads and stores.

Fix CPUCompare
* Proposed by: Sonicadvance1 * Difficulty: average/hard

CPUCompare should be a very nice and easy way to directly compare the results between two CPU cores and see where they differ. A broken implementation has been in the source since open source birthing but nothing has been done with it. This could be gone about in a couple ways. Be it running two CPU cores side by side in the same program instance or two processes running and comparing real time.

Qt GUI
* Proposed by: neobrain * Difficulty: easy/average

There are lots of advantages of Qt over wxWidgets, and if you ever had to use one or the other you probably know why Qt rocks and why wxWidgets often is kind of "meh" to work with. The initial Qt GUI living in the dolphin-qt branch has been written by neobrain and recently brought up to date with recent master changes. Things left to do until a merge to master can happen include but aren't limited to: * Windows build files * Proper theming * Implementation of enough basic functionality so that daily usage is possible * Switching from Qt to wxWidgets and vice-versa needs to be possible without requiring a full rebuild.

Janitorial Tasks
* Search for "Todo" in the source and try to work out how complete the todo. * Make it compile with no warnings. Make sure to use warning flags when compiling! * Do not fix warnings in code that you don't understand! * It's not worth the risk of breaking things. * Fix the easy issues or any of the other issues on our tracker.