Side note, this is using the new KiCad socket APIs in v9 right? What was your experience using those?
I've written my own s-expr library to inject footprints and symbols and it's a huge pain and flakey. I'd love to move to something a bit more fleshed out and official.
mikeayles 2 minutes ago [-]
This isn't using the KiCad socket API, although it probably would have been cleaner. It's a bog standard Plugin that should work for v6+.
I'd be keen to have a look at your s-expr library, it likely has some overlap and utility for one of my other projects, https://www.circuitsnips.com , which is like thingiverse for electrical circuits. I had to figure out how to feed the embedded kicanvas renderer a full sheet, as it can't handle subcircuits, but allow the user to export subcircuits to the clipboard.
When I first shared CircuitSnips with the KiCad discord, the KiCad 9+ design block feature was brought up, which might be of interest to you as well?
oniony 3 hours ago [-]
The obvious next step is to play Doom rendered as actual PCBs. Each frame is automatically ordered online and then, when it arrives two weeks later, slotted into a holder whilst the bored player contemplates their life choices.
junon 16 minutes ago [-]
Assuming that's 15 FPS that's about 80-100 Euro (sans shipping) per second of gameplay and due to most PCB fabs having a MOQ of 5 you could play 5 at a time!
dspillett 41 minutes ago [-]
> to extract vector data directly from the engine
That got me thinking “I wonder if anyone has done this on an oscilloscope” and oddly I can't fine anyone who quite has. That DOOM objects are sprites and not actual 3D objects would limit the fidelity, but the scenery could be rendered at least. There are several examples of managing to use a high-speed scope as a low-res monochrome raster device (scanning like a CRT monitor does and turning the beam on & off as needed).
I did find an example of Quake being done on a scope the way I was imagining: https://www.youtube.com/watch?v=aMli33ornEU - as all objects are actual 3D models in Quake that even manages to give them some presence & shape.
EDIT: then I read the second half of this post and saw ScopeDoom! I'm surprised there are no earlier examples that are easy to find.
mikeayles 30 minutes ago [-]
Author here:
I pulled inspiration from this port to a vectrex: https://www.youtube.com/watch?v=VuVnoqFF3II, there is a wayback machine link to the authors writeup credited in my writeup.
I have seen a lot of ports of DOOM on overpowered Windows based test equipment, particularly the Keysight MXA's, but they're just using them as a computer. Spectrum DOOM though. Could it be done by taking snapshots of a waterfall plot?
I don’t care how this makes the world a better place, because it just does.
actinium226 8 hours ago [-]
Lol, I jsut started learning KiCAD last week, and I work in at a game dev coworking space, so this is a perfect combination of the two! Nice!
aqid1 4 hours ago [-]
[dead]
Lerc 10 hours ago [-]
One of my to-do-one-day projects is an audio jack display system out of a Microcontroller.
Was never quite sure if I should raw XY it or soft modem so I could decode on a web page on a handy device.
retrac 10 hours ago [-]
> raw XY it or soft modem
How about analog raster scan? a.k.a. slow-scan TV? [0] Like how they returned the live television images from the Apollo missions. (They only had 1 MHz of bandwidth for everything - voice, computer up and downlink, telemetry, and TV. Standard analog broadcast TV was 6 MHz. So they reduced the scan rate to 10 frames per second instead of 60, and halved the horizontal line resolution -- that could fit in 500 kHz.)
Most modern SSTV standards are super-narrowband, designed to fit into just a few hundred Hertz for amateur radio. But what if you had the full 20 kHz of bandwidth of a nice audio channel? With 100 horizontal lines per frame, and 1 frame per second -- that is about 200 cycles per horizontal line, or enough to resolve, in theory, 100 vertical lines on each horizontal line. I.e., 100 x 100 pixels (ish) at 1 fps.
Now that does present some interesting possibilities.
It looks like a web page with audio input permissions can be expected to sample at 48KHz I wonder what the quality is like from a cable bodged off a spare pin.
A little webapp running on your phone could actually do some nifty on-the-fly display.
sho_hn 9 hours ago [-]
Love ScopeDoom!
KiDoom I don't fully get. The website says "All components connected to a shared net; the PCB could be sent to a fab house (it just wouldn't do anything useful)" but I don't see any of the component pins hooked up in the demo video.
hbnjjgff 7 hours ago [-]
What don't you get? The pins are not hooked up, so the PCB wouldn't do anything useful
sho_hn 6 hours ago [-]
It means they're not actually "all connected to a shared net", no?
Something that actually connects the components and routes the traces in a way that makes it somehow still recognizable as the 3D environment would've been cool, otherwise this is kind of just like piping draw commands into a <canvas> from a hook in the Doom renderer. KiCAD just happens to be a complicated line drawing app.
Don't get me wrong, still a fun little hack. But some more PCB-ness would make it even cooler.
It might be that the website undersells it and there's more PCB-ness than I can detect in the visuals. Is it using layers and vias between them for the z-sorting or so? Both the website and the commits have a distinct AI slop feel to them and are somehow not very detailed on this part.
mikeayles 4 hours ago [-]
So the reason everything is on one net is so kicad doesn't need to calculate a ratsnest/air wires.
As for the drawing, we pulled the vectors as a list from the C, and used a painters algo and drew back to front using the distance from the player in the python code.
We then treated them as polygons to allow us to work out occlusion to hide things behind walls, but the data pipes to kicad/the headphone jack is just the vector/wireframes/outlines, filtered by what's left after the occlusion test.
So yep, using footprints as sprites was my (clunky) nod to electronics, as I didn't like the idea of drawing polygons. Kicad can definitely handle them, but they're less fun.
Now, if I'm really bored over Christmas, I may port it to fusion360, which will have a 3d engine.
I 100% abused Claude code to get here, and i tend to get it to write the bones of a write up, which I then populated with my own thoughts, else I can't get started. We are worryingly becoming more aligned.
jacquesm 6 hours ago [-]
Inception version: make it so shooting components degrades the machine it runs on.
p0w3n3d 6 hours ago [-]
You remind me about Atari XL/XE game "Inside", which was fighting some dust balls or what? inside the Atari. If a circuit was broken you had to fly there and fix it, but when for example Pokey was broken the music was distorted, Antic - the screen was distorted etc
ollybee 2 hours ago [-]
A bit like psDooM
ChrisGammell 8 hours ago [-]
Never Trust The Automap
robbru 11 hours ago [-]
Of course I love this. DOOM forever.
GaryBluto 7 hours ago [-]
Awesome project, but why is the page a semi-transparent overlay on another page?
TOR22 4 hours ago [-]
[dead]
djmips 10 hours ago [-]
This is just a meme now. Doom running on X. I don't get it but congratulations on your very whimsical accomplishment!
sethaurus 10 hours ago [-]
This is a little different from most "Doom on X" projects, because the accomplishment is less about the hardware (it's just a normal computer) and more about turning a circuit-board designer into a real-time game display.
I've written my own s-expr library to inject footprints and symbols and it's a huge pain and flakey. I'd love to move to something a bit more fleshed out and official.
I'd be keen to have a look at your s-expr library, it likely has some overlap and utility for one of my other projects, https://www.circuitsnips.com , which is like thingiverse for electrical circuits. I had to figure out how to feed the embedded kicanvas renderer a full sheet, as it can't handle subcircuits, but allow the user to export subcircuits to the clipboard.
When I first shared CircuitSnips with the KiCad discord, the KiCad 9+ design block feature was brought up, which might be of interest to you as well?
That got me thinking “I wonder if anyone has done this on an oscilloscope” and oddly I can't fine anyone who quite has. That DOOM objects are sprites and not actual 3D objects would limit the fidelity, but the scenery could be rendered at least. There are several examples of managing to use a high-speed scope as a low-res monochrome raster device (scanning like a CRT monitor does and turning the beam on & off as needed).
I did find an example of Quake being done on a scope the way I was imagining: https://www.youtube.com/watch?v=aMli33ornEU - as all objects are actual 3D models in Quake that even manages to give them some presence & shape.
EDIT: then I read the second half of this post and saw ScopeDoom! I'm surprised there are no earlier examples that are easy to find.
I pulled inspiration from this port to a vectrex: https://www.youtube.com/watch?v=VuVnoqFF3II, there is a wayback machine link to the authors writeup credited in my writeup.
I have seen a lot of ports of DOOM on overpowered Windows based test equipment, particularly the Keysight MXA's, but they're just using them as a computer. Spectrum DOOM though. Could it be done by taking snapshots of a waterfall plot?
Was never quite sure if I should raw XY it or soft modem so I could decode on a web page on a handy device.
How about analog raster scan? a.k.a. slow-scan TV? [0] Like how they returned the live television images from the Apollo missions. (They only had 1 MHz of bandwidth for everything - voice, computer up and downlink, telemetry, and TV. Standard analog broadcast TV was 6 MHz. So they reduced the scan rate to 10 frames per second instead of 60, and halved the horizontal line resolution -- that could fit in 500 kHz.)
Most modern SSTV standards are super-narrowband, designed to fit into just a few hundred Hertz for amateur radio. But what if you had the full 20 kHz of bandwidth of a nice audio channel? With 100 horizontal lines per frame, and 1 frame per second -- that is about 200 cycles per horizontal line, or enough to resolve, in theory, 100 vertical lines on each horizontal line. I.e., 100 x 100 pixels (ish) at 1 fps.
[0] https://en.wikipedia.org/wiki/Slow-scan_television
It looks like a web page with audio input permissions can be expected to sample at 48KHz I wonder what the quality is like from a cable bodged off a spare pin.
A little webapp running on your phone could actually do some nifty on-the-fly display.
KiDoom I don't fully get. The website says "All components connected to a shared net; the PCB could be sent to a fab house (it just wouldn't do anything useful)" but I don't see any of the component pins hooked up in the demo video.
Something that actually connects the components and routes the traces in a way that makes it somehow still recognizable as the 3D environment would've been cool, otherwise this is kind of just like piping draw commands into a <canvas> from a hook in the Doom renderer. KiCAD just happens to be a complicated line drawing app.
Don't get me wrong, still a fun little hack. But some more PCB-ness would make it even cooler.
It might be that the website undersells it and there's more PCB-ness than I can detect in the visuals. Is it using layers and vias between them for the z-sorting or so? Both the website and the commits have a distinct AI slop feel to them and are somehow not very detailed on this part.
As for the drawing, we pulled the vectors as a list from the C, and used a painters algo and drew back to front using the distance from the player in the python code.
We then treated them as polygons to allow us to work out occlusion to hide things behind walls, but the data pipes to kicad/the headphone jack is just the vector/wireframes/outlines, filtered by what's left after the occlusion test.
So yep, using footprints as sprites was my (clunky) nod to electronics, as I didn't like the idea of drawing polygons. Kicad can definitely handle them, but they're less fun.
Now, if I'm really bored over Christmas, I may port it to fusion360, which will have a 3d engine.
I 100% abused Claude code to get here, and i tend to get it to write the bones of a write up, which I then populated with my own thoughts, else I can't get started. We are worryingly becoming more aligned.
https://www.youtube.com/watch?v=0bAuP0gO5pc