Commodore 64
DTV Hacking!
In summer 2012, I
got my hands on a C-64-in-a-joystick: the C64 DTV! Talk about being late
to the party, though. The DTV was released in 2004, and by 2007 this remake
of a retro computer was itself becoming retro! The DTV caused a flurry of excitement
when it was released due to its size, hackability, and enhancement of the system's
capabilities over a stock C64. Games were being patched to work with the DTV's
face buttons, and demo groups made some stunning demos to show off the DTV's
graphical power.
But by 2012,
that had all dried up. DTV information sites were going offline and links became
broken... just as I was searching for information on the system. Far more frustrating,
however, is a situation which I'll describe below using some easy-to-understand
symbolic imagery.
Software
and demos written specifically for the "DTV" didn't always
work on my DTV. You see, a myriad of demos and transfer software marked "DTV"
were actually only for the DTV2. The DTV2 is the
2nd-generation DTV unit, released only in PAL countries. It's the one everyone
loves (see below left.)
|
My system, on
the other hand, was the original DTV, the DTV1 (right, obviously),
released in North America. Despite being the original, it's treated
as the bastard albino stepchild of the family.
It's not my
fault. Both my home country (Canada) and Japan, where I live now,
use the NTSC TV standard and can't display a PAL DTV2 unit even if
I could get my hands on one.
I had asked my
family way back in 2005 to find a DTV for me back home and send it
to Japan, but they were apparently not up to the task. Amazingly,
one popped up on Yahoo Auctions Japan in 2012 at a bargain price and
I snapped it up!
|
|
The DTV1
is still a very impressive unit. It's built and shaped like most other plug-'n-play
units, powered by batteries, with a long, wired A/V cable to hook directly up
to your TV. It sports 20 built-in games plus one or two Epyx "-Games"
split up into individual events. You can enjoy some timeless classics or, right
off the bat, waggle the joystick on bootup to get to a hidden BASIC prompt full
of Easter eggs.
"So, the DTV is
enhanced over the C-64 and is hackable," you say? "Tell me more!"
Okay. The DTV1 included 128K of RAM, DMA transfer functions, and enhanced
display modes with 256 possible colours compared to the original C-64's fixed
16. All DTV motherboards included solder pads for user expansion, including
joystick buttons, PS/2 keyboard and Commodore IEC (disk drive) connections.
You can thus put this DTV in a case or something and turn it into almost a
full-fledged C-64 computer.
Hack it? Don't mind if
I do! Here I've opened up the DTV showing the rat's nest of wires that I've
added to the system to get at all the expansion possibilities. You can get
a good idea in the picture on the right (below) just how clearly labeled all
the expansion pads are (IEC, KEYBD) for our convenience. Thank you!
To the
left (below), I've fitted in a 5V power plug, a S-Video jack, and a standard
Atari/C=/Sega joypad connector. To the right, you can see the PS/2 keyboard
connector I added in. It's times like these when I wish I had a Dremel for
clean cutting of plastic, as I made holes and slots in the casing by resorting
to a soldering iron and hot knife. It was NOT pretty but oh, well, everything's
in there solidly.
OK, now.
Time to get things loaded on this system. With just the standard DTV, you
have all the pack-in games stored on ROM as a virtual device 1, but no other
way to load or save files. So the first step I took was to make a "DTVTrans"
adaptor which connects a cable between my PC's parallel port and the newly-installed
joystick port of my DTV.
The DTVTrans
adaptor (and PC-side program) do two things: they establish
a bidirectional, synchronous communications protocol between
a PC and C-64 via its joystick port, and they allow the PC
to control the DTV's joystick movements. And in the DTV's
Easter-egg BASIC, text input is done via the joystick controlling
a virtual keyboard -- meaning the PC can input BASIC
programs automatically through this adaptor.
That
is in fact how bootstrapping is done: the PC waggles the joystick
to type in a small bootloader and then runs it. The PC is
then free to send over any binary C-64 program via the DTVTrans
protocol. On a DTV2, DTVTrans can load files, manage memory,
and reflash the built-in flash ROM. On the DTV1, since there's
no "flash", only ROM, I used this method to load
games, programs, etc. A little cumbersome, but it worked better
than I expected. It even came in handy later when I needed
a method to transfer data to my Famicom in another
programming project!
|
|
Nobody
will get any use out of this, probably, but I shortened
the BASIC bootloader as much as I could: |
0POKE1,55:B=56320:W=B+2:I=W+12:X=255
1DEFFNA(A)=A*4+(PEEK(B)AND3)
2POKEI,0:R=PEEK(W):POKEW,16:POKEB,X
3GOSUB7:GOSUB8:S=D:GOSUB7:GOSUB8:E=D
4FORA=STOE:GOSUB7:POKEA,D:?"#";:NEXT:GOSUB7
5POKEW,R:POKEI,1:SYSS
7D=0
8GOSUB9
9WAITB,8,8:D=FNA(D):POKEB,239:WAITB,8,0:D=FNA(D):POKEB,X:RETURN |
It's
283 characters compared to 442 for the one that comes
in the dtvtrans+ package, meaning it will type in 1.5x
faster and with hopefully fewer synch errors. |
|
|
|
This was a happy solution
for about one week, so I soon started looking for other ways to load
and save files on the DTV. A nifty little unit called SD2IEC presented
itself. One online retailer had a "bugged" earlier version for a
very reasonable $25, so I snapped it up while supplies lasted.
SD2IEC, as the name implies,
is a device that mounts an SD card as an IEC disk drive. The SD card can have
navigable directories as well as mount .D64 files as virtual "disks".
Truly remarkable and useful! (Turns out the bug in this version was a poorly
connected trace that went to the SD's write-protect switch, preventing files
from being saved or D64 files from even being read/mounted. Anyway, a single
wire gingerly soldered between ground and that switch solved the bug. Phew!)
As you
can probably tell from the pics above, I decided to install the SD2IEC inside
of the usually unused battery compartment underneath the DTV. I measured all
the fine dimensions of the SD2IEC and the edges/insides of the battery compartment
and then calculated that it could be mounted at an angle like so, fitting
snugly with no parts protruding except the end of the SD card -- which, naturally,
needs to be graspable by human hands.
I melted/cut
down the battery guides in the middle to gradually descending heights which
guided the angle of the SD2IEC. The lower end of the unit has the connectors
coming out from a header into the interior of the DTV below.
Everything
finished, I can screw the battery cover on (below left) and the SD Card is
easily removable with a swipe of a thumb or index finger. No awkward pinching
or fishing for micro SDs with fingernails for this guy! I'm glad that the
SD card can stay hidden under the DTV well out of harm's way.
S-Video
Hack for the DTV1
One frustration
with the stock DTV was the dark and poor-quality composite video that
came as standard over hair-thin A/V wires.
Oh, of course
DTV websites said that S-Video could be obtained from all DTV units,
but none of them bothered to explain how it could be done on
the DTV1. (Again, full S-Video diagrams exist for the DTV2
and Hummer DTV online...)
So with little
help from the outside, I studied the DTV1 schematics for most likely
tapping points for clean chroma and luma signals, and experimented
with various mixing levels for the discrete signals. Bad balancing,
and you either get nasty checkerboard crosstalk on the video signal,
or no colour at all.
With a good balance
found, I installed a small 4-pin headphone jack to carry S-Video to
the outside world. (Oddly, I had from before an S-Video cable that
ended in a 1/8" headphone plug. This proved so convenient for
space-saving purposes, I now use it on several of my consoles hacked
for S-Video.)
|
|
Finally, enjoy this comparison
of DTV1 S-Video with its standard composite output!
<-- BACK to Cool Stuff
| e-Mail Chris!