S4E421 — The Commodore 64 hardware simulator: break chips and pins, see the results

October 18, 2026 · 11 min

Show notes

A Commodore 64 simulator that breaks chips and pins becomes a feud between hardware fantasy and arithmetic reality, as one gleeful optimist gets flattened by the brutal math of 20 cycles and 48 percent speed.

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.