Re: [stella] Kool Aid Man compatible detection

Subject: Re: [stella] Kool Aid Man compatible detection
From: "Eckhard Stolberg" <Eckhard_Stolberg@xxxxxx>
Date: Sun, 10 Oct 2004 16:29:04 +0200
Thomas Jentzsch wrote:
lda #$7f
sta HMP1 ; enable P1
sta ENAM0 ; enable M0
sta GRP1
sta RESM0
sta RESP1
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.

Adam Wozniak wrote:
Eek.  Does this imply there are multiple versions of the TIA?
Is the one shown in
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.

Ciao, Eckhard Stolberg

Current Thread