Skip to main content

C64 DTV

 

This is post from my old blog. I’m not sure how useful this is, seeing how the C64 direct to TV is no longer in production, but if you happen to find yourself in possession of one. There are all sorts of fun mods you can do.

For those that don't know the C64 DTV is a joystick that connects directly to your TV and emulates a Commodore 64 computer with 30 games burned onto its internal ROM. It was produced for 2 years between 2004 and 2006. Awhile back I acquired one off eBay, with the intention of modifying it. Inside the DTV there are labeled solder points to connect a PS/2 keyboard and IEC lines to connect a Commodore 1541 drive. There is quite a lot of information on the web on how to modify one of these, and I've been wanting to give it a try.



My DTV was a version 1 NTSC board. It has an Atmel ASIC at its core emulating the 6510 CPU and the video and audio chips of the C64, it has 128K of Ram and 2MB of ROM. Internally it has connections for an IEC drive, a Keyboard, Joystick port 2 and all the connections for joy port 1 except up. The first mod I did was to install a keyboard. I found super cool vinyl stickers to go on the keys so it would have all the weird characters the original Commodore 64 had. Unfortunately, the keymapping on the C64DTV is off. To fix things I found this hack called a keyboard twister, which uses an ATtiny microcontroller to modify the scan code from the keyboard to the DTV. I modified the keyboards twisters code to send the scan code for a K at boot up which on the DTV forces it to boot to basic instead of pulling up the DTV games menu. I also modified the code to send the scan code for delete at the same time it triggered up on joy port2 which for some strange reason results in joy 1 up being registered by the DTV. That way I would have a complete joy port1. This work's well but now when I press up on joy 1 it registers up being pressed on both joysticks. So, you can’t use both joysticks at the same time. The modified keyboard twister code is at the bottom of the page.

Next, I connected the 2 joysticks to the DTV. The picture below has all the solder points labeled.



JOYA UP = Joystick Port 2 Up

JOYA DN = Joystick Port 2 Down

JOYA LT = Joystick Port 2 Left

JOYA RT = Joystick Port 2 Right

JOYA FE = Joystick Port 2 Fire

 

JOYB DN = Joystick Port 1 Down

JOYB LT = Joystick Port 1 Left

JOYB RT = Joystick Port 1 Right

JOYB FE = Joystick Port 1 Fire

 

IEC ATN = Disk-drive IEC ATN

IEC CLK = Disk-drive IEC CLOCK

IEC DTA = Disk-drive IEC DATA

 

KEYB DTA = Keyboard DATA

KEYB CLK = Keyboard CLOCK

 



Finally, I made an SD card based 1541 drive emulator to connect to the IEC port. Originally, I was going to use this design. But unfortunately, I fried the Atmega644 I was going to use so I modified Unseen sd2iec 0.6.6 firmware to run on a ATmega 328p Micro controller of which I had on hand.


Anyway, It's all up and running now, I noticed a lot of the Commodore 64 games produce weird bugs on the DTV. On rampage the monsters flicker and are almost transparent. Any way here's a link to a repository with games patched for the DTV 2/3 most work fine on the DTV 1.

Keyboard Code

SD2IEC 328P Mod

 

Comments

Popular posts from this blog

Force Phone View: Firefox Extension

If you’ve ever tried to browse the web in split-screen mode on a small laptop, you know the struggle. Most websites stubbornly cling to their "grid" or desktop layout, leaving you with tiny text and horizontally overflowing content. Force Phone View is a Firefox extension designed to fix exactly that. By tricking websites into thinking you're on a mobile device, it forces them to deliver a clean, column-based mobile layout that fits perfectly into narrow windows. Key Features Mobile Spoofing : Automatically sends an Android User-Agent to ensure the site delivers its mobile-optimized version. Width Constraint : Constrains the page viewport to 720 pixels , a width that reliably triggers column views instead of desktop grids. One-Tap Control : Toggle the effect on and off instantly using a simple button in the Firefox extension popup. Enhanced Readability : Perfect for researchers, students, or anyone multitasking in side...

Arduino FM Radio Transmitter

This following is re-post of an article from my old blog from 2008: This is an FM radio transmitter I made using an arduino and a NS73M FM Transmitter. I got the idea from an article on hack a day, if you’re interested in building your own you should check out Mike Yancey's page he built the one that made it on hackaday.com and he does a very thorough job of documenting how all the components hook together. I was impressed by the level of finishing he was able to achieve on the housing; it looked like a commercial product. I wanted to see if I could achieve a similar result, it’s amazing what you can do with some simple hand tools. If your patient with the file, you can make perfectly square holes in aluminum.   On my implementation I omitted the de-bouncing circuit that he has connected to his rotary encoder, and I used a two-line display. Since I omitted the de-bouncing circuit, I couldn’t use the original rotary encoder library since that code uses a hardware interrupt a...

NES game pad

 This is re-post of a blog post I did about 15 years back, I don't know if I would use an Attiny microcontroller if I was to do this today. The price of chips with built in USB is now cost comparable, and hardware USB is more reliable. But it's a fun project and if you happen to have a microcontroller compatible with V-USB it's worth a try.   I was digging though some of my old junk and found a box of old Nintendo stuff and I thought that it might be cool to turn one of the controllers into a USB game pad. Now you can buy a USB NES style gamepad, but what's the fun in that. So, I started looking though my box of electronic parts and found a couple of Atmel Attiny 85 micro controllers. Sweet a chance to try out the AVR-USB library . Now you would think you need a clock crystal to sync the micro controller with the USB, but the AVR-USB library has an algorithm to calibrate the internal oscillator to within +/- 1% accuracy. Which is fortunate because if we had to use a cl...