It goes without saying that I am always trying new ideas, but I will share them from time to time on this page when they evolve into actual projects. I am now working on PhilPSX again, and am planning to improve it to the state where I can play the various Final Fantasies on it!
By far the most ambitious project I have ever attempted, this project was the result of my final module with the Open University, TM470, which I have now completed. The emulator works but is still unfinished as of the end of the degree, so I will be continuing work on it. It is a Sony PlayStation 1 emulator, entirely written in Java. I know, most of you are probably thinking "why Java?".
This response was the main reason for the project - I aimed to investigate dynamic recompilation techniques, but in this case the dynarec was not to compile native code but instead Java bytecode.
The current state of the emulator is that it boots and runs some commercial software, such as the BIOS itself and Crash Bandicoot 1. It has a fully implemented GPU, and the CPU (currently strictly interpretive) and co-processors are now fully implemented, with the exception of the MDEC which decompresses video data. The CD-ROM drive code is mostly finished, and there is of course a huge amount of code handling the connections and logic of the console itself. I have also made use of a graphical debugger which I wrote at the start of the project. I can't stress enough how much this helped - it allowed me to compare my results with known-working properietary emulators from other authors, to hone in on eventually booting successfully.
I stepped away from PhilPSX for a while, due to work and family life commitments, but I'm back now. Since I am no longer hamstrung by the constraints of a formal academic structure, I have now finished rewriting PhilPSX in my favourite language, C. Although it now has feature parity with the Java version, and is a lot quicker due to various algorithm tweaks, there is a long way to go still. It will primarily be compatible with GNU/Linux and other *NIXs such as FreeBSD to start with, as I feel this field is under-represented by fully debuggable PlayStation emulators for these platforms (although there are many great emulators on them for sure). I aim over the coming months to improve compatibility and implement the MDEC and sound support among other things. Then the dynamic recompiler will be needed. The speed is now just about real-time, although this is still just with an interpreter core.