+-------------------------------+ | Nintendo World Cup: Pause Fix | +-------------------------------+ Author: Dacicus Version: 1.00 -= CONTENTS =- In addition to this Readme.txt file, you should have received a file called NWCPause.ips with the following properties: Size: 35 bytes MD5: 0f5d7792ccb67bc1415d5ae7bd567d8f SHA1: 4cbb02471a21f59917ec75b2abd2db44c673ef03 -= DESCRIPTION =- This hack allows any of the NES controllers to pause the game during a match. Originally, only controllers 1 and 3 (for those with a Four Score or Satellite) could pause. The idea for this hack arose from the inability of player 2 to pause during online play. It is compatible with my All-Team Versus Version hack, but the fix works in both Tournament Mode and VS Match Mode. The assembly code changes are explained below. -= PATCHING =- This hack is in IPS format. The patch should be applied to the U.S. version of the Nintendo World Cup ROM: GoodNES 3.14: Nintendo World Cup (U) [!].nes Size: 262,160 bytes MD5: fc0cd7c1b00d73d18e1f8af142c98fb8 SHA1: 75a2abb0d34be656ee98a9417f85a90ea4a2cbf8 Patching Example: - Get Lunar IPS from http://www.romhacking.net/utils/240/ and extract it to a directory of your choice - Start the Lunar IPS program - Click "Apply IPS Patch" - Navigate to the NWCPause.ips file and open it - Navigate to a copy of the Nintendo World Cup ROM and open it - You should get a message box saying that the file was successfully patched After patching, the file should have the following properties: Size: 262,160 bytes MD5: 5587c4cc7d5c55447f4c0ed0b0b4a9ea SHA1: f4670e58f4f239066c651e855f7f0b69bdd1e7d6 -= ASSEMBLY =- The status of controllers 1-4 is stored in RAM at $00DA-$00DD, respectively, with bit 4 indicating the status of the Start button for each controller. The game checks the status of the controller 1 start button via: $EA94:A5 DA LDA $00DA ; Accumulator now has controller 1 state $EA96:29 10 AND #$10 ; Check if Start pressed $EA98:F0 1C BEQ $EAB6 ; If not, go to $EAB6 This hack changes it to: $EA94:4C 00 BF JMP $BF00 ; Jump to unused space $EA97:EA NOP $EA98:F0 1C BEQ $EAB6 ; If Start not pressed, go to $EAB6 $BF00:A5 DA LDA $00DA ; Accumulator now has controller 1 state $BF02:05 DB ORA $00DB ; OR with controller 2 state $BF04:05 DC ORA $00DC ; OR with controller 3 state $BF06:05 DD ORA $00DD ; OR with controller 4 state $BF08:29 10 AND #$10 ; Check if Start pressed $BF0A:4C 98 EA JMP $EA98 ; Jump back