
        Metroid password creator v0.1a
        By SnowBro <kentmhan@online.no>

        The password is generated based on which item boxes
        are checked in the item list.
        Sorry for the lack of item descriptions; if you figure
        out the meaning of some of the "blank" bits, please
        send a brief description to me. I believe the 16 bits
        (2 bytes) directly following the Missile Count byte is
        the "age" of Samus (the higher this value is when you
        complete the game, the lousier the ending.) Some of the
        password bits are probably not used at all.

        You can also decode an existing password by entering
        it in the space next to the "Decode" button, then
        clicking that button. This will check the appropriate
        boxes in the item list according to the password
        data.

        Sourcecode is included, check "src.zip".
        Compile with Borland C++ Builder 3.
        The password encryption/decryption routines are
        written in assembly language and can be compiled
        separately with Borland TASM v4.0 or 5.0.

        A note about the game's starting point:
        Check both the "Norfair" and "Kraid's Hideout" box
        to begin in Tourian.

        A brief description of the password format:
        First, the 24 6-bit characters of the password string
        are converted to 18 8-bit values. The last (18th) byte
        is the password checksum. It's the lowest byte of the
        sum of the 16 first bytes of the (decrypted) password.
        The 17th byte is the decryption value, which is the
        number of times to rotate the password data (the first
        16 bytes) left. Note that the bits are rotated from one
        byte to another (not just within the same byte), so the
        password data should be treated as one big 128-bit value.
        Once the password has been decrypted, the checksum is
        recalculated and is compared to the original checksum.
        If the two values match, the game will proceed to load,
        and acknowledge the password data.

        An interesting note:
        If you decode the password "JUSTIN BAILEY ------ ------",
        you'll notice that it doesn't generate a checksum error.
        This means that there's no special case handling for
        this password; there's nothing special about it. The
        fact that it generates the correct checksum, and therefore
        works, is just luck! This also applies to "999999 999999
        KKKKKK KKKKKK" and other "strange" passwords.
