So GigaBoots' SNES-Mini arrived over the weekend. I've spent a couple of hours with it, and I believe I have a pretty good handle on what's happening. On the select few systems.
We really don't know (unless someone has a service manual or a die shot) of how the DAC is constructed. But by exclusionary evidence, I've removed the 1CHIP completely and did a variety of tests.
Any op-amp based DAC is limited by the saturation level of its transistors. You can get close to 0V (around 50mV maybe) but you can't go to zero.
The 1CHIP DAC
can drive to zero. The only thing that can drive to zero is a current steering/stacking DAC.
In a current stacking DAC, you have a compensation node that will minimize voltage variation. This compensation node can be in-accessible as it's often internalized. Based on my assessment of the 1CHIP ASIC, this compensation node isn't internalized on the silicon, but is externally managed. - This is excellent news.
Pin 154 of the ASIC is the "compensation pin", it's supplied with a (C11) 47nF couple cap that goes into +5V.
Now keep in mind, C11 is a 47nF that's 20%. It could be 37.6nF up to 56nF. Depending on the age/performance of this capacitor, it can be inadequate to slow the response down. If the response rate is too fast you're going to generate too much current. This feedback node is going to realize it's generating too much current, too late. This is when you get the "wobblez" at the beginning of the stage until the feedback network finally lines it out. Much like Gigaboots' captures, you can clearly see this occurring.
Okay, so how do we fix this? We can slightly increase the capacitance C11 so that the voltage variation is minimized.
To properly address this, I recommend replacing C11 with a 470-560nF X5R/X7R capacitor. Keep the value under 1uF and above 300nF. Why keep it below 1uF? Because we don't want to affect the slew-rate so much that we degrade our bandwidth. Based on my analysis from today, C11 is the same between 1CHIP variants and the SNES Mini. So this applies to all 1CHIP revisions, (I think).
Gigaboots 1CHIP Mini with stock C11:
Notice the behavior. The capacitor doesn't have the gas to stabilize the voltage variation. The feedback network fights it for a few cycles until it eventually becomes stable, but it's too damned late, and your video already looks like shit, mid screen. Remember the spacing between those bars in Gigaboots' capture of MM:X? Look at the time-base of this distortion loop! I'VE GOT YOU, YOU DIRTY BASTARD!
Gigaboots 1CHIP Mini with C11 replaced with 470nF:
The capacitor is appropriately sized so that it can properly compensate the DAC for consistent stability.
I have replicated this issue across 4 different 1CHIP/SNES Mini systems now. Including Gigaboots' system which was in pretty bad shape, as far as Mega Man X is concerned. No more "bars" and no more "ghosting" across the screen.
I've only looked at this for a couple of hours, but I feel confident in saying:
1) No, this phenomenon isn't a problem with the 1CHIP ASIC itself, or its design. It's simply a matter of an aged component that may have lost performance or was slightly undersized by Nintendo. Cheap bastards..
2) Do I recommend lifting the DAC +Supply (pin 155) and limiting current which also in turn acts as a pseudo filter? I can understand Rama/Borti's theory behind this. But in my opinion, doing such isn't ideal and doesn't address the actual problem. Just replace C11 with a better sized capacitor as noted for the current steering DAC that the 1CHIP employs. We've deduced the "DAC design" here, so from this point it's fairly easy to see what's happening and more importantly, why. Less swing, less ring.
3) Is this a wide-spread issue? Not in my experience. I've sampled several 1CHIP systems when designing my own little doodads for the thing. I know RetroRGB has done extensive testing as well. It's certainly out there and systems can be affected, but I don't believe it's impacting more systems than it isn't.
4)Are bypass RGB boards responsible for this? No. Hasn't anything to do with this problem. This is a voltage stability issue that's the result of the compensating node not being able to properly stabilize the voltage variance. The feedback circuit doesn't work fast enough, so we get these shitty bars/ghosting that appear up to the mid-line of the screen.
It's a really simple thing to fix. It ain't no thang!