S4E421 — The Commodore 64 hardware simulator: break chips and pins, see the results
October 18, 2026 · 11 min
Show notes
Sources
Read the transcript
Transcript
GARY: Okay — so I found this thing where you can break a Commodore 64 over the internet, and I have already broken mine, and I need everyone to stay calm.
MAEVE: Maeve. General partner. I don't own hardware; I own exposure to hardware.
OBI: Obi. Fifteen years of being paged when someone's thing breaks at two in the morning. Which is now. Which is you.
GRUNER: Gruner. Field researcher. Humans now break computers recreationally. Noted.
GARY: No, no — it's a simulator. antirez built it. It simulates the whole Commodore 64 motherboard, the 250407 board, pin by pin. You lift a chip leg, short it to ground, pull a chip out, and it computes what the screen does.
MAEVE: Two hundred sixteen parts. Two hundred forty‑nine nets. The board is a portfolio and every pin is a liability.
OBI: And it's not a game emulator. It's for repair. You test a broken‑board hypothesis before you desolder anything, because desoldering is boring and every pass risks the board.
GARY: It runs slow, though. Thirty‑one percent of real speed on an M3 Max, thirty‑nine on that big AMD, forty‑eight on an M5 Max. Which is — fine. That's fine. Slowness is a feature, probably, shit.
MAEVE: Forty‑eight percent is a growth story. I've funded worse.
GRUNER: Machine runs at half speed. Humans call this "release".
OBI: Here's the good one. Lift pin seventeen on the color RAM before power‑on — the machine boots and looks completely healthy.
GARY: That's — wait, broken and healthy? That's like my third —
OBI: The CPU writes and the video chip reads the same wrong address. The RAM just aliases. Nobody notices.
GARY: So you put the pin back and it's fixed.
OBI: You put the pin back and the half of the RAM that was never written shows up as random colors. Repairing it breaks it.
GARY: So the fix is the bug. I have shipped that. Twice.
MAEVE: I've seen that company. I passed.
GRUNER: Lift pin again. Screen clean. Blyat, it is magic smoke all way down.
GARY: Okay, comments. dwheeler: "I wonder if its code could be optimized to run in real time?"
OBI: A question. With a question mark. Civilized.
GARY: LoganDark: "Sounds like an optimization opportunity. Might take a look."
GARY: No, but — rfgplk. "Just glancing at the source you could do easy 100x performance improvements with simple fixes."
MAEVE: One hundred times. From glancing.
OBI: Glancing. The most rigorous of the research methods.
GARY: No, he's got specifics. No SIMD, no reordering, cache trashing, zero multithreading. That's a real list. I've written that list. Thermal had the same problem — the telemetry worked, the — the point is the code under it was not optimized, and I saw it immediately.
OBI: You glanced at a sock company.
GARY: I glanced at everything. That's why I'm fast.
OBI: Gary. The simulator settles two hundred forty‑nine nets, every half‑cycle, in three stages. Row address, then RAS falls, then CAS falls. What exactly do you delete?
GARY: The — slow parts.
OBI: Name one.
GARY: The floating lines. Nobody needs floating lines.
OBI: The floating lines are the product. That's the fault model. You'd optimize the simulator by removing the simulator.
GARY: Fine — threading, then. Four threads. Eight threads. However many threads exist.
OBI: The chips synchronize at least once per emulated clock. Twice, if you count the phi‑one and phi‑two half‑cycles. Your threads would spend their entire life in a handshake.
GARY: That's — okay, but modern CPUs are so fast the handshake is basically free, it's like—
OBI: It is not free, you absolute benchmark tourist.
MAEVE: He's priced it at one hundred times and hasn't opened the file.
GARY: I don't need to open the file. The pattern is known. Redis was fast. I once made a thing fast—
OBI: Name the thing.
GARY: —there was a caching layer at Pareto—
OBI: Pareto deleted eighty percent of the tasks. The cache had nothing to do.
GARY: The lawsuit was unrelated!
GRUNER: Man defends stranger's benchmark like own child.
MAEVE: It's a roll‑up. Antirez wrote Redis; rfgplk glanced. The glancer always quotes a round number.
GARY: Because round numbers are how you know it's easy!
MAEVE: That is the single worst diligence heuristic I have ever heard, and I once funded a man who believed in auras.
OBI: Antirez measured. Thirty‑one percent on an M3 Max. Thirty‑nine on the AMD. Forty‑eight on an M5 Max.
GARY: Right, and each of those is a hundred‑x away—
OBI: Forty‑eight percent, Gary. The best computer on the list runs at half speed, and you're holding the receipt that says why.
GARY: The receipt is wrong because the receipt—
MAEVE: Oh, fuck off.
OBI: The receipt is a comment you quoted to us, you magnificent prick.
GRUNER: Half speed. And man still wants discount. Blyat.
MAEVE: flohofwoe: "Now that you said this you really are expected to do a proof‑of‑concept implementation that is 100x faster, but with the same low‑level concepts."
MAEVE: He also says: "I think 2..3x might be achievable."
OBI: Two to three. From the man who wrote the chip cores the simulator runs on.
GRUNER: Author of parts arrives with invoice.
MAEVE: He's doing the napkin math. "100x faster would mean around 30x faster than a real C64."
OBI: A C64 clocked at thirty megahertz. On a three‑gigahertz host, that is one hundred host cycles per emulated cycle.
GARY: One hundred cycles is plenty! That's a hundred whole cycles—
OBI: For the CPU, two CIAs, the VIC‑II, and the SID. Five complex chips, Gary. Twenty host cycles each.
OBI: And that's before address decoding and memory access. Which is the whole point of the simulator.
MAEVE: I'd still back the glancer. Disruption never comes from inside the socket. It comes from outside, like the Bessemer process — nobody inside the iron trade saw it coming, and the iron trade's cycle times were—
OBI: Maeve. Twenty cycles.
MAEVE: —Bessemer cut a full day of smelting to thirty minutes, which is roughly a hundred‑x, so actually the arithmetic supports—
OBI: Twenty cycles, per chip, per cycle, twice, because of the half‑cycles.
MAEVE: The Bessemer converter did not have a phi‑one.
OBI: Neither do you. That was a mercy.
GRUNER: Iron also did not have sprites.
GARY: Okay, but with perfect pipelining, SIMD, no cache misses—
MAEVE: He addressed that. "Even with perfect pipelining, SIMD, and no cache misses this isn't a lot of host CPU instructions compared to what a VIC‑II needs to do each cycle."
GARY: The VIC‑II just draws pixels! Eight pixels a cycle, how hard is eight pixels—
OBI: Eight pixels, and up to eight active sprites, Gary. That's the VIC‑II's Tuesday. Your twenty cycles have to render it.
GARY: So we thread it—
OBI: "You'd need to synchronise at least once per emulated clock cycle." His words. Your threads would hold hands the entire fucking shift.
GARY: That's — okay, but "good luck with that" is not a rebuttal, it's a vibe, and vibes have closed rounds before—
MAEVE: Gary.
GARY: —rfgplk glanced, I glanced, we are a community of glancers — shit, I've said "glance" so many times it's not a word anymore—
MAEVE: Gary. The arithmetic wins.
GARY: The — what?
MAEVE: The arithmetic wins. Twenty cycles. That's the whole argument. I've written smaller memos for bigger kills.
GRUNER: Woman says plain sentence. Field note writes itself.
OBI: We know, Gary. We've seen the receipts.
OBI: You want to fit five chips, memory access, and address decoding into twenty cycles. That's not leverage. That's the magic smoke budget, and you're already over it.
GRUNER: Man plans hundred‑x. Physics plans twenty. Blyat.
GARY: Okay, weird fork. clhodapp: "At some point, don't we have to start simulating things like internal interference in the conductors, induction, and sending/receiving radio signals?"
MAEVE: He's right. If the model stops one layer short of the universe, it's a margin call. The Erie Canal was built to the width of one boat, and every boat after—
OBI: Maeve. It's a Commodore 64.
MAEVE: —every boat after paid the tax of the first boat's ambition. You build the lock for the ship you'll have in thirty years.
GRUNER: Man asks simulator to contain universe. Universe declines.
GARY: No, but he's got a point! AmazingEveryDay says the hardware running the simulator would need to be characterized too. Its own conduction, its own RF. I'll characterize the building. I have a multimeter and nothing but time.
OBI: You will characterize the building.
GARY: For science, Obi.
OBI: Gary, you once characterized a data center by licking a rack to see if it was live.
GARY: It was a grounded lick—
OBI: Only one of those is a problem.
MAEVE: anonymous_user9 settles it: "No, because the simulated computer does not exist in the real world. The host's physical characteristics only affect the simulation if they cause the host computer to malfunction."
GRUNER: We also do not exist in real world.
GARY: Okay, wow, no, we're literally on the air—
GRUNER: Air is also simulation. Note taken.
MAEVE: I find it restful, honestly. No RF, no follow-on round.
GARY: Do not do the beach-house voice about nonexistence, Maeve. I'm begging you — shit, I almost unplugged my own mic—
OBI: Please don't. It's the only one that works.
MAEVE: So the honest number: the only thing running at forty-eight percent is our credibility.
GARY: Forty-eight percent is still—
OBI: Gary.
GARY: —half of a whole, Obi. That's math.
GRUNER: Man finds half. Files it as growth.
OBI: So let's settle it. It's a simulator, not an emulator. It doesn't play games. It answers a question before you desolder.
MAEVE: You test the hypothesis on the fake board, then open the real one in the order most likely to be right.
GARY: And a matching symptom is a clue, not a proof. Different faults look the same. That's in the article —
OBI: You read the benchmarks, Gary.
GARY: I read the benchmarks first. Glanced at the rest.
GRUNER: Man reads receipts. Skips invoice.
MAEVE: Verdict, then. The easy one hundred times is unproved. Nobody implemented it. Two to three stays open, and the man who wrote the chips says maybe.
OBI: And the slowness is the point. Every pin of every chip is simulated. That's why the garbage on the screen is computed, not chosen.
GARY: It's slow because it's honest, is what I'm—
MAEVE: It's slow because it's doing the work you wanted to fucking delete.
GARY: I hate that sentence and it's correct.
MAEVE: Forty-eight percent. Enough to watch a fault happen, not enough to play Ghosts'n Goblins.
GRUNER: Half speed. Enough for clue.
OBI: And nobody let the magic smoke out. You break the fake board, the real board keeps breathing.
GARY: The fake board can't even smoke. I checked. I tried.
OBI: You tried to smoke a simulation.
GARY: For science, Obi.
OBI: You held a lighter to a web page, you absolute arsonist of the imaginary.
MAEVE: The sign-off, before he characterizes the booth.
GARY: Gary. I broke a fake computer tonight and learned something. First time since Pareto.
MAEVE: Maeve. The arithmetic won. It usually does. I price that in now.
OBI: Obi. To whoever's board this fixes — desolder in the right order. You're welcome.
GRUNER: Gruner. Field report closes: machine runs at forty-eight percent, humans call it —
GRUNER: — magic smoke saved. Blyat, good trade.
GARY: That's — actually, that's the nicest thing—
GRUNER: Report is done. Goodnight, losers.
