Blog Posts

Commodore C64 Emulator

Frank Bösing has achieved the ambitious goal of emulating The Commodore C64 on a Teensy 3.6.

C64 Emulator for the IL9341 Display

Boulder Dash is being played on the emulator in this video.

There are 2 versions of the emulator – one for the ILI9341 display and the other for a VGA display.

C64 emulator for VGA

The list of working games is lengthy, including these favorites:

  • Boulder Dash
  • Galaxian
  • Dig Dug
  • Donkey Kong
  • Mario Bro
  • Paperboy
  • PAC-MAN
  • Zaxxon

The project stated a few years ago someone asked Frank if it was possible to emulate the C64’s Sound Interface Device (SID) chip on the Teensy 3.2.  He found a good reverse engineered SID (reSID) and ported it to the Teensy 3.2.  Unfortunately the current reSID versions require a lot of RAM, so he had to switch to an older version.  Then Teensy 3.6 was announced.  The 256KB of RAM, more than enough flash memory, SD slot, and 180 MHz speed made Frank think it was possible to emulate a complete Commodore C64.

In order to make the emulation happen, challenges with the display needed to be addressed.  With current libraries there was no way to control a display fast enough for the emulation.  Frank wrote a new display library for the well-known ILI9341 TFT display using DMA and overclocking the SPI interface to 60 MHz, to achieve full screen DMA-based refresh.

It’s been *a few* years since the Commodore C64 has been around (released in 1982, discontinued in 1994) and Frank had forgotten about it’s technical details.   Luckily the documentation is still around and he was able to read up on it.  He admits that he underestimated the video chip on the C64 (VIC-II), but that turned out to a good thing. Had he known what he was in for he might not have started the project.  In the meantime, he has rewritten the code for the VIC-II a few times.

The C64 emulator currently sports the following list of features

  • Supports Commodore Serial IEC Bus
  • For ILI9341 SPI Display
  • USB-Keyboards (wireless too)
  • 31kHz reSID Audio emulation
  • Audio Line-Out
  • Compatible to SD2IEC
  • Simple drive emulation included
  • Supports original joysticks
  • Small, compact size
  • Hotkeys (e.g. “LOAD “$”:LIST)

Most computer enthusiasts “of a certain age” probably have fond memories of the Commodore 64.  It’s pretty awesome that Frank has been able to bring back this piece of nostalgia.

There are more features planned.  Be sure to check out this thread on the forum for the history of the development and what features are planned for future.

The project is Open Source and code for it can be found on Git Hub.

 

Digital Warrior MIDI Controller

Tomash Ghzegovsky developed Digital Warrior, a DIY open-source MIDI controller.

The Digital Warrior was inspired by the Abelton Push and NI Maschine.  It has a 16 voice 32-step sequencer along with many other features. It also integrates with Traktor and Abelton.

The Digital Warrior web site has a good amount of documentation including comprehensive build instructions.  You can find some additional information on it’s development on Thomash’s blog.

The project is open-source with the code available on GitHub.

Daft Punk Style Helmet

Love Props has made an awesome looking Daft Punk style helmet.

Teensy 32 and TeensyDuino powered light and sound stage prop. It features real time wire/wireless MIDI and microSD file MIDI driven light shows. It also can perform real time audio analysis, beat / tempo detection and real time music driven light effects.

The hardware technical specifications include:

*Complete full RGB lighting. 200 smd RGB
*No cheap wire soldering. Each panel has a custom housing PCB for a safe and durable soldering
*ARM Cortex M4 Teensy processor. Tinny and powerful processor
*Wifi NodeMCU. Allows Wi-fi interaction with the unit
*Accelerometer. Allows motion interaction with the unit
*Internal Microphone and Line input. Allows the unit to interact with music or sound
*USB and SD Card slot. Makes easier to add LED choreographies or update the OS
*MIDI support. Makes easier to add more LED choreographies without programming knowledge via MIDI
*Custom MIDI Library. Plug and play with the common music production softwares
*Custom chromatic library. Absolute control of the colors, saturation, brightness and timing for pure colors
*Internal LCD Screen. A 2 inch screen displays the menu of the OS. Scrollable with the right ear control knob
*Internal Fans. 2 fans placed on the jaw allows a cool breathing of the user
*Long-lasting autonomy. Powered by the 14 Amps LoveProps gauntlet, more than 6 hours of autonomy

Thermal Imaging Camera

Kris Kasprzak built a Thermal Imaging Camera.

After figuring out that he has a leak in his A/C duct system, Kris built the camera to help isolate the problem.  The camera module he used is based on the AMG8833 sensor.  Using a touch screen display capabilities allows the user to set the to set the min/max temperature.

The code for the project can be found on this Google drive.

Here’s a nice video Kris published this great video of the project.

Spino – Retro Gaming POV LED Display

Raphael Seghier, Guilaume Cherau, and team have been building SPINO – a POV display that can connect to your phone through bluetooth and play retro games.

Spino uses either 32 or 64 LEDs for the display.  Data is transferred via Bluetooth and the PCB connects to the power using a wireless charging module.  Retro games such as PacMan and Space Invaders can be played on Spino.  They also hacked the Doom 2 code to play on Spino.

This video shows Doom 2 being played on the POV display.

Minecraft Player Status

Mark Fickett made some cool light up avatars to indicate when players log on and off of his Minecraft server.

When a player logs into my Minecraft server, the associated folded paper avatar lights up: blue-green as they log in, white while they’re online, red just after they sign off.

A Python script queries a Minecraft server for player status, then sends a list of online players to the Teensy. The Teensy runs an Arduino sketch that translates the list of names to output pin settings, controlling the LEDs.  You can find the code for the project on Github.