Minecraft wizard, and record holder for the Super Mario World speedrun [SethBling] is experimenting with machine learning. He built a program that will get Mario through an entire level of Super Mario World – Donut Plains 1 – using neural networks and genetic algorithms.
A neural network simply takes an input, in this case a small graphic representing the sprites in the game it’s playing, sends that input through a series of artificial neurons, and turns that into commands for the controller. It’s an exceedingly simple neural network – the network that can get Mario through an entire level is less than a dozen neurons – but with enough training, even simple networks can accomplish very complex tasks.
To train the network, or weighting the connections between inputs, neurons, and outputs, [SethBling] is using an evolutionary algorithm. This algorithm first generates a few random neural networks, watches Mario’s progress across Donut Plains 1, and assigns a fitness value to each net. The best networks of each generation are combined, and the process continues for the next generation. It took 34 generations before MarI/O could finish the level without dying.
A few members of the Internet’s peanut gallery have pointed to a paper/YouTube video by [Tom Murphy] that generalized a completely different technique to play a whole bunch of different NES games. While both [SethBling]’s and [Tom Murphy]’s algorithms use certain variables to determine its own success, [Tom Murphy]’s technique works nearly automatically; it will play about as well as the training data it is given. [SethBling]’s algorithm requires no training data – that’s the entire point of using a genetic algorithm.
Continue reading “Neural Networks And MarI/O”
Close your eyes and think back, far back when you were a wee kid. Remember those colored beads that a child would populate on a small plastic peg board, arranged in some sort of artsy pattern, then ironed to fuse the beads together into a crafty trinket? They were fun for kids but what good are they to us adults nowadays? Well, [Lalya] has shown that they can be used to make a unique and interesting NES Controller.
First, the controller’s front panel was laid out on the pegboard, remembering to lay it out in reverse so the melted side of the beads was facing into the controller. Holes were left in the top panel for the D-pad and B/A buttons. The sides, back and bottom panels of the controller were made the same way. Hot glue holds the case panels together.
Inside the case is an Arduino and breadboard with three through-hole momentary buttons. These are wired up to the Arduino inputs and a sketch emulates keystrokes when connected to a computer. Unfortunately, the D-pad’s functionality is just a button right now. [Lalya] uses the project to control iTunes. Maybe the next revision will be more video game friendly.
Having your own NES controller recreation might not be high on your list. But you have to admit that this s a pretty simple and inexpensive way to make custom enclosures.
If LEGO are cool, and abnormally large NES controllers are cool, then what [Baron von Brunk] has created is pretty dang cool. It’s a super large functional NES game controller…. made out of LEGO! Yes, your favorite building blocks from the past (or present) can now be use to make an unnecessarily large game controller.
The four main sides of the controller case are standard stacked grey LEGO bricks. The inside of the case is mostly hollow, only with some supporting structures for the walls and buttons. The top is made from 4 individual LEGO panels that can be quickly and easily removed to access the interior components. The large LEGO buttons slide up and down inside a frame and are supported in the ‘up’ position care of some shock absorbers from a Technic Lego set. The shocks create a spring-loaded button that, when pressed down, makes contact with a momentary switch from Radio Shack. Each momentary switch is wired to a stock NES controller buried inside the large replica. The stock controller cord is then connected to an NES-to-USB adapter so the final product works with an NES Emulator on a PC.
[Baron von Brunk] is no stranger to Hackaday or other LEGO projects, check out this lamp shade and traffic light.
Continue reading “Large NES Controller Made From LEGOs”
[Trapper] is an 80’s kid, and back in the day the Nintendo Entertainment System was his jam. One fateful night, he turned over his favorite gray box, removed a small plastic guard, and revealed the mythical expansion port. What was it for? What would Nintendo do with it?
The expansion port on the NES wasn’t really used for anything, at least in the US market. Even in the homebrew scene, there’s only one stalled project that allows the NES to connect to external devices. To fulfill [Trap]’s childhood dream, he would have to build something for the NES expansion port. Twitter seemed like a good application.
The first step towards creating an NES Expansion Port Twitter thing was to probe the depths of this connector. The entire data bus for the CPU is there, along with some cartridge pass-through pins and a single address line. The design of the system uses a microcontroller and a small bit of shared SRAM with the NES. This SRAM shares messages between the microcontroller and NES, telling the uC to Tweet something, or telling the NES to put something on the screen.
Only a single address pin – A15 – is available on the expansion port, but [Trapper] needed to read and write to a certain section of memory starting at $6000. This meant Addresses A13 and A14 needed to be accessed as well. Fortunately, these pins are available on the cartridge slot, and there are a number of cartridge pass-through pins on the expansion connector. Making a bridge between a few pins of an unused cartridge solved this problem.
From there, it’s just a series of message passing between a microcontroller and the NES. With the help of [Trap]’s brother [Jered] and a Twitter relay app running on a server, this NES can actually Tweet. You can see a video of that below.
Continue reading “Tweeting From The NES Expansion Port”
Though the names have changed over the years, the console wars wage on. [moop] must have been feeling nostalgic for the NES vs. SEGA days when he started his current project, Foobot, which is a tabletop football (soccer) game played by robots that are controlled with classic NES and SEGA controllers.
Each team has two robots that tool around on laser-cut perspex wheels attached directly to 16,000RPM motors. An SN754410 controls the motors, and each robot has an ATtiny2313 brain. They all communicate with a single transmitter over their 433MHz 1402 radio receiver modules. To avoid collisions, [moop] used a packet system, wherein each robot has an ID. The messages all contain a robot ID, message payload, and checksum. The robots ignore messages addressed to others, and any message with an invalid checksum.
[moop] has made everything available on his github, including the PCB layouts and CAD files for the robot chassis and transmitter case. Watch them battle it out after the break. If the Foobots have riled you up about vintage gaming, check out these sweet arcade hacks.
Continue reading “In Which Robots Fight the Console Wars”
Let’s play a quick word association game: Peanut butter…jelly. Arches…golden. NES…Netflix? That last one sounds like a stretch, but the [darNES] development team had a Hack Day and a dream. They started with cached Netflix data and ended up playing it on an ordinary NES. (YouTube link)
The data was pre-converted so that the video frames were stored as tilesets and stored in the ROM image. [Guy] used the NES memory mapper (MMC3) to swap the frames. [darNES] had originally planned to use a Raspberry Pi in the cartridge to handle the video conversion and networking, but had to change gears and make a static ROM image due to time constraints and resource availability.
Accessing the Netflix data is just like the days of yore – load the cartridge into an unmodified NES and hit the power button (they didn’t even need to blow on it!). A bare-bones Netflix gallery appears. You can move the white cursor on the screen with the NES controller’s D-pad. House of Cards was the choice, and true to form, the next screen shows you a synopsis with a still image and gives you the option to Play. Recommend is also there, but obviously won’t work in this setup. Still, it got a chuckle out of us. [darNES] admits that due to time issues they did not optimize the color palette for the tilesets. They plan to release more of the technical info this week, but have already given us some hints on their Hacker News thread.
Check out the videos after the break to see the video they fit onto a 256K NES cartridge.
Continue reading “[darNES] Stores Cached Netflix on NES Cartridge”
By far the most common use for the Raspberry Pi is shoving a few dozen emulators on an SD card and calling it a day. Everybody’s got to start somewhere, right? There are other tiny, credit card-sized Linux boards out there, and [Andrew] is bringing the same functionality of the Raspi to the BeagleBone Black and BeagleBoard with BeagleSNES, an emulator for all the sane pre-N64 consoles.
BeagleSNES started as a class project in embedded system design, but the performance of simply porting SNES9X wasn’t very good by default. [Andrew] ended up hacking the bootloader and kernel, profiling the emulator, and slowly over the course of three years of development making this the best emulator possible.
After a few months of development, [Andrew] recently released a new version of BeagleSNES that includes OpenGL ES, native gamepad support through the BeagleBone’s PRU, and support for all the older Nintendo consoles and portables. Video demos below.
Continue reading “BeagleSNES for Game Boy, Game Boy Advance, NES, and – yes – SNES”