I've made a test ROM for investigating this effect. Explanation and usage described below. Please share thoughts about details I might have gotten wrong.
Code:
Altframe
========
This is a test ROM to investigate the interlacing effects on GBC and GBA
displays. The ROM draws alternating lines of two settable colors. On each
frame, it is toggled whether color 1 and 2 are shown on odd and even lines,
and vice versa.
Usage:
A: Swap color 1 and color 2.
Left: Toggle the red component of color 1.
Up: Toggle the green component of color 1.
Right: Toggle the blue component of color 1.
If the GBC display was truly interlaced, or "144i", such that every second
line was omitted in every second frame, you would expect this test to show
color 1 or color 2 solidly every frame. This is not what is being observed.
The colors are blended together, which means that in one way or the other,
the color information from every line is being used
However, it interesting to note that on GBC (at least on my GBC) one of the
colors is dominant. In my case this is color 2 (the right one.) If you swap
the same two colors back and forth, you would expect them to be mixed the
same way, such that the blended tone is identical no matter whether you toggle
colors 1 and 2.
My theory is that the display is driving the bias voltage for each pixel in a
bipolar fashion where a (sub)pixel's bias voltage is first driven on one side
on one frame, and then with the complentary value on the next frame. For some
reason, the polarization is not changed until the second voltage is applied.
Imaginary example, using -1V as the off bias voltage and +1V as the on voltage:
Let's say a green subpixel is constant on.
On frame 1, terminal 1 is driven to 1V.
On frame 2, terminal 2 is driven to 0V.
This gives a bias voltage of +1 between terminal 1 and 2, and the pixel's state
becomes visible on frame 2.
Let's say a green subpixel is constant off.
On frame 1, terminal 1 is driven to 0V.
On frame 2, terminal 2 is driven to 1V.
This gives a bias voltage of -1 between terminal 1 and 2, and the pixel's state
becomes visible on frame 2.
Now let's take a less trivial example where the green subpixel is toggled each
frame by the program. Depending on when this toggling started, one of two
things maybe be happening:
On frame 1, terminal 1 is driven to 1V. (Corresponding to on for frame 1)
On frame 2, terminal 2 is driven to 1V. (Corresponding to off for frame 2)
This gives a bias voltage of 0 between terminal 1 and 2, right between -1 and
+1. The colors are mixed and the pixel's state becomes visible on frame 2.
On frame 1, terminal 1 is driven to 0V. (Corresponding to off for frame 1)
On frame 2, terminal 2 is driven to 0V. (Corresponding to off for frame 2)
This gives a bias voltage of 0 between terminal 1 and 2, right between -1 and
+1. The colors are mixed and the pixel's state becomes visible on frame 2.
In theory, those two scenarios should be the same, as the resulting bias
voltage across each pixel should always be the same. no matter which
complentary voltage levels were used to arrive at the bias voltage. However
the transistors might be non-ideal, so that one of the terminals has a constant
voltage offset.
I believe this explains the observed behavior that one of the colors is
dominant whe