Code Conversion Issues
What follows is an inexhaustive list of potential issues in the conversion of codes from one device to another. Most of these issues will be encountered only rarely, but you should pay attention to the error messages that Omniconvert generates, and check these lists for an explanation before reporting a problem.
From Standard (CodeBreaker, Action Replay Version 1, Etc.) to Action Replay MAX
- Value increments on Action Replay MAX have a range of -128 to +127. If another device's code has a value increment that exceeds this, it cannot be converted. Many times this will be due to a compound value, which could realistically be converted into a write less than 32-bits in size, but that cannot be assumed. When this condition is encountered, an error is generated.
- The count on multi-address writes is limited to 255 on AR MAX. Other devices support up to 65535. This will rarely create errors during conversion.
- The AR MAX does not allow offset in its 32-bit pointer writes. Other devices allow a 32-bit offset, and therefore these codes cannot be converted when the offset is more than zero.
- CodeBreaker supports multiple pointers using a count in its pointer writes. This is not supported by AR MAX. When the pointer count is more than 1, these codes will generate an error.
- 16-bit pointer writes on AR MAX only allow a 16-bit offset.
- 8-bit pointer writes on AR MAX only allow a 24-bit offset. This will almost never be a problem, but the possibility is there.
- AR MAX does not support the copy bytes (type 5) command.
- AR MAX does not support bitwise operation commands (type 7).
- AR MAX does not support the timer command (type B).
- The AR MAX's all off/on conditional is the inverse of what is used on other devices in command type C. No direct translation is possible.
- The AR MAX does not support the NAND test that CodeBreaker 7 provides. This has never been used, to my knowledge, and you will probably never encounter this error.
- The AR MAX does not support master level codes (type 8 and A) as other devices do. The AR MAX can execute any of its commands in the master code, and commands that reside in the master code are only executed during hook processing. Generally that means once when the game boots. In order to translate such codes properly to AR MAX, they would need to be inserted into the master code. Omniconvert does not do this. It will convert the codes to the appropriate types, but it is up to the user to insert them into the master code if desired.
- Enable codes are a universal problem. Generally the conversion will work, but because the data is highly variable, it is always best to manually check the enable code, or ensure that you have entered one that can be translated properly. The 9-type master code will always be converted properly from a standard device to AR MAX.
From Action Replay MAX to Standard (CodeBreaker, Action Replay Version 1, Etc.)
- In general, Standard devices do not support signed test commands. Luckily, AR MAX doesn't generally use them.
- Most devices do not support the AND test command. CodeBreaker is the sole exception.
- The all on/off command cannot be converted from AR MAX.
- 8- and 16-bit multi-address writes with an address skip greater than 1 have no simple conversion. They are "exploded" into a series of single-line writes of the given size.
- Most devices do not support the 8-bit pointer write. CodeBreaker is again the sole exception.
- Some devices do not support the 32-bit pointer write. Most do, but GameShark version 3+, Xploder version 4+, and Xterminator (version unkown) do no, due to a bug.
- No device other than AR MAX supports a 32-bit comparison other than the all on/off command.
- 8-bit comparisons are not supported by most devices. CodeBreaker is the only exception.
- It's sometimes difficult to create a good enable code for a standard device from an AR MAX code.
Standard Device Issues (Action Replay Version 1/2, GameShark, CodeBreaker, Xploder, Xterminator)
- Pointer writes have different formats. An attempt is made to convert them, but it may run into several issues.
- Only CodeBreaker supports more than one level of pointer in its code. If you attempt to convert such a code to another standard device, and error will be generated.
- GameShark version 3+, Xploder version 4+ and the Xterminator all suffer from a bug that makes 32-bit pointer writes inoperable
- Only CodeBreaker supports an 8-bit pointer write.
- Action Replay Version 1 may not support pointer writes.
- Action Replay Version 1/2 use the 8 command as a conditional hook. Other devices use it as a Master Level Test command. This means a couple of things.
- When you translate a conditional hook (9-type) from another device to Action Replay Version 1/2, it is translated into an 8 command.
- When you translate an 8 command from Action Replay Version 1/2 to some other device, it is changed to a conditional hook.
- There is no conversion for the 8 code type as used to by other devices to Action Replay Version 1/2.
- CodeBreaker Versions 1-5 do not support the conditional hook (neither 9 nor 8 code type).
-
- CodeBreaker Versions 1-6, Action Replay Versions 1 and 2, and GameShark Version 1 and 2 do not support value increments on multi-address writes.
- Bitwise operations are only supported by the CodeBreaker.
- CodeBreaker is the only standard device that supports 8-bit comparisons.