MMXPG - Mega Man X Password Generator
Written by Michael Hayes
linktr.ee/intylab
Date Of Last Modification: March 28, 2025
__________

"What is this?"

This is a graphical application written in Python using Tkinter.  It
generates a password for Mega Man X based on what save data you choose.
__________

What is included:

 readme.txt - what you are reading now
  mmxpg.py  - the program itself
 config.py  - a configuration file that you can tweak
   icon.png - program icon
    assets/ - a subfolder containing all the graphics files
__________

Setup:

A. Install Python with the following commands:
   pkg install python
   pkg install python-tkinter
B. Create a folder called "projects" on your Home folder.
C. Unzip mmxpg.zip from this "projects" folder.  It will create a
   subfolder called "mmxpg/" and copy everything into there.
D. Add Execute permissions to the Python script file:
   chmod +x projects/mmxpg/mmxpg.py
E. You will probably want to create a Symbolic Link from your Home
   folder.  Execute the following commands:
   cd
   ln -s projects/mmxpg/mmxpg.sh mmxpg
__________

How to use:

From your Home folder, just type "mmxpg" to begin.

A window will appear with a list of buttons and checkboxes to the left,
and two "screenshot" panes in the middle and to the right.  The middle
pane displays the Stage Select screen with a list of icons around the
edge, representing the upgrades you can get in each of the 8 stages.
The pane to the right displays your password and also has two "LED
grids" and a scratchpad, which help to illustrate the internal password
mechanics.

First, let's get familiar with the command buttons.  They are located in
the four corners of the middle Stage Select pane.

A. The "Hide ToolTips" button in the southwest corner turns off
   ToolTips, which are popup windows that appear when you hover the
   mouse over various controls.  Click this button again to turn
   ToolTips back on.
B. The "About" button in the northwest corner displays information about
   the program itself.
C. The "Quit" button in the northeast corner is self-explanatory.
D. Finally, we get into the inner workings of the program itself with
   the four "Seed Bits" buttons in the southeast corner.
     I. By default, Data Bit Z is not raised, signaling that you have
        not finished the first stage.  Click this button to make the
        other buttons and icons selectable.  They are unselectable until
        you clear the opening stage.
    II. The other buttons are labeled '0', '1', and '2'.  You can click
        these at will.  Try it now, and watch the changes that happen.

To change the Data Bits, try clicking on the icons within the Stage
Select pane.  If need be, enable the icons by clicking on the 'Z'
button.  Watch the password change all the way to the right, and watch
as the lights change as well.  Alternatively, you can use the list of
buttons to the left:

A-H. Stages cleared raise Data Bits which are represented as purple
     lights in the top two rows.  As you should know, these also signal
     that you have the respective weapons from those stages.
I-P. Heart Tanks raise Data Bits which are represented as red lights in
     the third and fourth rows.
Q-T. Sub Tanks raise Data Bits which are represented as orange lights in
     the fifth row.
U-X. Dr. Light upgrades raise Data Bits which are represented as blue
     lights in the sixth row.
  Y. The Dr. Light upgrade in the Armored Armadillo stage, just under
     the "About" button, raises Data Bit Y, which is represented as
     another blue light, this time in the eighth row.
     * As you probably know, this is the Hadouken upgrade.  It turns out
       the password does retain this information.  To enable it, there
       is another code that you must enter.  With the cursor over the
       last digit of the password, press and hold L+R+X+down+Start.

Now what about the yellow and green lights?  And what about that second
grid?

    Z. This is the light which signals whether or not you have cleared
       the first stage.  It lights up half-purple and half-yellow, the
       purple half to show that a stage is cleared, and the yellow half
       because it is also a Seed bit (continue reading).
  0-2. The other three Seed Bits are chosen randomly when you receive a
       password.  This results in your receiving one of eight different
       passwords for the same data, just to make things confusing.
A'-X'. These lights are duplicated in the second grid to the right.  If
       any of the yellow lights in the seventh row are lit, they reverse
       reverse all the lights directly above them.  The second grid is
       here to demonstrate the before & after of "flipping."  These
       lights in the top six rows of the second grid are labeled A'
       through X'.

Now, let's look at the green lights in the bottom two rows.  These are
called Parity Bits.  Parity Bits are used for validation purposes; that
prevents people from getting away with entering random digits as a
password.  They always have to be set based on other Bits which each one
is monitoring:

  3. The second light in the eighth row is lit if an odd number of the
     lights from the top two rows is lit (displayed in purple).  If an
     even number of lights in the top two rows is lit, this light must
     be unlit.
  4. The next light to the right is lit if an odd number of lights in
     the third and fourth rows are lit (displayed in red).  For an even
     number of lights, it must be unlit.
  5. The rightmost light is lit if an odd number of lights in the fifth
     and sixth rows are lit (displayed in orange and blue).  For an even
     number of lights, it must be unlit.
6-9. The lights in the last row are lit if an odd number of lights
     directly above them are lit.  For an even number of lights, they
     must be unlit.

Altogether, the lights in the second grid are used to determine the
final password.  Look carefully at the Scratchpad area in the bottom
right corner.  Each of the 12 cells of the password fetch three of the
lights from the second grid.  Notice there is a list of three lights
with an arrow pointing in a downward direction after each label.  Below
that is "Start" followed by 4 rows of numbers, 8 numbers in total.  For
example, the first cell in the Scratchpad looks like this:

M'↙R'↓9↘
Start
  7
1 8 2
6 4 3
  5

Imagine a Chess King positioned on a square labeled with a #7.  Now look
at the second grid.  If light M' is lit, the Chess King would move one
space southwest to the #1 square.  Similarly, if light R' is lit, the
King would move one space south, and if light 9 is lit, the King would
move one space southeast.  The number that the King lands on is the
number that appears in the top-left corner of the password.

The remaining 11 cells behave in the same fashion, using a different set
of three lights, and with the 8 digits in a different order.  I have a
document posted on GameFAQs which describes this in greater detail.  I
also have a video posted on my YouTube channel to help further
illustrate the concept.  The link to my YouTube channel is available
from my website.  The link to my website is available from the link at
the top of this document.
__________

License stuff

There is no license or warranty of any kind.  I offer this package as a
tool rather than as a product.  You are free to do whatever you want
with this tool.

The standard precaution applies that use of this tool is at your own
risk.  As it is free, I release this tool for your use with the
understanding that neither I nor Midnight Blue International, LLC are
responsible for any detrimental effects to you or your device as a
result of its use, either direct or indirect.

Rather than ask for any monetary donation, I would appreciate your
follows to my channels, particularly on Twitch, Kick, YouTube, and
Instagram.  I also have my own server on Discord and Guilded, but I
only send out invites manually.
__________

EOF
