Make X24C02 only enter read/write state if I2C address matches; fixes #731 #732
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I2C devices like the X24C02 EEPROM have a 7-bit device address that allows multiple devices to share an I2C bus. FCEUX's EEPROM emulation was completely ignoring the address, and unconditionally activating itself after any old 7 bits were written. This was causing SD Gundam Gaiden 2 to fail to communicate with the EEPROM properly.
This patch makes the EEPROM validate the upper 4 bits of the I2C address, which is good enough for SD Gundam Gaiden 2. I've verified that the patch doesn't break any of the other games with an X24C02.
Fixes #731