#include "compiler.h"
#include "vram.h"
#include "makescrn.h"
#include "makesub.h"
void maketxt8_make(UINT8 *dst, UINT8 *term, const UINT8 *src,
REG8 func, REG8 attr) {
(*maketxtlfn[func])(dst, term, src);
(*makeatr8[attr & 15])(dst, term);
}
static void cls8(UINT8 *dst, UINT8 *term) {
do {
*(UINT32 *)dst = 0;
dst += 4;
} while(dst < term);
}
void makepcg8_make(UINT8 *dst, UINT8 *term, const UINT8 *src,
REG8 func, REG8 attr) {
MAKETXTFN fn;
fn = maketxtlfn[func];
if (attr & 1) {
(*fn)(dst, term, src);
}
else {
cls8(dst, term);
}
dst += MAKETEXT_ROW;
term += MAKETEXT_ROW;
if (attr & 2) {
(*fn)(dst, term, src + 0x800);
}
else {
cls8(dst, term);
}
dst += MAKETEXT_ROW;
term += MAKETEXT_ROW;
if (attr & 4) {
(*fn)(dst, term, src + 0x1000);
}
else {
cls8(dst, term);
}
if (attr & TRAMATR_REVERSE) {
do {
*(UINT32 *)(dst - (MAKETEXT_ROW * 2)) ^= (UINT32)-1;
*(UINT32 *)(dst - (MAKETEXT_ROW * 1)) ^= (UINT32)-1;
*(UINT32 *)(dst - (MAKETEXT_ROW * 0)) ^= (UINT32)-1;
dst += 4;
} while(dst < term);
}
}
RetroPC.NET-CVS <cvs@retropc.net>