/*******************************************
 *   FM-Towns VRAM access library : vram   *
 *         Program made by K,Ajima         *
 *      Copyright  ajiyan soft l.t.d.      *
 *******************************************/



/*** vram ****************************************************************

  Ｒｅａｌ−ＴＶＲＡＭ・ＧＶＲＡＭ  にアクセスするライブラリです。

ｖｒｍ＿ｘｘｘｘｘ（）			：  ＶＲＡＭ  メイン関数
ｉｎｖｒｍ＿ｘｘｘｘｘ（）		：  インライン関数

**************************************************************************/



#ifndef _VRAM_HEADER_INCLUDED



#define _VRAM_HEADER_INCLUDED



									/* 文字アトリビュート */
#define VRM_ATR_WORD_2	0x80			/* WORD 文字 2バイト目 */
#define VRM_ATR_WORD_1	0x40			/* WORD 文字 1バイト目 */
#define VRM_ATR_I		0x20			/* IRGB I */
#define VRM_ATR_BLINK	0x10			/* ブリンク */
#define VRM_ATR_REVERSE	0x08			/* リバース */
#define VRM_ATR_G		0x04			/* IRGB G */
#define VRM_ATR_R		0x02			/* IRGB R */
#define VRM_ATR_B		0x01			/* IRGB B */



#ifndef vrm_set_atr
/********************************************************************
 *	TVRAM へアトリビュート設定
 *		1. x (0-79)
 *		2. y (0-24)
 *		3. アトリビュート
 ********************************************************************/
extern void _fastcall vrm_set_atr(int vrm_x,int vrm_y,int vrm_attrib);
#endif



#ifndef vrm_setc
/********************************************************************
 *	TVRAM へ半角文字設定
 *		1. x (0-79)
 *		2. y (0-24)
 *		3. ASCII コード
 ********************************************************************/
extern void _cdecl vrm_setc(int vrm_x,int vrm_y,int vrm_code);
#endif



#ifndef vrm_setw
/********************************************************************
 *	TVRAM へ WORD 文字設定
 *		1. x (0-79)
 *		2. y (0-24)
 *		3. JIS コード
 *		4. アトリビュート
 ********************************************************************/
extern void _fastcall vrm_setw(int vrm_x,int vrm_y,int vrm_code);
#endif



#ifndef vrm_putc
/********************************************************************
 *	TVRAM へ半角文字を書く
 *		1. x (0-79)
 *		2. y (0-24)
 *		3. ASCII コード
 *		4. アトリビュート
 ********************************************************************/
extern void _cdecl vrm_putc(int vrm_x,int vrm_y,int vrm_code,int vrm_attrib);
#endif



#ifndef vrm_putw
/********************************************************************
 *	TVRAM へ WORD 文字を書く
 *		1. x (0-79)
 *		2. y (0-24)
 *		3. JIS コード
 *		4. アトリビュート
 ********************************************************************/
extern void _fastcall vrm_putw(int vrm_x,int vrm_y,int vrm_code,int vrm_attrib);
#endif


#ifndef vrm_get_atr
/********************************************************************
 *	TVRAM アトリビュート取得
 *		1. x (0-79)
 *		2. y (0-24)
 *		ret: アトリビュート
 ********************************************************************/
extern char _fastcall vrm_get_atr(int vrm_x,int vrm_y);
#endif


#ifndef vrm_getc
/********************************************************************
 *	TVRAM 半角文字取得
 *		1. x (0-79)
 *		2. y (0-24)
 *		ret: ASCII コード
 ********************************************************************/
extern char _fastcall vrm_getc(int vrm_x,int vrm_y);
#endif



#ifndef vrm_getw
/********************************************************************
 *	TVRAM WORD 文字取得
 *		1. x (0-79)
 *		2. y (0-24)
 *		ret: JIS コード
 ********************************************************************/
extern int _fastcall vrm_getw(int vrm_x,int vrm_y);
#endif



/********************************************************************
 *	TVRAM 保存
 *		1. 保存先アドレス( Need 25*80*2 bytes )
 ********************************************************************/
extern void _fastcall vrm_save_vram(char * vrm_buff);



/********************************************************************
 *	TVRAM 復元
 *		1. 復元もとアドレス( Need 25*80*2 bytes )
 ********************************************************************/
extern void _fastcall vrm_restore_vram(char * vrm_buff);



/********************************************************************
 *	TVRAM 矩形領域保存
 *		1. x1
 *		2. y1
 *		3. x2
 *		4. y2
 *		5. 保存先アドレス ( Need (x2-x1+1)*(y2-y1+1)*2 bytes )
 ********************************************************************/
extern void _fastcall vrm_save_vram_box(
					int vrm_x1,
					int vrm_y1,
					int vrm_x2,
					int vrm_y2,
					char * vrm_buff);



/********************************************************************
 *	TVRAM 矩形領域復元
 *		1. x1
 *		2. y1
 *		3. x2
 *		4. y2
 *		5. 復元もとアドレス ( Need (x2-x1+1)*(y2-y1+1)*2 bytes )
 ********************************************************************/
extern void _fastcall vrm_restore_vram_box(
					int vrm_x1,
					int vrm_y1,
					int vrm_x2,
					int vrm_y2,
					char * vrm_buff);



/********************************************************************
 *	TVRAM 複写
 *		1. x1 左上
 *		2. y1
 *		3. x2 右下
 *		4. y2
 *		5. x3 移動先左上
 *		6. y3
 ********************************************************************/
extern void _fastcall vrm_copy_vram_box(
					int vrm_x1,
					int vrm_y1,
					int vrm_x2,
					int vrm_y2,
					int vrm_x3,
					int vrm_y3);



#endif

