--------------------------------------------------------------------------------
|                   MEGA MAN X - PASSWORD ENCRYPTION SYSTEM                    |
--------------------------------------------------------------------------------

Written by UltraBongo.  Feel free to distribute and sell this guide under your
own name.

THE PURPOSE OF THIS GUIDE

This guide explains how the password system in Mega Man X works, and how you can
manipulate it to create your own unique passwords that can give you the head
start you need, or to set up situations that would not otherwise be achievable
through standard gameplay (for example, starting off with the Mega Buster
without having gotten the dash boots or the helmet first).

Be aware that this guide covers only the creation of passwords, and not the
interpretation of passwords; meaning, it will tell you how to make a working
password, but it will not tell you how the game takes a working password and
restructures it into usable data.  Maybe someday I'll figure this out and put
the related information into this guide so people can craft buggy passwords with
it, but right now this information is beyond my grasp.

--------------------------------------------------------------------------------

AUTOMATIC PASSWORD GENERATOR

Aaron Hoffman has graciously provided an automatic password generator for Mega
Man X using the information from this guide.  You can download the file here:

http://code.google.com/p/megamanxpasswordgenerator/

The included program allows you to select which bosses you want defeated and
items you want collected, then produces a password with the click of a button.
I highly recommend using this program if you came to this guide just looking
to produce a specific password; if you're interested in learning how the
password system actually works, or you prefer doing things the hard way, feel
free to read on.

--------------------------------------------------------------------------------

HOW THE PASSWORD SYSTEM WORKS

To explain the mechanics of the password system, it's necessary to note the
limitations of it.  The system is not designed to record your exact position in
terms of lives, health, or amount of progress made through any one of the
levels.  It doesn't even record progress made into the stages beyond the initial
eight bosses.  Instead, the passwords keep track of only 24 binary variables.

These 24 variables have only two possible values, true or false.  What this
means is that all they keep track of is whether you HAVE accomplished a certain
feat, or HAVE NOT accomplished that feat. There's one for each of the eight
bosses, to keep track of whether you've defeated each of them or not, another
eight for each of the heart tanks, to determine if you've collected them or not,
four more for the sub-tanks, and another four for the armor upgrades you can
gather (boots, helmet, mega buster, and body armor).

How completing each of these events affects the password system is a little
complicated.  Passwords consist of twelve digits spread across a 4x3 grid, like
so:

4325
5852
1821

As you might expect, each one of these digits is affected by different factors.
Defeating one boss might change four digits, while defeating a different boss
will change only two of them.  However, there is NOT only one number to
represent each boss; for example, a "1" doesn't necessarily mean "Boomer
Kuwanger" specifically.  It's difficult to explain with just words, so let's go
through the process step by step.  Consider the digit in the upper-left corner:

Oxxx
xxxx
xxxx

This number gets affected each time you defeat any one of the bosses.  However,
there's only two different numbers it can be: 4 or 1.  Specifically what it
keeps track of is whether you've defeated an EVEN or ODD number of bosses.  4 is
for an even number, 1 is for an odd number.  So if you've defeated three bosses,
the number will be 1, but if you've defeated all eight, it will be 4.

Each of the other digits work like this as well.  They don't all keep track of
bosses specifically; most keep track of a combination of bosses and items.
However, they all have a list of factors that change the digit, and that digit
is always one of TWO numbers depending on whether you've activated an even
number of those factors or an odd number of them.

However, there's one more wrench thrown in to make things complicated.  Even
though each digit works with only one pair of possible numbers, there's always
two factors that CHANGE which pair is used. Let's go back to the example of the
upper-left digit.  As I said, generally it's either a 4 or a 1 depending on how
many bosses you've defeated.  However, if you've collected the heart tank in
Chill Penguin's stage, then the numbers used are no longer 4 and 1; instead,
they're 2 and 7.  So if you start the game up and fight two bosses, this digit
will change from 4 to 1 to 4, but if you THEN go on to collect the heart tank in
Chill Penguin's stage, it will change to 2, and will then flip between 7 and 2
for each boss you fight after that.

Each digit has four different pairs of numbers it uses depending on how many of
these "outside" variables are affecting it.  For the example above, the
barebones pair is [4,1].  When you've gotten the heart tank in Chill Penguin's
stage, it's [2,7].  When you've gotten the sub-tank in Armored Armadillo's
stage, it's [6,5].  If you've gotten BOTH the heart tank and the sub-tank, it
then changes to [8,3].

To recap, there's basically two different kinds of factors that affect each
digit.  There's what I've labeled the Main Factors, which cause the digit to
flip between two numbers in a pair for each new Main Factor you collect, and
then there's the Altering Factors, which determine WHICH number pair is used.
It's all kind of a mess, but even if these instructions don't really make it
understandable to you, the guidelines given below should be enough to get you
making your own passwords with ease (relatively speaking).

--------------------------------------------------------------------------------

HOW IS THE PASSWORD SYSTEM BIG ENOUGH TO COVER EVERY SINGLE POSSIBILITY?

This has no real bearing on anything, but it was something I was asked in a
chatroom once, and I think it's an interesting question.  In case you were
wondering why they made you learn algebra in school, here's the reason.

As stated earlier, the password covers 24 binary variables, meaning, variables
with only two possible values.  You need to multiply these variables by each
other, leading to a value of 2^24. Also, there's eight different passwords for
each situation (something I hadn't mentioned yet), which leads to

(2^24) * 8 = (2^24) * (2^3) = 2^(24 + 3) = 2^27

passwords.  (There's also eight more passwords to cover the introductory stage,
but that's a pretty insignificant addition for the purposes of this
explanation.)

So, that's how many different passwords that actually work.  To cover how many
passwords you can actually enter, you need to consider that there's a total of
twelve different digits, and each of them goes from 1 to 8.  That's 8^12
possibilities, or

8^12 = (2^3)^12 = 2^(3 * 12) = 2^36

passwords.  As you can see, the number of possible passwords (2^36) is much
larger than the number of passwords that actually work (2^27).  There's 2^9
times as many, in fact, meaning there's only a 1/512 chance that any randomly-
generated password would work.

--------------------------------------------------------------------------------

A NOTE ON USING PASSWORDS TO ALTER THE STATE OF THE FIRST STAGE

Let me level with you: I can't figure this one out.  As much fun as it would be
to start from the very beginning fully decked out before you even have access to
any of the bosses, I'm not sure this was even made a possibility with the
standard password system.  All I know is that the passwords they DO provide for
the first stage look like they went through the Bizarro universe at some point
during the number generation, and I can't seem to edit them through simple trial
and error. If you really want to go through that one stage blowing things up
with a flame thrower, all I can do is suggest you use Game Genie; any password
made with this guide will dump you directly onto the stage select screen.

--------------------------------------------------------------------------------

INTERPRETING THE INSTRUCTIONS

Before you dive right into the pile of numbers given below, I feel you should
have a better understanding of what all the terms mean.  Here's the basic
structure given for each password digit:

----------------------------------------------------
| Position (#,#) - N[#,#]  X[#,#]  Y[#,#]  XY[#,#] |
| X Factor:   (Boss or item name)                  |
| Y Factor:   (Boss or item name)                  |
| Main Factors:   (List of bosses and/or items)    |
----------------------------------------------------

Let's go through the process step by step.  First, it helps to compile a list of
all the items you want your password to cover.  Then you'll need to go through
each digit, one after the other, and determine what number goes in each digit.
The location of each digit is signified by the following:

Position (#,#)

Digits are labeled based on standard graphing coordinates, with the first number
representing the horizontal axis and the second representing the vertical axis,
numbers increasing as you move right and up.  For example, it starts with (1,1),
one right and one up:

xxxx
xxxx
Oxxx

And ends at (4,3), four right and three up:

xxxO
xxxx
xxxx

And just so you can have a third example, here's (3,2):

xxxx
xxOx
xxxx

If it helps, you can also think of it as "third from the left and second from
the bottom".

After you've determined which digit you're looking at, you next need to decide
how many Altering Factors are affecting that digit.  That's where this comes in:

X Factor:   (Name of boss or item)
Y Factor:   (Name of boss or item)

See if either of these items are present in the password you want.  If the X
Factor is present, you'll be referring to the X[#,#] pair of numbers shown.
Similarly, if the Y Factor is present, you'll be using the Y[#,#] pair.  If BOTH
are present, you need to use the XY[#,#] pair, and if neither are present, you
need the N[#,#] pair.  (Notice: If there's only one number in each "pair",
that's because there are no Main Factors for that digit, so only one number can
be used anyway.)

After determing which pair you're using, look at the list of Main Factors, and
find the total number of these items you want present in your password.  If this
total is EVEN, you want this password digit to be the first number listed in
your number pair (N[1,x]); if the total is ODD, you want the password digit to
be the second number listed in your number pair (N[x,1]).

A note on interpreting the item names: Boss names represent bosses defeated, not
bosses still alive.  If you see a boss name with the suffix HT- or ST-, that
factor does NOT represent the boss, but the heart tank or sub-tank found within
that boss's stage.  (For example, ST-Storm Eagle refers to the sub-tank found
within Storm Eagle's stage.)

--------------------------------------------------------------------------------
| THE CODE                                                                     |
--------------------------------------------------------------------------------

Position (1,1) - N[1,8]  X[4,6]  Y[3,7]  XY[2,5]
X Factor:   HT-Armored Armadillo
Y Factor:   Boots
Main Factors:   Armored Armadillo, Boomer Kuwanger, HT-Boomer Kuwanger,
                HT-Chill Penguin, HT-Flame Mammoth, HT-Launch Octopus,
                HT-Sting Chameleon, ST-Spark Mandrill, Armor


Position (2,1) - N[8]  X[3]  Y[2]  XY[1]
X Factor:   Sting Chameleon
Y Factor:   ST-Storm Eagle


Position (3,1) - N[2,6]  X[8,7]  Y[5,3]  XY[4,1]
X Factor:   HT-Launch Octopus
Y Factor:   ST-Spark Mandrill
Main Factors:   Armored Armadillo, Boomer Kuwanger, Chill Penguin,
                Flame Mammoth, Launch Octopus, Spark Mandrill, Sting Chameleon,
                Storm Eagle


Position (4,1) - N[1]  X[4]  Y[6]  XY[8]
X Factor:   Chill Penguin
Y Factor:   HT-Spark Mandrill


Position (1,2) - N[5,7]  X[3,2]  Y[1,8]  XY[6,4]
X Factor:   Launch Octopus
Y Factor:   Armor
Main Factors:   Armored Armadillo, Boomer Kuwanger, Chill Penguin,
                Flame Mammoth, Storm Eagle, HT-Armored Armadillo,
                HT-Boomer Kuwanger, ST-Armored Armadillo, Mega Buster


Position (2,2) - N[8,2]  X[4,7]  Y[1,3]  XY[6,5]
X Factor:   Boomer Kuwanger
Y Factor:   HT-Boomer Kuwanger
Main Factors:   ST-Armored Armadillo, ST-Flame Mammoth, ST-Spark Mandrill,
                ST-Storm Eagle, Boots, Helmet, Armor, Mega Buster


Position (3,2) - N[5,4]  X[8,1]  Y[3,7]  XY[6,2]
X Factor:   Armored Armadillo
Y Factor:   Mega Buster
Main Factors:   Launch Octopus, Storm Eagle, HT-Chill Penguin, HT-Flame Mammoth,
                ST-Storm Eagle, Helmet


Position (4,2) - N[2]  X[6]  Y[8]  XY[7]
X Factor:   Spark Mandrill
Y Factor:   HT-Sting Chameleon


Position (1,3) - N[4,1]  X[2,7]  Y[6,5]  XY[8,3]
X Factor:   HT-Chill Penguin
Y Factor:   ST-Armored Armadillo
Main Factors:   Chill Penguin, Flame Mammoth, HT-Launch Octopus,
                HT-Sting Chameleon, ST-Spark Mandrill, ST-Storm Eagle, Helmet,
                Armor, Mega Buster


Position (2,3) - N[3,2]  X[7,8]  Y[4,1]  XY[6,5]
X Factor:   Flame Mammoth
Y Factor:   Helmet
Main Factors:   HT-Armored Armadillo, HT-Boomer Kuwanger, HT-Chill Penguin,
                HT-Flame Mammoth, HT-Launch Octopus, HT-Spark Mandrill,
                HT-Sting Chameleon, HT-Storm Eagle


Position (3,3) - N[2]  X[4]  Y[6]  XY[7]
X Factor:   HT-Flame Mammoth
Y Factor:   ST-Flame Mammoth


Position (4,3) - N[5]  X[3]  Y[2]  XY[6]
X Factor:   Storm Eagle
Y Factor:   HT-Storm Eagle

--------------------------------------------------------------------------------
| THE OTHER SEVEN CODES                                                        |
--------------------------------------------------------------------------------

(Note: There are actually eight different password coding systems in all.  For
the purposes of gameplay, you can easily limit yourself to using the password
set mentioned above; I am listing the other seven coding sets here merely for
the sake of completion.  These digits are affected by the same factors as coding
set #1.)

PASSWORD SET #2

Position (1,1) - N[2,5]  X[3,7]  Y[4,6]  XY[1,8]
Position (2,1) - N[6]    X[7]    Y[4]    XY[5]
Position (3,1) - N[4,1]  X[5,3]  Y[8,7]  XY[2,6]
Position (4,1) - N[8]    X[6]    Y[4]    XY[1]
Position (1,2) - N[8,1]  X[4,6]  Y[7,5]  XY[2,3]
Position (2,2) - N[6,5]  X[1,3]  Y[4,7]  XY[8,2]
Position (3,2) - N[6,2]  X[3,7]  Y[8,1]  XY[5,4]
Position (4,2) - N[7]    X[8]    Y[6]    XY[2]
Position (1,3) - N[6,5]  X[8,3]  Y[4,1]  XY[2,7]
Position (2,3) - N[7,8]  X[3,2]  Y[6,5]  XY[4,1]
Position (3,3) - N[1]    X[5]    Y[8]    XY[3]
Position (4,3) - N[4]    X[7]    Y[8]    XY[1]



PASSWORD SET #3

Position (1,1) - N[3,7]  X[2,5]  Y[1,8]  XY[4,6]
Position (2,1) - N[8]    X[3]    Y[2]    XY[1]
Position (3,1) - N[8,7]  X[2,6]  Y[4,1]  XY[5,3]
Position (4,1) - N[4]    X[1]    Y[8]    XY[6]
Position (1,2) - N[5,7]  X[3,2]  Y[1,8]  XY[6,4]
Position (2,2) - N[8,2]  X[4,7]  Y[1,3]  XY[6,5]
Position (3,2) - N[5,4]  X[8,1]  Y[3,7]  XY[6,2]
Position (4,2) - N[8]    X[7]    Y[2]    XY[6]
Position (1,3) - N[1,4]  X[7,2]  Y[5,6]  XY[3,8]
Position (2,3) - N[7,8]  X[3,2]  Y[6,5]  XY[4,1]
Position (3,3) - N[6]    X[7]    Y[2]    XY[4]
Position (4,3) - N[8]    X[1]    Y[4]    XY[7]



PASSWORD SET #4

Position (1,1) - N[4,6]  X[1,8]  Y[2,5]  XY[3,7]
Position (2,1) - N[6]    X[7]    Y[4]    XY[5]
Position (3,1) - N[5,3]  X[4,1]  Y[2,6]  XY[8,7]
Position (4,1) - N[6]    X[8]    Y[1]    XY[4]
Position (1,2) - N[8,1]  X[4,6]  Y[7,5]  XY[2,3]
Position (2,2) - N[6,5]  X[1,3]  Y[4,7]  XY[8,2]
Position (3,2) - N[6,2]  X[3,7]  Y[8,1]  XY[5,4]
Position (4,2) - N[6]    X[2]    Y[7]    XY[8]
Position (1,3) - N[5,6]  X[3,8]  Y[1,4]  XY[7,2]
Position (2,3) - N[3,2]  X[7,8]  Y[4,1]  XY[6,5]
Position (3,3) - N[8]    X[3]    Y[1]    XY[5]
Position (4,3) - N[2]    X[6]    Y[5]    XY[3]



PASSWORD SET #5

Position (1,1) - N[5,2]  X[7,3]  Y[6,4]  XY[8,1]
Position (2,1) - N[3]    X[8]    Y[1]    XY[2]
Position (3,1) - N[8,7]  X[2,6]  Y[4,1]  XY[5,3]
Position (4,1) - N[4]    X[1]    Y[8]    XY[6]
Position (1,2) - N[7,5]  X[2,3]  Y[8,1]  XY[4,6]
Position (2,2) - N[1,3]  X[6,5]  Y[8,2]  XY[4,7]
Position (3,2) - N[3,7]  X[6,2]  Y[5,4]  XY[8,1]
Position (4,2) - N[7]    X[8]    Y[6]    XY[2]
Position (1,3) - N[6,5]  X[8,3]  Y[4,1]  XY[2,7]
Position (2,3) - N[7,8]  X[3,2]  Y[6,5]  XY[4,1]
Position (3,3) - N[1]    X[5]    Y[8]    XY[3]
Position (4,3) - N[8]    X[1]    Y[4]    XY[7]



PASSWORD SET #6

Position (1,1) - N[6,4]  X[8,1]  Y[5,2]  XY[7,3]
Position (2,1) - N[3]    X[8]    Y[1]    XY[2]
Position (3,1) - N[2,6]  X[8,7]  Y[5,3]  XY[4,1]
Position (4,1) - N[1]    X[4]    Y[6]    XY[8]
Position (1,2) - N[7,5]  X[2,3]  Y[8,1]  XY[4,6]
Position (2,2) - N[1,3]  X[6,5]  Y[8,2]  XY[4,7]
Position (3,2) - N[3,7]  X[6,2]  Y[5,4]  XY[8,1]
Position (4,2) - N[6]    X[2]    Y[7]    XY[8]
Position (1,3) - N[5,6]  X[3,8]  Y[1,4]  XY[7,2]
Position (2,3) - N[3,2]  X[7,8]  Y[4,1]  XY[6,5]
Position (3,3) - N[8]    X[3]    Y[1]    XY[5]
Position (4,3) - N[5]    X[3]    Y[2]    XY[6]



PASSWORD SET #7

Position (1,1) - N[7,3]  X[5,2]  Y[8,1]  XY[6,4]
Position (2,1) - N[7]    X[6]    Y[5]    XY[4]
Position (3,1) - N[4,1]  X[5,3]  Y[8,7]  XY[2,6]
Position (4,1) - N[8]    X[6]    Y[4]    XY[1]
Position (1,2) - N[1,8]  X[6,4]  Y[5,7]  XY[3,2]
Position (2,2) - N[4,7]  X[8,2]  Y[6,5]  XY[1,3]
Position (3,2) - N[8,1]  X[5,4]  Y[6,2]  XY[3,7]
Position (4,2) - N[8]    X[7]    Y[2]    XY[6]
Position (1,3) - N[1,4]  X[7,2]  Y[5,6]  XY[3,8]
Position (2,3) - N[7,8]  X[3,2]  Y[6,5]  XY[4,1]
Position (3,3) - N[6]    X[7]    Y[2]    XY[4]
Position (4,3) - N[4]    X[7]    Y[8]    XY[1]



PASSWORD SET #8

Position (1,1) - N[8,1]  X[6,4]  Y[7,3]  XY[5,2]
Position (2,1) - N[7]    X[6]    Y[5]    XY[4]
Position (3,1) - N[5,3]  X[4,1]  Y[2,6]  XY[8,7]
Position (4,1) - N[6]    X[8]    Y[1]    XY[4]
Position (1,2) - N[1,8]  X[6,4]  Y[5,7]  XY[3,2]
Position (2,2) - N[4,7]  X[8,2]  Y[6,5]  XY[1,3]
Position (3,2) - N[8,1]  X[5,4]  Y[6,2]  XY[3,7]
Position (4,2) - N[2]    X[6]    Y[8]    XY[7]
Position (1,3) - N[4,1]  X[2,7]  Y[6,5]  XY[8,3]
Position (2,3) - N[3,2]  X[7,8]  Y[4,1]  XY[6,5]
Position (3,3) - N[2]    X[4]    Y[6]    XY[7]
Position (4,3) - N[2]    X[6]    Y[5]    XY[3]

--------------------------------------------------------------------------------

You can e-mail me at sabinxiii at gmail dot com, although I have no idea why
you'd want to.