|
|
| version 1.1, 2004/08/07 07:19:56 | 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) { |
| UINT32 makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { | |
| REG8 atr; | REG8 atr; |
| REG8 ank; | REG8 ank; |
| Line 17 UINT32 makechr8(UINT8 *dst, UINT pos, UI | Line 15 UINT32 makechr8(UINT8 *dst, UINT pos, UI |
| 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 42 const UINT8 *pat; | Line 40 const UINT8 *pat; |
| } | } |
| (*fn)(dst, dst + count, pat); | (*fn)(dst, dst + count, pat); |
| (*makeatr8[atr & 15])(dst, dst + count); | (*makeatr8[atr & 15])(dst, dst + count); |
| return(0x40404040); | |
| } | } |
| 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); |
| return(0x80808080); | |
| } | } |
| } | } |
| UINT32 makechr16(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { | void makechr16(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { |
| REG8 atr; | REG8 atr; |
| REG8 ank; | REG8 ank; |
| Line 66 UINT32 makechr16(UINT8 *dst, UINT pos, U | Line 62 UINT32 makechr16(UINT8 *dst, UINT pos, U |
| 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 91 const UINT8 *pat; | Line 87 const UINT8 *pat; |
| (*makeatr8[atr & 15])(dst, dst + count); | (*makeatr8[atr & 15])(dst, dst + count); |
| (*makeatr8[atr & 15])(dst + MAKETEXT_STEP, | (*makeatr8[atr & 15])(dst + MAKETEXT_STEP, |
| dst + MAKETEXT_STEP + count); | dst + MAKETEXT_STEP + count); |
| return(0x40404040); | |
| } | } |
| 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); |
| return(0x80808080); | |
| } | } |
| } | } |