Advertisement
atreyu187

Dreamcast Guides : DCRes Selfboot Tutorial

Jan 6th, 2013
708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.33 KB | None | 0 0
  1. ----------------------- Page 1-----------------------
  2.  
  3. Creating high quality bootable games from GD files
  4. by TuxTheWise
  5.  
  6. Why would I want to do that?
  7. - Make your own rips, so you can use files of a trusted source and be sure there are
  8. not corrupted files.
  9. - Improve reading efficiency using dummy file and correct file order.
  10. - Release a rare game that nobody have done yet.
  11.  
  12. 1. Introduction
  13. I've been making high quality releases lately, but unfortunatly my summer vacations
  14. will be finished soon. So, before I lose my free time, I decided to write this guide to
  15. help anyone who wants to make their own releases. Although it's a basic guide, if
  16. you fully understand it a door of possibilities will open to you.
  17.  
  18. This guide will cover Crazy Taxi. I recommend you to test with this game, GDI is
  19. pretty easy to find, small, and you can easily notice the reading improvement
  20. techniques of this guide.
  21.  
  22. You need to extract the game files from track03.bin, extract IP.BIN and have
  23. extracted file order using IsoBuster. To do that, follow my other tutorial "Extracting
  24. GDI dump files" (included in this pack).
  25.  
  26. So, to start this guide you need the files extracted from a GD dump. This guide will
  27. only work on Katana games (no WinCE games, I'll make a tutorial for them later),
  28. and without protection. If your game has CDDA, CDDA won't play either (again,
  29. another tutorial for this will come later). A lot of games don't have any kind of
  30. protection and don't use CDDA, mostly the first ones releases. Examples without
  31. protection: Crazy Taxi, Tony Hawk's Pro Skater 1 and 2, Shadow Man, Legacy Of
  32. Kain: Soul Reaver, Resident Evil CODE: Veronica (and its japanese "Complete" bro).
  33. Examples of games with protection: Sonic Adventure 2, Fatal Fury: Mark Of The
  34. Wolves, Metropolis Street Racer. But even if a game is protected, you can use
  35. techniques of this tutorial to make already cracked releases (Echelon's, Kalisto's)
  36. better.
  37.  
  38. Another commentary, the files of the GD must fit on a CD (remember that some
  39. extra space is needed for selfboot session). If you use Crazy Taxi like this guide, it will
  40. fit easily. If you try a Tony Hawk, for example, files won't fit. Then you'll need to use
  41. downsampling techniques, that will be covered in another future guide.
  42.  
  43. Okay, so let's start with Crazy Taxi. Using "Extracting GDI dump files" tutorial files
  44. were extracted (including IP.BIN). Here are the files:
  45.  
  46. 1
  47.  
  48. ----------------------- Page 2-----------------------
  49.  
  50. and the file order extracted with IsoBuster:
  51.  
  52. 2
  53.  
  54. ----------------------- Page 3-----------------------
  55.  
  56. 00548218 , >:\0GDTEX.PVR
  57. 00548283 , >:\1ST_READ.BIN
  58. 00497599 , >:\AICADRV.BIN
  59. 00526655 , >:\BINC1.AFS
  60. 00520773 , >:\BINC2.AFS
  61. 00512113 , >:\BINC3.AFS
  62. 00504386 , >:\COLDC1.BIN
  63. 00505952 , >:\COLDC2.BIN
  64. 00503496 , >:\COLDC3.BIN
  65. 00510321 , >:\LANDDC1.AFS
  66. 00511217 , >:\LANDDC2.AFS
  67. 00498484 , >:\MOTDC.BIN
  68. 00502810 , >:\OBJDC1.BIN
  69. 00502778 , >:\OBJDC2.BIN
  70. 00502746 , >:\OBJDC3.BIN
  71. 00499878 , >:\POLDC0.BIN
  72. 00502490 , >:\POLDC1.BIN}
  73. 00502671 , >:\POLDC2.BIN
  74. 00502479 , >:\POLDC3.BIN
  75. 00503045 , >:\RECADVAC.BIN
  76. 00503098 , >:\RECADVDC.BIN
  77. 00502939 , >:\RECENDAC.BIN
  78. 00502992 , >:\RECENDDC.BIN
  79. 00497627 , >:\SNDDC0.BIN
  80. 00498016 , >:\SNDDC1.BIN
  81. 00498250 , >:\SNDDC2.BIN
  82. 00498341 , >:\SNDDC3.BIN
  83. 00498360 , >:\SNDDC5.BIN
  84. 00502305 , >:\SNDDC6.BIN
  85. 00502407 , >:\SNDDC7.BIN
  86. 00498395 , >:\SNDDC8.BIN
  87. 00532894 , >:\SONG01.AFS
  88. 00503151 , >:\SPLDC1.BIN
  89. 00503310 , >:\SPLDC2.BIN
  90. 00502842 , >:\SPLDC3.BIN
  91. 00502159 , >:\SPRADV.BIN
  92. 00502267 , >:\SPRBOX.BIN
  93. 00501780 , >:\SPRCENG.BIN
  94. 00501828 , >:\SPRCJAP.BIN
  95. 00501872 , >:\SPRCOMM.BIN
  96. 00509697 , >:\SPRGAME.BIN
  97. 00509590 , >:\SPRGENG.BIN
  98. 00509650 , >:\SPRGJAP.BIN
  99. 00509042 , >:\SPRMENG.BIN
  100. 00509518 , >:\SPRMENU.BIN
  101. 00509251 , >:\SPRMJAP.BIN
  102. 00501030 , >:\TEXDC0.BIN
  103. 00508476 , >:\TEXDC1.BIN
  104. 00507940 , >:\TEXDC2.BIN
  105. 00507549 , >:\TEXDC3.BIN
  106. 00513870 , >:\VOICE01.AFS
  107.  
  108. 2. Cleaning the garbage
  109. Game is very small, but general rule is always make it the smallest we can, so useless
  110. files doesn't messes with file order (separating game files), and, if you need to
  111. downsample something (not Crazy Taxi case), you'll have more space and make it
  112. with better quality.
  113.  
  114. 2.1. Deleting useless files
  115. You can delete 0GDTEX.PVR. It's that picture shown when you insert GD and go to
  116. CD Player on Dreamcast main screen. Note that this picture is not shown on CDs, so
  117.  
  118. 3
  119.  
  120. ----------------------- Page 4-----------------------
  121.  
  122. it's useless.
  123.  
  124. Some games have a file called WARN_ENG.DA, or something like that. I have no idea
  125. of what it is, but it can be deleted too.
  126.  
  127. Depending on the game you're working on, there may be more files that be deleted.
  128. Examples: In Tony Hawk's Pro Skater 2, some programmer forgot a .bat used in
  129. compiling a file of the game. In Tech Romancer japanese, there is a karaoke video. In
  130. American and European edition, video can't be seen in the game, but video file is
  131. still on GD. Anyway, it will depend on your ability to identify these files. Remember:
  132. if you have doubt, don't delete the file, you may mess the game. And last comment,
  133. if game fit on a CD, don't worry too much about that.
  134.  
  135. Well, in Crazy Taxi example, we can only delete 0GDTEX.PVR.
  136.  
  137. 2.2. Shrinking AFS files
  138. AFS (.afs) are packs of any kind of files. There are some useless space on them, and
  139. Echelon made a tool very useful that can delete it. It can be done safely on any AFS,
  140. because tool identify no standard AFS and won't touch them. This tool is called
  141. "dc_afsshrink.exe" and it's located somewhere on this pack. It will save ~500kb for
  142. each AFS file, and don't have any side effect on the game (not that I have seen). To
  143. use it, put it on the folder with GD files and use:
  144.  
  145. dc_afsshrink.exe *.afs
  146.  
  147. and it will "shrink" all AFS of the folder. Remember that it won't search on
  148. subdirectories, so if your GD has multiple directories you'll have to execute the tool
  149. in each one.
  150.  
  151. Crazy Taxi doesn't have subdirectories, so it only needs to be executed on the main
  152. folder. It will save about 3.5mb.
  153.  
  154. Don't forget to delete/move the program after use.
  155.  
  156. 3. Hacking
  157. Don't worry, explanations here are very simple, you don't need to be an expert to
  158. do it.
  159.  
  160. 3.1. Making the game region-free and enabling VGA-Box support
  161.  
  162. You'll use IPBIN4WIN.exe (located somewhere on this pack). Open the program and
  163. select IP.BIN (for the 9999th time, remember that you must have extracted it using
  164. "Extracting GDI dump files" tutorial, it doesn't come with game files). Details will be
  165. shown on left window. On "Area Symbol", mark all regions. Be sure that "VGA BOX
  166. supported" is marked too. After making necessary changes, click in "Patch".
  167.  
  168. 4
  169.  
  170. ----------------------- Page 5-----------------------
  171.  
  172. I have no idea if Dreamcast checks region flags when booting CDs, so I don't know if
  173. marking regions will make any difference. Mark all anyway.
  174.  
  175. Games that have no VGA BOX supported by default, may or may not work with the
  176. accessory if you mark the flag. Some games work fine if you check it. Other games
  177. won't work with VGA even with the flag checked.
  178.  
  179. Another important thing to see here is "First-read Filename". Common name is
  180. "1ST_READ.BIN", but it can be any name. Take note of the name of your game.
  181.  
  182. Here is a screenshot of Crazy Taxi example with all important parts marked in read:
  183.  
  184. On this case, VGA Box is marked by default, and we just need to mark the Japanese
  185. and Europe regions. Don't forget to click "Patch" after modifing. Note that in this
  186. case the first-read filename is "1ST_READ.BIN".
  187.  
  188. 3.2. Hacking first-read filename
  189. This is the more important part of the job. You'll need to modify 4 bytes in first-read
  190. file name that I have no idea what they are for. The only thing I know, is that if you
  191. don't modify them, game won't boot. Now you can see you're not learning from a
  192. very wise guy after all.
  193.  
  194. Anyway, you'll need to hex edit first-read file name. I recommend Hex Editor Neo,
  195. but any other hex editor will work because we're using basic functions only. Anyway,
  196. open the file found on last section (example: 1ST_READ.BIN) on hex editor.
  197.  
  198. 5
  199.  
  200. ----------------------- Page 6-----------------------
  201.  
  202. You'll have to find this sequence "5E B0 00 00" and modify to "96 00 00 00". You
  203. have to modify 2 of this sequences only. If you find more than 2, remember that the
  204. ones you want to modify will be close to each other.
  205.  
  206. Okay, so let's work on Crazy Taxi. Open 1ST_READ.BIN on Hex Editor Neo. Press
  207. CTRL+F (or Edit, Find). In type, select "Hex Bytes (BYTE)". Now type the sequence I
  208. told you, like this picture:
  209.  
  210. and click Find. For the first time, we're only looking for the sequence and taking note
  211. of the offsets (bottom of screen), because we'll find all and see the two closer to
  212. each other to know which one to modify. Okay, in Crazy Taxi we find 2 sequences in
  213. the positions:
  214.  
  215. 1.292.704
  216. 1.293.676
  217.  
  218. We only found two copies, so of course they are the ones we have to modify. You
  219. can go to them again using "Find" or using CTRL+G (or Edit, Go to Offset) and typing
  220. the offset you took note. So, we modify the "5E B0" to "96 00" of both entries (you
  221. can alternate between characters and hex windows using key TAB). For the first
  222. entry, before we modify:
  223.  
  224. 6
  225.  
  226. ----------------------- Page 7-----------------------
  227.  
  228. and after:
  229.  
  230. 7
  231.  
  232. ----------------------- Page 8-----------------------
  233.  
  234. and we do the same for second entry. Save the file and you're hacking is done.
  235.  
  236. Note: There is a program called dahack.exe that I read t hat do this process we just
  237. made. You can try it. I didn't use it here because I've never tested it before, and hex
  238. editing is very easy anyway.
  239.  
  240. 4. Creating a dummy file
  241. Before we create a dummy file, let's discuss why that's important.
  242.  
  243. Dreamcast reads discs in a constant angular speed. It means that the disc does a
  244. fixed N spins per minute. Another important point is that data has the same density
  245. around all the disc (I guess). Well, now imagine the disc turning, and the lens fixed
  246. on a position reading data. Let's imagine that data is distributed in 2 lines, marked in
  247. blue in this picture:
  248.  
  249. 8
  250.  
  251. ----------------------- Page 9-----------------------
  252.  
  253. Inner line is smaller than the other. We considered the same data density, so bigger
  254. circle has more data than the other. Let's put some absurd numbers, just to help the
  255. understanding. Smaller line has 10 bytes, and bigger one has 100 bytes. Let's
  256. suppose that disc spins one time per second (another absurd), that's a constant
  257. angular speed. Well, if Dreamcast reads smaller circle, then it will read 10
  258. bytes/second. If it reads bigger circle, then it will read 100 bytes/second. The
  259. conclusion is: Dreamcast reads faster the more far you're from center of the disc.
  260.  
  261. There is another advantage of having the files far of center. Let's imagine the area
  262. like in this picture:
  263.  
  264. 9
  265.  
  266. ----------------------- Page 10-----------------------
  267.  
  268. The measures marked are 2 something, let's consider centimeters. It's obvious that
  269. purple area is much bigger than blue area. So, considering the hypothesis of same
  270. data density, purple area has more data than blue area. For numbers, consider that
  271. blue area has 20mb and purple area has 100mb.
  272.  
  273. Okay, now imagine your reader. You know that noise it does? It's the reader moving
  274. far and near the disc center, to get in the right data "line". Well, if data is recorded
  275. on blue area, the reader can cover 20mb moving 2cm. For purple area, reader can
  276. cover 100mb moving 2cm. It means that if the game is recorded on the purple area,
  277. reader will actually move less, because more files will be available with the same
  278. move. Imagine a 100mb game, where it needs to load 2 files, one contained in inner
  279. part of recording, other in the distant part of the recording. If we record them in
  280. purple area, reader will read first file, move 2cm and then read the other. We can
  281. record in blue area, but since it only holds 20mb, recording will pass the 2cm, let's
  282. consider 4cm. So, for this case, reader will read first file, moves 4cm, and then reads
  283. the other. That's worse, because moving more means bigger loading times and more
  284. noise.
  285.  
  286. So, our objective is to record files far from center. We can't just make that, because
  287. recoding must start from inner part of disc. So what we do is create a dummy file
  288. and force it to be put in inner part of the disc, this way data will be "pushed" far.
  289. This picture before dummy file:
  290.  
  291. and after dummy file:
  292.  
  293. 10
  294.  
  295. ----------------------- Page 11-----------------------
  296.  
  297. We'll analyse how to put it first later. Before that, we need to create the dummy file
  298. with an appropriate size. Well, obviously, the best results are obtained when
  299. dummy file + games files = all space available in disc. Well, selfboot session occupies
  300. some space of the disc, so how to find out the right size? Well, I've calculated that
  301. with a selfboot session, you have available in disc 709.505.843 bytes. Maybe it's not
  302. the exact number (now I can't remember how I calculated it), but it's very next to it.
  303. So you can use dummy.exe (included somewhere else in this pack) this way to
  304. create the dummy file:
  305.  
  306. dummy.exe [name of file] [size in bytes]
  307.  
  308. Note: Dummy file is a file full of bytes "00", so it's extreme compactable in .rar, .7z
  309. or whatever. It practically won't increase the image of your disc in a compacted
  310. format.
  311.  
  312. Well, let's go back to Crazy Taxi. Pressing right-button on the folder of Crazy Taxi we
  313. see that the folder has 101.483.508 bytes.
  314.  
  315. Note: When we record the game, IP.BIN doesn't need to be present as a file in game
  316. folder. So, if you don't want to have a copy of it, you can see the size of the files
  317. without IP.BIN. But don't erase it of the folder yet, we'll use it soon. In Crazy Taxi
  318. example I'll keep a copy in game files.
  319.  
  320. If our disc has 709.505.843 bytes available, we make 709.505.843 - 101.483.508 =
  321. 608.022.335 bytes, that's our dummy file size. So we use dummy.exe this way
  322.  
  323. dummy.exe DUMMY.DAT 608022335
  324.  
  325. 11
  326.  
  327. ----------------------- Page 12-----------------------
  328.  
  329. and a huge file called DUMMY.DAT will be created. Of course you can name it
  330. whatever you want, it's not important. Now move it together with your game files.
  331. To see if size of files are okay, you can right click folder and it must have exactly
  332. 709.505.843 bytes.
  333.  
  334. Note: Use upper-case in filename. The file order list that we'll create soon is case
  335. sensitive, so pay attention and have all the files in upper-case or you can have a
  336. hard to discover problem in future.
  337.  
  338. 5. Preparing file order
  339. We need to create a file order list to a program that we'll use later. If we want that
  340. files are in this order (from inner part of the disc):
  341.  
  342. DUMMY.DAT
  343. C.BIN
  344. B.BIN
  345. A.BIN
  346.  
  347. We'll have to create a .txt file containing this information:
  348.  
  349. data/DUMMY.DAT 4
  350. data/C.BIN 3
  351. data/B.BIN 2
  352. data/A.BIN 1
  353.  
  354. Pay attention: 1) We use inverted bars (/), not regular ones (\); 2) List is case
  355. sensitive, pay attention on the example: "data" is lowercase, filename (as the names
  356. you have in your game files folder) is uppercase; 3) The program that will use this
  357. file needs everything perfect, you can make your list not to work correctly if you put
  358. a space after the number for example.
  359.  
  360. The numbers in front of the file are it's "weight". The higher the number is, closer to
  361. the center it will be. This number is only used to compare with other files weight, it's
  362. not an absolute value. For example, if instead of the last file list you used that one:
  363.  
  364. data/DUMMY.DAT 60000
  365. data/C.BIN 1512
  366. data/B.BIN 100
  367. data/A.BIN 0
  368.  
  369. The result would be the same. Just be careful to respect the range limit (0-65535).
  370.  
  371. Only weight is respected when program uses the list, so you don't need to respect
  372. the order, but it's good so you don't get confused. For example:
  373.  
  374. data/B.BIN 2
  375. data/DUMMY.DAT 4
  376. data/C.BIN 3
  377. data/A.BIN 1
  378.  
  379. 12
  380.  
  381. ----------------------- Page 13-----------------------
  382.  
  383. would work exactly the same way, but if you want to change anything, it will be
  384. harder to see.
  385.  
  386. Last comment, there is no problem if you deleted some file and forgot it in file list, it
  387. won't make any bad. For example:
  388.  
  389. data/DUMMY.DAT 4
  390. data/C.BIN 3
  391. data/B.BIN 2
  392. data/A.BIN 1
  393. data/NOEXIST.BIN 10
  394. data/LALALA.EXE 12
  395.  
  396. If "NOEXIST.BIN" and "LALALA.EXE" don't exist, result will be the same of the first file
  397. list shown.
  398.  
  399. As you could see, dummy file order is the most important, because it must come
  400. before everything else. But you should use file order of GD, because usually games
  401. are organized to increase performance. A simple example. Imagine a game where
  402. the first level is loaded. It's a 400mb game, and for first level it loads
  403. "AMBIENT1.BIN" and "ZTEXTURES1.AFS". If you don't respect original file order, the
  404. two files will be organized by alphabetic order and files will be far away from each
  405. other (one begins with A, other with Z). But if you use GD file order, probably these
  406. two files will be put together because it was optimized, so Dreamcast will load level
  407. faster because it needs to read first file, and the other one is very close, it doesn't
  408. need to move reader far away to read it. But how to use original file order?
  409.  
  410. Let's do it in Crazy Taxi, and you'll be able to do with every game. Well, using
  411. "Extracting GDI dump files" tutorial mentioned thousand of times, you must have a
  412. file list exported by IsoBuster. Here is the one I got for Crazy Taxi:
  413.  
  414. 00548218 , >:\0GDTEX.PVR
  415. 00548283 , >:\1ST_READ.BIN
  416. 00497599 , >:\AICADRV.BIN
  417. 00526655 , >:\BINC1.AFS
  418. 00520773 , >:\BINC2.AFS
  419. 00512113 , >:\BINC3.AFS
  420. 00504386 , >:\COLDC1.BIN
  421. 00505952 , >:\COLDC2.BIN
  422. 00503496 , >:\COLDC3.BIN
  423. 00510321 , >:\LANDDC1.AFS
  424. 00511217 , >:\LANDDC2.AFS
  425. 00498484 , >:\MOTDC.BIN
  426. 00502810 , >:\OBJDC1.BIN
  427. 00502778 , >:\OBJDC2.BIN
  428. 00502746 , >:\OBJDC3.BIN
  429. 00499878 , >:\POLDC0.BIN
  430. 00502490 , >:\POLDC1.BIN
  431. 00502671 , >:\POLDC2.BIN
  432. 00502479 , >:\POLDC3.BIN
  433. 00503045 , >:\RECADVAC.BIN
  434. 00503098 , >:\RECADVDC.BIN
  435. 00502939 , >:\RECENDAC.BIN
  436.  
  437. 13
  438.  
  439. ----------------------- Page 14-----------------------
  440.  
  441. 00502992 , >:\RECENDDC.BIN
  442. 00497627 , >:\SNDDC0.BIN
  443. 00498016 , >:\SNDDC1.BIN
  444. 00498250 , >:\SNDDC2.BIN
  445. 00498341 , >:\SNDDC3.BIN
  446. 00498360 , >:\SNDDC5.BIN
  447. 00502305 , >:\SNDDC6.BIN
  448. 00502407 , >:\SNDDC7.BIN
  449. 00498395 , >:\SNDDC8.BIN
  450. 00532894 , >:\SONG01.AFS
  451. 00503151 , >:\SPLDC1.BIN
  452. 00503310 , >:\SPLDC2.BIN
  453. 00502842 , >:\SPLDC3.BIN
  454. 00502159 , >:\SPRADV.BIN
  455. 00502267 , >:\SPRBOX.BIN
  456. 00501780 , >:\SPRCENG.BIN
  457. 00501828 , >:\SPRCJAP.BIN
  458. 00501872 , >:\SPRCOMM.BIN
  459. 00509697 , >:\SPRGAME.BIN
  460. 00509590 , >:\SPRGENG.BIN
  461. 00509650 , >:\SPRGJAP.BIN
  462. 00509042 , >:\SPRMENG.BIN
  463. 00509518 , >:\SPRMENU.BIN
  464. 00509251 , >:\SPRMJAP.BIN
  465. 00501030 , >:\TEXDC0.BIN
  466. 00508476 , >:\TEXDC1.BIN
  467. 00507940 , >:\TEXDC2.BIN
  468. 00507549 , >:\TEXDC3.BIN
  469. 00513870 , >:\VOICE01.AFS
  470.  
  471. I made a script to handle this kind of file. It's the listorganizer.au3 (included on this
  472. pack). It will open a IsoBuster exported file list, sort it by LBA order (LBA is sector
  473. count I guess, so the higher the LBA, more far from center) and write the results that
  474. you'll see soon. I haven't included any kind of detection for invalid format, so have
  475. the list in this format before using it (8 numbers, space, comma, any string).
  476.  
  477. To convert the list, open the program, select the file list created with IsoBuster and
  478. "output.txt" will be created in the script folder (not in the source folder!). If your
  479. game has hundreds of files, the process may take a while because of sorting
  480. algorithm. For Crazy Taxi, that's the output:
  481.  
  482. >:\AICADRV.BIN 30000
  483. >:\SNDDC0.BIN 29990
  484. >:\SNDDC1.BIN 29980
  485. >:\SNDDC2.BIN 29970
  486. >:\SNDDC3.BIN 29960
  487. >:\SNDDC5.BIN 29950
  488. >:\SNDDC8.BIN 29940
  489. >:\MOTDC.BIN 29930
  490. >:\POLDC0.BIN 29920
  491. >:\TEXDC0.BIN 29910
  492. >:\SPRCENG.BIN 29900
  493. >:\SPRCJAP.BIN 29890
  494. >:\SPRCOMM.BIN 29880
  495. >:\SPRADV.BIN 29870
  496. >:\SPRBOX.BIN 29860
  497. >:\SNDDC6.BIN 29850
  498. >:\SNDDC7.BIN 29840
  499. >:\POLDC3.BIN 29830
  500. >:\POLDC1.BIN 29820
  501. >:\POLDC2.BIN 29810
  502. >:\OBJDC3.BIN 29800
  503.  
  504. 14
  505.  
  506. ----------------------- Page 15-----------------------
  507.  
  508. >:\OBJDC2.BIN 29790
  509. >:\OBJDC1.BIN 29780
  510. >:\SPLDC3.BIN 29770
  511. >:\RECENDAC.BIN 29760
  512. >:\RECENDDC.BIN 29750
  513. >:\RECADVAC.BIN 29740
  514. >:\RECADVDC.BIN 29730
  515. >:\SPLDC1.BIN 29720
  516. >:\SPLDC2.BIN 29710
  517. >:\COLDC3.BIN 29700
  518. >:\COLDC1.BIN 29690
  519. >:\COLDC2.BIN 29680
  520. >:\TEXDC3.BIN 29670
  521. >:\TEXDC2.BIN 29660
  522. >:\TEXDC1.BIN 29650
  523. >:\SPRMENG.BIN 29640
  524. >:\SPRMJAP.BIN 29630
  525. >:\SPRMENU.BIN 29620
  526. >:\SPRGENG.BIN 29610
  527. >:\SPRGJAP.BIN 29600
  528. >:\SPRGAME.BIN 29590
  529. >:\LANDDC1.AFS 29580
  530. >:\LANDDC2.AFS 29570
  531. >:\BINC3.AFS 29560
  532. >:\VOICE01.AFS 29550
  533. >:\BINC2.AFS 29540
  534. >:\BINC1.AFS 29530
  535. >:\SONG01.AFS 29520
  536. >:\0GDTEX.PVR 29510
  537. >:\1ST_READ.BIN 29500
  538.  
  539. It's not in the correct layout yet, we need to make some adjustments. A nice way to
  540. do it open the file in notepad and use "replace" tool to replace all " >:\" (without
  541. quotes!) for "data/". Again, note the space (standard file list can't have lines starting
  542. with a blank space"), the case and the inverted bar. So, doing it, that's the result:
  543.  
  544. data/AICADRV.BIN 30000
  545. data/SNDDC0.BIN 29990
  546. data/SNDDC1.BIN 29980
  547. data/SNDDC2.BIN 29970
  548. data/SNDDC3.BIN 29960
  549. data/SNDDC5.BIN 29950
  550. data/SNDDC8.BIN 29940
  551. data/MOTDC.BIN 29930
  552. data/POLDC0.BIN 29920
  553. data/TEXDC0.BIN 29910
  554. data/SPRCENG.BIN 29900
  555. data/SPRCJAP.BIN 29890
  556. data/SPRCOMM.BIN 29880
  557. data/SPRADV.BIN 29870
  558. data/SPRBOX.BIN 29860
  559. data/SNDDC6.BIN 29850
  560. data/SNDDC7.BIN 29840
  561. data/POLDC3.BIN 29830
  562. data/POLDC1.BIN 29820
  563. data/POLDC2.BIN 29810
  564. data/OBJDC3.BIN 29800
  565. data/OBJDC2.BIN 29790
  566. data/OBJDC1.BIN 29780
  567. data/SPLDC3.BIN 29770
  568. data/RECENDAC.BIN 29760
  569. data/RECENDDC.BIN 29750
  570. data/RECADVAC.BIN 29740
  571. data/RECADVDC.BIN 29730
  572. data/SPLDC1.BIN 29720
  573.  
  574. 15
  575.  
  576. ----------------------- Page 16-----------------------
  577.  
  578. data/SPLDC2.BIN 29710
  579. data/COLDC3.BIN 29700
  580. data/COLDC1.BIN 29690
  581. data/COLDC2.BIN 29680
  582. data/TEXDC3.BIN 29670
  583. data/TEXDC2.BIN 29660
  584. data/TEXDC1.BIN 29650
  585. data/SPRMENG.BIN 29640
  586. data/SPRMJAP.BIN 29630
  587. data/SPRMENU.BIN 29620
  588. data/SPRGENG.BIN 29610
  589. data/SPRGJAP.BIN 29600
  590. data/SPRGAME.BIN 29590
  591. data/LANDDC1.AFS 29580
  592. data/LANDDC2.AFS 29570
  593. data/BINC3.AFS 29560
  594. data/VOICE01.AFS 29550
  595. data/BINC2.AFS 29540
  596. data/BINC1.AFS 29530
  597. data/SONG01.AFS 29520
  598. data/0GDTEX.PVR 29510
  599. data/1ST_READ.BIN 29500
  600.  
  601. It's in the standard form now. If your game has subdirectories, there will be more "\"
  602. bars that must be converted to "/", use the replace tool again. In case of Crazy Taxi,
  603. we don't need to it.
  604.  
  605. It could be used now, but we're forgetting the extra files that we'll have in CD. One
  606. is IP.BIN. Again, IP.BIN is not necessary to be with files in CD, but I like to have a copy
  607. there. And, more important, we need to force dummy file to be in inner part of the
  608. disc. Remember, higher numbers = inner part of the disc. So we manually edit the
  609. file list assigning higher numbers for extra files. So we would add these 2 lines:
  610.  
  611. data/DUMMY.DAT 30002
  612. data/IP.BIN 30001
  613.  
  614. So the final result will be:
  615.  
  616. data/DUMMY.DAT 30002
  617. data/IP.BIN 30001
  618. data/AICADRV.BIN 30000
  619. data/SNDDC0.BIN 29990
  620. data/SNDDC1.BIN 29980
  621. data/SNDDC2.BIN 29970
  622. data/SNDDC3.BIN 29960
  623. data/SNDDC5.BIN 29950
  624. data/SNDDC8.BIN 29940
  625. data/MOTDC.BIN 29930
  626. data/POLDC0.BIN 29920
  627. data/TEXDC0.BIN 29910
  628. data/SPRCENG.BIN 29900
  629. data/SPRCJAP.BIN 29890
  630. data/SPRCOMM.BIN 29880
  631. data/SPRADV.BIN 29870
  632. data/SPRBOX.BIN 29860
  633. data/SNDDC6.BIN 29850
  634. data/SNDDC7.BIN 29840
  635. data/POLDC3.BIN 29830
  636. data/POLDC1.BIN 29820
  637. data/POLDC2.BIN 29810
  638. data/OBJDC3.BIN 29800
  639.  
  640. 16
  641.  
  642. ----------------------- Page 17-----------------------
  643.  
  644. data/OBJDC2.BIN 29790
  645. data/OBJDC1.BIN 29780
  646. data/SPLDC3.BIN 29770
  647. data/RECENDAC.BIN 29760
  648. data/RECENDDC.BIN 29750
  649. data/RECADVAC.BIN 29740
  650. data/RECADVDC.BIN 29730
  651. data/SPLDC1.BIN 29720
  652. data/SPLDC2.BIN 29710
  653. data/COLDC3.BIN 29700
  654. data/COLDC1.BIN 29690
  655. data/COLDC2.BIN 29680
  656. data/TEXDC3.BIN 29670
  657. data/TEXDC2.BIN 29660
  658. data/TEXDC1.BIN 29650
  659. data/SPRMENG.BIN 29640
  660. data/SPRMJAP.BIN 29630
  661. data/SPRMENU.BIN 29620
  662. data/SPRGENG.BIN 29610
  663. data/SPRGJAP.BIN 29600
  664. data/SPRGAME.BIN 29590
  665. data/LANDDC1.AFS 29580
  666. data/LANDDC2.AFS 29570
  667. data/BINC3.AFS 29560
  668. data/VOICE01.AFS 29550
  669. data/BINC2.AFS 29540
  670. data/BINC1.AFS 29530
  671. data/SONG01.AFS 29520
  672. data/0GDTEX.PVR 29510
  673. data/1ST_READ.BIN 29500
  674.  
  675. Again, be careful about the case and don't let spaces after the number. After that,
  676. our file list is done.
  677.  
  678. 6. Preparing recording process
  679. If you don't have an ASPI driver installed, you need to install one and reboot
  680. windows. Please google for one.
  681.  
  682. Now copy selfboot directory on drive c, so you its contents must be on c:\selfboot\.
  683. of course you can put it wherever you want, but it probably won't work on "c:\im
  684. dumb so i like long directories name with a lot of space\and subdirectories too
  685. \selfboot".
  686.  
  687. Move all the game files (in our case, all files of Crazy Taxi) to c:\selfboot\data, the
  688. folder is already created there.
  689.  
  690. Now get a CD-RW. It's a good idea to use a CD-RW because you can make as many
  691. tests as you want and you can try your game on emulator before wasting CDs for
  692. the real Dreamcast.
  693.  
  694. Next step is to get the device number for cdrecord. Use the command:
  695.  
  696. cdrecord.exe -scanbus
  697.  
  698. and it will show your HD and CD/DVD drives. Find your drive there and take note of
  699. the numbers. In my case, it's 4,1,0, but it can be anything for you. Now these
  700.  
  701. 17
  702.  
  703. ----------------------- Page 18-----------------------
  704.  
  705. numbers will be refered as a,b,c.
  706.  
  707. Note: If it shows the numbers, it means that cdrecord is probably working nice. If
  708. not, you'll have to figure out by yourself why things are not working. Did you really
  709. reboot Windows after ASPI installation? Is the version of your cdrecord adequate for
  710. you? You can try newer versions too. You can try this site too
  711. (http://www.dchelp.net/index.php?id=cdr), it has some tips to make cdrecord work
  712. if you're having trouble.
  713.  
  714. Now as first recording test, erase your CD-RW using this command:
  715.  
  716. cdrecord.exe -dev=a,b,c -blank=minimal -speed=x
  717.  
  718. -speed parameter is optional, default value is -speed=4 (it will erase disc in 4x if you
  719. don't put it). Don't forget that a,b,c must be replaced by the name you found with -
  720. (hyphen) on scanbus, that's the last time I say that. I hope everything is working fine
  721. for you now.
  722.  
  723. 7. Recording game
  724. Now we're at the last steps of making a selfboot copy of your game. Not only a
  725. working copy, but a great copy because we're dumming and using correct file order.
  726.  
  727. Except for a change on "mkisofs" step, everything else here is of the Echelon
  728. selfboot method. So if you have mastered their tutorial, everything is going to be
  729. very easy for you. If you haven't, don't worry, things will be explained step-by-step.
  730.  
  731. 7.1. First session: audio trac
  732. Use this command:
  733.  
  734. cdrecord.exe -dev=a,b,c -multi -audio audio.raw -speed=x
  735.  
  736. Again, speed parameter is optional (default speed is 4). After it's done, you'll have
  737. the first session burned.
  738.  
  739. Now use this command:
  740.  
  741. cdrecord.exe -dev=a,b,c -msinfo
  742.  
  743. It will return some numbers. They'll probably be 0,11702. I think there is a chance
  744. that you get 0,11700 too, or maybe other number. So, if you get something
  745. different of 0,11702, just replace them with your number of next steps.
  746.  
  747. 7.2. Last hacking process
  748. Now you don't have to hex edit yourself, Echelon made some nice tools that will
  749. make the work for you. All game files are in c:\selfboot\data right? Move
  750. 1ST_READ.BIN (that's the case of Crazy Taxi and most games, but remember that
  751.  
  752. 18
  753.  
  754. ----------------------- Page 19-----------------------
  755.  
  756. the file you must use is the one that was indicated when we hacked IP.BIN in section
  757. 3) and IP.BIN to c:\selfboot (or copy IP.BIN if you want to have a copy in game files,
  758. that's what I'm going to do). Now open "binhack.exe" and you must use these
  759. informations:
  760.  
  761. Enter name of binary: 1ST_READ.BIN
  762. Enter name of bootsector: IP.BIN
  763. Enter msinfo value: 11702
  764.  
  765. Again, maybe your game first binary is called different than 1ST_READ.BIN, use the
  766. right name. And if you got another value than 11702 replace it.
  767.  
  768. After this, move 1ST_READ.BIN (or whatever) to c:\selfboot\data again.
  769.  
  770. 7.3. Creating Image
  771. Put your file list (already modified to standard format like told in section 5) in c:
  772. \selfboot and name it with a short name, for example, list.txt. Now use the following
  773. command:
  774.  
  775. mkisofs -C 0,11702 -V TITLE -sort list.txt -l -o data.iso
  776. data
  777.  
  778. Maybe you need to change 0,11702 for the value you got. Change TITLE for the title
  779. of CD you want (use short names, no space).
  780.  
  781. For Crazy Taxi, my file list had the name of ctaxi.txt, so I used this line:
  782.  
  783. mkisofs -C 0,11702 -V MY_CRAZYTAXI -sort ctaxi.txt -l -o
  784. data.iso data
  785.  
  786. It may take a while to finish the process. After this, you'll have a file called data.iso
  787. in c:\selfboot.
  788.  
  789. 7.4. Checking File Order
  790. Now we must check if file order is the same of file list. Use this command:
  791.  
  792. isofix.exe data.iso 11702
  793.  
  794. After the process, you'll have a file called "fixed.iso" on c:\selfboot. Don't delete
  795. "data.iso" yet, we'll use it soon.
  796.  
  797. Now open "fixed.iso" in IsoBuster, and file will appear on right window. There are
  798. some details about each file, and one of them is LBA number. The lowest the LBA,
  799. closer to the center are the file. So order files by LBA (click LBA column title), and
  800. check if file order is okay, just looking and comparing with file list. If your game has
  801. subdirectories, ignore LBA of directory and look at LBA number of files inside each
  802. directory.
  803.  
  804. 19
  805.  
  806. ----------------------- Page 20-----------------------
  807.  
  808. For Crazy Taxi, remember that the file list used is this one:
  809.  
  810. data/DUMMY.DAT 30002
  811. data/IP.BIN 30001
  812. data/AICADRV.BIN 30000
  813. data/SNDDC0.BIN 29990
  814. data/SNDDC1.BIN 29980
  815. data/SNDDC2.BIN 29970
  816. data/SNDDC3.BIN 29960
  817. data/SNDDC5.BIN 29950
  818. data/SNDDC8.BIN 29940
  819. data/MOTDC.BIN 29930
  820. data/POLDC0.BIN 29920
  821. data/TEXDC0.BIN 29910
  822. data/SPRCENG.BIN 29900
  823. data/SPRCJAP.BIN 29890
  824. data/SPRCOMM.BIN 29880
  825. data/SPRADV.BIN 29870
  826. data/SPRBOX.BIN 29860
  827. data/SNDDC6.BIN 29850
  828. data/SNDDC7.BIN 29840
  829. data/POLDC3.BIN 29830
  830. data/POLDC1.BIN 29820
  831. data/POLDC2.BIN 29810
  832. data/OBJDC3.BIN 29800
  833. data/OBJDC2.BIN 29790
  834. data/OBJDC1.BIN 29780
  835. data/SPLDC3.BIN 29770
  836. data/RECENDAC.BIN 29760
  837. data/RECENDDC.BIN 29750
  838. data/RECADVAC.BIN 29740
  839. data/RECADVDC.BIN 29730
  840. data/SPLDC1.BIN 29720
  841. data/SPLDC2.BIN 29710
  842. data/COLDC3.BIN 29700
  843. data/COLDC1.BIN 29690
  844. data/COLDC2.BIN 29680
  845. data/TEXDC3.BIN 29670
  846. data/TEXDC2.BIN 29660
  847. data/TEXDC1.BIN 29650
  848. data/SPRMENG.BIN 29640
  849. data/SPRMJAP.BIN 29630
  850. data/SPRMENU.BIN 29620
  851. data/SPRGENG.BIN 29610
  852. data/SPRGJAP.BIN 29600
  853. data/SPRGAME.BIN 29590
  854. data/LANDDC1.AFS 29580
  855. data/LANDDC2.AFS 29570
  856. data/BINC3.AFS 29560
  857. data/VOICE01.AFS 29550
  858. data/BINC2.AFS 29540
  859. data/BINC1.AFS 29530
  860. data/SONG01.AFS 29520
  861. data/0GDTEX.PVR 29510
  862. data/1ST_READ.BIN 29500
  863.  
  864. Remember that it means, DUMMY.DAT is the closest file to the center, then IP.BIN,
  865. etc. In IsoBuster, ordering by LBA I got this result:
  866.  
  867. 20
  868.  
  869. ----------------------- Page 21-----------------------
  870.  
  871. 21
  872.  
  873. ----------------------- Page 22-----------------------
  874.  
  875. DUMMY.DAT has the lowest LBA, so it's closest to the center, then IP.BIN, (...), then
  876. SONG01.AFS, and in the end, 1ST_READ.BIN. So our file list were made correctly,
  877. and ISO has the correct file order.
  878.  
  879. 7.5. Burning last session: game files
  880.  
  881. Now execute "ipins.exe" and use the following data:
  882.  
  883. Enter name of bootsector: IP.BIN
  884. Enter name of ISO: data.iso
  885.  
  886. And boot sector will be included in data.iso. Now it's time for burning. Use the
  887. following command:
  888.  
  889. cdrecord.exe -dev=a,b,c -xa1 data.iso -speed=x
  890.  
  891. Again, -speed=x is optional. Well, now it will burn the game files, and as we
  892. dummied the game for full CD, it will take around 20 minutes in 4x.
  893.  
  894. CDRecord is very easy to crash, any program that makes access to CD drive will make
  895. cdrecord exists with error. For example: IsoBuster, another CD recording program,
  896. and even some programs with no standard file managers. So I recommend that you
  897. go AFK and let your computer record the disc.
  898.  
  899. If at the start of recording you get this warning:
  900.  
  901. WARNING: Files may not fit on the disc.
  902.  
  903. or something like that, cancel recording start using CTRL+C. It means that you
  904. haven't dimensioned dummy file right, and program will make overburn, what is
  905. never good. Try making right size dummy, remaking image, etc, like told before in
  906. this guide.
  907.  
  908. 8. Testing the disc
  909. Game should now be bootable on Dreamcast. But you recorded on a CD-RW
  910. remember? So only your computer can read it. Test it on emulators. For this, make a
  911. image with Disc Juggler and test it on NullDC or test directly on CD with Chankast.
  912. You don't need to play the game, just see if it boots fine. If it does, you have done
  913. everything right.
  914.  
  915. If you have done Crazy Taxi like the example, it will work in both emulators.
  916. Remember to check before if the emulator you're using to test is compatible with
  917. the game you're trying to make selfbootable. An easy test for that is try the GDI you
  918. started with on NullDC, if it works, then selfbootable version must work too.
  919.  
  920. 9. Distribution
  921. If you want to distribute your rip, it's a great thing. But remember that these things
  922.  
  923. 22
  924.  
  925. ----------------------- Page 23-----------------------
  926.  
  927. spread fast. If you distribute a good thing, you'll make a lot of people happy. If you
  928. distribute a bad thing, you'll make a lot of people confused. So be careful, and think
  929. if your rip is really worthy of distribution.
  930.  
  931. Don't forget to write a readme file, including important informations like what was
  932. ripped, downsampled, etc. In case of Crazy Taxi, nothing, so write that. Don't forget
  933. to tell your sources too, like GD dump, a group's release, etc. This will help to make
  934. scene clean of bad stuff.
  935.  
  936. Most common format for Dreamcast games is .cdi (Disc Juggler), so use it to make
  937. your image for distribution. Alcohol 120% format is acceptable, but not encouraged.
  938. And for God's sake, don't make images with Nero, newer versions can't burn
  939. Dreamcast selfboot games right.
  940.  
  941. Last step for distribution is to check files. For that, make a image of your CD-R/W
  942. (again, I recommend DiscJuggler). Now use Daemon Tools to mount the image on a
  943. virtual drive. Opening the drive, you'll see the game files you have recorded. Now
  944. you must have RapidCRC installed with standard configurations (so it should be
  945. included on right-click menu). Now, on virtual drive, select all the files (except
  946. dummy file, you don't need to check it), right-click and select "Open with RapidCRC".
  947. It will take a while to analyse every file CRC. Now use Create SFV file -> Create one
  948. .SFV file for all files and save it on c:\selfboot\data (you should still have the files
  949. you used there). Now open the .sfv you just created double-clicking it (it must be
  950. associated with RapidCRC or other SFV checker) and it will check the files on c:
  951. \selfboot\data. If check is alright, it means that files on image and files that you used
  952. on recording process are identical, so nothing is corrupted on your image.
  953.  
  954. And last comment, don't forget to try your game on real Dreamcast. I had a game
  955. once that booted fine on NullDC but froze on main screen on real Dreamcast.
  956.  
  957. 10. Thanks
  958. - (http://www.megagames.com/console/cgi-bin/dl.cgi?id=dc&file=dcis-tut.001!rar)
  959. Ripping guide of dcisos.de (site dead), it helped hacking my first dreamcast game.
  960. -
  961. (http://www.dreamwell.pwp.blueyonder.co.uk/dcselfboot/Tutorial_Index/tutorial_i
  962. ndex.htm) This site that has tons of tutorials that helped me doing stuff on DC.
  963. - The nice guys who created the programs used here.
  964. - All people that rip and distribute GDI.
  965.  
  966. 23
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement