File:  [RetroPC.NET] / xmil / nds / vram / makec8.cpp
Revision 1.1: download - view: text, annotated - select for diffs
Tue Mar 24 22:52:53 2009 JST (16 years, 7 months ago) by yui
Branches: MAIN
CVS tags: HEAD
add nds-win32 simulation project

#include	"compiler.h"
#include	"pccore.h"
#include	"iocore.h"
#include	"vram.h"
#include	"makescrn.h"
#include	"makesub.h"
#include	"font.h"

void makechr8(UINT8 *dst, const MAKESCRN *m, UINT32 pos_cy, REG8 udtmp) {

	UINT		pos;
	UINT		count;
	REG8		atr;
	REG8		ank;
	REG8		knj;
const UINT8		*pat;
	REG8		func;

	pos = pos_cy >> 21;
	count = pos_cy & 0xff;

	atr = TRAM_ATR(pos);
	if (atr & m->blinktest) {
		atr ^= TRAMATR_REVERSE;
	}
	if (udtmp & 0x10) {
		pos = LOW11(pos - 1);
	}
	ank = TRAM_ANK(pos);
	knj = TRAM_KNJ(pos);
	func = udtmp & 0x0f;
	if (!(TRAM_ATR(pos) & 0x20)) {				// CHR
		if (!(knj & 0x80)) {					// ASCII
			pat = font_ank + (ank << 3);
		}
		else {									// KANJI
			pat = font_knjx1t;
			pat += (knj & 0x1f) << 12;
			pat += ank << 4;
			if (knj & 0x40) {
				pat += FONTX1T_LR;
			}
			func += 16;
		}
		maketxt8_make(dst, dst + count, pat, func, atr);
	}
	else {										// PCG
		if (!(knj & 0x90)) {					// PCGの出力
			pat = pcg.d + (ank << 3);
		}
		else {									// 16ドットPCGの出力
			pat = pcg.d + ((ank & (~1)) << 3);
			func += 16;
		}
		makepcg8_make(dst, dst + count, pat, func, atr);
	}
}


RetroPC.NET-CVS <cvs@retropc.net>