Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------- Page 1-----------------------
- Creating high quality bootable games from GD files
- by TuxTheWise
- Why would I want to do that?
- - Make your own rips, so you can use files of a trusted source and be sure there are
- not corrupted files.
- - Improve reading efficiency using dummy file and correct file order.
- - Release a rare game that nobody have done yet.
- 1. Introduction
- I've been making high quality releases lately, but unfortunatly my summer vacations
- will be finished soon. So, before I lose my free time, I decided to write this guide to
- help anyone who wants to make their own releases. Although it's a basic guide, if
- you fully understand it a door of possibilities will open to you.
- This guide will cover Crazy Taxi. I recommend you to test with this game, GDI is
- pretty easy to find, small, and you can easily notice the reading improvement
- techniques of this guide.
- You need to extract the game files from track03.bin, extract IP.BIN and have
- extracted file order using IsoBuster. To do that, follow my other tutorial "Extracting
- GDI dump files" (included in this pack).
- So, to start this guide you need the files extracted from a GD dump. This guide will
- only work on Katana games (no WinCE games, I'll make a tutorial for them later),
- and without protection. If your game has CDDA, CDDA won't play either (again,
- another tutorial for this will come later). A lot of games don't have any kind of
- protection and don't use CDDA, mostly the first ones releases. Examples without
- protection: Crazy Taxi, Tony Hawk's Pro Skater 1 and 2, Shadow Man, Legacy Of
- Kain: Soul Reaver, Resident Evil CODE: Veronica (and its japanese "Complete" bro).
- Examples of games with protection: Sonic Adventure 2, Fatal Fury: Mark Of The
- Wolves, Metropolis Street Racer. But even if a game is protected, you can use
- techniques of this tutorial to make already cracked releases (Echelon's, Kalisto's)
- better.
- Another commentary, the files of the GD must fit on a CD (remember that some
- extra space is needed for selfboot session). If you use Crazy Taxi like this guide, it will
- fit easily. If you try a Tony Hawk, for example, files won't fit. Then you'll need to use
- downsampling techniques, that will be covered in another future guide.
- Okay, so let's start with Crazy Taxi. Using "Extracting GDI dump files" tutorial files
- were extracted (including IP.BIN). Here are the files:
- 1
- ----------------------- Page 2-----------------------
- and the file order extracted with IsoBuster:
- 2
- ----------------------- Page 3-----------------------
- 00548218 , >:\0GDTEX.PVR
- 00548283 , >:\1ST_READ.BIN
- 00497599 , >:\AICADRV.BIN
- 00526655 , >:\BINC1.AFS
- 00520773 , >:\BINC2.AFS
- 00512113 , >:\BINC3.AFS
- 00504386 , >:\COLDC1.BIN
- 00505952 , >:\COLDC2.BIN
- 00503496 , >:\COLDC3.BIN
- 00510321 , >:\LANDDC1.AFS
- 00511217 , >:\LANDDC2.AFS
- 00498484 , >:\MOTDC.BIN
- 00502810 , >:\OBJDC1.BIN
- 00502778 , >:\OBJDC2.BIN
- 00502746 , >:\OBJDC3.BIN
- 00499878 , >:\POLDC0.BIN
- 00502490 , >:\POLDC1.BIN}
- 00502671 , >:\POLDC2.BIN
- 00502479 , >:\POLDC3.BIN
- 00503045 , >:\RECADVAC.BIN
- 00503098 , >:\RECADVDC.BIN
- 00502939 , >:\RECENDAC.BIN
- 00502992 , >:\RECENDDC.BIN
- 00497627 , >:\SNDDC0.BIN
- 00498016 , >:\SNDDC1.BIN
- 00498250 , >:\SNDDC2.BIN
- 00498341 , >:\SNDDC3.BIN
- 00498360 , >:\SNDDC5.BIN
- 00502305 , >:\SNDDC6.BIN
- 00502407 , >:\SNDDC7.BIN
- 00498395 , >:\SNDDC8.BIN
- 00532894 , >:\SONG01.AFS
- 00503151 , >:\SPLDC1.BIN
- 00503310 , >:\SPLDC2.BIN
- 00502842 , >:\SPLDC3.BIN
- 00502159 , >:\SPRADV.BIN
- 00502267 , >:\SPRBOX.BIN
- 00501780 , >:\SPRCENG.BIN
- 00501828 , >:\SPRCJAP.BIN
- 00501872 , >:\SPRCOMM.BIN
- 00509697 , >:\SPRGAME.BIN
- 00509590 , >:\SPRGENG.BIN
- 00509650 , >:\SPRGJAP.BIN
- 00509042 , >:\SPRMENG.BIN
- 00509518 , >:\SPRMENU.BIN
- 00509251 , >:\SPRMJAP.BIN
- 00501030 , >:\TEXDC0.BIN
- 00508476 , >:\TEXDC1.BIN
- 00507940 , >:\TEXDC2.BIN
- 00507549 , >:\TEXDC3.BIN
- 00513870 , >:\VOICE01.AFS
- 2. Cleaning the garbage
- Game is very small, but general rule is always make it the smallest we can, so useless
- files doesn't messes with file order (separating game files), and, if you need to
- downsample something (not Crazy Taxi case), you'll have more space and make it
- with better quality.
- 2.1. Deleting useless files
- You can delete 0GDTEX.PVR. It's that picture shown when you insert GD and go to
- CD Player on Dreamcast main screen. Note that this picture is not shown on CDs, so
- 3
- ----------------------- Page 4-----------------------
- it's useless.
- Some games have a file called WARN_ENG.DA, or something like that. I have no idea
- of what it is, but it can be deleted too.
- Depending on the game you're working on, there may be more files that be deleted.
- Examples: In Tony Hawk's Pro Skater 2, some programmer forgot a .bat used in
- compiling a file of the game. In Tech Romancer japanese, there is a karaoke video. In
- American and European edition, video can't be seen in the game, but video file is
- still on GD. Anyway, it will depend on your ability to identify these files. Remember:
- if you have doubt, don't delete the file, you may mess the game. And last comment,
- if game fit on a CD, don't worry too much about that.
- Well, in Crazy Taxi example, we can only delete 0GDTEX.PVR.
- 2.2. Shrinking AFS files
- AFS (.afs) are packs of any kind of files. There are some useless space on them, and
- Echelon made a tool very useful that can delete it. It can be done safely on any AFS,
- because tool identify no standard AFS and won't touch them. This tool is called
- "dc_afsshrink.exe" and it's located somewhere on this pack. It will save ~500kb for
- each AFS file, and don't have any side effect on the game (not that I have seen). To
- use it, put it on the folder with GD files and use:
- dc_afsshrink.exe *.afs
- and it will "shrink" all AFS of the folder. Remember that it won't search on
- subdirectories, so if your GD has multiple directories you'll have to execute the tool
- in each one.
- Crazy Taxi doesn't have subdirectories, so it only needs to be executed on the main
- folder. It will save about 3.5mb.
- Don't forget to delete/move the program after use.
- 3. Hacking
- Don't worry, explanations here are very simple, you don't need to be an expert to
- do it.
- 3.1. Making the game region-free and enabling VGA-Box support
- You'll use IPBIN4WIN.exe (located somewhere on this pack). Open the program and
- select IP.BIN (for the 9999th time, remember that you must have extracted it using
- "Extracting GDI dump files" tutorial, it doesn't come with game files). Details will be
- shown on left window. On "Area Symbol", mark all regions. Be sure that "VGA BOX
- supported" is marked too. After making necessary changes, click in "Patch".
- 4
- ----------------------- Page 5-----------------------
- I have no idea if Dreamcast checks region flags when booting CDs, so I don't know if
- marking regions will make any difference. Mark all anyway.
- Games that have no VGA BOX supported by default, may or may not work with the
- accessory if you mark the flag. Some games work fine if you check it. Other games
- won't work with VGA even with the flag checked.
- Another important thing to see here is "First-read Filename". Common name is
- "1ST_READ.BIN", but it can be any name. Take note of the name of your game.
- Here is a screenshot of Crazy Taxi example with all important parts marked in read:
- On this case, VGA Box is marked by default, and we just need to mark the Japanese
- and Europe regions. Don't forget to click "Patch" after modifing. Note that in this
- case the first-read filename is "1ST_READ.BIN".
- 3.2. Hacking first-read filename
- This is the more important part of the job. You'll need to modify 4 bytes in first-read
- file name that I have no idea what they are for. The only thing I know, is that if you
- don't modify them, game won't boot. Now you can see you're not learning from a
- very wise guy after all.
- Anyway, you'll need to hex edit first-read file name. I recommend Hex Editor Neo,
- but any other hex editor will work because we're using basic functions only. Anyway,
- open the file found on last section (example: 1ST_READ.BIN) on hex editor.
- 5
- ----------------------- Page 6-----------------------
- You'll have to find this sequence "5E B0 00 00" and modify to "96 00 00 00". You
- have to modify 2 of this sequences only. If you find more than 2, remember that the
- ones you want to modify will be close to each other.
- Okay, so let's work on Crazy Taxi. Open 1ST_READ.BIN on Hex Editor Neo. Press
- CTRL+F (or Edit, Find). In type, select "Hex Bytes (BYTE)". Now type the sequence I
- told you, like this picture:
- and click Find. For the first time, we're only looking for the sequence and taking note
- of the offsets (bottom of screen), because we'll find all and see the two closer to
- each other to know which one to modify. Okay, in Crazy Taxi we find 2 sequences in
- the positions:
- 1.292.704
- 1.293.676
- We only found two copies, so of course they are the ones we have to modify. You
- can go to them again using "Find" or using CTRL+G (or Edit, Go to Offset) and typing
- the offset you took note. So, we modify the "5E B0" to "96 00" of both entries (you
- can alternate between characters and hex windows using key TAB). For the first
- entry, before we modify:
- 6
- ----------------------- Page 7-----------------------
- and after:
- 7
- ----------------------- Page 8-----------------------
- and we do the same for second entry. Save the file and you're hacking is done.
- Note: There is a program called dahack.exe that I read t hat do this process we just
- made. You can try it. I didn't use it here because I've never tested it before, and hex
- editing is very easy anyway.
- 4. Creating a dummy file
- Before we create a dummy file, let's discuss why that's important.
- Dreamcast reads discs in a constant angular speed. It means that the disc does a
- fixed N spins per minute. Another important point is that data has the same density
- around all the disc (I guess). Well, now imagine the disc turning, and the lens fixed
- on a position reading data. Let's imagine that data is distributed in 2 lines, marked in
- blue in this picture:
- 8
- ----------------------- Page 9-----------------------
- Inner line is smaller than the other. We considered the same data density, so bigger
- circle has more data than the other. Let's put some absurd numbers, just to help the
- understanding. Smaller line has 10 bytes, and bigger one has 100 bytes. Let's
- suppose that disc spins one time per second (another absurd), that's a constant
- angular speed. Well, if Dreamcast reads smaller circle, then it will read 10
- bytes/second. If it reads bigger circle, then it will read 100 bytes/second. The
- conclusion is: Dreamcast reads faster the more far you're from center of the disc.
- There is another advantage of having the files far of center. Let's imagine the area
- like in this picture:
- 9
- ----------------------- Page 10-----------------------
- The measures marked are 2 something, let's consider centimeters. It's obvious that
- purple area is much bigger than blue area. So, considering the hypothesis of same
- data density, purple area has more data than blue area. For numbers, consider that
- blue area has 20mb and purple area has 100mb.
- Okay, now imagine your reader. You know that noise it does? It's the reader moving
- far and near the disc center, to get in the right data "line". Well, if data is recorded
- on blue area, the reader can cover 20mb moving 2cm. For purple area, reader can
- cover 100mb moving 2cm. It means that if the game is recorded on the purple area,
- reader will actually move less, because more files will be available with the same
- move. Imagine a 100mb game, where it needs to load 2 files, one contained in inner
- part of recording, other in the distant part of the recording. If we record them in
- purple area, reader will read first file, move 2cm and then read the other. We can
- record in blue area, but since it only holds 20mb, recording will pass the 2cm, let's
- consider 4cm. So, for this case, reader will read first file, moves 4cm, and then reads
- the other. That's worse, because moving more means bigger loading times and more
- noise.
- So, our objective is to record files far from center. We can't just make that, because
- recoding must start from inner part of disc. So what we do is create a dummy file
- and force it to be put in inner part of the disc, this way data will be "pushed" far.
- This picture before dummy file:
- and after dummy file:
- 10
- ----------------------- Page 11-----------------------
- We'll analyse how to put it first later. Before that, we need to create the dummy file
- with an appropriate size. Well, obviously, the best results are obtained when
- dummy file + games files = all space available in disc. Well, selfboot session occupies
- some space of the disc, so how to find out the right size? Well, I've calculated that
- with a selfboot session, you have available in disc 709.505.843 bytes. Maybe it's not
- the exact number (now I can't remember how I calculated it), but it's very next to it.
- So you can use dummy.exe (included somewhere else in this pack) this way to
- create the dummy file:
- dummy.exe [name of file] [size in bytes]
- Note: Dummy file is a file full of bytes "00", so it's extreme compactable in .rar, .7z
- or whatever. It practically won't increase the image of your disc in a compacted
- format.
- Well, let's go back to Crazy Taxi. Pressing right-button on the folder of Crazy Taxi we
- see that the folder has 101.483.508 bytes.
- Note: When we record the game, IP.BIN doesn't need to be present as a file in game
- folder. So, if you don't want to have a copy of it, you can see the size of the files
- without IP.BIN. But don't erase it of the folder yet, we'll use it soon. In Crazy Taxi
- example I'll keep a copy in game files.
- If our disc has 709.505.843 bytes available, we make 709.505.843 - 101.483.508 =
- 608.022.335 bytes, that's our dummy file size. So we use dummy.exe this way
- dummy.exe DUMMY.DAT 608022335
- 11
- ----------------------- Page 12-----------------------
- and a huge file called DUMMY.DAT will be created. Of course you can name it
- whatever you want, it's not important. Now move it together with your game files.
- To see if size of files are okay, you can right click folder and it must have exactly
- 709.505.843 bytes.
- Note: Use upper-case in filename. The file order list that we'll create soon is case
- sensitive, so pay attention and have all the files in upper-case or you can have a
- hard to discover problem in future.
- 5. Preparing file order
- We need to create a file order list to a program that we'll use later. If we want that
- files are in this order (from inner part of the disc):
- DUMMY.DAT
- C.BIN
- B.BIN
- A.BIN
- We'll have to create a .txt file containing this information:
- data/DUMMY.DAT 4
- data/C.BIN 3
- data/B.BIN 2
- data/A.BIN 1
- Pay attention: 1) We use inverted bars (/), not regular ones (\); 2) List is case
- sensitive, pay attention on the example: "data" is lowercase, filename (as the names
- you have in your game files folder) is uppercase; 3) The program that will use this
- file needs everything perfect, you can make your list not to work correctly if you put
- a space after the number for example.
- The numbers in front of the file are it's "weight". The higher the number is, closer to
- the center it will be. This number is only used to compare with other files weight, it's
- not an absolute value. For example, if instead of the last file list you used that one:
- data/DUMMY.DAT 60000
- data/C.BIN 1512
- data/B.BIN 100
- data/A.BIN 0
- The result would be the same. Just be careful to respect the range limit (0-65535).
- Only weight is respected when program uses the list, so you don't need to respect
- the order, but it's good so you don't get confused. For example:
- data/B.BIN 2
- data/DUMMY.DAT 4
- data/C.BIN 3
- data/A.BIN 1
- 12
- ----------------------- Page 13-----------------------
- would work exactly the same way, but if you want to change anything, it will be
- harder to see.
- Last comment, there is no problem if you deleted some file and forgot it in file list, it
- won't make any bad. For example:
- data/DUMMY.DAT 4
- data/C.BIN 3
- data/B.BIN 2
- data/A.BIN 1
- data/NOEXIST.BIN 10
- data/LALALA.EXE 12
- If "NOEXIST.BIN" and "LALALA.EXE" don't exist, result will be the same of the first file
- list shown.
- As you could see, dummy file order is the most important, because it must come
- before everything else. But you should use file order of GD, because usually games
- are organized to increase performance. A simple example. Imagine a game where
- the first level is loaded. It's a 400mb game, and for first level it loads
- "AMBIENT1.BIN" and "ZTEXTURES1.AFS". If you don't respect original file order, the
- two files will be organized by alphabetic order and files will be far away from each
- other (one begins with A, other with Z). But if you use GD file order, probably these
- two files will be put together because it was optimized, so Dreamcast will load level
- faster because it needs to read first file, and the other one is very close, it doesn't
- need to move reader far away to read it. But how to use original file order?
- Let's do it in Crazy Taxi, and you'll be able to do with every game. Well, using
- "Extracting GDI dump files" tutorial mentioned thousand of times, you must have a
- file list exported by IsoBuster. Here is the one I got for Crazy Taxi:
- 00548218 , >:\0GDTEX.PVR
- 00548283 , >:\1ST_READ.BIN
- 00497599 , >:\AICADRV.BIN
- 00526655 , >:\BINC1.AFS
- 00520773 , >:\BINC2.AFS
- 00512113 , >:\BINC3.AFS
- 00504386 , >:\COLDC1.BIN
- 00505952 , >:\COLDC2.BIN
- 00503496 , >:\COLDC3.BIN
- 00510321 , >:\LANDDC1.AFS
- 00511217 , >:\LANDDC2.AFS
- 00498484 , >:\MOTDC.BIN
- 00502810 , >:\OBJDC1.BIN
- 00502778 , >:\OBJDC2.BIN
- 00502746 , >:\OBJDC3.BIN
- 00499878 , >:\POLDC0.BIN
- 00502490 , >:\POLDC1.BIN
- 00502671 , >:\POLDC2.BIN
- 00502479 , >:\POLDC3.BIN
- 00503045 , >:\RECADVAC.BIN
- 00503098 , >:\RECADVDC.BIN
- 00502939 , >:\RECENDAC.BIN
- 13
- ----------------------- Page 14-----------------------
- 00502992 , >:\RECENDDC.BIN
- 00497627 , >:\SNDDC0.BIN
- 00498016 , >:\SNDDC1.BIN
- 00498250 , >:\SNDDC2.BIN
- 00498341 , >:\SNDDC3.BIN
- 00498360 , >:\SNDDC5.BIN
- 00502305 , >:\SNDDC6.BIN
- 00502407 , >:\SNDDC7.BIN
- 00498395 , >:\SNDDC8.BIN
- 00532894 , >:\SONG01.AFS
- 00503151 , >:\SPLDC1.BIN
- 00503310 , >:\SPLDC2.BIN
- 00502842 , >:\SPLDC3.BIN
- 00502159 , >:\SPRADV.BIN
- 00502267 , >:\SPRBOX.BIN
- 00501780 , >:\SPRCENG.BIN
- 00501828 , >:\SPRCJAP.BIN
- 00501872 , >:\SPRCOMM.BIN
- 00509697 , >:\SPRGAME.BIN
- 00509590 , >:\SPRGENG.BIN
- 00509650 , >:\SPRGJAP.BIN
- 00509042 , >:\SPRMENG.BIN
- 00509518 , >:\SPRMENU.BIN
- 00509251 , >:\SPRMJAP.BIN
- 00501030 , >:\TEXDC0.BIN
- 00508476 , >:\TEXDC1.BIN
- 00507940 , >:\TEXDC2.BIN
- 00507549 , >:\TEXDC3.BIN
- 00513870 , >:\VOICE01.AFS
- I made a script to handle this kind of file. It's the listorganizer.au3 (included on this
- pack). It will open a IsoBuster exported file list, sort it by LBA order (LBA is sector
- count I guess, so the higher the LBA, more far from center) and write the results that
- you'll see soon. I haven't included any kind of detection for invalid format, so have
- the list in this format before using it (8 numbers, space, comma, any string).
- To convert the list, open the program, select the file list created with IsoBuster and
- "output.txt" will be created in the script folder (not in the source folder!). If your
- game has hundreds of files, the process may take a while because of sorting
- algorithm. For Crazy Taxi, that's the output:
- >:\AICADRV.BIN 30000
- >:\SNDDC0.BIN 29990
- >:\SNDDC1.BIN 29980
- >:\SNDDC2.BIN 29970
- >:\SNDDC3.BIN 29960
- >:\SNDDC5.BIN 29950
- >:\SNDDC8.BIN 29940
- >:\MOTDC.BIN 29930
- >:\POLDC0.BIN 29920
- >:\TEXDC0.BIN 29910
- >:\SPRCENG.BIN 29900
- >:\SPRCJAP.BIN 29890
- >:\SPRCOMM.BIN 29880
- >:\SPRADV.BIN 29870
- >:\SPRBOX.BIN 29860
- >:\SNDDC6.BIN 29850
- >:\SNDDC7.BIN 29840
- >:\POLDC3.BIN 29830
- >:\POLDC1.BIN 29820
- >:\POLDC2.BIN 29810
- >:\OBJDC3.BIN 29800
- 14
- ----------------------- Page 15-----------------------
- >:\OBJDC2.BIN 29790
- >:\OBJDC1.BIN 29780
- >:\SPLDC3.BIN 29770
- >:\RECENDAC.BIN 29760
- >:\RECENDDC.BIN 29750
- >:\RECADVAC.BIN 29740
- >:\RECADVDC.BIN 29730
- >:\SPLDC1.BIN 29720
- >:\SPLDC2.BIN 29710
- >:\COLDC3.BIN 29700
- >:\COLDC1.BIN 29690
- >:\COLDC2.BIN 29680
- >:\TEXDC3.BIN 29670
- >:\TEXDC2.BIN 29660
- >:\TEXDC1.BIN 29650
- >:\SPRMENG.BIN 29640
- >:\SPRMJAP.BIN 29630
- >:\SPRMENU.BIN 29620
- >:\SPRGENG.BIN 29610
- >:\SPRGJAP.BIN 29600
- >:\SPRGAME.BIN 29590
- >:\LANDDC1.AFS 29580
- >:\LANDDC2.AFS 29570
- >:\BINC3.AFS 29560
- >:\VOICE01.AFS 29550
- >:\BINC2.AFS 29540
- >:\BINC1.AFS 29530
- >:\SONG01.AFS 29520
- >:\0GDTEX.PVR 29510
- >:\1ST_READ.BIN 29500
- It's not in the correct layout yet, we need to make some adjustments. A nice way to
- do it open the file in notepad and use "replace" tool to replace all " >:\" (without
- quotes!) for "data/". Again, note the space (standard file list can't have lines starting
- with a blank space"), the case and the inverted bar. So, doing it, that's the result:
- data/AICADRV.BIN 30000
- data/SNDDC0.BIN 29990
- data/SNDDC1.BIN 29980
- data/SNDDC2.BIN 29970
- data/SNDDC3.BIN 29960
- data/SNDDC5.BIN 29950
- data/SNDDC8.BIN 29940
- data/MOTDC.BIN 29930
- data/POLDC0.BIN 29920
- data/TEXDC0.BIN 29910
- data/SPRCENG.BIN 29900
- data/SPRCJAP.BIN 29890
- data/SPRCOMM.BIN 29880
- data/SPRADV.BIN 29870
- data/SPRBOX.BIN 29860
- data/SNDDC6.BIN 29850
- data/SNDDC7.BIN 29840
- data/POLDC3.BIN 29830
- data/POLDC1.BIN 29820
- data/POLDC2.BIN 29810
- data/OBJDC3.BIN 29800
- data/OBJDC2.BIN 29790
- data/OBJDC1.BIN 29780
- data/SPLDC3.BIN 29770
- data/RECENDAC.BIN 29760
- data/RECENDDC.BIN 29750
- data/RECADVAC.BIN 29740
- data/RECADVDC.BIN 29730
- data/SPLDC1.BIN 29720
- 15
- ----------------------- Page 16-----------------------
- data/SPLDC2.BIN 29710
- data/COLDC3.BIN 29700
- data/COLDC1.BIN 29690
- data/COLDC2.BIN 29680
- data/TEXDC3.BIN 29670
- data/TEXDC2.BIN 29660
- data/TEXDC1.BIN 29650
- data/SPRMENG.BIN 29640
- data/SPRMJAP.BIN 29630
- data/SPRMENU.BIN 29620
- data/SPRGENG.BIN 29610
- data/SPRGJAP.BIN 29600
- data/SPRGAME.BIN 29590
- data/LANDDC1.AFS 29580
- data/LANDDC2.AFS 29570
- data/BINC3.AFS 29560
- data/VOICE01.AFS 29550
- data/BINC2.AFS 29540
- data/BINC1.AFS 29530
- data/SONG01.AFS 29520
- data/0GDTEX.PVR 29510
- data/1ST_READ.BIN 29500
- It's in the standard form now. If your game has subdirectories, there will be more "\"
- bars that must be converted to "/", use the replace tool again. In case of Crazy Taxi,
- we don't need to it.
- It could be used now, but we're forgetting the extra files that we'll have in CD. One
- is IP.BIN. Again, IP.BIN is not necessary to be with files in CD, but I like to have a copy
- there. And, more important, we need to force dummy file to be in inner part of the
- disc. Remember, higher numbers = inner part of the disc. So we manually edit the
- file list assigning higher numbers for extra files. So we would add these 2 lines:
- data/DUMMY.DAT 30002
- data/IP.BIN 30001
- So the final result will be:
- data/DUMMY.DAT 30002
- data/IP.BIN 30001
- data/AICADRV.BIN 30000
- data/SNDDC0.BIN 29990
- data/SNDDC1.BIN 29980
- data/SNDDC2.BIN 29970
- data/SNDDC3.BIN 29960
- data/SNDDC5.BIN 29950
- data/SNDDC8.BIN 29940
- data/MOTDC.BIN 29930
- data/POLDC0.BIN 29920
- data/TEXDC0.BIN 29910
- data/SPRCENG.BIN 29900
- data/SPRCJAP.BIN 29890
- data/SPRCOMM.BIN 29880
- data/SPRADV.BIN 29870
- data/SPRBOX.BIN 29860
- data/SNDDC6.BIN 29850
- data/SNDDC7.BIN 29840
- data/POLDC3.BIN 29830
- data/POLDC1.BIN 29820
- data/POLDC2.BIN 29810
- data/OBJDC3.BIN 29800
- 16
- ----------------------- Page 17-----------------------
- data/OBJDC2.BIN 29790
- data/OBJDC1.BIN 29780
- data/SPLDC3.BIN 29770
- data/RECENDAC.BIN 29760
- data/RECENDDC.BIN 29750
- data/RECADVAC.BIN 29740
- data/RECADVDC.BIN 29730
- data/SPLDC1.BIN 29720
- data/SPLDC2.BIN 29710
- data/COLDC3.BIN 29700
- data/COLDC1.BIN 29690
- data/COLDC2.BIN 29680
- data/TEXDC3.BIN 29670
- data/TEXDC2.BIN 29660
- data/TEXDC1.BIN 29650
- data/SPRMENG.BIN 29640
- data/SPRMJAP.BIN 29630
- data/SPRMENU.BIN 29620
- data/SPRGENG.BIN 29610
- data/SPRGJAP.BIN 29600
- data/SPRGAME.BIN 29590
- data/LANDDC1.AFS 29580
- data/LANDDC2.AFS 29570
- data/BINC3.AFS 29560
- data/VOICE01.AFS 29550
- data/BINC2.AFS 29540
- data/BINC1.AFS 29530
- data/SONG01.AFS 29520
- data/0GDTEX.PVR 29510
- data/1ST_READ.BIN 29500
- Again, be careful about the case and don't let spaces after the number. After that,
- our file list is done.
- 6. Preparing recording process
- If you don't have an ASPI driver installed, you need to install one and reboot
- windows. Please google for one.
- Now copy selfboot directory on drive c, so you its contents must be on c:\selfboot\.
- of course you can put it wherever you want, but it probably won't work on "c:\im
- dumb so i like long directories name with a lot of space\and subdirectories too
- \selfboot".
- Move all the game files (in our case, all files of Crazy Taxi) to c:\selfboot\data, the
- folder is already created there.
- Now get a CD-RW. It's a good idea to use a CD-RW because you can make as many
- tests as you want and you can try your game on emulator before wasting CDs for
- the real Dreamcast.
- Next step is to get the device number for cdrecord. Use the command:
- cdrecord.exe -scanbus
- and it will show your HD and CD/DVD drives. Find your drive there and take note of
- the numbers. In my case, it's 4,1,0, but it can be anything for you. Now these
- 17
- ----------------------- Page 18-----------------------
- numbers will be refered as a,b,c.
- Note: If it shows the numbers, it means that cdrecord is probably working nice. If
- not, you'll have to figure out by yourself why things are not working. Did you really
- reboot Windows after ASPI installation? Is the version of your cdrecord adequate for
- you? You can try newer versions too. You can try this site too
- (http://www.dchelp.net/index.php?id=cdr), it has some tips to make cdrecord work
- if you're having trouble.
- Now as first recording test, erase your CD-RW using this command:
- cdrecord.exe -dev=a,b,c -blank=minimal -speed=x
- -speed parameter is optional, default value is -speed=4 (it will erase disc in 4x if you
- don't put it). Don't forget that a,b,c must be replaced by the name you found with -
- (hyphen) on scanbus, that's the last time I say that. I hope everything is working fine
- for you now.
- 7. Recording game
- Now we're at the last steps of making a selfboot copy of your game. Not only a
- working copy, but a great copy because we're dumming and using correct file order.
- Except for a change on "mkisofs" step, everything else here is of the Echelon
- selfboot method. So if you have mastered their tutorial, everything is going to be
- very easy for you. If you haven't, don't worry, things will be explained step-by-step.
- 7.1. First session: audio trac
- Use this command:
- cdrecord.exe -dev=a,b,c -multi -audio audio.raw -speed=x
- Again, speed parameter is optional (default speed is 4). After it's done, you'll have
- the first session burned.
- Now use this command:
- cdrecord.exe -dev=a,b,c -msinfo
- It will return some numbers. They'll probably be 0,11702. I think there is a chance
- that you get 0,11700 too, or maybe other number. So, if you get something
- different of 0,11702, just replace them with your number of next steps.
- 7.2. Last hacking process
- Now you don't have to hex edit yourself, Echelon made some nice tools that will
- make the work for you. All game files are in c:\selfboot\data right? Move
- 1ST_READ.BIN (that's the case of Crazy Taxi and most games, but remember that
- 18
- ----------------------- Page 19-----------------------
- the file you must use is the one that was indicated when we hacked IP.BIN in section
- 3) and IP.BIN to c:\selfboot (or copy IP.BIN if you want to have a copy in game files,
- that's what I'm going to do). Now open "binhack.exe" and you must use these
- informations:
- Enter name of binary: 1ST_READ.BIN
- Enter name of bootsector: IP.BIN
- Enter msinfo value: 11702
- Again, maybe your game first binary is called different than 1ST_READ.BIN, use the
- right name. And if you got another value than 11702 replace it.
- After this, move 1ST_READ.BIN (or whatever) to c:\selfboot\data again.
- 7.3. Creating Image
- Put your file list (already modified to standard format like told in section 5) in c:
- \selfboot and name it with a short name, for example, list.txt. Now use the following
- command:
- mkisofs -C 0,11702 -V TITLE -sort list.txt -l -o data.iso
- data
- Maybe you need to change 0,11702 for the value you got. Change TITLE for the title
- of CD you want (use short names, no space).
- For Crazy Taxi, my file list had the name of ctaxi.txt, so I used this line:
- mkisofs -C 0,11702 -V MY_CRAZYTAXI -sort ctaxi.txt -l -o
- data.iso data
- It may take a while to finish the process. After this, you'll have a file called data.iso
- in c:\selfboot.
- 7.4. Checking File Order
- Now we must check if file order is the same of file list. Use this command:
- isofix.exe data.iso 11702
- After the process, you'll have a file called "fixed.iso" on c:\selfboot. Don't delete
- "data.iso" yet, we'll use it soon.
- Now open "fixed.iso" in IsoBuster, and file will appear on right window. There are
- some details about each file, and one of them is LBA number. The lowest the LBA,
- closer to the center are the file. So order files by LBA (click LBA column title), and
- check if file order is okay, just looking and comparing with file list. If your game has
- subdirectories, ignore LBA of directory and look at LBA number of files inside each
- directory.
- 19
- ----------------------- Page 20-----------------------
- For Crazy Taxi, remember that the file list used is this one:
- data/DUMMY.DAT 30002
- data/IP.BIN 30001
- data/AICADRV.BIN 30000
- data/SNDDC0.BIN 29990
- data/SNDDC1.BIN 29980
- data/SNDDC2.BIN 29970
- data/SNDDC3.BIN 29960
- data/SNDDC5.BIN 29950
- data/SNDDC8.BIN 29940
- data/MOTDC.BIN 29930
- data/POLDC0.BIN 29920
- data/TEXDC0.BIN 29910
- data/SPRCENG.BIN 29900
- data/SPRCJAP.BIN 29890
- data/SPRCOMM.BIN 29880
- data/SPRADV.BIN 29870
- data/SPRBOX.BIN 29860
- data/SNDDC6.BIN 29850
- data/SNDDC7.BIN 29840
- data/POLDC3.BIN 29830
- data/POLDC1.BIN 29820
- data/POLDC2.BIN 29810
- data/OBJDC3.BIN 29800
- data/OBJDC2.BIN 29790
- data/OBJDC1.BIN 29780
- data/SPLDC3.BIN 29770
- data/RECENDAC.BIN 29760
- data/RECENDDC.BIN 29750
- data/RECADVAC.BIN 29740
- data/RECADVDC.BIN 29730
- data/SPLDC1.BIN 29720
- data/SPLDC2.BIN 29710
- data/COLDC3.BIN 29700
- data/COLDC1.BIN 29690
- data/COLDC2.BIN 29680
- data/TEXDC3.BIN 29670
- data/TEXDC2.BIN 29660
- data/TEXDC1.BIN 29650
- data/SPRMENG.BIN 29640
- data/SPRMJAP.BIN 29630
- data/SPRMENU.BIN 29620
- data/SPRGENG.BIN 29610
- data/SPRGJAP.BIN 29600
- data/SPRGAME.BIN 29590
- data/LANDDC1.AFS 29580
- data/LANDDC2.AFS 29570
- data/BINC3.AFS 29560
- data/VOICE01.AFS 29550
- data/BINC2.AFS 29540
- data/BINC1.AFS 29530
- data/SONG01.AFS 29520
- data/0GDTEX.PVR 29510
- data/1ST_READ.BIN 29500
- Remember that it means, DUMMY.DAT is the closest file to the center, then IP.BIN,
- etc. In IsoBuster, ordering by LBA I got this result:
- 20
- ----------------------- Page 21-----------------------
- 21
- ----------------------- Page 22-----------------------
- DUMMY.DAT has the lowest LBA, so it's closest to the center, then IP.BIN, (...), then
- SONG01.AFS, and in the end, 1ST_READ.BIN. So our file list were made correctly,
- and ISO has the correct file order.
- 7.5. Burning last session: game files
- Now execute "ipins.exe" and use the following data:
- Enter name of bootsector: IP.BIN
- Enter name of ISO: data.iso
- And boot sector will be included in data.iso. Now it's time for burning. Use the
- following command:
- cdrecord.exe -dev=a,b,c -xa1 data.iso -speed=x
- Again, -speed=x is optional. Well, now it will burn the game files, and as we
- dummied the game for full CD, it will take around 20 minutes in 4x.
- CDRecord is very easy to crash, any program that makes access to CD drive will make
- cdrecord exists with error. For example: IsoBuster, another CD recording program,
- and even some programs with no standard file managers. So I recommend that you
- go AFK and let your computer record the disc.
- If at the start of recording you get this warning:
- WARNING: Files may not fit on the disc.
- or something like that, cancel recording start using CTRL+C. It means that you
- haven't dimensioned dummy file right, and program will make overburn, what is
- never good. Try making right size dummy, remaking image, etc, like told before in
- this guide.
- 8. Testing the disc
- Game should now be bootable on Dreamcast. But you recorded on a CD-RW
- remember? So only your computer can read it. Test it on emulators. For this, make a
- image with Disc Juggler and test it on NullDC or test directly on CD with Chankast.
- You don't need to play the game, just see if it boots fine. If it does, you have done
- everything right.
- If you have done Crazy Taxi like the example, it will work in both emulators.
- Remember to check before if the emulator you're using to test is compatible with
- the game you're trying to make selfbootable. An easy test for that is try the GDI you
- started with on NullDC, if it works, then selfbootable version must work too.
- 9. Distribution
- If you want to distribute your rip, it's a great thing. But remember that these things
- 22
- ----------------------- Page 23-----------------------
- spread fast. If you distribute a good thing, you'll make a lot of people happy. If you
- distribute a bad thing, you'll make a lot of people confused. So be careful, and think
- if your rip is really worthy of distribution.
- Don't forget to write a readme file, including important informations like what was
- ripped, downsampled, etc. In case of Crazy Taxi, nothing, so write that. Don't forget
- to tell your sources too, like GD dump, a group's release, etc. This will help to make
- scene clean of bad stuff.
- Most common format for Dreamcast games is .cdi (Disc Juggler), so use it to make
- your image for distribution. Alcohol 120% format is acceptable, but not encouraged.
- And for God's sake, don't make images with Nero, newer versions can't burn
- Dreamcast selfboot games right.
- Last step for distribution is to check files. For that, make a image of your CD-R/W
- (again, I recommend DiscJuggler). Now use Daemon Tools to mount the image on a
- virtual drive. Opening the drive, you'll see the game files you have recorded. Now
- you must have RapidCRC installed with standard configurations (so it should be
- included on right-click menu). Now, on virtual drive, select all the files (except
- dummy file, you don't need to check it), right-click and select "Open with RapidCRC".
- It will take a while to analyse every file CRC. Now use Create SFV file -> Create one
- .SFV file for all files and save it on c:\selfboot\data (you should still have the files
- you used there). Now open the .sfv you just created double-clicking it (it must be
- associated with RapidCRC or other SFV checker) and it will check the files on c:
- \selfboot\data. If check is alright, it means that files on image and files that you used
- on recording process are identical, so nothing is corrupted on your image.
- And last comment, don't forget to try your game on real Dreamcast. I had a game
- once that booted fine on NullDC but froze on main screen on real Dreamcast.
- 10. Thanks
- - (http://www.megagames.com/console/cgi-bin/dl.cgi?id=dc&file=dcis-tut.001!rar)
- Ripping guide of dcisos.de (site dead), it helped hacking my first dreamcast game.
- -
- (http://www.dreamwell.pwp.blueyonder.co.uk/dcselfboot/Tutorial_Index/tutorial_i
- ndex.htm) This site that has tons of tutorials that helped me doing stuff on DC.
- - The nice guys who created the programs used here.
- - All people that rip and distribute GDI.
- 23
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement