The following info was created by Fulg. Visit his site here

These are step-by-step instructions to burn the Dreamcast serial slave. Instructions updated for Win32 from Marcus' page (original Linux instructions are found here). You really should read through here at least once before attempting, so you don't have any surprises down the road.

Note that the instructions I posted before were flawed, special thanks to Anthony Ball for mailing me about this. Apologies for the coasters... =)

Grab these goodies:

  • Download the serial slave in ZIP format (All versions of WinZip cannot correctly uncompress the serial_slave.tar.gz file provided by Marcus, do not be fooled!). Also includes a pre-made blank audio track.
  • Download my IP.BIN binary inserter (source and binary included).
  • Download cdrecord 1.9 for Win32 (Enjoy this, it was a b*tch to compile under cygwin).

Unzip everything in one directory (anywhere, there's nothing to install). Open up a DOS prompt and go in the directory where you unzipped the stuff (eg "cd \dctemp" or whatever you chose as a directory name).

Using cdrecord

These instructions assume an IDE writer set as a Master on the secondary IDE port, so you may need change the "dev=1,1,0" in the given commands in order to match your own setup. To find out what to replace it with, you may do this:

    cdrecord -scanbus

This will prove that cdrecord is indeed working properly, and also print out a spew of information similar to this (your own output will most likely be different):

    Cdrecord 1.9 (i686-pc-cygwin) Copyright (C) 1995-2000 Jörg Schilling
    Using libscg version 'schily-0.1'
    scsibus0:
        0,0,0 0) 'QUANTUM ' 'FIREBALL EL7 ' 'A08.' Disk
        0,1,0 1) *
        0,2,0 2) *
        0,3,0 3) *
        0,4,0 4) *
        0,5,0 5) *
        0,6,0 6) *
        0,7,0 7) HOST ADAPTOR
    scsibus1:
        1,0,0 100) ' LG ' 'CD-ROM CRD-8320B' '1.22' Removable CD-ROM
        1,1,0 101) 'HP ' 'CD-Writer+ 7200 ' '3.01' Removable CD-ROM
        1,2,0 102) *
        1,3,0 103) *
        1,4,0 104) *
        1,5,0 105) *
        1,6,0 106) *
        1,7,0 107) HOST ADAPTOR

Just find your CD-writer in the list and use the three leftmost comma-separated numbers as parameters (so now you see why I need to use dev=1,1,0 in order to send commands to my HP writer).

Burning the audio track

First, you have to burn the audio session. You don't need to create the blank audio file, it's in the zip file you downloaded above. Insert a blank CD-R in your writer and call cdrecord like so:

    cdrecord dev=1,1,0 speed=2 -multi -audio audio.raw

This may take a while, so hang in there. Feel free to change the speed=2 parameter to match the speed of your writer (omitting it defaults to speed=1). You'll see an output similar to this:

    Cdrecord 1.9 (i686-pc-cygwin) Copyright (C) 1995-2000 Jörg Schilling
    scsidev: '1,1,0'
    scsibus: 1 target: 1 lun: 0
    Using libscg version 'schily-0.1'
    Device type : Removable CD-ROM
    Version : 0
    Response Format: 1
    Vendor_info : 'HP '
    Identifikation : 'CD-Writer+ 7200 '
    Revision : '3.01'
    Device seems to be: Generic mmc CD-RW.
    Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
    Driver flags : SWABAUDIO
    Starting to write CD/DVD at speed 2 in write mode for multi session.
    Last chance to quit, starting real write in 1 seconds.
    Track 01: Total bytes read/written: 705600/705600 (300 sectors).

Creating the ISO image

Now that the audio track has been burned, it is time to create the ISO filesystem image. The reason that it can't be done earlier is that on a multisession disc the sector numbers in the image have to be offset with a number depending on the sessions burned before. To find out this number, run

    cdrecord dev=1,1,0 -msinfo

with the disc still in the drive. You should get two comma separated numbers (I got 0,11702). Remember these numbers!

Now create the ISO image with mkisofs:

    mkisofs -C x,y -o tmp.iso READ_ME.TXT

where x,y is the pair of numbers you got with -msinfo earlier. Make sure you get them correctly, or the image won't work.

mkisofs will warn that the previous session has not been imported because of a missing parameter, but you can safely ignore this message as it makes no sense here. Here's the output:

    mkisofs: Warning: -C specified without -M: old session data will not be merged.
    Total translation table size: 0
    Total rockridge attributes bytes: 0
    Total directory bytes: 0
    Path table size(bytes): 10
    Max brk space used 2000
    11727 extents written (22 Mb)

Adding the bootstrap

The first 16 sectors of an ISO9660 filesystem are blank, to leave room for bootstraps. This is where IP.BIN (32768 bytes) goes. Due to limitations in DOS and Windows, the shell trick listed in the Marcus method (and which I listed here before) cannot work under Win32.

So, to make a long story short, I wrote a small utility designed explicitly for the task of inserting an IP.BIN at the beginning of a binary image file. This will replace the first 16 sectors of the image with the serial slave's IP.BIN bootstrap code:

    ipins tmp.iso data.raw

You should see the following output on your screen:

    ipins: done, IP.BIN inserted

Burning the data track

Finally, you're ready to burn the second session, completing the disc. This track should be burned as CD/XA with form 1 sectors (2048 bytes per sector). Use the -xa1 option to cdrecord:

    cdrecord dev=1,1,0 speed=2 -multi -xa1 data.raw

Again, feel free to adjust the speed=2 parameter to match the speed of your writer. You will see something similar to this output:

    Cdrecord 1.9 (i686-pc-cygwin) Copyright (C) 1995-2000 Jörg Schilling
    scsidev: '1,1,0'
    scsibus: 1 target: 1 lun: 0
    Using libscg version 'schily-0.1'
    Device type : Removable CD-ROM
    Version : 0
    Response Format: 1
    Vendor_info : 'HP '
    Identifikation : 'CD-Writer+ 7200 '
    Revision : '3.01'
    Device seems to be: Generic mmc CD-RW.
    Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
    Driver flags : SWABAUDIO
    Starting to write CD/DVD at speed 2 in write mode for multi session.
    Last chance to quit, starting real write in 1 seconds.
    Track 02: Total bytes read/written: 51200/614400 (300 sectors).

When cdrecord completes, the disc is ready. Eject it and try it out in your Dreamcast. It will boot, then the sides of the screen will turn blue at the Sega license screen; you might need to play with the horizontal offset on your TV to see it since the blue border is rather small. This tells us that the serial slave is up and running. Time to code!

Summary

List of commands used to make a bootable serial slave CD:

    cdrecord dev=1,1,0 speed=2 -multi -audio audio.raw
    cdrecord dev=1,1,0 -msinfo
    mkisofs -C x,y -o tmp.iso READ_ME.TXT
    ipins tmp.iso data.raw
    cdrecord dev=1,1,0 speed=2 -multi -xa1 data.raw

Troubleshooting

These instructions work better on a "pristine" installation of Windows, but you've most likely installed stuff on your system since so here are some ideas to try if you're having problems:

  • Make sure that the Autorun feature of Windows is turned off. I don't know if it can cause problems but I had it turned off, so you might want to do the same. Under Windows 95/98/Me, you can disable it via the device manager (sorry, I can't give more detailed instructions as I don't run Win9x). Under Windows NT and 2000, you can turn off autorun by setting the following registry key to zero:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom\AutoRun
  • If you have a CD-RW drive, make sure no packet drivers are active (you may need to uninstall the software package that came with your drive - just killing the systray icon is not enough).
  • Make sure your ASPI layer is up-to-date, grab the latest version here (4.6 - 1021). You might want to grab ForceASPI if the update refuses to install. Keep in mind you may be breaking the law by using ForceASPI. If you use it, you do so out of your own free will, and at your own risk. Any and all messages related to this link will be ignored.

Hope this helps... Your Mileage May Vary(tm).

Maintained by tubooboo@ngine.de
all content © ngine.de

counter