HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
kstenerud
Musashi
C2014–2026
kstenerud / Musashi

Musashi

Motorola 680x0 emulator written in C

6Distinct people
12Mentions
0Explicit recommenders
645GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Motorola 680x0 emulator written in C

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year12 dated mentions

Observed mentions: 2014-09-21 21:54:23 UTC to 2026-09-02 23:04:56 UTC.

0122014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC211
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC211

What Hacker News says

12 sources
SNK were the gods of the 68000. I still remember back in the day getting a bug report on my 68000 emulator: When playing King of Fighters, the time counter would go down to 0 and then wrap around to 99, effectively preventing the round from ending. Eventually I tracked it down to the behavior of SBCD (Subtract Binary Coded Decimal): Internally, the chip actually does update the overflow flag reliably (it's marked as undefined in the docs). SNK was checking the V flag and ending the round when it got set. https://github.com/kstenerud/Musashi/blob/master/m68k_in.c#L... SBCD was an old throwback instruction that was hardly used anymore, and the register variant took 6 cycles to complete (vs 4 for binary subtraction). HOWEVER... For displaying the timer counter on-screen, they saved a ton of cycles with this scheme because extracting the digi
Read the rest
ts from a BCD value is a simple shift by 4 bits (6 cycles) rather than a VERY expensive divide (140 cycles).
In Make the most of compiled C loops on the 68000
https://concise-encoding.org/ will be released this year and has been in development for 5 years. This one has been slow because of all the support projects such as https://github.com/kstenerud/compact-float and https://github.com/kstenerud/compact-time and https://github.com/kstenerud/enctool https://github.com/kstenerud/dogma has been in development for 4 months and will be released in about a month. This is yet another support project for Concise Encoding (hopefully the last!). https://github.com/kstenerud/kscrash was in development for about a year and a half before being released. https://github.com/kstenerud/Musashi took just under a year before its first release as a MAME core (after a TON of testing - I spent 4x more time testing it than I did writing it). But other smaller things that don't require so much precision I just write
Read the rest
up in a couple of weeks and release, such as https://github.com/kstenerud/virtual-builders The key is to build empathy with your potential users. What will their motivations be that lead them to try out your project? What will they be looking for when they use it? What would someone who has never seen the project before struggle with? (that last one is the hardest because you're so close to the project that it's hard to see what it's like to know nothing about it). These tell you what kind of UX you'll need, what kind of documents you'll need, what kind of tutorials you'll need, how to structure your project for your target audience, etc ("it's for everybody" is never a good idea). Building a project is a lot like building a startup. You need to figure out your target market. That means lots of tests, lots of talking, lots of listening, market research, competitor analysis, even some pivots. A lot of times it comes down to recruiting people to just try it and do a brain dump of everything that goes wrong or frustrates or confuses them. I've done show-HN posts for things that are unreleased (e.g. https://news.ycombinator.com/item?id=34720488 ), just to get the valuable criticism. It's nearly impossible to develop good projects in a vacuum. If you're not posting out of worry for doing it wrong, THAT IS doing it wrong. The point is to find out where you're doing it wrong so that you can correct it! And that's where the crowd is a HUGE help. You can't build something great without looking foolish first.
In Ask HN: How long does it take for you to release your open source project?
This is a very sucky situation to be in, and I've been on both sides of it. I wrote KSCrash [1] a decade ago, and it's become the de-facto standard for crash handling in the Apple ecosystem. I didn't intend for this to happen; I just wanted crash handling MY way. But it's my baby, and I need to support it (technically no, but yes I do), even though I get no financial benefit from it. For a year, I was paid by a private company to supercharge it, but that funding dried up, and as a result the Android port stalled because I took a new job to pay the bills, writing Java code. Musashi [2] is a smaller example. It's an emulator, so it doesn't need nearly as much attention. All the same, a number of 68k based anthology releases for popular game systems used it and contributed neither fixes nor funds. I don't mind so much with this one because,
Read the rest
as I said, it's pretty low maintenance. Today, my latest itch is efficient and human-accessible data communications, and so I'm spearheading a new bidirectional, general-purpose, platform agnostic, encryption-capable, transport-agnostic RPC protocol [3], including all of the supporting technology it requires [4] [5] [6] [7] [8] [9]. If it takes off, it will save the entire planet a TON of time, energy, and cost, and I'll probably not see any donations or thanks from those who benefit the most. Please don't take this as complaining. I'm still going to develop and support my babies, because I'm not doing this for the money; I'm doing it to better the state of computing systems (mostly for my own sanity). However, because I'm forced to find separate employment to support my family, it leaves me with FAR less time to focus on these technologies. My estimate would be that I'm running at 1/4 my usual velocity when I require separate employment. For bigger projects that turns a 1 year project into 4 years. However, from a company perspective I also understand. Giving donations is actually a big pain in the ass, especially if it's to a foreign entity. Normal invoices are FAR easier, but then how do you structure it for free access + payment options without pissing people off? It's a tricky situation... [1] https://github.com/kstenerud/KSCrash [2] https://github.com/kstenerud/Musashi [3] https://github.com/kstenerud/streamux [4] https://github.com/kstenerud/concise-encoding [5] https://github.com/kstenerud/compact-float [6] https://github.com/kstenerud/compact-time [7] https://github.com/kstenerud/varpad [8] https://github.com/kstenerud/variable-bit-padding [9] https://github.com/kstenerud/vlq
In FUSE for macOS is no longer open source
I've always taken this approach. Before I wrote KSCrash [1], I didn't have a CLUE how crash managers worked. In fact, here's my first implementation of a crash handler [2], which did EVERYTHING wrong. I ended up innovating a number of things that were thought impossible at the time, but are commonplace today (such as tapping into the Mach error handlers). It was the same for the Musashi 68000 emulator [3]. Before I wrote this, I had no experience with emulation other than playing one of the Pac Man emulators in the 90s, and yet the first iteration outperformed the x86 assembler core in Mame by 15%, and thus replaced it in the next version. 6 months ago, I didn't have a CLUE how ieee754 floating point worked. Now I've developed a floating point compression algorithm [4], which is being used in Concise Binary Encoding [5], also something I'
Read the rest
ve never tried before. You absolutely should try diving into things before you know what you're getting into. Even if it doesn't turn out the way you wanted, you're in for one hell of a ride, and what you'll learn is priceless. [1] https://github.com/kstenerud/KSCrash [2] https://github.com/kstenerud/Crash-Manager [3] https://github.com/kstenerud/musashi/ [4] https://github.com/kstenerud/compact-float [5] https://github.com/kstenerud/concise-binary-encoding
In Start before you think you’re ready
Location: Canada and USA Remote: Yes (only remote) Willing to relocate: No Email: kstenerud@gmail.com Linkedin: https://www.linkedin.com/in/kstenerud Résumé: I have years of experience up and down the stack, but my favorite is at the low level, poking hardware if possible. Technologies: C, C++, C#, Assembler, Java, Python, LUA, MySQL, Postgres, BASH, learning Rust Platforms: Linux, Windows, Mac, iOS, Android, Arduino Notable OSS projects: https://github.com/kstenerud/KSCrash https://github.com/kstenerud/ObjectAL-for-iPhone https://github.com/kstenerud/iOS-Universal-Framework https://github.com/kstenerud/Musashi
In Ask HN: Who wants to be hired? (February 2017)
SEEKING WORK Location: Canada and USA Remote: Yes (only remote) Willing to relocate: No Email: kstenerud@gmail.com Linkedin: https://www.linkedin.com/in/kstenerud Résumé: I have years of experience up and down the stack, but my favorite is at the low level, poking hardware if possible. Technologies: C, C++, C#, Assembler, Java, Python, LUA, MySQL, Postgres, BASH, learning Rust Platforms: Linux, Windows, Mac, iOS, Android, Arduino Notable OSS projects: https://github.com/kstenerud/KSCrash https://github.com/kstenerud/ObjectAL-for-iPhone https://github.com/kstenerud/iOS-Universal-Framework https://github.com/kstenerud/Musashi
In Ask HN: Freelancer? Seeking freelancer? (February 2017)
You do whatever it takes to survive. I still remember making $20 last the entire month for food for two early in my career. I remember being rendered destitute. Twice. I remember having the tax man on my ass for a ton of money I didn't have after a particularly catastrophic failure. I've lived in 2 square meters of space while looking for a job. During that time, I wrote https://github.com/kstenerud/Musashi to keep myself sane. I've begged family members for a plane ticket just to get me the hell out of a bad situation. Now, 20 years into my career, I finally have some stability. Part of that is my fault, since I'm entrepreneurial at heart, and I'm too stubborn to lie down and die. When you're not born rich, you have a big challenge ahead of you. You fight, or you die.
In Developers are not always rich people
Self-modifying code is a classic way to observe differences among various implementations. As a random example of an emulator that needed this that I found, https://github.com/kstenerud/Musashi/tree/master says: - M68K_EMULATE_PREFETCH emulates the 4-word instruction prefetch that is part of the 68000/68010 (needed for Amiga emulation). Or, http://www.atari-forum.com/viewtopic.php?f=68&t=12313 mentions: Instruction Cache Self modifying code loops wont work on the 68010+ because it's (sic) instruction cache has no writeback stage. You must replace all examples of SMC or switch off the I cache.
In The rep prefix and detecting valgrind (2012)

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.