You basically have 3 options for getting started with a 100% legal development environment:
1) Compile your own tools.
For win32 users, the best guide available is Hangar-eleven's - this describes via easy instructions how to setup a cygwin environment and subsequently how to compile gcc/binutils/newlib.
For *nix users, this tutorial is very good and details both c/c++ compilations. If c++ is not a prerequisite then ngine.de's guide should suffice.
2) Build script.
Stalin's build script will automatically download the various packages, decompress, and then compile and configure your environment, saving on the time and user effort required to follow the other manual tutorials. Also, since the environment setting up can be very time consuming, you can just run this and go back to bed!
3) Precompiled tools.
WhatZDat has provided Dovoto with a precompiled package which can be found here.
For those that would like to use an ide for developing with, Dovoto has created a DC APPWIZARD which allows for visual studio integration with gcc.
Beginning to Develop
There are 2 viable choices for actually starting to develop:
1) Write your own low-level library
This would be a very mean feat to attempt to tackle for someone new to the Dreamcast hardware, and it would take a lot of work to compete with option 2. Check the links or Development docs page for *some* low-level hardware info (specifically Marcus' site).
This is the successor to Dan Potter's original library, Libdream. It is very mature and allows for both lower level programming and supports higher-level apis, such as the reduced-OpenGL api KallistiGL. It also has ports of a variety of libraries including bz2, jpeg, oggvorbis, png, s3m, tga, lwip, and zlib. It is opensource and has many contributors, and is the only active fully-featured dreamcast library around.
KallistiOS can be found at Cryptic Allusion with a sourceforge page here. Manuals / examples and various binary/source packages can be found there.
There is also a high-level alternative 3d library to KallistiGL that can be used with KallistiOS, called Iris. For information on compiling KallistiOS Hangar-Eleven again have a tutorial, but this is slightly out-of-date and may suggest more than is actually necessary with current versions of KallistiOS. Essentially one merely should copy and rename the kos/docs/environ-dc-sample.sh to the kos root directory and edit one's compiler paths within this. Subsequently just type . ./environ-dc.sh to execute this script and you should then be able to compile Kos and all addons/examples with a simple 'make' command.
In order to upload and test your dreamcast software there are 3 options:
1) Serial cable
These are slow to upload with (max speed of 128kbs) but are very cheap to buy. They have come to be known as 'Coder's cables', and can be bought prebuilt from sites such as Lik-sang. Marcus' site contains build instructions if you would like to build your own.
2) Broadband adaptor (model# HIT-0400/HIT-0401)
This is the ideal setup. They are very fast (100mbs), work with certain commercial online games such as Quake 3 Arena and Phantasy Star Online, but are also very expensive and difficult to get ahold of since they were only produced in very limited supply by Sega (<50k). They sell on auction sites such as ebay from anywhere between $100 to $200. However, the original manufacturers of these adaptors have recently suggested that they may do a new production run of these if they obtain sufficient preorders (1000+).
3) Lan Adaptor (model# HIT-0300)
These are the original Sega prototypes of the broadband adaptor. When the genuine BBAs came to short supply some hong-kong import sites began to sell them as an alternative. They do NOT work with commercial games, and only work with the included Japanese webbrowser and development tools such as dc-tool and KallistiOS. (they work with homebrew software courtesy of Dan Potter's reversing attempts) These adaptors sell from $50 to $100 and only run at 10mbs.
One of the advantages of 2) and 3) is that software can use your pc as a virtual (albeit slow) harddisk. You can upload software via the bba/lan adaptor and without having to burn a cdr read any required data via the network. It can even be used to watch divx movies direct from your pc, thanks to DCDivx
The actual software that should be used to upload is AndrewK's excellent range of dc-tool/dc-load products. They are opensource and different versions are available for serial cable, bba, and lan adaptor usage. They can be found here, and have particularly good KallistiOS integration. (for instance KallistiOS will automatically detect dc-tool iso redirection, so standard ansi c file reading functions can be used to read from pc rather than cdr without having to recompile that relevant software)
TheGypsy has created self-booting discjuggler/nero images and precompiled win32 packages which can be found locally here.
Getting started with dcload-ip
1) If you have a broadband adaptor download either of these:
Broadband adaptor Discjuggler image
Broadband adaptor Nero image
Alternatively if you have a lan adaptor download one of these: Lan adaptor Discjuggler image
Lan adaptor Nero image
2) Connect your ethernet cable to pc and dreamcast. It must also be a crossover lan cable... a standard lan cable will NOT work.
3) Boot up the dcload cd and you should see 'idle...' displayed.
4) As a test, disconnected the cable and 'link change' should display, then reconnect and it should say 'idle' again.
5) Set your pc ip address to 192.168.0.3
6) Now download either the win32 precompiled package or the linux precompiled package. If you get a .dll error message under win32 then you may also need to download the cygwin dlls.
7) Test the connection with a simple 'ping 192.168.0.4' command. You should receive replies from the dreamcast. If this is so jump to step 9)
8) Since the dreamcast ip isnt recognised you may need to use arp to set this up. The ethernet adaptor mac address is displayed on-screen by dcload. Type 'arp -s 192.168.0.4 macaddress' where macaddress is your dreamcast's mac address. Now go back to step 7) and communication should be successful.
9) Use the command 'dc-tool -x filename.bin' or 'dc-tool -x filename.elf' in order to upload and execute either an elf file or standard binary file. Note that dreamcast binaries can either be scrambled or non-scrambled. In order to upload to the dreamcast via dcload, your binary should be non-scrambled. Homebrew selfbooting cdrs require a scrambled binary, so if you 'rip' a binary from a nrg/dj image then it will be already scrambled. You can get a scrambler/descrambler from Marcus' site.
10) If you would like to test some software that requires seperate data files then you can create a standard iso9660 .iso file on your harddisk using mkisofs ('mkisofs -o data.iso DIR' where DIR is your specified data directory should suffice for this) and then use the command 'dc-tool -x filename.bin -i data.iso'. Consequently any attempts to read from the cd-rom within software will actually read from your iso file via the ethernet connection. There are some possible issues with this and not all software will necessarily work, but I personally have tested software as large as dctonic using this method.
1) Start a thread on our forums and hopefully someone will help out.
2) Join the dcdev mailing list. This is moderated and thus messages can become backlogged, and its not always clear how many are continuously active on this.
3) Join the KallistiOS mailing list. Not a huge number of subscribers but quite a few who are centrally active, and a good place to get assistance on KallistiOS related problems.
4) Come to #boob or #dcdev on any efnet server. These can also be 'quiet' but if more of you join...!
Other stuff to play with
There is a huge amount of applications, games, and emulators available for the system. You can find many on our user tools and development tools pages. DCVision also has a good selection with screenshots and mini-reviews available. As a final option you can browse our News Archives for other miscellaneous releases.
And when you yourself have created something 'cool', feel free to submit it and have it added to the site!
Please notify me also of any suggested corrections / additions to this guide, and if people would like to specifically get involved in Boob! themselves further and help out in some way, then get in touch!
The information in this document is Copyright © 2002 by B00B! Dreamcast Research and may not be reproduced in whole or part without permission.