I've been working on an Atari 2600 emulator for many years. I've recently decided to end development at v0.34.0 and thought this was a good time for people on Hacker News to see it.<p>The emulation is complete and the 6507, TIA, RIOT and memory sub-systems are all accurate. It supports all the known cartridge formats, including those that make use of on-cartridge ARM processors and also specialist cartridge types like MovieCart.<p>The debugger is extensive and, uniquely, allows the emulation to be stepped at a sub-CPU-cycle level. Programs running on the ARM can be inspected at the source code level if DWARF data is available; breakpoints can be added and local/global variables can be inspected.<p>For the player, games can be played with a simple but effective series of CRT effects (implemented with GLSL shaders) and quick and responsive rewinding of gameplay. In fact, the rewind system plays an important part in the debugger too.<p>From the perspective of a Go developer, I believe it shows that the language can produce good and useful applications for the desktop. There is an undoubted performance penalty introduced by the use of supporting C libraries (SDL, Dear Imgui, etc.) but it is, in my opinion, not terrible. Other people may disagree with that and I'd be interested in hearing their thoughts.<p>The project is not worthy of a v1.0 tag but I now consider it complete if not bug-free. I know I've made some poor engineering choices but I believe many of these mistakes were due to my inexperience with the language - I would certainly make different choices today.<p>I look forward to constructive criticism from the programmers and engineers on Hacker News before moving onto my next project.