Mike Tyson's
           _____                  _            ____        _   _ _
          |  __ \                | |          / __ \      | | | | |
          | |__) |   _ _ __   ___| |__ ______| |  | |_   _| |_| | |
          |  ___/ | | | '_ \ / __| '_ \______| |  | | | | | __| | |
          | |   | |_| | | | | (__| | | |     | |__| | |_| | |_|_|_|
          |_|    \__,_|_| |_|\___|_| |_|      \____/ \__,_|\__(_|_)
           ___                              _    ___      _    _
          | _ \__ _ _______ __ _____ _ _ __| |  / __|_  _(_)__| |___
          |  _/ _` (_-<_-< V  V / _ \ '_/ _` | | (_ | || | / _` / -_)
          |_| \__,_/__/__/\_/\_/\___/_| \__,_|  \___|\_,_|_\__,_\___|

                         (Version 1.02, 16 October 2013)

                      by Doug Babcock (doug.babcock@gmail.com)


LEGAL INFORMATION: I have put a lot of work into this guide. If you use any
information from this guide for anything other than personal use, or if you
quote it, please give me credit. If you wish to put a copy of this guide on
your web site or elsewhere, please e-mail me and I will give you permission.
Please do not distribute this guide except in its entirety, and please do not
add anything to this guide. This guide is copyright 2005--2013 Douglas Babcock.

--- [0] TABLE OF CONTENTS -----------------------------------------------------

      [1] Introduction - My introduction. Read this first in order to get the
          most out of this guide.
      [2] The Password Tables - Three tables of how the passwords work.
      [3] The Basics Of Reading The Table - A brief description of how to read
          the table.
      [4] About Checksum Bits - A description of how the checksum bits work
          and their purpose.
      [5] Some Examples - A derivation of two example passwords using the
          table. You should be sure to read this section.
      [6] Summary - A quick, explicit description of how to make a password.
          This section is intended for reference, not for learning how to
          make passwords. Read sections 3-5 before this one.
      [7] Some Noteworthy Passwords - A few passwords I find interesting or
          quirky; also, some special passwords you cannot generate with
          information from any other section in this guide.
      [8] Future Versions? - Goals for the future.
      [9] Thanks/Acknowledgements - What it says.

--- [1] INTRODUCTION ----------------------------------------------------------

This guide will tell you, in a fairly large amount of detail, how the
passwords work in Mike Tyson's Punch-Out (or the later Punch-Out cartridges
with Mr. Dream). Using this guide, you should be able to create a password
with any record you wish for any place in the game the system allows,
including passwords that are impossible to get while actually playing the game.

As far as I know, there are very few FAQs of this type in existence, but
"cracking" the passwords of video games is of great interest to me. I have
written one other password guide to date, for Metal Gear for the NES. I may
create guides like this for other games at some point in the future; for
example, I have enough data to write one for Castlevania II: Simon's Quest,
Gauntlet, or Legacy of the Wizard.

If you find this guide at all useful, or even just cool or interesting,
please e-mail me at babcockdc@yahoo.com; I would love to hear from you.

One last note: the mechanics of actually creating a password by hand can be
tedious and error-prone. I have created a tool for generating passwords more
easily. It is available on the World Wide Web at the following address:


     http://www.dougbabcock.com/mtpo.php


As far as I can tell, this password generator works 100% of the time
(although I obviously can't test every single password to make sure).

Thanks muchly for looking at my guide, and I hope that you will find it fun or
interesting in some way.

--- [2] THE PASSWORD TABLES ---------------------------------------------------

WHICH TABLE DO I USE?

Title Held:  Losses:  Use:
----------------------------
"Minor"        0     TABLE I
"Minor"        1     TABLE II
"Minor"        2     TABLE III
"Major"        0     TABLE II
"Major"        1     TABLE III
"Major"        2     TABLE I
"World"        0     TABLE III
"World"        1     TABLE I
"World"        2     TABLE II

TABLE I. (Base code: 635 791 5429)

+-------------+-------------+-------------+
| Checksum +16|     Wins +80|     Wins +40|
|        KO +2|        KO +1|  Checksum +8|
|  Checksum +4|        KO +8|        KO +4|
|             |             |             |
|     Wins +20|     Wins +10|  Checksum +2|
|  Checksum +1|       KO +80|       KO +40|
|      Wins +2|      Wins +1|XXXXXXXXXXXXX|
|             |             |             |
|XXXXXXXXXXXXX|      Wins +8|      Wins +4|
|       KO +20|       KO +10|    Losses +2|
|    Losses +1|     Title +2|     Title +1|
| Checksum +32|XXXXXXXXXXXXX|XXXXXXXXXXXXX|
+-------------+-------------+-------------+

TABLE II. (Base code: 635 793 1420)

+-------------+-------------+-------------+
|     Wins +80|     Wins +40|        KO +2|
|        KO +1|  Checksum +8|  Checksum +4|
|        KO +8|        KO +4|     Wins +20|
|             |             |             |
|     Wins +10|  Checksum +2|  Checksum +1|
|       KO +80|       KO +40|      Wins +2|
|      Wins +1|XXXXXXXXXXXXX|XXXXXXXXXXXXX|
|             |             |             |
|      Wins +8|      Wins +4|       KO +20|
|       KO +10|    Losses +2|    Losses +1|
|     Title +2|     Title +1| Checksum +32|
| Checksum +16|XXXXXXXXXXXXX|XXXXXXXXXXXXX|
+-------------+-------------+-------------+

TABLE III. (Base code: 635 790 7428)

+-------------+-------------+-------------+
| Checksum +32| Checksum +16|     Wins +80|
|     Wins +40|        KO +2|        KO +1|
|  Checksum +8|  Checksum +4|        KO +8|
|             |             |             |
|        KO +4|     Wins +20|     Wins +10|
|  Checksum +2|  Checksum +1|       KO +80|
|       KO +40|      Wins +2|      Wins +1|
|             |             |             |
|XXXXXXXXXXXXX|XXXXXXXXXXXXX|      Wins +8|
|      Wins +4|       KO +20|       KO +10|
|    Losses +2|    Losses +1|     Title +2|
|     Title +1|XXXXXXXXXXXXX|XXXXXXXXXXXXX|
+-------------+-------------+-------------+



BITS-TO-NUMBER KEY
------------------
000: +0  001: +1  010: +2  011: +3
100: +4  101: +5  110: +6  111: +7



TITLE NUMBER-TO-NAME KEY

Title number     Title name
---------------------------
          0       "Minor"
          1       "Major"
          2       "World"


--- [3] THE BASICS OF READING THE TABLE ---------------------------------------

Passwords in Mike Tyson's Punch-Out are ten digits long, with the digits
divided into three groups. The first two groups have three digits each, and
the final group has four digits. You'll notice that the rows in the tables
above are arranged the same way. Each row in one of the tables above
corresponds to one digit of a password.

Each digit of the password contains three pieces of information that are either
true/on ("1") or false/off ("0"). I will call one of these pieces of
information a "bit." Thus, each digit is composed of three bits. In case the
meaning of a specific item of the table being "on" or "off" is unclear, I have
described them completely in Section 6.

All the bits are in the form of some increment, like "Wins +8". This increments
stack; thus, if a password has "Wins +8" and "Wins +4" set to "on", but all of
the other bits for wins are set to "off", then the player will have 12 wins in
his/her record for that password.

The bits-to-number key at the bottom of the tables tells you which combination
of bits convert to which number. To use the key, pick a row in the table--for
example, let's take the first row of Table II (reproduced here):

+-------------+-------------+-------------+
|     Wins +80|     Wins +40|        KO +2|
+-------------+-------------+-------------+

Let's assume we're trying to create a password with the "Wins +80" and
"KO +2" bits set to "on", and the "Wins +40" bit set to off. Then, from left
to right, the bit combination for this digit would be on-off-on, which can
be written shorthand as 101. According to the bits-to-number key, the bits
101 correspond to +5.

So what does this mean? It means that for this digit of the password, we need
to add +5 to the digit from the "base code." (The base code is slightly
different depending on which table you're using.) Under Table II, the "base"
code is listed as 635 793 1420. Thus, the first digit in our hypothetical
password would be 6 + 5 = 11. But 11 isn't an option for the first
digit of the password! We resolve this by doing the arithmetic "modulo 10";
that is, we use only the rightmost digit. Thus, the first digit of our
hypothetical password would be "1".

Don't worry if some of the above didn't make too much sense; the examples
in Section 5 provide some more "hands-on" descriptions to clarify things.

--- [4] ABOUT CHECKSUM BITS ---------------------------------------------------

Like many games, Mike Tyson's Punch-Out employs what is called a "checksum"
in its passwords. Checksums are often used in electronics and computing when
copying data, to ensure that the data is being copied correctly.

The checksum does not actually hold any information; rather, when
a password is issued, the checksum is completely determined by the rest of
the password. When a password is entered, if the checksum does not match what
it is supposed to be, then the password is denied. (This means that passwords
that are copied down incorrectly are very unlikely to work; also, just randomly
entering a password is very unlikely to work.)

When creating a password, to determine what the checksum should be, follow
this procedure:

1. Determine the number of wins, losses, and KO's the password should have.
2. Add all of the digits of all of these numbers up together.
3. Subtract the sum you got in step 2 from 63.

An example may be helpful here. Let's say we're trying to make a password
where Little Mac's record is 15-1, and he has 13 KOs. Then, in step 2, we'd
add all the digits of 15, 1, and 13 together; that is, we
add 1 + 5 + 1 + 1 + 3 = 11. Then, in step 3, we get 63 - 11 = 52. So the final
checksum value in this instance is 52.

--- [5] SOME EXAMPLES ---------------------------------------------------------

Let's construct a password that might occur at the beginning of the game:
Little Mac has just defeated all the opponents in the minor circuit, without
losing, and he knocked them all out. In other words, Mac is 3-0 3KO, and
he holds the "Minor" circuit title.

The first thing to do is to check "WHICH TABLE DO I USE?" at the top of
Section 2. According to this table, for a password with the "Minor" title and
0 losses, we use TABLE I.

Our next job is to determine which bits should be "on" and which should be
"off". Since Mac has no losses, the losses bits are easy; all of them should
be "off." Since Mac has 3 wins, we need to set the "Wins +2" and "Wins +1"
bit. Since Mac has 3 KOs, we need to set the "KO +2" and "KO +1" bits.
(For more about selecting the right bits to sum to a given number, see
Section 6.)

Next, we need to determine what the checksum is. According to the procedure
from Section 4, we need to add the digits of Mac's wins, losses, and KOs all
together; this gives 3 + 0 + 3 = 6. Then, we need to subtract the result
from 63. This gives 63 - 6 = 57. Thus, the value of the checksum is 57.

In order to get the value 57, we need to set to "on" the following bits:
"Checksum +32", "Checksum +16", "Checksum +8", and "Checksum +1." (Notice
32 + 16 + 8 + 1 = 57.)

Therefore, the bits we want "on" are "Wins +2", "Wins +1", "KO +2", "KO +1",
"Checksum +32", "Checksum +16", "Checksum +8", and "Checksum +1." All the
rest should be "off."

Let's take a look at the first row of our Table:

+-------------+-------------+-------------+
| Checksum +16|     Wins +80|     Wins +40|
+-------------+-------------+-------------+

Since we want the "Checksum +16" bit on, but not "Wins +80" or "Wins +40",
the bits for this row are on-off-off, or 100.

Going through the rest of the table, we get the following sets of bits
row by row (you can check these if you like):

100, 111, 000,

000, 100, 110

000, 000, 000, 100

(Note that the cells marked "XXXXXXXXXXXXX" are always "off.")

Now, we need to use the bits-to-number key from the bottom of Section 2.
This tells us that 100 means +4; 111 means +7; and so on down. So, now we
have:

+4, +7, +0

+0, +4, +6

+0, +0, +0, +4

For the final step, we need to add these increments to the "base code", which
is listed at the top of the table. (For TABLE I, it's 635 791 5429.) When
adding, if the result is greater than 10, we keep just the rightmost digit.
Thus, we get:

6 + 4 = 10 => 0
3 + 7 = 10 => 0
5 + 0 = 5

7 + 0 = 7
9 + 4 = 13 => 3
1 + 6 = 7

5 + 0 = 5
4 + 0 = 4
2 + 0 = 2
9 + 4 = 13 => 3

So the final password is 005 737 5423. Try this on your game and see if it
works!

---

Now let's make a password that's a little more complex: Say Little Mac's
record is 65-2 51KO, and he has the World Circuit title.

The first thing to do is, again, check "WHICH TABLE DO I USE?". For
a "World" title holder with 2 losses, the appropriate table is TABLE II.

Now we need to figure out which bits should be set to "on". This is a
little tricker than the first example, because the numbers are a lot bigger.
Our choices of increments are +80, +40, +20, +10, +8, +4, +2, and +1. To
get the right ones, just subtract off the highest increment that is
less than or equal to your number, and keep repeating this until you have
nothing left. For example, for the 65 wins, we get:

65 - 40 = 25
25 - 20 = 5
5 - 4 = 1
1 - 1 = 0

We want to set all the numbers that we subtracted to get to zero to "on".
So, in this case, we should set "Wins +40", "Wins +20", "Wins +4", and
"Wins +1" to "on". All the other wins bits should be "off." (Note that,
indeed, 40 + 20 + 4 + 1 = 65.)

For the 51 KOs, we can do the same process:

51 - 40 = 11
11 - 10 = 1
1 - 1 = 0

So we want to set "KO +40", "KO +10", and "KO +1" to "on" and the rest of
the KO bits to "off."

For the checksum (see Section 4), we have 6 + 5 + 2 + 5 + 1 = 19, and
63 - 19 = 44. Now, the checksum bits are a little different; here we have
+32, +16, +8, +4, +2, and +1. Using this different increments, we can
do the same process:

44 - 32 = 12
12 - 8 = 4
4 - 4 = 0

So we want to set "Checksum +32", "Checksum +8", and "Checksum +4" to "on".

We're not quite done yet! Since we have losses this time, we also need
to set "Losses +2" to "on". Additionally, we have to set some "Title" bits.
Take a look at the "TITLE NUMBER-TO-NAME KEY" at the bottom of Section 2.
Since we wanted Mac to be the champion of the "World" circuit, we want
his Title number to be 2. Thus, we need to set the "Title +2" bit to "on".

So, the bits we want set to "on" are: "Wins +40", "Wins +20", "Wins +4",
"Wins +1", "KO +40", "KO +10", "KO +1", "Checksum +32", "Checksum +8",
"Checksum +4", "Losses +2", and "Title +2". Whew!

Reading down the table (TABLE II this time!), we get the following sets
of bits:

010, 111, 001

000, 010, 100

010, 110, 101, 000

Now we convert these to increments using the BITS-TO-NUMBER KEY:

+2, +7, +1

+0, +2, +4

+2, +6, +5, +0

Finally, we add these increments to the "base code". The "base code" for
TABLE II is slightly different: it's 635 793 1420. Remember that we need
just the rightmost digit of our sum:

6 + 2 = 8
3 + 7 = 10 => 0
5 + 1 = 6

7 + 0 = 7
9 + 2 = 11 => 1
3 + 4 = 7

1 + 2 = 3
4 + 6 = 10 => 0
2 + 5 = 7
0 + 0 = 0

So, our final password is 806 717 3070. Try this one out!

--- [6] SUMMARY ---------------------------------------------------------------

Here's how to make a password:

1. Decide what you want your wins, losses, and KOs to be, and whether you
   want to be champion of the "Minor" circuit, the "Major" circuit, or the
   "World" circuit.
2. Look in "WHICH TABLE DO I USE?" at the top of Section 2. Use the table that
   it says there for the rest of this process.
3. Deconstruct your wins and KOs into increments that exist in the table.
   The increments are as follows: +80, +40, +20, +10, +8, +4, +2, +1. If your
   number of wins or KOs can be represented more than one way using these
   increments, always use the one that uses the biggest increments. For
   example, represent 51 as 40 + 10 + 1, not 40 + 8 + 2 + 1. If you do it
   the latter way, your password may not work.
4. Discover your checksum as described in Section 4. Decompose the checksum
   into increments. The increments are as follows: +32, +16, +8, +4, +2, +1.
   (There's only one way to represent a given checksum using these increments.)
5. Make a copy of the table. Mark all cells that had increments you picked
   in steps 3 or 4.
6. If your desired record has 1 loss, mark the "Losses +1" cell. If your
   desired record has 2 losses, mark the "Losses +2" cell. If your desired
   record has 0 losses, do nothing.
7. If your desired title is "World", mark the "Title +2" cell. If your
   desired title is "Major", mark the "Title +1" cell. If your desired title
   is "Minor", do nothing.
8. To the right of each row, write three bits. The bit in each position should
   be "1" if the corresponding cell is marked, and "0" if it is not.
9. To the right of each set of bits, write the increment corresponding to that
   bit set. (Use the BITS-TO-NUMBER KEY from the bottom of Section 2.)
10.Take these ten increments, and add one each to the "base code" for the table
   you are using. Do the addition "Modulo 10"; that is, if a sum is more
   than 10, use only the rightmost digit. The result from this step is your
   desired password. 

---

Here's how to tell whether the game will reject a password.

In order for a password to work, all the following conditions must be met:
-You must use the correct table and base code.
-The wins must be at least 3.
-The wins must be at most 99.
-The losses must be at most 2.
-The KOs must be less than or equal to the wins.
-The "Title +2" and "Title +1" bits cannot both be set.
-The checksum must be the right value.

Provided the above are ALL true, the method for generating passwords given in
this guide should ALWAYS work. However, truth be told, it is NOT true that
all working passwords can be generated using the method of this guide. Some
other passwords work as well. Some of these are listed in the next section.

--- [7] SOME NOTEWORTHY PASSWORDS ---------------------------------------------

First, some useful passwords that you could have generated using this guide:

"Minor" title holder, 3-0 3KO:   005 737 5423
"Major" title holder, 7-0 7KO:   777 807 3454
"World" title holder, 13-0 13KO: 267 853 7538
"World" title holder, 99-0 99KO: 940 861 8538
"World" title holder, 99-0 0KO:  131 811 8438

---

Now, some useful special passwords:

"Fight Mike Tyson":              007 373 5963

(This password takes you directly to Mike Tyson. In the game, after you beat
the World Circuit, your password takes you to Super Macho Man, and you get
no password for beating Mike Tyson. Thus, you can't actually get this
password in the game.)

"Another World Circuit":         135 792 4680

(This password takes you to the circuit "Another World Circuit", which consists
of King Hippo and Great Tiger, followed by the World Circuit, followed by
Mike Tyson. In order for this password to work, after selecting the last digit,
do NOT press Start; instead press A, B, and Select at the same time.)

"Busy Signal":                   800 422 2602

(This password plays a busy signal, but does nothing else. It was put in the
game as a joke. The password is apparently an old phone number of Nintendo,
which was frequently busy.)

"Credits":                       106 113 0120

(This password displays the credits. In order for this password to work, after
selecting the last digit, do NOT press Start; instead press A, B, and Select
at the same time.)


--- [8] FUTURE VERSIONS? ------------------------------------------------------

Although I think this guide is reasonably complete, there are still a few
things I would like to clear up at some point, if possible. If I ever receive
any e-mail about this guide, I may make a future version.

Here are some of the questions I may try to answer in a future version.

-Do the "XXXXXXXXXXXXX" digits actually do anything? They aren't necessary
to get any obvious effect, so I doubt they are useful. But can they be used for
anything at all?

-There are some passwords that differ a little from what this guide would
provide that work and provide the exact same effect. For example, the
passwords 005 797 5483 and 003 797 5483 appear to do exactly the same thing.
When, exactly, is it okay to screw around with a digit a little bit and
still get a password that works?

-Could any of the sections or explanations be made clearer?

-Did I miss anything that readers would like to see?

--- [9] THANKS/ACKNOWLEDGEMENTS -----------------------------------------------

I would like to thank RedTom, who has on his web site a huge archive of
passwords. It is primarily through examining these that I was able to discover
the patterns within the password system and unlock its secrets. You can visit
his web site here:

    http://www.tomspunchout.tk/

I would like to thank Nintendo for bringing us the game Mike Tyson's
Punch-Out!!, which is quite fun in itself. I would also like to thank my
brothers Brian and Kevin, who suggested to me the idea of "cracking" games'
password systems, and have provided me with endless intellectual inspiration
in general. I would like to thank CJayC, maintainer of GameFAQS.com, the
finest source for video game information available anywhere. I would like to
thank the people who have written to me to express their appreciation for
the guides that I have written. Finally, I would like to thank you, the reader,
for looking over this guide. Once again, it is my hope that you found it
interesting; if you did, I would love to hear from you at
doug.babcock@gmail.com.