Here you'll find my own work on the DC. This is most of the interesting content
on the site, currently. Hopefully you can find something useful in here to what
you're trying to do with your spiffy Dreamcast. If there is any host PC code in here,
it is designed for Debian Linux 2.3 (woody) and was compiled in that environment.
Your mileage may vary, but RedHat Linux 6.2 and above ought to work as well.
Note: As of Oct 5, 2001, I will no longer be hosting any versions
of libdream or KOS on here, for two seperate reasons. I am ceasing to host
libdream in the hopes that if anyone REALLY wants to use it, then someone
else can pick up hosting / maintaining it. For KOS, it's now in SourceForge's
file and CVS systems, so you don't need to get it here anymore. I am,
however, keeping both libdream 0.6 and KOS 0.6 around for historial
- KOS MMU design notes. These are just
some random notes for KOS MMU design stuff. Please excuse
the academic tone, I've spent the last two weeks writing reports for
classes. =) Posted Apr 28.
- KOS MMU itself
can be found in SourceForge FRS.
- Ghetto Pong, Stars, and Reverie
(Dreamcast libdream/KOS demos) can be found in SourceForge FRS.
- libdream 0.6. A Dreamcast function
library. This extremely old code is here strictly for historical
purposes. PLEASE DO NOT USE THIS IN A NEW PROJECT. Instead, take a
look at KallistiOS or look around to see if someone else has
started maintaining a newer libdream. You can find all
versions of libdream in one big tarball on
- KallistiOS 0.60: tarball.
This is version 0.60 of the KallistiOS operating system. This
version is available here strictly for historical purposes. PLEASE
DO NOT USE THIS IN A NEW PROJECT. Instead, go
here to grab a new one.
- Other interesting historical KOS 1.3.x stuff (and a couple of random newish
things) can be found here:
- bb1.c. This is some very simple test code to access
the "broadband adapter" (ethernet card). All it does for now is
initialize the card and dump received ethernet packets to the
serial port. A full driver will be forthcoming in the next KOS
release (0.8x, where x>0 =).
- sh-stub.c. This is
the GDB remote debugging slave. It is no longer a part of libdream, but if you
want to take a peek, here it is. If
you want to use the GDB slave, you'll need to link in setjmp.o from newlib.
Additionally, it no longer compiles with libdream 0.7 -- you'll need an older one
such as 0.6.
Be forewarned, sh-stub is a little flaky right now.
- debug_test. A test debug program. This one focuses
on setting up and using the GDB debug stub though. I included the requisite
setjmp.o from newlib. Newlib is GPL'd... see below on my links to all of the
GNU software I have distributed here. You'll also need cp850.h. This file is
generated from a Linux codepage 850 font (cp850-8x8) using my bin2c util. I am not sure
of its distribution terms, though, so you'll have to dig it up yourself. The
program is setup to let you play around in ROM, which is a fun way to
pass time if you're really bored... =) This one won't compile anymore with
- bin2c.c. A very basic binary to C array convertor. This is useful
for dumping bits of binary data (fonts, etc) into your single executable for
making into a 1ST_READ or uploading with the serial cable.
- dump2bin.py. Converts hex dumps to binary data. This assumes
that you will be dumping lines of raw hex ascii bytes into a file, and then using
this program to convert them back into a normal binary file. I use it to examine
bits of DC memory together with a DC program that dumps RAM to hex ascii bytes. This
is written in Python.
- uploader.py. A small upload script that doesn't do much more
than give you a status indicator. To run my DC programs, I generally open up a
Minicom on /dev/ttyS0, and copy the srec to /dev/ttyS0. The data goes out, and
the >'s come back, showing me that it's working. That doesn't work very well
when you're uploading 1.4 megs of SRECs (Linux) so I wrote this to give me a
status indicator. Maybe later I'll change it to properly do termios so you don't
need a terminal program to set up baud rate. Also in Python.
- da. My little disassembler. I say little, because all it does
is load up a binary image and hook into the GCC/Binutils/GDB disassembly library
for SH-4. I've included the source code, along with a Linux binary in case you
can't get it to compile. The output is similar or superior to other (Windows-based)
disassemblers for the Dreamcast, thanks to the GCC folks.
- dbg. Taduuummm... this is the Python-based visual front end
for sh-stub. Currently it's a little incomplete, but it's getting there. Take a look
if you are feeling brave.. =) Here is a little screen shot
if you want to see what it looks like currently. I've included a binary copy of
the C-based module needed to do disassembly.
- DreamIce. This is a nice little piece of collaborative
work I did with a local buddy. It basically emulates an SH4 CPU (somewhat ~=) and
routes all real hardware access to the real hardware over the serial line. Use with
the sh-stub from above.
- linux-dan. My raw copy of the Linux source tree that
compiles and runs on the Dreamcast. All I really did in here was to change some
things in the Makefile to make it work on a little-endian system (which the DC is,
and the sh-linux guys were using big-endian systems), and I modified sh4-scif.c to
make it output raw data instead of GDB packets. I also had to change the bogomips
loop so it would keep booting (so it's not quite right). You can make your own
binary by running the Makefile, and using objcopy to make an srec. Both my
vmlinux binary and the resulting vmlinux.srec are included. Also see
The sh-linux page.
Note: I had to take this down to keep my hosting service happy. ^_^;; I'll post some
diffs as soon as I can get a chance.
- s3mplay. This program has no SH4 code, but it is strictly
designed to run on the AICA CPU. This is a simple S3M player in its alpha stage. I'm
having some issues with it dropping notes and so forth, but other than that it does
produce some kind of sound =). Usage instructions in the tar.
- twiddle. Very raw skeleton code to do texture
encoding/decoding for the PVR. This encodes/decodes "twiddled"
form of various pixel formats.
src. A small test of the PVR chip. The bin
in the zip file doesn't match the C source exactly but it does
the same thing.
- vmuload 1.0. A crapola program that you can burn
to a CDR and use as a boot loader from a Nexus-compatible VMU. Includes dciwrap
to wrap BIN files as saved games.
That's all for now! Please check back here later if you want to see any developments. I'll
post on my front page when I have some development news.