xeij/DrawingMode.java (15/48)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E3ST_XHPT

  //================================================================================
  //E3ST_XHPG ($0000,$18xx,$1E67)
  //  概要
  //    E3ST  512ドット16色3プレーン>スプライト>テキスト
  //    XHPG  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットのカラーが0でないとき
  //          3番目のパレットを偶数化したパレットのカラー
  //        さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき
  //        1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=epc(tev(e3p())))!=0?v9:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):v0==1?(v17=epc(0))!=0?v17:ls4(v19=spp())!=0||(v20=txp())==0?spc(v19):tpc(v20):ls1(v0)==0?(v24=epc(v0))!=0?v24:ls4(v26=spp())!=0||(v27=txp())==0?spc(v26):tpc(v27):(v30=mix(epc(tev(v0)),epc(tod(e2q()))))!=0?v30:ls4(v37=spp())!=0||(v38=txp())==0?spc(v37):tpc(v38)
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e3p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=mix(epc(tev(p)),epc(tod(e2q()))))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e3p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e3p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E3ST_XHPG {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnMix2 (
                               VideoController.vcnPal16G8[p & -2],
                               VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnMix2 (
                               VideoController.vcnPal16G8[p & -2],
                               VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E3ST_XHPG

  //================================================================================
  //E3ST_XHPGT ($0000,$18xx,$1F67)
  //  概要
  //    E3ST  512ドット16色3プレーン>スプライト>テキスト
  //    XHPGT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットのカラーが0でないとき
  //          3番目のパレットを偶数化したパレットのカラー
  //        さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //      を混ぜたカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=epc(tev(e3p())))!=0?v9:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):v0==1?(v17=epc(0))!=0?v17:ls4(v19=spp())!=0||(v20=txp())==0?spc(v19):tpc(v20):ls1(v0)==0?(v24=epc(v0))!=0?v24:ls4(v26=spp())!=0||(v27=txp())==0?spc(v26):tpc(v27):mix(mix(epc(tev(v0)),epc(tod(e2q()))),ls4(v38=spp())!=0||(v39=txp())==0?spc(v38):tpc(v39))
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e3p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):mix(mix(epc(tev(p)),epc(tod(e2q()))),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e3p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):mix(mix(epc(p&-2),epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e3p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):cto(mix(mix(epc(p&-2),epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)))
  E3ST_XHPGT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E3ST_XHPGT

  //================================================================================
  //E4ST ($0000,$18xx,$006F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    拡張なし
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットが0でないとき
  //        2番目のカラーが0でないとき
  //          2番目のカラー
  //        さもなくば(2番目のカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットが0のとき)
  //        3番目のパレットが0でないとき
  //          3番目のカラーが0でないとき
  //            3番目のカラー
  //          さもなくば(3番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(3番目のパレットが0のとき)
  //          4番目のカラーが0でないとき
  //            4番目のカラー
  //          さもなくば(4番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()!=0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(e2p()!=0?(epc(e2p())!=0?epc(e2p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(e3p()!=0?(epc(e3p())!=0?epc(e3p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e4p())!=0?epc(e4p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))))
  //  中間コード2
  //    e1p()!=0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e2p()!=0?epc(e2p())!=0?epc(e2p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e3p()!=0?epc(e3p())!=0?epc(e3p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e4p())!=0?epc(e4p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())!=0?(v1=epc(v0))!=0?v1:ls4(v3=spp())!=0||(v4=txp())==0?spc(v3):tpc(v4):(v7=e2p())!=0?(v8=epc(v7))!=0?v8:ls4(v10=spp())!=0||(v11=txp())==0?spc(v10):tpc(v11):(v14=e3p())!=0?(v15=epc(v14))!=0?v15:ls4(v17=spp())!=0||(v18=txp())==0?spc(v17):tpc(v18):(v21=epc(e4p()))!=0?v21:ls4(v24=spp())!=0||(v25=txp())==0?spc(v24):tpc(v25)
  //  中間コード4
  //    (p=e1p())!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e2p())!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p())!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e4p()))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511]]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511]]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511]]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST

  //================================================================================
  //XE4ST
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    拡張あり
  XE4ST {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) {
        //   .A.XHPGT
      case 0b00010000:  //E4ST_XWC
      case 0b00010001:  //E4ST_XWC
      case 0b00010010:  //E4ST_XWC
      case 0b00010011:  //E4ST_XWC
        E4ST_XWC.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00010100:  //E4ST_XWP
      case 0b00010101:  //E4ST_XWP
      case 0b00010110:  //E4ST_XWP
      case 0b00010111:  //E4ST_XWP
        E4ST_XWP.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011000:  //E4ST_XHC
        E4ST.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011001:  //E4ST_XHCT
        E4ST_XHCT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011010:  //E4ST_XHCG
        E4ST_XHCG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011011:  //E4ST_XHCGT
        E4ST_XHCGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011101:  //E4ST_XHPT
        E4ST_XHPT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011110:  //E4ST_XHPG
        E4ST_XHPG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011111:  //E4ST_XHPGT
        E4ST_XHPGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b01000000:  //E4ST_A
      case 0b01000001:  //E4ST_A
      case 0b01000010:  //E4ST_A
      case 0b01000011:  //E4ST_A
      case 0b01000100:  //E4ST_A
      case 0b01000101:  //E4ST_A
      case 0b01000110:  //E4ST_A
      case 0b01000111:  //E4ST_A
      case 0b01001000:  //E4ST_A
      case 0b01001001:  //E4ST_A
      case 0b01001010:  //E4ST_A
      case 0b01001011:  //E4ST_A
      case 0b01001100:  //E4ST_A
      case 0b01001101:  //E4ST_A
      case 0b01001110:  //E4ST_A
      case 0b01001111:  //E4ST_A
      case 0b01010000:  //E4ST_A
      case 0b01010001:  //E4ST_A
      case 0b01010010:  //E4ST_A
      case 0b01010011:  //E4ST_A
      case 0b01010100:  //E4ST_A
      case 0b01010101:  //E4ST_A
      case 0b01010110:  //E4ST_A
      case 0b01010111:  //E4ST_A
      case 0b01011000:  //E4ST_A
      case 0b01011001:  //E4ST_A
      case 0b01011010:  //E4ST_A
      case 0b01011011:  //E4ST_A
      case 0b01011100:  //E4ST_A
      case 0b01011101:  //E4ST_A
      case 0b01011110:  //E4ST_A
      case 0b01011111:  //E4ST_A
        E4_A.drawRaster (src, dst, rh);
        break;
      default:
        E4ST.drawRaster (src, dst, rh);
        VideoController.vcnReportUnimplemented (XE4ST);
      }  //switch
    }  //drawRaster
  },  //XE4ST

  //================================================================================
  //E4ST_XWC ($0000,$18xx,$106F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XWC  優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        1番目のカラー(0は黒)
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        1番目のカラーが0でないとき
  //          1番目のカラー
  //        さもなくば(1番目のカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          2番目のカラー(0は黒)
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          2番目のカラーが0でないとき
  //            2番目のカラー
  //          さもなくば(2番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //      さもなくば(2番目のパレットが0のとき)
  //        3番目のパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            3番目のカラー(0は黒)
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            3番目のカラーが0でないとき
  //              3番目のカラー
  //            さもなくば(3番目のカラーが0のとき)
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //        さもなくば(3番目のパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            4番目のカラー(0は黒)
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            4番目のカラーが0でないとき
  //              4番目のカラー
  //            さもなくば(4番目のカラーが0のとき)
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()!=0?(ls1(epc(tev(e1p())))!=0?epc(e1p()):(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?epc(e2p()):(epc(e2p())!=0?epc(e2p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?epc(e3p()):(epc(e3p())!=0?epc(e3p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(ls1(epc(tev(e4p())))!=0?epc(e4p()):(epc(e4p())!=0?epc(e4p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))))))
  //  中間コード2
  //    e1p()!=0?ls1(epc(tev(e1p())))!=0?epc(e1p()):epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?epc(e2p()):epc(e2p())!=0?epc(e2p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?epc(e3p()):epc(e3p())!=0?epc(e3p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(epc(tev(e4p())))!=0?epc(e4p()):epc(e4p())!=0?epc(e4p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?epc(v0):(v5=epc(v0))!=0?v5:ls4(v7=spp())!=0||(v8=txp())==0?spc(v7):tpc(v8):(v11=e2p())!=0?ls1(epc(tev(v11)))!=0?epc(v11):(v16=epc(v11))!=0?v16:ls4(v18=spp())!=0||(v19=txp())==0?spc(v18):tpc(v19):(v22=e3p())!=0?ls1(epc(tev(v22)))!=0?epc(v22):(v27=epc(v22))!=0?v27:ls4(v29=spp())!=0||(v30=txp())==0?spc(v29):tpc(v30):ls1(epc(tev(v36=e4p())))!=0?epc(v36):(v38=epc(v36))!=0?v38:ls4(v40=spp())!=0||(v41=txp())==0?spc(v40):tpc(v41)
  //  中間コード4
  //    (p=e1p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(epc(tev(p=e4p())))!=0?epc(p):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(epc((p=e4p())&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e2p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(epc((p=e4p())&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST_XWC {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XWC

  //================================================================================
  //E4ST_XWP ($0000,$18xx,$146F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XWP  優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが0でないとき
  //            3番目のパレットを偶数化したパレットのカラー
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが0でないとき
  //            4番目のパレットを偶数化したパレットのカラー
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):((tev(e3p()))!=0?(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e4p()))!=0?epc(tev(e4p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):epc(tev(e1p())))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):tev(e3p())!=0?epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e4p()))!=0?epc(tev(e4p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e1p()))
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=tev(e3p()))!=0?(v11=epc(v9))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=epc(tev(e4p())))!=0?v17:ls4(v21=spp())!=0||(v22=txp())==0?spc(v21):tpc(v22):v0==1?(v25=epc(0))!=0?v25:ls4(v27=spp())!=0||(v28=txp())==0?spc(v27):tpc(v28):ls1(v0)==0?(v32=epc(v0))!=0?v32:ls4(v34=spp())!=0||(v35=txp())==0?spc(v34):tpc(v35):epc(tev(v0))
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=tev(e3p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e4p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):epc(tev(p))
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):epc(p&-2)
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e4p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):epo(p&-2)
  E4ST_XWP {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XWP

  //================================================================================
  //E4ST_XHCT ($0000,$18xx,$196F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHCT  0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        1番目のカラーと
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //        を混ぜたカラー(0は黒)
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        1番目のカラーが0でないとき
  //          1番目のカラー
  //        さもなくば(1番目のカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          2番目のカラーと
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //          を混ぜたカラー(0は黒)
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          2番目のカラーが0でないとき
  //            2番目のカラー
  //          さもなくば(2番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //      さもなくば(2番目のパレットが0のとき)
  //        3番目のパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            3番目のカラーと
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //            を混ぜたカラー(0は黒)
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            3番目のカラーが0でないとき
  //              3番目のカラー
  //            さもなくば(3番目のカラーが0のとき)
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //        さもなくば(3番目のパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            4番目のカラーと
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //            を混ぜたカラー(0は黒)
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            4番目のカラーが0でないとき
  //              4番目のカラー
  //            さもなくば(4番目のカラーが0のとき)
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e2p())!=0?epc(e2p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e3p())!=0?epc(e3p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(ls1(epc(tev(e4p())))!=0?mix(epc(e4p()),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e4p())!=0?epc(e4p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))))))
  //  中間コード2
  //    e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):epc(e2p())!=0?epc(e2p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):epc(e3p())!=0?epc(e3p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(epc(tev(e4p())))!=0?mix(epc(e4p()),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):epc(e4p())!=0?epc(e4p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?mix(epc(v0),ls4(v7=spp())!=0||(v8=txp())==0?spc(v7):tpc(v8)):(v11=epc(v0))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=e2p())!=0?ls1(epc(tev(v17)))!=0?mix(epc(v17),ls4(v24=spp())!=0||(v25=txp())==0?spc(v24):tpc(v25)):(v28=epc(v17))!=0?v28:ls4(v30=spp())!=0||(v31=txp())==0?spc(v30):tpc(v31):(v34=e3p())!=0?ls1(epc(tev(v34)))!=0?mix(epc(v34),ls4(v41=spp())!=0||(v42=txp())==0?spc(v41):tpc(v42)):(v45=epc(v34))!=0?v45:ls4(v47=spp())!=0||(v48=txp())==0?spc(v47):tpc(v48):ls1(epc(tev(v54=e4p())))!=0?mix(epc(v54),ls4(v58=spp())!=0||(v59=txp())==0?spc(v58):tpc(v59)):(v62=epc(v54))!=0?v62:ls4(v64=spp())!=0||(v65=txp())==0?spc(v64):tpc(v65)
  //  中間コード4
  //    (p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(epc(tev(p=e4p())))!=0?mix(epc(p),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(epc((p=e4p())&-2)&1)!=0?mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e2p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(epc((p=e4p())&-2)&1)!=0?cto(mix(epc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST_XHCT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHCT

  //================================================================================
  //E4ST_XHCG ($0000,$18xx,$1A6F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHCG  0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        1番目のパレットが奇数のとき
  //          2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー
  //          さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(1番目のパレットが偶数のとき)
  //          1番目のカラーが0でないとき
  //            1番目のカラー
  //          さもなくば(1番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          2番目のカラーが0でないとき
  //            2番目のカラー
  //          さもなくば(2番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //      さもなくば(2番目のパレットが0のとき)
  //        3番目のパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            3番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラー(0は黒)
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            3番目のパレットが奇数のとき
  //              パレット1のカラーが0でないとき
  //                パレット1のカラー
  //              さもなくば(パレット1のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //            さもなくば(3番目のパレットが偶数のとき)
  //              3番目のカラーが0でないとき
  //                3番目のカラー
  //              さもなくば(3番目のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //        さもなくば(3番目のパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            4番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラー(0は黒)
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            4番目のパレットが奇数のとき
  //              パレット1のカラーが0でないとき
  //                パレット1のカラー
  //              さもなくば(パレット1のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //            さもなくば(4番目のパレットが偶数のとき)
  //              4番目のカラーが0でないとき
  //                4番目のカラー
  //              さもなくば(4番目のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):(epc(e2p())!=0?epc(e2p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?mix(epc(tev(e3p())),epc(1)):(ls1(e3p())!=0?(epc(1)!=0?epc(1):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e3p())!=0?epc(e3p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):(ls1(epc(tev(e4p())))!=0?mix(epc(tev(e4p())),epc(1)):(ls1(e4p())!=0?(epc(1)!=0?epc(1):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e4p())!=0?epc(e4p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))))))
  //  中間コード2
  //    e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):epc(e2p())!=0?epc(e2p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?mix(epc(tev(e3p())),epc(1)):ls1(e3p())!=0?epc(1)!=0?epc(1):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e3p())!=0?epc(e3p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(epc(tev(e4p())))!=0?mix(epc(tev(e4p())),epc(1)):ls1(e4p())!=0?epc(1)!=0?epc(1):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e4p())!=0?epc(e4p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())!=0?ls1(v2=epc(tev(v0)))!=0?mix(v2,epc(tod(e2q()))):ls1(v0)!=0?(v9=epc(tod(e2q())))!=0?v9:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=epc(v0))!=0?v17:ls4(v19=spp())!=0||(v20=txp())==0?spc(v19):tpc(v20):(v23=e2p())!=0?ls1(v25=epc(tev(v23)))!=0?mix(v25,epc(tod(e2q()))):(v31=epc(v23))!=0?v31:ls4(v33=spp())!=0||(v34=txp())==0?spc(v33):tpc(v34):(v37=e3p())!=0?ls1(v39=epc(tev(v37)))!=0?mix(v39,epc(1)):ls1(v37)!=0?(v44=epc(1))!=0?v44:ls4(v46=spp())!=0||(v47=txp())==0?spc(v46):tpc(v47):(v50=epc(v37))!=0?v50:ls4(v52=spp())!=0||(v53=txp())==0?spc(v52):tpc(v53):ls1(v57=epc(tev(v59=e4p())))!=0?mix(v57,epc(1)):ls1(v59)!=0?(v63=epc(1))!=0?v63:ls4(v65=spp())!=0||(v66=txp())==0?spc(v65):tpc(v66):(v69=epc(v59))!=0?v69:ls4(v71=spp())!=0||(v72=txp())==0?spc(v71):tpc(v72)
  //  中間コード4
  //    (p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(1)):ls1(p)!=0?(p=epc(1))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p=epc(tev(q=e4p())))!=0?mix(p,epc(1)):ls1(q)!=0?(p=epc(1))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(q))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(p&1)!=0?(p=epc(e2q()|1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(1)):(p&1)!=0?(p=epc(1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):((p=epc((q=e4p())&-2))&1)!=0?mix(p,epc(1)):(q&1)!=0?(p=epc(1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(q))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(e2q()|1))):(p&1)!=0?(p=epc(e2q()|1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(e2q()|1))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(1))):(p&1)!=0?(p=epc(1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):((p=epc((q=e4p())&-2))&1)!=0?cto(mix(p,epc(1))):(q&1)!=0?(p=epc(1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(q))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST_XHCG {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[1])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[1])] :
                            (q & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[1])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[1])] :
                            (q & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[1])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[1])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHCG

  //================================================================================
  //E4ST_XHCGT ($0000,$18xx,$1B6F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHCGT  0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //        を混ぜたカラー(0は黒)
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        1番目のパレットが奇数のとき
  //          2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー
  //          さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(1番目のパレットが偶数のとき)
  //          1番目のカラーが0でないとき
  //            1番目のカラー
  //          さもなくば(1番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //          を混ぜたカラー(0は黒)
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          2番目のカラーが0でないとき
  //            2番目のカラー
  //          さもなくば(2番目のカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //      さもなくば(2番目のパレットが0のとき)
  //        3番目のパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            3番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラーにさらに
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //            を混ぜたカラー(0は黒)
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            3番目のパレットが奇数のとき
  //              パレット1のカラーが0でないとき
  //                パレット1のカラー
  //              さもなくば(パレット1のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //            さもなくば(3番目のパレットが偶数のとき)
  //              3番目のカラーが0でないとき
  //                3番目のカラー
  //              さもなくば(3番目のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //        さもなくば(3番目のパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            4番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラーにさらに
  //              スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                スプライトカラー(0は黒)
  //              さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                テキストカラー(0は黒)
  //            を混ぜたカラー(0は黒)
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            4番目のパレットが奇数のとき
  //              パレット1のカラーが0でないとき
  //                パレット1のカラー
  //              さもなくば(パレット1のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //            さもなくば(4番目のパレットが偶数のとき)
  //              4番目のカラーが0でないとき
  //                4番目のカラー
  //              さもなくば(4番目のカラーが0のとき)
  //                スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //                  スプライトカラー(0は黒)
  //                さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //                  テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e2p())!=0?epc(e2p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?mix(mix(epc(tev(e3p())),epc(1)),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(ls1(e3p())!=0?(epc(1)!=0?epc(1):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e3p())!=0?epc(e3p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):(ls1(epc(tev(e4p())))!=0?mix(mix(epc(tev(e4p())),epc(1)),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(ls1(e4p())!=0?(epc(1)!=0?epc(1):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(e4p())!=0?epc(e4p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))))))
  //  中間コード2
  //    e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):epc(e2p())!=0?epc(e2p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?mix(mix(epc(tev(e3p())),epc(1)),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):ls1(e3p())!=0?epc(1)!=0?epc(1):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e3p())!=0?epc(e3p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(epc(tev(e4p())))!=0?mix(mix(epc(tev(e4p())),epc(1)),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):ls1(e4p())!=0?epc(1)!=0?epc(1):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(e4p())!=0?epc(e4p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())!=0?ls1(v2=epc(tev(v0)))!=0?mix(mix(v2,epc(tod(e2q()))),ls4(v10=spp())!=0||(v11=txp())==0?spc(v10):tpc(v11)):ls1(v0)!=0?(v15=epc(tod(e2q())))!=0?v15:ls4(v19=spp())!=0||(v20=txp())==0?spc(v19):tpc(v20):(v23=epc(v0))!=0?v23:ls4(v25=spp())!=0||(v26=txp())==0?spc(v25):tpc(v26):(v29=e2p())!=0?ls1(v31=epc(tev(v29)))!=0?mix(mix(v31,epc(tod(e2q()))),ls4(v39=spp())!=0||(v40=txp())==0?spc(v39):tpc(v40)):(v43=epc(v29))!=0?v43:ls4(v45=spp())!=0||(v46=txp())==0?spc(v45):tpc(v46):(v49=e3p())!=0?ls1(v51=epc(tev(v49)))!=0?mix(mix(v51,epc(1)),ls4(v57=spp())!=0||(v58=txp())==0?spc(v57):tpc(v58)):ls1(v49)!=0?(v62=epc(1))!=0?v62:ls4(v64=spp())!=0||(v65=txp())==0?spc(v64):tpc(v65):(v68=epc(v49))!=0?v68:ls4(v70=spp())!=0||(v71=txp())==0?spc(v70):tpc(v71):ls1(v75=epc(tev(v77=e4p())))!=0?mix(mix(v75,epc(1)),ls4(v82=spp())!=0||(v83=txp())==0?spc(v82):tpc(v83)):ls1(v77)!=0?(v87=epc(1))!=0?v87:ls4(v89=spp())!=0||(v90=txp())==0?spc(v89):tpc(v90):(v93=epc(v77))!=0?v93:ls4(v95=spp())!=0||(v96=txp())==0?spc(v95):tpc(v96)
  //  中間コード4
  //    (p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(1)),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):ls1(p)!=0?(p=epc(1))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p=epc(tev(q=e4p())))!=0?mix(mix(p,epc(1)),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):ls1(q)!=0?(p=epc(1))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(q))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(p&1)!=0?(p=epc(e2q()|1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(p&1)!=0?(p=epc(1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):((p=epc((q=e4p())&-2))&1)!=0?mix(mix(p,epc(1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q&1)!=0?(p=epc(1))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(q))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(p&1)!=0?(p=epc(e2q()|1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(p&1)!=0?(p=epc(1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):((p=epc((q=e4p())&-2))&1)!=0?cto(mix(mix(p,epc(1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q&1)!=0?(p=epc(1))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(q))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST_XHCGT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (p & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q & 1) != 0 ?
                            (p = VideoController.vcnPal16G8[1]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (p & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q & 1) != 0 ?
                                (p = VideoController.vcnPal16G8[1]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHCGT

  //================================================================================
  //E4ST_XHPT ($0000,$18xx,$1D6F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHPT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが0でないとき
  //            3番目のパレットを偶数化したパレットのカラー
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが0でないとき
  //            4番目のパレットを偶数化したパレットのカラー
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラーと
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //      を混ぜたカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):((tev(e3p()))!=0?(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e4p()))!=0?epc(tev(e4p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):mix(epc(tev(e1p())),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):tev(e3p())!=0?epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e4p()))!=0?epc(tev(e4p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):mix(epc(tev(e1p())),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=tev(e3p()))!=0?(v11=epc(v9))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=epc(tev(e4p())))!=0?v17:ls4(v21=spp())!=0||(v22=txp())==0?spc(v21):tpc(v22):v0==1?(v25=epc(0))!=0?v25:ls4(v27=spp())!=0||(v28=txp())==0?spc(v27):tpc(v28):ls1(v0)==0?(v32=epc(v0))!=0?v32:ls4(v34=spp())!=0||(v35=txp())==0?spc(v34):tpc(v35):mix(epc(tev(v0)),ls4(v42=spp())!=0||(v43=txp())==0?spc(v42):tpc(v43))
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=tev(e3p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e4p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):mix(epc(tev(p)),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):mix(epc(p&-2),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e4p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):cto(mix(epc(p&-2),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)))
  E4ST_XHPT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHPT

  //================================================================================
  //E4ST_XHPG ($0000,$18xx,$1E6F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHPG  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが0でないとき
  //            3番目のパレットを偶数化したパレットのカラー
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが0でないとき
  //            4番目のパレットを偶数化したパレットのカラー
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき
  //        1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):((tev(e3p()))!=0?(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e4p()))!=0?epc(tev(e4p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):tev(e3p())!=0?epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e4p()))!=0?epc(tev(e4p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=tev(e3p()))!=0?(v11=epc(v9))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=epc(tev(e4p())))!=0?v17:ls4(v21=spp())!=0||(v22=txp())==0?spc(v21):tpc(v22):v0==1?(v25=epc(0))!=0?v25:ls4(v27=spp())!=0||(v28=txp())==0?spc(v27):tpc(v28):ls1(v0)==0?(v32=epc(v0))!=0?v32:ls4(v34=spp())!=0||(v35=txp())==0?spc(v34):tpc(v35):(v38=mix(epc(tev(v0)),epc(tod(e2q()))))!=0?v38:ls4(v45=spp())!=0||(v46=txp())==0?spc(v45):tpc(v46)
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=tev(e3p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e4p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(q=mix(epc(tev(p)),epc(tod(e2q()))))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e4p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  E4ST_XHPG {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnMix2 (
                               VideoController.vcnPal16G8[p & -2],
                               VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (q = VideoController.vcnMix2 (
                               VideoController.vcnPal16G8[p & -2],
                               VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (q = VideoController.vcnMix2 (
                                   VideoController.vcnPal16G8[p & -2],
                                   VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHPG

  //================================================================================
  //E4ST_XHPGT ($0000,$18xx,$1F6F)
  //  概要
  //    E4ST  512ドット16色4プレーン>スプライト>テキスト
  //    XHPGT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットが0のとき
  //      2番目のパレットを偶数化したパレットが0でないとき
  //        2番目のパレットを偶数化したパレットのカラーが0でないとき
  //          2番目のパレットを偶数化したパレットのカラー
  //        さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき)
  //          スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //            スプライトカラー(0は黒)
  //          さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //            テキストカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //        3番目のパレットを偶数化したパレットが0でないとき
  //          3番目のパレットを偶数化したパレットのカラーが0でないとき
  //            3番目のパレットを偶数化したパレットのカラー
  //          さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //        さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //          4番目のパレットを偶数化したパレットのカラーが0でないとき
  //            4番目のパレットを偶数化したパレットのカラー
  //          さもなくば(4番目のパレットを偶数化したパレットのカラーが0のとき)
  //            スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //              スプライトカラー(0は黒)
  //            さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //              テキストカラー(0は黒)
  //    1番目のパレットが1のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //      を混ぜたカラー(0は黒)
  //  中間コード1
  //    (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):((tev(e3p()))!=0?(epc(tev(e3p()))!=0?epc(tev(e3p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(epc(tev(e4p()))!=0?epc(tev(e4p())):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))):e1p()==1?(epc(0)!=0?epc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):tev(e3p())!=0?epc(tev(e3p()))!=0?epc(tev(e3p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):epc(tev(e4p()))!=0?epc(tev(e4p())):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):e1p()==1?epc(0)!=0?epc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))
  //  中間コード3
  //    (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:ls4(v5=spp())!=0||(v6=txp())==0?spc(v5):tpc(v6):(v9=tev(e3p()))!=0?(v11=epc(v9))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14):(v17=epc(tev(e4p())))!=0?v17:ls4(v21=spp())!=0||(v22=txp())==0?spc(v21):tpc(v22):v0==1?(v25=epc(0))!=0?v25:ls4(v27=spp())!=0||(v28=txp())==0?spc(v27):tpc(v28):ls1(v0)==0?(v32=epc(v0))!=0?v32:ls4(v34=spp())!=0||(v35=txp())==0?spc(v34):tpc(v35):mix(mix(epc(tev(v0)),epc(tod(e2q()))),ls4(v46=spp())!=0||(v47=txp())==0?spc(v46):tpc(v47))
  //  中間コード4
  //    (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=tev(e3p()))!=0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(tev(e4p())))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=epc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):mix(mix(epc(tev(p)),epc(tod(e2q()))),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード5
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p=epc(e4p()&-2))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):p==1?(p=epc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=epc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):mix(mix(epc(p&-2),epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))
  //  中間コード6
  //    (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=e3p()&-2)!=0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p=epc(e4p()&-2))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):p==1?(p=epc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=epc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):cto(mix(mix(epc(p&-2),epc(e2q()|1)),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)))
  E4ST_XHPGT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //2番目のパレットのGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);  //ONとみなす
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //3番目のパレットのGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //4番目のパレットのGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        gx3rd += half;
        gx4th += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            p == 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                p == 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //E4ST_XHPGT

  //================================================================================
  //F1ST ($0001,$18xx,$0063)
  //  概要
  //    F1ST  512ドット256色1プレーン>スプライト>テキスト
  //    拡張なし
  //  手順
  //    1番目のカラーが0でないとき
  //      1番目のカラー
  //    さもなくば(1番目のカラーが0のとき)
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラー(0は黒)
  //  中間コード1
  //    (fpc(f1p())!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())))
  //  中間コード2
  //    fpc(f1p())!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    (v0=fpc(f1p()))!=0?v0:ls4(v3=spp())!=0||(v4=txp())==0?spc(v3):tpc(v4)
  //  中間コード4
  //    (p=fpc(f1p()))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (p=fpc(f1p()))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (p=fpc(f1p()))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  F1ST {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのbit3-0のGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //1番目のパレットのbit7-4のGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                             GraphicScreen.graM4[gy1st | gx1st & 511])]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 1 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 2 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 3 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 4 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 5 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 6 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 7 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                             GraphicScreen.graM4[gy1st | gx1st & 511])]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 1 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 2 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 3 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 4 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 5 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 6 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((p = VideoController.vcnPal16G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                 GraphicScreen.graM4[gy1st | gx1st + 7 & 511])]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //F1ST

  //================================================================================
  //XF1ST
  //  概要
  //    F1ST  512ドット256色1プレーン>スプライト>テキスト
  //    拡張あり
  XF1ST {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) {
        //   .A.XHPGT
      case 0b00010000:  //F1ST_XWC
      case 0b00010001:  //F1ST_XWC
      case 0b00010010:  //F1ST_XWC
      case 0b00010011:  //F1ST_XWC
        F1ST_XWC.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00010100:  //F1ST_XWP
      case 0b00010101:  //F1ST_XWP
      case 0b00010110:  //F1ST_XWP
      case 0b00010111:  //F1ST_XWP
        F1ST_XWP.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011000:  //F1ST_XHC
        F1ST.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011001:  //F1ST_XHCT
        F1ST_XHCT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011010:  //F1ST_XHCG
        F1ST_XHCG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011011:  //F1ST_XHCGT
        F1ST_XHCGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011101:  //F1ST_XHPT
        F1ST_XHPT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011110:  //F1ST_XHPG
        F1ST_XHPG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011111:  //F1ST_XHPGT
        F1ST_XHPGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b01000000:  //F1ST_A
      case 0b01000001:  //F1ST_A
      case 0b01000010:  //F1ST_A
      case 0b01000011:  //F1ST_A
      case 0b01000100:  //F1ST_A
      case 0b01000101:  //F1ST_A
      case 0b01000110:  //F1ST_A
      case 0b01000111:  //F1ST_A
      case 0b01001000:  //F1ST_A
      case 0b01001001:  //F1ST_A
      case 0b01001010:  //F1ST_A
      case 0b01001011:  //F1ST_A
      case 0b01001100:  //F1ST_A
      case 0b01001101:  //F1ST_A
      case 0b01001110:  //F1ST_A
      case 0b01001111:  //F1ST_A
      case 0b01010000:  //F1ST_A
      case 0b01010001:  //F1ST_A
      case 0b01010010:  //F1ST_A
      case 0b01010011:  //F1ST_A
      case 0b01010100:  //F1ST_A
      case 0b01010101:  //F1ST_A
      case 0b01010110:  //F1ST_A
      case 0b01010111:  //F1ST_A
      case 0b01011000:  //F1ST_A
      case 0b01011001:  //F1ST_A
      case 0b01011010:  //F1ST_A
      case 0b01011011:  //F1ST_A
      case 0b01011100:  //F1ST_A
      case 0b01011101:  //F1ST_A
      case 0b01011110:  //F1ST_A
      case 0b01011111:  //F1ST_A
        F1_A.drawRaster (src, dst, rh);
        break;
      default:
        F1ST.drawRaster (src, dst, rh);
        VideoController.vcnReportUnimplemented (XF1ST);
      }  //switch
    }  //drawRaster
  },  //XF1ST

  //================================================================================
  //F1ST_XWC ($0001,$18xx,$1063)
  //  概要
  //    F1ST  512ドット256色1プレーン>スプライト>テキスト
  //    XWC  優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //      1番目のカラー(0は黒)
  //    さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //  中間コード1
  //    (ls1(fpc(tev(f1p())))!=0?fpc(f1p()):(fpc(f1p())!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    ls1(fpc(tev(f1p())))!=0?fpc(f1p()):fpc(f1p())!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    ls1(fpc(tev(v3=f1p())))!=0?fpc(v3):(v5=fpc(v3))!=0?v5:ls4(v7=spp())!=0||(v8=txp())==0?spc(v7):tpc(v8)
  //  中間コード4
  //    ls1(fpc(tev(p=f1p())))!=0?fpc(p):(q=fpc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (fpc((p=f1p())&-2)&1)!=0?fpc(p):(q=fpc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (fpc((p=f1p())&-2)&1)!=0?fpo(p):(q=fpc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  F1ST_XWC {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのbit3-0のGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //1番目のパレットのbit7-4のGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 5] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 6] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 7] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //F1ST_XWC

  //================================================================================
  //F1ST_XWP ($0001,$18xx,$1463)
  //  概要
  //    F1ST  512ドット256色1プレーン>スプライト>テキスト
  //    XWP  優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが1以下のとき
  //      グラフィックパレット0のカラーが0でないとき
  //        グラフィックパレット0のカラー
  //      さもなくば(グラフィックパレット0のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラー(0は黒)
  //  中間コード1
  //    (f1p()<=1?(fpc(0)!=0?fpc(0):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):ls1(f1p())==0?(fpc(f1p())!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):fpc(tev(f1p())))
  //  中間コード2
  //    f1p()<=1?fpc(0)!=0?fpc(0):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):ls1(f1p())==0?fpc(f1p())!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()):fpc(tev(f1p()))
  //  中間コード3
  //    (v0=f1p())<=1?(v1=fpc(0))!=0?v1:ls4(v3=spp())!=0||(v4=txp())==0?spc(v3):tpc(v4):ls1(v0)==0?(v8=fpc(v0))!=0?v8:ls4(v10=spp())!=0||(v11=txp())==0?spc(v10):tpc(v11):fpc(tev(v0))
  //  中間コード4
  //    (p=f1p())<=1?(p=fpc(0))!=0?p:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):ls1(p)==0?(q=fpc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q):fpc(tev(p))
  //  中間コード5
  //    (p=f1p())<=1?(p=fpc(0))!=0?p:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):(p&1)==0?(q=fpc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q):fpc(p&-2)
  //  中間コード6
  //    (p=f1p())<=1?(p=fpc(0))!=0?cto(p):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):(p&1)==0?(q=fpc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q):fpo(p&-2)
  F1ST_XWP {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのbit3-0のGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //1番目のパレットのbit7-4のGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      } else {  //テキスト桁境界に合っていないとき
        //                                                             ts=1のとき
        int tt = ts + 8;                                             //tt=9
        ts += 16;                                                    //ts=17
        //                                                             ........ ........ ........ 01234567  m8[ta0+tc]
        int p0 = MainMemory.mmrM8[ta0 + tc] << ts;                   //.......0 1234567_ ________ ________  p0=m8[ta0+tc]<<ts
        int p1 = MainMemory.mmrM8[ta1 + tc] << ts;
        int p2 = MainMemory.mmrM8[ta2 + tc] << ts;
        int p3 = MainMemory.mmrM8[ta3 + tc] << ts;
        tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
        while (da < db) {
          //                                                           ........ ........ .1234567 ________  p0>>tt
          //                                                           ........ ........ .1234567 89abcdef  p0>>tt|m8[ta0+tc]&255
          p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts;  //12345678 9abcdef_ ________ ________  p0=(p0>>tt|m8[ta0+tc]&255)<<ts
          p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts;  //~~~~~~~~
          p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts;  //ここを使う
          p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts;
          int tp = (VideoController.VCN_TXP3[p3 >>> 24] |
                    VideoController.VCN_TXP2[p2 >>> 24] |
                    VideoController.VCN_TXP1[p1 >>> 24] |
                    VideoController.VCN_TXP0[p0 >>> 24]);  //符号なし右シフトで&255を省略
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            (p = VideoController.vcnPal16G8[0]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            (p & 1) == 0 ?
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                (p = VideoController.vcnPal16G8[0]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                (p & 1) == 0 ?
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //F1ST_XWP

  //================================================================================
  //F1ST_XHCT ($0001,$18xx,$1963)
  //  概要
  //    F1ST  512ドット256色1プレーン>スプライト>テキスト
  //    XHCT  0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //      1番目のカラーと
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //      を混ぜたカラー(0は黒)
  //    さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //      1番目のカラーが0でないとき
  //        1番目のカラー
  //      さもなくば(1番目のカラーが0のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラー(0は黒)
  //  中間コード1
  //    (ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))):(fpc(f1p())!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp()))))
  //  中間コード2
  //    ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())):fpc(f1p())!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp()):tpc(txp())
  //  中間コード3
  //    ls1(fpc(tev(v3=f1p())))!=0?mix(fpc(v3),ls4(v7=spp())!=0||(v8=txp())==0?spc(v7):tpc(v8)):(v11=fpc(v3))!=0?v11:ls4(v13=spp())!=0||(v14=txp())==0?spc(v13):tpc(v14)
  //  中間コード4
  //    ls1(fpc(tev(p=f1p())))!=0?mix(fpc(p),ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)):(q=fpc(p))!=0?q:ls4(p=spp())!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード5
  //    (fpc((p=f1p())&-2)&1)!=0?mix(fpc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)):(q=fpc(p))!=0?q:((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q)
  //  中間コード6
  //    (fpc((p=f1p())&-2)&1)!=0?cto(mix(fpc(p),((p=spp())&15)!=0||(q=txp())==0?spc(p):tpc(q))):(q=fpc(p))!=0?cto(q):((p=spp())&15)!=0||(q=txp())==0?spo(p):tpo(q)
  F1ST_XHCT {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      SpriteScreen.sprStep3 ();
      int sx = 16;  //スプライトx座標
      int pn = VideoController.vcnReg2Curr & 3;  //1番目のパレットのbit3-0のGVRAMページ番号
      int gx1st = CRTC.crtR12GrXCurr[pn];
      int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 2 & 3;  //1番目のパレットのbit7-4のGVRAMページ番号
      int gx2nd = CRTC.crtR12GrXCurr[pn];
      int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int ty = CRTC.crtR11TxYZero + src & 1023;  //ラスタ
      int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3;  //テキスト桁位置
      int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7);  //ラスタブロックアドレス
      int ta1 = 0x00020000 + ta0;
      int ta2 = 0x00040000 + ta0;
      int ta3 = 0x00060000 + ta0;
      int ts = CRTC.crtR10TxXCurr & 7;  //テキスト桁境界からのずれ
      int da = dst << XEiJ.PNL_BM_OFFSET_BITS;  //ARGB出力インデックス
      int db = da + XEiJ.pnlScreenWidth;  //ARGB出力インデックスの終了位置
      if (rh) {
        int half = XEiJ.pnlScreenWidth >> 4 << 3;
        sx += half;
        gx1st += half;
        gx2nd += half;
        tc = tc + (half >> 3) & CRTC.crtMask511;
        da += half;
      }
      if (ts == 0) {  //テキスト桁境界に合っているとき
        while (da < db) {
          int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] |
                    VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] |
                    VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] |
                    VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]);
          tc = tc + 1 & CRTC.crtMask511;  //次回のテキスト桁位置
          int p, q;
          XEiJ.pnlBM[da] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                                VideoController.vcnPal16TS[p] :
                                VideoController.vcnPal16TS[q])] :
                            (q = VideoController.vcnPal16G8[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            VideoController.vcnPal32TS[p] :
                            VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 1] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 2] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 3] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
                                    VideoController.vcnPal16TS[q])] :
                                (q = VideoController.vcnPal16G8[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                VideoController.vcnPal32TS[p] :
                                VideoController.vcnPal32TS[q]);
          XEiJ.pnlBM[da + 4] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                    VideoController.vcnPal16TS[p] :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48