Running Doom on Our Custom CPU and Going Viral

armaangomes.com

110 points by arghunter 11 hours ago


tantalor - an hour ago

> posted a video that got a few million views

Anybody got a link to that?

Is it this?

https://www.instagram.com/armaan.gomes/reel/DatqWKChtnw/?hl=...

I was expecting a real video, not some 9 second clip posted to random social media website.

_joel - 3 hours ago

Cool, I thought this was a CPU custom designed for Doom, but I guess that's just a 486 :)

edit: I went to down a quick hole "The historical footnote is that a version of this genuinely happened. SNES Doom shipped with a Super FX 2 in the cartridge, a custom RISC chip with a pixel-plot instruction, because the console's own CPU had no chance. Jaguar and PlayStation ports both moved the rasteriser onto dedicated hardware. Doom's design was shaped by the absence of an FPU, and then hardware kept getting built to catch up with it."

layer8 - 15 minutes ago

I wonder, if Doom didn’t exist, what would have taken its place for the “can it run X” usage.

arghunter - 2 hours ago

This is just RV32I-ZMMUL not a custom architecture, bt if you do want to see something from scratch, without any premade ISA or anything, here is an NPU I built: https://www.armaangomes.com/blogs/kernn/

Flex247A - 8 hours ago

Great work!

This reminded me of a project I built a while back: a RV32IM emulator in C++ that can boot and run DOOM. Initially I implemented only RV32I, and implementing the M extension provided a massive speedup!

If anyone's curious, here's the source code: https://github.com/lalitshankarch/rvcore

Archit3ch - 5 hours ago

Reading "Custom CPU" I expected wafer.space, instead of FPGA.

dmitrygr - 10 hours ago

For anyone else curious: custom FPGA-based CPU code but not a custom architecture. This is an RV32I core. The article takes along time to give up this fact.

paulmooreparks - 8 hours ago

Very cool!

I just did the same thing, but for a byte-code interpreter for a completely novel ISA I made up a while back (with an assist from Claude). I just haven't made the HN post yet, since I'm doing a bit of cleanup.

https://github.com/paulmooreparks/Maize/ https://paulmooreparks.github.io/Maize/

terekhindc - 6 hours ago

why Zmmul and not full M — is it just fpga area, or did the doom port let you drop div/rem?

sweetjuly - 10 hours ago

Always a delight seeing Chisel in the wild :)

deton3991 - 3 hours ago

[dead]

huflungdung - 6 hours ago

[dead]