--- xmil/vram/makechr.c 2004/08/07 07:19:56 1.1 +++ xmil/vram/makechr.c 2005/02/04 06:42:12 1.6 @@ -2,14 +2,12 @@ #include "pccore.h" #include "iocore.h" #include "vram.h" +#include "makescrn.h" #include "makesub.h" #include "font.h" -extern BYTE blinktest; - - -UINT32 makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { +void makechr8(UINT8 *dst, UINT pos, UINT count, REG8 udtmp) { REG8 atr; REG8 ank; @@ -17,16 +15,16 @@ UINT32 makechr8(UINT8 *dst, UINT pos, UI const UINT8 *pat; MAKETXTFN fn; - atr = tram[TRAM_ATR + pos]; - if (atr & blinktest) { - atr ^= X1ATR_REVERSE; + atr = TRAM_ATR(pos); + if (atr & makescrn.blinktest) { + atr ^= TRAMATR_REVERSE; } if (udtmp & 0x10) { pos = LOW11(pos - 1); } - ank = tram[TRAM_ANK + pos]; - knj = tram[TRAM_KNJ + pos]; - if (!(tram[TRAM_ATR + pos] & 0x20)) { // CHR + ank = TRAM_ANK(pos); + knj = TRAM_KNJ(pos); + if (!(TRAM_ATR(pos) & 0x20)) { // CHR if (!(knj & 0x80)) { // ASCII pat = font_ank + (ank << 3); fn = maketxt8fn[udtmp & 15]; @@ -42,23 +40,21 @@ const UINT8 *pat; } (*fn)(dst, dst + count, pat); (*makeatr8[atr & 15])(dst, dst + count); - return(0x40404040); } else { // PCG if (!(knj & 0x90)) { // PCGの出力 - pat = pcg.d.b[ank]; + pat = pcg.d + (ank << 3); fn = maketxt8fn[udtmp & 15]; } else { // 16ドットPCGの出力 - pat = pcg.d.b[ank & (~1)]; + pat = pcg.d + ((ank & (~1)) << 3); fn = makeknj8fn[udtmp & 15]; } 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 ank; @@ -66,16 +62,16 @@ UINT32 makechr16(UINT8 *dst, UINT pos, U const UINT8 *pat; MAKETXTFN fn; - atr = tram[TRAM_ATR + pos]; - if (atr & blinktest) { - atr ^= X1ATR_REVERSE; + atr = TRAM_ATR(pos); + if (atr & makescrn.blinktest) { + atr ^= TRAMATR_REVERSE; } if (udtmp & 0x10) { pos = LOW11(pos - 1); } - ank = tram[TRAM_ANK + pos]; - knj = tram[TRAM_KNJ + pos]; - if (!(tram[TRAM_ATR + pos] & 0x20)) { // CHR + ank = TRAM_ANK(pos); + knj = TRAM_KNJ(pos); + if (!(TRAM_ATR(pos) & 0x20)) { // CHR if (!(knj & 0x80)) { // ASCII pat = font_txt; } @@ -91,19 +87,17 @@ const UINT8 *pat; (*makeatr8[atr & 15])(dst, dst + count); (*makeatr8[atr & 15])(dst + MAKETEXT_STEP, dst + MAKETEXT_STEP + count); - return(0x40404040); } else { // PCG if (!(knj & 0x90)) { // PCGの出力 - pat = pcg.d.b[ank]; + pat = pcg.d + (ank << 3); fn = makepcg16fn[udtmp & 15]; } else { // 16ドットPCGの出力 - pat = pcg.d.b[ank & (~1)]; + pat = pcg.d + ((ank & (~1)) << 3); fn = maketxt16fn[udtmp & 15]; } makeatr_pcg16(dst, count, pat, atr, fn); - return(0x80808080); } }