Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Archives:

Dreamcast Operating Systems

September 15th, 2010 by Multimedia Mike

The Sega Dreamcast was famously emblazoned with a logo proudly announcing that it was compatible with Windows CE:



It’s quite confusing. The console certainly doesn’t boot into some version of Windows to launch games. Apparently, there was a special version of CE developed for the DC and game companies had the option to leverage it. I do recall that some game startup screens would similarly advertise Windows CE.

Once the homebrew community got ahold of the device, the sky was the limit. I think NetBSD was the first alternative OS to support the Dreamcast. Meanwhile, I have recollections of DC Linux and LinuxDC projects along with more generic Linux-SH and SH-Linux projects.



DC Evolution hosts a disc image available for download with an unofficial version of DC Linux, assembled by one Adrian O’Grady. I figured out how to burn the disc (burning DC discs is a blog post of its own) and got it working in the console.

It’s possible to log in directly via the physical keyboard or through a serial terminal provided that you have a coder’s cable. That reminds me– my local Fry’s had a selection of USB-to-serial cables. I think this is another area that is sufficiently commoditized that just about any cable ought to work with Linux out of the box. Or maybe I’m just extrapolating from the experience of having the cheapest cable in the selection (made by io connect) plug and play with Linux.



Look! No messy converter box in the middle as in the Belkin case. The reason I went with this cable is that the packaging claimed it was capable of up to 500 Kbits/sec. Most of the cables advertised a max of 115200 bps. I distinctly recall being able to use the DC coder’s cable at 230400 bps a long time ago. Alas, 115200 seems to be the speed limit, even with this new USB cable.

Anyway, the distribution is based on a 2.4.5 kernel circa 2001. I tried to make PPP work over the serial cable but the kernel doesn’t have support. If you’re interested, here is some basic information about the machine from Linux’s perspective, gleaned from some simple commands. This helps remind us of a simpler time when Linux was able to run comfortably on a computer with 16 MB of RAM.

Debian GNU/Linux testing/unstable dreamcast ttsc/1

dreamcast login: root
Linux dreamcast 2.4.5 #27 Thu May 31 07:06:51 JST 2001 sh4 unknown

Most of the programs included with the Debian GNU/Linux system are
freely redistributable; the exact distribution terms for each program
are described in the individual files in /usr/share/doc/*/copyright

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

dreamcast:~# uname -a
Linux dreamcast 2.4.5 #27 Thu May 31 07:06:51 JST 2001 sh4 unknown

dreamcast:~# cat /proc/cpuinfo 
cpu family      : SH-4
cache size      : 8K-byte/16K-byte
bogomips        : 199.47

Machine: dreamcast
CPU clock: 200.00MHz
Bus clock: 100.00MHz
Peripheral module clock: 50.00MHz

dreamcast:~# top -b


 09:14:54 up 14 min,  1 user,  load average: 0.04, 0.03, 0.03
15 processes: 14 sleeping, 1 running, 0 zombie, 0 stopped
CPU states:   1.1% user,   5.8% system,   0.0% nice,  93.1% idle
Mem:     14616K total,    11316K used,     3300K free,     2296K buffers
Swap:        0K total,        0K used,        0K free,     5556K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
  219 root      18   0  1072 1068   868 R     5.6  7.3   0:00 top
    1 root       9   0   596  596   512 S     0.0  4.0   0:01 init
    2 root       9   0     0    0     0 SW    0.0  0.0   0:00 keventd
    3 root       9   0     0    0     0 SW    0.0  0.0   0:00 kswapd
    4 root       9   0     0    0     0 SW    0.0  0.0   0:00 kreclaimd
    5 root       9   0     0    0     0 SW    0.0  0.0   0:00 bdflush
    6 root       9   0     0    0     0 SW    0.0  0.0   0:00 kupdated
    7 root       9   0     0    0     0 SW    0.0  0.0   0:00 kmapled
   39 root       9   0   900  900   668 S     0.0  6.1   0:00 devfsd
   91 root       8   0   652  652   556 S     0.0  4.4   0:00 pump
   96 daemon     9   0   524  524   420 S     0.0  3.5   0:00 portmap
  149 root       9   0   944  944   796 S     0.0  6.4   0:00 syslogd
  152 root       9   0   604  604   456 S     0.0  4.1   0:00 klogd
  187 root       9   0   540  540   456 S     0.0  3.6   0:00 getty
  201 root       9   0  1380 1376  1112 S     0.0  9.4   0:01 bash

Note that at this point I had shutdown both gpm and inetd. The rest of the processes, save for bash, are default. The above stats only report about 14 MB of RAM; where are the other 2 MB?

dreamcast:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/rd/1             2.0M  560k  1.4M  28% /

Posted in Sega Dreamcast | 8 Comments »

8 Responses

  1. Flameeyes Says:

    Just adding my 2€c … I bought four converters from HK on eBay a few years ago, calling them “cheap” didn’t just cut it, I think I paid about €6/each when in store they ask about €18 each minimum.

    Three out of four, worked just fine, the third was a CH431 from a Chinese manufacturer… it didn’t work when I bought it, it does now (I think since .32 onward).

    Serial converters are generally much easier to reverse engineer even if there are no specs available as you know what you send down to the wire…

  2. igorsk Says:

    I’ve heard some games (or was it a web browser?) were made using CE APIs and they included the kernel on the disc.

  3. Multimedia Mike Says:

    @Flameeyes: Sounds about right: this converter — the cheapest one in the store — cost me about US$18.

    Suddenly, I’m reminded of a coworker who was so incensed that a company wanted something like US$75 for a replacement of a proprietary serial cable to connect to one of their pieces of equipment, he reverse engineered the voltage levels himself and made a new cable for pennies.

    @igorsk: That makes sense. There was a DC web browser that could be used with the DC modem (or rare DC broadband adapter).

  4. Peter Says:

    Mike, when i bought my DC i had aspirations of doing homebrew things. But all i ever did was play Soul Calibur on it.

  5. Multimedia Mike Says:

    @Peter: Been there. I specifically bought my DC for homebrew. At the time, I basically had zero interest in games. Then I picked up a title called Resident Evil: Code Veronica a few months later and that single-handedly rekindled my interest in video games, an interest that laid dormant since the 8-bit NES days.

    However, I did manage to create a media playback engine on the DC (leveraging xine and FFmpeg). I hope to find that source code again.

  6. Nathan Says:

    I had a copy of the CE dev kit laying around forever, I think it was codenamed Dragon, but I’m pretty sure I finally got rid of it. I don’t have much inside information, but this article was very insightful: http://news.cnet.com/Windows-CE-notably-absent-from-Dreamcast-launch/2100-1001_3-218224.html

    I believe it was intended that Windows CE would be the primary operating system for the Dreamcast, with the deal being that Microsoft would get a licensing fee for each disc sold and wider exposure for its DirectX APIs and Sega would get… an easier development environment and access to the legions of PC game developers. But, despite working with Sega for 2+ years, Microsoft couldn’t deliver, which is alluded to in this quote from a Sega exec about the launch titles, none of which used CE:
    The game developers who have titles currently available “are developers who are used to developing software in a short span of time, and used to taking advantage of the newest hardware,” explained Neal Robison, vice president of third-party development for Sega. Emphasis mine.

    My understanding of what really happened, though, was that Microsoft basically used Sega as their R&D department and then stabbed them in the back. They learned everything they could about building game console hardware from Sega while they worked to adapt Windows CE to run on game console hardware, but they didn’t deliver and Sega ended up getting less than nothing out of the deal, as they had to scramble to replace CE and then took a bath on the hardware when it failed. It is worth noting, as a Microsoft conspiracy theorist, that the Dreamcast’s failure effectively knocked Sega, a potential competitor to a potential Microsoft game console, out of the hardware business.

    The funniest thing to me was always the Xbox controller. It was such an obvious ripoff of the Dreamcast controller, that it had to be a major “fuck you” to Sega. It had the same massive size, the same analog stick and d-pad combination on the left, the same deep, analog triggers, the same card slots on the top, and the same grouping of four buttons on the right with the same labels and only a different order to the same colors to distinguish them (the Dreamcast itself borrowed this from the SNES controller, with flipped labels and colors rotated clockwise). The only real differences were that Microsoft added a “Back” button next to the “Start” button, two buttons above the main four which were generally useless and they scrunched those four buttons up to make room for a second analog stick like on the PlayStation. The similarity is especially stark when you compare it to the other contemporary controller designs of the time.
    Dreamcast: http://en.wikipedia.org/wiki/File:Sega-dreamcast-set.png
    Xbox: http://en.wikipedia.org/wiki/File:XboxOriginalController.jpg
    PS2: http://en.wikipedia.org/wiki/File:PS2-slim-console.png
    GameCube: http://en.wikipedia.org/wiki/File:Gamecube-controller-breakdown.jpg

    Anyway, I wish I could remember more from that time or that someone with more information would chime in. I’ve always been curious just how Machiavellian Microsoft really was with that deal.

  7. Multimedia Mike Says:

    Quite a write-up, Nathan. Thanks. That seems to be a common complaint directed towards the Microsoft of the late 1990s– working with companies and assimilating their knowledge, leaving them out in the cold when MS felt it knew enough to break into the market.

  8. compn Says:

    i bought a dc for $10 at a thrift store. my fav games being Rez, Typing of the Dead and super puzzle fighter 2 turbo (which i like better on psx i think).

    i wish i had typing of the dead when i was learning how to type. i wouldve had typing down in a week or less with that game. just remember, nothing teaches kids how to type faster than being attacked by zombies.

    i highly recommend those with dreamcasts/ps2/x360 to try REZ. and super puzzle fighter 2 turbo on psx/dc. :)