public function setGBCPalettePre($address_, $data)
{
if ($this->gbcRawPalette[$address_] == $data) {
return;
}
$this->gbcRawPalette[$address_] = $data;
if ($address_ >= 0x40 && ($address_ & 0x6) == 0) {
// stay transparent
return;
}
$value = ($this->gbcRawPalette[$address_ | 1] << 8) + $this->gbcRawPalette[$address_ & -2];
$this->gbcPalette[$address_ >> 1] = 0x80000000 + (($value & 0x1f) << 19) + (($value & 0x3e0) << 6) + (($value & 0x7c00) >> 7);
$this->invalidateAll($address_ >> 3);
}