logoalt Hacker News

Musashi: Motorola 680x0 emulator written in C

119 pointsby doeneryesterday at 12:51 AM14 commentsview on HN

Comments

kstenerudyesterday at 7:56 AM

Wow! Wasn't expecting this to be on HN.

So here's the backstory:

I'd just graduated from BCIT a year before. A friend invited me to visit Japan, so I got a working holiday visa, hopped on a plane, and there I was in a 1K apartment with 2 other people. I had one whole square meter of floor space for my computer (which I'd packed with me) and a donated monitor.

While looking for tech work, I fiddled around with MAME, doing small fixes to drivers and such, but I'd always had a love for the 68000 chip (from my Amiga days), so I looked at what MAME was doing and saw that its 68k emulator was written in assembler.

So I set a goal: Can I outperform the current assembler core with one written in portable C? Spoiler: Yes.

I spent 2 months sitting Buddha-like on the tiny square of floor in between job interviews, writing (and leveraging MAME's debugger). My proudest moment was when I finally saw the title screen for Rastan Saga pop up! (of course it crashed on launch, but still)

I named it Musashi, after Shinmen Musashi-no-Kami Fujiwara no Harunobu (新免武蔵守藤原玄信), commonly known as Miyamoto Musashi, who wrote the Book of Five Rings - a book that had a huge effect on me.

show 2 replies
kazinatoryesterday at 2:34 AM

I made one a 68010 emulator in C in 1994.

For the opcode dispatch, I made a file which consisted of regex and name pairs. The regexes matched strings of 0s and 1s: the bit patterns of the opcode space. The names mapped these to C functions. A script processed the file, generating the dispatch switch.

I seem to remember that on a 66 MHz 486 DX2 box running Linux, the thing was emulating about half a million instructions per second.

Code: totally lost to the sands of time.

rcarmoyesterday at 7:07 AM

I took a look at this during my holiday break (where I was hacking BasiliskII to do JIT emulation on ARM), and it’s quite neat but, IIRC, wasn’t enough of a speed up over the existing emulator.

show 1 reply
self_awarenessyesterday at 6:07 AM

FYI: MIT licensed

show 1 reply