.: Introduction :. This unQue patch series is directed at restoring save support and reversing library changes in iQue titles so they function reliably on retail consoles and a wider range of emulators--at the expense of breaking iQue support. For the sake of emulators/flashcarts that look at GUID codes to differentiate these patches from retail titles, a GUID and timestamp were added. The device type is set to "B" for "BB Player" (not "Q"), and region to "C" for China or "W" for Taiwan/Hong Kong. Internal names are encoded using codepage 936 (normally CP 932). This information is not used by console. Bootstraps (IPL3) are swapped to match their retail counterparts; iQue does not, in fact, run this code, and many use the "development" IPL not tied to a CIC. "Zuhe Jiqiren", aka "Custom Robo" in other regions, uses emulated EEPROM on iQue. Data is loaded into the top of RDRAM and flushed back later. The BB Hack flags allowed mirroring the main controller to a port of your choice. The patched ROM expects a 4k EEPROM on its board; CIC is 6102. Up to two controllers are supported. Version 1.1 corrects mistranslations, missing text, and missing sound effects on the story mode handicap menu. .: Patching :. Apply the xdelta patch using the similarly named xdelta; use version 3.0.8 or up. The patch will only apply to a *decrypted* ROM in native (big-endian) byteorder. (The process for extracting your console's tickets and decrypting an extracted ROM are well outside the scope of this readme.) Common Names 2105103 00201F0F.z64 Zuhe Jiqiren.z64 Original File Checksums SHA-1 563755AFD3CF8D30EC10E100A2E032ADDF429246 (Decrypted) SHA-512 F83A966540CFFA62DE2DE4AEE161113D41EF468DDDF8BB11197A2AC92C7B50272C28A0406648974A0054FF9369ED9CEBC06D88FE7859A6B6756D03C237B3F47A Patched File Checksums SHA-1 706FDEEC78596ECF546A4749288EEE609CC5E679 SHA-512 2BDC05ADA5E07C2874A750E85E34277F478ADD137E878650F9919F1DA87C736EB296958C4C80ADCD75E7AC0786C5D62968078401D98A3975CCE5BDC779A3266F .: Notes :. *) Not all changes to the standard library are reversed, only those which directly affect operation or expose iQue-specific registers to emulators (console won't be affected, but emus may throw errors). This includes rewriting system initialization, controller pak detection, preNMI, and most dedicated save-related functions to some degree. Other code is already isolated when iQue hardware is not detected. *) Like its Japanese counterpart, it lacks a "no controller" warning. *) The debugger will crash when attempting to display menus and has been left disabled. The iQue timestamp--normally displayed with a missing font--is "Jul 15 2005 16:17:26". Menus remain in Japanese, with kanji referenced improperly from the updated font and formatting errors from the revised ASCII range. *) Unlike virtually every iQue title, this one uses (for the most part) a proper PC encoding format: codepage 936. *) Data table overrides still work in this version. If robo performance entries are found in ROM at 0xF00000, this will override the normal file. Use this to test modifications robo attributes, such as the number and type of jumps. If gun data entries are found in ROM at 0xF10000, this will override the normal file. Use this to test modifications to gun attributes, such as fire rate and projectiles. If bomb data entries are found in ROM at 0xF20000, this will override the normal file. Use this to test modifications to bomb attributes, such as explosion types and projectile models. If pod data entries are found in ROM at 0xF30000, this will override the normal file. Use this to test modifications to pod attributes, such as explosion types and projectile models. If leg data entries are found in ROM at 0xF40000, this will override the normal file. Use this to test modifications to leg attributes, such as the jet thrust effect and movement modifiers. If a copy of the common performance data is found in the ROM at 0xF50000 it will override the normal file. This allows modifying movement rates on different types of terrain and setting player HP. Format: 0x0 2 Total HP; displayed value is a permille (1.000) of this value. 0x2 2 Gravity(?), ->double, value * 0.3, * ~0.01; speed of both fall and rise rate in air, smaller being floatier 0x4 2 ???; ->float; used when robo lands on ground 0x6 2 Static effect duration; ->float, value * 0.1; loaded at initial cannonbot 0x8 2 Damage reduction percentage when down; (value * damage)->float, * 0.01 0xA 2 ???; uncertain where used... 0xC 2 ???; uncertain where used... 0xE 2 ???; uncertain where used... 0x10 2(1) Invincibility duration after rebirth; set too low will clip animation; reduced to a byte by most functions 0x12 2 Bomb cursor frame delay before being able to move it 0x14 2 Bomb cursor movement rate; ->float, value * 0.1 0x16 2 Pod release animation frame duration; frames between pressing button and deploy, you glide during this delay 0x18 2 Touched magma leap height 0x1A 2 Touched magma frames before rebirth; this can cut off the animation if not set high enough 0x1C 2 Touched magma permille damage taken; effectively subtracted from displayed health, so set to 1000 or higher to insta-win even with damage turned off. 0x1E 2 Paved/Metal: Speed difference causing dirt trails; ->float, value * 0.02 0x20 2 Paved/Metal: Sliding deceleration rate + distance; ->float, value * 0.002; lowering makes short sliding shots but ice-like movement sliding 0x22 2 Paved/Metal: Movement rate; ->float, value * 0.01 0x24 2 Snow/Sand: Speed difference causing dirt trails; ->float, value * 0.02 0x26 2 Snow/Sand: Sliding deceleration rate + distance; ->float, value * 0.002 0x28 2 Snow/Sand: Movement rate; ->float, value * 0.01 0x2A 2 Grass/Dirt: Speed difference causing dirt trails; ->float, value * 0.02 0x2C 2 Grass/Dirt: Sliding deceleration rate + distance; ->float, value * 0.002 0x2E 2 Grass/Dirt: Movement rate; ->float, value * 0.01 0x30 2 Ice: Speed difference causing dirt trails; ->float, value * 0.02 0x32 2 Ice: Sliding deceleration rate + distance; ->float, value * 0.002 0x34 2 Ice: Movement rate; ->float, value * 0.01 *) The handicap menu appears in story mode when you lose three or more matches. At six or more, it adds an option to reduce your opponent to half energy. Lose even more and you'll be advanced irregardless. Unfortunately, this menu was goofed up in a number of ways. First, two strings had the last byte of their 2-byte encodings copied over with NULLs. Bonus points, because one of these strings was a translated SFX trigger. These shouldn't have been translated in the first place--or every instance must be--since they are used for file lookup. Additionally, the minus sign & percentage were stripped from the energy lines thanks to the shift in encodings (the minus is actually a long vowel thingy in Japanese, the numerals wchars and not the identical ASCII glyphs). The same string is used for both entries. As of version 1.1, these have been corrected. Moving the cursor plays a sound, and the strings correspond to their options. .: Revisions :. Note: build dates can be found encoded at 0x34: year, month, day, hour, min, sec. Version 1.1 Mon Jul 4 14:51:08 2022 SHA-512 2BDC05ADA5E07C2874A750E85E34277F478ADD137E878650F9919F1DA87C736EB296958C4C80ADCD75E7AC0786C5D62968078401D98A3975CCE5BDC779A3266F Corrects mistranslations, missing text, and missing sound effects on the story mode handicap menu. Version 1.0 Mon Jun 3 19:31:51 2022 SHA-512 438B39E62953A59E81F17CEE6873B57C37096314D9D9AA16D450AD00F580703FDFBB36086E9F51DADE1BDA46944A8BECE2E62AA41BCBD1269CE3D6FF8F59D9E3 Initial release. Adds EEPROM save support for use on retail consoles. -Zoinkity