.: 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 tied to a CIC. "Yueye Motuo", aka "Excitebike 64" in other regions, uses emulated EEPROM on iQue. Data is loaded into the top of RDRAM and flushed back later. All controller slot devices are emulated as simple reads and writes to an assigned address range. Functions to check if a Rumble Pak is present and send it values are stubbed, and the rotor event handler removed. The BB Hack flags allowed mirroring the main controller to a port of your choice. The patched ROM expects a 16k EEPROM on its board; CIC is 6103. Up to four controllers, Controller Paks, and Rumble Paks are supported. .: 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 5102108 004DDA1C.z64 Yueye Motuo.z64 Original File Checksums (Decrypted) SHA-1 E20D95E7C53C3D7ED7857BB89F0C79C94578BB4F SHA-512 F04A9FB2A9CD06D0329F8CA32C7DEDFC438FA295D2C430E1D8C3E38D52186C48105D1D39BB070DD28FCD02E24DEB836D64C23C7326AE6D22CDF5E39CCCDD6463 Patched File Checksums SHA-1 9F8B980DAC988E4526B0F5C39613DC3FF7ABF7F3 SHA-512 1B7112F0CCF8DF10BA17CA962F2D68127D71CDDEACB992F28F517818C8FD112CBF0B17C933F408FD852E9B2FDF5CF0B25E3CA190A2746C2EFF21687DBFEBFFC3 .: 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. *) The "no controller" warning is in Chinese. *) The Controller Pak manager is rehooked and can be accessed by holding Start on controller 1 while the game is booting. It will only appear if a Controller Pak is in controller 1; other controllers are ignored. The menu is partially localized from Japanese to Chinese. *) Controller Paks and Rumble Paks are both supported and interchanging them should work, but in the case the game no longer reads the slot device at all please reset the game. This occured once during testing and was not repeatable, and frankly everything is a bit of a mess. *) Although the game will run without a 16k EEPROM you will not be able to save data; the "save to cart" option will be unselectable. A 4k EEPROM will not suffice. If data is not persistent, check the chip is mounted correctly or any relevant emulator settings. *) There will be a slight halt when moving between menus with a Controller Pak installed as it reads the state of it and any relevant Notes. iQue reprogrammed the menus to be aware of these, recoloring or omitting options. *) Unlike most titles, code that pushes motor triggers was removed and had to be reintroduced. To summarize, the 1/2KB of code that sets the rumble counters and registers based on input, collisions, and physics was excised entirely. Thankfully it's all in one clean block and could be hooked in hackishly after working out the difference in addressing. Due to changes to controller support not only was the rumble manager not called but basic input uses a completely different method incompatible with code from other regions. Aegh... Not sure what necessitated it, but this occurs in a subset of games using similar controller codebases (i.e.: Yoshi). *) Good work iQue team! For removing the extensive CIC-related protections, +10. Quite impressive. For turning all Controller Pak checks into constant read/copy routines that had to be removed to run above 1fps, -4 points. For clipping out the rotor physics, -2 just because it was annoying to fix. -1 for not spending all of 15 minutes making a BRS repacker, but +2 for cleaning up the extraneous data. -Zoinkity