Recreating DOOM On A Homebrew 8-Bit CPU

[James Sharman] has been working away on a 8-bit CPU of his own design. Naturally, with his computing device largely functional, the obvious question was asked: can it run DOOM? [James’] latest video explores this question, showing just how close he was able to get.

[James’] 8-bit pipelined CPU also has its own UART, VGA adapter, and sound adapter all built up on discrete components on various PCBs. There’s also a custom interface for a SNES controller as an input device. However, it’s fundamentally well below the specs that DOOM originally required at launch. His 8-bit CPU runs at just 4 MHz, with 64 KB of RAM. This compares poorly to the 32-bit, 33 MHz Intel 386 chips and 4 MB of RAM originally recommended to run the game.

In lieu of running the real thing, [James] demonstrated the limitations of his machine by coding his own demo, nicknamed Doomed. It’s able to average 19 fps video output at a resolution of 80×60, and consists of over 5,000 lines of hand-written assembly code. Fundamentally, it’s a basic 3D engine not dissimilar to Wolfenstein 3D, though without any actual gaming interactions involved.

[James] could have simply stated the machine won’t run DOOM. However, trying to get something similar up and running was a useful learning experience, and in his own words, highly satisfying. This attitude of pushing on in the face of adversity is what propels many other DOOM porting efforts.

Continue reading “Recreating DOOM On A Homebrew 8-Bit CPU”

Yo Dawg, We Heard You Like Retrocomputers

The idea of having software translation programs around to do things like emulate a Super Nintendo on your $3000 gaming computer or, more practically, run x86 software on a new M1 Mac, seems pretty modern since it is so prevalent in the computer world today. The idea of using software like this is in fact much older and easily traces back into the 80s during the era of Commodore and Atari personal computers. Their hardware was actually not too dissimilar, and with a little bit of patience and know-how it’s possible to compile the Commodore 64 kernel on an Atari, with some limitations.

This project comes to us from [unbibium] and was inspired by a recent video he saw where the original Apple computer was emulated on Commodore 64. He took it in a different direction for this build though. The first step was to reformat the C64 code so it would compile on the Atari, which was largely accomplished with a Python script and some manual tweaking. From there he started working on making sure the ROMs would actually run. The memory setups of these two machines are remarkably similar which made this slightly easier, but he needed a few workarounds for a few speed bumps. Finally the cursor and HMIs were configured, and once a few other things were straightened out he has a working system running C64 software on an 8-bit Atari.

Unsurprisingly, there are a few things that aren’t working. There’s no IO besides the keyboard and mouse, and saving and loading programs is not yet possible. However, [unbibium] has made all of his code available on his GitHub page if anyone wants to expand on his work and may also improve upon this project in future builds. If you’re looking for a much easier point-of-entry for emulating Commodore software in the modern era, though, there is a project available to run a C64 from a Raspberry Pi.

Thanks to [Cprossu] for the tip!

VGA From Scratch On A Homebrew 8-bit Computer

[James Sharman] has built an impressive 8-bit homebrew computer. Based on TTL logic chips, it has a pipelined design which makes it capable of Commodore-level computing, but [James] hasn’t quite finished everything yet. While it is currently built on its own custom PCB, it has a limiting LCD display which isn’t up to the standards of the rest of the build. To resolve this issue, he decided to implement VGA from scratch.

This isn’t a bit-bang VGA implementation, either. He plans for full resolution (640×480) which will push the limits of his hardware. He also sets goals of a 24-bit DAC which will allow for millions of colors, the ability to use sprites, and hardware scrolling. Since he’s doing all of this from scratch, the plan is to keep it as simple as possible and make gradual improvements to the build as he goes. To that end, the first iteration uses a single latching chip with some other passive components. After adding some code to the CPU to support the new video style, [James] is able to display an image on his monitor.

While the image of the parrot he’s displaying isn’t exactly perfect yet, it’s a great start for his build and he does plan to make improvements to it in future videos. We’d say he’s well on his way to reproducing a full 8-bit retrocomputer. Although VGA is long outdated for modern computers, the standard is straightforward to implement and limited versions can even be done with very small microcontrollers.

Thanks to [BaldPower] for the tip!

Continue reading “VGA From Scratch On A Homebrew 8-bit Computer”

8-Bit Computer Addresses LEDs

Homebrew 8-bit computers tend to have fairly limited displays, often one or more seven-segment displays and an array of LEDs to show the values of RAM or perhaps some other states of the computer. [Duncan] is in the process of building just such an computer, but wondered if there was a way to create a more visually appealing display while still keeping the computer true to its 8-bit roots. With some interesting TTL logic he was able to create this addressable RGB LED display to some remarkable results.

The array works by controlling the WS2812B LED strips with a specific timing cycle which was pioneered by [Tim] for a different project. [Tim] was able to perform this timing cycle with some simple Assembly code, which means that [Duncan] could convert that code into TTL gate logic relatively easily. Using 74LS02 NOR chips gets the job done as far as timing goes, and the pulses are then fed into a shift register and support logic which then creates the signal for the LED strips.

When everything is said and done, [Duncan] has a fully addressable 16×16 RGB LED array as a display for his 8-bit computer without violating any of his design principles and keeping everything to discrete TTL logic chips and a stick of RAM. It’s a unique method of display that might go along really well with any other homebrew computer like this one that’s also built with 74LS chips.

Basic In 10 Lines Or Less

For the last 11 years [Gunnar Kanold] has run the annual BASIC 10 Liner contest, and the rules for the 2021 edition are now available. There are four categories and each category has specific definitions of what constitutes a line. All entries must run on an 8-bit computer system that can be emulated.

The first three categories are for games but differ in the line length allowed. You can elect to compete with 80 character lines, 120 character lines, or 256 character lines. There’s also a category for demos, tools, and other applications that must constrain lines to 256 characters.

Continue reading “Basic In 10 Lines Or Less”

DIY 8-Bit Computer Knows All The Tricks

Some projects are a rite of passage within their respected fields. For computer science, building one’s own computer from scratch is certainly among those projects. Of course, we’re not talking about buying components online and snapping together a modern x86 machine. We mean building something closer to a fully-programmable 8-bit computer from the ground up, like this one from [Federico] based on 74LS logic chips.

The computer was designed and built from scratch which is impressive enough, but [Federico] completed this project in about a month as well. It can be programmed manually through DIP switches or via a USB connection to another computer, and also includes an adjustable clock which can perform steps anywhere from 1 Hz to 32 kHz. Complete with a 1024 byte memory, a capable ALU, four seven-segment LEDs and (in the second version of the computer) a 2×16 LCD disply, this 8-bit computer has it all.

Not only is this a capable machine designed by someone who clearly knows his way around a logic chip, but [Federico] has also made the code and schematics available on his GitHub page. It’s worth a read even without building your own, but if you want to go that route without printing an enormous PCB you can always follow the breadboard route.

Thanks to [killergeek] for the tip!

Continue reading “DIY 8-Bit Computer Knows All The Tricks”

Full 8-Bit Computer On Breadboards

Getting into a big electronics project often involves the use of specialized tools, namely the use of some sort of soldering iron or other way to apply solder to often intricate, tiny, and heat-sensitive parts. While it’s best to learn to pick up this skill at some point, it’s not always necessary, even for big, complicated projects like [DerULF1]’s full 8-bit computer that he built entirely on breadboards.

For a fully featured 8-bit computer, this build goes deep into the details of how the computer works. The clock allows programs to be stepped through one cycle at a time, and even the memory can be individually accessed with a set of switches. There are plenty of other interesting features as well, such as using registers to access extra memory. It features an SPI port and PS/2 keyboard controller and also loads programs from an SD card.

The build was inspired by some of [Ben Eater]’s projects which famously focus on using logic gates and TTL chips to perform complex tasks, such as another breadboard computer which plays snake on a small display. It’s certainly a great way to learn about the inner function of computers, and better still that no soldering is required. But you may need a few extra breadboards.

Continue reading “Full 8-Bit Computer On Breadboards”