- Are there any undocumented features of the GBC ?
Yes. The byte at location $143 in a ROM determines whether the GBC operates in GBC mode
($80 or $c0) or 4-color GB mode (any other value.) That is the official info anyway.
Martin Korth has found that any of the following binary values at $143 cause strange
sprite colors & white-only background colors always (X = don't care):
1XXX01XX
1XXX10XX
1XXX11XX
It is as if bits 2 and/or 3 being set cause the colo(u)r palette registers to be
write-protected. On power up, the sprite palettes tend to be random pastel colo(u)rs &
the background palettes are white.
If you read HDMA5 ($ff55) after starting an HDMA you will read back the tile count you
wrote except the high bit will be 0. Every H-blank this count will decrement. After
reaching $00 it will change to $ff indicating that HDMA has completed. (i.e. If bit 7 is 0
HDMA is busy, otherwise HDMA is done.)
There are also several undocumented registers (info from Dark Fader):
$FF6C - bit 0 can be read/written
$FF72-$FF74 - whole byte can be read/written
$FF75 - bit 4-6 can be read/written
$FF76-$FF77 - Read only & set to $00
For the record, Nintendo recommends against using undocumented registers in order that
your code will work properly with future releases of hardware. It is not clear whether the
bit that tells you that HDMA is done was accidentally undocumented or undocumented on
purpose.