2690 points by pkiller 2544 days ago | 210 comments on HN
| Moderate positive
Contested
Editorial · v3.7· 2026-02-28 10:10:09 0
Summary Educational Knowledge Sharing Advocates
A technical blog documenting the author's personal hobbyist project to build a homebrew video game console from components. The content strongly advocates for freedom of expression, scientific participation, educational knowledge sharing, and creative leisure through detailed documentation of design decisions, architecture, and implementation. The author explicitly frames the project as self-directed learning and commits to sharing the knowledge with the community, exemplifying positive engagement with UDHR Articles 19, 26, and 27.
This is the coolest thing I've seen posted on HN in years, very cool work.
I've been playing with Atari 2600 programming on and off for the past few years and it is so fun programming directly against the specific hardware. I can't help but occasionally wonder if I could piece together a similar system, but I have 0 experience with electronics. I can only imagine how satisfying it must be to actually pull it off.
As much as I enjoy quickly building circuits on a breadboard like in many of the photos, they’re hell to debug, because there’s so much that can go subtly wrong. It’s much easier with digital than analog circuits, of course, but it still can be crazy hard to logic-probe every connection to get it all to work. I have spent far too much time fixing little bugs in breadboarded circuits. The toughest issue I encountered was when someone melted through part of a big, expensive breadboard with a soldering iron and it caused shorts on the other side of the board. I couldn’t even trust that the holes that were supposed to be connected were in that case, and I sure wasn’t going to copy over the project onto a new breadboard.
However, I’m not sure if there is an easier way to get quickly prototype electronics. Opting for more ICs and a lower BoM count helps, because there’s less wiring to do in the first place.
It's interesting how this kind of project has come into the realm of possibility of an individual's pet project (a smart individual, sure, but not a company).
I guess that the availability of information and materials through the internet has helped a lot. And also more people have knowledge in electronics and programming.
I know this has been said before but this is one of the coolest things I've seen posted here on HN. My undergrad is in computer engineering and this post brought back a flood of writing VHDL and doing design in Mentor Graphics.
I'm going to read this a few more times. It's like reading a good book about my hopes and dreams.
This is incredibly impressive! You should be very proud of yourself for not only having the knowledge to work through a project like this but also the discipline to see it through to fruition. Hats off!
You're a top notch hacker, from high to low level. Not many people can do what you do. I know this is a hobby/fun project, but I really hope your current employer/clients appreciate and reward you commensurately!
Seeing all these breadboard cables going into a scart lead fills me with dread. One bump of the table and the chunky scart lead flexes in an unpredictable direction and rips out a subset of 4 hours of carefully set jumper cables. Not to mention the EM interference that so many wires must be generating.
This is a wonderful project. Well done. You might just inspire this software engineer to take his first crack at hardware. :)
One somewhat personal question, if you don't mind. You say you are Portuguese. Is English a second language for you? I don't see the telltale signs of a Portuguese -> English speaker (I have a lot of experience interacting with Portuguese speakers, and their English mistakes are pretty uniform due to the specific differences between the languages, esp regarding prepositions and tense). Your article, as many have noted, is beautifully written even for a native English speaker.
This is simply incredible. I teach high school and elementary kids, and the thing I'm always telling them and parents is how the added complexity and modern design of software and hardware have made it so challenging for kids to take a "peak" under the hood. Projects like this are such a wonderful way to really spark that curiosity between hardware and software. So inspirational!
I never comment on here. This was cool enough for me to try to figure out my password and log in and say that you are the tinkerer/creator I wish I could be.
Shine on, dude, shine on. Inspiring! I love the fact that you've been working on this for a long time, yet 60 seconds ago I was completely unaware of it. What other amazing things are amazing people working on out there?
I've reading up about the architectures and programming of computers and consoles from the 80s and early 90s lately, and have been itching to do a similar project of my own, but have been kind of floundering on where to get started. The fact that you pulled this off inspires that this sorta thing can be done.
Have you considered doing a series of blog posts going into more detail on each section of the console and your journey in getting each bit working, describing failures and successes both? I think such would be instructional to other people who want to do some similar homebrew computer/console hacking.
I was kind of surprised that your PPU design was frame buffered instead of line buffered, but I suppose I perhaps shouldn't be. I imagine the PPU chips of old were line-buffered because RAM was expensive in the 80s, and it was a good enough interface to control a scanline-based display. In my recent reading about the architecture of 3rd, 4th, and 5th gen consoles, I noticed that the 5th gen systems became fully frame buffered, as memory had become cheap and fast enough in the early-mid 90s. And a frame buffer certainly feels a bit simpler and more intuitive to think with than a scanline buffer.
I know that I am echoing the same sentiment, but how cool is this! In the video where you demo'd BASIC and had that ball bounce across the screen, my jaw literally dropped, and my mouth stayed open the whole rest of the page. Amazing :)
Oh to built 20Mhz systems again! ... no picosecond timing skews to stress over, no ground plane worries, no trace-related design rule violations, no harmonic noise issues, no dynamic bus inversions to prevent victim/attacker degradation, no thermal issues... I spend so much time debugging GHz multi-layer circuit boards that I forget how "easy" 20MHz digital circuits can be. This guy's project is truly inspiring!
At risk of being more "me too" about this, I am in awe of the hard-earned multi-disciplinary skills that went into making this. You should be proud of yourself :) Great project, and a great read.
It really is super satisfying to get this far, I still turn it on sometimes just to check if it really works.
And I also had zero experience with electronics (and I still don't know as much as I should...), so yeah I think you could piece together something like this. :)
Well nowadays there's a lot of material online, I did find a book interesting, though: "Make: Electronics", it teaches the basics in a very nice way.
Aside from that the key, I guess, is to start small and incrementally go for more and more complex stuff going towards things you like (video games, robotics, etc). If you consistently achieve small victories I think it's enough to stay motivated.
Everytime I managed to overcome something, I took it as a victory (generating the video signal, getting a program to run on the CPU, etc) and this helped me get to the next problem to solve.
I started with discrete logic and an Arduino, went on to programming microncontrollers similar to the one on the Arduino and moved from there to CPUs, RAMs, FPGAs, etc.
Also Youtube channels like EEVblog and GreatScott! are great learning resources.
People invariable ask a form of this question every time an impressive project like this is posted.
For what its worth(1), I think that "learn a bunch of stuff -> go build something cool on the first try" isn't quite the right approach. I think you have to set for yourself a series of tasks and then fight like hell to figure out how to accomplish them. Start with a single blinking led. Just google "how to blink an led" and try to do it a few different ways.
In short the only "material" you might use to get started is google, by typing in "how do I..." while chasing modest goals that look like they might be in roughly the right direction. If there is a magic book out there that will "teach you electronics", I haven't found it yet. It sounds a lot like the sort of book that might "teach you astronauting".
"Electronics" is broad enough that it might be more like learning a language than learning a skill.
Start with an Arduino. Really simple circuits and you get to learn on a microcontroller. It's fun too. For instance learn how to turn on and off an LED then go from there
Yeah, absolutely. Especially coming from a modern software developers POV. I always think it would be fun to get into electronics, but it just seems so much to take in.
I've kept this project to myself and would only describe it occasionally to some coworkers and friends. I never thought that many people would find it cool. And always thought that people with more knowledge than me would find a lot of flaws.
So it's really awesome to read yours and all the other comments. :)
I don't think I could write a book, but I have though in writing other posts, giving more detail in certain aspects of the console.
There's really a lot I could say about it and I only realised how much there was to say when I started writing this.
I totally agree.
The reason I stuck to DIP ICs was because I could fit them into breadboards and I thought that was easier than any alternative.
I was incredibly lucky on how all the breadboards were functional.
And there were a few times where I would accidentally disconnect a wire and spend the next 2 hours trying to figure out what was wrong.
All this without having a logic analyser and not even an oscilloscope until much later in the build (they are not that cheap).
And yes the project sure is complex, too complex, but I guess I was lucky, and I'm glad it's working :).
Thanks :) (I don't mind people saying it over and over again, believe me :P)
I actually started building a much smaller video game console with a cheap Cyclone II FPGA board (a friend of mine wanted one and I tried to figure it out how I could make something smaller and cheaper but still retro and cool) and I'm using VHDL, it's not exactly easy to learn but it's pretty cool, and I find it really hard to find good resources to learn from.
If I was to start all over again, I would use an FPGA for the graphics, for sure, at the time I just didn't know how.
I agree (and thanks for calling me a smart individual :) )
Nowadays is so much easier to get information on how to build something apparently very complex. You don't need to go to a library or seek out and go talk to experts, you actually have access to all that through the internet in forums, articles, posts and videos.
Also it's easy nowadays to order all the things you need for a project online.
The first half of nand2tetris[1] (projects 1-6), which corresponds to their first Coursera course[2] is a great introduction to the digital side of electronics. The second half is more general purpose computer and OS specific but probably still pretty useful. I've only finished up to chapter 5 as of right now, so I can't say anything definite.
It is sad that TAB books is no longer a thing, they totally would have published the "BUILD YOUR OWN VIDEO GAME" book. That said, I bet that you could get NoStarch Press to publish it.
Interestingly enough, looking at the HW, there is not much there that wouldn't have been feasible for hobbyist a decade ago. But of course the community and information has absolutely exploded during that period
I would argue that with the extremely low cost of PCB manufacturing (and... if you have access to it... assembly) it's easier now to just lay out a PCB and get it made. The trick is to build up a library of circuit "modules" (like... power supply section, battery charging, video output, etc) that get copy-pasted together.
Of course there's the delay in waiting for the PCBs, which could be frustrating for a hobby project (I was lucky enough to live in SZ for a while where getting PCBs back 2 days after ordering is standard). But parallelising projects can be an effective way of dealing with that, and the variety on working on different things (and the joy of getting a PCB in the mail) can help to mitigate that.
Thank you, if it's something you like, you should try a hardware project, for sure :)
And yes I am Portuguese, born and raised and I do know what you mean, there are mistakes that are somewhat common for Portuguese speaking English and I do make an effort not to make the same mistakes. However I know my English is far form perfect and it's always easier when it's in written form.
I think that the fact that I've always spent too much time watching american/british movies and TV shows made me pay more attention to how English should be spoken :).
But anyway, thank you for saying I speak perfect English, it's actually a great compliment. :)
I'm actually a bit overwhelmed with all the comments and I'm trying to answer at least a few of them.
Just wanted to say that, even without knowing you, I think you could absolutely be a tinkerer or creator, just choose something you would like to build, start small and go from there. :)
I agree! I was just watching one of his videos the other day on creating a brand new 8-bit computer and I think he would be super interested in your work.
You see this with grown up devs too. Many of them have only ever learnt to code with a full suite of build tools such as web pack, grunt and npm. They seem lost without these things and only a few really know what's going on under the hood. The best devs I've worked with are feel comfortable getting things done even when those tools are taken away.
I would love to learn more and be able to work with faster circuits like you.
Yes it's way easier to work with "slow" digital circuits I had very little issues using breadboards and really long wires, that probably look cringy to you and others.
I am considering doing a series of blog posts, I don't know how often I could write them or if I could keep them going, but I will try.
I'm not big in social media and I have never written any posts or anything like before this one, which is weird, I'll admit it, so all this is kind of new, but I think I'll give it go.
Old systems used line-buffers like the Neo Geo or no buffers like the NES, for example.
So yeah, going with a frame-buffered approach was definitely easier, but this was not the only reason I chose this way.
I had a lot of restrictions, I was learning a lot of stuff, I didn't know how to work with FPGAs and I stuck with DIP package ICs that I could put on breadboards and experiment. And that's why I picked the AVR microcontrollers, which are awesome but have their disavantages. They have good performance (20Mhz), but not many pins and I had to bit-bang things like external RAM access (actually the PPU accesses 3 RAMs with only 32 IO pins available), which meant that it takes "some time" to access external memory.
That's why I chose 2 microcontrollers for video instead of just one, one of them could take "all the time in the world" (one frame) to fetch information and write a frame to the frame buffer while the other would generate the video signal and dump the a frame to the TV. Connecting the two, I felt a double buffer was better.
I definitely would have preferred doing a more "traditional" non-buffered render system, but this was the solution I found with what I had to work with.
I hope serves as a good explanation and maybe I'll get to explain these details better in another post :).
There is something weirdly satisfying about doing something purely for the sake of doing it. So many people start projects hoping they can turn it into a business or gain stars in Github - you see less and less people hacking stuff together just for personal enjoyment.
I think we need more of that too. Everyone seems to be on a quest for perfection: perfect code, 3D printed casing, everything intellectualised to the nth degree. There's a lot to be said for the "rough and ready" approach of experimentation. However to do that you really need to be on a pursuit for personal gratification because the internet is a harsh bitch for pointing out ones mistakes.
Strong engagement with scientific and technical culture participation. Author contributes to technical knowledge ecosystem through original engineering work and documentation. Content celebrates scientific experimentation, creative technical problem-solving, and knowledge sharing within technical community. Project represents participation in retro computing subculture and broader maker movement.
FW Ratio: 57%
Observable Facts
Author conducts original technical research and experimentation (custom video signal generation, CPU integration, PPU design).
Post documents detailed technical methodology and architecture enabling others to understand and build upon the work.
Author participates in retro computing culture and knowledge community.
Content shared openly to enable community engagement and technical culture participation.
Inferences
Author advocates for scientific experimentation and creative technical problem-solving as cultural values.
Documentation and publishing enables others to participate in technical culture.
Open sharing model promotes scientific knowledge advancement within community.
Strong engagement with right to education and technical knowledge development. Author describes self-directed learning: 'I decided to learn more about electronics and try to build my own video game console.' Details books purchased, kits used, and knowledge acquired. Entire post functions as educational content sharing for reader learning. Author explicitly commits to knowledge sharing: 'put this information online' per friends' urging.
FW Ratio: 57%
Observable Facts
Author explicitly describes learning journey: 'I decided to learn more about electronics... bought a few books, a few electronics kits and started to learn.'
Post includes detailed technical specifications, architecture diagrams, code examples, and development methodology.
Author frames publication explicitly as educational sharing: 'Some friends of mine have told me again and again not to keep this project to myself and to put this information online.'
Content is freely accessible to any reader for learning purposes.
Inferences
Author advocates for right to self-directed technical education and learning.
Publishing decision driven by commitment to share knowledge as educational good.
Comprehensive documentation enables reader engagement with technical education.
Strong engagement with freedom of expression and information sharing. Author explicitly states: 'Some friends of mine have told me again and again not to keep this project to myself and to put this information online.' Content is detailed technical documentation shared openly. Demonstrates commitment to disseminating knowledge and creative work.
FW Ratio: 57%
Observable Facts
Author explicitly states decision to publish project details based on friends' encouragement: 'put this information online.'
Entire technical specification, architecture, code examples, and development process documented and shared.
Blog is freely accessible with no login, paywall, or content restrictions.
Source code for bootloader and game examples included in post.
Inferences
Author recognizes moral duty to share knowledge and treats publication as community responsibility.
Detailed technical exposition demonstrates commitment to transparent communication.
Open access structure enables information flow without gatekeeping.
Strong engagement with right to rest and leisure. Blog subtitle explicitly frames project as hobby: 'Software and hardware projects for fun from a guy who loves retro computing.' Author discusses this as personal leisure activity conducted in free time.
FW Ratio: 60%
Observable Facts
Blog subtitle: 'Software and hardware projects for fun from a guy who loves retro computing.'
Author describes building console 'in my free time' with friends' encouragement.
Project motivated by personal nostalgia and enjoyment, not commercial requirement.
Inferences
Author frames technical work explicitly as leisure and creative hobby rather than obligation.
Content celebrates right to pursue activities for personal enjoyment and intellectual fulfillment.
Content celebrates freedom of thought and conscience through personal creative exploration. Author explicitly frames project as self-directed learning and intellectual pursuit driven by personal curiosity ('why not?').
FW Ratio: 50%
Observable Facts
Author describes decision to pursue electronics learning as personal choice: 'I said to myself why not?'
Project motivated by personal nostalgia and intellectual curiosity rather than external mandate.
Inferences
Author's narrative emphasizes autonomous thought and personal conviction as drivers of the work.
Publication structure allows unconstrained expression of creative and technical ideas.
Content implicitly celebrates human dignity through individual creative achievement, learning, and intellectual freedom. Author demonstrates agency, autonomy, and personal development.
FW Ratio: 60%
Observable Facts
Author explicitly states project motivation as personal learning and creative exploration.
Content is freely published online with no access restrictions.
Blog celebrates individual human agency and capability through technical achievement.
Inferences
Open knowledge sharing reflects commitment to treating others as intellectual equals with right to access and learn.
The documentation respects reader autonomy by providing detailed information enabling informed engagement.
Content celebrates meaningful work and technical skill development. Author describes professional software engineering and frames hobby project as self-directed professional development and creative technical work.
FW Ratio: 67%
Observable Facts
Author identifies as professional software engineer.
Project framed as learning and skill development: 'I decided to learn more about electronics.'
Inferences
Content advocates for meaningful technical work and professional development.
Mild engagement with community responsibility. Author acknowledges social obligation to share knowledge: friends urged publication, author complied. Demonstrates recognition of duty to community through knowledge contribution.
FW Ratio: 33%
Observable Facts
Author responds to community feedback: 'Some friends of mine have told me again and again not to keep this project to myself and to put this information online.'
Inferences
Author recognizes community benefit from knowledge sharing as moral duty.
Publishing decision reflects commitment to community contribution.
Mild engagement through author mentioning friends encouraging the project, implying social association and community feedback. No formal association discussed.
FW Ratio: 50%
Observable Facts
Author acknowledges feedback from friends: 'Some friends of mine have told me again and again not to keep this project to myself.'
Inferences
Author participates in informal technical community and values peer feedback.
Implicit engagement with social security and economic rights through reference to professional work. Author identifies as professional software engineer and describes voluntary learning and skill development.
FW Ratio: 50%
Observable Facts
Author identifies as professional software engineer with work experience in the field.
Inferences
Author's employment demonstrates engagement with right to work and economic participation.
Blog enables direct participation in technical culture by providing platform for knowledge contribution and sharing. Open access supports broader community participation in scientific/technical culture.
Blog platform provides free, unrestricted access to detailed technical educational content. No paywalls or registration barriers. Content supports reader self-directed learning through comprehensive documentation.
Blog platform provides unrestricted publishing infrastructure with no paywalls, registration requirements, or access controls. Content is permanently archived and universally accessible. Supports freedom of information access.
Static GitHub Pages site exhibits minimal data collection; no tracking pixels, analytics, or personal data requests observed. Respects privacy through architectural simplicity.
Blog respects intellectual property by attributing authorship to named author (Sérgio Vieira) and allowing distribution of source code. Supports property rights through open knowledge model.
Evaluated by claude-haiku-4-5-20251001: +0.38 (Moderate positive)
2026-02-28 01:34
dlq_replay
DLQ message 97549 replayed to EVAL_QUEUE: Show HN: A retro video game console I've been working on in my free time
--
2026-02-28 01:34
dlq_replay
DLQ message 97540 replayed to EVAL_QUEUE: Show HN: A retro video game console I've been working on in my free time
--
2026-02-28 00:29
eval_success
Light evaluated: Neutral (0.00)
--
2026-02-28 00:29
eval
Evaluated by llama-3.3-70b-wai: 0.00 (Neutral)
2026-02-27 16:33
eval_success
Light evaluated: Neutral (0.00)
--
2026-02-27 16:33
eval
Evaluated by llama-4-scout-wai: 0.00 (Neutral)
2026-02-27 01:56
eval_success
Evaluated: Neutral (0.01)
--
2026-02-27 01:56
eval
Evaluated by deepseek-v3.2: +0.01 (Neutral) 13,506 tokens
2026-02-27 01:40
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time
--
2026-02-27 01:38
rate_limit
OpenRouter rate limited (429) model=llama-3.3-70b
--
2026-02-27 01:37
rate_limit
OpenRouter rate limited (429) model=llama-3.3-70b
--
2026-02-27 01:36
rate_limit
OpenRouter rate limited (429) model=llama-3.3-70b
--
2026-02-27 01:33
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time
--
2026-02-27 01:32
eval_retry
OpenRouter error 400 model=llama-3.3-70b
--
2026-02-27 01:32
eval_failure
Evaluation failed: Error: OpenRouter API error 400: {"error":{"message":"Provider returned error","code":400,"metadata":{"raw":"{\"details\":{\"_errors\":[\"response_format is not supported by this model\"]},\"issues\":
--
2026-02-27 01:32
eval_retry
OpenRouter error 400 model=llama-3.3-70b
--
2026-02-27 01:32
eval_failure
Evaluation failed: Error: OpenRouter API error 400: {"error":{"message":"Provider returned error","code":400,"metadata":{"raw":"{\"details\":{\"_errors\":[\"response_format is not supported by this model\"]},\"issues\":
--
2026-02-27 01:31
rate_limit
OpenRouter rate limited (429) model=llama-3.3-70b
--
2026-02-27 01:27
eval
Evaluated by claude-haiku-4-5: 0.00 (Neutral)
2026-02-26 18:40
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time
--
2026-02-26 18:38
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time
--
2026-02-26 18:38
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time
--
2026-02-26 18:37
dlq
Dead-lettered after 1 attempts: Show HN: A retro video game console I've been working on in my free time