Break out your O'scope and just probe through all the address and data lines while it is running. Sometimes you will see something that looks different and that can be a clue that something is shorted together... or open/floating. Check at different points for the same line and make sure that they are exactly the same on all the chips that use those lines. Static checks can sometimes miss cross shorts to other active lines. It's easy for those cases to not be a factor with Leon's code but is killing the execution with the real game code running.
Mac