The Implementors Dreamcast Internet


Talking to the Web

"My identity is so secret, even I don't know who I am."
- Muscular Beaver

The www.dreamcast.com Web site will only release limited amounts of information to browsers that are not Dreamcasts. The server looks at the HTTP_USER_AGENT environment variable to see what it's talking to. It expects to see something on the order of:

Mozilla/3.0 (compatible; Planetweb/1.125 JS SSL US Gold; Dreamcast US)
Mozilla/3.0 (Planetweb/2.100 JS SSL US; Dreamcast US)

If it doesn't see this, you are sent a stripped-down version of the site, with a message that the full version of the site is intended only for Dreamcast owners.

The Chu Chu Rocket Web site, chuchu.web.dreamcast.com, expects:

Mozilla/3.0 (DreamKey/1.0; SEGA/ChuChu)

The Samba de Amigo Web site, sambadeamigo.web.dreamcast.com, expects:

Mozilla/3.0 (DreamKey/1.0; SEGA/SAMBA DE AMIGO)

The Shenmue Web site, passport.shenmue.com, expects:

ShenmuePassport/0.5

The Sonic Adventure Web site, sonic.games.dreamcast.com, expects:

Mozilla/3.0 (SonicKey)

Like the Dreamcast site, many of the game Web sites deny access to browsers that do not give the correct User-Agent string.

It's relatively trivial to get most popular browsers to report a different user agent type - Lynx was most amicable about doing so, having such a feature in the options section.

Additionally, it turns out that it's trivial to write a small proxy in Perl to substitute the User-Agent string with that of the Planetweb browser in the HTTP request. It should be noted however, that the Dreamcast version of the sites use locally cached pointers to the site graphics (a clever performance enhancement). A more advanced version of the proxy would need to also re-write the "file://" references to proper references pointing to the Web site.

Downloading to the VMU

Simply sending content with the MIME type:

application/x-dreamcast-vms-info

will cause the Planetweb Browser to download the content of a VMI file. It will apparently then go looking for the corresponding VMS in the same root path with a MIME type of:

application/x-dreamcast-vms

The Dreamcast doesn't seem to be picky about the MIME types however, it should be sufficient that the VMI and VMS files reside in the same path.

It's fairly simple from there to write a CGI script to handle all the details of sending the required content-type. However, since the VMI file triggers the retrieval of the VMS file from the same location (which in this case would be the cgi-bin directory, actually pushing VMU data using solely CGI seems problematic at best.


Proof of Concept

A more complicated Perl CGI script which pretty-prints Sega Dreamcast VMU content files is available to demo here.

Perl source may be found here: send-vmu.tar.Z.

send-vmu.cgi is Copyright © 2000, David G. Hesprich (Dark Grue).

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Sega and Dreamcast are registered trademarks of Sega Enterprises Ltd..
Planetweb is a registered trademark of Planetweb, Inc.
Picture of The Implementors from the Zork Zero manual, Infocom, 1988.

Copyright © 2000, Dark Grue.