Documented Source Code For Elite On The C64, BBC Micro And Others

If you ever wanted to dive into the source code for the 1980s space gameĀ Elite, but didn’t want to invest many hours reverse-engineering the 6502 assembly code, then [Mark Moxon]’s annotated code has you covered. The systems referenced range from the BBC Micro and Commodore 64 to the NES and Apple II, with some of these versions based on the officially released source code. For other systems the available source code was used together with decompiled game binaries to determine the changes and to produce functional, fully commented source code.

The cutting-edge gameplay of Elite on the 8502.
The cutting-edge gameplay of Elite on the 8502.

This particular game is fascinating for being one of the first to use wire-frame 3D graphics with hidden-line removal and a sprawling universe in which to trade and deal with less than friendly parties using a variety of weapons. After this initial entry it would go on to spawn many sequels and inspired countless games that’d follow a similar formula.

On the respective GitHub project page for each version, you can find instructions on how to build the code for yourself, such as for the Commodore 64. Of note here is the license, which precludes anyone from doing more than forking and reading the code. If this is no concern, then building the game is as simple as using the assembler (BeebAsm) and the c1541 disk image utility from the VICE project.

Running UNIX On A Nintendo Entertainment System

Who wouldn’t want to run a UNIX-like operating system on their NES or Famicom? Although there’s arguably no practical reason for doing so, [decrazyo] has cobbled together a working port of Little Unix (LUnix), which was originally written for the Commodore 64 and 128 by [Daniel Dallmann]. The impetus for this project was initially curiosity, but when [decrazyo] saw that someone had already written a UNIX-like OS for the 6502 processor, it seemed apparent that the NES was too similar to the C64 to not port it.

Much of this is relatively straightforward, as the 6502 MPU in the C64 is nearly identical to the Ricoh 2A03 in the NES, with the latter missing the binary-coded decimal support, which is not a crucial feature. The only significant roadblock was the lack of RAM in the NES. The console has a mere 2 KB of RAM and 2 KB of VRAM, which made it look anemic even next to the C64. Here, a Japan-only accessory came to the rescue: the Famicom Disk System (FDS), which is a proprietary floppy disk-based system that slots into the bottom of the Famicom and was used for games as well as storing saves back in the day.

By using a Famicom with FDS, it was possible to gain an additional 32 kB provided by the FDS, making the userspace utilities available in the shell. The fruits of this labor work well enough that he could also pop it up on an EverDrive cartridge that supports FDS ROMs and boot it up on an unmodified NES. Whether this is cooler than the NES-OS, which we covered previously, is up for debate.

Incidentally, [Maciej Witkowiak] seems to have resumed development on LUnix, with a new release in 2023, so maybe UNIX-on-6502 may see a revival after a few decades of little happening.

Continue reading “Running UNIX On A Nintendo Entertainment System”

Real NES Plays Frame-Perfect For You On Twitch

Have you ever wanted to be the best Super Mario Brothers speedrunner, but you just couldn’t do the frame-perfect inputs? Fear not, because [Gregory Strike] is here to save the day with his automatic NES controller!

In his previous video, [Greg] already made an automatic controller that plays a sequence of inputs at the perfect time, but it still failed some of the frame-perfect tricks. So what gives? Deviation in the timing of the NES itself gives, as he shows how the NES doesn’t sample inputs at exactly the same time every frame. To account for this, he used the latch signal, which starts the controller reading process as a time reference, and replaced his digital “mixtape” with a more time-flexible Arduino. After the modification, he shows it pulling off frame-perfect inputs every time he plays Super Mario Brothers.

But if you have a controller that can do frame-perfect inputs and it can be connected to a computer, you can connect the controller to the internet! That’s right, [Greg] created a Twitch bot that tells the Arduino exactly what inputs to send, which then relays it to the NES. It accepts simple sequences of inputs via chat, and you can try it out right now on [Greg]’s Twitch stream.

This project shows promising results, and we think it’s possible to do much more with its internet connection. We’re certainly looking forward to what [Greg] decides to make next.

Video after the break.
Continue reading “Real NES Plays Frame-Perfect For You On Twitch”

A Guided Tour Of The NES

No matter your age or background, there’s an excellent chance you’ll recognize the Nintendo Entertainment System (NES) at first glance. The iconic 8-bit system not only revitalized the gaming industry, but helped to establish the “blueprint” of console gaming for decades to come. It’s a machine so legendary and transformative that even today, it enjoys a considerable following. Some appreciate the more austere approach to gaming from a bygone era, while others are fascinated with the functional aspects of console.

The NesHacker YouTube channel is an excellent example of that latter group. Host [Ryan] explores the ins and outs of the NES as a platform, with a leaning towards the software techniques used to push the system’s 6502 processor to the limits. Even if you aren’t terribly interested in gaming, the videos on assembly programming and optimization are well worth a watch for anyone writing code for vintage hardware.

Continue reading “A Guided Tour Of The NES”

Mega Man 4 Free of Charge ROM Hack Pexels Anete Lusina

Mega Man Hack Drops Charge Shot, Adds Classic Style

When it comes to the six original Mega Man games there is a clear dividing line between the first three and the last. Mega Man 4 introduced the charging shot mechanic that allowed players to hold down the fire button in order to power-up a single blast from Mega Man’s arm cannon. The aptly named, “Mega Man 4: Free of Charge” ROM hack by [Peter] seeks to bring cohesion with the first trilogy of Mega Man games by removing the charge shot mechanic completely. To compensate for the change, enemy health bars were also adjusted so that enemies aren’t as bullet-spongy.

The Mega Man 4: Free of Charge download comes as an IPS patch file. There are free utilities out there like Floating IPS that can apply the patch file to a clean dump of a NES cartridge. This ROM hack is playable on original Nintendo Entertainment System hardware via a flashcart device, or it can be played by any common NES emulator like FCEUX or Nestopia.

One of the most annoying parts of Mega Man 4 (minus the difficulty) was the constant whir of the charge shot drowning out the brilliant soundtrack. With a patch like [Peter]’s this is no longer a going concern, and players are able to give their thumbs a bit of a break by not needing to continually hold down fire throughout a run. All welcomed changes aside, it still won’t change the fact that the Japanese TV commercial for the game is cooler than the print ads in the US.

Continue reading “Mega Man Hack Drops Charge Shot, Adds Classic Style”

What NES Development Looks Like On The Apple II

These days, if you want to code a game for the original Nintendo Entertainment System, it’s about as easy as downloading an assembler, firing up Notepad, and running the ROMs you cook up in any one of a variety of emulators. In the 1980s none of those things existed, and the process was a little more complicated – as demonstrated by [Tyler Barnes] in the video embedded below.

[Tyler] has put together a 40-minute guide on what it takes to get to “Hello World” – or more accurately, a simple pink screen – on the NES, using period-correct hardware. He starts the process by formatting some floppy disks and whipping up some basic assembly code on an Apple IIe, which gets run through the Merlin assembler for the 6502. It’s particularly convenient as the Apple II line and the NES both run the same CPU. From there it’s a case of using a standalone EPROM programmer to verify some appropriately-datecoded chips are empty, before programming them in a special add-on card for the Apple II. From there, the EPROMs are loaded into a cart custom modified with chip sockets, where it can be inserted into a NES for testing.

It’s a tedious process, with just the programming side of things taking on the order of ten to twenty minutes with a few fiddly steps along the way. While there are likely some efficiency gains to be had that were used by studios back in the day, it remains clear that development in this era was a much slower process.

Of course, if you prefer your Nintendo homebrew a couple generations hence, consider getting stuck in on the Nintendo 64. Video after the break.

Continue reading “What NES Development Looks Like On The Apple II”

Playing NES Games On An Industrial EL Display

Modern consoles are fun, but there are certain charms to retro gear that keep hackers entertained to this day. The original NES is a particularly ripe ground for projects, being one of the most popular consoles of its era. [kevtris] is one such Nintendo hacker, and decided to get NES games running on an old-school electroluminescent display (Youtube video, embedded below).

The display in this project was originally used in an industrial pick-and-place machine.

Rather than work with an original NES, [kevtris] chose to instead work with the NT Mini, an FPGA-based clone of his own design. Having picked up an EL640.480-AA1 screen, formerly from a DEK 265LT pick-and-place machine, he hunted down a data sheet and got to work. With the document outlining the required video input specifications, it was a simple matter of whipping up some Verilog and an adapter cable to get things working.

Mario, Kirby and friends can now run around, looking resplendent in the 9 colors of the red/green EL display. [kevtris] notes that the screen performs well with fast motion, and estimates the refresh rate to be in the vicinity of 60Hz. For those of you playing along at home, such screens are available online, though they’re not exactly cheap.

We’ve seen [kevtris]’s work before, with his SNES chiptune player being particularly impressive. Video after the break.

[Thanks to Morris for the tip!]

Continue reading “Playing NES Games On An Industrial EL Display”