Archive for January, 2008

January 31st, 2008 by nkeynes
lxdream 0.8.3 released
Posted in Releases

Last 0.8 point release, I swear. Just for a change, this one actually has some new features too. Specifically, it now runs linux (now some may argue that that’s not actually a _useful_ feature, but it’s a nice milestone)

With that out of the way, I think it’s finally time to rip the renderer apart and fix it all up, don’t you? ^_^

What’s New

  • MMU Implementation – As previously noted, linux-dc now runs quite well, albeit slowly.
  • Dreamcast mouse and keyboard controllers (also rather essential for running linux-dc)
  • Support for real joysticks and gamepads (linux host only)
  • Various bug fixes

Other Changes

  • Change timer (TMU) interrupts to be precise (within the bounds of a code block anyway)
  • Implement SLEEP op properly in translator
  • Clamp run speed in the GUI if it’s running too fast
  • Run event loop more frequently to avoid missing keyboard events
January 23rd, 2008 by nkeynes
Linux booting
Posted in Development

After fixing some boneheadedness in the ASIC event code (and a whole passel of translator caching and other bugs), I’ve finally gotten to the login prompt:
Linux-dc login prompt
(to clarify, this is the dreamcast-linux-010605 ISO that Takeshi Yaegashi put together several years ago, running a modified 2.4.5 kernel)

Unfortunately (after the happy dance), it was at this point that I realised I haven’t actually implemented the keyboard yet, so it’s impossible to do anything useful with it. It’s also admittedly painfully slow to start, but I was expecting that (TLB lookup is currently near pessimal).

Anyway, working on the keyboard driver now ^_^.

PS: If anyone has a working link to this image, please let me know where it is (I’d like to keep a link to it) – my google-fu has utterly failed to turn up a good version as yet, and my own copy is only on a somewhat scratched CD…

  • Add VMA support to the SH4 disassembly functions
  • Handle out-of-page delay slot execution with emulation single-step
  • Finish translator breakpoint implementation
  • Fix a pair of long standing ASIC event bugs
  • Fix xltcache forgetting to clear references to blocks before overwriting them
  • Fix recovery + backpatch records not being position independent (big duh!)
  • Fix yet another translate block bounds overrun
  • Fix MAC.L/MAC.W exception handling (broke the stack if the second arg caused an exception)
  • Fix various other minor bugs

Update: Just hacked together a quick keyboard driver, able to login and launch X now. Excellent…

January 16th, 2008 by nkeynes
lxdream-mmu merged
Posted in Development

Now that the mmu branch is running on all three platforms, I’ve merged it back to the trunk. Which is not to say that it’s _finished_ (it still doesn’t fully boot linux-dc), just that it doesn’t break anything that was previously working (to the best of my knowledge).

I’ve also working on some preliminary joystick/gamepad support (linux /dev/input/js*) – the driver itself is nearly trivial (the linux input interfaces are pretty nice), but I need to refactor our input event handling a little (currently it expects all input events to come from the UI).


  • Add support for breakpoints in translated code (about time)
  • Add MMU store-queue support
  • Handle dreamcast_stop() and dreamcast_reset() properly from translated code
  • Fix MMU build on OSX and x86-64
  • Fix testsh4x86 compilation
  • Fix TRAPA in emulation core
  • Fix MMU support in emulation core
  • Fix ITLB
  • Fix delay slot exception translation issues
January 11th, 2008 by nkeynes
Happy New Year!
Posted in Development

Hope everyone had a good christmas ^_^.

Second iteration of the MMU implementation is nearly done – it’s now slightly faster with MMU off than 0.8.2, which is nice (MMU-on is still rather slow, but I’ll worry about that later). The (old) version of linux-dc I’m using is still not booting yet though (odd IRQ errors now). Hopefully not much further now…