For those building their own PCBs I stumbled on a key way to make your board fail on the clones NEX and FC Twin. For some reason on both systems the two GND pins on the cart must both be connected. Only using one of them gets you a voltage of ~3V instead of 5V, likely a grounding issue. Don't know the exact technical reason, analog is scary! Have to dig up my Yobo to see if it has the same requirement.
Also should mention that CHR /A13 and CIRAM /CE must be connected for carts to work on the NEX. That is why four screen games like Gauntlet and the PowerPak will not work. They seem to use that as a power switch for the NES cart slot...
I vaguely remember that games using 4-screen mirroring and/or the MMC5 don't work with Game Genie... Is the CIRAM /CE thing an issue with GG as well?
IIRC many clones use those ground pins as an auto-switch to disable an internal game rom when a cart is inserted (via a 4066/transistor/etc)
Yobo (USA version) also has the ground requirement. None of those clones have internal games but it could definitely be left over from other NOAC designs.
One sure think is that it's bad to have the same ground connected to itself at both points. Then if both grounds are connected in the cartridge, they should not be connected inside the console too else you'd get very high noise and recive radio on your power supply or something like that.
Maybe it's not the case if the console is shielded proprely and if all PCBs have a ground plane (wich is the case with the NES).
Quote:
Then if both grounds are connected in the cartridge, they should not be connected inside the console too else you'd get very high noise and recive radio on your power supply or something like that.
WTF? Having multiple ground lines reduces impedance (resistance), which is a good thing for power supply lines. This is especially good when part of the connection is through the cartridge connector. Consider that stranded copper wire is a bunch of separate conductors in parallel.
Actually, it's fairly simple : Nintendo designed the cartridge connector with two ground pins to be able to drawn more current without caring about that (anyway, since unless any external supply is used, wich will never be the case in a NES cart, all current in the two ground pins have to be drawn from the single VCC pin, so this really doesn't change much things). Both ground pins are tied together both in cartridges and in the console, creating a ground loop. Since the console is entierely shielded, and both the console PCB and cartridge have ground planes, the ground loop has no negative effect.
Because famiclones are cheaply made and have probably unproper ground plane and/or shielding, tying both ground pins together in the console would have negative ground loop effects. Because of this, they assumed both ground pins were tied together by the cartridge inserted, so that they don't have to connect them together again in the console to avoid a ground loop. If this isn't done, the reults are hazardous.
When using a cart on the real NES, are there any side-effects to having the two ground pins not connected? From what is said here, it sounds like Nintendo always connected them but didn't need to. (I have very little EE knowledge, so my understanding in this field is very limited at best.)
I am farley certain you would need at least one on them connected to complete the circuit
Why would you want to break your game on clones?
the famiclones do not put your cartriges in any paticular risk at least not much more than playing it on anything. They are pointless sitting on a shelf
No, my point is, why would you intentionally want to make your game not work on a clone system.
Because you may wish to use functions which are broken on clones or push people to play your game in it's full glory.
kyuusaku wrote:
push people to play your game in it's full glory.
Or giving up on it...
A lot of my NES programs detect Nesticle (using the PPUSTATUS bug) and throw up a dialog box warning the player of possible incompatibility (press start to continue anyway). Is there a way for a program to detect a poorly designed clone and throw up a dialog box, or is there a way for a board to detect a poorly designed clone and make it visible to the program?
Quote:
Is there a way for a program to detect a poorly designed clone [...]
Sure, just package all my validation tests in first. :)
The way to detect a clone is the same as with Nesticle: invoke some behavior that it differs for. We'd need to do research on each clone to find the problems, then hopefully narrow them down to a common subset.
Quote:
Why would you want to break your game on clones?
It wasnt to purposely break games on clones, just something that might come up that does break them.
Using just one ground pin works fine on normal NES so some peeps (like me) might just assume it would be fine on clones too.
En evil thing would have to have a mapper that could read the key CIC state (or Ciclone) and refuse to boot (or show a warning message) if the CIC isn't proprely comunicating with the console's. Some SNES games does that.
And that wouldn't work with NES where the pin 4 would have been smashed.
That would break Famicom compatibility though :( I'm a 100% FC user but enjoy playing NES games too!
Yeah, I'd be against it myelf, because the CIC is a pure piece of crap.
Another idea would be to have a OR gate between a latched mapper bit and the CHR /A13 line before fitting VRAM A10. Then you can :
- Write zero to this latched bit, and write something to a namtable
- Write one to this bit, and then read something from the namtable
- If the read returned what was supposed to be written, then the cart is running on a famiclone (or on an emulator that runs it as a normal cart)
- Else, you're on a console accurate enough to run your code (CHR /A13 and VRAM A10 are not tied together internally).
Funily, adding pulldown (or pullups) resistors on the CHR data bus, this would be an easy way to return tile zero using palette 0 (or tile $ff using palette 3) with still having the PPU turned on when the CIRAM is forced to be disabled, similar to MMC5's fill mode.
Here’s an idea I am no expert and it probably would not be worth the effort but
Wouldn’t it be possible to use the test ROMs to check the accuracy of the "noac" then add additional components such as oscillators to increase its accuracy?
Reference/clock frequencies aren't what make the Famicom/NES on a chip ASICs inaccurate, it's more a lack of understanding of how the original hardware worked, most notably audio reproduction, when they were made. Which in the majority of cases was probably 10+ years ago.
I appreciate the information about the pins.
For people wanting to maximize hardware compatablity its good to know.
I wonder (cause I know nothing of eletrical engineering) if this is why Aladin Deck enhancers dont work in the NEX.
Al