September 13th, 2007 by nkeynes
After much umming and ahing, I’ve scrapped the translator generator for the time being – it’s become far too complex for its own good, and just wasn’t going to be finished in a reasonable time. I will be keeping the original (much simpler) decoder generator though as part of the lxdream source tree. So, instead I’ve been working on finishing the instruction-at-a-time translator (ie, the simplest thing that could possibly work) with a view to getting it working and seeing what the performance is like, before getting into anything more complex.
The translator is now in an early testing form, which is to say that it’s mostly complete, and you can actually run it on real code, but it doesn’t work very well yet. I’ll be spending the next few days polishing things and getting the test suite running correctly, and then we can start testing for real.
- Committed decoder generator for SH4 core, disassembler, and translator
- Committed instruction-at-a-time translator and hooked up via a command-line option
- Merged i386 disassembler from binutils (for debugging purposes)
- Fixed mac.l and mac.w opcodes in the emu core (they look to have been completely broken)
- Fixed some edge cases with float and ftrc (still checking other FP opcodes)
- Fixed crash when video driver failed to initialize (now degrades a little more gracefully)
- Hooked up video shutdown call for the GTK/GLX driver so that it actually works now
- Fixed rendering in headless mode (now it just doesn’t render anything, rather than crashing)
- Added ability to terminate after a specified period of emulated time (useful for time trials)
- Added many more SH4 test cases