VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E2TS_XHPT //================================================================================ //E2TS_XHPG ($0000,$24xx,$1E63) // 概要 // E2TS 512ドット16色2プレーン>テキスト>スプライト // XHPG 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー // さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()==0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):(mix(epc(tev(e1p())),epc(tod(e2p())))!=0?mix(epc(tev(e1p())),epc(tod(e2p()))):(txp()!=0?tpc(txp()):spc(spp())))) // 中間コード2 // e1p()==0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):mix(epc(tev(e1p())),epc(tod(e2p())))!=0?mix(epc(tev(e1p())),epc(tod(e2p()))):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())==0?(v1=epc(tev(e2p())))!=0?v1:(v4=txp())!=0?tpc(v4):spc(spp()):v0==1?(v8=epc(0))!=0?v8:(v9=txp())!=0?tpc(v9):spc(spp()):ls1(v0)==0?(v14=epc(v0))!=0?v14:(v15=txp())!=0?tpc(v15):spc(spp()):(v19=mix(epc(tev(v0)),epc(tod(e2p()))))!=0?v19:(v25=txp())!=0?tpc(v25):spc(spp()) // 中間コード4 // (p=e1p())==0?(p=epc(tev(e2p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(q=mix(epc(tev(p)),epc(tod(e2p()))))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())==0?(p=epc(e2p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(q=mix(epc(p&-2),epc(e2p()|1)))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())==0?(p=epc(e2p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(q=mix(epc(p&-2),epc(e2p()|1)))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E2TS_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 ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E2TS_XHPG //================================================================================ //E2TS_XHPGT ($0000,$24xx,$1F63) // 概要 // E2TS 512ドット16色2プレーン>テキスト>スプライト // XHPGT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (e1p()==0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),(txp()!=0?tpc(txp()):spc(spp())))) // 中間コード2 // e1p()==0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),txp()!=0?tpc(txp()):spc(spp())) // 中間コード3 // (v0=e1p())==0?(v1=epc(tev(e2p())))!=0?v1:(v4=txp())!=0?tpc(v4):spc(spp()):v0==1?(v8=epc(0))!=0?v8:(v9=txp())!=0?tpc(v9):spc(spp()):ls1(v0)==0?(v14=epc(v0))!=0?v14:(v15=txp())!=0?tpc(v15):spc(spp()):mix(mix(epc(tev(v0)),epc(tod(e2p()))),(v26=txp())!=0?tpc(v26):spc(spp())) // 中間コード4 // (p=e1p())==0?(p=epc(tev(e2p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(mix(epc(tev(p)),epc(tod(e2p()))),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード5 // (p=e1p())==0?(p=epc(e2p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(mix(epc(p&-2),epc(e2p()|1)),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード6 // (p=e1p())==0?(p=epc(e2p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):cto(mix(mix(epc(p&-2),epc(e2p()|1)),(p=txp())!=0?tpc(p):spc(spp()))) E2TS_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 ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E2TS_XHPGT //================================================================================ //E3TS ($0000,$24xx,$0067) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // 拡張なし // 手順 // 1番目のパレットが0でないとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):(e2p()!=0?(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp()))))) // 中間コード2 // e1p()!=0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?(v1=epc(v0))!=0?v1:(v2=txp())!=0?tpc(v2):spc(spp()):(v6=e2p())!=0?(v7=epc(v6))!=0?v7:(v8=txp())!=0?tpc(v8):spc(spp()):(v12=epc(e3p()))!=0?v12:(v14=txp())!=0?tpc(v14):spc(spp()) // 中間コード4 // (p=e1p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e3p()))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()) E3TS { @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); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS //================================================================================ //XE3TS // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // 拡張あり XE3TS { @Override public void drawRaster (int src, int dst, boolean rh) { switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) { // .A.XHPGT case 0b00010000: //E3TS_XWC case 0b00010001: //E3TS_XWC case 0b00010010: //E3TS_XWC case 0b00010011: //E3TS_XWC E3TS_XWC.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00010100: //E3TS_XWP case 0b00010101: //E3TS_XWP case 0b00010110: //E3TS_XWP case 0b00010111: //E3TS_XWP E3TS_XWP.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011000: //E3TS_XHC E3TS.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011001: //E3TS_XHCT E3TS_XHCT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011010: //E3TS_XHCG E3TS_XHCG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011011: //E3TS_XHCGT E3TS_XHCGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011101: //E3TS_XHPT E3TS_XHPT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011110: //E3TS_XHPG E3TS_XHPG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011111: //E3TS_XHPGT E3TS_XHPGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b01000000: //E3TS_A case 0b01000001: //E3TS_A case 0b01000010: //E3TS_A case 0b01000011: //E3TS_A case 0b01000100: //E3TS_A case 0b01000101: //E3TS_A case 0b01000110: //E3TS_A case 0b01000111: //E3TS_A case 0b01001000: //E3TS_A case 0b01001001: //E3TS_A case 0b01001010: //E3TS_A case 0b01001011: //E3TS_A case 0b01001100: //E3TS_A case 0b01001101: //E3TS_A case 0b01001110: //E3TS_A case 0b01001111: //E3TS_A case 0b01010000: //E3TS_A case 0b01010001: //E3TS_A case 0b01010010: //E3TS_A case 0b01010011: //E3TS_A case 0b01010100: //E3TS_A case 0b01010101: //E3TS_A case 0b01010110: //E3TS_A case 0b01010111: //E3TS_A case 0b01011000: //E3TS_A case 0b01011001: //E3TS_A case 0b01011010: //E3TS_A case 0b01011011: //E3TS_A case 0b01011100: //E3TS_A case 0b01011101: //E3TS_A case 0b01011110: //E3TS_A case 0b01011111: //E3TS_A E3_A.drawRaster (src, dst, rh); break; default: E3TS.drawRaster (src, dst, rh); VideoController.vcnReportUnimplemented (XE3TS); } //switch } //drawRaster }, //XE3TS //================================================================================ //E3TS_XWC ($0000,$24xx,$1067) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XWC 優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?epc(e1p()):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?epc(e2p()):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e3p())))!=0?epc(e3p()):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp())))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?epc(e1p()):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?epc(e2p()):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e3p())))!=0?epc(e3p()):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?epc(v0):(v5=epc(v0))!=0?v5:(v6=txp())!=0?tpc(v6):spc(spp()):(v10=e2p())!=0?ls1(epc(tev(v10)))!=0?epc(v10):(v15=epc(v10))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):ls1(epc(tev(v23=e3p())))!=0?epc(v23):(v25=epc(v23))!=0?v25:(v26=txp())!=0?tpc(v26):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(epc(tev(p=e3p())))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(epc((p=e3p())&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(epc((p=e3p())&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E3TS_XWC { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XWC //================================================================================ //E3TS_XWP ($0000,$24xx,$1467) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XWP 優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラー(0は黒) // 中間コード1 // (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(txp()!=0?tpc(txp()):spc(spp())))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):epc(tev(e1p()))) // 中間コード2 // e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e3p()))!=0?epc(tev(e3p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e1p())) // 中間コード3 // (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:(v4=txp())!=0?tpc(v4):spc(spp()):(v8=epc(tev(e3p())))!=0?v8:(v11=txp())!=0?tpc(v11):spc(spp()):v0==1?(v15=epc(0))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):ls1(v0)==0?(v21=epc(v0))!=0?v21:(v22=txp())!=0?tpc(v22):spc(spp()):epc(tev(v0)) // 中間コード4 // (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(tev(e3p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):epc(tev(p)) // 中間コード5 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):epc(p&-2) // 中間コード6 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e3p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):epo(p&-2) E3TS_XWP { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPal32G8[p & -2]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPal32G8[p & -2]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XWP //================================================================================ //E3TS_XHCT ($0000,$24xx,$1967) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHCT 0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp())))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),txp()!=0?tpc(txp()):spc(spp())):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),txp()!=0?tpc(txp()):spc(spp())):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),txp()!=0?tpc(txp()):spc(spp())):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?mix(epc(v0),(v6=txp())!=0?tpc(v6):spc(spp())):(v10=epc(v0))!=0?v10:(v11=txp())!=0?tpc(v11):spc(spp()):(v15=e2p())!=0?ls1(epc(tev(v15)))!=0?mix(epc(v15),(v21=txp())!=0?tpc(v21):spc(spp())):(v25=epc(v15))!=0?v25:(v26=txp())!=0?tpc(v26):spc(spp()):ls1(epc(tev(v33=e3p())))!=0?mix(epc(v33),(v36=txp())!=0?tpc(v36):spc(spp())):(v40=epc(v33))!=0?v40:(v41=txp())!=0?tpc(v41):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(epc(tev(p=e3p())))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(epc((p=e3p())&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(epc((p=e3p())&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E3TS_XHCT { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHCT //================================================================================ //E3TS_XHCG ($0000,$24xx,$1A67) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHCG 0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー // さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のパレットが奇数のとき // パレット1のカラーが0でないとき // パレット1のカラー // さもなくば(パレット1のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e3p())))!=0?mix(epc(tev(e3p())),epc(1)):(ls1(e3p())!=0?(epc(1)!=0?epc(1):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp()))))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):txp()!=0?tpc(txp()):spc(spp()):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e3p())))!=0?mix(epc(tev(e3p())),epc(1)):ls1(e3p())!=0?epc(1)!=0?epc(1):txp()!=0?tpc(txp()):spc(spp()):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(v2=epc(tev(v0)))!=0?mix(v2,epc(tod(e2q()))):ls1(v0)!=0?(v9=epc(tod(e2q())))!=0?v9:(v12=txp())!=0?tpc(v12):spc(spp()):(v16=epc(v0))!=0?v16:(v17=txp())!=0?tpc(v17):spc(spp()):(v21=e2p())!=0?ls1(v23=epc(tev(v21)))!=0?mix(v23,epc(tod(e2q()))):(v29=epc(v21))!=0?v29:(v30=txp())!=0?tpc(v30):spc(spp()):ls1(v35=epc(tev(v37=e3p())))!=0?mix(v35,epc(1)):ls1(v37)!=0?(v41=epc(1))!=0?v41:(v42=txp())!=0?tpc(v42):spc(spp()):(v46=epc(v37))!=0?v46:(v47=txp())!=0?tpc(v47):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(p=epc(tev(q=e3p())))!=0?mix(p,epc(1)):ls1(q)!=0?(p=epc(1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(q))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(p&1)!=0?(p=epc(e2q()|1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):((p=epc((q=e3p())&-2))&1)!=0?mix(p,epc(1)):(q&1)!=0?(p=epc(1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(q))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(e2q()|1))):(p&1)!=0?(p=epc(e2q()|1))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(e2q()|1))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):((p=epc((q=e3p())&-2))&1)!=0?cto(mix(p,epc(1))):(q&1)!=0?(p=epc(1))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(q))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()) E3TS_XHCG { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHCG //================================================================================ //E3TS_XHCGT ($0000,$24xx,$1B67) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHCGT 0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー // さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のパレットを偶数化したパレットのカラーとパレット1のカラーを混ぜたカラーにさらに // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のパレットが奇数のとき // パレット1のカラーが0でないとき // パレット1のカラー // さもなくば(パレット1のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),(txp()!=0?tpc(txp()):spc(spp()))):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e3p())))!=0?mix(mix(epc(tev(e3p())),epc(1)),(txp()!=0?tpc(txp()):spc(spp()))):(ls1(e3p())!=0?(epc(1)!=0?epc(1):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp()))))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),txp()!=0?tpc(txp()):spc(spp())):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):txp()!=0?tpc(txp()):spc(spp()):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),txp()!=0?tpc(txp()):spc(spp())):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e3p())))!=0?mix(mix(epc(tev(e3p())),epc(1)),txp()!=0?tpc(txp()):spc(spp())):ls1(e3p())!=0?epc(1)!=0?epc(1):txp()!=0?tpc(txp()):spc(spp()):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(v2=epc(tev(v0)))!=0?mix(mix(v2,epc(tod(e2q()))),(v9=txp())!=0?tpc(v9):spc(spp())):ls1(v0)!=0?(v14=epc(tod(e2q())))!=0?v14:(v17=txp())!=0?tpc(v17):spc(spp()):(v21=epc(v0))!=0?v21:(v22=txp())!=0?tpc(v22):spc(spp()):(v26=e2p())!=0?ls1(v28=epc(tev(v26)))!=0?mix(mix(v28,epc(tod(e2q()))),(v35=txp())!=0?tpc(v35):spc(spp())):(v39=epc(v26))!=0?v39:(v40=txp())!=0?tpc(v40):spc(spp()):ls1(v45=epc(tev(v47=e3p())))!=0?mix(mix(v45,epc(1)),(v51=txp())!=0?tpc(v51):spc(spp())):ls1(v47)!=0?(v56=epc(1))!=0?v56:(v57=txp())!=0?tpc(v57):spc(spp()):(v61=epc(v47))!=0?v61:(v62=txp())!=0?tpc(v62):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),(p=txp())!=0?tpc(p):spc(spp())):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(p=epc(tev(q=e3p())))!=0?mix(mix(p,epc(1)),(p=txp())!=0?tpc(p):spc(spp())):ls1(q)!=0?(p=epc(1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(q))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp())):(p&1)!=0?(p=epc(e2q()|1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):((p=epc((q=e3p())&-2))&1)!=0?mix(mix(p,epc(1)),(p=txp())!=0?tpc(p):spc(spp())):(q&1)!=0?(p=epc(1))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(q))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp()))):(p&1)!=0?(p=epc(e2q()|1))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):((p=epc((q=e3p())&-2))&1)!=0?cto(mix(mix(p,epc(1)),(p=txp())!=0?tpc(p):spc(spp()))):(q&1)!=0?(p=epc(1))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(q))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()) E3TS_XHCGT { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[1]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHCGT //================================================================================ //E3TS_XHPT ($0000,$24xx,$1D67) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHPT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(txp()!=0?tpc(txp()):spc(spp())))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):mix(epc(tev(e1p())),(txp()!=0?tpc(txp()):spc(spp())))) // 中間コード2 // e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e3p()))!=0?epc(tev(e3p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):mix(epc(tev(e1p())),txp()!=0?tpc(txp()):spc(spp())) // 中間コード3 // (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:(v4=txp())!=0?tpc(v4):spc(spp()):(v8=epc(tev(e3p())))!=0?v8:(v11=txp())!=0?tpc(v11):spc(spp()):v0==1?(v15=epc(0))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):ls1(v0)==0?(v21=epc(v0))!=0?v21:(v22=txp())!=0?tpc(v22):spc(spp()):mix(epc(tev(v0)),(v29=txp())!=0?tpc(v29):spc(spp())) // 中間コード4 // (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(tev(e3p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(epc(tev(p)),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード5 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(epc(p&-2),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード6 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e3p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):cto(mix(epc(p&-2),(p=txp())!=0?tpc(p):spc(spp()))) E3TS_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); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHPT //================================================================================ //E3TS_XHPG ($0000,$24xx,$1E67) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHPG 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー // さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(txp()!=0?tpc(txp()):spc(spp())))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):(mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(txp()!=0?tpc(txp()):spc(spp())))) // 中間コード2 // e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e3p()))!=0?epc(tev(e3p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:(v4=txp())!=0?tpc(v4):spc(spp()):(v8=epc(tev(e3p())))!=0?v8:(v11=txp())!=0?tpc(v11):spc(spp()):v0==1?(v15=epc(0))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):ls1(v0)==0?(v21=epc(v0))!=0?v21:(v22=txp())!=0?tpc(v22):spc(spp()):(v26=mix(epc(tev(v0)),epc(tod(e2q()))))!=0?v26:(v32=txp())!=0?tpc(v32):spc(spp()) // 中間コード4 // (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(tev(e3p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(q=mix(epc(tev(p)),epc(tod(e2q()))))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e3p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E3TS_XHPG { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHPG //================================================================================ //E3TS_XHPGT ($0000,$24xx,$1F67) // 概要 // E3TS 512ドット16色3プレーン>テキスト>スプライト // XHPGT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(tev(e3p()))!=0?epc(tev(e3p())):(txp()!=0?tpc(txp()):spc(spp())))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),(txp()!=0?tpc(txp()):spc(spp())))) // 中間コード2 // e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e3p()))!=0?epc(tev(e3p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),txp()!=0?tpc(txp()):spc(spp())) // 中間コード3 // (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:(v4=txp())!=0?tpc(v4):spc(spp()):(v8=epc(tev(e3p())))!=0?v8:(v11=txp())!=0?tpc(v11):spc(spp()):v0==1?(v15=epc(0))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):ls1(v0)==0?(v21=epc(v0))!=0?v21:(v22=txp())!=0?tpc(v22):spc(spp()):mix(mix(epc(tev(v0)),epc(tod(e2q()))),(v33=txp())!=0?tpc(v33):spc(spp())) // 中間コード4 // (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(tev(e3p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(mix(epc(tev(p)),epc(tod(e2q()))),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード5 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e3p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):mix(mix(epc(p&-2),epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp())) // 中間コード6 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e3p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):cto(mix(mix(epc(p&-2),epc(e2q()|1)),(p=txp())!=0?tpc(p):spc(spp()))) E3TS_XHPGT { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E3TS_XHPGT //================================================================================ //E4TS ($0000,$24xx,$006F) // 概要 // E4TS 512ドット16色4プレーン>テキスト>スプライト // 拡張なし // 手順 // 1番目のパレットが0でないとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットが0でないとき // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットが0のとき) // 4番目のカラーが0でないとき // 4番目のカラー // さもなくば(4番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):(e2p()!=0?(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp()))):(e3p()!=0?(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp()))):(epc(e4p())!=0?epc(e4p()):(txp()!=0?tpc(txp()):spc(spp())))))) // 中間コード2 // e1p()!=0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):e3p()!=0?epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()):epc(e4p())!=0?epc(e4p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?(v1=epc(v0))!=0?v1:(v2=txp())!=0?tpc(v2):spc(spp()):(v6=e2p())!=0?(v7=epc(v6))!=0?v7:(v8=txp())!=0?tpc(v8):spc(spp()):(v12=e3p())!=0?(v13=epc(v12))!=0?v13:(v14=txp())!=0?tpc(v14):spc(spp()):(v18=epc(e4p()))!=0?v18:(v20=txp())!=0?tpc(v20):spc(spp()) // 中間コード4 // (p=e1p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e4p()))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e4p()))!=0?p:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e3p())!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e4p()))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()) E4TS { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 6 & 3; //4番目のパレットのGVRAMページ番号 int gx4th = CRTC.crtR12GrXCurr[pn]; int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; gx4th += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E4TS //================================================================================ //XE4TS // 概要 // E4TS 512ドット16色4プレーン>テキスト>スプライト // 拡張あり XE4TS { @Override public void drawRaster (int src, int dst, boolean rh) { switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) { // .A.XHPGT case 0b00010000: //E4TS_XWC case 0b00010001: //E4TS_XWC case 0b00010010: //E4TS_XWC case 0b00010011: //E4TS_XWC E4TS_XWC.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00010100: //E4TS_XWP case 0b00010101: //E4TS_XWP case 0b00010110: //E4TS_XWP case 0b00010111: //E4TS_XWP E4TS_XWP.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011000: //E4TS_XHC E4TS.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011001: //E4TS_XHCT E4TS_XHCT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011010: //E4TS_XHCG E4TS_XHCG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011011: //E4TS_XHCGT E4TS_XHCGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011101: //E4TS_XHPT E4TS_XHPT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011110: //E4TS_XHPG E4TS_XHPG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011111: //E4TS_XHPGT E4TS_XHPGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b01000000: //E4TS_A case 0b01000001: //E4TS_A case 0b01000010: //E4TS_A case 0b01000011: //E4TS_A case 0b01000100: //E4TS_A case 0b01000101: //E4TS_A case 0b01000110: //E4TS_A case 0b01000111: //E4TS_A case 0b01001000: //E4TS_A case 0b01001001: //E4TS_A case 0b01001010: //E4TS_A case 0b01001011: //E4TS_A case 0b01001100: //E4TS_A case 0b01001101: //E4TS_A case 0b01001110: //E4TS_A case 0b01001111: //E4TS_A case 0b01010000: //E4TS_A case 0b01010001: //E4TS_A case 0b01010010: //E4TS_A case 0b01010011: //E4TS_A case 0b01010100: //E4TS_A case 0b01010101: //E4TS_A case 0b01010110: //E4TS_A case 0b01010111: //E4TS_A case 0b01011000: //E4TS_A case 0b01011001: //E4TS_A case 0b01011010: //E4TS_A case 0b01011011: //E4TS_A case 0b01011100: //E4TS_A case 0b01011101: //E4TS_A case 0b01011110: //E4TS_A case 0b01011111: //E4TS_A E4_A.drawRaster (src, dst, rh); break; default: E4TS.drawRaster (src, dst, rh); VideoController.vcnReportUnimplemented (XE4TS); } //switch } //drawRaster }, //XE4TS //================================================================================ //E4TS_XWC ($0000,$24xx,$106F) // 概要 // E4TS 512ドット16色4プレーン>テキスト>スプライト // XWC 優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットが0でないとき // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットが0のとき) // 4番目のパレットを偶数化したパレットのカラーが奇数のとき // 4番目のカラー(0は黒) // さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき) // 4番目のカラーが0でないとき // 4番目のカラー // さもなくば(4番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?epc(e1p()):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?epc(e2p()):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?epc(e3p()):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e4p())))!=0?epc(e4p()):(epc(e4p())!=0?epc(e4p()):(txp()!=0?tpc(txp()):spc(spp()))))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?epc(e1p()):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?epc(e2p()):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?epc(e3p()):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e4p())))!=0?epc(e4p()):epc(e4p())!=0?epc(e4p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?epc(v0):(v5=epc(v0))!=0?v5:(v6=txp())!=0?tpc(v6):spc(spp()):(v10=e2p())!=0?ls1(epc(tev(v10)))!=0?epc(v10):(v15=epc(v10))!=0?v15:(v16=txp())!=0?tpc(v16):spc(spp()):(v20=e3p())!=0?ls1(epc(tev(v20)))!=0?epc(v20):(v25=epc(v20))!=0?v25:(v26=txp())!=0?tpc(v26):spc(spp()):ls1(epc(tev(v33=e4p())))!=0?epc(v33):(v35=epc(v33))!=0?v35:(v36=txp())!=0?tpc(v36):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(epc(tev(p=e4p())))!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(epc((p=e4p())&-2)&1)!=0?epc(p):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e3p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(epc((p=e4p())&-2)&1)!=0?epo(p):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E4TS_XWC { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 6 & 3; //4番目のパレットのGVRAMページ番号 int gx4th = CRTC.crtR12GrXCurr[pn]; int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; gx4th += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E4TS_XWC //================================================================================ //E4TS_XWP ($0000,$24xx,$146F) // 概要 // E4TS 512ドット16色4プレーン>テキスト>スプライト // XWP 優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する // 手順 // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットが0でないとき // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットが0のとき) // 4番目のパレットを偶数化したパレットのカラーが0でないとき // 4番目のパレットを偶数化したパレットのカラー // さもなくば(4番目のパレットを偶数化したパレットのカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラー(0は黒) // 中間コード1 // (e1p()==0?((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):(txp()!=0?tpc(txp()):spc(spp()))):((tev(e3p()))!=0?(epc(tev(e3p()))!=0?epc(tev(e3p())):(txp()!=0?tpc(txp()):spc(spp()))):(epc(tev(e4p()))!=0?epc(tev(e4p())):(txp()!=0?tpc(txp()):spc(spp()))))):e1p()==1?(epc(0)!=0?epc(0):(txp()!=0?tpc(txp()):spc(spp()))):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp()))):epc(tev(e1p()))) // 中間コード2 // e1p()==0?tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):txp()!=0?tpc(txp()):spc(spp()):tev(e3p())!=0?epc(tev(e3p()))!=0?epc(tev(e3p())):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e4p()))!=0?epc(tev(e4p())):txp()!=0?tpc(txp()):spc(spp()):e1p()==1?epc(0)!=0?epc(0):txp()!=0?tpc(txp()):spc(spp()):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):epc(tev(e1p())) // 中間コード3 // (v0=e1p())==0?(v1=tev(e2p()))!=0?(v3=epc(v1))!=0?v3:(v4=txp())!=0?tpc(v4):spc(spp()):(v8=tev(e3p()))!=0?(v10=epc(v8))!=0?v10:(v11=txp())!=0?tpc(v11):spc(spp()):(v15=epc(tev(e4p())))!=0?v15:(v18=txp())!=0?tpc(v18):spc(spp()):v0==1?(v22=epc(0))!=0?v22:(v23=txp())!=0?tpc(v23):spc(spp()):ls1(v0)==0?(v28=epc(v0))!=0?v28:(v29=txp())!=0?tpc(v29):spc(spp()):epc(tev(v0)) // 中間コード4 // (p=e1p())==0?(p=tev(e2p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=tev(e3p()))!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(tev(e4p())))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):ls1(p)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):epc(tev(p)) // 中間コード5 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p()&-2)!=0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=epc(e4p()&-2))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):p==1?(p=epc(0))!=0?p:(p=txp())!=0?tpc(p):spc(spp()):(p&1)==0?(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):epc(p&-2) // 中間コード6 // (p=e1p())==0?(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e3p()&-2)!=0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=epc(e4p()&-2))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):p==1?(p=epc(0))!=0?cto(p):(p=txp())!=0?tpo(p):spo(spp()):(p&1)==0?(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):epo(p&-2) E4TS_XWP { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 6 & 3; //4番目のパレットのGVRAMページ番号 int gx4th = CRTC.crtR12GrXCurr[pn]; int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; gx4th += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPal32G8[p & -2]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy4th | gx4th + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : VideoController.vcnPal32G8[p & -2]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //E4TS_XWP //================================================================================ //E4TS_XHCT ($0000,$24xx,$196F) // 概要 // E4TS 512ドット16色4プレーン>テキスト>スプライト // XHCT 0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットが0でないとき // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // さもなくば(3番目のパレットが0のとき) // 4番目のパレットを偶数化したパレットのカラーが奇数のとき // 4番目のカラーと // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(4番目のパレットを偶数化したパレットのカラーが偶数のとき) // 4番目のカラーが0でないとき // 4番目のカラー // さもなくば(4番目のカラーが0のとき) // テキストパレットが0でないとき // テキストカラー(0は黒) // さもなくば(テキストパレットが0のとき) // スプライトカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e1p())!=0?epc(e1p()):(txp()!=0?tpc(txp()):spc(spp())))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e2p())!=0?epc(e2p()):(txp()!=0?tpc(txp()):spc(spp())))):(e3p()!=0?(ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e3p())!=0?epc(e3p()):(txp()!=0?tpc(txp()):spc(spp())))):(ls1(epc(tev(e4p())))!=0?mix(epc(e4p()),(txp()!=0?tpc(txp()):spc(spp()))):(epc(e4p())!=0?epc(e4p()):(txp()!=0?tpc(txp()):spc(spp()))))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),txp()!=0?tpc(txp()):spc(spp())):epc(e1p())!=0?epc(e1p()):txp()!=0?tpc(txp()):spc(spp()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),txp()!=0?tpc(txp()):spc(spp())):epc(e2p())!=0?epc(e2p()):txp()!=0?tpc(txp()):spc(spp()):e3p()!=0?ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),txp()!=0?tpc(txp()):spc(spp())):epc(e3p())!=0?epc(e3p()):txp()!=0?tpc(txp()):spc(spp()):ls1(epc(tev(e4p())))!=0?mix(epc(e4p()),txp()!=0?tpc(txp()):spc(spp())):epc(e4p())!=0?epc(e4p()):txp()!=0?tpc(txp()):spc(spp()) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?mix(epc(v0),(v6=txp())!=0?tpc(v6):spc(spp())):(v10=epc(v0))!=0?v10:(v11=txp())!=0?tpc(v11):spc(spp()):(v15=e2p())!=0?ls1(epc(tev(v15)))!=0?mix(epc(v15),(v21=txp())!=0?tpc(v21):spc(spp())):(v25=epc(v15))!=0?v25:(v26=txp())!=0?tpc(v26):spc(spp()):(v30=e3p())!=0?ls1(epc(tev(v30)))!=0?mix(epc(v30),(v36=txp())!=0?tpc(v36):spc(spp())):(v40=epc(v30))!=0?v40:(v41=txp())!=0?tpc(v41):spc(spp()):ls1(epc(tev(v48=e4p())))!=0?mix(epc(v48),(v51=txp())!=0?tpc(v51):spc(spp())):(v55=epc(v48))!=0?v55:(v56=txp())!=0?tpc(v56):spc(spp()) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):ls1(epc(tev(p=e4p())))!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(p=e3p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()):(epc((p=e4p())&-2)&1)!=0?mix(epc(p),(p=txp())!=0?tpc(p):spc(spp())):(q=epc(p))!=0?q:(p=txp())!=0?tpc(p):spc(spp()) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e2p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(p=e3p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()):(epc((p=e4p())&-2)&1)!=0?cto(mix(epc(p),(p=txp())!=0?tpc(p):spc(spp()))):(q=epc(p))!=0?cto(q):(p=txp())!=0?tpo(p):spo(spp()) E4TS_XHCT { @Override public void drawRaster (int src, int dst, boolean rh) { SpriteScreen.sprStep3 (); int sx = 16; //スプライトx座標 int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 2 & 3; //2番目のパレットのGVRAMページ番号 int gx2nd = CRTC.crtR12GrXCurr[pn]; int gy2nd = VideoController.vcnVisible2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 4 & 3; //3番目のパレットのGVRAMページ番号 int gx3rd = CRTC.crtR12GrXCurr[pn]; int gy3rd = VideoController.vcnVisible3rd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); pn = VideoController.vcnReg2Curr >> 6 & 3; //4番目のパレットのGVRAMページ番号 int gx4th = CRTC.crtR12GrXCurr[pn]; int gy4th = VideoController.vcnVisible4th + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); int ty = CRTC.crtR11TxYZero + src & 1023; //ラスタ int tc = (ty & CRTC.crtMask3) << 7 | CRTC.crtR10TxXCurr >> 3; //テキスト桁位置 int ta0 = 0x00e00000 + ((ty & CRTC.crtMaskMinus4) << 7); //ラスタブロックアドレス int ta1 = 0x00020000 + ta0; int ta2 = 0x00040000 + ta0; int ta3 = 0x00060000 + ta0; int ts = CRTC.crtR10TxXCurr & 7; //テキスト桁境界からのずれ int da = dst << XEiJ.PNL_BM_OFFSET_BITS; //ARGB出力インデックス int db = da + XEiJ.pnlScreenWidth; //ARGB出力インデックスの終了位置 if (rh) { int half = XEiJ.pnlScreenWidth >> 4 << 3; sx += half; gx1st += half; gx2nd += half; gx3rd += half; gx4th += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 7]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 7]]); sx += 8; gx1st += 8; gx2nd += 8; gx3rd += 8; gx4th += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 28) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 28) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx]]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 1]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 24 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 1]]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 2]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 20 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 2]]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 3]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 16 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 3]]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 4]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 12 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 4]]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 5]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 8 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 5]]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy4th | gx4th + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal16TS[p] : VideoController.vcnPal16TS[SpriteScreen.sprBuffer[sx + 6]])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = tp >>> 4 & 15) != 0 ? VideoController.vcnPal32TS[p] : VideoController.vcnPal32TS[SpriteScreen.sprBuffer[sx + 6]]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], (p = tp & 15) != 0 ?