xeij/DrawingMode.java (29/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.vcnMix2 (
                                      q,
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (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]),
                                0)] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] :
                            VideoController.vcnPal32G8[p] :
                            (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]),
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[1]),
                                0)] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[1] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (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]),
                                0)] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] :
                            VideoController.vcnPal32G8[p] :
                            (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]),
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  q,
                                  VideoController.vcnPal16G8[1]),
                                0)] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[1] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (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]),
                                    0)] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[1] :
                                VideoController.vcnPal32G8[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STE4_XHCGT

  //================================================================================
  //STE4_XHPT ($0000,$06xx,$1D6F)
  //  概要
  //    STE4  スプライト>テキスト>512ドット16色4プレーン
  //    XHPT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0))):(tpc(txp())!=0?tpc(txp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0):tpc(txp())!=0?tpc(txp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0)
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=e1p())==0?(v5=tev(e2p()))!=0?epc(v5):(v8=tev(e3p()))!=0?epc(v8):epc(tev(e4p())):v4==1?epc(0):ls1(v4)==0?epc(v4):mix(epc(tev(v4)),0):(v20=tpc(v2))!=0?v20:(v21=e1p())==0?(v22=tev(e2p()))!=0?epc(v22):(v25=tev(e3p()))!=0?epc(v25):epc(tev(e4p())):v21==1?epc(0):ls1(v21)==0?epc(v21):mix(epc(tev(v21)),0)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),0):(p=tpc(q))!=0?p:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),0)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),0):(p=tpc(q))!=0?p:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),0)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),0)):(p=tpc(q))!=0?cto(p):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),0))
  STE4_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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STE4_XHPT

  //================================================================================
  //STE4_XHPG ($0000,$06xx,$1E6F)
  //  概要
  //    STE4  スプライト>テキスト>512ドット16色4プレーン
  //    XHPG  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q()))))):(tpc(txp())!=0?tpc(txp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q()))))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q()))):tpc(txp())!=0?tpc(txp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q())))
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=e1p())==0?(v5=tev(e2p()))!=0?epc(v5):(v8=tev(e3p()))!=0?epc(v8):epc(tev(e4p())):v4==1?epc(0):ls1(v4)==0?epc(v4):mix(epc(tev(v4)),epc(tod(e2q()))):(v23=tpc(v2))!=0?v23:(v24=e1p())==0?(v25=tev(e2p()))!=0?epc(v25):(v28=tev(e3p()))!=0?epc(v28):epc(tev(e4p())):v24==1?epc(0):ls1(v24)==0?epc(v24):mix(epc(tev(v24)),epc(tod(e2q())))
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),epc(tod(e2q()))):(p=tpc(q))!=0?p:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),epc(tod(e2q())))
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),epc(e2q()|1)):(p=tpc(q))!=0?p:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),epc(e2q()|1))
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),epc(e2q()|1))):(p=tpc(q))!=0?cto(p):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),epc(e2q()|1)))
  STE4_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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STE4_XHPG

  //================================================================================
  //STE4_XHPGT ($0000,$06xx,$1F6F)
  //  概要
  //    STE4  スプライト>テキスト>512ドット16色4プレーン
  //    XHPGT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0のとき
  //          2番目のパレットを偶数化したパレットが0でないとき
  //            2番目のパレットを偶数化したパレットのカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットが0のとき)
  //            3番目のパレットを偶数化したパレットが0でないとき
  //              3番目のパレットを偶数化したパレットのカラー(0は黒)
  //            さもなくば(3番目のパレットを偶数化したパレットが0のとき)
  //              4番目のパレットを偶数化したパレットのカラー(0は黒)
  //        1番目のパレットが1のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0))):(tpc(txp())!=0?tpc(txp()):(e1p()==0?((tev(e2p()))!=0?epc(tev(e2p())):((tev(e3p()))!=0?epc(tev(e3p())):epc(tev(e4p())))):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):tpc(txp())!=0?tpc(txp()):e1p()==0?tev(e2p())!=0?epc(tev(e2p())):tev(e3p())!=0?epc(tev(e3p())):epc(tev(e4p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0)
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=e1p())==0?(v5=tev(e2p()))!=0?epc(v5):(v8=tev(e3p()))!=0?epc(v8):epc(tev(e4p())):v4==1?epc(0):ls1(v4)==0?epc(v4):mix(mix(epc(tev(v4)),epc(tod(e2q()))),0):(v24=tpc(v2))!=0?v24:(v25=e1p())==0?(v26=tev(e2p()))!=0?epc(v26):(v29=tev(e3p()))!=0?epc(v29):epc(tev(e4p())):v25==1?epc(0):ls1(v25)==0?epc(v25):mix(mix(epc(tev(v25)),epc(tod(e2q()))),0)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(mix(epc(tev(p)),epc(tod(e2q()))),0):(p=tpc(q))!=0?p:(p=e1p())==0?(p=tev(e2p()))!=0?epc(p):(p=tev(e3p()))!=0?epc(p):epc(tev(e4p())):p==1?epc(0):ls1(p)==0?epc(p):mix(mix(epc(tev(p)),epc(tod(e2q()))),0)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(mix(epc(p&-2),epc(e2q()|1)),0):(p=tpc(q))!=0?p:(p=e1p())==0?(p=e2p()&-2)!=0?epc(p):(p=e3p()&-2)!=0?epc(p):epc(e4p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(mix(epc(p&-2),epc(e2q()|1)),0)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(mix(epc(p&-2),epc(e2q()|1)),0)):(p=tpc(q))!=0?cto(p):(p=e1p())==0?(p=e2p()&-2)!=0?epo(p):(p=e3p()&-2)!=0?epo(p):epo(e4p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(mix(epc(p&-2),epc(e2q()|1)),0))
  STE4_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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    0)]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ?
                            (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2] :
                            p == 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]),
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ?
                                (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2] :
                                p == 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]),
                                    0)]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STE4_XHPGT

  //================================================================================
  //STF1 ($0001,$06xx,$0063)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    拡張なし
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f1p())):(tpc(txp())!=0?tpc(txp()):fpc(f1p())))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f1p()):tpc(txp())!=0?tpc(txp()):fpc(f1p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:fpc(f1p()):(v6=tpc(v2))!=0?v6:fpc(f1p())
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(f1p()):(p=tpc(q))!=0?p:fpc(f1p())
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(f1p()):(p=tpc(q))!=0?p:fpc(f1p())
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):fpo(f1p()):(p=tpc(q))!=0?cto(p):fpo(f1p())
  STF1 {
    @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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                        GraphicScreen.graM4[gy1st | gx1st & 511])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                        GraphicScreen.graM4[gy1st | gx1st & 511])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 1 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 1 & 511])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 2 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 2 & 511])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 3 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 3 & 511])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 4 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 4 & 511])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 5 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 5 & 511])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 6 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 6 & 511])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 7 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 7 & 511])]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                        GraphicScreen.graM4[gy1st | gx1st & 511])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                        GraphicScreen.graM4[gy1st | gx1st & 511])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 1 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 1 & 511])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 2 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 2 & 511])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 3 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 3 & 511])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 4 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 4 & 511])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 5 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 5 & 511])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 6 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 6 & 511])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 7 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy1st | gx1st + 7 & 511])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1

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

  //================================================================================
  //STF1_XWC ($0001,$06xx,$1063)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XWC  優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //      1番目のカラー(0は黒)
  //    さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          1番目のカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          1番目のカラー(0は黒)
  //  中間コード1
  //    (ls1(fpc(tev(f1p())))!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f1p())):(tpc(txp())!=0?tpc(txp()):fpc(f1p()))))
  //  中間コード2
  //    ls1(fpc(tev(f1p())))!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f1p()):tpc(txp())!=0?tpc(txp()):fpc(f1p())
  //  中間コード3
  //    ls1(fpc(tev(v3=f1p())))!=0?fpc(v3):ls4(v6=spp())!=0||(v7=txp())==0?(v8=spc(v6))!=0?v8:fpc(v3):(v10=tpc(v7))!=0?v10:fpc(v3)
  //  中間コード4
  //    ls1(fpc(tev(p=f1p())))!=0?fpc(p):ls4(q=spp())!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p)
  //  中間コード5
  //    (fpc((p=f1p())&-2)&1)!=0?fpc(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p)
  //  中間コード6
  //    (fpc((p=f1p())&-2)&1)!=0?fpo(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?cto(r):fpo(p):(q=tpc(r))!=0?cto(q):fpo(p)
  STF1_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, r;
          XEiJ.pnlBM[da] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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, r;
          XEiJ.pnlBM[da] = ((VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XWC

  //================================================================================
  //STF1_XWP ($0001,$06xx,$1463)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XWP  優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが1以下のとき
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          グラフィックパレット0のカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          グラフィックパレット0のカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          1番目のカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          1番目のカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラー(0は黒)
  //  中間コード1
  //    (f1p()<=1?(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(0)):(tpc(txp())!=0?tpc(txp()):fpc(0))):ls1(f1p())==0?(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f1p())):(tpc(txp())!=0?tpc(txp()):fpc(f1p()))):fpc(tev(f1p())))
  //  中間コード2
  //    f1p()<=1?ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(0):tpc(txp())!=0?tpc(txp()):fpc(0):ls1(f1p())==0?ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f1p()):tpc(txp())!=0?tpc(txp()):fpc(f1p()):fpc(tev(f1p()))
  //  中間コード3
  //    (v0=f1p())<=1?ls4(v2=spp())!=0||(v3=txp())==0?(v4=spc(v2))!=0?v4:fpc(0):(v6=tpc(v3))!=0?v6:fpc(0):ls1(v0)==0?ls4(v10=spp())!=0||(v11=txp())==0?(v12=spc(v10))!=0?v12:fpc(v0):(v14=tpc(v11))!=0?v14:fpc(v0):fpc(tev(v0))
  //  中間コード4
  //    (p=f1p())<=1?ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(0):(p=tpc(q))!=0?p:fpc(0):ls1(p)==0?ls4(q=spp())!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):fpc(tev(p))
  //  中間コード5
  //    (p=f1p())<=1?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(0):(p=tpc(q))!=0?p:fpc(0):(p&1)==0?((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):fpc(p&-2)
  //  中間コード6
  //    (p=f1p())<=1?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):fpo(0):(p=tpc(q))!=0?cto(p):fpo(0):(p&1)==0?((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?cto(r):fpo(p):(q=tpc(r))!=0?cto(q):fpo(p):fpo(p&-2)
  STF1_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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[0] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[0] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XWP

  //================================================================================
  //STF1_XHCT ($0001,$06xx,$1963)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHCT  0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のカラーとカラー0を混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のカラーとカラー0を混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p()))):(tpc(txp())!=0?tpc(txp()):(ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p()))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p()):tpc(txp())!=0?tpc(txp()):ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:ls1(fpc(tev(v7=f1p())))!=0?mix(fpc(v7),0):fpc(v7):(v11=tpc(v2))!=0?v11:ls1(fpc(tev(v15=f1p())))!=0?mix(fpc(v15),0):fpc(v15)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:ls1(fpc(tev(p=f1p())))!=0?mix(fpc(p),0):fpc(p):(p=tpc(q))!=0?p:ls1(fpc(tev(p=f1p())))!=0?mix(fpc(p),0):fpc(p)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(fpc((p=f1p())&-2)&1)!=0?mix(fpc(p),0):fpc(p):(p=tpc(q))!=0?p:(fpc((p=f1p())&-2)&1)!=0?mix(fpc(p),0):fpc(p)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(fpc((p=f1p())&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p):(p=tpc(q))!=0?cto(p):(fpc((p=f1p())&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p)
  STF1_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] = (((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                              GraphicScreen.graM4[gy1st | gx1st & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (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],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHCT

  //================================================================================
  //STF1_XHCG ($0001,$06xx,$1A63)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHCG  0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のパレットが奇数のとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //          さもなくば(1番目のパレットが偶数のとき)
  //            1番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のパレットが奇数のとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //          さもなくば(1番目のパレットが偶数のとき)
  //            1番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())))):(tpc(txp())!=0?tpc(txp()):(ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()):tpc(txp())!=0?tpc(txp()):ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:ls1(v5=fpc(tev(v7=f1p())))!=0?mix(v5,fpc(tod(f2q()))):ls1(v7)!=0?fpc(tod(f2q())):fpc(v7):(v17=tpc(v2))!=0?v17:ls1(v19=fpc(tev(v21=f1p())))!=0?mix(v19,fpc(tod(f2q()))):ls1(v21)!=0?fpc(tod(f2q())):fpc(v21)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:ls1(p=fpc(tev(q=f1p())))!=0?mix(p,fpc(tod(f2q()))):ls1(q)!=0?fpc(tod(f2q())):fpc(q):(p=tpc(q))!=0?p:ls1(p=fpc(tev(q=f1p())))!=0?mix(p,fpc(tod(f2q()))):ls1(q)!=0?fpc(tod(f2q())):fpc(q)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:((p=fpc((q=f1p())&-2))&1)!=0?mix(p,fpc(f2q()|1)):(q&1)!=0?fpc(f2q()|1):fpc(q):(p=tpc(q))!=0?p:((p=fpc((q=f1p())&-2))&1)!=0?mix(p,fpc(f2q()|1)):(q&1)!=0?fpc(f2q()|1):fpc(q)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):((p=fpc((q=f1p())&-2))&1)!=0?cto(mix(p,fpc(f2q()|1))):(q&1)!=0?fpo(f2q()|1):fpo(q):(p=tpc(q))!=0?cto(p):((p=fpc((q=f1p())&-2))&1)!=0?cto(mix(p,fpc(f2q()|1))):(q&1)!=0?fpo(f2q()|1):fpo(q)
  STF1_XHCG {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gz3rd = VideoController.vcnHidden3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-4のGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gz4th = VideoController.vcnHidden4th + ((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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHCG

  //================================================================================
  //STF1_XHCGT ($0001,$06xx,$1B63)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHCGT  0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のパレットが奇数のとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //          さもなくば(1番目のパレットが偶数のとき)
  //            1番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //          1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //        さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //          1番目のパレットが奇数のとき
  //            2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //          さもなくば(1番目のパレットが偶数のとき)
  //            1番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(ls1(fpc(tev(f1p())))!=0?mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())))):(tpc(txp())!=0?tpc(txp()):(ls1(fpc(tev(f1p())))!=0?mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):ls1(fpc(tev(f1p())))!=0?mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()):tpc(txp())!=0?tpc(txp()):ls1(fpc(tev(f1p())))!=0?mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:ls1(v5=fpc(tev(v7=f1p())))!=0?mix(mix(v5,fpc(tod(f2q()))),0):ls1(v7)!=0?fpc(tod(f2q())):fpc(v7):(v18=tpc(v2))!=0?v18:ls1(v20=fpc(tev(v22=f1p())))!=0?mix(mix(v20,fpc(tod(f2q()))),0):ls1(v22)!=0?fpc(tod(f2q())):fpc(v22)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:ls1(p=fpc(tev(q=f1p())))!=0?mix(mix(p,fpc(tod(f2q()))),0):ls1(q)!=0?fpc(tod(f2q())):fpc(q):(p=tpc(q))!=0?p:ls1(p=fpc(tev(q=f1p())))!=0?mix(mix(p,fpc(tod(f2q()))),0):ls1(q)!=0?fpc(tod(f2q())):fpc(q)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:((p=fpc((q=f1p())&-2))&1)!=0?mix(mix(p,fpc(f2q()|1)),0):(q&1)!=0?fpc(f2q()|1):fpc(q):(p=tpc(q))!=0?p:((p=fpc((q=f1p())&-2))&1)!=0?mix(mix(p,fpc(f2q()|1)),0):(q&1)!=0?fpc(f2q()|1):fpc(q)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):((p=fpc((q=f1p())&-2))&1)!=0?cto(mix(mix(p,fpc(f2q()|1)),0)):(q&1)!=0?fpo(f2q()|1):fpo(q):(p=tpc(q))!=0?cto(p):((p=fpc((q=f1p())&-2))&1)!=0?cto(mix(mix(p,fpc(f2q()|1)),0)):(q&1)!=0?fpo(f2q()|1):fpo(q)
  STF1_XHCGT {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gz3rd = VideoController.vcnHidden3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-4のGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gz4th = VideoController.vcnHidden4th + ((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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                                                   GraphicScreen.graM4[gy1st | gx1st & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  p,
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (q & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      p,
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (q & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[q]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHCGT

  //================================================================================
  //STF1_XHPT ($0001,$06xx,$1D63)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHPT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),0))):(tpc(txp())!=0?tpc(txp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),0))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),0):tpc(txp())!=0?tpc(txp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),0)
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())<=1?fpc(0):ls1(v4)==0?fpc(v4):mix(fpc(tev(v4)),0):(v11=tpc(v2))!=0?v11:(v12=f1p())<=1?fpc(0):ls1(v12)==0?fpc(v12):mix(fpc(tev(v12)),0)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(fpc(tev(p)),0):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(fpc(tev(p)),0)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(fpc(p&-2),0):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(fpc(p&-2),0)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(fpc(p&-2),0)):(p=tpc(q))!=0?cto(p):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(fpc(p&-2),0))
  STF1_XHPT {
    @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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    0)]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHPT

  //================================================================================
  //STF1_XHPG ($0001,$06xx,$1E63)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHPG  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),fpc(tod(f2q()))))):(tpc(txp())!=0?tpc(txp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),fpc(tod(f2q()))))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),fpc(tod(f2q()))):tpc(txp())!=0?tpc(txp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(fpc(tev(f1p())),fpc(tod(f2q())))
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())<=1?fpc(0):ls1(v4)==0?fpc(v4):mix(fpc(tev(v4)),fpc(tod(f2q()))):(v14=tpc(v2))!=0?v14:(v15=f1p())<=1?fpc(0):ls1(v15)==0?fpc(v15):mix(fpc(tev(v15)),fpc(tod(f2q())))
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(fpc(tev(p)),fpc(tod(f2q()))):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(fpc(tev(p)),fpc(tod(f2q())))
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(fpc(p&-2),fpc(f2q()|1)):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(fpc(p&-2),fpc(f2q()|1))
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(fpc(p&-2),fpc(f2q()|1))):(p=tpc(q))!=0?cto(p):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(fpc(p&-2),fpc(f2q()|1)))
  STF1_XHPG {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gz3rd = VideoController.vcnHidden3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-4のGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gz4th = VideoController.vcnHidden4th + ((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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p & -2],
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p & -2],
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHPG

  //================================================================================
  //STF1_XHPGT ($0001,$06xx,$1F63)
  //  概要
  //    STF1  スプライト>テキスト>512ドット256色1プレーン
  //    XHPGT  1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが1以下のとき
  //          グラフィックパレット0のカラー(0は黒)
  //        1番目のパレットが2以上の偶数のとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが3以上の奇数のとき)
  //          1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0))):(tpc(txp())!=0?tpc(txp()):(f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0):tpc(txp())!=0?tpc(txp()):f1p()<=1?fpc(0):ls1(f1p())==0?fpc(f1p()):mix(mix(fpc(tev(f1p())),fpc(tod(f2q()))),0)
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())<=1?fpc(0):ls1(v4)==0?fpc(v4):mix(mix(fpc(tev(v4)),fpc(tod(f2q()))),0):(v15=tpc(v2))!=0?v15:(v16=f1p())<=1?fpc(0):ls1(v16)==0?fpc(v16):mix(mix(fpc(tev(v16)),fpc(tod(f2q()))),0)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(mix(fpc(tev(p)),fpc(tod(f2q()))),0):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):ls1(p)==0?fpc(p):mix(mix(fpc(tev(p)),fpc(tod(f2q()))),0)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(mix(fpc(p&-2),fpc(f2q()|1)),0):(p=tpc(q))!=0?p:(p=f1p())<=1?fpc(0):(p&1)==0?fpc(p):mix(mix(fpc(p&-2),fpc(f2q()|1)),0)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(mix(fpc(p&-2),fpc(f2q()|1)),0)):(p=tpc(q))!=0?cto(p):(p=f1p())<=1?fpo(0):(p&1)==0?fpo(p):cto(mix(mix(fpc(p&-2),fpc(f2q()|1)),0))
  STF1_XHPGT {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gz3rd = VideoController.vcnHidden3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-4のGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gz4th = VideoController.vcnHidden4th + ((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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) <= 1 ?
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnMix2 (
                                  VideoController.vcnPal16G8[p & -2],
                                  VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1]),
                                0)]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1]),
                                    0)]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) <= 1 ?
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnMix2 (
                                      VideoController.vcnPal16G8[p & -2],
                                      VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1]),
                                    0)]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF1_XHPGT

  //================================================================================
  //STF2 ($0001,$06xx,$006F)
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    拡張なし
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()!=0?fpc(f1p()):fpc(f2p()))):(tpc(txp())!=0?tpc(txp()):(f1p()!=0?fpc(f1p()):fpc(f2p()))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()!=0?fpc(f1p()):fpc(f2p()):tpc(txp())!=0?tpc(txp()):f1p()!=0?fpc(f1p()):fpc(f2p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())!=0?fpc(v4):fpc(f2p()):(v8=tpc(v2))!=0?v8:(v9=f1p())!=0?fpc(v9):fpc(f2p())
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?fpc(p):fpc(f2p()):(p=tpc(q))!=0?p:(p=f1p())!=0?fpc(p):fpc(f2p())
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?fpc(p):fpc(f2p()):(p=tpc(q))!=0?p:(p=f1p())!=0?fpc(p):fpc(f2p())
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())!=0?fpo(p):fpo(f2p()):(p=tpc(q))!=0?cto(p):(p=f1p())!=0?fpo(p):fpo(f2p())
  STF2 {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511])] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511])]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF2

  //================================================================================
  //XSTF2
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    拡張あり
  XSTF2 {
    @Override public void drawRaster (int src, int dst, boolean rh) {
      switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) {
        //   .A.XHPGT
      case 0b00010000:  //STF2_XWC
      case 0b00010001:  //STF2_XWC
      case 0b00010010:  //STF2_XWC
      case 0b00010011:  //STF2_XWC
        STF2_XWC.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00010100:  //STF2_XWP
      case 0b00010101:  //STF2_XWP
      case 0b00010110:  //STF2_XWP
      case 0b00010111:  //STF2_XWP
        STF2_XWP.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011000:  //STF2_XHC
        STF2.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011001:  //STF2_XHCT
        STF2_XHCT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011010:  //STF2_XHCG
        STF2_XHCG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011011:  //STF2_XHCGT
        STF2_XHCGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011101:  //STF2_XHPT
        STF2_XHPT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011110:  //STF2_XHPG
        STF2_XHPG.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b00011111:  //STF2_XHPGT
        STF2_XHPGT.drawRaster (src, dst, rh);
        break;
        //   .A.XHPGT
      case 0b01000000:  //STF2_A
      case 0b01000001:  //STF2_A
      case 0b01000010:  //STF2_A
      case 0b01000011:  //STF2_A
      case 0b01000100:  //STF2_A
      case 0b01000101:  //STF2_A
      case 0b01000110:  //STF2_A
      case 0b01000111:  //STF2_A
      case 0b01001000:  //STF2_A
      case 0b01001001:  //STF2_A
      case 0b01001010:  //STF2_A
      case 0b01001011:  //STF2_A
      case 0b01001100:  //STF2_A
      case 0b01001101:  //STF2_A
      case 0b01001110:  //STF2_A
      case 0b01001111:  //STF2_A
      case 0b01010000:  //STF2_A
      case 0b01010001:  //STF2_A
      case 0b01010010:  //STF2_A
      case 0b01010011:  //STF2_A
      case 0b01010100:  //STF2_A
      case 0b01010101:  //STF2_A
      case 0b01010110:  //STF2_A
      case 0b01010111:  //STF2_A
      case 0b01011000:  //STF2_A
      case 0b01011001:  //STF2_A
      case 0b01011010:  //STF2_A
      case 0b01011011:  //STF2_A
      case 0b01011100:  //STF2_A
      case 0b01011101:  //STF2_A
      case 0b01011110:  //STF2_A
      case 0b01011111:  //STF2_A
        F2_A.drawRaster (src, dst, rh);
        break;
      default:
        STF2.drawRaster (src, dst, rh);
        VideoController.vcnReportUnimplemented (XSTF2);
      }  //switch
    }  //drawRaster
  },  //XSTF2

  //================================================================================
  //STF2_XWC ($0001,$06xx,$106F)
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    XWC  優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが0でないとき
  //      1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        1番目のカラー(0は黒)
  //      さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラーが0でないとき
  //            スプライトカラー
  //          さもなくば(スプライトカラーが0のとき)
  //            1番目のカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラーが0でないとき
  //            テキストカラー
  //          さもなくば(テキストカラーが0のとき)
  //            1番目のカラー(0は黒)
  //    さもなくば(1番目のパレットが0のとき)
  //      2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //        2番目のカラー(0は黒)
  //      さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //        スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //          スプライトカラーが0でないとき
  //            スプライトカラー
  //          さもなくば(スプライトカラーが0のとき)
  //            2番目のカラー(0は黒)
  //        さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //          テキストカラーが0でないとき
  //            テキストカラー
  //          さもなくば(テキストカラーが0のとき)
  //            2番目のカラー(0は黒)
  //  中間コード1
  //    (f1p()!=0?(ls1(fpc(tev(f1p())))!=0?fpc(f1p()):(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f1p())):(tpc(txp())!=0?tpc(txp()):fpc(f1p())))):(ls1(fpc(tev(f2p())))!=0?fpc(f2p()):(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f2p())):(tpc(txp())!=0?tpc(txp()):fpc(f2p())))))
  //  中間コード2
  //    f1p()!=0?ls1(fpc(tev(f1p())))!=0?fpc(f1p()):ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f1p()):tpc(txp())!=0?tpc(txp()):fpc(f1p()):ls1(fpc(tev(f2p())))!=0?fpc(f2p()):ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f2p()):tpc(txp())!=0?tpc(txp()):fpc(f2p())
  //  中間コード3
  //    (v0=f1p())!=0?ls1(fpc(tev(v0)))!=0?fpc(v0):ls4(v6=spp())!=0||(v7=txp())==0?(v8=spc(v6))!=0?v8:fpc(v0):(v10=tpc(v7))!=0?v10:fpc(v0):ls1(fpc(tev(v15=f2p())))!=0?fpc(v15):ls4(v18=spp())!=0||(v19=txp())==0?(v20=spc(v18))!=0?v20:fpc(v15):(v22=tpc(v19))!=0?v22:fpc(v15)
  //  中間コード4
  //    (p=f1p())!=0?ls1(fpc(tev(p)))!=0?fpc(p):ls4(q=spp())!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):ls1(fpc(tev(p=f2p())))!=0?fpc(p):ls4(q=spp())!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p)
  //  中間コード5
  //    (p=f1p())!=0?(fpc(p&-2)&1)!=0?fpc(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):(fpc((p=f2p())&-2)&1)!=0?fpc(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p)
  //  中間コード6
  //    (p=f1p())!=0?(fpc(p&-2)&1)!=0?fpo(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?cto(r):fpo(p):(q=tpc(r))!=0?cto(q):fpo(p):(fpc((p=f2p())&-2)&1)!=0?fpo(p):((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?cto(r):fpo(p):(q=tpc(r))!=0?cto(q):fpo(p)
  STF2_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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPal32G8[p] :
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPal32G8[p] :
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF2_XWC

  //================================================================================
  //STF2_XWP ($0001,$06xx,$146F)
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    XWP  優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する
  //  手順
  //    1番目のパレットが0のとき
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          2番目のパレットを偶数化したパレットのカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          2番目のパレットを偶数化したパレットのカラー(0は黒)
  //    1番目のパレットが1のとき
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          グラフィックパレット0のカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          グラフィックパレット0のカラー(0は黒)
  //    1番目のパレットが2以上の偶数のとき
  //      スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //        スプライトカラーが0でないとき
  //          スプライトカラー
  //        さもなくば(スプライトカラーが0のとき)
  //          1番目のカラー(0は黒)
  //      さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //        テキストカラーが0でないとき
  //          テキストカラー
  //        さもなくば(テキストカラーが0のとき)
  //          1番目のカラー(0は黒)
  //    さもなくば(1番目のパレットが3以上の奇数のとき)
  //      1番目のパレットを偶数化したパレットのカラー(0は黒)
  //  中間コード1
  //    (f1p()==0?(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(tev(f2p()))):(tpc(txp())!=0?tpc(txp()):fpc(tev(f2p())))):f1p()==1?(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(0)):(tpc(txp())!=0?tpc(txp()):fpc(0))):ls1(f1p())==0?(ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):fpc(f1p())):(tpc(txp())!=0?tpc(txp()):fpc(f1p()))):fpc(tev(f1p())))
  //  中間コード2
  //    f1p()==0?ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(tev(f2p())):tpc(txp())!=0?tpc(txp()):fpc(tev(f2p())):f1p()==1?ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(0):tpc(txp())!=0?tpc(txp()):fpc(0):ls1(f1p())==0?ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):fpc(f1p()):tpc(txp())!=0?tpc(txp()):fpc(f1p()):fpc(tev(f1p()))
  //  中間コード3
  //    (v0=f1p())==0?ls4(v2=spp())!=0||(v3=txp())==0?(v4=spc(v2))!=0?v4:fpc(tev(f2p())):(v8=tpc(v3))!=0?v8:fpc(tev(f2p())):v0==1?ls4(v13=spp())!=0||(v14=txp())==0?(v15=spc(v13))!=0?v15:fpc(0):(v17=tpc(v14))!=0?v17:fpc(0):ls1(v0)==0?ls4(v21=spp())!=0||(v22=txp())==0?(v23=spc(v21))!=0?v23:fpc(v0):(v25=tpc(v22))!=0?v25:fpc(v0):fpc(tev(v0))
  //  中間コード4
  //    (p=f1p())==0?ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(tev(f2p())):(p=tpc(q))!=0?p:fpc(tev(f2p())):p==1?ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(0):(p=tpc(q))!=0?p:fpc(0):ls1(p)==0?ls4(q=spp())!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):fpc(tev(p))
  //  中間コード5
  //    (p=f1p())==0?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(f2p()&-2):(p=tpc(q))!=0?p:fpc(f2p()&-2):p==1?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:fpc(0):(p=tpc(q))!=0?p:fpc(0):(p&1)==0?((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?r:fpc(p):(q=tpc(r))!=0?q:fpc(p):fpc(p&-2)
  //  中間コード6
  //    (p=f1p())==0?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):fpo(f2p()&-2):(p=tpc(q))!=0?cto(p):fpo(f2p()&-2):p==1?((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):fpo(0):(p=tpc(q))!=0?cto(p):fpo(0):(p&1)==0?((q=spp())&15)!=0||(r=txp())==0?(r=spc(q))!=0?cto(r):fpo(p):(q=tpc(r))!=0?cto(q):fpo(p):fpo(p&-2)
  STF2_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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) == 0 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] :
                            p == 1 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[0] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                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, r;
          XEiJ.pnlBM[da] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) == 0 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] :
                            p == 1 ?
                            ((p = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[0] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            VideoController.vcnPal32G8[0] :
                            (p & 1) == 0 ?
                            ((q = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (r = tp >>> 28) == 0 ?
                            (r = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[r] :
                            VideoController.vcnPal32G8[p] :
                            (q = VideoController.vcnPal16TS[r]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            VideoController.vcnPal32G8[p] :
                            VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 1] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (r = tp >>> 24 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 2] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (r = tp >>> 20 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 3] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (r = tp >>> 16 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 4] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (r = tp >>> 12 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 5] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (r = tp >>> 8 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 6] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (r = tp >>> 4 & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          XEiJ.pnlBM[da + 7] = ((p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) == 0 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] :
                                p == 1 ?
                                ((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[0] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                VideoController.vcnPal32G8[0] :
                                (p & 1) == 0 ?
                                ((q = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (r = tp & 15) == 0 ?
                                (r = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[r] :
                                VideoController.vcnPal32G8[p] :
                                (q = VideoController.vcnPal16TS[r]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                VideoController.vcnPal32G8[p] :
                                VideoController.vcnPal32G8[p & -2]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF2_XWP

  //================================================================================
  //STF2_XHCT ($0001,$06xx,$196F)
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    XHCT  0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            1番目のカラーとカラー0を混ぜたカラー(0は黒)
  //          さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            2番目のカラーとカラー0を混ぜたカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            2番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            1番目のカラーとカラー0を混ぜたカラー(0は黒)
  //          さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            2番目のカラーとカラー0を混ぜたカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            2番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()!=0?(ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p())):(ls1(fpc(tev(f2p())))!=0?mix(fpc(f2p()),0):fpc(f2p())))):(tpc(txp())!=0?tpc(txp()):(f1p()!=0?(ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p())):(ls1(fpc(tev(f2p())))!=0?mix(fpc(f2p()),0):fpc(f2p())))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()!=0?ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p()):ls1(fpc(tev(f2p())))!=0?mix(fpc(f2p()),0):fpc(f2p()):tpc(txp())!=0?tpc(txp()):f1p()!=0?ls1(fpc(tev(f1p())))!=0?mix(fpc(f1p()),0):fpc(f1p()):ls1(fpc(tev(f2p())))!=0?mix(fpc(f2p()),0):fpc(f2p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())!=0?ls1(fpc(tev(v4)))!=0?mix(fpc(v4),0):fpc(v4):ls1(fpc(tev(v14=f2p())))!=0?mix(fpc(v14),0):fpc(v14):(v18=tpc(v2))!=0?v18:(v19=f1p())!=0?ls1(fpc(tev(v19)))!=0?mix(fpc(v19),0):fpc(v19):ls1(fpc(tev(v29=f2p())))!=0?mix(fpc(v29),0):fpc(v29)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?ls1(fpc(tev(p)))!=0?mix(fpc(p),0):fpc(p):ls1(fpc(tev(p=f2p())))!=0?mix(fpc(p),0):fpc(p):(p=tpc(q))!=0?p:(p=f1p())!=0?ls1(fpc(tev(p)))!=0?mix(fpc(p),0):fpc(p):ls1(fpc(tev(p=f2p())))!=0?mix(fpc(p),0):fpc(p)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?(fpc(p&-2)&1)!=0?mix(fpc(p),0):fpc(p):(fpc((p=f2p())&-2)&1)!=0?mix(fpc(p),0):fpc(p):(p=tpc(q))!=0?p:(p=f1p())!=0?(fpc(p&-2)&1)!=0?mix(fpc(p),0):fpc(p):(fpc((p=f2p())&-2)&1)!=0?mix(fpc(p),0):fpc(p)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())!=0?(fpc(p&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p):(fpc((p=f2p())&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p):(p=tpc(q))!=0?cto(p):(p=f1p())!=0?(fpc(p&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p):(fpc((p=f2p())&-2)&1)!=0?cto(mix(fpc(p),0)):fpo(p)
  STF2_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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p] :
                            (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                              GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2] & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                VideoController.vcnPal16G8[p],
                                0)] :
                            VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                (VideoController.vcnPal16G8[p & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p] :
                                (VideoController.vcnPal16G8[(p = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                  GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2] & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    VideoController.vcnPal16G8[p],
                                    0)] :
                                VideoController.vcnPal32G8[p]);
          sx += 8;
          gx1st += 8;
          gx2nd += 8;
          gx3rd += 8;
          gx4th += 8;
          da += 8;
        }  //while da<db
      }  //if ts==0
    }  //drawRaster
  },  //STF2_XHCT

  //================================================================================
  //STF2_XHCG ($0001,$06xx,$1A6F)
  //  概要
  //    STF2  スプライト>テキスト>512ドット256色2プレーン
  //    XHCG  0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜる
  //  手順
  //    スプライトパレットの下位4bitが0でないまたはテキストパレットが0のとき
  //      スプライトカラーが0でないとき
  //        スプライトカラー
  //      さもなくば(スプライトカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //          さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            1番目のパレットが奇数のとき
  //              2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //            さもなくば(1番目のパレットが偶数のとき)
  //              1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            2番目のカラー(0は黒)
  //    さもなくば(スプライトパレットの下位4bitが0かつテキストパレットが0でないとき)
  //      テキストカラーが0でないとき
  //        テキストカラー
  //      さもなくば(テキストカラーが0のとき)
  //        1番目のパレットが0でないとき
  //          1番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //          さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            1番目のパレットが奇数のとき
  //              2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒)
  //            さもなくば(1番目のパレットが偶数のとき)
  //              1番目のカラー(0は黒)
  //        さもなくば(1番目のパレットが0のとき)
  //          2番目のパレットを偶数化したパレットのカラーが奇数のとき
  //            2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒)
  //          さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき)
  //            2番目のカラー(0は黒)
  //  中間コード1
  //    (ls4(spp())!=0||txp()==0?(spc(spp())!=0?spc(spp()):(f1p()!=0?(ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()))):(ls1(fpc(tev(f2p())))!=0?mix(fpc(tev(f2p())),fpc(tod(f2q()))):fpc(f2p())))):(tpc(txp())!=0?tpc(txp()):(f1p()!=0?(ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):(ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()))):(ls1(fpc(tev(f2p())))!=0?mix(fpc(tev(f2p())),fpc(tod(f2q()))):fpc(f2p())))))
  //  中間コード2
  //    ls4(spp())!=0||txp()==0?spc(spp())!=0?spc(spp()):f1p()!=0?ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()):ls1(fpc(tev(f2p())))!=0?mix(fpc(tev(f2p())),fpc(tod(f2q()))):fpc(f2p()):tpc(txp())!=0?tpc(txp()):f1p()!=0?ls1(fpc(tev(f1p())))!=0?mix(fpc(tev(f1p())),fpc(tod(f2q()))):ls1(f1p())!=0?fpc(tod(f2q())):fpc(f1p()):ls1(fpc(tev(f2p())))!=0?mix(fpc(tev(f2p())),fpc(tod(f2q()))):fpc(f2p())
  //  中間コード3
  //    ls4(v1=spp())!=0||(v2=txp())==0?(v3=spc(v1))!=0?v3:(v4=f1p())!=0?ls1(v6=fpc(tev(v4)))!=0?mix(v6,fpc(tod(f2q()))):ls1(v4)!=0?fpc(tod(f2q())):fpc(v4):ls1(v18=fpc(tev(v20=f2p())))!=0?mix(v18,fpc(tod(f2q()))):fpc(v20):(v26=tpc(v2))!=0?v26:(v27=f1p())!=0?ls1(v29=fpc(tev(v27)))!=0?mix(v29,fpc(tod(f2q()))):ls1(v27)!=0?fpc(tod(f2q())):fpc(v27):ls1(v41=fpc(tev(v43=f2p())))!=0?mix(v41,fpc(tod(f2q()))):fpc(v43)
  //  中間コード4
  //    ls4(p=spp())!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?ls1(q=fpc(tev(p)))!=0?mix(q,fpc(tod(f2q()))):ls1(p)!=0?fpc(tod(f2q())):fpc(p):ls1(p=fpc(tev(q=f2p())))!=0?mix(p,fpc(tod(f2q()))):fpc(q):(p=tpc(q))!=0?p:(p=f1p())!=0?ls1(q=fpc(tev(p)))!=0?mix(q,fpc(tod(f2q()))):ls1(p)!=0?fpc(tod(f2q())):fpc(p):ls1(p=fpc(tev(q=f2p())))!=0?mix(p,fpc(tod(f2q()))):fpc(q)
  //  中間コード5
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?q:(p=f1p())!=0?((q=fpc(p&-2))&1)!=0?mix(q,fpc(f2q()|1)):(p&1)!=0?fpc(f2q()|1):fpc(p):((p=fpc((q=f2p())&-2))&1)!=0?mix(p,fpc(f2q()|1)):fpc(q):(p=tpc(q))!=0?p:(p=f1p())!=0?((q=fpc(p&-2))&1)!=0?mix(q,fpc(f2q()|1)):(p&1)!=0?fpc(f2q()|1):fpc(p):((p=fpc((q=f2p())&-2))&1)!=0?mix(p,fpc(f2q()|1)):fpc(q)
  //  中間コード6
  //    ((p=spp())&15)!=0||(q=txp())==0?(q=spc(p))!=0?cto(q):(p=f1p())!=0?((q=fpc(p&-2))&1)!=0?cto(mix(q,fpc(f2q()|1))):(p&1)!=0?fpo(f2q()|1):fpo(p):((p=fpc((q=f2p())&-2))&1)!=0?cto(mix(p,fpc(f2q()|1))):fpo(q):(p=tpc(q))!=0?cto(p):(p=f1p())!=0?((q=fpc(p&-2))&1)!=0?cto(mix(q,fpc(f2q()|1))):(p&1)!=0?fpo(f2q()|1):fpo(p):((p=fpc((q=f2p())&-2))&1)!=0?cto(mix(p,fpc(f2q()|1))):fpo(q)
  STF2_XHCG {
    @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);
      pn = VideoController.vcnReg2Curr >> 4 & 3;  //2番目のパレットのbit3-0のGVRAMページ番号
      int gx3rd = CRTC.crtR12GrXCurr[pn];
      int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz3rd = VideoController.vcnHidden3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      pn = VideoController.vcnReg2Curr >> 6 & 3;  //2番目のパレットのbit7-4のGVRAMページ番号
      int gx4th = CRTC.crtR12GrXCurr[pn];
      int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9);
      int gz4th = VideoController.vcnHidden4th + ((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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                                   GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                                   GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 5] = (((p = SpriteScreen.sprBuffer[sx + 5]) & 15) != 0 || (q = tp >>> 8 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 5 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 5 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 5 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 5 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 6] = (((p = SpriteScreen.sprBuffer[sx + 6]) & 15) != 0 || (q = tp >>> 4 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 6 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 6 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 6 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 6 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 7] = (((p = SpriteScreen.sprBuffer[sx + 7]) & 15) != 0 || (q = tp & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 7 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 7 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 7 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 7 & 511]) | 1])] :
                                VideoController.vcnPal32G8[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 = SpriteScreen.sprBuffer[sx]) & 15) != 0 || (q = tp >>> 28) == 0 ?
                            (q = VideoController.vcnPal16TS[p]) != 0 ?
                            VideoController.vcnPalTbl[q] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                                   GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            VideoController.vcnPal32G8[q] :
                            (p = VideoController.vcnPal16TS[q]) != 0 ?
                            VideoController.vcnPalTbl[p] :
                            (p = (GraphicScreen.graM4[gy2nd | gx2nd & 511] << 4 |
                                  GraphicScreen.graM4[gy1st | gx1st & 511])) != 0 ?
                            ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                q,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            (p & 1) != 0 ?
                            VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                        GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1] :
                            VideoController.vcnPal32G8[p] :
                            ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th & 511] << 4 |
                                                                   GraphicScreen.graM4[gy3rd | gx3rd & 511])) & -2]) & 1) != 0 ?
                            VideoController.vcnPalTbl[
                              VideoController.vcnMix2 (
                                p,
                                VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd & 511]) | 1])] :
                            VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 1] = (((p = SpriteScreen.sprBuffer[sx + 1]) & 15) != 0 || (q = tp >>> 24 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 1 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 1 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 1 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 1 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 2] = (((p = SpriteScreen.sprBuffer[sx + 2]) & 15) != 0 || (q = tp >>> 20 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 2 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 2 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 2 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 2 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 3] = (((p = SpriteScreen.sprBuffer[sx + 3]) & 15) != 0 || (q = tp >>> 16 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 3 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 3 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 3 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 3 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q]);
          XEiJ.pnlBM[da + 4] = (((p = SpriteScreen.sprBuffer[sx + 4]) & 15) != 0 || (q = tp >>> 12 & 15) == 0 ?
                                (q = VideoController.vcnPal16TS[p]) != 0 ?
                                VideoController.vcnPalTbl[q] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                VideoController.vcnPal32G8[q] :
                                (p = VideoController.vcnPal16TS[q]) != 0 ?
                                VideoController.vcnPalTbl[p] :
                                (p = (GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] << 4 |
                                      GraphicScreen.graM4[gy1st | gx1st + 4 & 511])) != 0 ?
                                ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    q,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
                                (p & 1) != 0 ?
                                VideoController.vcnPal32G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                            GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1] :
                                VideoController.vcnPal32G8[p] :
                                ((p = VideoController.vcnPal16G8[(q = (GraphicScreen.graM4[gy4th | gx4th + 4 & 511] << 4 |
                                                                       GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511])) & -2]) & 1) != 0 ?
                                VideoController.vcnPalTbl[
                                  VideoController.vcnMix2 (
                                    p,
                                    VideoController.vcnPal16G8[(GraphicScreen.graM4[gz4th | gx4th + 4 & 511] << 4 |
                                                                GraphicScreen.graM4[gz3rd | gx3rd + 4 & 511]) | 1])] :
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