|
|
| version 1.2, 2004/08/08 09:12:06 | version 1.6, 2005/02/04 06:42:12 |
|---|---|
| Line 2 | Line 2 |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "vram.h" | #include "vram.h" |
| #include "makescrn.h" | |
| #include "makesub.h" | #include "makesub.h" |
| #include "font.h" | #include "font.h" |
| extern BYTE blinktest; | |
| void makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { | void makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { |
| REG8 atr; | REG8 atr; |
| Line 17 void makechr8(UINT8 *dst, UINT pos, UINT | Line 15 void makechr8(UINT8 *dst, UINT pos, UINT |
| const UINT8 *pat; | const UINT8 *pat; |
| MAKETXTFN fn; | MAKETXTFN fn; |
| atr = tram[TRAM_ATR + pos]; | atr = TRAM_ATR(pos); |
| if (atr & blinktest) { | if (atr & makescrn.blinktest) { |
| atr ^= X1ATR_REVERSE; | atr ^= TRAMATR_REVERSE; |
| } | } |
| if (udtmp & 0x10) { | if (udtmp & 0x10) { |
| pos = LOW11(pos - 1); | pos = LOW11(pos - 1); |
| } | } |
| ank = tram[TRAM_ANK + pos]; | ank = TRAM_ANK(pos); |
| knj = tram[TRAM_KNJ + pos]; | knj = TRAM_KNJ(pos); |
| if (!(tram[TRAM_ATR + pos] & 0x20)) { // CHR | if (!(TRAM_ATR(pos) & 0x20)) { // CHR |
| if (!(knj & 0x80)) { // ASCII | if (!(knj & 0x80)) { // ASCII |
| pat = font_ank + (ank << 3); | pat = font_ank + (ank << 3); |
| fn = maketxt8fn[udtmp & 15]; | fn = maketxt8fn[udtmp & 15]; |
| Line 45 const UINT8 *pat; | Line 43 const UINT8 *pat; |
| } | } |
| else { // PCG | else { // PCG |
| if (!(knj & 0x90)) { // PCGの出力 | if (!(knj & 0x90)) { // PCGの出力 |
| pat = pcg.d.b[ank]; | pat = pcg.d + (ank << 3); |
| fn = maketxt8fn[udtmp & 15]; | fn = maketxt8fn[udtmp & 15]; |
| } | } |
| else { // 16ドットPCGの出力 | else { // 16ドットPCGの出力 |
| pat = pcg.d.b[ank & (~1)]; | pat = pcg.d + ((ank & (~1)) << 3); |
| fn = makeknj8fn[udtmp & 15]; | fn = makeknj8fn[udtmp & 15]; |
| } | } |
| makeatr_pcg8(dst, count, pat, atr, fn); | makeatr_pcg8(dst, count, pat, atr, fn); |
| Line 64 void makechr16(UINT8 *dst, UINT pos, UIN | Line 62 void makechr16(UINT8 *dst, UINT pos, UIN |
| const UINT8 *pat; | const UINT8 *pat; |
| MAKETXTFN fn; | MAKETXTFN fn; |
| atr = tram[TRAM_ATR + pos]; | atr = TRAM_ATR(pos); |
| if (atr & blinktest) { | if (atr & makescrn.blinktest) { |
| atr ^= X1ATR_REVERSE; | atr ^= TRAMATR_REVERSE; |
| } | } |
| if (udtmp & 0x10) { | if (udtmp & 0x10) { |
| pos = LOW11(pos - 1); | pos = LOW11(pos - 1); |
| } | } |
| ank = tram[TRAM_ANK + pos]; | ank = TRAM_ANK(pos); |
| knj = tram[TRAM_KNJ + pos]; | knj = TRAM_KNJ(pos); |
| if (!(tram[TRAM_ATR + pos] & 0x20)) { // CHR | if (!(TRAM_ATR(pos) & 0x20)) { // CHR |
| if (!(knj & 0x80)) { // ASCII | if (!(knj & 0x80)) { // ASCII |
| pat = font_txt; | pat = font_txt; |
| } | } |
| Line 92 const UINT8 *pat; | Line 90 const UINT8 *pat; |
| } | } |
| else { // PCG | else { // PCG |
| if (!(knj & 0x90)) { // PCGの出力 | if (!(knj & 0x90)) { // PCGの出力 |
| pat = pcg.d.b[ank]; | pat = pcg.d + (ank << 3); |
| fn = makepcg16fn[udtmp & 15]; | fn = makepcg16fn[udtmp & 15]; |
| } | } |
| else { // 16ドットPCGの出力 | else { // 16ドットPCGの出力 |
| pat = pcg.d.b[ank & (~1)]; | pat = pcg.d + ((ank & (~1)) << 3); |
| fn = maketxt16fn[udtmp & 15]; | fn = maketxt16fn[udtmp & 15]; |
| } | } |
| makeatr_pcg16(dst, count, pat, atr, fn); | makeatr_pcg16(dst, count, pat, atr, fn); |