Advertisement
atreyu187

Dreamcast Guides : Region/Cheat Code Hacking

Jan 29th, 2014
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.14 KB | None | 0 0
  1. ADnova's guide to.......
  2.  
  3.  
  4. *****Dreamcast Hacking*****
  5.  
  6. Version 1.11
  7. October 6, 2001
  8.  
  9. ---------------------------------------------------------------------
  10. Table of Contents
  11. ---------------------------------------------------------------------
  12.  
  13.  
  14. 1) ............. Introduction
  15. a) ........... What's new
  16.  
  17. 2) ............. Review of basic hacking methods and knowledge
  18.  
  19. 3) ............. Dreamcast Code Breaker code types
  20.  
  21. 4) ............. Uses of the different code types
  22. a) ........... 00-type
  23. b) ........... 01-type
  24. c) ........... 02-type
  25. d) ........... 04-type
  26. e) ........... 05-type
  27. f) ........... 0D-type
  28. g) ........... 0E-type
  29.  
  30. 5) ............. Dreamcast Joker commands
  31. a) ........... How to use Joker commands in DC codes
  32.  
  33. 6) ............. Hacking with Code Breaker
  34.  
  35. 7) ............. Credits and thank-you's
  36.  
  37. 8) ............. Legal garbage and contact information
  38.  
  39.  
  40. ---------------------------------------------------------------------
  41. 1) Introduction
  42. ---------------------------------------------------------------------
  43.  
  44. Hacking for Dreamcast isn't quite the same as hacking for Playstation
  45. or Nintendo 64. No GS pro, no game trainers, no hacking utilities to
  46. use (not yet anyway). I wrote this guide to help people who want to
  47. hack their own codes for the DC. Where I can I'll use examples to
  48. clarify how to use a code. Any problems or questions about the guide
  49. or DC hacking, let me know.
  50. One important thing - you must have either a Code Breaker or an
  51. Xploder to hack your own codes. You can try with the Game shark
  52. CDX, but this guide won't help you with that device. The reason is
  53. because Gameshark CDX codes are encrypted, which makes many of the
  54. hacking methods described below difficult or impossible.
  55. Also, throughout the guide I will only refer to the Code Breaker,
  56. however all of the guide can be applied using the Xploder.
  57. I have assumed that the reader has at least some basic knowledge of
  58. hacking for other platforms, but the review is there for those that
  59. don't.
  60. This is the first guide I've ever written, so I guarantee that there
  61. will be something wrong somewhere.
  62.  
  63. A) -- What's new --
  64.  
  65. Version 1.11 - Since this guide is now up at hacking 101, I fixed up
  66. some mistakes and tried to make certain parts easier to understand.
  67.  
  68. Version 1.01 - A few minor updates, spelling/grammar fixes, and stuff
  69. like that.
  70.  
  71. Version 1.00 - First version of this guide. I plan on adding much more
  72. information about Dreamcast hacking, as soon as I learn it myself.
  73.  
  74.  
  75. ---------------------------------------------------------------------
  76. 2) Review of basic hacking methods and knowledge
  77. ---------------------------------------------------------------------
  78.  
  79. If you're already an experienced hacker, then go ahead and skip this
  80. section. If not, then read up and hopefully you'll learn something.
  81. Also - all numbers in this guide are hex numbers, unless stated
  82. otherwise.
  83.  
  84.  
  85. --Hex--
  86. First of all, you need to learn hex. Hex is a counting system that has
  87. 16 digits instead of the normal 10. It's really quite simple, but you
  88. should at least be familiar with it before you try to hack anything.
  89. Why should you learn it? Well, because every code you see is actually
  90. in hex. So, if you want to make your own codes, you need to know what
  91. the numbers mean.
  92.  
  93. This table shows you all you need to know for now:
  94.  
  95. Decimal number Hex number (a.k.a. hexadecimal)
  96.  
  97. 0 ----> 0
  98. 1 ----> 1
  99. 2 ----> 2
  100. 3 ----> 3
  101. 4 ----> 4
  102. 5 ----> 5
  103. 6 ----> 6
  104. 7 ----> 7
  105. 8 ----> 8
  106. 9 ----> 9
  107. 10 ----> A
  108. 11 ----> B
  109. 12 ----> C
  110. 13 ----> D
  111. 14 ----> E
  112. 15 ----> F
  113. 16 ----> 10
  114.  
  115. This is just meant to give you an idea of how it works. Save yourself
  116. the headache of trying to convert from one to the other and just use
  117. a program that converts hex to decimal (and vice-versa). If you have
  118. windows, use windows calculator with scientific view.
  119.  
  120. --Anatomy of a code: Addresses, values, prefixes, floats and bytes--
  121.  
  122. Hold on to your brain - this could get complicated. :)
  123.  
  124. First, you should know the layout of a basic Dreamcast code:
  125.  
  126. 0?-AAAAAF
  127. VVVVVVVV
  128.  
  129. The prefix: the prefix is the ? in the code. It tells the Code Breaker
  130. what type of code you're using.
  131.  
  132. The address: this is the AAAAA in the code. This is what part of the
  133. RAM that the code will be affecting.
  134.  
  135. The float: The float is the F digit in the code. This is part of the
  136. address.
  137.  
  138. The value: The value is the VVVVVVVV in the code. The value tells the
  139. Dreamcast what number to put at the address.
  140.  
  141. To better explain what each part does, and what a byte is, look at the
  142. following figure: (This will look familiar if you've ever used a hex
  143. editor)
  144.  
  145. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  146.  
  147. 0C32EFA? 00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 00
  148.  
  149. Explanation: the number 0C32EFA? is the address. For now, you can
  150. ignore the 0C part of the address. All DC RAM addresses have 0C at the front
  151. of the address, because that's where DC's RAM is located (more about that
  152. later). It is not the prefix, and it isn't actually used when inputing a Code
  153. Breaker code.
  154. The hex numbers from 0 to F above the sets of double zero's are also
  155. part of the address. Each double zero is a 'byte' and that is where the values
  156. are located. Here, we have the value 'FF' at address '0C32EFA4'. The 4 in the
  157. address comes from the part where the value is located. Here it's 4, so the
  158. address is 0C32EFA4 (and 4 replaces the ?). For future reference, this part
  159. of the address will be called the 'float'. Make sense?
  160.  
  161. One futher note: a byte is made up of two hexadecimal digits. It does NOT
  162. have to be two zero's. I use zero's just to make it clear what is being
  163. affected or changed.
  164.  
  165. If this were an actual code, it might be:
  166.  
  167. 00-32EFA4
  168. 000000FF
  169.  
  170. That's all you need to know for now, next to know are the different
  171. prefixes that you can use.
  172.  
  173.  
  174. ---------------------------------------------------------------------
  175. 3) Dreamcast Code Breaker code types
  176. ---------------------------------------------------------------------
  177.  
  178. What a code does depends on the prefix. The prefix tells the Xploder
  179. what to do with the numbers that follow. That said, that are several
  180. code types (meaning: what prefix the code has), that you should know
  181. about. Each will be explained in more detail later, this is just a
  182. general overview. All of the information on code types here is based on
  183. the information at www.cmgsccc.com
  184.  
  185.  
  186. 00 code type: This code has '00' as a prefix. The normal layout of this
  187. type of code is:
  188.  
  189. 00-AAAAAF
  190. 000000VV
  191.  
  192. As you can see, the value (VV) is only one byte. The value must be between
  193. 00 and FF, since the first six zero's in the value are ignored.
  194. The float(F) can have any value, from 0-F.
  195.  
  196.  
  197. 01 code type: The prefix for this code type is '01'. The float for this
  198. code type must be even, ie: 0,2,4,6,8,A,C,E. The code looks like this:
  199.  
  200. 01-AAAAAF
  201. 000000VV
  202.  
  203. You'll notice that this code type affects two bytes (VV VV), so the value
  204. can be from 0000-FFFF. The first four zero's are ignored.
  205.  
  206.  
  207. 02 code type: This type of code affects four bytes, and is laid out like
  208. this:
  209.  
  210. 02-AAAAAF
  211. VVVVVVVV
  212.  
  213. Here, the float must be 0,4,8, or C. The value here can be from 00000000
  214. to FFFFFFFF.
  215.  
  216.  
  217. Right now you might be wondering why the float has to be certain values
  218. for the different code types. Let me explain with an example, from
  219. Skies of Arcadia:
  220.  
  221. Ship parts item modifier (slot one):
  222.  
  223. 01-56E704
  224. 0000???? <---item digit goes here.
  225.  
  226. Max ship parts modifier (slot one):
  227.  
  228. 01-56E706
  229. 00000063
  230.  
  231. Note that both codes are 01 code types. This means that they each affect
  232. two bytes, but there's more to it than that. Lets break down the first
  233. code:
  234.  
  235.  
  236. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  237.  
  238. 0C56E704 00 00 00 00 ?? ?? 00 00 00 00 00 00 00 00 00 00
  239.  
  240. Since the 01 code type affects two bytes, it also affects two float
  241. numbers. Let's look at the second code:
  242.  
  243. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  244.  
  245. 0C56E706 00 00 00 00 00 00 00 63 00 00 00 00 00 00 00 00
  246.  
  247. This code affects two bytes, and the float from 6-7. We can easily combine
  248. these two codes, with the 02 code type.
  249.  
  250. Max ship parts item modifier (slot one):
  251.  
  252. 02-56E704
  253. 0063????
  254.  
  255. The code would look like this:
  256.  
  257. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  258.  
  259. 0C56E704 00 00 00 00 ?? ?? 00 63 00 00 00 00 00 00 00 00
  260.  
  261. The 02 code type affects four bytes and four floats.
  262.  
  263. Since the 02 type codes write to four bytes (and floats),
  264. it can only start at every fourth float. Confusing enough? Anyway, back
  265. to the different code types:
  266.  
  267.  
  268. 04 code type: This code type has basically the same effect as the '50' code
  269. type on the Gameshark Pro for Playstation. It's useful to combine many
  270. codes into one. I'll save explanation of this code type until later,
  271. here's the layout and brief explanation for now:
  272.  
  273. 04-AAAAAF
  274. WWWWZZZZ
  275. VVVVVVVV
  276.  
  277. The AAAAAF is the address where the code starts. WWWW is the number of
  278. addresses that the code will affect. ZZZZ is how much the current address
  279. is to be incremented by to get to the next address in the code, mulitplied
  280. by four. The reason that ZZZZ is multiplied by four is because the value
  281. written to each address in the code, VVVVVVVV, is the same type that
  282. the 02 code type has. Meaning that at each address, four bytes are
  283. written to. That also means that the float must be 0,4,8, or C.
  284.  
  285.  
  286. 05 code type: The layout:
  287.  
  288. 05-AAAAAF
  289. VVVVVVVV
  290. ZZZZZZZZ
  291.  
  292. This code will copy ZZZZZZZZ number of bytes from the address AAAAAF,
  293. to the address VVVVVVVV. Normal codes only allow you to write to the
  294. DC RAM, addresses 0C000000-0CFFFFFF. Well with this code you can write
  295. to any area in the DC memory. The float in this code can range from 0-F.
  296. More about this code type later.
  297.  
  298.  
  299. 0B code type: Codes with prefixes '0B' seem to be enable codes. I have only
  300. seen them used on two games, Shenmue and F355 Challenge. That's pretty much
  301. all I know about them.
  302.  
  303.  
  304. 0D code type: An activator code, similar to the D0 type code used on
  305. Nintendo 64 and Playstation. The layout for this code type is:
  306.  
  307. 0D-AAAAAF
  308. 000ZVVVV
  309.  
  310. This code will check a certain condition, indicated by the value of Z.
  311. The possible Z values are:
  312.  
  313. 0 = If equal to
  314. 1 = If different to
  315. 2 = If less than
  316. 3 = If greater than
  317.  
  318. The code reads the condition type, then goes to address AAAAAF and checks
  319. the value(VVVV) at that address. If the condition is true, then it
  320. 'activates' the next two line code. If not, then it doesn't activate the
  321. next two lines. To clarify, you would actually enter four lines under
  322. one code description, something like this:
  323.  
  324. 0D-123456
  325. 00000001
  326. 01-123456
  327. 0000000A
  328.  
  329. In this example, Z=0, so the condition is If equal to. The value at address
  330. 123456 is checked, and if it is equal to 1, then the next two line code is
  331. activated. As you can see, when the next two line code is activated, the
  332. value at address 123456 becomes A.
  333.  
  334.  
  335. 0E code type: This code type is also an activator, but is used to activate
  336. more than 2 lines of codes. Layout:
  337.  
  338. 0E-WWVVVV
  339. 0ZAAAAAF
  340.  
  341. All of the terms have the same definitions as in the 0D code type, but
  342. there is now one new term, WW. The value in WW tells the Code Breaker how
  343. many lines of codes to activate if the condition is true. The value
  344. in WW can be odd or even. This code type will be explained in more detail
  345. later on.
  346.  
  347.  
  348. 0F code type:
  349.  
  350. The following information is taken straight from Code Master's DC code
  351. types FAQ (although it's slightly modified to be consistent):
  352.  
  353. "Format: 0F-AAAAAF
  354. 0000VVVV
  355.  
  356. AAAAAF = Address
  357. VVVV = 2-byte Value
  358.  
  359. Functionality: This is one of the least common code types.
  360. It simply writes the given 2 byte value, VVVV, to the given address,
  361. AAAAAF BEFORE anything is run for the game. Used for games like PSO that
  362. require Enable Codes and such. (The float MUST be even.)"
  363.  
  364. So, as you can see this code will write to the specified location before
  365. the game even starts to run. And also, the float must be 0,2,4,8,A,C, or
  366. E, just like the 01 code type. That is all I'm going to say about this
  367. code type in this version of the guide.
  368.  
  369. ---------------------------------------------------------------------
  370. 4) Uses of the different code types
  371. ---------------------------------------------------------------------
  372.  
  373. The first three code types we deal with are quite simple (00, 01, and
  374. 02 types). What prefix to use depends on either the size of the value,
  375. or how many bytes you want to change.
  376.  
  377. A) -- 00 code type --
  378.  
  379. Use this code type when you only want to change the value in one byte.
  380.  
  381. Example: Say you want a code to give you 'max health' in a game. If the
  382. max health you can get in the game is 270F (9999 decimal), that means that
  383. the code you use should affect two bytes, but what happens if you used the
  384. 00 code type? Look at the following example:
  385.  
  386. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  387.  
  388. 0C320BA4 00 00 00 00 ?? ?? 00 00 00 00 00 00 00 00 00 00
  389.  
  390. So, for this game, the addresses that control health are 320BA4 and
  391. 320BA5. That covers two bytes and floats, and 00 affects only 1. If you
  392. entered the code:
  393.  
  394. 00-32BA25
  395. 000000FF
  396.  
  397. Then it would only affect the byte at float 5, leaving the byte at the
  398. fourth float unchanged.
  399.  
  400. The point of all of this is that you have to know how many bytes you need
  401. to affect with the code, which you'll know by how large or small the
  402. number is in the game (usually).
  403.  
  404. What the 00 code type is good for is pinpointing very specific addresses.
  405. The first six zero's in the value are ignored, it doesn't write these
  406. zero's to any address.
  407.  
  408. Example: Skies of Arcadia, Vyse name change modifier.
  409.  
  410. In this code, each character in the name takes up one byte. Since you
  411. want to make each character different, you must use the 00 code type
  412. (well, not really, but this is just an example).
  413. The address and values would look like this:
  414.  
  415. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  416.  
  417. 0C56DD70 ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00
  418.  
  419. The question marks are where you would put the values for whatever
  420. character you wanted that part of the name to be.
  421. You should note that two 02 type codes could be used here, much more
  422. effective than eight 00 type codes. Generally, just use the 00 code type
  423. if you're sure that you only need or want to change the value of one byte.
  424.  
  425.  
  426. B) -- 01 code type --
  427.  
  428. The 01 prefix is used when you want to change two bytes with the same
  429. code. When the value you want to change ranges from 0000-FFFF, use this
  430. code type.
  431.  
  432. Example: Grandia 2, Max MP for Mareg:
  433.  
  434. 01-E2E59C
  435. 000003E7
  436.  
  437. In the usual form, the code looks like:
  438.  
  439. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  440.  
  441. 0CE2E59C 00 00 00 00 00 00 00 00 00 00 00 00 03 E7 00 00
  442.  
  443. Note that the other bytes aren't necessarily zero's, I'm just doing
  444. that to show what is being affected. Now, 3E7 = 999 in decimal, and that
  445. is the maximum value that MP can be in this game. The game itself will
  446. read both of these bytes to get the value for MP, so that is why the 01
  447. code type should be used to change both of the bytes.
  448.  
  449.  
  450. C) -- 02 code type --
  451.  
  452. This code type is used to write to four bytes at once. It can be used when
  453. the value you're changing is large, like this:
  454.  
  455. Example: Grandia 2, Max experience Mareg.
  456.  
  457. 02-E2E590
  458. 05F5E0FF
  459.  
  460. Which looks like:
  461.  
  462. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  463.  
  464. 0CE2E590 05 F5 E0 FF 00 00 00 00 00 00 00 00 00 00 00 00
  465.  
  466. 05F5E0FF = 99,999,999 in decimal, which is the maximum value that the
  467. game uses for experience.
  468.  
  469. The 02 code type is not just used for large numbers. Remember, it affects
  470. four bytes, so consider the following example:
  471.  
  472. These codes are for the game Fur Fighters:
  473.  
  474. Infinite pistol ammo, VLF facility level:
  475.  
  476. 01-E026D4
  477. 0000270F
  478.  
  479. Infinite shotgun ammo, VLF facility level:
  480.  
  481. 01-E026D6
  482. 0000270F
  483.  
  484. Knowing what you already know, you should easily see how we could
  485. use the 02 code type to combine these codes.
  486. Here is the combined code:
  487.  
  488. 02-E026D4
  489. 270F270F
  490.  
  491. Which looks like this:
  492.  
  493. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  494.  
  495. 0CE026D4 00 00 00 00 27 0F 27 0F 00 00 00 00 00 00 00 00
  496.  
  497. Understand? The first code wrote 270F at float 4, while the second code
  498. wrote 270F at float 6. Why not just write 270F at both with one code?
  499.  
  500. That's it for the basic code types. The rest of the code types have
  501. special features that you'll definitely want to use.
  502.  
  503.  
  504. D) -- 04 code type --
  505.  
  506. If you've hacked codes for Playstation, it's almost certain that you've
  507. used the '50' code type. Well, on DC the '04' code type has pretty much
  508. the same effect, but of course there are some differences. This code is
  509. more complex than the ones we've already covered, but I'll try to explain
  510. how it works as best I can.
  511.  
  512. For example, say you had four different codes, and they were:
  513.  
  514. 02-7798B0 02-7798B4 02-7798B8 02-7798BC
  515. 01FF01FF 01FF01FF 01FF01FF 01FF01FF
  516.  
  517. These codes would be:
  518.  
  519. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  520.  
  521. 0C7798B0 01 FF 01 FF 01 FF 01 FF 01 FF 01 FF 01 FF 01 FF
  522.  
  523. You should notice that the floats for these codes are 0,4,8,C. We know the
  524. layout of the 04 code type, so how do we use it? It's simple actually.
  525.  
  526. 04-AAAAAF
  527. WWWWZZZZ
  528. VVVVVVVV
  529.  
  530. First: obviously, the prefix used is 04. Next, what is the start address?
  531. In this example it is 7798B0, so put that number in AAAAAF. Then figure
  532. out how many codes you need to combine. There are four codes in this
  533. example, so WWWW = 0004. The ZZZZ equals how much you want to increment
  534. the address by for every code, multiplied by four. Here, each addresses
  535. is 4 more than the previous one, so ZZZZ = 0001. Why is it multiplied by
  536. four? That's explained by the value, VVVVVVVV. The code will write to
  537. four bytes at each address (just like the 02 code type), which means that
  538. the next bytes written to must be a separate four bytes.
  539. Probably the most important thing to remember is that the 04 code type is
  540. the same as using WWWW number of 02 type codes.
  541. The number of addresses that this code can affect can be up to FFFF.
  542.  
  543. Example: If you put in the code:
  544.  
  545. 04-000000
  546. FFFF0001
  547. FFFFFFFF
  548.  
  549. Then the code would write FF at every byte of every address from 000000 to
  550. FFFFFF (which is a very bad idea for a code, but it's just an example,
  551. right?)
  552.  
  553. What about different values of ZZZZ? Well, usually ZZZZ will be equal to
  554. 0001, but there may be times when you want to jump to an address that
  555. isn't right next to the last one. For example, if some codes you wanted
  556. to combine had a difference of 120 between each one, then ZZZZ would equal
  557. 30. Don't forget, ZZZZ is multiplied by four.
  558. If you remember from the Playstation GS pro, you could add one to the
  559. value for every code in the string. Unfortunately, you can't do that
  560. on Dreamcast.
  561.  
  562.  
  563. E) -- 05 code type --
  564.  
  565. With this code you can copy the values in a certain number of bytes, and
  566. put them at a different address.
  567. The catch here is that the address you can copy to doesn't have to
  568. be in RAM. Just to remind you, the layout is:
  569.  
  570. 05-AAAAAF
  571. BBBBBBBB
  572. ZZZZZZZZ
  573.  
  574. The copy-from address, AAAAAF, is an address in the normal RAM.
  575. The copy-to address BBBBBBBB can be anywhere. Here is a memory map of
  576. the DC that you can use, compiled by several people in the DC hobbyist
  577. community, with special thanks to Dan Potter:
  578.  
  579. 00000000 - 03FFFFFF 00000000 - 001FFFFF Boot ROM (2MB)
  580. 00200000 - 003FFFFF Flash ROM (256K)
  581. 04000000 - 07FFFFFF Video RAM (8MB)
  582. 08000000 - 0BFFFFFF ?
  583. 0C000000 - 0CFFFFFF System RAM (16MB)
  584. 10000000 - 13FFFFFF PowerVR:
  585. 10000000 - 107fffff Tile accelerator
  586. 10800000 - 11ffffff Texture mem (wronly)
  587. 14000000 - 17FFFFFF G2/Expansion (modem) port, 1-4 bytes/access
  588. 1C000000 - 1FFFFFFF Internal I/O registers
  589. 1F000000 - 1FF0???? Memory mapped registers
  590. A05F8000 PowerVR registers
  591. A0700000 SPU Registers
  592. A0800000 - A09FFFFF Sound RAM (2MB)
  593. A1000000 Parallel port; Mappable for PCI bus space
  594. (used with the broadband adapter)
  595. A2000000 CD/GD-ROM port
  596. A4000000 Non-cached mirror of texture RAM
  597. A5000000 - A57FFFFF Non-cached mirror of VRAM
  598. FF000000 - FFF0???? Mirror of memory mapped registers
  599.  
  600.  
  601. If you're experienced enough, this code type can let you change nearly
  602. any area of DC memory. The normal area of DC RAM, 0C000000 - 0CFFFFFF,
  603. can be categorized further, but I'll save that information for the
  604. "Hacking with Code Breaker" section.
  605.  
  606. Now, obviously if you want to copy from a certain address you have to
  607. know what it is you're copying. So you can do one of two things.
  608. One, you can write whatever value you want to a specific location in
  609. the normal RAM area, then copy that value to another location in DC
  610. memory (not necessarily RAM).
  611. Or two, you can copy an unchanged value from RAM to another memory area.
  612.  
  613. If you can just use the other code types, why would you use this code
  614. type to change values in RAM? Well, because the values in the
  615. address you copy to change dynamically.
  616.  
  617. Example: In an RPG, a certain characters stats might be at the address
  618. 0C4599A2. All the stats for that character are contained within, say,
  619. 32 bytes. Now, another characters stats are located at address 0C4599DD.
  620. If you used the code:
  621.  
  622. 05-4599A2
  623. 0C4599DD
  624. 00000032
  625.  
  626. Then those 32 bytes would be copied from one characters stats to the
  627. others. This is useful because nothing is being altered or written to at
  628. the copy from address (4599A2). You should also be aware that this code
  629. doesn't just copy the values once, it is a continuos copy. So, when the
  630. byte values at the copy from address change, so do the values at the
  631. copy to address.
  632. Note: the Code Breaker reads the number of bytes to copy as a decimal
  633. number, so beware.
  634.  
  635.  
  636.  
  637. F) -- 0D code type --
  638.  
  639. These last two code types, 0D and 0E, are activator codes. You may be
  640. familiar with that term if you've used those type of codes on N64 and
  641. Playstation. Instead of having a different prefix for each condition,
  642. on the DC the condition is just one digit in the code.
  643.  
  644. Example: The 0D type activator is useful if you want to have codes like:
  645. get 99 coins when you pick up one, or win one fight instead of two to
  646. win the match, etc..
  647.  
  648. To use the 'get 99 coins' example above, you first have to know the address
  649. that contains the values for number of coins. Let's say for example that
  650. the address was 2290BC. Normally when you start a level you'd have no coins.
  651. If you remember the layout, the AAAAAF here would be 2290BC, the address
  652. where the coins are. The condition type Z, would be 0, which means If
  653. equal to. The VVVV would be 1, because that's the number we'd need to
  654. activate the code that follows. Here's what the code would look like:
  655.  
  656. 0D-2290BC
  657. 00000001
  658. 00-2290BC
  659. 00000063
  660.  
  661. So, the game checks the value at address 2290BC, and when it is equal
  662. to 1, the next two line code is activated. In this example, when you
  663. pick up 1 coin, the next code becomes active, and writes 63 (which is
  664. 99 in decimal) at address 2290BC.
  665.  
  666.  
  667. G) -- 0E code type --
  668.  
  669. The 0E code type is similar to the 0D code type, with the addition of
  670. one important term - WW. This WW controls how many lines you want to
  671. activate if the condition is true.
  672.  
  673. Example: Good for sports games, if you want to start the game with a
  674. lead on the other team. You need to know the addresses that control
  675. the score of both teams (usually away and home). If the home team score
  676. address is 1C0920 and the away team score address is 1C0924, then you
  677. have all you need to make this type of code. The code might look like:
  678.  
  679. 0E-040000
  680. 001C0920
  681. 00-1C0920
  682. 00000064
  683. 00-1C0924
  684. 00000000
  685.  
  686. The code will check the value at address 1C0290, which is the home team
  687. score address. The condition here is If equal to, so if the value at
  688. that address = VVVV (0000 in this example), then activate the next WW
  689. amount of lines. WW equals 04 in this example. At the beginning of the
  690. game, the home team score is 0, so the activator takes effect right away.
  691. It then writes the value 64 (99 decimal) to the home score address , and
  692. gives the away team a 0.
  693.  
  694. This code type is also used for Dreamcast Joker command codes, which
  695. will be discussed in the next section.
  696.  
  697.  
  698.  
  699. ---------------------------------------------------------------------
  700. 5) Dreamcast Joker commands
  701. ---------------------------------------------------------------------
  702.  
  703.  
  704. Joker commands are used with activator codes, so that you can activate
  705. the code just by pressing a button. They are very useful codes, and can
  706. be used with both 0D and 0E type activators. The list below contains
  707. the joker command codes for the different buttons. This list was
  708. compiled by UL1 on the X-hub message board:
  709.  
  710. Button Joker code
  711.  
  712. A FFFB
  713. B FFFD
  714. X FBFF
  715. Y FDFF
  716. START FFF7
  717. D-UP FFEF
  718. D-DOWN FFDF
  719. D-LEFT FFBF
  720. D-RIGHT FF7F
  721.  
  722.  
  723. The following instructions are based on what CodeMaster wrote in his
  724. joker code FAQ:
  725. To combine two joker commands (i.e. press A and Y to activate a code), you
  726. have to add the joker codes for the buttons together. For example, the
  727. joker code for A and B would be:
  728.  
  729. A = FFFB
  730. B = FFFD
  731.  
  732. FFFB + FFFD = 1FFF8
  733.  
  734. However, the joker code is only four digits, so you add the 1 at the
  735. beginning to the last digit, to get the combined joker code. So the joker
  736. command for pressing both A + B buttons is FFF9.
  737.  
  738.  
  739. A) How to use joker commands in DC codes
  740.  
  741. To illustrate how these work, I'll use some codes for World series
  742. baseball 2K1 as examples.
  743.  
  744. The first and most important thing you must have in order to use joker
  745. commands is the address that tells the DC what buttons you are pressing.
  746. To be honest, there is almost no possiblity that you'll be able to find out
  747. this address with just the Code Breaker or Xploder. If the address for
  748. this function is already known, however, then you're ready to use joker
  749. commands.
  750.  
  751. -- Using the 0D activator with joker commands --
  752.  
  753. From world series baseball 2K1:
  754.  
  755. 0D-25D5A8
  756. 0000FFEB
  757. 0199E188
  758. 00000000
  759.  
  760. Code effect: Press A + D-pad up to make away team score = 0
  761.  
  762. In this code, the address that the condition is checked from is the
  763. address that records what buttons are being pressed, 25D5A8. The
  764. condition is 0000, so it's an If equal to type of condition. The
  765. FFEB is the value that the Code Breaker checks for at the address. FFEB is
  766. a joker command for A + D-pad up. So, when you press A + D-pad up at
  767. the same time, the condition returns true and the following two lines
  768. are activated. The address 99E188 is the away team score address, that
  769. contains the value for the current away team score. When you press the
  770. joker command buttons that activate the code, the Code Breaker will write
  771. 0000 at the address 99E188. Note that there's only four zero's being
  772. written because the code type being activated is an 01 type.
  773.  
  774. -- Using the 0E activator with joker commands --
  775.  
  776. Also for World series baseball 2K1:
  777.  
  778. 0E-04FD5F
  779. 0025D5A8
  780. 01-99E188
  781. 00000032
  782. 01-99E18C
  783. 00000000
  784.  
  785. Code effect: Press Y + D-pad down to put away team in the lead.
  786.  
  787. According to the code layout:
  788.  
  789. 0E-WWVVVV
  790. 0ZAAAAAF
  791.  
  792. WW is the number of lines the code will activate. VVVV contains the
  793. four digit joker command. 0Z is the condition type, and AAAAAF is
  794. the address that the Code Breaker will check the condition from.
  795.  
  796. In this example, the condition is 00, If equal to. The number of lines
  797. to activate is 04, and FD5F is the joker command for Y + D-pad down.
  798. The address you put at AAAAAF is the address that records the values for
  799. whatever buttons you press. For World Series Baseball 2K1, that address
  800. is 25D5A8. Note that this address is different for every game.
  801. We know that 99E188 is the away team score modifier, and we now know that
  802. 99E18C is the home team score modifier. When Y + D-pad up are pressed, the
  803. value at address 25D5A8 becomes FD5F, and the next WW (04 here) number of
  804. lines are activated. The next two codes set the away team score to 32
  805. (in hex, which is 50 in decimal) and the home team score to 0.
  806.  
  807. On a side note, you should realize that the two 01 type codes in this
  808. example could be combined into one 02 type code. You would just need to
  809. change WW from 04 to 02. It would look something like this:
  810.  
  811. 0E-02FD5F
  812. 0025D5A8
  813. 02-99E188
  814. 00320000
  815.  
  816.  
  817. ---------------------------------------------------------------------
  818. 6) Hacking with Code Breaker
  819. ---------------------------------------------------------------------
  820.  
  821. When you're trying to hack with the Code Breaker, you have only two methods,
  822. guessing and modifying. If you've gotten used to using GS pro's, then
  823. trying to poke around to find codes with the Code Breaker will remind you
  824. of the days of the Game Genie. Well, okay, it's not quite that bad.
  825.  
  826. Modifying is definitely the best way to find your own codes for DC.
  827. For most games, a certain area of RAM will contain almost all the memory
  828. that controls important things, such as lives, power, or score. So you can
  829. just change the address on existing codes to find new ones. And for the
  830. most part, it will work fine. Just remember what code type you're using,
  831. and make sure the float can be used with that type.
  832.  
  833. The 04 code type can give you the ability to change as many bytes as you
  834. want with one code, so it's very useful for code searching. Well, sort
  835. of. For example, if there was one code available for a game, and it
  836. was 99 lives, player one. The code might be:
  837.  
  838. 00-ACC240
  839. 00000063
  840.  
  841. You would know that the byte at address ACC240 controls the number of
  842. lives for player one. Since most games group together the values that
  843. affect similar things in a game, for instance player one stats, you
  844. could do a 04 search. How would you do this? You could enter:
  845.  
  846. 04-ACC240
  847. 00040001
  848. 63636363
  849.  
  850. What would this actually do? To put it in a familiar form:
  851.  
  852. 0 1 2 3 4 5 6 7 8 9 A B C D E F
  853.  
  854. 0CACC240 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
  855.  
  856. It writes 63 to all the bytes from ACC240-ACC24F. When you start your
  857. game, check player one's stats, and see if any have changed to 99. If
  858. any did, then you've found some codes!
  859.  
  860. Another way of modifying codes is to use the 0D and 0E activator codes.
  861. All you need is the addresses for two different things you want to
  862. change, and you can have your new code. Even better, if you know the
  863. address that contains the values for the buttons you press, you can
  864. easily create joker command codes for nearly anything you want.
  865. This is where the 0E activator code type can be useful. Use it with
  866. 04 and 05 code types, or any code you want to activate that has more
  867. than two lines.
  868.  
  869. To sum it up, modifying existing codes is by far the most effective
  870. method of hacking with the Code Breaker.
  871.  
  872.  
  873. Of course, for those of you with the patience, you could try the classic
  874. "guessing" method. I have to admit though, I haven't found a single code
  875. using this method with Code Breaker DC yet, but don't let that stop you.
  876. When you're dealing with FFFFFF different addresses to choose from,
  877. you'll want to cover as much ground as you can with each code. Forget
  878. using the 00, 01, or 02 code types. You'll need to use the 04 code type.
  879. This method is totally primitive, but you're not restricted to modifying
  880. codes. A sample code:
  881.  
  882. 04-200000
  883. 00500001
  884. FFFFFFFF
  885.  
  886. This code will write FF to every byte from address 0C200000 to 0C200140
  887. (50 * 4, in hex).
  888. Assuming the game will start, you now must look for anything that has
  889. changed. Now is where extreme patience comes in to play. Go through
  890. every menu, get in a fight, go buy something at a town, look to see
  891. if anything is different. For example, when you put in the above
  892. code and try to buy something in a town and everything is much
  893. more expensive than before, then you've probably found the address
  894. that affects the prices of certain items.
  895. There is a catch-22 when using this code finding method. You can write
  896. a value to any number of bytes, up to FFFF * 4. Writing to that many
  897. bytes at once will greatly increase your chances of finding something.
  898. At the same time, there is a greater chance of locking up your game.
  899. Also, if you do find a good effect when using this method, depending
  900. on how many addresses you're writing to it might be nearly impossible
  901. to find what address contains the value you want to change. Basically,
  902. use this method at your own risk!
  903.  
  904. The following info, sent to me by Dan Potter, will probably be useful
  905. to you if you want to guess your own codes:
  906.  
  907. 0C000000 - 0C008000 : in-RAM BIOS space (syscalls, etc); a small
  908. chunk of the BIOS is copied here on startup
  909. and this contains some library hooks like
  910. CD access
  911.  
  912. 0C008000 - 0C010000 : IPL space (bootstrap containing the SEGA
  913. license screen,etc)
  914.  
  915. 0C010000 - 0D000000 : program (and memory heap) grows upward in
  916. this space, stack grows downward from the top
  917.  
  918. If you want to guess your own codes, it would probably be a good idea
  919. to stay out of the area from 0C000000 to 0C010000, unless you know
  920. what you're doing and you want to change something there.
  921. I guess all I can say now is good luck. :)
  922.  
  923. ---------------------------------------------------------------------
  924. 7) Credits and Thank-you's
  925. ---------------------------------------------------------------------
  926.  
  927. -- The first people I must thank (and give credit to) are CodeMaster
  928. and VB|Daryl from www.cmgsccc.com. All of the different code type
  929. information was provided by them or from their site. Also, the method of
  930. how to combine the joker codes for two buttons was originally written by
  931. CodeMaster.
  932.  
  933. -- Dan Potter, for his help with the Dreamcast memory map.
  934.  
  935. -- Kong K. Rool and Macrox from gscentral.com. Their hacking guide to
  936. all the other systems has loads of great information on hacking, and
  937. much of what I know is from reading that guide.
  938.  
  939. -- Joshy9 for testing out many of the codes I've made.
  940.  
  941. -- UL1, for posting the DC joker commands
  942.  
  943. -- Blaze, for making the Xploder, and Pelican for making the Code Breaker
  944.  
  945. -- All the hackers at hacking 101 (www.hacking101.5u.com). This site
  946. is now THE place to go if you want to learn how to hack.
  947.  
  948. ---------------------------------------------------------------------
  949. 8) Legal garbage and contact information
  950. ---------------------------------------------------------------------
  951.  
  952. This guide is missing alot of information that I would like to have in it.
  953. If you know something I don't, or have a better way of doing something
  954. that I've written about in this guide, please let me know.
  955. Also, if you don't understand something, know how I could make this
  956. guide better, or if there's a mistake in the guide, then let me know.
  957.  
  958. e-mail: adnova2001@hotmail.com
  959.  
  960. website: http://www.geocities.com/adnova2001/ADnovaCodes.html
  961.  
  962.  
  963.  
  964.  
  965. This document Copyright © 2001 ADnova. Any product mentioned in this
  966. guide is a trademark of it's respective company. This guide may not be
  967. changed or altered in any way without the express written permission of
  968. it's author (ADnova). The only sites where this guide may appear (besides
  969. my homepage, of course) are:
  970. www.gamefaqs.com
  971. www.hacking101.5u.com
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement