No announcement yet.

Code Converter Upgrade

  • Filter
  • Time
  • Show
Clear All
new posts

  • Code Converter Upgrade

    Last night I started work on a new feature for the code converters on the systems' home pages. It will basically help you create codes, it may be especially helpful with the later consoles that have complicated codetypes and whatnot. It's in beta right now, and presented as-is. I can't guarantee its accuracy, as it's not too smart on what the devices can and can't support. (e.g. all the different types of conditionals, or math operations.) Anyway, it's a good starting point.

    You select the device and whether you want the code to be encrypted as usual, then choose a codetype and input the parts in the form that appears. Easy-peasy.

    It should be working for all systems, but here is a link to PS2 anyway.

    Play around with it, post grievances/high praise in this thread here.
    Please put all complaints in writing and submit them here.

    Above link not working? Try here.

  • #2
    This weekend I worked on making it smarter by documenting the codetypes and limitations of each device across the board. I'm a little stuck on PS2, though. There are many different devices, and many versions of each. All of them but the ARMax share the same codetypes for the most part, but there are some later versions that support more types than the earlier.

    Is there some comprehensive info somewhere on which devices support which codetypes, by version? Or should we start a table and start testing?

    I tried searching for this issue and found a little, but not much to go on. There might also be some good info in the omniconvert source. Perhaps there is something from CMP?
    Please put all complaints in writing and submit them here.

    Above link not working? Try here.


    • #3
      The code line creator, the new upgrade to the converter, has been improved. It will now only show codetypes and options for what the particular device supports.

      There are bugs, and I haven't done Gecko or Wii AR. Also, since I don't know which PS2 device supports which codetypes, they accept all types right now until I can figure that out.

      There may be other bugs as well.
      Please put all complaints in writing and submit them here.

      Above link not working? Try here.


      • #4
        Question, is there any chance of adding a function that transforms GB/GBC/NES/SNES/GENESIS/SATURN/N64 etc. codes to TempAR format?
        Last edited by Duncan Idaho; 02-24-2015, 10:37:03 AM.


        • #5
          Is there a way to get it to convert USA Codebreaker Codes to USA AR MAX? I found a new dragon quest viii ps2 USA codebreaker code last night, and I tried the ar max data that it was converted from the codebreaker data, but it didn't work with the game.


          • #6
            I never saw this thread before, but if you're still looking to improve the PS2 stuff, I can take a look around. A couple of things I noticed at a glance:
            1. The site seems to convert 32-bit master-level writes to 8-bit regular writes for AR MAX. It should just be 32-bit regular writes.
            2. The AR MAX doesn't do master/hook writes because it's capable of executing any cheat command during hook processing, which is different from most or all other devices. If you want a code to be done only once, the only way to pull that off is by embedding it in the enable code. Typically, all this does is free a few cycles by eliminating some codes from the main loop, so it only really matters in a few extreme cases. There's also not a good way to automate conversions for cases where it might matter.
            3. The AR Version 2 can do master (one-time) writes with the exact same format the CodeBreaker uses. I'm somewhat certain the AR Version 1 can as well. I've never seen direct confirmation, though. The Japanese lived and died by the ARv1 for a long time, and I recall seeing a lot of A commands in their codes.
            4. Pointer Writes are being chewed up and spit out somehow during conversion. They're a low-use code type, and I can never remember the different formats offhand.
            5. Minor quibble, but the mirror RAM location is wrong. It looks to me like you added decimal 20000000 instead of 0x20000000 to the address.

            Pointer writes on CodeBreaker. I think a version of the code type was available in Version 6, but version 7 tweaks the format a bit and offers the ability to do multiple levels.
            6aaaaaaa xxxxxxxx 
            000wcccc oooooooo 
            ...additional offsets  (valid on devices 7.0 and up only)
              * aaaaaaa: 25-bit pointer address.
              * xxxxxxxx: Value to be written.  May be referenced as xx or xxxx as well.
              * w:  Width of the data to be written.
              * cccc: Number of levels of indirection.  (Number of pointers to be used, and also the number of offsets entered into the code).
              * oooooooo: 32-bit offset from pointer.  There can be a variable number of these.
            Implementation: The starting pointer, located at aaaaaaa will be loaded and the offset oooooooo will be added to it, giving the temp_address.  The pointer-count, cccc is decremented, and if it is zero, then the value xxxxxxxx will be stored at temp_address.  If the pointer-count is not zero, the value at temp_address is loaded as a pointer, and the next offset is added to it.  The process is repeated until the pointer-count is zero, at which time whatever value temp_address has will be overwritten with the value xxxxxxxx. 
            Allowed Width (w) Values
              * 0 - 8-bits.
              * 1 - 16-bits.
              * 2 - 32-bits.
            I have the format for GS3+ somewhere. I know I posted it in a limited-access forum on CMP because it's broken and worth a laugh, but I don't even have an account there right now, and I have no idea if the forum even exists anymore. I'll have to see if I can dig it up from my archives somewhere. It's basically like—fake edit, the old CMP forum still exists in archive mode:

            6waaaaaa llllllll
            0ddddddd xxxxxxxx
            w - optional size (bit width) parameter 0/1 - 16-bit, 2 - 32-bit
            a - location of pointer (less 0x1000000 if > 0xFFFFFF)
            l - load offset, will be added to a before loading pointer (p)
            d - destination offset added to pointer
            x - data to write at p + d
            a & 0xFFFFFF (byte aligment)
            d & 0xFFFFFFF (byte alignment)
            lw p, l(a)
            sh x, d(p)
            Why is there a load offset? Well, because they've cut themselves off from the second 16 MB of RAM by their choice of location for the size parameter. It's probably pretty rare that this data will be needed, so it's essentially wasted space mostly set to 0s.

            Now an observant person might have noticed that the bit width parameter requires 2 bits of the same nibble (hex digit) that is normally split 3 to 1 for the encryption flags and the upper bit of the 25-bit address. Even though they've taken away 1 bit from the address, you still can't divide 4 bits among a 3-bit field and a 2-bit field and expect good results. The least significant bit of the encryption is actually being shared with this parameter, and since most encryptions bitwise-and their results with 0xF1FFFFFF, the code will never make it to the cheat engine in the state desired. Basically, they took the time and trouble to allow for 32-bit pointer-based writes, and then fucked it all up.

            They could have solved this by making the second word of the code the size parameter. Then they could have done 8-bits, 16-bits, 32-bits, whatever their little hearts desired, and maybe even multiple levels of indirection. I'm sort of curious to see if they fixed this bug in later versions.


            • #7
              Well, I hope the guy that codes the site takes notice of this. I forget who that is.


              • #8

                great work man


                • #9
                  Hex Converter Tool

                  A Hex Number Converter Tool from the Year 2001.I am not the author, i've used it very often.Maybe it can be added to PS2 Tools Section.First
                  i wanted to create a new thread under " Updates" and post it there but that's not possible for some reason.
                  Attached Files