"F-Zero X Weilai Saiche", more concisely "F-Zero X" in other regions, uses emulated SRAM on iQue. Patching the iQue title restores hardware SRAM and support for controller devices for use on a retail N64.
The patched ROM expects a 256k SRAM on its board; CIC is 6106. Rumble Paks are supported.
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.
----
This unQue patch series is directed at restoring save support and reversing library changes in iQue titles so they function reliably on retail N64 consoles and a wider range of emulators--at the expense of breaking iQue support.
.: 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.
"F-Zero X Weilai Saiche", more concisely "F-Zero X" in other regions, uses emulated SRAM 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 256k SRAM on its board; CIC is 6106. 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
5202103
004F60B7.z64
F-Zero X Weilai Saiche.z64
Original File Checksums (Decrypted)
SHA-1
3C7FA54BE9C0124C502F1C8DF53765F82D401508
SHA-512
F42CF4B939F167E396B3F958C510911EBE3FB6DF0605ACB95A384B81CFE048898141EB8AF412D7696824955D633A2F9735D60555835FEF092CB172AEBB913105
Patched File Checksums
SHA-1
08F87114DA46AE7B8C1344FEBD88BF42718FFAC6
SHA-512
075E44953E31E2BE29490A02EEAA8F18A4B01E6003734A6632C473632096C84114175F0C9A606251102E09CAA7F7F351D0B4D6EA84320AA8F55F9215124469A3
.: 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" remains in English.
*) Like several other iQue titles, mempak support is provided though unused.
*) Running with a 64DD attached will usually result in a black screen, just like its USA counterpart. It looks for either a retail USA unit or development drive, then tries to boot its disk. If the IPL is found and the drive itself can't start (a drive malfunction, etc.) the error message will appear garbled, the images not deinterlaced as expected. Disk resources on the cart not translated and near-identical to USA, with the exception of two ground images in the older, unused track editor set.
*) When run with a disk, values within the 6106 CIC's bootstrap provide physics values for play. If changed, the game will be unplayable in any practical sense of the word without circumventing this in disk-side code, making (potentially) crafting a translated disk more complicated.
*) Unlike most titles, code that pushes motor triggers was removed and had to be reintroduced. To summarize, the problem is twofold. The flag set to indicate rumble events should be processed (effectively "not in menus") is not set, and this is easily corrected. Much worse, 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. Still a massive pain. Not sure what necessitated it, but this occurs in a subset of games using similar controller codebases (i.e.: Yoshi).
-Zoinkity
*Common Names
5202103
004F60B7.z64
F-Zero X Weilai Saiche.z64
*Original File Checksums (Decrypted)
*SHA-1
3C7FA54BE9C0124C502F1C8DF53765F82D401508
*SHA-512
F42CF4B939F167E396B3F958C510911EBE3FB6DF0605ACB95A384B81CFE048898141EB8AF412D7696824955D633A2F9735D60555835FEF092CB172AEBB913105