TASEmulators / fceux

FCEUX, a NES Emulator
http://fceux.com
GNU General Public License v2.0
1.19k stars 248 forks source link

(Earthbound Beginnings/MOTHER) Anti-Piracy screen triggers on patched ROM #719

Open PerdGateEnjoyer opened 6 months ago

PerdGateEnjoyer commented 6 months ago

Describe the bug I'm currently playing a patched version of MOTHER/Earthbound Beginnings (referred to as EB0 from here on out), and trying to start the dance sequence in the Live House.

Steps to reproduce the behavior:

  1. Apply the "EarthBound Beginnings Uncut" patch to a copy of EB0's US Localization prototype ROM
  2. Play the game up to Ellay/Valentine's
  3. Enter the Live House and talk to the blue man in front of the stage.
  4. Answer "Yes" to begin the dance sequence.
  5. Watch the game cut to an anti-piracy screen.

Expected behavior I expected the dancing sequence to proceed as normal, finishing with a boss battle against B.B. Boss.

Screenshot EB0 Hack Anti-Piracy

Additional context From what I could gather, this happens because EB0 occasionally looks at the ROM Checksum and cuts to an anti-piracy screen if it's not what it's supposed to be. This issue was circumvented by patching the ROM to disable this check. My copy of EB0 has a "Date Modified" of 6/21/2017, so I assume it's already patched. I presume the problem lies in the fact that I patched my ROM once again, with Luffym17's "Earthbound Beginnings Uncut" patch to de-censor sprites and make names consistent with Earthbound/MOTHER 2.

dragon2snow commented 6 months ago

It has nothing to do with the emulator. The game itself is tamper proof and should be triggered in RAM 0x0006 if it is not 0

PerdGateEnjoyer commented 6 months ago

I looked it up and found this page. https://datacrystal.romhacking.net/wiki/EarthBound_Beginnings/Anti-Piracy

(begin excerpt)

In order to disable all of Earthbound Zero's anti-piracy screens, change the following bytes in the ROM:

$3247D: Change “D0-11” to “EA-EA”
$32485: Change “D0-09” to “EA-EA”
$3286A: Change “D0-11” to “EA-EA”
$32872: Change “D0-09” to “EA-EA”

(end excerpt)

I feel like, upon reading the ROM, FCEUX should check if these values are set, then ask the user if they want to change them to the specified value in order to circumvent Anti-Piracy.

(Pseudocode) Check if the specified bytes are D0-xx or EA-EA

negativeExponent commented 6 months ago

fceux is not a "game specific" emulator, so it will not handle game specific byte changes like this. ask the rom patcher creator if specific rom areas has not been patched properly.