[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"project-46051449":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":46,"what":47,"said":82,"maker_in_thread":184,"shape":193,"grid":197,"attempts":327,"same_week":332,"maker_shows":42,"maker_hidden":362,"reader_version":363,"card":364},"46051449","KiDoom","Running DOOM on PCB Traces","title","Show HN: KiDoom – Running DOOM on PCB Traces","https:\u002F\u002Fwww.mikeayles.com\u002F#kidoom","mikeayles.com","mikeayles",1764108815,2025,362,49,135,3837,4,"legend","games","game port","other",[24,25,26,27,28],"doom","kicad","pcb","oscilloscope","vector graphics","curious",0.231,{"positive":32,"neutral":33,"mixed":34,"critical":35},9,16,0,5,30,{"idea":38,"pricing":40,"execution":41,"docs":43},{"positive":35,"critical":39},1,{"positive":34,"critical":39},{"positive":34,"critical":42},2,{"positive":34,"critical":39},[35,34,35,34,39,39,45,45,45,35,35,34,34,45,45,45,34,39,39,34,35,45,34,45,45,45,45,34,39,35,45,35,34,35,35,45,34,34,34,34],3,"I got DOOM running in KiCad by rendering it with PCB traces and footprints instead of pixels.\n\nWalls are rendered as PCB_TRACK traces, and entities (enemies, items, player) are actual component footprints - SOT-23 for small items, SOIC-8 for decorations, QFP-64 for enemies and the player.\n\nHow I did it:\n\nStarted by patching DOOM's source code to extract vector data directly from the engine. Instead of trying to render 64,000 pixels (which would be impossibly slow), I grab the geometry DOOM already calculates internally - the drawsegs[] array for walls and vissprites[] for entities.\n\nAdded a fi",{"problem":48,"audience":54,"pricing":54,"motivation":55,"time_to_build":54,"stack":63,"openness":79,"stage":80,"team_size":81},{"value":49,"source":50,"evidence":51},"Renders DOOM using PCB traces and footprints instead of pixels","maker",[52],{"id":53},"post",null,{"value":56,"source":57,"evidence":58},"Playful hack to render DOOM on a PCB editor and an oscilloscope","inferred",[59,60],{"id":53},{"id":61,"by":11,"text":62},"46056302","Author here: I pulled inspiration from this port to a vectrex: https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VuVnoqFF3II, there is a wayback machine link to the authors writeup credited in my…",[64,68,75],{"value":65,"source":50,"evidence":66},"Python",[67],{"id":53},{"value":69,"source":50,"evidence":70},"C (DOOM source patched)",[71,72],{"id":53},{"id":73,"by":11,"text":74},"46054972","So the reason everything is on one net is so kicad doesn't need to calculate a ratsnest\u002Fair wires. As for the drawing, we pulled the vectors as a list from the C, and used a…",{"value":76,"source":50,"evidence":77},"KiCad plugin",[78],{"id":53},"unknown","launched","solo",{"praise":83,"objections":116,"requests":139,"questions":152,"alternatives":167},[84,100,108],{"value":85,"source":86,"evidence":87},"Clever, playful hack of a serious tool","commenter",[88,92,96],{"id":89,"by":90,"text":91},"46061969","danishSuri1994","This is one of those projects where the implementation is more interesting than the meme. Rendering DOOM isn’t the impressive part, hijacking a PCB editor’s rendering pipeline…",{"id":93,"by":94,"text":95},"46053447","sethaurus","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…",{"id":97,"by":98,"text":99},"46053492","djmips","That's very cool. A very good use of your free time. The world needs more whimsy!",{"value":101,"source":86,"evidence":102},"Fun, whimsical DOOM project",[103,107],{"id":104,"by":105,"text":106},"46052954","robbru","Of course I love this. DOOM forever.",{"id":97,"by":98,"text":99},{"value":109,"source":86,"evidence":110},"ScopeDoom oscilloscope follow-up is especially interesting",[111,112],{"id":89,"by":90,"text":91},{"id":113,"by":114,"text":115},"46053515","sho_hn","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)\"…",[117,128,132],{"value":118,"source":86,"evidence":119},"Pins are not connected, so the PCB would not work as a board",[120,121,125],{"id":113,"by":114,"text":115},{"id":122,"by":123,"text":124},"46054388","hbnjjgff","What don't you get? The pins are not hooked up, so the PCB wouldn't do anything useful",{"id":126,"by":114,"text":127},"46054450","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…",{"value":129,"source":86,"evidence":130},"Rendering feels like drawing to a canvas more than real PCB design",[131],{"id":126,"by":114,"text":127},{"value":133,"source":86,"evidence":134},"Video demo is low quality gif",[135],{"id":136,"by":137,"text":138},"46059346","p1mrx","That's a potato-quality gif, not a video.",[140,148],{"value":141,"source":86,"evidence":142},"Run on analog oscilloscope or add intensity control",[143,147],{"id":144,"by":145,"text":146},"46062796","olelele","Just looking quickly but it looks like I have to try to run this on my analog scope",{"id":89,"by":90,"text":91},{"value":149,"source":86,"evidence":150},"Use real connected PCB design or routing for more PCB-ness",[151],{"id":126,"by":114,"text":127},[153,160],{"value":154,"source":86,"evidence":155},"Is there a video or demo?",[156],{"id":157,"by":158,"text":159},"46058924","thenthenthen","Is there a video\u002Fdemo of it somewhere?",{"value":161,"source":86,"evidence":162},"Why is the page a semi-transparent overlay?",[163],{"id":164,"by":165,"text":166},"46054205","GaryBluto","Awesome project, but why is the page a semi-transparent overlay on another page?",[168],{"value":169,"source":86,"evidence":170},"psDooM and Doom ports on Factorio, Vectrex and Quake on oscilloscope",[171,175,179,180],{"id":172,"by":173,"text":174},"46055773","ollybee","A bit like psDooM",{"id":176,"by":177,"text":178},"46053744","wpm","Just like Doom running on Factorio combinators. https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0bAuP0gO5pc",{"id":61,"by":11,"text":62},{"id":181,"by":182,"text":183},"46056239","dspillett","> 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…",{"comments":35,"answered":45,"key":185},[186,189,190],{"id":187,"text":188},"46055003","What an honour, thanks",{"id":61,"text":62},{"id":191,"text":192},"46056459","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…",{"commenters":194,"max_depth":18,"maker_replies":35,"first_comment_mins":195,"lifespan_hours":196},37,179,38,[198,202,204,205,207,211,215,219,223,226,229,232,236,239,243,247,249,253,257,261,262,263,265,267,268,270,274,277,280,281,283,285,289,292,295,297,299,301,302,305,308,309,310,311,314,317,320,322,325],[199,34,35,200,201,34],"46054027","project\u002Fpositive\u002Fidea","bruckie",[187,34,34,203,11,39],"maker\u002Fpositive\u002Fnone",[181,39,35,200,182,34],[61,39,34,206,11,39],"maker\u002Fneutral\u002Fnone",[208,42,45,209,210,34],"46055649","project\u002Fneutral\u002Fidea","oniony",[212,42,39,213,214,34],"46056360","project\u002Fcritical\u002Fpricing","junon",[216,42,39,217,218,34],"46056776","project\u002Fcritical\u002Fexecution","roygbiv2",[220,42,45,221,222,34],"46058534","project\u002Fneutral\u002Fnone","Artoooooor",[224,42,45,221,225,34],"46059122","Someone",[227,42,45,209,228,34],"46065009","kmoser",[230,42,45,221,231,34],"46067806","illwrks",[233,45,35,234,235,34],"46053889","project\u002Fpositive\u002Fnone","actinium226",[237,18,35,200,238,34],"46053275","mlhpdx",[240,35,34,241,242,34],"46053002","other\u002Fneutral\u002Fnone","Lerc",[244,35,34,245,246,34],"46053222","other\u002Fneutral\u002Fidea","retrac",[248,35,34,241,242,34],"46056166",[250,251,45,221,252,34],"46060971",6,"dcuthbertson",[254,255,45,209,256,34],"46057687",7,"philipwhiuk",[258,259,45,260,214,34],"46056368",8,"maker\u002Fneutral\u002Fexecution",[191,259,34,206,11,39],[113,32,39,217,114,34],[122,32,34,264,123,34],"commenter\u002Fneutral\u002Fnone",[126,32,39,266,114,34],"project\u002Fcritical\u002Fidea",[73,32,34,260,11,39],[144,269,35,234,145,34],10,[271,272,45,209,273,34],"46054605",11,"jacquesm",[275,272,34,241,276,34],"46054638","p0w3n3d",[278,272,34,241,279,34],"46057137","seg_lol",[172,272,45,221,173,34],[282,272,45,209,228,34],"46065030",[284,272,45,209,228,34],"46065036",[286,287,45,221,288,34],"46054005",12,"ChrisGammell",[157,290,45,291,158,34],13,"project\u002Fneutral\u002Fdocs",[293,290,34,264,294,34],"46058993","maaarghk",[136,290,39,296,137,34],"project\u002Fcritical\u002Fdocs",[104,298,35,234,105,34],14,[164,300,45,291,165,34],15,[89,33,35,200,90,34],[303,33,34,304,11,39],"46062169","maker\u002Fneutral\u002Fidea",[306,307,34,241,98,34],"46053372",17,[93,307,35,200,94,34],[97,307,35,234,98,34],[176,307,45,209,177,34],[312,307,34,264,313,34],"46055579","ant6n",[315,307,34,241,316,34],"46068720","anthk",[318,307,34,241,319,34],"46053730","nurettin",[321,307,34,241,114,34],"46053765",[323,307,34,241,324,34],"46055684","georgefrowny",[326,307,34,241,324,34],"46055456",[328,329],{"id":4,"t":12,"points":14,"comments":15},{"id":330,"t":331,"points":42,"comments":39},"46744110",1769266674,[333,338,343,348,353,358],{"id":334,"name":335,"points":336,"category":337},"46036908","HN Simulator",538,"ai",{"id":339,"name":340,"points":341,"category":342},"46017175","Forty.News",443,"productivity",{"id":344,"name":345,"points":346,"category":347},"46048252","Flowglad",405,"web_saas",{"id":349,"name":350,"points":351,"category":352},"46037031","exposedbydefault",275,"security_privacy",{"id":354,"name":355,"points":356,"category":357},"46053076","Yandori News Flow",256,"data",{"id":359,"name":360,"points":361,"category":337},"46006104","OCR Arena",216,false,"v2",{"id":365,"name":5,"line":6,"ai":362,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":366,"top":18,"kw":367,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":368,"url":9,"mix":369,"praise":85,"objection":118,"sub":21},46051449,0.23,[24,25,26,27,28],"5050113335500333011053033330153505530000",[32,33,34,35],1794036686374]