(q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE1s_XHCG //================================================================================ //TE1s_XHCGT ($0000,$21xx,$1B21) // 概要 // TE1s テキスト>512ドット16色1プレーン>スプライト(OFF) // XHCGT 0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー // さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):(ls1(e1p())!=0?epc(tod(e2q())):epc(e1p())))):(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0)):(epc(e1p())!=0?epc(e1p()):spc(0))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):ls1(e1p())!=0?epc(tod(e2q())):epc(e1p()):ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0):epc(e1p())!=0?epc(e1p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:ls1(v3=epc(tev(v5=e1p())))!=0?mix(mix(v3,epc(tod(e2q()))),0):ls1(v5)!=0?epc(tod(e2q())):epc(v5):ls1(v17=epc(tev(v19=e1p())))!=0?mix(mix(v17,epc(tod(e2q()))),spc(0)):ls1(v19)!=0?(v27=epc(tod(e2q())))!=0?v27:spc(0):(v31=epc(v19))!=0?v31:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:ls1(p=epc(tev(q=e1p())))!=0?mix(mix(p,epc(tod(e2q()))),0):ls1(q)!=0?epc(tod(e2q())):epc(q):ls1(p=epc(tev(q=e1p())))!=0?mix(mix(p,epc(tod(e2q()))),spc(0)):ls1(q)!=0?(p=epc(tod(e2q())))!=0?p:spc(0):(p=epc(q))!=0?p:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:((p=epc((q=e1p())&-2))&1)!=0?mix(mix(p,epc(e2q()|1)),0):(q&1)!=0?epc(e2q()|1):epc(q):((p=epc((q=e1p())&-2))&1)!=0?mix(mix(p,epc(e2q()|1)),spc(0)):(q&1)!=0?(p=epc(e2q()|1))!=0?p:spc(0):(p=epc(q))!=0?p:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):((p=epc((q=e1p())&-2))&1)!=0?cto(mix(mix(p,epc(e2q()|1)),0)):(q&1)!=0?epo(e2q()|1):epo(q):((p=epc((q=e1p())&-2))&1)!=0?cto(mix(mix(p,epc(e2q()|1)),spc(0))):(q&1)!=0?(p=epc(e2q()|1))!=0?cto(p):spo(0):(p=epc(q))!=0?cto(p):spo(0) TE1s_XHCGT { @Override public void drawRaster (int src, int dst, boolean rh) { 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 gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (q & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[q] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (q & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE1s_XHCGT //================================================================================ //TE1s_XHPT ($0000,$21xx,$1D21) // 概要 // TE1s テキスト>512ドット16色1プレーン>スプライト(OFF) // XHPT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0))):(e1p()<=1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):mix(epc(tev(e1p())),spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0):e1p()<=1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(epc(tev(e1p())),spc(0)) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())<=1?epc(0):ls1(v2)==0?epc(v2):mix(epc(tev(v2)),0):(v9=e1p())<=1?(v10=epc(0))!=0?v10:spc(0):ls1(v9)==0?(v13=epc(v9))!=0?v13:spc(0):mix(epc(tev(v9)),spc(0)) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),0):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):mix(epc(tev(p)),spc(0)) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),0):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):mix(epc(p&-2),spc(0)) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())<=1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),0)):(p=e1p())<=1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):cto(mix(epc(p&-2),spc(0))) TE1s_XHPT { @Override public void drawRaster (int src, int dst, boolean rh) { int pn = VideoController.vcnReg2Curr & 3; //1番目のパレットのGVRAMページ番号 int gx1st = CRTC.crtR12GrXCurr[pn]; int gy1st = VideoController.vcnVisible1st + ((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; gx1st += 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); gx1st += 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); gx1st += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE1s_XHPT //================================================================================ //TE1s_XHPG ($0000,$21xx,$1E21) // 概要 // TE1s テキスト>512ドット16色1プレーン>スプライト(OFF) // XHPG 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー // さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q()))))):(e1p()<=1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):(mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2q()))):e1p()<=1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(epc(tev(e1p())),epc(tod(e2q())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())<=1?epc(0):ls1(v2)==0?epc(v2):mix(epc(tev(v2)),epc(tod(e2q()))):(v12=e1p())<=1?(v13=epc(0))!=0?v13:spc(0):ls1(v12)==0?(v16=epc(v12))!=0?v16:spc(0):(v18=mix(epc(tev(v12)),epc(tod(e2q()))))!=0?v18:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),epc(tod(e2q()))):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):(q=mix(epc(tev(p)),epc(tod(e2q()))))!=0?q:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),epc(e2q()|1)):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?q:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())<=1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),epc(e2q()|1))):(p=e1p())<=1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):(q=mix(epc(p&-2),epc(e2q()|1)))!=0?cto(q):spo(0) TE1s_XHPG { @Override public void drawRaster (int src, int dst, boolean rh) { 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 gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE1s_XHPG //================================================================================ //TE1s_XHPGT ($0000,$21xx,$1F21) // 概要 // TE1s テキスト>512ドット16色1プレーン>スプライト(OFF) // XHPGT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが1以下のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0))):(e1p()<=1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()<=1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):e1p()<=1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())<=1?epc(0):ls1(v2)==0?epc(v2):mix(mix(epc(tev(v2)),epc(tod(e2q()))),0):(v13=e1p())<=1?(v14=epc(0))!=0?v14:spc(0):ls1(v13)==0?(v17=epc(v13))!=0?v17:spc(0):mix(mix(epc(tev(v13)),epc(tod(e2q()))),spc(0)) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):ls1(p)==0?epc(p):mix(mix(epc(tev(p)),epc(tod(e2q()))),0):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):mix(mix(epc(tev(p)),epc(tod(e2q()))),spc(0)) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())<=1?epc(0):(p&1)==0?epc(p):mix(mix(epc(p&-2),epc(e2q()|1)),0):(p=e1p())<=1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):mix(mix(epc(p&-2),epc(e2q()|1)),spc(0)) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())<=1?epo(0):(p&1)==0?epo(p):cto(mix(mix(epc(p&-2),epc(e2q()|1)),0)):(p=e1p())<=1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):cto(mix(mix(epc(p&-2),epc(e2q()|1)),spc(0))) TE1s_XHPGT { @Override public void drawRaster (int src, int dst, boolean rh) { 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 gz2nd = VideoController.vcnHidden2nd + ((CRTC.crtR13GrYZero[pn] + src & 511) << 9); //ONとみなす 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) <= 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE1s_XHPGT //================================================================================ //TE2s ($0000,$21xx,$0023) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // 拡張なし // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?epc(e1p()):epc(e2p()))):(e1p()!=0?(epc(e1p())!=0?epc(e1p()):spc(0)):(epc(e2p())!=0?epc(e2p()):spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?epc(e1p()):epc(e2p()):e1p()!=0?epc(e1p())!=0?epc(e1p()):spc(0):epc(e2p())!=0?epc(e2p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?epc(v2):epc(e2p()):(v6=e1p())!=0?(v7=epc(v6))!=0?v7:spc(0):(v9=epc(e2p()))!=0?v9:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?epc(p):epc(e2p()):(p=e1p())!=0?(q=epc(p))!=0?q:spc(0):(p=epc(e2p()))!=0?p:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?epc(p):epc(e2p()):(p=e1p())!=0?(q=epc(p))!=0?q:spc(0):(p=epc(e2p()))!=0?p:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?epo(p):epo(e2p()):(p=e1p())!=0?(q=epc(p))!=0?cto(q):spo(0):(p=epc(e2p()))!=0?cto(p):spo(0) TE2s { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s //================================================================================ //XTE2s // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // 拡張あり XTE2s { @Override public void drawRaster (int src, int dst, boolean rh) { switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) { // .A.XHPGT case 0b00010000: //TE2s_XWC case 0b00010001: //TE2s_XWC case 0b00010010: //TE2s_XWC case 0b00010011: //TE2s_XWC TE2s_XWC.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00010100: //TE2s_XWP case 0b00010101: //TE2s_XWP case 0b00010110: //TE2s_XWP case 0b00010111: //TE2s_XWP TE2s_XWP.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011000: //TE2s_XHC TE2s.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011001: //TE2s_XHCT TE2s_XHCT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011010: //TE2s_XHCG TE2s_XHCG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011011: //TE2s_XHCGT TE2s_XHCGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011101: //TE2s_XHPT TE2s_XHPT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011110: //TE2s_XHPG TE2s_XHPG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011111: //TE2s_XHPGT TE2s_XHPGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b01000000: //TE2s_A case 0b01000001: //TE2s_A case 0b01000010: //TE2s_A case 0b01000011: //TE2s_A case 0b01000100: //TE2s_A case 0b01000101: //TE2s_A case 0b01000110: //TE2s_A case 0b01000111: //TE2s_A case 0b01001000: //TE2s_A case 0b01001001: //TE2s_A case 0b01001010: //TE2s_A case 0b01001011: //TE2s_A case 0b01001100: //TE2s_A case 0b01001101: //TE2s_A case 0b01001110: //TE2s_A case 0b01001111: //TE2s_A case 0b01010000: //TE2s_A case 0b01010001: //TE2s_A case 0b01010010: //TE2s_A case 0b01010011: //TE2s_A case 0b01010100: //TE2s_A case 0b01010101: //TE2s_A case 0b01010110: //TE2s_A case 0b01010111: //TE2s_A case 0b01011000: //TE2s_A case 0b01011001: //TE2s_A case 0b01011010: //TE2s_A case 0b01011011: //TE2s_A case 0b01011100: //TE2s_A case 0b01011101: //TE2s_A case 0b01011110: //TE2s_A case 0b01011111: //TE2s_A E2_A.drawRaster (src, dst, rh); break; default: TE2s.drawRaster (src, dst, rh); VideoController.vcnReportUnimplemented (XTE2s); } //switch } //drawRaster }, //XTE2s //================================================================================ //TE2s_XWC ($0000,$21xx,$1023) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XWC 優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?epc(e1p()):(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e1p())):(epc(e1p())!=0?epc(e1p()):spc(0)))):(ls1(epc(tev(e2p())))!=0?epc(e2p()):(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e2p())):(epc(e2p())!=0?epc(e2p()):spc(0))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?epc(e1p()):txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e1p()):epc(e1p())!=0?epc(e1p()):spc(0):ls1(epc(tev(e2p())))!=0?epc(e2p()):txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e2p()):epc(e2p())!=0?epc(e2p()):spc(0) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?epc(v0):(v5=txp())!=0?(v6=tpc(v5))!=0?v6:epc(v0):(v8=epc(v0))!=0?v8:spc(0):ls1(epc(tev(v13=e2p())))!=0?epc(v13):(v15=txp())!=0?(v16=tpc(v15))!=0?v16:epc(v13):(v18=epc(v13))!=0?v18:spc(0) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):ls1(epc(tev(p=e2p())))!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):(epc((p=e2p())&-2)&1)!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0):(epc((p=e2p())&-2)&1)!=0?epo(p):(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0) TE2s_XWC { @Override public void drawRaster (int src, int dst, boolean rh) { 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; gx1st += half; gx2nd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XWC //================================================================================ //TE2s_XWP ($0000,$21xx,$1423) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XWP 優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する // 手順 // 1番目のパレットが0のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 2番目のパレットを偶数化したパレットのカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが1のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // グラフィックパレット0のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラー(0は黒) // 中間コード1 // (e1p()==0?(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(tev(e2p()))):(epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0))):e1p()==1?(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(0)):(epc(0)!=0?epc(0):spc(0))):ls1(e1p())==0?(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e1p())):(epc(e1p())!=0?epc(e1p()):spc(0))):epc(tev(e1p()))) // 中間コード2 // e1p()==0?txp()!=0?tpc(txp())!=0?tpc(txp()):epc(tev(e2p())):epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0):e1p()==1?txp()!=0?tpc(txp())!=0?tpc(txp()):epc(0):epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e1p()):epc(e1p())!=0?epc(e1p()):spc(0):epc(tev(e1p())) // 中間コード3 // (v0=e1p())==0?(v1=txp())!=0?(v2=tpc(v1))!=0?v2:epc(tev(e2p())):(v6=epc(tev(e2p())))!=0?v6:spc(0):v0==1?(v10=txp())!=0?(v11=tpc(v10))!=0?v11:epc(0):(v13=epc(0))!=0?v13:spc(0):ls1(v0)==0?(v16=txp())!=0?(v17=tpc(v16))!=0?v17:epc(v0):(v19=epc(v0))!=0?v19:spc(0):epc(tev(v0)) // 中間コード4 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?q:epc(tev(e2p())):(p=epc(tev(e2p())))!=0?p:spc(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?q:epc(0):(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):epc(tev(p)) // 中間コード5 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?q:epc(e2p()&-2):(p=epc(e2p()&-2))!=0?p:spc(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?q:epc(0):(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):epc(p&-2) // 中間コード6 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?cto(q):epo(e2p()&-2):(p=epc(e2p()&-2))!=0?cto(p):spo(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?cto(q):epo(0):(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0):epo(p&-2) TE2s_XWP { @Override public void drawRaster (int src, int dst, boolean rh) { 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; gx1st += half; gx2nd += half; tc = tc + (half >> 3) & CRTC.crtMask511; da += half; } if (ts == 0) { //テキスト桁境界に合っているとき while (da < db) { int tp = (VideoController.VCN_TXP3[MainMemory.mmrM8[ta3 + tc] & 255] | VideoController.VCN_TXP2[MainMemory.mmrM8[ta2 + tc] & 255] | VideoController.VCN_TXP1[MainMemory.mmrM8[ta1 + tc] & 255] | VideoController.VCN_TXP0[MainMemory.mmrM8[ta0 + tc] & 255]); tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } else { //テキスト桁境界に合っていないとき // ts=1のとき int tt = ts + 8; //tt=9 ts += 16; //ts=17 // ........ ........ ........ 01234567 m8[ta0+tc] int p0 = MainMemory.mmrM8[ta0 + tc] << ts; //.......0 1234567_ ________ ________ p0=m8[ta0+tc]<<ts int p1 = MainMemory.mmrM8[ta1 + tc] << ts; int p2 = MainMemory.mmrM8[ta2 + tc] << ts; int p3 = MainMemory.mmrM8[ta3 + tc] << ts; tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 while (da < db) { // ........ ........ .1234567 ________ p0>>tt // ........ ........ .1234567 89abcdef p0>>tt|m8[ta0+tc]&255 p0 = (p0 >> tt | MainMemory.mmrM8[ta0 + tc] & 255) << ts; //12345678 9abcdef_ ________ ________ p0=(p0>>tt|m8[ta0+tc]&255)<<ts p1 = (p1 >> tt | MainMemory.mmrM8[ta1 + tc] & 255) << ts; //~~~~~~~~ p2 = (p2 >> tt | MainMemory.mmrM8[ta2 + tc] & 255) << ts; //ここを使う p3 = (p3 >> tt | MainMemory.mmrM8[ta3 + tc] & 255) << ts; int tp = (VideoController.VCN_TXP3[p3 >>> 24] | VideoController.VCN_TXP2[p2 >>> 24] | VideoController.VCN_TXP1[p1 >>> 24] | VideoController.VCN_TXP0[p0 >>> 24]); //符号なし右シフトで&255を省略 tc = tc + 1 & CRTC.crtMask511; //次回のテキスト桁位置 int p, q, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XWP //================================================================================ //TE2s_XHCT ($0000,$21xx,$1923) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHCT 0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),0):epc(e1p())):(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),0):epc(e2p())))):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),spc(0)):(epc(e1p())!=0?epc(e1p()):spc(0))):(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),spc(0)):(epc(e2p())!=0?epc(e2p()):spc(0))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),0):epc(e1p()):ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),0):epc(e2p()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),spc(0)):epc(e1p())!=0?epc(e1p()):spc(0):ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),spc(0)):epc(e2p())!=0?epc(e2p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?ls1(epc(tev(v2)))!=0?mix(epc(v2),0):epc(v2):ls1(epc(tev(v12=e2p())))!=0?mix(epc(v12),0):epc(v12):(v16=e1p())!=0?ls1(epc(tev(v16)))!=0?mix(epc(v16),spc(0)):(v23=epc(v16))!=0?v23:spc(0):ls1(epc(tev(v28=e2p())))!=0?mix(epc(v28),spc(0)):(v32=epc(v28))!=0?v32:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),0):epc(p):ls1(epc(tev(p=e2p())))!=0?mix(epc(p),0):epc(p):(p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):ls1(epc(tev(p=e2p())))!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),0):epc(p):(epc((p=e2p())&-2)&1)!=0?mix(epc(p),0):epc(p):(p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):(epc((p=e2p())&-2)&1)!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),0)):epo(p):(epc((p=e2p())&-2)&1)!=0?cto(mix(epc(p),0)):epo(p):(p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),spc(0))):(q=epc(p))!=0?cto(q):spo(0):(epc((p=e2p())&-2)&1)!=0?cto(mix(epc(p),spc(0))):(q=epc(p))!=0?cto(q):spo(0) TE2s_XHCT { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHCT //================================================================================ //TE2s_XHCG ($0000,$21xx,$1A23) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHCG 0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー // さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls1(e1p())!=0?epc(tod(e2q())):epc(e1p()))):(ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):epc(e2p())))):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0)):(epc(e1p())!=0?epc(e1p()):spc(0)))):(ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):(epc(e2p())!=0?epc(e2p()):spc(0))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls1(e1p())!=0?epc(tod(e2q())):epc(e1p()):ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):epc(e2p()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(tev(e1p())),epc(tod(e2q()))):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0):epc(e1p())!=0?epc(e1p()):spc(0):ls1(epc(tev(e2p())))!=0?mix(epc(tev(e2p())),epc(tod(e2q()))):epc(e2p())!=0?epc(e2p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?ls1(v4=epc(tev(v2)))!=0?mix(v4,epc(tod(e2q()))):ls1(v2)!=0?epc(tod(e2q())):epc(v2):ls1(v16=epc(tev(v18=e2p())))!=0?mix(v16,epc(tod(e2q()))):epc(v18):(v24=e1p())!=0?ls1(v26=epc(tev(v24)))!=0?mix(v26,epc(tod(e2q()))):ls1(v24)!=0?(v33=epc(tod(e2q())))!=0?v33:spc(0):(v37=epc(v24))!=0?v37:spc(0):ls1(v40=epc(tev(v42=e2p())))!=0?mix(v40,epc(tod(e2q()))):(v47=epc(v42))!=0?v47:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):ls1(p)!=0?epc(tod(e2q())):epc(p):ls1(p=epc(tev(q=e2p())))!=0?mix(p,epc(tod(e2q()))):epc(q):(p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(q,epc(tod(e2q()))):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:spc(0):(q=epc(p))!=0?q:spc(0):ls1(p=epc(tev(q=e2p())))!=0?mix(p,epc(tod(e2q()))):(p=epc(q))!=0?p:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(p&1)!=0?epc(e2q()|1):epc(p):((p=epc((q=e2p())&-2))&1)!=0?mix(p,epc(e2q()|1)):epc(q):(p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(q,epc(e2q()|1)):(p&1)!=0?(p=epc(e2q()|1))!=0?p:spc(0):(q=epc(p))!=0?q:spc(0):((p=epc((q=e2p())&-2))&1)!=0?mix(p,epc(e2q()|1)):(p=epc(q))!=0?p:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(q,epc(e2q()|1))):(p&1)!=0?epo(e2q()|1):epo(p):((p=epc((q=e2p())&-2))&1)!=0?cto(mix(p,epc(e2q()|1))):epo(q):(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):spo(0):(q=epc(p))!=0?cto(q):spo(0):((p=epc((q=e2p())&-2))&1)!=0?cto(mix(p,epc(e2q()|1))):(p=epc(q))!=0?cto(p):spo(0) TE2s_XHCG { @Override public void drawRaster (int src, int dst, boolean rh) { 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とみなす 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : VideoController.vcnPal32G8[q] : (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] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHCG //================================================================================ //TE2s_XHCGT ($0000,$21xx,$1B23) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHCGT 0でない1番目のパレットを偶数化したパレットのカラーが奇数のときそれと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のパレットが奇数のとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0でないとき // 2番目(ONとみなす)のパレットを奇数化したパレットのカラー // さもなくば(2番目(ONとみなす)のパレットを奇数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のパレットを偶数化したパレットのカラーと2番目(ONとみなす)のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):(ls1(e1p())!=0?epc(tod(e2q())):epc(e1p()))):(ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),0):epc(e2p())))):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)):(ls1(e1p())!=0?(epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0)):(epc(e1p())!=0?epc(e1p()):spc(0)))):(ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),spc(0)):(epc(e2p())!=0?epc(e2p()):spc(0))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),0):ls1(e1p())!=0?epc(tod(e2q())):epc(e1p()):ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),0):epc(e2p()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(mix(epc(tev(e1p())),epc(tod(e2q()))),spc(0)):ls1(e1p())!=0?epc(tod(e2q()))!=0?epc(tod(e2q())):spc(0):epc(e1p())!=0?epc(e1p()):spc(0):ls1(epc(tev(e2p())))!=0?mix(mix(epc(tev(e2p())),epc(tod(e2q()))),spc(0)):epc(e2p())!=0?epc(e2p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?ls1(v4=epc(tev(v2)))!=0?mix(mix(v4,epc(tod(e2q()))),0):ls1(v2)!=0?epc(tod(e2q())):epc(v2):ls1(v17=epc(tev(v19=e2p())))!=0?mix(mix(v17,epc(tod(e2q()))),0):epc(v19):(v26=e1p())!=0?ls1(v28=epc(tev(v26)))!=0?mix(mix(v28,epc(tod(e2q()))),spc(0)):ls1(v26)!=0?(v37=epc(tod(e2q())))!=0?v37:spc(0):(v41=epc(v26))!=0?v41:spc(0):ls1(v44=epc(tev(v46=e2p())))!=0?mix(mix(v44,epc(tod(e2q()))),spc(0)):(v53=epc(v46))!=0?v53:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),0):ls1(p)!=0?epc(tod(e2q())):epc(p):ls1(p=epc(tev(q=e2p())))!=0?mix(mix(p,epc(tod(e2q()))),0):epc(q):(p=e1p())!=0?ls1(q=epc(tev(p)))!=0?mix(mix(q,epc(tod(e2q()))),spc(0)):ls1(p)!=0?(p=epc(tod(e2q())))!=0?p:spc(0):(q=epc(p))!=0?q:spc(0):ls1(p=epc(tev(q=e2p())))!=0?mix(mix(p,epc(tod(e2q()))),spc(0)):(p=epc(q))!=0?p:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),0):(p&1)!=0?epc(e2q()|1):epc(p):((p=epc((q=e2p())&-2))&1)!=0?mix(mix(p,epc(e2q()|1)),0):epc(q):(p=e1p())!=0?((q=epc(p&-2))&1)!=0?mix(mix(q,epc(e2q()|1)),spc(0)):(p&1)!=0?(p=epc(e2q()|1))!=0?p:spc(0):(q=epc(p))!=0?q:spc(0):((p=epc((q=e2p())&-2))&1)!=0?mix(mix(p,epc(e2q()|1)),spc(0)):(p=epc(q))!=0?p:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),0)):(p&1)!=0?epo(e2q()|1):epo(p):((p=epc((q=e2p())&-2))&1)!=0?cto(mix(mix(p,epc(e2q()|1)),0)):epo(q):(p=e1p())!=0?((q=epc(p&-2))&1)!=0?cto(mix(mix(q,epc(e2q()|1)),spc(0))):(p&1)!=0?(p=epc(e2q()|1))!=0?cto(p):spo(0):(q=epc(p))!=0?cto(q):spo(0):((p=epc((q=e2p())&-2))&1)!=0?cto(mix(mix(p,epc(e2q()|1)),spc(0))):(p=epc(q))!=0?cto(p):spo(0) TE2s_XHCGT { @Override public void drawRaster (int src, int dst, boolean rh) { 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とみなす 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : (p & 1) != 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1] : VideoController.vcnPal32G8[p] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), 0)] : VideoController.vcnPal32G8[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? ((q = VideoController.vcnPal16G8[p & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( q, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p & 1) != 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : ((p = VideoController.vcnPal16G8[(q = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) & -2]) & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( p, VideoController.vcnPal16G8[GraphicScreen.graM4[gz2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])] : (p = VideoController.vcnPal16G8[q]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHCGT //================================================================================ //TE2s_XHPT ($0000,$21xx,$1D23) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHPT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0))):(e1p()==0?(epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0)):e1p()==1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):mix(epc(tev(e1p())),spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),0):e1p()==0?epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0):e1p()==1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(epc(tev(e1p())),spc(0)) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())==0?epc(tev(e2p())):v2==1?epc(0):ls1(v2)==0?epc(v2):mix(epc(tev(v2)),0):(v12=e1p())==0?(v13=epc(tev(e2p())))!=0?v13:spc(0):v12==1?(v17=epc(0))!=0?v17:spc(0):ls1(v12)==0?(v20=epc(v12))!=0?v20:spc(0):mix(epc(tev(v12)),spc(0)) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(tev(e2p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),0):(p=e1p())==0?(p=epc(tev(e2p())))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):mix(epc(tev(p)),spc(0)) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(e2p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),0):(p=e1p())==0?(p=epc(e2p()&-2))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):mix(epc(p&-2),spc(0)) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())==0?epo(e2p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),0)):(p=e1p())==0?(p=epc(e2p()&-2))!=0?cto(p):spo(0):p==1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):cto(mix(epc(p&-2),spc(0))) TE2s_XHPT { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16TS[0])]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHPT //================================================================================ //TE2s_XHPG ($0000,$21xx,$1E23) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHPG 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0でないとき // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラー // さもなくば(1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2p()))))):(e1p()==0?(epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0)):e1p()==1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):(mix(epc(tev(e1p())),epc(tod(e2p())))!=0?mix(epc(tev(e1p())),epc(tod(e2p()))):spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(epc(tev(e1p())),epc(tod(e2p()))):e1p()==0?epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0):e1p()==1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(epc(tev(e1p())),epc(tod(e2p())))!=0?mix(epc(tev(e1p())),epc(tod(e2p()))):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())==0?epc(tev(e2p())):v2==1?epc(0):ls1(v2)==0?epc(v2):mix(epc(tev(v2)),epc(tod(e2p()))):(v15=e1p())==0?(v16=epc(tev(e2p())))!=0?v16:spc(0):v15==1?(v20=epc(0))!=0?v20:spc(0):ls1(v15)==0?(v23=epc(v15))!=0?v23:spc(0):(v25=mix(epc(tev(v15)),epc(tod(e2p()))))!=0?v25:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(tev(e2p())):p==1?epc(0):ls1(p)==0?epc(p):mix(epc(tev(p)),epc(tod(e2p()))):(p=e1p())==0?(p=epc(tev(e2p())))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):(q=mix(epc(tev(p)),epc(tod(e2p()))))!=0?q:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(e2p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(epc(p&-2),epc(e2p()|1)):(p=e1p())==0?(p=epc(e2p()&-2))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):(q=mix(epc(p&-2),epc(e2p()|1)))!=0?q:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())==0?epo(e2p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(epc(p&-2),epc(e2p()|1))):(p=e1p())==0?(p=epc(e2p()&-2))!=0?cto(p):spo(0):p==1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):(q=mix(epc(p&-2),epc(e2p()|1)))!=0?cto(q):spo(0) TE2s_XHPG { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (q = VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1])) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHPG //================================================================================ //TE2s_XHPGT ($0000,$21xx,$1F23) // 概要 // TE2s テキスト>512ドット16色2プレーン>スプライト(OFF) // XHPGT 1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜてさらに奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらにカラー0を混ぜたカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0のとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが1のとき // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラーと2番目のパレットを奇数化したパレットのカラーを混ぜたカラーにさらに // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),0))):(e1p()==0?(epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0)):e1p()==1?(epc(0)!=0?epc(0):spc(0)):ls1(e1p())==0?(epc(e1p())!=0?epc(e1p()):spc(0)):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),spc(0)))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()==0?epc(tev(e2p())):e1p()==1?epc(0):ls1(e1p())==0?epc(e1p()):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),0):e1p()==0?epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0):e1p()==1?epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?epc(e1p())!=0?epc(e1p()):spc(0):mix(mix(epc(tev(e1p())),epc(tod(e2p()))),spc(0)) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())==0?epc(tev(e2p())):v2==1?epc(0):ls1(v2)==0?epc(v2):mix(mix(epc(tev(v2)),epc(tod(e2p()))),0):(v16=e1p())==0?(v17=epc(tev(e2p())))!=0?v17:spc(0):v16==1?(v21=epc(0))!=0?v21:spc(0):ls1(v16)==0?(v24=epc(v16))!=0?v24:spc(0):mix(mix(epc(tev(v16)),epc(tod(e2p()))),spc(0)) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(tev(e2p())):p==1?epc(0):ls1(p)==0?epc(p):mix(mix(epc(tev(p)),epc(tod(e2p()))),0):(p=e1p())==0?(p=epc(tev(e2p())))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=epc(p))!=0?q:spc(0):mix(mix(epc(tev(p)),epc(tod(e2p()))),spc(0)) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())==0?epc(e2p()&-2):p==1?epc(0):(p&1)==0?epc(p):mix(mix(epc(p&-2),epc(e2p()|1)),0):(p=e1p())==0?(p=epc(e2p()&-2))!=0?p:spc(0):p==1?(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=epc(p))!=0?q:spc(0):mix(mix(epc(p&-2),epc(e2p()|1)),spc(0)) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())==0?epo(e2p()&-2):p==1?epo(0):(p&1)==0?epo(p):cto(mix(mix(epc(p&-2),epc(e2p()|1)),0)):(p=e1p())==0?(p=epc(e2p()&-2))!=0?cto(p):spo(0):p==1?(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=epc(p))!=0?cto(q):spo(0):cto(mix(mix(epc(p&-2),epc(e2p()|1)),spc(0))) TE2s_XHPGT { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] | 1]), VideoController.vcnPal16TS[0])]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? VideoController.vcnPal32G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2] : p == 1 ? VideoController.vcnPal32G8[0] : (p & 1) == 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), 0)] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnMix2 ( VideoController.vcnPal16G8[p & -2], VideoController.vcnPal16G8[GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] | 1]), VideoController.vcnPal16TS[0])]); gx1st += 8; gx2nd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE2s_XHPGT //================================================================================ //TE3s ($0000,$21xx,$0027) // 概要 // TE3s テキスト>512ドット16色3プレーン>スプライト(OFF) // 拡張なし // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?epc(e1p()):(e2p()!=0?epc(e2p()):epc(e3p())))):(e1p()!=0?(epc(e1p())!=0?epc(e1p()):spc(0)):(e2p()!=0?(epc(e2p())!=0?epc(e2p()):spc(0)):(epc(e3p())!=0?epc(e3p()):spc(0))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?epc(e1p()):e2p()!=0?epc(e2p()):epc(e3p()):e1p()!=0?epc(e1p())!=0?epc(e1p()):spc(0):e2p()!=0?epc(e2p())!=0?epc(e2p()):spc(0):epc(e3p())!=0?epc(e3p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?epc(v2):(v4=e2p())!=0?epc(v4):epc(e3p()):(v8=e1p())!=0?(v9=epc(v8))!=0?v9:spc(0):(v11=e2p())!=0?(v12=epc(v11))!=0?v12:spc(0):(v14=epc(e3p()))!=0?v14:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?epc(p):(p=e2p())!=0?epc(p):epc(e3p()):(p=e1p())!=0?(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?(q=epc(p))!=0?q:spc(0):(p=epc(e3p()))!=0?p:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?epc(p):(p=e2p())!=0?epc(p):epc(e3p()):(p=e1p())!=0?(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?(q=epc(p))!=0?q:spc(0):(p=epc(e3p()))!=0?p:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?epo(p):(p=e2p())!=0?epo(p):epo(e3p()):(p=e1p())!=0?(q=epc(p))!=0?cto(q):spo(0):(p=e2p())!=0?(q=epc(p))!=0?cto(q):spo(0):(p=epc(e3p()))!=0?cto(p):spo(0) TE3s { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE3s //================================================================================ //XTE3s // 概要 // TE3s テキスト>512ドット16色3プレーン>スプライト(OFF) // 拡張あり XTE3s { @Override public void drawRaster (int src, int dst, boolean rh) { switch (VideoController.vcnReg3Curr >>> 8 & 0b01011111) { // .A.XHPGT case 0b00010000: //TE3s_XWC case 0b00010001: //TE3s_XWC case 0b00010010: //TE3s_XWC case 0b00010011: //TE3s_XWC TE3s_XWC.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00010100: //TE3s_XWP case 0b00010101: //TE3s_XWP case 0b00010110: //TE3s_XWP case 0b00010111: //TE3s_XWP TE3s_XWP.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011000: //TE3s_XHC TE3s.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011001: //TE3s_XHCT TE3s_XHCT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011010: //TE3s_XHCG TE3s_XHCG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011011: //TE3s_XHCGT TE3s_XHCGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011101: //TE3s_XHPT TE3s_XHPT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011110: //TE3s_XHPG TE3s_XHPG.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b00011111: //TE3s_XHPGT TE3s_XHPGT.drawRaster (src, dst, rh); break; // .A.XHPGT case 0b01000000: //TE3s_A case 0b01000001: //TE3s_A case 0b01000010: //TE3s_A case 0b01000011: //TE3s_A case 0b01000100: //TE3s_A case 0b01000101: //TE3s_A case 0b01000110: //TE3s_A case 0b01000111: //TE3s_A case 0b01001000: //TE3s_A case 0b01001001: //TE3s_A case 0b01001010: //TE3s_A case 0b01001011: //TE3s_A case 0b01001100: //TE3s_A case 0b01001101: //TE3s_A case 0b01001110: //TE3s_A case 0b01001111: //TE3s_A case 0b01010000: //TE3s_A case 0b01010001: //TE3s_A case 0b01010010: //TE3s_A case 0b01010011: //TE3s_A case 0b01010100: //TE3s_A case 0b01010101: //TE3s_A case 0b01010110: //TE3s_A case 0b01010111: //TE3s_A case 0b01011000: //TE3s_A case 0b01011001: //TE3s_A case 0b01011010: //TE3s_A case 0b01011011: //TE3s_A case 0b01011100: //TE3s_A case 0b01011101: //TE3s_A case 0b01011110: //TE3s_A case 0b01011111: //TE3s_A E3_A.drawRaster (src, dst, rh); break; default: TE3s.drawRaster (src, dst, rh); VideoController.vcnReportUnimplemented (XTE3s); } //switch } //drawRaster }, //XTE3s //================================================================================ //TE3s_XWC ($0000,$21xx,$1027) // 概要 // TE3s テキスト>512ドット16色3プレーン>スプライト(OFF) // XWC 優先順位に関わらず0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のパレットのカラーだけ表示する // 手順 // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 2番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 3番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (e1p()!=0?(ls1(epc(tev(e1p())))!=0?epc(e1p()):(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e1p())):(epc(e1p())!=0?epc(e1p()):spc(0)))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?epc(e2p()):(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e2p())):(epc(e2p())!=0?epc(e2p()):spc(0)))):(ls1(epc(tev(e3p())))!=0?epc(e3p()):(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e3p())):(epc(e3p())!=0?epc(e3p()):spc(0)))))) // 中間コード2 // e1p()!=0?ls1(epc(tev(e1p())))!=0?epc(e1p()):txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e1p()):epc(e1p())!=0?epc(e1p()):spc(0):e2p()!=0?ls1(epc(tev(e2p())))!=0?epc(e2p()):txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e2p()):epc(e2p())!=0?epc(e2p()):spc(0):ls1(epc(tev(e3p())))!=0?epc(e3p()):txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e3p()):epc(e3p())!=0?epc(e3p()):spc(0) // 中間コード3 // (v0=e1p())!=0?ls1(epc(tev(v0)))!=0?epc(v0):(v5=txp())!=0?(v6=tpc(v5))!=0?v6:epc(v0):(v8=epc(v0))!=0?v8:spc(0):(v10=e2p())!=0?ls1(epc(tev(v10)))!=0?epc(v10):(v15=txp())!=0?(v16=tpc(v15))!=0?v16:epc(v10):(v18=epc(v10))!=0?v18:spc(0):ls1(epc(tev(v23=e3p())))!=0?epc(v23):(v25=txp())!=0?(v26=tpc(v25))!=0?v26:epc(v23):(v28=epc(v23))!=0?v28:spc(0) // 中間コード4 // (p=e1p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?ls1(epc(tev(p)))!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):ls1(epc(tev(p=e3p())))!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0) // 中間コード5 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?(epc(p&-2)&1)!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):(epc((p=e3p())&-2)&1)!=0?epc(p):(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0) // 中間コード6 // (p=e1p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0):(p=e2p())!=0?(epc(p&-2)&1)!=0?epo(p):(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0):(epc((p=e3p())&-2)&1)!=0?epo(p):(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0) TE3s_XWC { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); 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, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPal32G8[p] : (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE3s_XWC //================================================================================ //TE3s_XWP ($0000,$21xx,$1427) // 概要 // TE3s テキスト>512ドット16色3プレーン>スプライト(OFF) // XWP 優先順位に関わらず1番目のパレットが3以上の奇数のときそれを偶数化したパレットのカラーだけ表示する // 手順 // 1番目のパレットが0のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 2番目のパレットを偶数化したパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが0でないとき // 2番目のパレットを偶数化したパレットのカラー // さもなくば(2番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが0でないとき // 3番目のパレットを偶数化したパレットのカラー // さもなくば(3番目のパレットを偶数化したパレットのカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが1のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // グラフィックパレット0のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // グラフィックパレット0のカラーが0でないとき // グラフィックパレット0のカラー // さもなくば(グラフィックパレット0のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 1番目のパレットが2以上の偶数のとき // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが3以上の奇数のとき) // 1番目のパレットを偶数化したパレットのカラー(0は黒) // 中間コード1 // (e1p()==0?(txp()!=0?(tpc(txp())!=0?tpc(txp()):((tev(e2p()))!=0?epc(tev(e2p())):epc(tev(e3p())))):((tev(e2p()))!=0?(epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0)):(epc(tev(e3p()))!=0?epc(tev(e3p())):spc(0)))):e1p()==1?(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(0)):(epc(0)!=0?epc(0):spc(0))):ls1(e1p())==0?(txp()!=0?(tpc(txp())!=0?tpc(txp()):epc(e1p())):(epc(e1p())!=0?epc(e1p()):spc(0))):epc(tev(e1p()))) // 中間コード2 // e1p()==0?txp()!=0?tpc(txp())!=0?tpc(txp()):tev(e2p())!=0?epc(tev(e2p())):epc(tev(e3p())):tev(e2p())!=0?epc(tev(e2p()))!=0?epc(tev(e2p())):spc(0):epc(tev(e3p()))!=0?epc(tev(e3p())):spc(0):e1p()==1?txp()!=0?tpc(txp())!=0?tpc(txp()):epc(0):epc(0)!=0?epc(0):spc(0):ls1(e1p())==0?txp()!=0?tpc(txp())!=0?tpc(txp()):epc(e1p()):epc(e1p())!=0?epc(e1p()):spc(0):epc(tev(e1p())) // 中間コード3 // (v0=e1p())==0?(v1=txp())!=0?(v2=tpc(v1))!=0?v2:(v3=tev(e2p()))!=0?epc(v3):epc(tev(e3p())):(v9=tev(e2p()))!=0?(v11=epc(v9))!=0?v11:spc(0):(v13=epc(tev(e3p())))!=0?v13:spc(0):v0==1?(v17=txp())!=0?(v18=tpc(v17))!=0?v18:epc(0):(v20=epc(0))!=0?v20:spc(0):ls1(v0)==0?(v23=txp())!=0?(v24=tpc(v23))!=0?v24:epc(v0):(v26=epc(v0))!=0?v26:spc(0):epc(tev(v0)) // 中間コード4 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?q:(p=tev(e2p()))!=0?epc(p):epc(tev(e3p())):(p=tev(e2p()))!=0?(q=epc(p))!=0?q:spc(0):(p=epc(tev(e3p())))!=0?p:spc(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?q:epc(0):(p=epc(0))!=0?p:spc(0):ls1(p)==0?(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):epc(tev(p)) // 中間コード5 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?q:(p=e2p()&-2)!=0?epc(p):epc(e3p()&-2):(p=e2p()&-2)!=0?(q=epc(p))!=0?q:spc(0):(p=epc(e3p()&-2))!=0?p:spc(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?q:epc(0):(p=epc(0))!=0?p:spc(0):(p&1)==0?(q=txp())!=0?(r=tpc(q))!=0?r:epc(p):(q=epc(p))!=0?q:spc(0):epc(p&-2) // 中間コード6 // (p=e1p())==0?(p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e2p()&-2)!=0?epo(p):epo(e3p()&-2):(p=e2p()&-2)!=0?(q=epc(p))!=0?cto(q):spo(0):(p=epc(e3p()&-2))!=0?cto(p):spo(0):p==1?(p=txp())!=0?(q=tpc(p))!=0?cto(q):epo(0):(p=epc(0))!=0?cto(p):spo(0):(p&1)==0?(q=txp())!=0?(r=tpc(q))!=0?cto(r):epo(p):(q=epc(p))!=0?cto(q):spo(0):epo(p&-2) TE3s_XWP { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); 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, r; XEiJ.pnlBM[da] = ((p = GraphicScreen.graM4[gy1st | gx1st & 511]) == 0 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 28) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 1] = ((p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) == 0 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 24 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 2] = ((p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) == 0 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 20 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 3] = ((p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) == 0 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 16 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 4] = ((p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) == 0 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 12 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 5] = ((p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) == 0 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 8 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 6] = ((p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) == 0 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp >>> 4 & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); XEiJ.pnlBM[da + 7] = ((p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) == 0 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? VideoController.vcnPal32G8[p] : VideoController.vcnPal32G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511] & -2) != 0 ? (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = VideoController.vcnPal16G8[GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511] & -2]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : p == 1 ? (p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32G8[0] : (p = VideoController.vcnPal16G8[0]) != 0 ? VideoController.vcnPalTbl[p] : VideoController.vcnPal32TS[0] : (p & 1) == 0 ? (q = tp & 15) != 0 ? (r = VideoController.vcnPal16TS[q]) != 0 ? VideoController.vcnPalTbl[r] : VideoController.vcnPal32G8[p] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : VideoController.vcnPal32G8[p & -2]); gx1st += 8; gx2nd += 8; gx3rd += 8; da += 8; } //while da<db } //if ts==0 } //drawRaster }, //TE3s_XWP //================================================================================ //TE3s_XHCT ($0000,$21xx,$1927) // 概要 // TE3s テキスト>512ドット16色3プレーン>スプライト(OFF) // XHCT 0でない1番目のパレットを偶数化(65536色は奇数化)したパレットのカラーが奇数のとき0でない1番目のカラーと奥のスプライト・テキストのカラーを混ぜる // 手順 // テキストパレットが0でないとき // テキストカラーが0でないとき // テキストカラー // さもなくば(テキストカラーが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラーとカラー0を混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラー(0は黒) // さもなくば(テキストパレットが0のとき) // 1番目のパレットが0でないとき // 1番目のパレットを偶数化したパレットのカラーが奇数のとき // 1番目のカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(1番目のパレットを偶数化したパレットのカラーが偶数のとき) // 1番目のカラーが0でないとき // 1番目のカラー // さもなくば(1番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(1番目のパレットが0のとき) // 2番目のパレットが0でないとき // 2番目のパレットを偶数化したパレットのカラーが奇数のとき // 2番目のカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(2番目のパレットを偶数化したパレットのカラーが偶数のとき) // 2番目のカラーが0でないとき // 2番目のカラー // さもなくば(2番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // さもなくば(2番目のパレットが0のとき) // 3番目のパレットを偶数化したパレットのカラーが奇数のとき // 3番目のカラーと // スプライトパレット0のカラー(0は黒) // を混ぜたカラー(0は黒) // さもなくば(3番目のパレットを偶数化したパレットのカラーが偶数のとき) // 3番目のカラーが0でないとき // 3番目のカラー // さもなくば(3番目のカラーが0のとき) // スプライトパレット0のカラー(0は黒) // 中間コード1 // (txp()!=0?(tpc(txp())!=0?tpc(txp()):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),0):epc(e1p())):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),0):epc(e2p())):(ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),0):epc(e3p()))))):(e1p()!=0?(ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),spc(0)):(epc(e1p())!=0?epc(e1p()):spc(0))):(e2p()!=0?(ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),spc(0)):(epc(e2p())!=0?epc(e2p()):spc(0))):(ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),spc(0)):(epc(e3p())!=0?epc(e3p()):spc(0)))))) // 中間コード2 // txp()!=0?tpc(txp())!=0?tpc(txp()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),0):epc(e1p()):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),0):epc(e2p()):ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),0):epc(e3p()):e1p()!=0?ls1(epc(tev(e1p())))!=0?mix(epc(e1p()),spc(0)):epc(e1p())!=0?epc(e1p()):spc(0):e2p()!=0?ls1(epc(tev(e2p())))!=0?mix(epc(e2p()),spc(0)):epc(e2p())!=0?epc(e2p()):spc(0):ls1(epc(tev(e3p())))!=0?mix(epc(e3p()),spc(0)):epc(e3p())!=0?epc(e3p()):spc(0) // 中間コード3 // (v0=txp())!=0?(v1=tpc(v0))!=0?v1:(v2=e1p())!=0?ls1(epc(tev(v2)))!=0?mix(epc(v2),0):epc(v2):(v9=e2p())!=0?ls1(epc(tev(v9)))!=0?mix(epc(v9),0):epc(v9):ls1(epc(tev(v19=e3p())))!=0?mix(epc(v19),0):epc(v19):(v23=e1p())!=0?ls1(epc(tev(v23)))!=0?mix(epc(v23),spc(0)):(v30=epc(v23))!=0?v30:spc(0):(v32=e2p())!=0?ls1(epc(tev(v32)))!=0?mix(epc(v32),spc(0)):(v39=epc(v32))!=0?v39:spc(0):ls1(epc(tev(v44=e3p())))!=0?mix(epc(v44),spc(0)):(v48=epc(v44))!=0?v48:spc(0) // 中間コード4 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),0):epc(p):(p=e2p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),0):epc(p):ls1(epc(tev(p=e3p())))!=0?mix(epc(p),0):epc(p):(p=e1p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?ls1(epc(tev(p)))!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):ls1(epc(tev(p=e3p())))!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0) // 中間コード5 // (p=txp())!=0?(q=tpc(p))!=0?q:(p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),0):epc(p):(p=e2p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),0):epc(p):(epc((p=e3p())&-2)&1)!=0?mix(epc(p),0):epc(p):(p=e1p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):(p=e2p())!=0?(epc(p&-2)&1)!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0):(epc((p=e3p())&-2)&1)!=0?mix(epc(p),spc(0)):(q=epc(p))!=0?q:spc(0) // 中間コード6 // (p=txp())!=0?(q=tpc(p))!=0?cto(q):(p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),0)):epo(p):(p=e2p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),0)):epo(p):(epc((p=e3p())&-2)&1)!=0?cto(mix(epc(p),0)):epo(p):(p=e1p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),spc(0))):(q=epc(p))!=0?cto(q):spo(0):(p=e2p())!=0?(epc(p&-2)&1)!=0?cto(mix(epc(p),spc(0))):(q=epc(p))!=0?cto(q):spo(0):(epc((p=e3p())&-2)&1)!=0?cto(mix(epc(p),spc(0))):(q=epc(p))!=0?cto(q):spo(0) TE3s_XHCT { @Override public void drawRaster (int src, int dst, boolean rh) { 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; 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 = tp >>> 28) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 1] = ((p = tp >>> 24 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 1 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 1 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 2] = ((p = tp >>> 20 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 2 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 2 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 3] = ((p = tp >>> 16 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 3 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 3 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 4] = ((p = tp >>> 12 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 4 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 4 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 5] = ((p = tp >>> 8 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 5 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 5 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 6] = ((p = tp >>> 4 & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 6 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 6 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); XEiJ.pnlBM[da + 7] = ((p = tp & 15) != 0 ? (q = VideoController.vcnPal16TS[p]) != 0 ? VideoController.vcnPalTbl[q] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], 0)] : VideoController.vcnPal32G8[p] : (p = GraphicScreen.graM4[gy1st | gx1st + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (p = GraphicScreen.graM4[gy2nd | gx2nd + 7 & 511]) != 0 ? (VideoController.vcnPal16G8[p & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0] : (VideoController.vcnPal16G8[(p = GraphicScreen.graM4[gy3rd | gx3rd + 7 & 511]) & -2] & 1) != 0 ? VideoController.vcnPalTbl[ VideoController.vcnMix2 ( VideoController.vcnPal16G8[p], VideoController.vcnPal16TS[0])] : (q = VideoController.vcnPal16G8[p]) != 0 ? VideoController.vcnPalTbl[q] : VideoController.vcnPal32TS[0]); 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