Dreamcast Programming


SonicTehAwesomeFace

Still Fresh
Joined
Sep 11, 2010
Messages
46
I'm thinking of learning how to program for the SEGA Dreamcast. There's just a few obstacles I need to overcome:

  • Learning the technical limitations of the system and working around them.
  • Figuring out how to burn games onto CD-R's and actually have my unit be able to read them (My Dreamcast has a "2" on the bottom, which means It can't play burned games without you burning them a certain way).
  • Figuring out how to debug in real time.
  • Choosing an existing game engine or making my own (the latter is obviously harder).


I'm thinking that I want to make some kind of shooter.


If I want to choose my game engine, I have a few preferred ones:

  • Build (The 2D first person engine used for Duke Nukem 3D)
  • MascotCapsule "eruption" (The 3D over-the-shoulder third person engine used for Resident Evil 4)
  • id Tech 3 or id Tech 4 (the former was used for Quake III: Arena, and the latter was used for Doom 3)


I have a few questions too:

  • Is it possible to make more use of the Dreamcast's short-term memory and VMU memory by compressing the files?
  • Is it possible to produce more shades on the VMU's screen than just black and white, kind of like what the original Gameboy did when it displayed the light gray and dark gray shades?
  • If I max out the limitations of the system, is it possible to make an add-on to put in the serial port on the back of the system to give it more horsepower?
  • I want to make my game(s) be playable online, but since SEGA-Net is gone, could I make my own network?


Please give me some tips, ideas, and suggestions in the comments.


Thanks for reading!
 
Last edited by a moderator:
Have you seen the SD card readers that are available for Dreamcast? They are readily available on eBay for less than $20


You can run homebrew etc. on micro SD/TransFlash cards just by plugging in the unit and running the DreamShell CD. No need to burn any discs (and for testing you'd have to use loads!).


As for programming, have you looked at bennu or Fenix (IIRC) for coding?
 
Last edited by a moderator:
If you're serious about programming for the Dreamcast, I'd recommend getting a Dreamcast Devleopment Kit and an Adaptec 2940U SCSI adapter. You can use the official SDK, or KallistiOS API for programming with. I don't know much about the SD card method, so I can't immediately recommend it, but I could recommend looking into it.


I use the official SDK with DC2CD for physical testing, which works surprisingly well, and NullDC for emulated testing with the GDI format.


For real-time debugging, you can use a coder's cable (it's on Google), the Broadband Adapter, or the LAN adapter to get printf'd results.


As for your questions:


1. Do you mean as more RAM? Also, what do you mean by the "short term memory"?


2. Yes.


3. Depends on the limitation.


4. Sockets.
 
with regards to SD card readers, I got this one http://item.fromtaobao.com/item.htm?id=7818275499 which works quite nicely for me running emus and homebrew - plugs into the serial port.


I don't think I can link to the site (contains dc isos) but there is a site which has boot disc images in cdi (discjuggler format) which allow you to boot cds of binaries which don't self-boot. if you can find it maybe that could be of help.
 
RAM is volatile memory, while others, such as ROM, and optical media, are non-volatile. ROM would be indefinite term memory by that definition, as its name suggests it is read only and thus not writeable (not taking into consideration EEPROMs or other programmable types of ROM). I won't get into semantics about it, though =P.


Anyway, yes, you can use the VMU as RAM, but it really isn't worth it and wouldn't be a good idea due to it being the equivalent of using a USB thumb drive (only much slower) as a swap drive. I did think about issuing updates to the executable via VMUs, however, the limited size (64KiB x 2) would make it unusable in any game that doesn't just display "Hello world" then quit upon receiving input from a controller.
 
We are thinking in two different ways. I'm giving the simple and basic definition, you are giving the complex, exact definition, and nether of us can understand each other.
 
Back
Top