Minecraft 8-Bit CPU (Walkthrough/BuildLog)
Updated: Sep 24, 2021
I've been working on a Minecraft CPU for a bit (since the summer of 2019), as I believed it would be a great way to learn what I've always wanted to understand- how computer systems technically work (not just high level specs, but HOW those 0's and 1's transform into what we all use every day). Version 1.0 took me about 3 weeks, this consisted of an 8-bit ALU (8 full adders), with an inversion line (for subtraction). It could calculate any 2 numbers from -255 to 255. I was building a control unit for it, with buttons for addition/subtraction and each bit, so you didn't have to fly around to each adder unit and flip a switch from there.
In September 2019, I decided to do some 'Fall cleaning' and of course, one of the folders I wiped out was the appdata folder my project resided in. I had file backups, I had shadowcopy enabled, I had full disk backups, but as is Murphy's law... not a single layer of those DR systems helped me. Windows couldn't restore, backup images were unmountable, system recovery points only existed from useless points in time, my backups and shadowcopy didn't somehow include the minecraft appdata folder... It was heartbreaking. The only picture I took (and I SWORE I'd taken dozens of screenshots and pictures, but of course they didn't exist either) that I could find was the one below. Before I added the subtract function. As I built each portion and learned how it worked as I built it, I had whole sections of the map as lessons in binary, in logic gates, in how latch gates worked, how minecraft redstone components worked, all labeled with signs all over. But at least I did have some kind of evidence of the basic design.
So instead of accepting defeat, I decided maybe it would be great exercise to do it again, this time in a more compact footprint and mostly just working from what I'd learned before- not reliant on building this from scratch through trial-and-error and following along with how electrical concepts work. And it was a huge success. I built it out within 3 days, at a significantly smaller size and with tons of confidence in the fact that I could do this on mostly my own now. Below is about the same progress point I was at with the new v2.0 of the CPU. You can see the smaller size and some of the 'lesson' block areas where I documented the concepts used in this build again.
(BELOW) This is after the subtract function was implemented. So I was back to 100% feature parity with v1.0, with way less repeaters (for much faster calculation speed/signal propagation) and smaller design.
(BELOW) This is a screenshot of many of the lesson areas, the entire 8-bit ALU, and the first of 3 7-segment displays with a binary-to-BCD (binary coded decimal) converter. I now have 3, but as of February 2020 I've been focusing on a few other projects in the meantime before I get back to this one. That first display unit is fully functional, the other 2 require the 'double dabble' concept to carry numbers over to the other digits. After I implement that, I'll hook up the outputs of the ALU to the display unit so I will have actual human-readable number outputs (and no more 8-bit binary outputs that people have to convert into decimal in their heads).
This is of course an ongoing project, so as I implement the next components, I'll include new screenshots. I'll go into detail into the tools and mods I use to help me so I don't have to build block-by-block repetitively after I make the first ones, but for now I haven't been on this project since January so I won't have in-depth ability to give details on how I'm doing all this until I get back into it.