What do you need help on? Cancel X

Jump to:
Would you recommend this Guide? Yes No Hide
Send Skip Hide

Patch Code Hacking Guide by ADnova

Version: 1.11 | Updated: 10/06/2001

ADnova's guide to.......

                    *****Dreamcast Hacking*****
                          Version 1.11
                         October 6, 2001

                        Table of Contents 

1) ............. Introduction 
  a) ........... What's new

2) ............. Review of basic hacking methods and knowledge

3) ............. Dreamcast Code Breaker code types
4) ............. Uses of the different code types
  a) ........... 00-type
  b) ........... 01-type
  c) ........... 02-type
  d) ........... 04-type
  e) ........... 05-type
  f) ........... 0D-type
  g) ........... 0E-type
5) ............. Dreamcast Joker commands
  a) ........... How to use Joker commands in DC codes

6) ............. Hacking with Code Breaker

7) ............. Credits and thank-you's

8) ............. Legal garbage and contact information

1) Introduction

Hacking for Dreamcast isn't quite the same as hacking for Playstation
or Nintendo 64. No GS pro, no game trainers, no hacking utilities to 
use (not yet anyway). I wrote this guide to help people who want to
hack their own codes for the DC. Where I can I'll use examples to 
clarify how to use a code. Any problems or questions about the guide
or DC hacking, let me know. 
One important thing - you must have either a Code Breaker or an 
Xploder to hack your own codes. You can try with the Game shark
CDX, but this guide won't help you with that device. The reason is
because Gameshark CDX codes are encrypted, which makes many of the
hacking methods described below difficult or impossible. 
Also, throughout the guide I will only refer to the Code Breaker, 
however all of the guide can be applied using the Xploder.
I have assumed that the reader has at least some basic knowledge of
hacking for other platforms, but the review is there for those that 
This is the first guide I've ever written, so I guarantee that there
will be something wrong somewhere. 
A) -- What's new --

Version 1.11 - Since this guide is now up at hacking 101, I fixed up 
some mistakes and tried to make certain parts easier to understand.

Version 1.01 - A few minor updates, spelling/grammar fixes, and stuff
like that. 

Version 1.00 - First version of this guide. I plan on adding much more
information about Dreamcast hacking, as soon as I learn it myself.

2) Review of basic hacking methods and knowledge

If you're already an experienced hacker, then go ahead and skip this
section. If not, then read up and hopefully you'll learn something. 
Also - all numbers in this guide are hex numbers, unless stated 

First of all, you need to learn hex. Hex is a counting system that has
16 digits instead of the normal 10. It's really quite simple, but you
should at least be familiar with it before you try to hack anything. 
Why should you learn it? Well, because every code you see is actually
in hex. So, if you want to make your own codes, you need to know what 
the numbers mean.

This table shows you all you need to know for now:

Decimal number 		Hex number (a.k.a. hexadecimal)
	0          ---->            0
	1          ---->            1
	2          ---->            2
	3          ---->            3
	4          ---->            4
	5          ---->            5
 	6          ---->            6
	7          ---->            7
	8          ---->            8
	9          ---->            9
	10         ---->            A
	11         ---->            B
	12         ---->            C
	13         ---->            D
	14         ---->            E
	15         ---->            F
	16         ---->           10

This is just meant to give you an idea of how it works. Save yourself
the headache of trying to convert from one to the other and just use
a program that converts hex to decimal (and vice-versa). If you have 
windows, use windows calculator with scientific view.

--Anatomy of a code: Addresses, values,  prefixes, floats and bytes--

Hold on to your brain - this could get complicated. :)

First, you should know the layout of a basic Dreamcast code:


The prefix: the prefix is the ? in the code. It tells the Code Breaker
what type of code you're using. 

The address: this is the AAAAA in the code. This is what part of the 
RAM that the code will be affecting. 

The float: The float is the F digit in the code. This is part of the 

The value: The value is the VVVVVVVV in the code. The value tells the 
Dreamcast what number to put at the address. 

To better explain what each part does, and what a byte is, look at the
following figure: (This will look familiar if you've ever used a hex 

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C32EFA?   00  00  00  00  FF  00  00  00  00  00  00  00  00  00 00  00

Explanation: the number 0C32EFA? is the address. For now, you can 
ignore the 0C part of the address. All DC RAM addresses have 0C at the front
of the address, because that's where DC's RAM is located (more about that
later). It is not the prefix, and it isn't actually used when inputing a Code
Breaker code. 
The hex numbers from 0 to F above the sets of double zero's are also
part of the address. Each double zero is a 'byte' and that is where the values 
are located. Here, we have the value 'FF' at address '0C32EFA4'. The 4 in the 
address comes from the part where the value is located. Here it's 4, so the 
address is 0C32EFA4 (and 4 replaces the ?). For future reference, this part
of the address will be called the 'float'. Make sense?

One futher note: a byte is made up of two hexadecimal digits. It does NOT
have to be two zero's. I use zero's just to make it clear what is being 
affected or changed.
If this were an actual code, it might be:


That's all you need to know for now, next to know are the different 
prefixes that you can use.

3) Dreamcast Code Breaker code types

What a code does depends on the prefix. The prefix tells the Xploder
what to do with the numbers that follow. That said, that are several
code types (meaning: what prefix the code has), that you should know 
about. Each will be explained in more detail later, this is just a 
general overview. All of the information on code types here is based on 
the information at www.cmgsccc.com

00 code type: This code has '00' as a prefix. The normal layout of this
type of code is:


As you can see, the value (VV) is only one byte. The value must be between
00 and FF, since the first six zero's in the value are ignored.
The float(F) can have any value, from 0-F.

01 code type: The prefix for this code type is '01'. The float for this 
code type must be even, ie: 0,2,4,6,8,A,C,E. The code looks like this:


You'll notice that this code type affects two bytes (VV VV), so the value 
can be from 0000-FFFF. The first four zero's are ignored.  

02 code type: This type of code affects four bytes, and is laid out like 


Here, the float must be 0,4,8, or C. The value here can be from 00000000 

Right now you might be wondering why the float has to be certain values
for the different code types. Let me explain with an example, from
Skies of Arcadia:

Ship parts item modifier (slot one):

0000???? <---item digit goes here.

Max ship parts modifier (slot one):


Note that both codes are 01 code types. This means that they each affect 
two bytes, but there's more to it than that. Lets break down the first

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C56E704   00  00  00  00  ??  ??  00  00  00  00  00  00  00  00  00  00

Since the 01 code type affects two bytes, it also affects two float 
numbers. Let's look at the second code:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C56E706   00  00  00  00  00  00  00  63  00  00  00  00  00  00  00  00

This code affects two bytes, and the float from 6-7. We can easily combine
these two codes, with the 02 code type. 

Max ship parts item modifier (slot one):


The code would look like this:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C56E704   00  00  00  00  ??  ??  00  63  00  00  00  00  00  00  00  00

The 02 code type affects four bytes and four floats. 

Since the 02 type codes write to four bytes (and floats), 
it can only start at every fourth float. Confusing enough? Anyway, back
to the different code types:

04 code type: This code type has basically the same effect as the '50' code
type on the Gameshark Pro for Playstation. It's useful to combine many 
codes into one. I'll save explanation of this code type until later, 
here's the layout and brief explanation for now:

The AAAAAF is the address where the code starts. WWWW is the number of
addresses that the code will affect. ZZZZ is how much the current address
is to be incremented by to get to the next address in the code, mulitplied 
by four. The reason that ZZZZ is multiplied by four is because the value
written to each address in the code, VVVVVVVV, is the same type that
the 02 code type has. Meaning that at each address, four bytes are 
written to. That also means that the float must be 0,4,8, or C.

05 code type: The layout:


This code will copy ZZZZZZZZ number of bytes from the address AAAAAF,
to the address VVVVVVVV. Normal codes only allow you to write to the 
DC RAM, addresses 0C000000-0CFFFFFF. Well with this code you can write
to any area in the DC memory. The float in this code can range from 0-F.
More about this code type later. 

0B code type: Codes with prefixes '0B' seem to be enable codes. I have only 
seen them used on two games, Shenmue and F355 Challenge. That's pretty much
all I know about them. 

0D code type: An activator code, similar to the D0 type code used on
Nintendo 64 and Playstation. The layout for this code type is:


This code will check a certain condition, indicated by the value of Z. 
The possible Z values are:

0 = If equal to 
1 = If different to
2 = If less than
3 = If greater than

The code reads the condition type, then goes to address AAAAAF and checks
the value(VVVV) at that address. If the condition is true, then it 
'activates' the next two line code. If not, then it doesn't activate the
next two lines. To clarify, you would actually enter four lines under 
one code description, something like this:


In this example, Z=0, so the condition is If equal to. The value at address 
123456 is checked, and if it is equal to 1, then the next two line code is
activated. As you can see, when the next two line code is activated, the 
value at address 123456 becomes A. 

0E code type: This code type is also an activator, but is used to activate
more than 2 lines of codes. Layout:


All of the terms have the same definitions as in the 0D code type, but
there is now one new term, WW. The value in WW tells the Code Breaker how
many lines of codes to activate if the condition is true. The value
in WW can be odd or even. This code type will be explained in more detail 
later on. 

0F code type:

The following information is taken straight from Code Master's DC code
types FAQ (although it's slightly modified to be consistent):

"Format: 0F-AAAAAF

AAAAAF = Address
VVVV = 2-byte Value 

Functionality: This is one of the least common code types. 
It simply writes the given 2 byte value, VVVV, to the given address,
AAAAAF BEFORE anything is run for the game. Used for games like PSO that 
require Enable Codes and such. (The float MUST be even.)" 

So, as you can see this code will write to the specified location before
the game even starts to run. And also, the float must be 0,2,4,8,A,C, or
E, just like the 01 code type. That is all I'm going to say about this
code type in this version of the guide.

4) Uses of the different code types

The first three code types we deal with are quite simple (00, 01, and 
02 types). What prefix to use depends on either the size of the value, 
or how many bytes you want to change. 

A) -- 00 code type --

Use this code type when you only want to change the value in one byte.

Example: Say you want a code to give you 'max health' in a game. If the 
max health you can get in the game is 270F (9999 decimal), that means that
the code you use should affect two bytes, but what happens if you used the
00 code type? Look at the following example:

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C320BA4    00  00  00  00  ??  ??  00  00  00  00  00  00  00  00  00  00

So, for this game, the addresses that control health are 320BA4 and 
320BA5. That covers two bytes and floats, and 00 affects only 1. If you
entered the code:


Then it would only affect the byte at float 5, leaving the byte at the
fourth float unchanged. 

The point of all of this is that you have to know how many bytes you need
to affect with the code, which you'll know by how large or small the 
number is in the game (usually).

What the 00 code type is good for is pinpointing very specific addresses. 
The first six zero's in the value are ignored, it doesn't write these
zero's to any address.

Example: Skies of Arcadia, Vyse name change modifier. 

In this code, each character in the name takes up one byte. Since you
want to make each character different, you must use the 00 code type 
(well, not really, but this is just an example).
The address and values would look like this:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C56DD70   ??  ??  ??  ??  ??  ??  ??  ??  ??  00  00  00  00  00  00  00

The question marks are where you would put the values for whatever 
character you wanted that part of the name to be. 
You should note that two 02 type codes could be used here, much more 
effective than eight 00 type codes. Generally, just use the 00 code type
if you're sure that you only need or want to change the value of one byte.

B) -- 01 code type --

The 01 prefix is used when you want to change two bytes with the same
code. When the value you want to change ranges from 0000-FFFF, use this
code type. 

Example: Grandia 2, Max MP for Mareg:


In the usual form, the code looks like:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0CE2E59C   00  00  00  00  00  00  00  00  00  00  00  00  03  E7  00  00

Note that the other bytes aren't necessarily zero's, I'm just doing
that to show what is being affected. Now, 3E7 = 999 in decimal, and that
is the maximum value that MP can be in this game. The game itself will
read both of these bytes to get the value for MP, so that is why the 01
code type should be used to change both of the bytes.

C) -- 02 code type -- 

This code type is used to write to four bytes at once. It can be used when 
the value you're changing is large, like this:

Example: Grandia 2, Max experience Mareg. 


Which looks like:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0CE2E590   05  F5  E0  FF  00  00  00  00  00  00  00  00  00  00  00  00

05F5E0FF = 99,999,999 in decimal, which is the maximum value that the 
game uses for experience. 

The 02 code type is not just used for large numbers. Remember, it affects
four bytes, so consider the following example:

These codes are for the game Fur Fighters:

Infinite pistol ammo, VLF facility level:


Infinite shotgun ammo, VLF facility level:


Knowing what you already know, you should easily see how we could
use the 02 code type to combine these codes.
Here is the combined code:


Which looks like this:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0CE026D4   00  00  00  00  27  0F  27  0F  00  00  00  00  00  00  00  00

Understand? The first code wrote 270F at float 4, while the second code 
wrote 270F at float 6. Why not just write 270F at both with one code?

That's it for the basic code types. The rest of the code types have 
special features that you'll definitely want to use. 

D) -- 04 code type --

If you've hacked codes for Playstation, it's almost certain that you've 
used the '50' code type. Well, on DC the '04' code type has pretty much
the same effect, but of course there are some differences. This code is 
more complex than the ones we've already covered, but I'll try to explain
how it works as best I can.

For example, say you had four different codes, and they were:

02-7798B0      02-7798B4    02-7798B8     02-7798BC
01FF01FF       01FF01FF     01FF01FF      01FF01FF

These codes would be:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0C7798B0   01  FF  01  FF  01  FF  01  FF  01  FF  01  FF  01  FF  01  FF

You should notice that the floats for these codes are 0,4,8,C. We know the
layout of the 04 code type, so how do we use it? It's simple actually.


First: obviously, the prefix used is 04. Next, what is the start address?
In this example it is 7798B0, so put that number in AAAAAF. Then figure 
out how many codes you need to combine. There are four codes in this 
example, so WWWW = 0004. The ZZZZ equals how much you want to increment 
the address by for every code, multiplied by four. Here, each addresses 
is 4 more than the previous one, so ZZZZ = 0001. Why is it multiplied by
four? That's explained by the value, VVVVVVVV. The code will write to 
four bytes at each address (just like the 02 code type), which means that
the next bytes written to must be a separate four bytes.
Probably the most important thing to remember is that the 04 code type is
the same as using WWWW number of 02 type codes. 
The number of addresses that this code can affect can be up to FFFF. 

Example: If you put in the code:


Then the code would write FF at every byte of every address from 000000 to
FFFFFF (which is a very bad idea for a code, but it's just an example,

What about different values of ZZZZ? Well, usually ZZZZ will be equal to 
0001, but there may be times when you want to jump to an address that
isn't right next to the last one. For example, if some codes you wanted
to combine had a difference of 120 between each one, then ZZZZ would equal 
30. Don't forget, ZZZZ is multiplied by four.
If you remember from the Playstation GS pro, you could add one to the
value for every code in the string. Unfortunately, you can't do that
on Dreamcast.

E) -- 05 code type --

With this code you can copy the values in a certain number of bytes, and 
put them at a different address. 
The catch here is that the address you can copy to doesn't have to 
be in RAM. Just to remind you, the layout is:


The copy-from address, AAAAAF, is an address in the normal RAM. 
The copy-to address BBBBBBBB can be anywhere. Here is a memory map of
the DC that you can use, compiled by several people in the DC hobbyist 
community, with special thanks to Dan Potter:

00000000 - 03FFFFFF	      00000000 - 001FFFFF Boot ROM (2MB)
                              00200000 - 003FFFFF Flash ROM (256K)
04000000 - 07FFFFFF	  Video RAM (8MB)
08000000 - 0BFFFFFF	  ?
0C000000 - 0CFFFFFF       System RAM (16MB)
10000000 - 13FFFFFF       PowerVR:
                              10000000 - 107fffff Tile accelerator
                              10800000 - 11ffffff Texture mem (wronly)
14000000 - 17FFFFFF       G2/Expansion (modem) port, 1-4 bytes/access
1C000000 - 1FFFFFFF       Internal I/O registers
1F000000 - 1FF0????       Memory mapped registers
A05F8000                  PowerVR registers
A0700000                  SPU Registers
A0800000 - A09FFFFF	  Sound RAM (2MB)
A1000000                  Parallel port; Mappable for PCI bus space 
                                  (used with the broadband adapter)
A2000000                  CD/GD-ROM port
A4000000                  Non-cached mirror of texture RAM
A5000000 - A57FFFFF       Non-cached mirror of VRAM
FF000000 - FFF0????	  Mirror of memory mapped registers

If you're experienced enough, this code type can let you change nearly
any area of DC memory. The normal area of DC RAM, 0C000000 - 0CFFFFFF, 
can be categorized further, but I'll save that information for the 
"Hacking with Code Breaker" section.

Now, obviously if you want to copy from a certain address you have to
know what it is you're copying. So you can do one of two things. 
One, you can write whatever value you want to a specific location in 
the normal RAM area, then copy that value to another location in DC 
memory (not necessarily RAM).
Or two, you can copy an unchanged value from RAM to another memory area. 

If you can just use the other code types, why would you use this code
type to change values in RAM? Well, because the values in the
address you copy to change dynamically. 

Example: In an RPG, a certain characters stats might be at the address
0C4599A2. All the stats for that character are contained within, say, 
32 bytes. Now, another characters stats are located at address 0C4599DD.
If you used the code:


Then those 32 bytes would be copied from one characters stats to the 
others. This is useful because nothing is being altered or written to at
the copy from address (4599A2). You should also be aware that this code
doesn't just copy the values once, it is a continuos copy. So, when the
byte values at the copy from address change, so do the values at the 
copy to address. 
Note: the Code Breaker reads the number of bytes to copy as a decimal
number, so beware.

F) -- 0D code type --

These last two code types, 0D and 0E, are activator codes. You may be
familiar with that term if you've used those type of codes on N64 and
Playstation. Instead of having a different prefix for each condition,
on the DC the condition is just one digit in the code. 

Example: The 0D type activator is useful if you want to have codes like:
get 99 coins when you pick up one, or win one fight instead of two to 
win the match, etc..

To use the 'get 99 coins' example above, you first have to know the address
that contains the values for number of coins. Let's say for example that
the address was 2290BC. Normally when you start a level you'd have no coins.
If you remember the layout, the AAAAAF here would be 2290BC, the address
where the coins are. The condition type Z, would be 0, which means If 
equal to. The VVVV would be 1, because that's the number we'd need to 
activate the code that follows. Here's what the code would look like:


So, the game checks the value at address 2290BC, and when it is equal 
to 1, the next two line code is activated. In this example, when you 
pick up 1 coin, the next code becomes active, and writes 63 (which is
99 in decimal) at address 2290BC.

G) -- 0E code type --

The 0E code type is similar to the 0D code type, with the addition of
one important term - WW. This WW controls how many lines you want to 
activate if the condition is true. 

Example: Good for sports games, if you want to start the game with a
lead on the other team. You need to know the addresses that control
the score of both teams (usually away and home). If the home team score
address is 1C0920 and the away team score address is 1C0924, then you 
have all you need to make this type of code. The code might look like:


The code will check the value at address 1C0290, which is the home team
score address. The condition here is If equal to, so if the value at 
that address = VVVV (0000 in this example), then activate the next WW
amount of lines. WW equals 04 in this example. At the beginning of the 
game, the home team score is 0, so the activator takes effect right away.
It then writes the value 64 (99 decimal) to the home score address , and
gives the away team a 0. 

This code type is also used for Dreamcast Joker command codes, which
will be discussed in the next section. 

5) Dreamcast Joker commands

Joker commands are used with activator codes, so that you can activate
the code just by pressing a button. They are very useful codes, and can
be used with both 0D and 0E type activators. The list below contains
the joker command codes for the different buttons. This list was
compiled by UL1 on the X-hub message board:

Button              Joker code

  A                    FFFB
  B                    FFFD
  X                    FBFF
  Y                    FDFF
 START                 FFF7
 D-UP                  FFEF
 D-DOWN                FFDF
 D-LEFT                FFBF
 D-RIGHT               FF7F 

The following instructions are based on what CodeMaster wrote in his
joker code FAQ:
To combine two joker commands (i.e. press A and Y to activate a code), you 
have to add the joker codes for the buttons together. For example, the 
joker code for A and B would be:



However, the joker code is only four digits, so you add the 1 at the
beginning to the last digit, to get the combined joker code. So the joker 
command for pressing both A + B buttons is FFF9.

A) How to use joker commands in DC codes

To illustrate how these work, I'll use some codes for World series 
baseball 2K1 as examples.

The first and most important thing you must have in order to use joker
commands is the address that tells the DC what buttons you are pressing.
To be honest, there is almost no possiblity that you'll be able to find out 
this address with just the Code Breaker or Xploder. If the address for
this function is already known, however, then you're ready to use joker

 -- Using the 0D activator with joker commands --

From world series baseball 2K1:


Code effect: Press A + D-pad up to make away team score = 0

In this code, the address that the condition is checked from is the
address that records what buttons are being pressed, 25D5A8. The 
condition is 0000, so it's an If equal to type of condition. The
FFEB is the value that the Code Breaker checks for at the address. FFEB is 
a joker command for A + D-pad up. So, when you press A + D-pad up at
the same time, the condition returns true and the following two lines
are activated. The address 99E188 is the away team score address, that 
contains the value for the current away team score. When you press the
joker command buttons that activate the code, the Code Breaker will write
0000 at the address 99E188. Note that there's only four zero's being 
written because the code type being activated is an 01 type. 

 -- Using the 0E activator with joker commands --

Also for World series baseball 2K1:


Code effect: Press Y + D-pad down to put away team in the lead.

According to the code layout:


WW is the number of lines the code will activate. VVVV contains the
four digit joker command. 0Z is the condition type, and AAAAAF is
the address that the Code Breaker will check the condition from.

In this example, the condition is 00, If equal to. The number of lines
to activate is 04, and FD5F is the joker command for Y + D-pad down. 
The address you put at AAAAAF is the address that records the values for
whatever buttons you press. For World Series Baseball 2K1, that address
is 25D5A8. Note that this address is different for every game. 
We know that 99E188 is the away team score modifier, and we now know that
99E18C is the home team score modifier. When Y + D-pad up are pressed, the
value at address 25D5A8 becomes FD5F, and the next WW (04 here) number of 
lines are activated. The next two codes set the away team score to 32 
(in hex, which is 50 in decimal) and the home team score to 0. 

On a side note, you should realize that the two 01 type codes in this 
example could be combined into one 02 type code. You would just need to
change WW from 04 to 02. It would look something like this:


6) Hacking with Code Breaker

When you're trying to hack with the Code Breaker, you have only two methods,
guessing and modifying. If you've gotten used to using GS pro's, then
trying to poke around to find codes with the Code Breaker will remind you
of the days of the Game Genie. Well, okay, it's not quite that bad. 

Modifying is definitely the best way to find your own codes for DC. 
For most games, a certain area of RAM will contain almost all the memory
that controls important things, such as lives, power, or score. So you can
just change the address on existing codes to find new ones. And for the 
most part, it will work fine. Just remember what code type you're using, 
and make sure the float can be used with that type. 

The 04 code type can give you the ability to change as many bytes as you
want with one code, so it's very useful for code searching. Well, sort 
of. For example, if there was one code available for a game, and it 
was 99 lives, player one. The code might be:


You would know that the byte at address ACC240 controls the number of 
lives for player one. Since most games group together the values that
affect similar things in a game, for instance player one stats, you 
could do a 04 search. How would you do this? You could enter:


What would this actually do? To put it in a familiar form:

           0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F

0CACC240  63  63  63  63  63  63  63  63  63  63  63  63  63  63  63  63

It writes 63 to all the bytes from ACC240-ACC24F. When you start your 
game, check player one's stats, and see if any have changed to 99. If
any did, then you've found some codes!

Another way of modifying codes is to use the 0D and 0E activator codes.
All you need is the addresses for two different things you want to 
change, and you can have your new code. Even better, if you know the
address that contains the values for the buttons you press, you can 
easily create joker command codes for nearly anything you want. 
This is where the 0E activator code type can be useful. Use it with 
04 and 05 code types, or any code you want to activate that has more 
than two lines. 

To sum it up, modifying existing codes is by far the most effective 
method of hacking with the Code Breaker. 

Of course, for those of you with the patience, you could try the classic
"guessing" method. I have to admit though, I haven't found a single code
using this method with Code Breaker DC yet, but don't let that stop you. 
When you're dealing with FFFFFF different addresses to choose from, 
you'll want to cover as much ground as you can with each code. Forget 
using the 00, 01, or 02 code types. You'll need to use the 04 code type. 
This method is totally primitive, but you're not restricted to modifying
codes. A sample code:


This code will write FF to every byte from address 0C200000 to 0C200140
(50 * 4, in hex). 
Assuming the game will start, you now must look for anything that has
changed. Now is where extreme patience comes in to play. Go through 
every menu, get in a fight, go buy something at a town, look to see
if anything is different. For example, when you put in the above
code and try to buy something in a town and everything is much
more expensive than before, then you've probably found the address
that affects the prices of certain items. 
There is a catch-22 when using this code finding method. You can write 
a value to any number of bytes, up to FFFF * 4. Writing to that many 
bytes at once will greatly increase your chances of finding something.
At the same time, there is a greater chance of locking up your game. 
Also, if you do find a good effect when using this method, depending
on how many addresses you're writing to it might be nearly impossible
to find what address contains the value you want to change. Basically,
use this method at your own risk!

The following info, sent to me by Dan Potter, will probably be useful
to you if you want to guess your own codes:

0C000000 - 0C008000 : in-RAM BIOS space (syscalls, etc); a small 
                          chunk of the BIOS is copied here on startup 
                          and this contains some library hooks like
			  CD access

0C008000 - 0C010000 : IPL space (bootstrap containing the SEGA 
                          license screen,etc)

0C010000 - 0D000000 : program (and memory heap) grows upward in 
                          this space, stack grows downward from the top

If you want to guess your own codes, it would probably be a good idea
to stay out of the area from 0C000000 to 0C010000, unless you know
what you're doing and you want to change something there.
I guess all I can say now is good luck. :)

7) Credits and Thank-you's

-- The first people I must thank (and give credit to) are CodeMaster
   and VB|Daryl from www.cmgsccc.com. All of the different code type 
   information was provided by them or from their site. Also, the method of
   how to combine the joker codes for two buttons was originally written by

-- Dan Potter, for his help with the Dreamcast memory map.

-- Kong K. Rool and Macrox from gscentral.com. Their hacking guide to 
   all the other systems has loads of great information on hacking, and 
   much of what I know is from reading that guide. 

-- Joshy9 for testing out many of the codes I've made.

-- UL1, for posting the DC joker commands

-- Blaze, for making the Xploder, and Pelican for making the Code Breaker

-- All the hackers at hacking 101 (www.hacking101.5u.com). This site
   is now THE place to go if you want to learn how to hack.

8) Legal garbage and contact information

This guide is missing alot of information that I would like to have in it. 
If you know something I don't, or have a better way of doing something 
that I've written about in this guide, please let me know. 
Also, if you don't understand something, know how I could make this 
guide better, or if there's a mistake in the guide, then let me know. 

e-mail: adnova2001@hotmail.com

website: http://www.geocities.com/adnova2001/ADnovaCodes.html

This document Copyright © 2001 ADnova. Any product mentioned in this 
guide is a trademark of it's respective company. This guide may not be
changed or altered in any way without the express written permission of
it's author (ADnova). The only sites where this guide may appear (besides
my homepage, of course) are:

View in: