Subject: Re: [stella] Kool Aid Man compatible detection|
From: "Eckhard Stolberg" <Eckhard_Stolberg@xxxxxx>
Date: Sun, 10 Oct 2004 16:29:04 +0200
sta HMP1 ; enable P1
sta ENAM0 ; enable M0
sta HMOVE ; HMOVE during RESPx
sta WSYNC ; start new line
sta CXCLR ; clear any collisions
sta WSYNC ; wait one line
lda CXM0P ; if M0/P1 collision then
sta console ; console = Kool Aid Man compatible (bit7=1)
The tricky part here is not to trigger HMOVE 'during' the RESPx. It's about triggering HMOVE in such a way that some of the positioning clock pulses for the players get generated during the visible part of the screen. This creates the extra shifts for the player graphics on the China-TIA but not on the normal TIA.
Eek. Does this imply there are multiple versions of the TIA? Is the one shown in http://www.atariage.com/2600/archives/schematics_tia/ a kool-aid compatible?
I don't think that there were different designs for the TIA. It seems to be more of a manufacturing difference for a certain production run of the TIA chip that led to a slight timing difference on some of the clock lines. AFAIK only the very last 2600 Jrs and 7800s, that were produced in China after late 1989, are affected by this. Andrew Towers describes the different behaviour of the China-TIA as a potential problem in his TIA document. (HMOVE during the visible scanline.)
IIRC the problem is that some of the clock lines are used for different purposes during the visible part of the screen and during the horizontal blank. The HMOVE positioning clock pulses are supposed to happen only during the horizontal blank. But you can also generate them during the visible part of the screen either by triggering the HMOVE register there or by triggering the Cosmic Ark starfield effect during HBLANK.
On a normal TIA the extra HMOVE clock pulses don't have any effect, but on the China-TIA they seem to be delayed enough to overlap with the pixel counter pulses in a line in such a way that the gap between two pulses will be bridged when it's time to compare the pixel counter with the player position counters. The result of this is that the two pulses will only be seen as one, and that therefore the players will be shifted to the right by one pixel, because the pixel counter matches the player position counters one clock cycle later. AFAIK only the player graphics are affected by this. The missiles and the ball are positioned the same on all TIAs.
BTW, while you are looking at the TIA schematics, could you find out when exactly the audio output is updated? I think the TIA changes the audio output twice per scanline, and I'd like to know when exactly this happens.