Announcement

Collapse
No announcement yet.

Majestic Porter

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Majestic Porter

    I've just finished the new incarnation of GSHIConvert, Majestic Porter. The Serial Repeater Utility is finished, and several bugs/deficiencies have been remedied. You can grab Majestic Porter here:

    http://gshi.org/downloads/majestic_porter.zip

    For a decent explanation of Majestic Porter, here's a copy and paste of the ReadMe, and a few screenshots:
    ______________________________________

    Majestic Porter 2.5

    Majestic Porter (previously known as GSHIConvert) will allow you to convert, or port, codes between different versions of the same game (eg, to convert codes for Game 1.0 to Game 1.1, or codes from the PAL version of Game to the NTSC version, and so forth). Currently, it supports codes in the format XXXXXXXX YYYY, where XXXXXXXX = address, and YYYY = value (hence, codes for PSX, N64, NDS, GBA [depending on cheat system], and anything else with that format will work). The app's name is a little strange, but it has three intentional meanings (and perhaps more unintentional ones, heh).

    There is an option to use a custom offset of your choice, and a small list of games/versions to convert to/from. The list of preconfigured conversions will grow as more offsets are solved for. Feel free to submit an offset.

    I've included a small calculator I built that works in hex and dec (two calculators, technically), and converts between the two. Keep in mind that the hex division function will omit remainders and round up or down accordingly, and that, until I'm un-lazy enough to fix it (which I have a general idea of how to do), hex numbers larger than 7FFFFFFF will convert to negative numbers in decimal. Believe it or not, this is actually normal behavior, considering the way I coded the calculator. For now, if you'd like to convert an address from hex to decimal, just omit the first two characters.

    I've also included a utility I built to handle 50-type serial repeaters, with the ability to extrapolate from and condense to this format.

    Unfortunately, in order to run Majestic Porter, you'll need to download Microsoft .NET 2.0, currently available here:
    http://www.microsoft.com/downloads/d...displaylang=en


    I'd include it, but, as you may know, the bastard is ~20MB

    In any case, quite a few applications require the .NET Framework these days, so you might as well have it installed. So really, I'm doing you a favor


    Shortcut Keys in Majestic Porter:

    F1 - Open (Open a file containing a collection of codes you'd like to convert (heh, alliteration). Note that Majestic Porter is quite strict at the moment, and requires such a file to be in the format ExampleCodes.txt is in)

    F2 - Save As... --Save the contents of Resultant Codes to a .doc file.

    F5 - Convert Codes --Avoid the time-consuming process of clicking Convert, heh.

    F7 - Clear All --Clear all fields, and reset the dropdown menu to default.

    F10 - About --About Majestic Porter.

    Alt+C - Calculator --Bring up the calculator.

    Alt+S - Serial Repeater Utility --Bring up the Serial Repeater Utility.


    Shortcut Keys in the Serial Repeater Utility:

    F1 - Open (Open a file containing a collection of codes you'd like to extrapolate/condense. Note that Majestic Porter and its sub-apps are quite strict at the moment, and require such a file to be in the format ExampleCodes.txt is in)

    F2 - Save As... --Save the contents of Resultant Codes to a .doc file.

    F5 - Perform Operation --Avoid the time-consuming process of clicking the button, heh.

    F7 - Clear All --Clear all fields.

    F10 - About --About Majestic Porter Serial Repeater Utility.


    Note: To make a subtractive offset in Majestic Porter, simply append a "-" (without the quotation marks) to the beginning of your offset.
    ____________________________________________


    Improvements in later versions will include:

    - The addition of many more games (as noted)

    - Auto-detection of codes within other text, so a user can paste a code with a name and description, which Majestic Porter will filter. It will then perform offset operations on the addresses, and copy the entire contents of Original Codes (everything the user pasted), with the newly-incremented addresses in place of the originals. In this way, one could convert entire pages of codes without having to do so much copying and pasting.

    - Support for other code formats (NES PAR, etc)

    - Support for custom formats


    And probably...


    - Anything else that comes to mind which might be useful. However, if you've seen GSHIConvert 1.9 or earlier, you know that this app's come a long way, heh.


    Current known issues:

    *This isn't really an issue, since Majestic Porter could be used for any code in the XXXXXXXX YYYY format, and thus needs to be free to perform operations as the user wishes, but...if included in Original Codes, GSPro Universal Jokers, Universal All-Codes-On, Universal All-Codes-Off, Universal Delay All Codes (D4, D5, D6, & C1; not commonly used), and serial repeaters (50-type condensers), will be offset, and rendered inoperable. I've added a popup message to warn of this, but still allowed such lines of code to be offset, in case of special circumstances. That, and serial repeaters can be extrapolated using the Serial Repeater Utility built-in to Majestic Porter, offset, then recondensed.

    *If the user enters anything other than hexadecimal characters (0-9, A-F) in Original Codes (or anything but hex characters or a minus symbol in Offset), the output will be destroyed. Hence, the popup message you'll get, noting that something's gone terribly wrong.



    If you have a question, complaint, comment, suggestion, request, bug to report, or just want to get in touch with me, send me an email, or make a post at the GSHI forums (or drop by GSHI Chat, for that matter).

    -Lazy Bastard ([email protected])


    http://GSHI.org
    ____________________________________________













    I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

  • #2
    OK, I've finished Majestic Porter 3.0; it's up in the Downloads section. Here's a copy of the ReadMe:

    Majestic Porter will allow you to convert, or port, codes between different versions of the same game (eg, to convert codes for Game 1.0 to Game 1.1, or codes from the PAL version of Game to the NTSC version, and so forth). Currently, it supports codes in these formats:

    XXXXXXXX YYYYYYYY - [PS2, NDS, etc]
    XXXXXXXX YYYY - [PSX, N64, GBA, etc]
    XXXXXX YY - [NES, SNES, GB, etc]
    XXXXXXYY - [NES, SNES, GB, etc] - Spaceless format
    XXXXXX:YY - [Genesis, etc]
    XXXXXX:YYYY - [Genesis, etc]
    XXXX-YYYY - [Game Gear, etc]


    ...where X = address, and Y = value.

    There is an option to use a custom offset of your choice, and a small list of games/versions to convert to/from. The list of preconfigured conversions will grow as more offsets are solved for. Feel free to submit an offset.

    I've included a small calculator I built that works in hex and dec (two calculators, technically), and converts between the two. Keep in mind that the hex division function will omit remainders and round up or down accordingly, and that, until I'm un-lazy enough to fix it (which I have a general idea of how to do), hex numbers larger than 7FFFFFFF will convert to negative numbers in decimal. This is actually normal behavior, considering the way I coded the calculator. For now, if you'd like to convert an address larger than that from hex to decimal, just omit the first few characters, and reappend them later.

    I've also included a utility I built to handle 50-type serial repeaters (GSPro), with the ability to extrapolate from and condense to this format.

    Unfortunately, in order to run Majestic Porter, you'll need to download Microsoft .NET 2.0, currently available here:
    http://www.microsoft.com/downloads/d...displaylang=en


    I'd include it, but, as you may know, the bastard is ~20MB

    In any case, quite a few applications require the .NET Framework these days, so you might as well have it installed. So really, I'm doing you a favor


    Shortcut Keys in Majestic Porter:

    F1 - Open (Open a file containing a collection of codes you'd like to convert (heh, alliteration). Note that Majestic Porter is quite strict at the moment, and requires such a file to be in one of the formats the ExampleCodes texts are in)

    F2 - Save As... --Save the contents of Resultant Codes to a .doc file.

    F5 - Convert Codes --Avoid the time-consuming process of clicking Convert, heh.

    F7 - Clear All --Clear all fields, and reset the dropdown menu to default.

    F10 - About --About Majestic Porter.

    Alt+C - Calculator --Bring up the calculator.

    Alt+S - Serial Repeater Utility --Bring up the Serial Repeater Utility.


    Shortcut Keys in the Serial Repeater Utility:

    F1 - Open (Open a file containing a collection of codes you'd like to extrapolate/condense. Note that Majestic Porter and its sub-apps are quite strict at the moment, and require such a file to be in one of the formats the ExampleCodes texts are in)

    F2 - Save As... --Save the contents of Resultant Codes to a .doc file.

    F5 - Perform Operation --Avoid the time-consuming process of clicking "-----****", heh.

    F7 - Clear All --Clear all fields.

    F10 - About --About Majestic Porter Serial Repeater Utility.


    Note: To make a subtractive offset in Majestic Porter, simply append a "-" (without the quotation marks) to the beginning of your offset.
    ____________________________________________


    Improvements in later versions will include:

    - The addition of many more games

    - Auto-detection of codes within other text, so a user can paste a code with a name and description, which Majestic Porter will filter. It will then perform offset operations on the addresses, and copy the entire contents of Original Codes (everything the user pasted), with the newly-incremented addresses in place of the originals. In this way, one could convert entire pages of codes without having to do so much copying and pasting.

    - Support for custom formats


    And probably...


    - Anything else that comes to mind which might be useful. However, if you've seen GSHIConvert 1.9 or earlier, you know that this app's come a long way, heh.


    Current known issues:

    *This isn't really an issue, since Majestic Porter could be used for any line of code in the formats supported, and thus needs to be free to perform operations as the user wishes, but...if included in Original Codes, GSPro Universal Jokers, Universal All-Codes-On, Universal All-Codes-Off, Universal Delay All Codes (D4, D5, D6, & C1; not commonly used), and serial repeaters (50-type condensers), will be offset, and rendered inoperable. I've added a popup message to warn of this, but still allowed such lines of code to be offset, in case of special circumstances. That, and serial repeaters can be extrapolated using the Serial Repeater Utility built-in to Majestic Porter, offset, then recondensed, and besides, one could just perform the offset operations desired on the 80-type line only. The properties of the 50-type line are all relative, and won't require modification.

    *If the user enters anything other than hexadecimal characters or the symbols appropriate for the format being used (0-9, A-F, and possibly space, dash, or colon) in Original Codes (or anything but hex characters or a minus symbol in Offset), the output will be destroyed. Hence, the popup message you'll get, noting that something's gone terribly wrong.



    If you have a question, complaint, comment, suggestion, request, bug to report, or just want to get in touch with me, send me an email, or make a post at the GSHI forums (or drop by GSHI Chat, for that matter).

    -Lazy Bastard ([email protected])


    http://GSHI.org
    ________________________________________________



    Here are a couple of screenshots of 3.0:





    I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

    Comment


    • #3
      it looks very nice although i wont use it

      Comment


      • #4
        Heh, thanks. It's just an offset tool, so I doubt anyone will use it much, but it's nice to have it around when performing batch offset operations. That, and I'll probably continue to add functions as I go along; we'll see how it turns out.
        I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

        Comment


        • #5
          I made a Icon for your program.

          or as a GSHI Icon.

          I hope you enjoy it!
          Attached Files
          Cant stand the 32 bit and above gaming.
          Gamers for the return of 2d sprite filled games!

          Comment


          • #6
            Thanks. I'll keep a copy of that.
            I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

            Comment


            • #7
              OK, Majestic Porter 3.5 is out. I've added a utility to decrypt encrypted PSX XPloder codes, based on information from misfire and Parasyte. It's up here, as usual: http://gshi.org/downloads/Majestic_Porter.zip

              Here's a shot of the new PSX Xploder Code Decryption Utility in action:

              I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

              Comment


              • #8
                great tool.the most thing i like is that you explained the encryption/decryption of the xploder tool.i got the source code,but i couldnt understand so far!

                Comment


                • #9
                  Heh, not a problem; it took me a while to figure it out as well, and I had help

                  The next thing that will be added is encryption/decryption of all the Game Genie systems...GG<>raw hex. I could probably do it relatively quickly now that I have some good reference on the routines, but I've been too busy/lazy lately...we'll see.
                  I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

                  Comment


                  • #10
                    Good to see your improved programming skills.

                    Comment


                    • #11
                      Thanks

                      To be fair, I'm doing it the lazy way, considering I'm going with VB.NET, heh.

                      I'll get around to this, and the other couple of projects I've mentioned, soon...I just bought a new house, and I keep spending every day with my girlfriend, so I've been tied up lately. Apologies to anyone who's been eagerly awaiting updates on MP.
                      I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

                      Comment


                      • #12
                        Actually, I do like .NET as well (C# to be more specific).

                        Right now I'm developing an XML Web Service in C# as a part of a key management system for my diploma thesis.

                        Comment


                        • #13
                          Eh, incidentally, if you've got a moment, might you be able to tell me what I'm missing here:
                          ______________________________________________

                          "The Game Boy (and Game Gear) codes come in two forms: XXX-XXX and XXX-XXX-XXX. The code contains a 15-bit address (the high bit is always zero), an 8-bit value, and a check byte. The breakdown is VVA-AAA or VVA-AAA-CCC.

                          The first two characters are the value in plain hex. No tricks.

                          The next four characters are the address. Transpose ABCD to DABC and take the complement of nibble D. Values 0-7 are not permitted for D.

                          The last three characters (if present) contain the check byte. Transpose ABC to ACB. AC is the encoded check byte in hex. Decode it by inverting it, rotating it right two bits, and xoring it with 0x45. The purpose of the B character is unknown, but in Galoob's codes A xor B is 8."

                          _________________________________________________

                          Everything seems to make perfect sense, and hold completely true, except for the Check Byte. If I take a GG check byte, remove the middle character, XOR what remains with 0xFF, convert it to binary, shift it right two bits, convert it to hex, and XOR it with 45, I do not get the same result as any of the conversion progs I've seen, nor the Check Byte chart I stumbled upon. If I do all of that, but XOR with C5 instead of 45, it USUALLY yields correct results, but not always (?).

                          For example, a GG check byte of E6D should decrypt to C1.

                          ED = C1
                          ED XOR FF = 12
                          12 in bin = 00010010
                          Shift right 2 = 00000100
                          In hex = 4
                          4 XOR 45 = 41

                          However, 4 XOR C5 = C1, the correct result. Am I making a mistake here, or is this encryption system incorrectly documented?
                          I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

                          Comment


                          • #14
                            I believe the correct way to get the check value is to XOR code position 7 with the 'Shadow' value of 08. Take most any normal code, and XOR the 7th position with the 8th position, and it should come out 8. This seems to apply equally to Gameboy codes and Game Gear codes. The rest looks like it could be done with no serious effort as well.

                            With Compare:
                            00A-17B-C49

                            Without Compare:
                            00A-17B

                            (00)(A-17B)(C)(4)(9)
                            (VV)(A-AAA)(C1)(S)(C2)

                            (VV) = Value
                            (A-AAA) = Address
                            (C1), (C2) = Check
                            (S) = Shadow ((C1) XOR 8)

                            (VV) is a flat, unencoded value. In the example, (00)

                            With (A-AAA), Arrange it linearly (2-341). That's the address. (A-17B) becomes (BA17)

                            XOR this address with F000.

                            Error checking:
                            --
                            For Gameboy:
                            Use XOR F000, and if the address referenced is above 7FFF, the code is invalid. If you want to, you can simply AND 7FFF that value, and return an address below 8000.

                            For Game Gear:
                            Use XOR F000, and if the address referenced is above BFFF, the code is invalid.
                            --

                            If the code has no compare, you can assemble the address and value now.

                            Address: 0x4A17
                            Value: 0x00

                            If it does have a compare, continue on.

                            Throw away (S) if you're decoding, because it's useless to the process.

                            Append (C1) and (C2) linearly, to get a complete (C)

                            In this example, you get C9.

                            Convert it to binary, and shift right by 2.
                            C = 1100, 9 = 1001.
                            so, take 11001001, and put the last 2 bits in front of the number, so that it's 01110010.

                            Converted back to decimal, you've got 72 now.

                            XOR that with 0xBA, and you get the value 0xC8.

                            C8 is the compare value.

                            so...
                            Address: 0x4A17
                            Value: 0x00
                            Compare: 0xC8

                            edit:
                            Added an XOR step to what's listed, with system specific error checking
                            This reality is mine. Go hallucinate your own.

                            Comment


                            • #15
                              So, it's not a bit shift, but a rotation, with no carry. That would explain why I was sometimes given a correct result, and sometimes not. Bah @ the Universal Game Genie (tm) Code Convertor's incorrect documentation - http://www.wyrmcorp.com/software/uggconv/uggconv.shtml

                              Thanks. Along with the other routines/schemes I'll be implementing, I'll definitely be documenting (and simplifying the explanation of) this one, for public comprehension, heh. It seems the pieces of information on several long-broken systems have been either misdocumented, or documented without all the required information...
                              I may be lazy, but I can...zzzZZZzzzZZZzzzZZZ...

                              Comment

                              Working...
                              X