mirror of https://github.com/nmlgc/ReC98.git
2803 lines
105 KiB
C
2803 lines
105 KiB
C
/* master.lib 98,AT雑用ライブラリ
|
||
* Version 0.23
|
||
* Copyright (C) 1992-95 A.Koizuka, Kazumi
|
||
*
|
||
* AT互換機でしか使わない場合は、#includeする前に
|
||
* #define MASTER98 0 (またはコンパイルオプションで -DMASTER98=0)
|
||
* を定義してください。一部関数が98用の名前のまま、AT互換機で利用できます。
|
||
*
|
||
*/
|
||
#ifndef __MASTER_H
|
||
#define __MASTER_H
|
||
#define __MASTER_VERSION (0*256+23)
|
||
|
||
#ifdef MASTER_DOSV
|
||
# define MASTERV 1
|
||
# define MASTER98 0
|
||
#else
|
||
# ifndef MASTERV
|
||
# define MASTERV 1 /* AT互換機用機能を使用する */
|
||
# endif
|
||
# ifndef MASTER98
|
||
# define MASTER98 1 /* 98用機能を使用する */
|
||
# endif
|
||
# if MASTERV
|
||
# if !MASTER98
|
||
# define MASTER_DOSV 1 /* DOS/V専用なら定義する */
|
||
# endif
|
||
# endif
|
||
#endif
|
||
|
||
#if !defined(MASTER_NEAR) && !defined(MASTER_FAR) && !defined(MASTER_COMPACT) && !defined(MASTER_MEDIUM)
|
||
# if defined(__SMALL__) || defined(__TINY__) || defined(M_I86SM) || defined(M_I86TM)
|
||
# define MASTER_NEAR
|
||
# elif defined(__COMPACT__) || defined(M_I86CM)
|
||
# define MASTER_COMPACT
|
||
# elif defined(__MEDIUM__) || defined(M_I86MM)
|
||
# define MASTER_MEDIUM
|
||
# elif defined(__LARGE__) || defined(__HUGE__) || defined(M_I86LM) || defined(M_I86HM)
|
||
# define MASTER_FAR
|
||
# endif
|
||
#endif
|
||
|
||
#ifdef MASTER_NEAR
|
||
# define MASTER_RET near pascal
|
||
# define MASTER_CRET near cdecl
|
||
# define MASTER_PTR near
|
||
#endif
|
||
#ifdef MASTER_FAR
|
||
# define MASTER_RET far pascal
|
||
# define MASTER_CRET far cdecl
|
||
# define MASTER_PTR far
|
||
#endif
|
||
#ifdef MASTER_COMPACT
|
||
# define MASTER_RET near pascal
|
||
# define MASTER_CRET near cdecl
|
||
# define MASTER_PTR far
|
||
#endif
|
||
#ifdef MASTER_MEDIUM
|
||
# define MASTER_RET far pascal
|
||
# define MASTER_CRET far cdecl
|
||
# define MASTER_PTR near
|
||
#endif
|
||
|
||
#ifndef MASTER_RET
|
||
# error master.lib:モデルが特定できません。 master.h を直接includeせずに、masters.h などのモデル別ヘッダをインクルードしてください!
|
||
#endif
|
||
|
||
#ifndef EXIT_SUCCESS /* stdlib.h は EXIT_SUCCESS で2重includeを防止できる */
|
||
# include <stdlib.h>
|
||
#endif
|
||
#ifndef FP_SEG /* dos.h は FP_SEG で2重includeを防止できる */
|
||
# include <dos.h>
|
||
#endif
|
||
#ifndef __TURBOC__
|
||
# include <conio.h> /* うーむ。2重includeを防止してない */
|
||
#endif
|
||
#include <string.h> /* これもだ */
|
||
|
||
/* stdio.hは getchar で二重includeは防止 */
|
||
/* できるよ。防止すると、コンパイルが少し */
|
||
/* 速くなるよね。(エラー回避の効能もある) */
|
||
|
||
#ifndef OUTB
|
||
# ifdef __TURBOC__
|
||
# define OUTB outportb /* CONIO.H or DOS.H */
|
||
# define OUTW outport
|
||
# define INPB inportb
|
||
# define INPW inport
|
||
# else
|
||
# define OUTB outp /* CONIO.H */
|
||
# define OUTW outpw
|
||
# define INPB inp
|
||
# define INPW inpw
|
||
# endif
|
||
#endif
|
||
|
||
#ifndef STI
|
||
# ifdef __TURBOC__
|
||
# define STI() enable() /* DOS.H */
|
||
# define CLI() disable()
|
||
# else
|
||
# define STI() _enable() /* DOS.H */
|
||
# define CLI() _disable()
|
||
# endif
|
||
#endif
|
||
|
||
#define CRLF "\r\n"
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
extern const char near Master_Version_NEAR[] ;
|
||
extern const char near Master_Version_FAR[] ;
|
||
extern const char near Master_Version_COMPACT[] ;
|
||
extern const char near Master_Version_MEDIUM[] ;
|
||
extern const char near Master_Version[] ;
|
||
|
||
#ifdef MASTER_NEAR
|
||
# define Master_Version_String Master_Version_NEAR
|
||
#endif
|
||
#ifdef MASTER_FAR
|
||
# define Master_Version_String Master_Version_FAR
|
||
#endif
|
||
#ifdef MASTER_COMPACT
|
||
# define Master_Version_String Master_Version_COMPACT
|
||
#endif
|
||
#ifdef MASTER_MEDIUM
|
||
# define Master_Version_String Master_Version_MEDIUM
|
||
#endif
|
||
|
||
extern unsigned char table_hreverse[256] ;
|
||
|
||
typedef struct Point Point ;
|
||
struct Point {
|
||
#ifdef __cplusplus
|
||
Point(int ix,int iy) : x(ix),y(iy) {}
|
||
Point() {}
|
||
void moveto(int nx,int ny) { x = nx, y = ny ; }
|
||
#endif
|
||
int x, y ;
|
||
} ;
|
||
|
||
/* 機種判定 ----------------------------------------------------------------*/
|
||
|
||
typedef struct VIDEO_STATE VIDEO_STATE ;
|
||
struct VIDEO_STATE {
|
||
unsigned char mode ; /* 現在のビデオ・モード */
|
||
unsigned char rows ; /* 現在の1画面の行数 */
|
||
unsigned char cols ; /* 現在の1行あたりの桁数 */
|
||
unsigned char total_rows ; /* 現在の画面全体の行数 */
|
||
} ;
|
||
|
||
extern const unsigned Machine_State ;
|
||
|
||
unsigned MASTER_RET get_machine(void);
|
||
unsigned MASTER_RET get_machine_at(void);
|
||
unsigned MASTER_RET get_machine_98(void);
|
||
int MASTER_RET set_video_mode( unsigned video );
|
||
unsigned MASTER_RET get_video_mode(void);
|
||
void MASTER_RET backup_video_state( VIDEO_STATE MASTER_PTR * vmode );
|
||
int MASTER_RET restore_video_state( const VIDEO_STATE MASTER_PTR * vmode );
|
||
|
||
#define PC_AT 0x0010
|
||
#define PC9801 0x0020
|
||
#define FMR 0x0080 /* 0.23追加 */
|
||
#define DOSBOX 0x8000 /* 0.22k追加 */
|
||
|
||
#define DESKTOP 0x0001
|
||
#define EPSON 0x0002
|
||
#define PC_MATE 0x0004
|
||
#define HIRESO 0x0008
|
||
|
||
#define LANG_US 0x0001
|
||
#define PC_TYPE_MASK 0x000e
|
||
#define PS55 0x0000
|
||
#define DOSV 0x0002
|
||
#define PC_AX 0x0004
|
||
#define J3100 0x0006
|
||
#define DR_DOS 0x0008
|
||
#define MSDOSV 0x000a
|
||
#define VTEXT 0x0240 /* 0.23追加 */
|
||
#define DOSVEXTENTION 0x0040 /* 0.22d追加 */
|
||
#define SUPERDRIVERS 0x0200 /* 0.23追加 */
|
||
#define ANSISYS 0x0100 /* 0.22d追加 */
|
||
|
||
unsigned MASTER_RET get_cpu(void);
|
||
#define CPU_CYRIX 0x4000
|
||
#define CPU_NEC 0x8000
|
||
#define CPU_V86MODE 0x0100
|
||
#define CPU_TYPEMASK 0x00ff
|
||
#define CPU_TYPE086 0x0000
|
||
#define CPU_TYPE186 0x0001
|
||
#define CPU_TYPE286 0x0002
|
||
#define CPU_TYPE386 0x0003
|
||
#define CPU_TYPE486 0x0004
|
||
#define CPU_TYPEPENTIUM 0x0005
|
||
|
||
/* Cx486関係 ---------------------------------------------------------------*/
|
||
|
||
struct Cx486CacheInfo {
|
||
unsigned ccr0 ;
|
||
unsigned ccr1 ;
|
||
unsigned long ncr[4] ;
|
||
} ;
|
||
|
||
extern void MASTER_RET cx486_read( struct Cx486CacheInfo MASTER_PTR * rec );
|
||
extern void MASTER_RET cx486_write( const struct Cx486CacheInfo MASTER_PTR * rec );
|
||
extern void MASTER_RET cx486_cacheoff(void);
|
||
|
||
|
||
/* テキスト画面関係 --------------------------------------------------------*/
|
||
|
||
extern void far * const TextVramAdr ;
|
||
extern unsigned TextVramSeg ;
|
||
extern unsigned TextVramWidth ;
|
||
extern unsigned TextShown ;
|
||
|
||
extern unsigned TextVramSize ;
|
||
extern unsigned VTextState ;
|
||
|
||
#define TX_GETSIZE(x1,y1,x2,y2) (((x2)-(x1)+1)*((y2)-(y1)+1)*TX_GET_UNIT)
|
||
void MASTER_RET text_roll_area( int x1, int y1, int x2, int y2 );
|
||
|
||
#if MASTER98
|
||
|
||
void MASTER_RET text_start(void);
|
||
void MASTER_RET text_end(void);
|
||
void MASTER_RET text_boxfilla( unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned atrb );
|
||
void MASTER_RET text_boxfillca( unsigned x1, unsigned y1, unsigned x2, unsigned y2, unsigned fillchar, unsigned atrb );
|
||
void MASTER_RET text_clear(void);
|
||
void MASTER_RET text_fillca( unsigned ch, unsigned atrb );
|
||
void MASTER_RET text_locate( unsigned x, unsigned y );
|
||
void MASTER_RET text_putc( unsigned x, unsigned y, unsigned ch );
|
||
void MASTER_RET text_putca( unsigned x, unsigned y, unsigned ch, unsigned atrb );
|
||
void MASTER_RET text_putns( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid );
|
||
void MASTER_RET text_putnp( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned wid );
|
||
void MASTER_RET text_putnsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid, unsigned atrb );
|
||
void MASTER_RET text_putnpa( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned wid, unsigned atrb );
|
||
void MASTER_RET text_puts( unsigned x, unsigned y, const char MASTER_PTR *str );
|
||
void MASTER_RET text_putp( unsigned x, unsigned y, const char MASTER_PTR *pstr );
|
||
void MASTER_RET text_putsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned atrb );
|
||
void MASTER_RET text_putpa( unsigned x, unsigned y, const char MASTER_PTR *pstr, unsigned atrb );
|
||
void MASTER_RET text_vputs(unsigned x, unsigned y, const char MASTER_PTR *str);
|
||
void MASTER_RET text_vputsa(unsigned x, unsigned y, const char MASTER_PTR *str, unsigned atrb);
|
||
|
||
void MASTER_RET text_setcursor( int normal );
|
||
|
||
#define text_width() 80
|
||
int MASTER_RET text_height(void);
|
||
int MASTER_RET text_systemline_shown(void);
|
||
void MASTER_RET text_25line(void);
|
||
void MASTER_RET text_20line(void);
|
||
void MASTER_RET text_cursor_hide(void);
|
||
void MASTER_RET text_cursor_show(void);
|
||
void MASTER_RET _text_cursor_on(void);
|
||
void MASTER_RET _text_cursor_off(void);
|
||
void MASTER_RET text_systemline_hide(void);
|
||
void MASTER_RET text_systemline_show(void);
|
||
long MASTER_RET text_getcurpos(void);
|
||
void MASTER_RET text_get( int x1,int y1, int x2,int y2, void far *buf );
|
||
void MASTER_RET text_put( int x1,int y1, int x2,int y2, const void far *buf );
|
||
int MASTER_RET text_backup( int use_main );
|
||
int MASTER_RET text_restore(void);
|
||
void MASTER_RET text_show(void);
|
||
void MASTER_RET text_hide(void);
|
||
void MASTER_RET text_smooth_start( unsigned y1, unsigned y2 );
|
||
void MASTER_RET text_smooth_end(void);
|
||
void MASTER_RET text_roll_up_c( unsigned fillchar );
|
||
void MASTER_RET text_roll_down_c( unsigned fillchar );
|
||
void MASTER_RET text_roll_up_ca( unsigned fillchar, unsigned filatr );
|
||
void MASTER_RET text_roll_down_ca( unsigned fillchar, unsigned filatr );
|
||
void MASTER_RET text_roll_left_c( unsigned fillchar );
|
||
void MASTER_RET text_roll_right_c( unsigned fillchar );
|
||
void MASTER_RET text_roll_left_ca( unsigned fillchar, unsigned filatr );
|
||
void MASTER_RET text_roll_right_ca( unsigned fillchar, unsigned filatr );
|
||
void MASTER_RET text_pseta( int x, int y, unsigned atr );
|
||
void MASTER_RET text_pset( int x, int y );
|
||
void MASTER_RET text_preset( int x, int y );
|
||
void MASTER_RET text_worddota( int x, int y, unsigned image, unsigned dotlen, unsigned atr );
|
||
void MASTER_RET text_showpage( int page );
|
||
void MASTER_RET text_frame( int x1, int y1, int x2,int y2, unsigned wattr, unsigned iattr, int round );
|
||
|
||
#define text_shown() TextShown
|
||
#define text_smooth(shiftdot) OUTB(0x76,shiftdot)
|
||
#define text_vertical() OUTB(0x68,0)
|
||
#define text_cemigraph() OUTB(0x68,1)
|
||
#define text_cursor_shown() (*(char far *)0x071bL)
|
||
|
||
#define TX_PAGE0 0xa000 /* ノーマルモードのテキストセグメント */
|
||
#define TX_PAGE1 0xa100
|
||
#define text_accesspage(p) (TextVramSeg = (p) ? TX_PAGE1 : TX_PAGE0 )
|
||
|
||
#endif
|
||
|
||
#define TX_BLACK 0x01 /* テキスト属性 */
|
||
#define TX_BLUE 0x21
|
||
#define TX_RED 0x41
|
||
#define TX_MAGENTA 0x61
|
||
#define TX_GREEN 0x81
|
||
#define TX_CYAN 0xa1
|
||
#define TX_YELLOW 0xc1
|
||
#define TX_WHITE 0xe1
|
||
#define TX_BLINK 2
|
||
#define TX_REVERSE 4
|
||
#define TX_UNDERLINE 8
|
||
|
||
#define TX_GET_UNIT 4 /* text_get()で退避する、1文字あたり必要な大きさ */
|
||
|
||
/* 前バージョンとの互換性のため */
|
||
#define text_cursor_on() text_cursor_show()
|
||
#define text_cursor_off() text_cursor_hide()
|
||
#define text_systemline_on() text_systemline_show()
|
||
#define text_systemline_off() text_systemline_hide()
|
||
|
||
#if MASTERV
|
||
|
||
extern char vtext_colortable[16] ;
|
||
extern unsigned vtextx_Seg, vtextx_Size ;
|
||
|
||
void MASTER_RET vtext_start(void);
|
||
#define vtext_end() /* ignore */
|
||
void MASTER_RET vtextx_start(void);
|
||
void MASTER_RET vtextx_end(void);
|
||
int MASTER_RET vtext_height(void);
|
||
int MASTER_RET vtext_systemline_shown(void);
|
||
int MASTER_RET vtext_width(void);
|
||
int MASTER_RET vtext_font_height(void);
|
||
void MASTER_RET vtext_systemline_hide(void);
|
||
void MASTER_RET vtext_systemline_show(void);
|
||
long MASTER_RET vtext_getcurpos(void);
|
||
void MASTER_RET vtext_locate( unsigned x, unsigned y );
|
||
void MASTER_RET vtext_putns( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid );
|
||
void MASTER_RET vtext_putnsa( unsigned x, unsigned y, const char MASTER_PTR *str, unsigned wid, unsigned atrb );
|
||
void MASTER_RET vtext_putsa( unsigned x, unsigned y, const char MASTER_PTR *strp, unsigned atrb );
|
||
void MASTER_RET vtext_puts( unsigned x, unsigned y, const char MASTER_PTR *strp );
|
||
void MASTER_RET vtext_putc( unsigned x, unsigned y, unsigned ch );
|
||
void MASTER_RET vtext_putca( unsigned x, unsigned y, unsigned ch, unsigned atrb );
|
||
void MASTER_RET vtext_roll_up_c( unsigned fillchar );
|
||
void MASTER_RET vtext_roll_down_c( unsigned fillchar );
|
||
void MASTER_RET vtext_roll_up_ca( unsigned fillchar, unsigned filatr );
|
||
void MASTER_RET vtext_roll_down_ca( unsigned fillchar, unsigned filatr );
|
||
|
||
void MASTER_RET vtext_clear(void);
|
||
void MASTER_RET vtext_frame(int x1, int y1, int x2, int y2, unsigned attrl, unsigned attri, int dummy);
|
||
void MASTER_RET vtext_boxfilla(int x1, int y1, int x2, int y2, unsigned attr );
|
||
|
||
int MASTER_RET vtext_color_98( int color98 );
|
||
void MASTER_RET vtext_refresh(unsigned x, unsigned y, unsigned len);
|
||
void MASTER_RET vtext_refresh_all(void);
|
||
void MASTER_RET vtext_refresh_on(void);
|
||
void MASTER_RET vtext_refresh_off(void);
|
||
void MASTER_RET vtext_setcursor( unsigned cursor );
|
||
unsigned MASTER_RET vtext_getcursor(void);
|
||
# define vtext_cursor_hide() vtext_setcursor(vtext_getcursor()|0x2000)
|
||
# define vtext_cursor_show() vtext_setcursor(vtext_getcursor()&~0x2000)
|
||
# define vtext_cursor_shown() (((vtext_getcursor()>>8)&0x3f) \
|
||
<= (vtext_getcursor()&7))
|
||
void MASTER_RET vtext_get( int x1,int y1, int x2,int y2, void far *buf );
|
||
void MASTER_RET vtext_put( int x1,int y1, int x2,int y2, const void far *buf );
|
||
int MASTER_RET vtext_backup( int use_main );
|
||
int MASTER_RET vtext_restore(void);
|
||
|
||
|
||
# if !MASTER98
|
||
# define text_start() (get_machine(),vtext_start(),font_at_init())
|
||
# define text_end() (void)0
|
||
# define text_boxfilla(x1,y1,x2,y2,atrb) vtext_boxfilla(x1,y1,x2,y2,\
|
||
vtext_color_98(atrb))
|
||
# define text_boxfillca(x1,y1,x2,y2,fc,atrb) /* ? */
|
||
# define text_clear() vtext_clear()
|
||
# define text_fillca(ch,atrb) /* ? */
|
||
# define text_locate(x,y) vtext_locate(x,y)
|
||
# define text_putc(x,y,ch) vtext_putc(x,y,ch)
|
||
# define text_putca(x,y,ch,atrb) vtext_putca(x,y,ch,\
|
||
vtext_color_98(atrb))
|
||
# define text_putns(x,y,str,wid) vtext_putns(x,y,str,wid)
|
||
# define text_putnp(x,y,pstr,wid) /* ? */
|
||
# define text_putnsa(x,y,str,wid,atrb) vtext_putnsa(x,y,str,wid,\
|
||
vtext_color_98(atrb))
|
||
# define text_putnpa(x,y,pstr,wid,atrb) /* ? */
|
||
# define text_puts(x,y,str) vtext_puts(x,y,str)
|
||
# define text_putp(x,y,pstr) /* ? */
|
||
# define text_putsa(x,y,str,atrb) vtext_putsa(x,y,str,\
|
||
vtext_color_98(atrb))
|
||
# define text_putpa(x,y,pstr,atrb) /* ? */
|
||
# define text_vputs(x,y,str) /* ? */
|
||
# define text_vputsa(x,y,str,atrb) /* ? */
|
||
|
||
# define text_setcursor(normal) vtext_setcursor(normal)
|
||
|
||
# define text_width() vtext_width()
|
||
# define text_height() vtext_height()
|
||
# define text_systemline_shown() vtext_systemline_shown()
|
||
# define text_25line() /* ? */
|
||
# define text_20line() /* ? */
|
||
# define text_cursor_hide() vtext_cursor_hide()
|
||
# define text_cursor_show() vtext_cursor_show()
|
||
# define _text_cursor_on() text_cursor_show()
|
||
# define _text_cursor_off() text_cursor_hide()
|
||
# define text_systemline_hide() vtext_systemline_hide()
|
||
# define text_systemline_show() vtext_systemline_show()
|
||
# define text_getcurpos() vtext_getcurpos()
|
||
# define text_get(x1,y1,x2,y2,buf) vtext_get(x1,y1,x2,y2,buf)
|
||
# define text_put(x1,y1,x2,y2,buf) vtext_put(x1,y1,x2,y2,buf)
|
||
# define text_backup(use_main) (text_start(),vtext_backup(use_main))
|
||
# define text_restore() vtext_restore()
|
||
# define text_show() (void)0
|
||
# define text_hide() (void)0
|
||
# define text_smooth_start(y1,y2) (void)0
|
||
# define text_smooth_end() (void)0
|
||
# define text_roll_up_c(fillchar) vtext_roll_up_c(fillchar)
|
||
# define text_roll_down_c(fillchar) vtext_roll_down_c(fillchar)
|
||
# define text_roll_up_ca(fillchar,atrb) vtext_roll_up_ca(fillchar,\
|
||
vtext_color_98(atrb))
|
||
# define text_roll_down_ca(fillchar,atrb) vtext_roll_down_ca(fillchar,\
|
||
vtext_color_98(atrb))
|
||
# define text_roll_left_c(fillchar) /* ? */
|
||
# define text_roll_right_c(fillchar) /* ? */
|
||
# define text_roll_left_ca(fillchar,atrb) /* ? */
|
||
# define text_roll_right_ca(fillchar,atrb) /* ? */
|
||
# define text_pseta(x,y,atr) (void)0
|
||
# define text_pset(x,y) (void)0
|
||
# define text_preset(x,y) (void)0
|
||
# define text_worddota(x,y,image,dotlen,atr) (void)0
|
||
# define text_showpage(page) (void)0
|
||
# define text_frame(x1,y1,x2,y2,wattr,iattr,round) vtext_frame(x1,y1,x2,y2,\
|
||
vtext_color_98(wattr),vtext_color_98(iattr),round)
|
||
|
||
# define text_shown() 1
|
||
# define text_smooth(shiftdot) (void)0
|
||
# define text_vertical() (void)0
|
||
# define text_cemigraph() (void)0
|
||
# define text_cursor_shown() vtext_cursor_shown()
|
||
|
||
# define TX_PAGE0 TextVramSeg
|
||
# define TX_PAGE1 TextVramSeg
|
||
# define text_accesspage(p) (void)0
|
||
# endif
|
||
#endif
|
||
|
||
/* EMS関係 -----------------------------------------------------------------*/
|
||
|
||
#if defined(_MSC_VER)
|
||
# pragma pack (1)
|
||
#endif
|
||
struct EMS_move_source_dest {
|
||
long region_length ;
|
||
char source_memory_type ;
|
||
unsigned source_handle ;
|
||
unsigned source_initial_offset ;
|
||
unsigned source_initial_seg_page ;
|
||
char dest_memory_type ;
|
||
unsigned dest_handle ;
|
||
unsigned dest_initial_offset ;
|
||
unsigned dest_initial_seg_page ;
|
||
} ;
|
||
#if defined(_MSC_VER)
|
||
# pragma pack ()
|
||
#endif
|
||
|
||
int MASTER_RET ems_exist(void);
|
||
unsigned MASTER_RET ems_allocate( unsigned long len );
|
||
int MASTER_RET ems_reallocate( unsigned handle, unsigned long size );
|
||
int MASTER_RET ems_free( unsigned handle );
|
||
unsigned long MASTER_RET ems_size( unsigned handle );
|
||
int MASTER_RET ems_setname( unsigned handle, const char MASTER_PTR * name );
|
||
int MASTER_RET ems_movememoryregion( const struct EMS_move_source_dest MASTER_PTR * block );
|
||
void MASTER_RET ems_enablepageframe( int enable );
|
||
|
||
int MASTER_RET ems_write( unsigned handle, long offset, const void far * mem, long size );
|
||
int MASTER_RET ems_read( unsigned handle, long offset, void far * mem, long size );
|
||
unsigned long MASTER_RET ems_space(void);
|
||
int MASTER_RET ems_maphandlepage( int phys_page, unsigned handle, unsigned log_page );
|
||
int MASTER_RET ems_savepagemap( unsigned handle );
|
||
int MASTER_RET ems_restorepagemap( unsigned handle );
|
||
int MASTER_RET ems_getsegment( unsigned MASTER_PTR * segments, int maxframe );
|
||
unsigned MASTER_RET ems_findname( const char MASTER_PTR * hname );
|
||
|
||
long MASTER_RET ems_dos_read( int file_handle, unsigned short ems_handle, unsigned long ems_offs, long read_bytes );
|
||
long MASTER_RET ems_dos_write( int file_handle, unsigned short ems_handle, unsigned long ems_offs, long write_bytes );
|
||
|
||
/* グラフィック画面関係 ----------------------------------------------------*/
|
||
|
||
typedef struct PiHeader PiHeader ;
|
||
struct PiHeader {
|
||
char far *comment; /* graph_pi_load.*()では */
|
||
/* NULLが設定されるだけ */
|
||
unsigned commentlen;
|
||
unsigned char mode;
|
||
unsigned char n; /* aspect */
|
||
unsigned char m; /* aspect */
|
||
unsigned char plane; /* 通常は 4 */
|
||
char machine[4];
|
||
unsigned maexlen; /* machine extend data length */
|
||
void far * maex; /* machine extend data */
|
||
unsigned xsize;
|
||
unsigned ysize;
|
||
unsigned char palette[48];
|
||
} ;
|
||
|
||
typedef struct MagHeader MagHeader;
|
||
struct MagHeader {
|
||
unsigned commentseg ;
|
||
unsigned commentlen ;
|
||
char head;
|
||
char machine;
|
||
char exflag;
|
||
char scrnmode;
|
||
int x1;
|
||
int y1;
|
||
int x2;
|
||
int y2;
|
||
long flagAofs;
|
||
long flagBofs;
|
||
long flagBsize;
|
||
long pixelofs;
|
||
long pixelsize;
|
||
unsigned xsize;
|
||
unsigned ysize;
|
||
unsigned char palette[48];
|
||
} ;
|
||
|
||
#if MASTER98
|
||
void MASTER_RET graph_400line(void);
|
||
void MASTER_RET graph_200line( int tail );
|
||
unsigned MASTER_RET graph_extmode( unsigned modmask, unsigned bhal );
|
||
#define graph_is31kHz() ((graph_extmode(0,0) & 0x0c) == 0x0c)
|
||
#define graph_getextmode() graph_extmode(0,0)
|
||
#define graph_setextmode(v) graph_extmode(0xffff,(v))
|
||
#define graph_31kHz() graph_extmode(0x0c,0x0c)
|
||
#define graph_24kHz() graph_extmode(0x0c,0x08)
|
||
#define graph_480line() graph_extmode(0x300c,0x300c)
|
||
int MASTER_RET graph_is256color(void);
|
||
void MASTER_RET graph_256color(void);
|
||
void MASTER_RET graph_16color(void);
|
||
void MASTER_RET graph_clear(void);
|
||
void MASTER_RET graph_show(void);
|
||
void MASTER_RET graph_hide(void);
|
||
void MASTER_RET graph_start(void);
|
||
void MASTER_RET graph_end(void);
|
||
void MASTER_RET graph_enter(void);
|
||
#define graph_leave() respal_set_palettes()
|
||
void MASTER_RET graph_xlat_dot( int x, int y, const char MASTER_PTR * trans );
|
||
int MASTER_RET graph_shown(void);
|
||
int MASTER_RET graph_readdot( int x, int y );
|
||
int MASTER_RET graph_backup( int pagemap );
|
||
int MASTER_RET graph_restore(void);
|
||
void MASTER_RET graph_xorboxfill( int x1,int y1, int x2,int y2, int color );
|
||
int MASTER_RET graph_copy_page( int to_page );
|
||
void MASTER_RET graph_scroll( unsigned line1, unsigned adr1, unsigned adr2 );
|
||
void MASTER_RET graph_scrollup( unsigned line );
|
||
void MASTER_RET graph_byteget( int cx1,int y1, int cx2,int y2, void far *buf );
|
||
void MASTER_RET graph_byteput( int cx1,int y1, int cx2,int y2, const void far *buf );
|
||
void MASTER_RET graph_move( int x1,int y1, int x2,int y2, int nx,int ny );
|
||
void MASTER_RET graph_pack_put_8( int x, int y, const void far * linepat, int len );
|
||
void MASTER_RET graph_pack_put_down_8( int x, int y, const void far * pat, int patwidth, int width, int height );
|
||
void MASTER_RET graph_pack_get_8( int x, int y, void far * linepat, int len );
|
||
void MASTER_RET graph_unpack_put_8( int x, int y, const void far * linepat, int len );
|
||
void MASTER_RET graph_unpack_large_put_8( int x, int y, const void far * linepat, int len );
|
||
void MASTER_RET graph_unpack_get_8( int x, int y, void far * linepat, int len );
|
||
|
||
void MASTER_RET graph_ank_putc(int x, int y, int ch, int color);
|
||
#define graph_ank_put(x,y,chp,color) graph_ank_putc((x),(y),*(chp),(color))
|
||
void MASTER_RET graph_ank_puts(int x, int y, int step, const char MASTER_PTR * ank, int color);
|
||
void MASTER_RET graph_ank_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color);
|
||
void MASTER_RET graph_font_put(int x, int y, const char MASTER_PTR *str, int color);
|
||
void MASTER_RET graph_font_puts(int x, int y, int step, const char MASTER_PTR * str, int color);
|
||
void MASTER_RET graph_font_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color);
|
||
void MASTER_RET graph_kanji_large_put(int x, int y, const char MASTER_PTR *str, int color);
|
||
void MASTER_RET graph_kanji_put(int x, int y, const char MASTER_PTR *str, int color);
|
||
void MASTER_RET graph_kanji_puts(int x, int y, int step, const char MASTER_PTR *str, int color);
|
||
|
||
void MASTER_RET graph_wank_putc(int x, int y, int c );
|
||
void MASTER_RET graph_wank_puts(int x, int y, int step, const char MASTER_PTR * str );
|
||
void MASTER_RET graph_wank_putca(int x, int y, int ch, int color);
|
||
void MASTER_RET graph_wank_putsa(int x, int y, int step, const char MASTER_PTR * str, int color);
|
||
void MASTER_RET graph_wfont_put(int x, int y, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_wfont_puts(int x, int y, int step, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_wkanji_put(int x, int y, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_wkanji_put_left(int x, int y, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_wkanji_put_right(int x, int y, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_wkanji_puts(int x, int y, int step, const char MASTER_PTR * str);
|
||
void MASTER_RET graph_gaiji_putc(int x, int y, int c, int color );
|
||
void MASTER_RET graph_gaiji_puts(int x, int y, int step, const char MASTER_PTR * str, int color );
|
||
void MASTER_RET graph_bfnt_puts(int x, int y, int step, const char MASTER_PTR * str, int color);
|
||
void MASTER_RET graph_bfnt_putp(int x, int y, int step, const char MASTER_PTR * passtr, int color);
|
||
void MASTER_RET graph_bfnt_putc(int x, int y, int ank, int color);
|
||
#endif
|
||
|
||
#if MASTERV
|
||
void MASTER_RET vga4_clear(void);
|
||
int MASTER_RET vga4_start(int videomode, int xdots, int ydots);
|
||
#define vgc_start() vga4_start(0x12,640,480)
|
||
#define vgc_end() vga4_end()
|
||
void MASTER_RET vga4_end(void);
|
||
int MASTER_RET vga4_readdot(int x,int y);
|
||
void MASTER_RET vga4_byteget( int cx1,int y1, int cx2,int y2, void far *buf );
|
||
void MASTER_RET vga4_byteput( int cx1,int y1, int cx2,int y2, const void far *buf );
|
||
void MASTER_RET vga4_pack_put_8( int x, int y, const void far * linepat, int len );
|
||
void MASTER_RET vga4_unpack_put_8( int x, int y, const void far * linepat, int len );
|
||
void MASTER_RET vga4_unpack_get_8( int x, int y, void far * linepat, int len );
|
||
void MASTER_RET vga4_pack_get_8( int x, int y, void far * linepat, int len );
|
||
void MASTER_RET vga_dc_modify( int num, int andval, int orval );
|
||
void MASTER_RET vga_startaddress( unsigned address );
|
||
void MASTER_RET vga_setline( unsigned lines );
|
||
#define vga_vzoom_on() (vga_dc_modify(0x09,0x7f,0x80),graph_VramZoom=1)
|
||
#define vga_vzoom_off() (vga_dc_modify(0x09,0x7f,0x00),graph_VramZoom=0)
|
||
void MASTER_RET vga4_byte_move(int x1,int y1,int x2,int y2,int tox,int toy);
|
||
|
||
void MASTER_RET vga4_wfont_puts(int x, int y, int step, const char MASTER_PTR * str);
|
||
void MASTER_RET vga4_bfnt_puts( int x, int y, int step, const char MASTER_PTR * anks, int color );
|
||
void MASTER_RET vga4_bfnt_putc( int x, int y, int c, int color );
|
||
|
||
void MASTER_RET at98_graph_400line(void);
|
||
void MASTER_RET at98_accesspage( int page );
|
||
void MASTER_RET at98_showpage( int page );
|
||
void MASTER_RET at98_scroll( unsigned line1, unsigned adr1 );
|
||
extern int at98_APage, at98_VPage ;
|
||
extern unsigned at98_Offset ;
|
||
|
||
# if !MASTER98
|
||
# define graph_analog() (void)0
|
||
# define graph_digital() (void)0/* ignore? */
|
||
# define graph_plasma() (void)0
|
||
# define graph_crt() (void)0
|
||
# define graph_accesspage(p) at98_accesspage(p)
|
||
# define graph_showpage(p) at98_showpage(p)
|
||
# define graph_400line() at98_graph_400line()
|
||
# define graph_200line(t) (vga4_start(0x8e,640,200),\
|
||
graph_VramSeg=ClipYT_seg=(0xa000+((t)&1)*400*5),at98_Offset=0,\
|
||
at98_showpage(at98_VPage),at98_accesspage(at98_APage),vtextx_start())
|
||
# define graph_is31kHz() 0
|
||
# define graph_getextmode() 0
|
||
# define graph_setextmode(v) (void)0
|
||
# define graph_31kHz() (void)0
|
||
# define graph_24kHz() (void)0
|
||
# define graph_480line() (void)0
|
||
# define graph_is256color() 0
|
||
# define graph_16color() (void)0
|
||
# define graph_clear() vga4_clear()
|
||
# define graph_show() (void)0
|
||
# define graph_hide() (void)0
|
||
# define graph_start() (vga4_start(0x0e,640,400),vga_vzoom_off(),\
|
||
at98_Offset=at98_APage=at98_VPage=0,vtextx_start())
|
||
# define graph_end() (vtextx_end(),vga4_end())
|
||
# define graph_enter() graph_400line()
|
||
# define graph_leave() graph_end()
|
||
# define graph_xlat_dot(x,y,tr) vgc_setcolor(VGA_PSET,tr[vga4_readdot(x,y)]),vgc_pset(x,y)
|
||
# define graph_shown() (get_video_mode() == 0x0e)
|
||
# define graph_readdot(x,y) vga4_readdot(x,y)
|
||
# define graph_backup(pm) 1
|
||
# define graph_restore() 1
|
||
# define graph_xorboxfill(x1,y1,x2,y2,c) (vgc_setcolor(VGA_XOR,c),\
|
||
vgc_boxfill(x1,y1,x2,y2),vgc_setcolor(VGA_PSET,0))
|
||
# define graph_copy_page(to) (graph_accesspage(0),\
|
||
vga4_byte_move(0,(to)?0:400,79,(to)?399:799,0,(to)?400:0),\
|
||
graph_accesspage(to),1)
|
||
# define graph_scroll(line1,adr1,adr2) at98_scroll(line1,adr1)
|
||
# define graph_scrollup(up) at98_scroll(graph_VramLines-(up),\
|
||
(up)*graph_VramWidth/2)
|
||
# define graph_byteget(cx1,y1,cx2,y2,b) vga4_byteget(cx1,y1,cx2,y2,b)
|
||
# define graph_byteput(cx1,y1,cx2,y2,b) vga4_byteput(cx1,y1,cx2,y2,b)
|
||
# define graph_pack_put_8(x,y,linepat,len) vga4_pack_put_8(x,y,linepat,len)
|
||
# define graph_unpack_large_put_8(x,y,linepat,len) vga4_pack_put_8(x,y,linepat,(len)*2)/* ? */
|
||
# define graph_pack_get_8(x,y,buf,len) vga4_pack_get_8(x,y,buf,len)
|
||
# define graph_unpack_put_8(x,y,linepat,len) vga4_unpack_put_8(x,y,linepat,len)
|
||
# define graph_unpack_get_8(x,y,buf,len) vga4_unpack_get_8(x,y,buf,len)
|
||
# define graph_wfont_puts(x,y,s,str) vga4_wfont_puts(x,y,s,str)
|
||
# define graph_bfnt_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_bfnt_puts(x,y,s,str))
|
||
# define graph_bfnt_putc(x,y,ank,c) (vgc_setcolor(VGA_PSET,c),vgc_bfnt_putc(x,y,ank))
|
||
# define graph_gaiji_puts(x,y,s,str,c) graph_bfnt_puts(x,y,s,str,c) /* ? */
|
||
# define graph_gaiji_putc(x,y,ank,c) graph_bfnt_putc(x,y,ank,c) /* ? */
|
||
# define graph_ank_puts(x,y,s,str,c) graph_bfnt_puts(x,y,s,str,c)
|
||
# define graph_ank_putc(x,y,ank,c) graph_bfnt_putc(x,y,ank,c)
|
||
# define graph_font_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_font_puts(x,y,s,str))
|
||
# define graph_font_put(x,y,str,c) (vgc_setcolor(VGA_PSET,c),vgc_font_put(x,y,str))
|
||
# define graph_kanji_put(x,y,str,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_putc(x,y,_rotr(*(unsigned short far *)(str),8)))
|
||
# define graph_kanji_puts(x,y,s,str,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_puts(x,y,s,str))
|
||
# define graph_kanji_putc(x,y,knj,c) (vgc_setcolor(VGA_PSET,c),vgc_kanji_putc(x,y,knj))
|
||
|
||
# endif
|
||
#endif
|
||
|
||
int MASTER_RET mag_load_pack( const char MASTER_PTR * filename, MagHeader MASTER_PTR * header, void far * MASTER_PTR * bufptr );
|
||
int MASTER_RET graph_pi_load_pack(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header, void far * MASTER_PTR * bufptr );
|
||
void far * MASTER_RET graph_pi_load_unpack(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header );
|
||
int MASTER_RET graph_pi_comment_load(const char MASTER_PTR * filename, PiHeader MASTER_PTR * header );
|
||
void MASTER_RET graph_pi_free( PiHeader MASTER_PTR * header, const void far * image );
|
||
void MASTER_RET mag_free( MagHeader MASTER_PTR * header, const void far * image );
|
||
|
||
#define graph_wfont_plane(a,b,c) (wfont_Plane1 = (unsigned char)(a), wfont_Plane2 = (unsigned char)(b), wfont_Reg = (unsigned char)(c))
|
||
|
||
#if MASTER98
|
||
|
||
#define graph_analog() OUTB( 0x6a, 1 )
|
||
#define graph_digital() OUTB( 0x6a, 0 )
|
||
#define graph_plasma() OUTB( 0x6a, 0x41 )
|
||
#define graph_crt() OUTB( 0x6a, 0x40 )
|
||
#define graph_showpage(p) OUTB( 0xa4, p )
|
||
#define graph_accesspage(p) OUTB( 0xa6, p )
|
||
|
||
#define G_PAGE0 1 /* graph_backup()の退避フラグ */
|
||
#define G_PAGE1 2
|
||
#define G_ALLPAGE 3
|
||
|
||
|
||
#endif
|
||
|
||
/* GB_GETSIZE: graph_byteget()の必要メモリ計算 */
|
||
#define GB_GETSIZE(x1,y1,x2,y2) (((x2)-(x1)+1L)*((y2)-(y1)+1)*4)
|
||
|
||
extern unsigned graph_VramSeg ;
|
||
extern unsigned graph_VramWords ;
|
||
extern unsigned graph_VramLines ;
|
||
extern unsigned graph_VramWidth ;
|
||
extern unsigned graph_VramZoom ;
|
||
extern unsigned char graph_MeshByte ;
|
||
|
||
extern unsigned font_AnkSeg, font_AnkSize, font_AnkPara ;
|
||
extern const volatile unsigned font_ReadChar ;
|
||
extern const unsigned font_ReadEndChar ;
|
||
extern unsigned char wfont_Plane1, wfont_Plane2, wfont_Reg ;
|
||
extern unsigned wfont_AnkSeg ;
|
||
#if !MASTER98
|
||
extern void (far *font_AnkFunc)(void);
|
||
extern void (far *font_KanjiFunc)(void);
|
||
#endif
|
||
|
||
|
||
/* アナログパレット関係 ----------------------------------------------------*/
|
||
|
||
#if MASTER98
|
||
|
||
void MASTER_RET palette_init(void);
|
||
void MASTER_RET palette_show(void);
|
||
void MASTER_RET palette_show100(void);
|
||
|
||
#define palette_settone(t) (PaletteTone = (t),palette_show())
|
||
#define palette_100() palette_settone(100)
|
||
#define palette_black() palette_settone(0)
|
||
#define palette_white() palette_settone(200)
|
||
|
||
#endif
|
||
|
||
#define palette_set(n,r,g,b) (Palettes[n][0]=(unsigned char)(r),Palettes[n][1]=(unsigned char)(g),Palettes[n][2]=(unsigned char)(b))
|
||
#define palette_set_all(m) memcpy(Palettes,(m),16*3)
|
||
void MASTER_RET palette_set_all_16( const void MASTER_PTR * palette );
|
||
|
||
#if MASTERV
|
||
|
||
void MASTER_RET dac_init(void);
|
||
void MASTER_RET dac_show(void);
|
||
|
||
#define dac_settone(t) (PaletteTone = (t),dac_show())
|
||
#define dac_100() dac_settone(100)
|
||
#define dac_black() dac_settone(0)
|
||
#define dac_white() dac_settone(200)
|
||
|
||
# if !MASTER98
|
||
# define palette_init() dac_init()
|
||
# define palette_show() dac_show()
|
||
|
||
# define palette_settone(t) dac_settone(t)
|
||
# define palette_100() dac_100()
|
||
# define palette_black() dac_black()
|
||
# define palette_white() dac_white()
|
||
# endif
|
||
|
||
#endif
|
||
|
||
extern unsigned PaletteTone ;
|
||
extern int PaletteNote ;
|
||
extern const char PalettesInit[16][3] ;
|
||
extern unsigned char Palettes[16][3] ;
|
||
|
||
|
||
/* SDI関係 ---------------------------------------------------------------- */
|
||
/* SDI: (c)Nob */
|
||
|
||
#if MASTER98
|
||
int MASTER_RET sdi_exist(void);
|
||
void MASTER_RET sdi_set_palettes( int page );
|
||
void MASTER_RET sdi_get_palettes( int page );
|
||
|
||
extern int SdiExists ;
|
||
#endif
|
||
|
||
/* 30行BIOS関係 ----------------------------------------------------------- */
|
||
/* 30行BIOS: (c)lucifer, walker, さかきけい */
|
||
/* TT: (c)「早紀」 */
|
||
|
||
typedef struct bios30param bios30param ;
|
||
struct bios30param {
|
||
char hs ;
|
||
char vs ;
|
||
char vbp ;
|
||
char vfp ;
|
||
char hbp ;
|
||
char hfp ;
|
||
} ;
|
||
|
||
#define BIOS30_MODEMASK 0xd0d0 /* getmode */
|
||
#define BIOS30_NORMAL 0xd000 /* getmode & setmode */
|
||
#define BIOS30_SPECIAL 0xd010 /* getmode & setmode */
|
||
#define BIOS30_RATIONAL 0xd050 /* getmode & setmode */
|
||
#define BIOS30_VGA 0xd090 /* getmode & setmode */
|
||
#define BIOS30_LAYER BIOS30_RATIONAL /* getmode & setmode */
|
||
|
||
#define BIOS30_FKEYMASK 0x2020 /* getmode */
|
||
#define BIOS30_FKEY 0x2000 /* getmode & setmode */
|
||
#define BIOS30_CW 0x2020 /* getmode & setmode */
|
||
|
||
#define BIOS30_LINEMASK 0x0101 /* getmode */
|
||
#define BIOS30_WIDELINE 0x0101 /* getmode & setmode */
|
||
#define BIOS30_NORMALLINE 0x0100 /* getmode & setmode */
|
||
|
||
#define BIOS30_TT_OLD 0x02
|
||
#define BIOS30_30BIOS_OLD 0x80
|
||
#define BIOS30_30BIOS_020 0x81
|
||
#define BIOS30_30BIOS_120 0x89
|
||
#define BIOS30_TT_090 0x83
|
||
#define BIOS30_TT_100 0x82
|
||
#define BIOS30_TT_105 0x83
|
||
#define BIOS30_TT_150 0x06
|
||
#define BIOS30_TT 0x02
|
||
|
||
#define BIOS30_CLOCK2 0 /* getclock & setclock */
|
||
#define BIOS30_CLOCK5 1 /* getclock & setclock */
|
||
|
||
#if MASTER98
|
||
int MASTER_RET bios30_tt_exist(void);
|
||
#define bios30_exist() (bios30_tt_exist() >= BIOS30_30BIOS_OLD)
|
||
unsigned MASTER_RET bios30_getmode(void);
|
||
void MASTER_RET bios30_setmode( unsigned mode );
|
||
unsigned MASTER_RET bios30_getversion(void);
|
||
int MASTER_RET bios30_push(void);
|
||
int MASTER_RET bios30_pop(void);
|
||
unsigned MASTER_RET bios30_getline(void);
|
||
void MASTER_RET bios30_setline( int lines );
|
||
unsigned MASTER_RET bios30_getlimit(void);
|
||
int MASTER_RET bios30_getparam( int line, struct bios30param MASTER_PTR * param );
|
||
|
||
void MASTER_RET bios30_lock(void);
|
||
void MASTER_RET bios30_unlock(void);
|
||
int MASTER_RET bios30_getclock(void);
|
||
int MASTER_RET bios30_setclock( int clock );
|
||
unsigned MASTER_RET bios30_getvsync(void);
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
/* AT互換機には 30bios/TT なんてないよーん */
|
||
# define bios30_tt_exist() 0
|
||
# define bios30_exist() 0
|
||
# define bios30_getmode 0
|
||
# define bios30_setmode(m) (void)0
|
||
# define bios30_getversion() 0
|
||
# define bios30_push() 0
|
||
# define bios30_pop() 0
|
||
# define bios30_getline() 0
|
||
# define bios30_setline(l) (void)0
|
||
# define bios30_getlimit() (vtext_height()*0x0101)
|
||
# define bios30_getparam(l,p) 0
|
||
# define bios30_lock() 0
|
||
# define bios30_unlock() 0
|
||
# define bios30_getclock() 0
|
||
# define bios30_setclock(c) (void)0
|
||
# define bios30_getvsync() 0
|
||
# endif
|
||
#endif
|
||
|
||
/* RSL(常駐シンボリックリンク)関係 ---------------------------------------- */
|
||
/* RSL: (c)恋塚 */
|
||
|
||
#define RSL_NOCONVERT 1
|
||
#define RSL_CONVERT 0
|
||
|
||
int MASTER_RET rsl_exist(void);
|
||
int MASTER_RET rsl_readlink( char MASTER_PTR * buf, const char MASTER_PTR * path );
|
||
int MASTER_RET rsl_linkmode( unsigned mode );
|
||
|
||
|
||
/* 常駐データ関係 --------------------------------------------------------- */
|
||
|
||
unsigned MASTER_RET resdata_exist( const char MASTER_PTR * id, unsigned idlen, unsigned parasize );
|
||
unsigned MASTER_RET resdata_create( const char MASTER_PTR * id, unsigned idlen, unsigned parasize );
|
||
#define resdata_free(seg) dos_free(seg)
|
||
|
||
/* 常駐パレット関係 ------------------------------------------------------- */
|
||
|
||
#if MASTER98
|
||
|
||
int MASTER_RET respal_exist(void);
|
||
int MASTER_RET respal_create(void);
|
||
void MASTER_RET respal_get_palettes(void);
|
||
void MASTER_RET respal_set_palettes(void);
|
||
void MASTER_RET respal_free(void);
|
||
|
||
extern unsigned ResPalSeg ;
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
/* AT互換機では、常駐パレットは作れず、読めないことにする */
|
||
#define respal_exist() 0
|
||
#define respal_create() 0
|
||
#define respal_get_palettes() (void)0
|
||
#define respal_set_palettes() (void)0
|
||
#define respal_free() (void)0
|
||
|
||
# endif
|
||
#endif
|
||
|
||
/* ファイル関係 ----------------------------------------------------------- */
|
||
|
||
int MASTER_RET file_ropen( const char MASTER_PTR * filename );
|
||
int MASTER_RET file_read( void far * buf, unsigned wsize );
|
||
unsigned long MASTER_RET file_lread( void far * buf, unsigned long wsize );
|
||
int MASTER_RET file_getc(void);
|
||
int MASTER_RET file_getw(void);
|
||
void MASTER_RET file_skip_until( int data );
|
||
unsigned MASTER_RET file_gets( void far * buf, unsigned bsize, int endchar );
|
||
long MASTER_RET file_size(void);
|
||
unsigned long MASTER_RET file_time(void);
|
||
int MASTER_RET file_lsettime( unsigned long filetime );
|
||
int MASTER_RET file_settime( unsigned filedate, unsigned filetime );
|
||
|
||
int MASTER_RET file_create( const char MASTER_PTR * filename );
|
||
int MASTER_RET file_append( const char MASTER_PTR * filename );
|
||
int MASTER_RET file_write( const void far * buf, unsigned wsize );
|
||
int MASTER_RET file_lwrite( const void far * buf, unsigned long wsize );
|
||
void MASTER_RET file_putc( int chr );
|
||
void MASTER_RET file_putw( int i );
|
||
|
||
void MASTER_RET file_seek( long pos, int dir );
|
||
unsigned long MASTER_RET file_tell(void);
|
||
void MASTER_RET file_flush(void);
|
||
void MASTER_RET file_close(void);
|
||
int MASTER_RET file_exist( const char MASTER_PTR * filename );
|
||
int MASTER_RET file_delete( const char MASTER_PTR * filename );
|
||
|
||
char MASTER_PTR * MASTER_RET file_basename( char MASTER_PTR * pathname );
|
||
void MASTER_RET file_splitpath( const char MASTER_PTR *path, char MASTER_PTR *drv, char MASTER_PTR *dir, char MASTER_PTR *name, char MASTER_PTR *ext );
|
||
void MASTER_RET file_splitpath_slash( char MASTER_PTR *path, char MASTER_PTR *drv, char MASTER_PTR *dir, char MASTER_PTR *name, char MASTER_PTR *ext );
|
||
|
||
#define file_assign_buffer(buf,siz) (file_Buffer = buf, file_BufferSize = siz)
|
||
#define file_eof() file_Eof
|
||
#define file_error() file_ErrorStat
|
||
|
||
extern void far * file_Buffer ;
|
||
extern unsigned file_BufferSize ;
|
||
extern unsigned long file_BufferPos ;
|
||
|
||
extern unsigned file_BufPtr ;
|
||
extern unsigned file_InReadBuf ;
|
||
extern int file_Eof ;
|
||
extern int file_ErrorStat ;
|
||
extern int file_Handle ;
|
||
|
||
extern int file_sharingmode ;
|
||
|
||
|
||
/* MS-DOS一般 ------------------------------------------------------------ */
|
||
|
||
void MASTER_RET dos29fake_start(void);
|
||
void MASTER_RET dos29fake_end(void);
|
||
#if __SC__
|
||
int MASTER_RET Dos_getdrive(void);
|
||
int MASTER_RET Dos_setdrive( int drive );
|
||
#define dos_getdrive() Dos_getdrive()
|
||
#define dos_setdrive(d) Dos_setdrive(d)
|
||
#else
|
||
int MASTER_RET dos_getdrive(void);
|
||
int MASTER_RET dos_setdrive( int drive );
|
||
#endif
|
||
int MASTER_RET dos_chdir( const char MASTER_PTR * path );
|
||
int MASTER_RET dos_mkdir( const char MASTER_PTR * path );
|
||
int MASTER_RET dos_rmdir( const char MASTER_PTR * path );
|
||
int MASTER_RET dos_makedir( const char MASTER_PTR * path );
|
||
int MASTER_RET dos_getcwd( int drive, char MASTER_PTR * buf );
|
||
long MASTER_RET dos_getdiskfree( int drive );
|
||
void MASTER_RET dos_cputs( const char MASTER_PTR * string );
|
||
void MASTER_RET dos_cputs2( const char MASTER_PTR * string );
|
||
void MASTER_RET dos_putch( int chr );
|
||
int MASTER_RET dos_getch(void);
|
||
int MASTER_RET dos_getkey(void);
|
||
int MASTER_RET dos_getkey2(void);
|
||
void MASTER_RET dos_puts( const char MASTER_PTR * str );
|
||
void MASTER_RET dos_putp( const char MASTER_PTR * passtr );
|
||
void MASTER_RET dos_puts2( const char MASTER_PTR * string );
|
||
void MASTER_RET dos_putc( int c );
|
||
void MASTER_RET dos_keyclear(void);
|
||
unsigned MASTER_RET dos_allocate( unsigned para );
|
||
#if __SC__
|
||
void MASTER_RET Dos_free( unsigned seg );
|
||
#define dos_free(seg) Dos_free(seg)
|
||
#else
|
||
void MASTER_RET dos_free( unsigned seg );
|
||
#endif
|
||
unsigned MASTER_RET dos_maxfree(void);
|
||
int MASTER_RET dos_ropen( const char MASTER_PTR * filename );
|
||
int MASTER_RET dos_create( const char MASTER_PTR * filename, int attrib );
|
||
#if __SC__
|
||
int MASTER_RET Dos_close( int fh );
|
||
#define dos_close(fh) Dos_close(fh)
|
||
#else
|
||
int MASTER_RET dos_close( int fh );
|
||
#endif
|
||
int MASTER_RET dos_read( int fh, void far * buffer, unsigned len );
|
||
int MASTER_RET dos_write( int fh, const void far * buffer, unsigned len );
|
||
long MASTER_RET dos_seek( int fh, long offs, int mode );
|
||
long MASTER_RET dos_filesize( int fh );
|
||
|
||
void MASTER_RET dos_absread( int drive, void far *buf, unsigned pow, long sector );
|
||
void MASTER_RET dos_abswrite( int drive, const void far *buf, unsigned pow, long sector );
|
||
void MASTER_RET dos_ignore_break(void);
|
||
void MASTER_RET dos_accept_break(void);
|
||
int MASTER_RET dos_setbreak( int breaksw );
|
||
void MASTER_RET dos_get_argv0( char MASTER_PTR * argv0 );
|
||
|
||
void (interrupt far * MASTER_RET dos_setvect( int vect, void (interrupt far *intfunc)()))();
|
||
|
||
const char far * MASTER_RET dos_getenv( unsigned envseg, const char MASTER_PTR * envname );
|
||
|
||
void MASTER_RET dos_setdta( void far * dta );
|
||
int MASTER_RET dos_findfirst( const char far * path, int attribute );
|
||
int MASTER_RET dos_findnext(void);
|
||
struct find_many_t {
|
||
unsigned long time ;
|
||
unsigned long size ;
|
||
char name[13] ;
|
||
char attribute ;
|
||
} ;
|
||
unsigned MASTER_RET dos_findmany( const char far * path, int attribute, struct find_many_t far * buffer, unsigned max_dir );
|
||
int MASTER_RET dos_move( const char far * source, const char far * dest );
|
||
long MASTER_RET dos_axdx( int axval, const char MASTER_PTR * strval );
|
||
int MASTER_RET dos_copy( int src_fd, int dest_fd, unsigned long copy_len );
|
||
#define COPY_ALL 0xffffffffL
|
||
int MASTER_RET dos_gets(char MASTER_PTR *buffer, int max);
|
||
#if __SC__
|
||
int MASTER_RET Dos_get_verify(void);
|
||
#define dos_get_verify() Dos_get_verify()
|
||
#else
|
||
int MASTER_RET dos_get_verify(void);
|
||
#endif
|
||
void MASTER_RET dos_set_verify_on(void);
|
||
void MASTER_RET dos_set_verify_off(void);
|
||
int MASTER_RET dos_get_driveinfo(int drive, unsigned MASTER_PTR *cluster, unsigned MASTER_PTR *sector, unsigned MASTER_PTR *bytes);
|
||
|
||
|
||
/* VSYNC割り込み ----------------------------------------------------- */
|
||
|
||
extern unsigned volatile vsync_Count1, vsync_Count2 ;
|
||
extern unsigned vsync_Delay ;
|
||
extern void (far * vsync_Proc)(void);
|
||
|
||
#define vsync_proc_set(proc) (CLI(), (vsync_Proc = (void (far *)(void))(proc)), STI())
|
||
#define vsync_proc_reset() (CLI(), (vsync_Proc = 0), STI())
|
||
|
||
#define vsync_reset1() (vsync_Count1 = 0)
|
||
#define vsync_reset2() (vsync_Count2 = 0)
|
||
|
||
#if MASTER98
|
||
|
||
void MASTER_RET vsync_start(void);
|
||
void MASTER_RET vsync_end(void);
|
||
void MASTER_RET vsync_enter(void);
|
||
void MASTER_RET vsync_leave(void);
|
||
void MASTER_RET vsync_wait(void);
|
||
|
||
extern void (far interrupt * vsync_OldVect)(void);
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
|
||
void MASTER_RET vga_vsync_start(void);
|
||
void MASTER_RET vga_vsync_end(void);
|
||
void MASTER_RET vga_vsync_wait(void);
|
||
|
||
extern unsigned vsync_Freq ;
|
||
|
||
# if !MASTER98
|
||
# define vsync_start() vga_vsync_start(),(vsync_Delay=((vsync_Freq < 21147)\
|
||
? (unsigned)((21147-vsync_Freq)*65536UL/21147):0))
|
||
# define vsync_end() vga_vsync_end()
|
||
# define vsync_enter() vga_vsync_start()
|
||
# define vsync_leave() vga_vsync_end()
|
||
# define vsync_wait() vga_vsync_wait()
|
||
# endif
|
||
|
||
#endif
|
||
|
||
/* タイマ割り込み --------------------------------------------------------- */
|
||
|
||
extern unsigned long volatile timer_Count ;
|
||
extern void (far * timer_Proc)(void);
|
||
|
||
#if MASTER98
|
||
|
||
int MASTER_RET timer_start( unsigned count, void (far * timProc)(void));
|
||
void MASTER_RET timer_end(void);
|
||
void MASTER_RET timer_leave(void);
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
|
||
# if !MASTER98
|
||
# endif
|
||
|
||
#endif
|
||
|
||
/* 区間計測 --------------------------------------------------------------- */
|
||
|
||
extern unsigned perform_Rate ;
|
||
|
||
#if MASTER98
|
||
void MASTER_RET perform_start(void);
|
||
unsigned long MASTER_RET perform_stop(void);
|
||
#endif
|
||
|
||
#if MASTERV
|
||
void MASTER_RET perform_at_start(void);
|
||
unsigned long MASTER_RET perform_at_stop(void);
|
||
|
||
# if !MASTER98
|
||
# define perform_start perform_at_start
|
||
# define perform_stop perform_at_stop
|
||
# endif
|
||
#endif
|
||
|
||
void MASTER_RET perform_str( char MASTER_PTR * strbuf, unsigned long perf );
|
||
|
||
|
||
/* 文字列操作 ------------------------------------------------------------- */
|
||
|
||
void MASTER_CRET str_printf( char MASTER_PTR * buf, const char MASTER_PTR * format, ... );
|
||
|
||
char MASTER_PTR * MASTER_RET str_pastoc( char MASTER_PTR * CString, const char MASTER_PTR * PascalString );
|
||
char MASTER_PTR * MASTER_RET str_ctopas( char MASTER_PTR * PascalString, const char MASTER_PTR * CString );
|
||
|
||
int MASTER_RET str_comma( char MASTER_PTR * buf, long val, unsigned buflen );
|
||
int MASTER_RET str_iskanji2( const char MASTER_PTR * str, int n );
|
||
unsigned MASTER_RET sjis_to_jis( unsigned sjis );
|
||
unsigned MASTER_RET jis_to_sjis( unsigned jis );
|
||
|
||
/* XMS関係 -----------------------------------------------------------------*/
|
||
|
||
int MASTER_RET xms_exist(void);
|
||
unsigned MASTER_RET xms_allocate( unsigned long memsize );
|
||
unsigned MASTER_RET xms_reallocate( unsigned handle, unsigned long newsize );
|
||
void MASTER_RET xms_free( unsigned handle );
|
||
int MASTER_RET xms_movememory( long destOff, unsigned destHandle, long srcOff, unsigned srcHandle, long Length );
|
||
unsigned long MASTER_RET xms_size( unsigned handle );
|
||
unsigned long MASTER_RET xms_maxfree(void);
|
||
unsigned long MASTER_RET xms_space(void);
|
||
|
||
|
||
/* キー関係 ----------------------------------------------------------------*/
|
||
|
||
int MASTER_RET key_pressed(void);
|
||
|
||
#if MASTER98
|
||
|
||
void MASTER_RET key_start(void);
|
||
void MASTER_RET key_end(void);
|
||
void MASTER_RET key_set_label( int num, const char MASTER_PTR * lab );
|
||
void MASTER_RET key_beep_on(void);
|
||
void MASTER_RET key_beep_off(void);
|
||
int MASTER_RET gkey_getkey(void);
|
||
int MASTER_RET key_shift(void);
|
||
int MASTER_RET key_sense( int keygroup );
|
||
|
||
unsigned MASTER_RET key_scan(void);
|
||
unsigned MASTER_RET key_wait(void);
|
||
|
||
void MASTER_RET key_reset(void);
|
||
unsigned MASTER_RET key_wait_bios(void);
|
||
unsigned MASTER_RET key_sense_bios(void);
|
||
|
||
#define K_SHIFT 1
|
||
#define K_CAPS 2
|
||
#define K_KANA 4
|
||
#define K_GRPH 8
|
||
#define K_CTRL 16
|
||
|
||
#endif
|
||
|
||
extern unsigned key_back_buffer ;
|
||
|
||
typedef struct KEYTABLE KEYTABLE ;
|
||
struct KEYTABLE {
|
||
unsigned rollup, rolldown, ins, del, up, left, right, down ;
|
||
unsigned homeclr, help, s_homeclr ;
|
||
} ;
|
||
extern KEYTABLE key_table_normal, key_table_alt ;
|
||
extern KEYTABLE key_table_shift, key_table_ctrl ;
|
||
#define key_table_grph key_table_alt
|
||
|
||
/* key_scanが返す値 ( key_table... ) */
|
||
#define CTRL(c) (c-'@')
|
||
#define K_HELP 0x100
|
||
#define K_UP CTRL('E')
|
||
#define K_LEFT CTRL('S')
|
||
#define K_RIGHT CTRL('D')
|
||
#define K_DOWN CTRL('X')
|
||
#define K_S_UP CTRL('R')
|
||
#define K_S_LEFT CTRL('A')
|
||
#define K_S_RIGHT CTRL('F')
|
||
#define K_S_DOWN CTRL('C')
|
||
#define K_C_UP (CTRL('E')+0x200)
|
||
#define K_C_LEFT (CTRL('S')+0x200)
|
||
#define K_C_RIGHT (CTRL('D')+0x200)
|
||
#define K_C_DOWN (CTRL('X')+0x200)
|
||
#define K_A_UP (CTRL('E')+0x300)
|
||
#define K_A_LEFT (CTRL('S')+0x300)
|
||
#define K_A_RIGHT (CTRL('D')+0x300)
|
||
#define K_A_DOWN (CTRL('X')+0x300)
|
||
#define K_ROLLUP CTRL('C')
|
||
#define K_ROLLDOWN CTRL('R')
|
||
#define K_S_ROLLUP CTRL('Z')
|
||
#define K_S_ROLLDOWN CTRL('W')
|
||
#define K_C_ROLLUP (CTRL('C')+0x200)
|
||
#define K_C_ROLLDOWN (CTRL('R')+0x200)
|
||
#define K_A_ROLLUP (CTRL('C')+0x300)
|
||
#define K_A_ROLLDOWN (CTRL('R')+0x300)
|
||
#define K_HOMECLR CTRL('Y')
|
||
#define K_CLR CTRL('@')
|
||
#define K_INS CTRL('V')
|
||
#define K_DEL CTRL('G')
|
||
#define K_S_DEL CTRL('T')
|
||
#define K_C_INS (CTRL('V')+0x200)
|
||
#define K_C_DEL (CTRL('G')+0x200)
|
||
#define K_A_INS (CTRL('V')+0x300)
|
||
#define K_A_DEL (CTRL('G')+0x300)
|
||
#define K_BS CTRL('H')
|
||
#define K_TAB CTRL('I')
|
||
#define K_ESC CTRL('[')
|
||
#define K_CR CTRL('M')
|
||
#define K_F1 0x101
|
||
#define K_F2 0x102
|
||
#define K_F3 0x103
|
||
#define K_F4 0x104
|
||
#define K_F5 0x105
|
||
#define K_F6 0x106
|
||
#define K_F7 0x107
|
||
#define K_F8 0x108
|
||
#define K_F9 0x109
|
||
#define K_F10 0x10a
|
||
#define K_S_F1 0x10b
|
||
#define K_S_F2 0x10c
|
||
#define K_S_F3 0x10d
|
||
#define K_S_F4 0x10e
|
||
#define K_S_F5 0x10f
|
||
#define K_S_F6 0x110
|
||
#define K_S_F7 0x111
|
||
#define K_S_F8 0x112
|
||
#define K_S_F9 0x113
|
||
#define K_S_F10 0x114
|
||
#define K_VF1 0x120
|
||
#define K_VF2 0x121
|
||
#define K_VF3 0x122
|
||
#define K_VF4 0x123
|
||
#define K_VF5 0x124
|
||
#define K_S_VF1 0x125
|
||
#define K_S_VF2 0x126
|
||
#define K_S_VF3 0x127
|
||
#define K_S_VF4 0x128
|
||
#define K_S_VF5 0x129
|
||
#define K_C_F1 0x12a
|
||
#define K_C_F2 0x12b
|
||
#define K_C_F3 0x12c
|
||
#define K_C_F4 0x12d
|
||
#define K_C_F5 0x12e
|
||
#define K_C_F6 0x12f
|
||
#define K_C_F7 0x130
|
||
#define K_C_F8 0x131
|
||
#define K_C_F9 0x132
|
||
#define K_C_F10 0x133
|
||
#define K_C_VF1 0x134
|
||
#define K_C_VF2 0x135
|
||
#define K_C_VF3 0x136
|
||
#define K_C_VF4 0x137
|
||
#define K_C_VF5 0x138
|
||
|
||
#define key_back(c) (key_back_buffer = (c))
|
||
|
||
#if MASTERV
|
||
|
||
unsigned long MASTER_RET vkey_scan(void);
|
||
unsigned long MASTER_RET vkey_wait(void);
|
||
unsigned MASTER_RET vkey_to_98( unsigned long atkey );
|
||
#define vkey_shift() (*(unsigned char far *)0x417L)
|
||
|
||
#define VK_RSHIFT 0x01
|
||
#define VK_LSHIFT 0x02
|
||
#define VK_SHIFT (VK_RSHIFT|VK_LSHIFT)
|
||
#define VK_CTRL 0x04
|
||
#define VK_ALT 0x08
|
||
#define VK_KANA 0x10 /* J3100 */
|
||
#define VK_NUMLOCK 0x20
|
||
#define VK_CAPS 0x40
|
||
|
||
# if !MASTER98
|
||
# define key_start() (void)0/* ? */
|
||
# define key_end() (void)0/* ? */
|
||
# define key_set_label(n,lab) (void)0/* ? */
|
||
# define key_beep_on() (void)0
|
||
# define key_beep_off() (void)0
|
||
# define gkey_getkey() 0/* ? */
|
||
# define key_shift() vkey_shift()
|
||
# define key_sense(kg) 0/* ? */
|
||
# define key_scan() vkey_to_98(vkey_scan())
|
||
# define key_wait() vkey_to_98(vkey_wait())
|
||
|
||
# define key_reset() (void)0
|
||
# define key_wait_bios() vkey_to_98(vkey_wait())
|
||
# define key_sense_bios() (key_pressed() ? vkey_to_98(vkey_wait()):0)
|
||
|
||
# define K_SHIFT VK_SHIFT
|
||
# define K_CAPS VK_CAPS
|
||
# define K_KANA VK_KANA
|
||
# define K_GRPH VK_ALT
|
||
# define K_CTRL VK_CTRL
|
||
# endif
|
||
#endif
|
||
|
||
|
||
/* 外字関係 ----------------------------------------------------------------*/
|
||
|
||
#if MASTER98
|
||
|
||
void MASTER_RET gaiji_putc( unsigned x, unsigned y, unsigned c );
|
||
void MASTER_RET gaiji_putca( unsigned x, unsigned y, unsigned c, unsigned atrb );
|
||
void MASTER_RET gaiji_puts( unsigned x, unsigned y, const char MASTER_PTR * str );
|
||
void MASTER_RET gaiji_putsa( unsigned x, unsigned y, const char MASTER_PTR * str, unsigned atrb );
|
||
void MASTER_RET gaiji_putp( unsigned x, unsigned y, const char MASTER_PTR * pstr );
|
||
void MASTER_RET gaiji_putpa( unsigned x, unsigned y, const char MASTER_PTR * pstr, unsigned atrb );
|
||
void MASTER_RET gaiji_putni( unsigned x, unsigned y, unsigned val, unsigned width );
|
||
void MASTER_RET gaiji_putnia( unsigned x, unsigned y, unsigned val, unsigned width, unsigned atrb );
|
||
|
||
void MASTER_RET gaiji_write( int code, const void far * pattern );
|
||
void MASTER_RET gaiji_write_all( const void far * pattern );
|
||
void MASTER_RET gaiji_read( int code, void far * pattern );
|
||
void MASTER_RET gaiji_read_all( void far * pattern );
|
||
|
||
int MASTER_RET gaiji_backup(void);
|
||
int MASTER_RET gaiji_restore(void);
|
||
int MASTER_RET gaiji_entry_bfnt( const char MASTER_PTR * filename );
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
|
||
# define gaiji_putsa(x,y,s,a) vga4_bfnt_puts((x)*8,(y)*16,16,(s),\
|
||
vtext_colortable[vtext_color_98(a)&0x0f] + (vga4_readdot((x)*8,(y)*16)<<4))
|
||
# define gaiji_puts(x,y,s) vga4_bfnt_puts((x)*8,(y)*16,16,(s),\
|
||
0x07) /* ? */
|
||
# define gaiji_putnia(x,y,v,w,a) {char ___s[8];str_printf(___s,"%07d",(v));\
|
||
gaiji_putsa(x,y,___s+7-(w),a);}
|
||
# define gaiji_putca(x,y,c,a) vga4_bfnt_putc((x)*8,(y)*16,(c),\
|
||
vtext_colortable[vtext_color_98(a)&0x0f] + (vga4_readdot((x)*8,(y)*16)<<4))
|
||
# define gaiji_putc(x,y,c) vga4_bfnt_putc((x)*8,(y)*16,(c),0x07) /* ? */
|
||
# define gaiji_read(c,pat) _fmemcpy(pat,SEG2FP(font_AnkSeg+(c)*2),32)
|
||
# define gaiji_read_all(pat) _fmemcpy(pat,SEG2FP(font_AnkSeg),32*256)
|
||
# define gaiji_backup() 1
|
||
# define gaiji_restore() 1
|
||
# define gaiji_entry_bfnt(name) !font_entry_bfnt(name) /* ? */
|
||
# endif
|
||
#endif
|
||
|
||
/* フォント関係 ------------------------------------------------------------*/
|
||
|
||
int MASTER_RET font_entry_bfnt( const char MASTER_PTR * );
|
||
int MASTER_RET wfont_entry_bfnt( const char MASTER_PTR * );
|
||
void MASTER_RET font_write( unsigned code, const void MASTER_PTR * pattern );
|
||
|
||
#if MASTER98
|
||
|
||
int MASTER_RET font_entry_cgrom( unsigned firstchar, unsigned lastchar );
|
||
void MASTER_RET font_entry_kcg(void);
|
||
void MASTER_RET font_entry_gaiji(void);
|
||
|
||
void MASTER_RET font_read( unsigned code, void MASTER_PTR * pattern );
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
|
||
void MASTER_RET font_at_init(void);
|
||
int MASTER_RET font_at_read( unsigned ccode, unsigned fontsize, void far * buf);
|
||
int MASTER_RET font_at_entry_cgrom( unsigned firstchar, unsigned lastchar );
|
||
|
||
# if !MASTER98
|
||
# define font_read(code,buf) font_at_read(code,0,buf)
|
||
# define font_entry_cgrom(fc,lc) font_at_entry_cgrom(fc,lc)
|
||
# define font_entry_kcg() font_at_entry_cgrom(0x20,0xdf)
|
||
# define font_entry_gaiji() (void)0/* ? */
|
||
# endif
|
||
|
||
#endif
|
||
|
||
/* マウス関係 --------------------------------------------------------------*/
|
||
|
||
/* MOUSE2: マウス管理 */
|
||
struct mouse_info {
|
||
unsigned button ;
|
||
int x, y ;
|
||
} ;
|
||
#define mouse_get(ms) (CLI(),(ms)->x=mouse_X,(ms)->y=mouse_Y,(ms)->button=mouse_Button,STI())
|
||
|
||
#if MASTER98
|
||
|
||
/* MOUSE1: マウス割り込み */
|
||
void MASTER_RET mouse_int_start( int (far pascal * mousefunc)(void), int freq );
|
||
void MASTER_RET mouse_int_end(void);
|
||
void MASTER_RET mouse_int_enable(void);
|
||
void MASTER_RET mouse_int_disable(void);
|
||
|
||
#endif
|
||
#define MOUSE_120Hz 0
|
||
#define MOUSE_60Hz 1
|
||
#define MOUSE_30Hz 2
|
||
#define MOUSE_15Hz 3
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
# define mouse_int_start(func,freq) mousex_start()
|
||
# define mouse_int_end() mousex_end()
|
||
# define mouse_int_enable() (void)0
|
||
# define mouse_int_disable() (void)0
|
||
# endif
|
||
#endif
|
||
|
||
#if MASTER98
|
||
void MASTER_RET mouse_proc_init(void);
|
||
void MASTER_RET mouse_resetrect(void);
|
||
void MASTER_RET mouse_setrect( int x1, int y1, int x2, int y2 );
|
||
int far pascal mouse_proc(void);
|
||
#endif
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
# define mouse_proc_init() /* ? */
|
||
# define mouse_resetrect() /* ? */
|
||
# define mouse_setrect(x1,y1,x2,y2) mousex_setrect(x1,y1,x2,y2)
|
||
# define mouse_proc() 0/* ? */
|
||
# endif
|
||
#endif
|
||
|
||
extern unsigned mouse_Type ;
|
||
extern volatile int mouse_X, mouse_Y ;
|
||
extern volatile unsigned mouse_Button ;
|
||
extern unsigned mouse_ScaleX, mouse_ScaleY, mouse_EventMask ;
|
||
extern void (far *mouse_EventRoutine)(void);
|
||
|
||
#define MOUSE_BRUP 0x80
|
||
#define MOUSE_BRDOWN 0x40
|
||
#define MOUSE_BLUP 0x20
|
||
#define MOUSE_BLDOWN 0x10
|
||
#define MOUSE_NOEVENT 0x08
|
||
#define MOUSE_MOVE 0x04
|
||
#define MOUSE_BR 0x02
|
||
#define MOUSE_BL 0x01
|
||
#define MOUSE_EVENT 0xf4
|
||
|
||
/* APIとグラフィックカーソル管理 */
|
||
|
||
void MASTER_RET mouse_setmickey( unsigned mx, unsigned my );
|
||
void MASTER_RET mouse_cmoveto( int x, int y );
|
||
|
||
#if MASTER98
|
||
|
||
/* MOUSEI: 簡略マウス割り込み処理 */
|
||
void MASTER_RET mouse_istart( int blc, int whc );
|
||
void MASTER_RET mouse_iend(void);
|
||
|
||
/* MOUSEV: 簡略vsync割り込みマウス処理 */
|
||
void MASTER_RET mouse_vstart( int blc, int whc );
|
||
void MASTER_RET mouse_vend(void);
|
||
|
||
#endif
|
||
|
||
/* MOUSEX: 外部マウスドライバ制御 */
|
||
|
||
#define MOUSEX_NONE 0 /* 外部マウスドライバ不在 */
|
||
#define MOUSEX_NEC 1 /* mouse.sys */
|
||
#define MOUSEX_MS 2 /* mouse.com */
|
||
|
||
int MASTER_RET mousex_start(void);
|
||
void MASTER_RET mousex_end(void);
|
||
void MASTER_RET mousex_moveto( int x, int y );
|
||
void MASTER_RET mousex_setrect( int x1, int y1, int x2, int y2 );
|
||
void MASTER_RET mousex_istart( int blc, int whc );
|
||
void MASTER_RET mousex_iend(void);
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
# define mouse_istart(b,w) mousex_istart(b,w)
|
||
# define mouse_iend() mousex_iend()
|
||
# define mouse_vstart(b,w) vga_vsync_start(),mousex_istart(b,w)
|
||
# define mouse_vend() mousex_iend(),vga_vsync_end()
|
||
# endif
|
||
#endif
|
||
|
||
/* グラフィックカーソル ----------------------------------------------------*/
|
||
|
||
void MASTER_RET cursor_init(void);
|
||
int MASTER_RET cursor_show(void);
|
||
int MASTER_RET cursor_hide(void);
|
||
void MASTER_RET cursor_moveto( int x, int y );
|
||
void MASTER_RET cursor_pattern( int px, int py, int blc, int whc, const void far * pattern );
|
||
void MASTER_RET cursor_pattern2( int px, int py, int whc, const void far * pattern );
|
||
|
||
struct CursorData {
|
||
unsigned char px, py ;
|
||
unsigned pattern[32] ;
|
||
} ;
|
||
|
||
extern struct CursorData cursor_Arrow ;
|
||
extern struct CursorData cursor_Cross ;
|
||
extern struct CursorData cursor_Hand ;
|
||
extern struct CursorData cursor_Ok ;
|
||
|
||
#define cursor_setpattern(pat,blc,whc) cursor_pattern(pat.px,pat.py,(blc),(whc),pat.pattern)
|
||
|
||
/* ビープ関係 --------------------------------------------------------------*/
|
||
|
||
# define BEEP_FREQ_MAX 65535U
|
||
|
||
#if MASTER98
|
||
void MASTER_RET beep_freq( unsigned freq );
|
||
|
||
# define SYS_BEEP_FREQ 2000
|
||
# define BEEP_FREQ_MIN 38
|
||
|
||
# define beep_on_98() OUTB(0x37,6)
|
||
# define beep_off_98() OUTB(0x37,7)
|
||
# define beep_on() beep_on_98()
|
||
# define beep_off() beep_off_98()
|
||
# define beep_end() (beep_off(),beep_freq(SYS_BEEP_FREQ))
|
||
#endif
|
||
|
||
#if MASTERV
|
||
# define VBEEP_FREQ_MIN 19
|
||
|
||
void MASTER_RET vbeep_freq( unsigned freq );
|
||
# define beep_on_at() OUTB(0x61,INPB(0x61) | 3)
|
||
# define beep_off_at() OUTB(0x61,INPB(0x61) & ~3)
|
||
|
||
# ifndef beep_on
|
||
# define SYS_BEEP_FREQ 2000 /* dummy */
|
||
# define BEEP_FREQ_MIN VBEEP_FREQ_MIN
|
||
# define beep_on() beep_on_at()
|
||
# define beep_off() beep_off_at()
|
||
# define beep_end() beep_off()
|
||
# define beep_freq(f) vbeep_freq(f)
|
||
# endif
|
||
#endif
|
||
|
||
/* DOSメモリ関係 -----------------------------------------------------------*/
|
||
|
||
#ifndef __TURBOC__
|
||
# define _DS ((unsigned)(((unsigned long)(void far *)(void near *)1) >> 16))
|
||
#endif
|
||
#ifndef MK_FP
|
||
# define MK_FP(s,o) ((void far *)(((unsigned long)(s) << 16)+(unsigned)(o)))
|
||
#endif
|
||
#define _FPSEG(fp) ((unsigned)((unsigned long)(fp) >> 16))
|
||
#define _FPOFF(fp) ((unsigned)(unsigned long)(fp))
|
||
|
||
/* farポインタを正規化したセグメントを得る */
|
||
#define FP_REGULAR_SEG(fp) (_FPSEG(fp) + (_FPOFF(fp) >> 4))
|
||
/* farポインタを正規化したオフセットを得る */
|
||
#define FP_REGULAR_OFF(fp) (_FPOFF(fp) & 15)
|
||
/* farポインタを正規化する */
|
||
#define FP_REGULAR(fp) (MK_FP(FP_REGULAR_SEG(fp),FP_REGULAR_OFF(fp)))
|
||
/* バイト数の所要パラグラフ数を得る */
|
||
#define BYTE2PARA(byteval) (unsigned)(((((long)(byteval))&0xfffffL)+15)>>4)
|
||
/* セグメント値をポインタに変換する */
|
||
#define SEG2FP(seg) (MK_FP((seg),0))
|
||
/* farポインタから 0:0 番地からのlongオフセット値を得る */
|
||
#define FP2LONG(fp) (((long)_FPSEG(fp) << 4) + _FPOFF(fp))
|
||
/* 0:0番地からのlongオフセット値を farポインタに変換 */
|
||
#define LONG2FP(l) MK_FP((unsigned)((l)>> 4),(unsigned)((l)&0x000f))
|
||
/* farポインタにlong値を加算する */
|
||
#define FPADD(fp,l) LONG2FP(FP2LONG(fp)+(l))
|
||
|
||
|
||
/* long値の上位16ビットを得る */
|
||
#define HIWORD(longval) (unsigned)((longval) >> 16)
|
||
/* long値の下位16ビットを得る */
|
||
#define LOWORD(longval) (unsigned)(longval)
|
||
|
||
/* メモリブロックの用途ID */
|
||
#define MEMID_UNKNOWN 0
|
||
#define MEMID_FONT 1
|
||
#define MEMID_GAIJI 2
|
||
#define MEMID_WFONT 3
|
||
#define MEMID_SUPER 4
|
||
#define MEMID_VVRAM 5
|
||
#define MEMID_BFILE 6
|
||
#define MEMID_PFILE 7
|
||
#define MEMID_BGM 8
|
||
#define MEMID_EFS 9
|
||
#define MEMID_PI 10
|
||
#define MEMID_MAG 11
|
||
#define MEMID_TEXTBACK 12
|
||
#define MEMID_VTEXTX 13
|
||
|
||
unsigned MASTER_RET mem_allocate( unsigned para );
|
||
unsigned MASTER_RET mem_lallocate( unsigned long bytesize );
|
||
void MASTER_RET mem_free( unsigned seg );
|
||
|
||
void MASTER_RET mem_assign( unsigned top_seg, unsigned parasize );
|
||
void MASTER_RET mem_assign_all(void);
|
||
int MASTER_RET mem_unassign(void);
|
||
int MASTER_RET mem_assign_dos( unsigned parasize );
|
||
unsigned MASTER_RET smem_wget( unsigned bytesize );
|
||
unsigned MASTER_RET smem_lget( unsigned long bytesize );
|
||
void MASTER_RET smem_release( unsigned memseg );
|
||
unsigned MASTER_RET hmem_alloc( unsigned parasize );
|
||
unsigned MASTER_RET hmem_allocbyte( unsigned bytesize );
|
||
unsigned MASTER_RET hmem_lallocate( unsigned long bytesize );
|
||
unsigned MASTER_RET hmem_reallocbyte( unsigned oseg, unsigned bytesize );
|
||
unsigned MASTER_RET hmem_realloc( unsigned oseg, unsigned parasize );
|
||
void MASTER_RET hmem_free( unsigned memseg );
|
||
unsigned MASTER_RET hmem_maxfree(void);
|
||
|
||
extern unsigned mem_TopSeg, mem_OutSeg, mem_EndMark ;
|
||
extern unsigned mem_TopHeap, mem_FirstHole ;
|
||
extern unsigned mem_MyOwn, mem_AllocID ;
|
||
|
||
/* 現在確保できる最大smemパラグラフサイズを得る */
|
||
#define smem_maxfree() (mem_TopHeap - mem_EndMark)
|
||
/* 特定のhmemメモリブロックの現在のパラグラフサイズを得る */
|
||
#define hmem_getsize(mseg) (*(unsigned far *)MK_FP((mseg)-1,2) - (mseg))
|
||
/* hmemメモリブロックの用途IDを得る */
|
||
#define hmem_getid(mseg) (*(unsigned far *)MK_FP((mseg)-1,4))
|
||
|
||
/* RS-232C関係 -------------------------------------------------------------*/
|
||
|
||
#ifndef __SIO_H
|
||
# if MASTER98
|
||
|
||
#define SIO_Nxx 0x00 /* Non Parity */
|
||
#define SIO_Oxx 0x10 /* Odd Parity */
|
||
#define SIO_Exx 0x30 /* Even Parity */
|
||
#define SIO_x7x 0x08 /* data length 7bit */
|
||
#define SIO_x8x 0x0c /* data length 8bit */
|
||
#define SIO_xx1 0x40 /* stop bit length 1bit */
|
||
#define SIO_xx2 0x80 /* stop bit length 1.5bit */
|
||
#define SIO_xx3 0xc0 /* stop bit length 2bit */
|
||
|
||
#define SIO_N81 (SIO_Nxx|SIO_x8x|SIO_xx1)
|
||
#define SIO_N82 (SIO_Nxx|SIO_x8x|SIO_xx2)
|
||
#define SIO_N83 (SIO_Nxx|SIO_x8x|SIO_xx3)
|
||
#define SIO_E81 (SIO_Exx|SIO_x8x|SIO_xx1)
|
||
#define SIO_E82 (SIO_Exx|SIO_x8x|SIO_xx2)
|
||
#define SIO_E83 (SIO_Exx|SIO_x8x|SIO_xx3)
|
||
#define SIO_O81 (SIO_Oxx|SIO_x8x|SIO_xx1)
|
||
#define SIO_O82 (SIO_Oxx|SIO_x8x|SIO_xx2)
|
||
#define SIO_O83 (SIO_Oxx|SIO_x8x|SIO_xx3)
|
||
|
||
#define SIO_N71 (SIO_Nxx|SIO_x7x|SIO_xx1)
|
||
#define SIO_N72 (SIO_Nxx|SIO_x7x|SIO_xx2)
|
||
#define SIO_N73 (SIO_Nxx|SIO_x7x|SIO_xx3)
|
||
#define SIO_E71 (SIO_Exx|SIO_x7x|SIO_xx1)
|
||
#define SIO_E72 (SIO_Exx|SIO_x7x|SIO_xx2)
|
||
#define SIO_E73 (SIO_Exx|SIO_x7x|SIO_xx3)
|
||
#define SIO_O71 (SIO_Oxx|SIO_x7x|SIO_xx1)
|
||
#define SIO_O72 (SIO_Oxx|SIO_x7x|SIO_xx2)
|
||
#define SIO_O73 (SIO_Oxx|SIO_x7x|SIO_xx3)
|
||
|
||
#define SIO_FLOW_NONE 0
|
||
#define SIO_FLOW_HARD 1
|
||
#define SIO_FLOW_SOFT 2
|
||
|
||
#define SIO_MIDI 128
|
||
#define SIO_38400 9
|
||
#define SIO_20800 8
|
||
#define SIO_19200 8
|
||
#define SIO_9600 7
|
||
#define SIO_4800 6
|
||
#define SIO_2400 5
|
||
#define SIO_1200 4
|
||
#define SIO_600 3
|
||
#define SIO_300 2
|
||
#define SIO_150 1
|
||
|
||
#define SIO_ER 0x02 /* sio_bit_on/off() DTR */
|
||
#define SIO_ERRCLR 0x10 /* sio_bit_on/off() Errorフラグクリア */
|
||
#define SIO_RS 0x20 /* sio_bit_on/off() RTS */
|
||
#define SIO_BREAK 0x80 /* sio_bit_on/off() ブレーク信号 */
|
||
|
||
#define SIO_PERR 0x08 /* sio_read_err() parity error */
|
||
#define SIO_OERR 0x10 /* sio_read_err() over run error */
|
||
#define SIO_FERR 0x20 /* sio_read_err() framing error */
|
||
|
||
#define SIO_CI 0x80 /* sio_read_signal() 着呼検出 */
|
||
#define SIO_CS 0x40 /* sio_read_signal() 送信可 */
|
||
#define SIO_CD 0x20 /* sio_read_signal() キャリア検出 */
|
||
|
||
#define SIO_SENDBUF_SIZE 2048
|
||
#define SIO_RECEIVEBUF_SIZE 6144
|
||
|
||
#define sio_receivebuf_len(port) sio_ReceiveLen
|
||
#define sio_sendbuf_len(port) sio_SendLen
|
||
#define sio_sendbuf_space(port) ((unsigned)(SIO_SENDBUF_SIZE - sio_SendLen))
|
||
#define sio_error_reset(port) (sio_bit_on((port),SIO_ERRCLR),sio_bit_off((port),SIO_ERRCLR))
|
||
#define sio_enter(port,flow) sio_start(port,0,0,flow)
|
||
|
||
void MASTER_RET sio_start( int port, int speed, int param, int flow );
|
||
void MASTER_RET sio_end( int port );
|
||
void MASTER_RET sio_leave( int port );
|
||
void MASTER_RET sio_setspeed( int port, int speed );
|
||
void MASTER_RET sio_enable( int port );
|
||
void MASTER_RET sio_disable( int port );
|
||
int MASTER_RET sio_putc( int port, int c );
|
||
int MASTER_RET sio_getc( int port );
|
||
unsigned MASTER_RET sio_puts( int port, const char MASTER_PTR * sendstr );
|
||
unsigned MASTER_RET sio_putp( int port, const char MASTER_PTR * passtr );
|
||
unsigned MASTER_RET sio_write( int port, const void MASTER_PTR * senddata, unsigned sendlen );
|
||
unsigned MASTER_RET sio_read( int port, void MASTER_PTR * recbuf, unsigned reclen );
|
||
void MASTER_RET sio_bit_off( int port, int mask );
|
||
void MASTER_RET sio_bit_on( int port, int mask );
|
||
int MASTER_RET sio_read_signal( int port );
|
||
int MASTER_RET sio_read_err( int port );
|
||
int MASTER_RET sio_read_dr( int port );
|
||
|
||
extern const unsigned sio_SendLen ;
|
||
extern const unsigned sio_ReceiveLen ;
|
||
|
||
# endif /* MASTER98 */
|
||
#endif /* __SIO_H */
|
||
|
||
/* BEEP PCM関係 ------------------------------------------------------------*/
|
||
|
||
void MASTER_RET pcm_convert( void far * dest , const void far * src, unsigned rate, unsigned long size );
|
||
#if MASTER98
|
||
void MASTER_RET pcm_play( const void far *pcm, unsigned rate, unsigned long size);
|
||
|
||
# define PCM_22KHz ((INPB(0x42)&0x20) ? (1997/22) : (2458/22))
|
||
# define PCM_15_6KHz ((INPB(0x42)&0x20) ? (19968/156) : (24576/156))
|
||
# define PCM_22kHz PCM_22KHz
|
||
# define PCM_15_6kHz PCM_15_6KHz
|
||
#endif
|
||
|
||
/* PC-9801 ジョイスティック入力関係 ----------------------------------------*/
|
||
|
||
extern int js_bexist, js_shift, js_2player ;
|
||
extern unsigned js_stat[2] ;
|
||
|
||
#define JS_NORMAL 0
|
||
#define JS_FORCE_USE 1
|
||
#define JS_IGNORE 2
|
||
#define JS_UP 0x01
|
||
#define JS_DOWN 0x02
|
||
#define JS_LEFT 0x04
|
||
#define JS_RIGHT 0x08
|
||
#define JS_TRIG1 0x10
|
||
#define JS_TRIG2 0x20
|
||
#define JS_TRIG3 0x40
|
||
#define JS_TRIG4 0x80
|
||
#define JS_ESC 0x100
|
||
#define JS_IRST1 JS_TRIG3
|
||
#define JS_IRST2 JS_TRIG4
|
||
|
||
#define JSA_A 0x80
|
||
#define JSA_B 0x40
|
||
#define JSA_C 0x20
|
||
#define JSA_D 0x10
|
||
#define JSA_E1 0x08
|
||
#define JSA_E2 0x04
|
||
#define JSA_START 0x02
|
||
#define JSA_SELECT 0x01
|
||
|
||
typedef void near pascal JS_ASSIGN_CODE(void);
|
||
void MASTER_RET js_key( unsigned func, int group, int maskbit );
|
||
|
||
#if MASTER98
|
||
|
||
int MASTER_RET js_start( int force );
|
||
|
||
void MASTER_RET js_end(void);
|
||
int MASTER_RET js_sense(void);
|
||
int MASTER_RET js_sense2(void);
|
||
int MASTER_RET js_analog( int player, unsigned char MASTER_PTR * astat );
|
||
|
||
extern unsigned js_saj_port ;
|
||
|
||
extern JS_ASSIGN_CODE JS_1P4 ;
|
||
extern JS_ASSIGN_CODE JS_1P3 ;
|
||
extern JS_ASSIGN_CODE JS_1P2 ;
|
||
extern JS_ASSIGN_CODE JS_1P1 ;
|
||
extern JS_ASSIGN_CODE JS_2P2 ;
|
||
extern JS_ASSIGN_CODE JS_2P1 ;
|
||
extern JS_ASSIGN_CODE JS_2PRIGHT ;
|
||
extern JS_ASSIGN_CODE JS_2PLEFT ;
|
||
extern JS_ASSIGN_CODE JS_2PDOWN ;
|
||
extern JS_ASSIGN_CODE JS_2PUP ;
|
||
|
||
#define js_keyassign(func,group,maskbit) js_key((unsigned)func,(group)+0x52a,(maskbit))
|
||
#define js_key2player(flag) (((js_2player=(flag))!=0) ? \
|
||
(js_keyassign(JS_1P1,9,0x40),js_keyassign(JS_1P2,8,0x80)) \
|
||
:(js_keyassign(JS_1P1,5,0x02),js_keyassign(JS_1P2,5,0x04)))
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
|
||
#define AT_JS_RESIDLEN 12
|
||
extern const char AT_JS_RESID[AT_JS_RESIDLEN] ;
|
||
|
||
struct AT_JS_CALIBDATA {
|
||
char id[AT_JS_RESIDLEN];
|
||
char filler[16-(AT_JS_RESIDLEN&15)];
|
||
Point dmin, dmax, dcenter;
|
||
Point amin, amax, acenter;
|
||
} ;
|
||
#define AT_JS_RESPARASIZE (((sizeof (struct AT_JS_CALIBDATA))+15)>>4)
|
||
|
||
extern unsigned at_js_resseg ;
|
||
|
||
extern unsigned at_js_mintime ;
|
||
extern unsigned at_js_maxtime ;
|
||
|
||
extern unsigned at_js_count ;
|
||
extern unsigned at_js_x1,at_js_y1 ;
|
||
extern unsigned at_js_x2,at_js_y2 ;
|
||
extern unsigned at_js_min ;
|
||
extern unsigned at_js_max ;
|
||
extern int at_js_fast ;
|
||
|
||
int MASTER_RET at_js_start( int mode );
|
||
void MASTER_RET at_js_end(void);
|
||
int MASTER_RET at_js_sense(void);
|
||
#define at_js_keyassign(f,g,m) js_key((unsigned)f,(g)+(unsigned)js_map,(m))
|
||
#define at_js_key2player(flag) (((js_2player=(flag))!=0) ? \
|
||
(at_js_keyassign(AT_JS_1P1,10,0x04),at_js_keyassign(AT_JS_1P2,9,0x10)) \
|
||
:(at_js_keyassign(AT_JS_1P1, 5,0x10),at_js_keyassign(AT_JS_1P2,5,0x20)))
|
||
|
||
int MASTER_RET at_js_wait(Point *p);
|
||
void MASTER_RET at_js_calibrate(const Point far * min, const Point far * max, const Point far * center);
|
||
#define at_js_resptr ((struct AT_JS_CALIBDATA far *)SEG2FP(at_js_resseg))
|
||
#define at_js_get_calibrate() (at_js_resseg=resdata_exist(AT_JS_RESID,\
|
||
AT_JS_RESIDLEN,AT_JS_RESPARASIZE))
|
||
|
||
extern JS_ASSIGN_CODE AT_JS_1P4 ;
|
||
extern JS_ASSIGN_CODE AT_JS_1P3 ;
|
||
extern JS_ASSIGN_CODE AT_JS_1P2 ;
|
||
extern JS_ASSIGN_CODE AT_JS_1P1 ;
|
||
extern JS_ASSIGN_CODE AT_JS_2P2 ;
|
||
extern JS_ASSIGN_CODE AT_JS_2P1 ;
|
||
extern JS_ASSIGN_CODE AT_JS_2PRIGHT ;
|
||
extern JS_ASSIGN_CODE AT_JS_2PLEFT ;
|
||
extern JS_ASSIGN_CODE AT_JS_2PDOWN ;
|
||
extern JS_ASSIGN_CODE AT_JS_2PUP ;
|
||
|
||
extern JS_ASSIGN_CODE js_map ;
|
||
|
||
# if !MASTER98
|
||
# define js_start(m) ((at_js_fast=1),at_js_start(m),\
|
||
(at_js_get_calibrate()!=0)?(at_js_calibrate(&at_js_resptr->dmin,\
|
||
&at_js_resptr->dmax,&at_js_resptr->dcenter),js_bexist):js_bexist)
|
||
# define js_end() at_js_end()
|
||
# define js_sense() at_js_sense()
|
||
# define js_sense2() (js_stat[0] & JS_ESC)
|
||
# define js_keyassign(f,g,m) at_js_keyassign(f,g,m)
|
||
# define js_key2player(flag) at_js_key2player(flag)
|
||
#endif
|
||
|
||
#endif
|
||
|
||
/* スーパーインポーズ処理 --------------------------------------------------*/
|
||
/* 出典: super.lib(c)Kazumi supersfx.lib(c)iR
|
||
$Id: super.h 0.36 93/02/19 20:23:11 Kazumi Rel $
|
||
*/
|
||
|
||
#define SUPER_MAXPAT 512
|
||
|
||
/* extern */
|
||
extern unsigned super_patnum ;
|
||
extern unsigned super_buffer ;
|
||
extern unsigned super_patdata[SUPER_MAXPAT] ;
|
||
extern unsigned super_patsize[SUPER_MAXPAT] ;
|
||
extern const char BFNT_ID[5] ; /* "BFNT\x1a" */
|
||
|
||
/* define */
|
||
#define SIZE8x8 0x0108
|
||
#define SIZE16x16 0x0210
|
||
#define SIZE24x24 0x0318
|
||
#define SIZE32x32 0x0420
|
||
#define SIZE40x40 0x0528
|
||
#define SIZE48x48 0x0630
|
||
#define SIZE56x56 0x0738
|
||
#define SIZE64x64 0x0840
|
||
#define xSIZE8 0x0100
|
||
#define xSIZE16 0x0200
|
||
#define xSIZE24 0x0300
|
||
#define xSIZE32 0x0400
|
||
#define xSIZE40 0x0500
|
||
#define xSIZE48 0x0600
|
||
#define xSIZE56 0x0700
|
||
#define xSIZE64 0x0800
|
||
#define ySIZE8 0x0008
|
||
#define ySIZE16 0x0010
|
||
#define ySIZE24 0x0018
|
||
#define ySIZE32 0x0020
|
||
#define ySIZE40 0x0028
|
||
#define ySIZE48 0x0030
|
||
#define ySIZE56 0x0038
|
||
#define ySIZE64 0x0040
|
||
#define PATTERN_ERASE 0
|
||
#define PATTERN_BLUE 1
|
||
#define PATTERN_RED 2
|
||
#define PATTERN_GREEN 3
|
||
#define PATTERN_INTEN 4
|
||
#define PLANE_ERASE 0x00c0
|
||
#define PLANE_BLUE 0xffce
|
||
#define PLANE_RED 0xffcd
|
||
#define PLANE_GREEN 0xffcb
|
||
#define PLANE_INTEN 0xffc7
|
||
|
||
/* super.lib エラーコード */
|
||
#ifndef CommonDefined
|
||
#define NoError 0 /* 正常終了 */
|
||
#define InvalidFunctionCode -1 /* 無効なファンクションコード */
|
||
#define FileNotFound -2 /* ファイル名が見つからない */
|
||
#define PathNotFound -3 /* パス名が見つからない */
|
||
#define TooManyOpenFiles -4 /* オープンファイル過多 */
|
||
#define AccessDenied -5 /* アクセスできない */
|
||
#define InvalidHandle -6 /* 無効なハンドル */
|
||
#define MemoryControlBlocksDestroyed -7 /* メモリコントロールブロック破損 */
|
||
#define InsufficientMemory -8 /* メモリ不足 */
|
||
#define InvalidMemoryBlockAddress -9 /* 無効なメモリブロックアドレス */
|
||
#define InvalidEnvironment -10 /* 無効な環境 */
|
||
#define InvalidFormat -11 /* 無効な書式 */
|
||
#define InvalidAccessCode -12 /* 無効なアクセスコード */
|
||
#define InvalidData -13 /* 無効なデータ */
|
||
#define InvalidDrive -15 /* 無効なドライブ名 */
|
||
#define AttemptToRemoveCurrentDirectory -16
|
||
/* カレントディレクトリを削除しようとした */
|
||
#define NotSameDevice -17 /* 同じデバイスではない */
|
||
#define NoMoreFiles -18 /* これ以上ファイルはない */
|
||
#define DiskIsWriteProtected -19 /* ディスクがライトプロテクト状態 */
|
||
#define BadDiskUnit -20 /* ディスクユニット不良 */
|
||
#define DriveNotReady -21 /* ドライブが準備されていない */
|
||
#define InvalidDiskCommand -22 /* 無効なディスクコマンド */
|
||
#define CrcError -23 /* CRC エラー */
|
||
#define InvalidLength -24 /* 無効な長さ */
|
||
#define SeekError -25 /* シークエラー */
|
||
#define NotAnMsdosDisk -26 /* MS-DOS のディスクではない */
|
||
#define SectorNotFound -27 /* セクタが見つからない */
|
||
#define OutOfPaper -28 /* 紙切れ */
|
||
#define WriteFault -29 /* 書き込み失敗 */
|
||
#define ReadFault -30 /* 読み出し失敗 */
|
||
#define GeneralFailure -31 /* 通常の失敗 */
|
||
#define ShareingViolation -32 /* シェアリング違反 */
|
||
#define LockViolation -33 /* ロック違反 */
|
||
#define WrongDisk -34 /* ディスク指定の失敗 */
|
||
#define FcbUnavailable -35 /* FCB 使用不可能 */
|
||
#define NetworkRequestNotSupported -50
|
||
/* ネットワークリクエストが準備されていない */
|
||
#define RemoteComputerNotListening -51
|
||
/* リモートコンピュータが LISTEN していない */
|
||
#define DuplicateNameOnNetwork -52 /* ネットワーク名の 2 重定義 */
|
||
#define NetworkNameNotFound -53 /* ネットワーク名が見つからない */
|
||
#define NetworkBusy -54 /* ネットワークビジー */
|
||
#define NetworkDeviceNoLongerExists -55
|
||
/* ネットワークデバイスはこれ以上ない */
|
||
#define NetBiosCommandLimitExceeded -56 /* ネットワーク BIOS の限界を越えた */
|
||
#define NetworkAdapterHardwareError -57
|
||
/* ネットワークアダプタのハードエラー */
|
||
#define IncorrectResponseFromNetwork -58
|
||
/* ネットワークからの不当な応答 */
|
||
#define UnexpectedNetworkError -59 /* 予期できないネットワークエラー */
|
||
#define IncompatibleRemoteAdapter -60 /* リモートアダプタが合致しない */
|
||
#define PrintQueueFull -61 /* プリント待ち行列が一杯 */
|
||
#define QueueNotFull -62 /* 待ち行列は一杯ではない */
|
||
#define NotEnoughSpaceForPrintFile -63
|
||
/* プリントファイルのためのスペースが不十分 */
|
||
#define NetworkNameWasDeleted -64
|
||
/* ネットワーク名は既に削除されている */
|
||
#define AccessDenied2 -65 /* アクセスできない */
|
||
#define NetworkDeviceTypeIncorrect -66
|
||
/* ネットワークデバイスのタイプが不当 */
|
||
#define NetworkNameNotFound2 -67 /* ネットワーク名が見つからない */
|
||
#define NetworkNameLimitExceeded -68 /* ネットワーク名の限界を越えた */
|
||
#define NetBiosSessionLimitExceeded -69
|
||
/* ネットワーク BIOS セッションの限界を越えた */
|
||
#define TemporarilyPaused -70 /* 一時休止 */
|
||
#define NetworkRequestNotAccepted -71
|
||
/* ネットワークの要求が受けつけられない */
|
||
#define PrintOrDiskRedirectionIsPaused -72
|
||
/* プリンタ,ディスクのリディレクション休止 */
|
||
#define FileExists -80 /* ファイルが存在する */
|
||
#define CannotMake -82 /* 作成不能 */
|
||
#define Interrupt24hFailure -83 /* 割り込みタイプ 24H の失敗 */
|
||
#define OutOfStructures -84 /* ストラクチャの不良 */
|
||
#define AlreadyAssigned -85 /* 割り当て済み */
|
||
#define InvalidPassword -86 /* 無効なパスワード */
|
||
#define InvalidParameter -87 /* 無効なパラメータ */
|
||
#define NetWriteFault -88 /* ネットワークへの書き込み失敗 */
|
||
#define CommonDefined
|
||
#endif
|
||
|
||
/* define macro */
|
||
#define super_check_entry(patnum) (super_patsize[patnum])
|
||
#define super_getsize_pat(patnum) (super_patsize[patnum])
|
||
#define super_getsize_pat_x(patnum) ((super_patsize[patnum] >> 8) * 8)
|
||
#define super_getsize_pat_y(patnum) (super_patsize[patnum] & 0xff)
|
||
|
||
/* replacements for lower compatibilty... (super.lib) */
|
||
#define peekb2(seg,off) (*(const unsigned char far *)MK_FP(seg,off))
|
||
#define poke2(seg,off,data,len) _fmemset(MK_FP(seg,off),(data),(len))
|
||
#define pokeb2(seg,off,data) ((*(unsigned char far *)MK_FP(seg,off)) = (data))
|
||
#ifndef __TURBOC__
|
||
# define poke(seg,off,data) ((*(unsigned far *)MK_FP(seg,off)) = (data))
|
||
#endif
|
||
#define get_ds() _DS
|
||
#define super_palette Palettes
|
||
#define BFNT_HEADER BfntHeader
|
||
|
||
/* struct */
|
||
typedef struct BfntHeader BfntHeader ;
|
||
typedef BfntHeader MASTER_PTR * PBfntHeader ;
|
||
struct BfntHeader {
|
||
unsigned char id[5], col ;
|
||
unsigned char ver, x00 ;
|
||
unsigned int Xdots;
|
||
unsigned int Ydots;
|
||
unsigned int START;
|
||
unsigned int END;
|
||
unsigned char font_name[8];
|
||
unsigned long time;
|
||
unsigned int extSize;
|
||
unsigned int hdrSize;
|
||
} ;
|
||
|
||
/* function prototypes */
|
||
|
||
int MASTER_RET bfnt_header_load(const char MASTER_PTR *filename, BfntHeader MASTER_PTR *header);
|
||
|
||
int MASTER_RET bfnt_change_erase_pat(int, int, PBfntHeader);
|
||
int MASTER_RET bfnt_entry_pat(int, PBfntHeader, int);
|
||
int MASTER_RET bfnt_extend_header_analysis(int, PBfntHeader);
|
||
int MASTER_RET bfnt_extend_header_skip(int, PBfntHeader);
|
||
int MASTER_RET bfnt_header_read(int, PBfntHeader);
|
||
int MASTER_RET bfnt_palette_skip(int, PBfntHeader);
|
||
int MASTER_RET bfnt_palette_set(int, PBfntHeader);
|
||
|
||
int MASTER_RET fontfile_open( const char MASTER_PTR * );
|
||
int MASTER_RET fontfile_close( int filehandle );
|
||
|
||
#if MASTER98
|
||
void MASTER_RET over_put_8(int x, int y, int num);
|
||
void MASTER_RET over_roll_put_8(int x, int y, int num);
|
||
void MASTER_RET over_small_put_8(int x, int y, int num);
|
||
#endif
|
||
|
||
int MASTER_RET palette_entry_rgb(const char MASTER_PTR *);
|
||
|
||
#if MASTER98
|
||
void MASTER_RET palette_black_in(unsigned speed);
|
||
void MASTER_RET palette_black_out(unsigned speed);
|
||
void MASTER_RET palette_white_in(unsigned speed);
|
||
void MASTER_RET palette_white_out(unsigned speed);
|
||
#endif
|
||
#if MASTERV
|
||
void MASTER_RET dac_black_in(unsigned speed);
|
||
void MASTER_RET dac_black_out(unsigned speed);
|
||
void MASTER_RET dac_white_in(unsigned speed);
|
||
void MASTER_RET dac_white_out(unsigned speed);
|
||
# if !MASTER98
|
||
# define palette_black_in(s) dac_black_in(s)
|
||
# define palette_black_out(s) dac_black_out(s)
|
||
# define palette_white_in(s) dac_white_in(s)
|
||
# define palette_white_out(s) dac_white_out(s)
|
||
# endif
|
||
#endif
|
||
|
||
|
||
int MASTER_RET super_cancel_pat(int num);
|
||
void MASTER_RET super_clean( int min_pat, int max_pat );
|
||
int MASTER_RET super_change_erase_bfnt(int, const char MASTER_PTR *);
|
||
void MASTER_RET super_change_erase_pat(int, const void far *);
|
||
int MASTER_RET super_entry_bfnt(const char MASTER_PTR *);
|
||
int MASTER_RET super_entry_char(int patnum);
|
||
int MASTER_RET super_entry_at( int num, int patsize, unsigned pat_seg );
|
||
int MASTER_RET super_entry_pat(int patsize, const void far *image, int clear_color);
|
||
int MASTER_RET super_entry_pack( const void far * image, unsigned image_width, int patsize, int clear_color );
|
||
void MASTER_RET super_free(void);
|
||
int MASTER_RET super_backup_ems( unsigned MASTER_PTR * handle, int first_pat, int last_pat );
|
||
int MASTER_RET super_restore_ems( unsigned handle, int load_to );
|
||
void MASTER_RET super_free_ems(void);
|
||
int MASTER_RET super_duplicate(int topat, int frompat);
|
||
void MASTER_RET super_hrev(int patnum);
|
||
#define super_dup(pat) super_duplicate(super_patnum,(pat))
|
||
|
||
|
||
#if MASTER98
|
||
int MASTER_RET super_convert_tiny( int num );
|
||
void MASTER_RET repair_back(int x, int y, int num);
|
||
void MASTER_RET repair_out(int x, int y, int num);
|
||
|
||
void MASTER_RET slice_put(int x, int y, int num, int line);
|
||
|
||
void MASTER_RET super_in(int x, int y, int num);
|
||
void MASTER_RET super_large_put(int x, int y, int num);
|
||
void MASTER_RET super_out(int x, int y, int num);
|
||
void MASTER_RET super_put(int x, int y, int num);
|
||
void MASTER_RET super_put_vrev(int x, int y, int num);
|
||
void MASTER_RET super_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane );
|
||
void MASTER_RET super_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane );
|
||
void MASTER_RET super_put_8(int x, int y, int num);
|
||
void MASTER_RET super_put_clip(int x, int y, int num);
|
||
void MASTER_RET super_put_clip_8(int x, int y, int num);
|
||
#endif
|
||
#if MASTERV
|
||
# define vga4_repair_back(x,y,num) (graph_accesspage(0),vga4_byte_move(\
|
||
(x)/8,(y)+graph_VramLines, (x)/8+(super_patsize[num]>>8),\
|
||
(y)+graph_VramLines+(super_patsize[num]&0xff)-1,(x)/8,(y)))
|
||
void MASTER_RET vga4_repair_out(int x, int y, int num);
|
||
void MASTER_RET vga4_slice_put(int x, int y, int num,int line);
|
||
void MASTER_RET vga4_super_in(int x, int y, int num);
|
||
void MASTER_RET vga4_super_large_put(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put_vrev(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane );
|
||
void MASTER_RET vga4_super_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane );
|
||
void MASTER_RET vga4_super_put_8(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put_clip(int x, int y, int num);
|
||
void MASTER_RET vga4_over_put_8(int x, int y, int num);
|
||
void MASTER_RET vga4_over_roll_put_8(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put_rect(int x, int y, int num);
|
||
void MASTER_RET vga4_super_put_vrev_rect(int x, int y, int num);
|
||
void MASTER_RET vga4_super_roll_put(int x, int y, int num);
|
||
# if !MASTER98
|
||
# define super_convert_tiny(n) 0 /* DOS/Vではtinyは無効 */
|
||
# define repair_back(x,y,num) vga4_repair_back(x,y,num)
|
||
# define repair_out(x,y,num) vga4_repair_out(x,y,num)
|
||
# define slice_put(x,y,num,l) vga4_slice_put(x,y,num,l)
|
||
# define super_in(x,y,num) vga4_super_in(x,y,num)
|
||
# define super_large_put(x,y,num) vga4_super_large_put(x,y,num)
|
||
# define super_out(x,y,num) vga4_repair_out(x,y,num) /* ? */
|
||
# define super_put(x,y,num) vga4_super_put(x,y,num)
|
||
# define super_put_vrev(x,y,num) vga4_super_put_vrev(x,y,num)
|
||
# define super_put_1plane(x,y,num,pat,put) vga4_super_put_1plane(x,y,num,pat,put)
|
||
# define super_put_1plane_8(x,y,num,pat,put) vga4_super_put_1plane_8(x,y,num,pat,put)
|
||
# define super_put_8(x,y,num) vga4_super_put_8(x,y,num)
|
||
# define super_put_clip(x,y,num) vga4_super_put_clip(x,y,num)
|
||
|
||
# define over_put_8(x,y,num) vga4_over_put_8(x,y,num)
|
||
# define over_roll_put_8(x,y,num) vga4_over_roll_put_8(x,y,num)
|
||
# define over_small_put_8(x,y,num) /* ? */
|
||
|
||
# define super_put_rect(x,y,num) vga4_super_put_rect(x,y,num)
|
||
# define super_put_vrev_rect(x,y,num) vga4_super_put_vrev_rect(x,y,num)
|
||
# define super_roll_put(x,y,num) vga4_super_roll_put(x,y,num)
|
||
# endif
|
||
#endif
|
||
|
||
void MASTER_RET super_set_window(int y1, int y2);
|
||
#if MASTER98
|
||
void MASTER_RET super_put_window(int x, int y, int num);
|
||
void MASTER_RET super_put_rect(int x, int y, int num);
|
||
void MASTER_RET super_put_vrev_rect(int x, int y, int num);
|
||
void MASTER_RET super_repair(int x, int y, int num);
|
||
void MASTER_RET super_roll_put(int x, int y, int num);
|
||
void MASTER_RET super_roll_put_1plane(int x, int y, int num, int pattern_plane, unsigned put_plane);
|
||
void MASTER_RET super_roll_put_1plane_8(int x, int y, int num, int pattern_plane, unsigned put_plane);
|
||
void MASTER_RET super_roll_put_8(int x, int y, int num);
|
||
void MASTER_RET super_zoom(int x, int y, int num, int zoom);
|
||
void MASTER_RET super_zoom_put(int x, int y, int num, unsigned x_rate, int y_rate);
|
||
void MASTER_RET super_zoom_put_1plane(int x, int y, int num, unsigned x_rate, unsigned y_rate, int pattern_plane, unsigned put_plane);
|
||
#endif
|
||
|
||
#if MASTER98
|
||
void MASTER_RET super_put_tiny( int x, int y, int num );
|
||
void MASTER_RET super_put_tiny_small( int x, int y, int num );
|
||
void MASTER_RET super_roll_put_tiny( int x, int y, int num );
|
||
void MASTER_RET super_put_tiny_vrev( int x, int y, int num );
|
||
void MASTER_RET super_put_tiny_small_vrev( int x, int y, int num );
|
||
#endif
|
||
#if MASTERV
|
||
void MASTER_RET vga4_super_zoom(int x, int y, int num, int zoom);
|
||
void MASTER_RET vga4_super_zoom_put(int x, int y, int num, unsigned x_rate, int y_rate);
|
||
# if !MASTER98 /* DOS/Vでは super_*_tinyは無効 */
|
||
# define super_zoom(x,y,n,z) vga4_super_zoom(x,y,n,z)
|
||
# define super_zoom_put(x,y,num,xr,yr) vga4_super_zoom_put(x,y,num,xr,yr)
|
||
# define super_put_tiny(x,y,n) super_put(x,y,n)
|
||
# define super_put_tiny_small(x,y,n) super_put(x,y,n)
|
||
# define super_roll_put_tiny(x,y,n) super_roll_put(x,y,n)
|
||
# define super_put_tiny_vrev(x,y,n) super_put_vrev(x,y,n)
|
||
# define super_put_tiny_small_vrev(x,y,n) super_put_vrev(x,y,n)
|
||
# endif
|
||
#endif
|
||
|
||
extern unsigned virtual_seg;
|
||
#if MASTER98
|
||
int MASTER_RET virtual_copy(void);
|
||
void MASTER_RET virtual_repair(int x, int y, int num);
|
||
void MASTER_RET virtual_vram_copy(void);
|
||
#endif
|
||
#if MASTERV
|
||
int MASTER_RET vga4_virtual_copy(void);
|
||
void MASTER_RET vga4_virtual_repair(int x, int y, int num);
|
||
void MASTER_RET vga4_virtual_vram_copy(void);
|
||
# if !MASTER98
|
||
# define virtual_copy() vga4_virtual_copy()
|
||
# define virtual_repair(x,y,num) vga4_virtual_repair(x,y,num)
|
||
# define virtual_vram_copy() vga4_virtual_vram_copy()
|
||
# endif
|
||
#endif
|
||
void MASTER_RET virtual_over_put_8(int x, int y, int num);
|
||
void MASTER_RET virtual_free(void);
|
||
|
||
|
||
#if MASTER98
|
||
void MASTER_RET super_wave_put(int x, int y, int num, int len, char amp, int ph);
|
||
void MASTER_RET super_wave_put_1plane(int x, int y, int num, int len, char amp, int ph, int pattern_plane, unsigned put_plane);
|
||
void MASTER_RET super_vibra_put(int x, int y, int num, int len, int ph);
|
||
void MASTER_RET super_vibra_put_1plane(int x, int y, int num, int len, int ph, int pattern_plane, unsigned put_plane);
|
||
void MASTER_RET super_zoom_v_put(int x, int y, int num, unsigned y_rate);
|
||
void MASTER_RET super_zoom_v_put_1plane(int x, int y, int num, unsigned rate, int pattern_plane, unsigned put_plane);
|
||
|
||
void MASTER_RET over_dot_8(int x, int y);
|
||
void MASTER_RET over_blk16_8(int x, int y);
|
||
|
||
#endif
|
||
|
||
#if MASTERV
|
||
|
||
void MASTER_RET vga4_super_wave_put(int x, int y, int num, int len, char amp, int ph);
|
||
void MASTER_RET vga4_super_vibra_put(int x, int y, int num, int len, int ph);
|
||
void MASTER_RET vga4_super_wave_put_1plane(int x, int y, int num, int len, char amp, int ph, int pattern_plane, unsigned put_plane);
|
||
|
||
void MASTER_RET vga4_super_zoom_v_put_1plane(int x, int y, int num, unsigned rate, int pattern_plane, unsigned put_plane);
|
||
|
||
#if !MASTER98
|
||
# define super_wave_put(x,y,num,len,amp,ph) vga4_super_wave_put(x,y,num,len,amp,ph)
|
||
# define super_wave_put_1plane(x,y,num,len,amp,ph,pat,put) vga4_super_wave_put_1plane(x,y,num,len,amp,ph,pat,put)
|
||
# define super_vibra_put(x,y,num,len,ph) vga4_super_vibra_put(x,y,num,len,ph)
|
||
# define super_vibra_put_1plane(x,y,num,len,ph,pat,put) super_put_1plane(x,y,num,pat,put)
|
||
# define super_zoom_v_put(x,y,num,yrate) super_zoom_put(x,y,num,256,yrate)
|
||
# define super_zoom_v_put_1plane(x,y,num,rate,pat,put) vga4_super_zoom_v_put_1plane(x,y,num,rate,pat,put)
|
||
|
||
# define over_dot_8(x,y) vgc_setcolor(VGA_PSET,0),\
|
||
(*(char far *)MK_FP(graph_VramSeg,(y)*graph_VramWidth+(x)/8)='\xff')
|
||
# define over_blk16_8(x,y) vgc_setcolor(VGA_PSET,0),vgc_byteboxfill_x_pset((x),y,(x)+1,(y)+15)
|
||
#endif
|
||
#endif
|
||
|
||
/* EGCによるスクロール -----------------------------------------------------*/
|
||
/* 出典:
|
||
egc.h 0.06
|
||
*/
|
||
|
||
#if MASTER98
|
||
void MASTER_RET egc_shift_down(int x1, int y1, int x2, int y2, int dots);
|
||
void MASTER_RET egc_shift_down_all(int dots);
|
||
void MASTER_RET egc_scroll_left(int dots);
|
||
void MASTER_RET egc_shift_left(int x1, int y1, int x2, int y2, int dots);
|
||
void MASTER_RET egc_shift_left_all(int dots);
|
||
void MASTER_RET egc_scroll_right(int dots);
|
||
void MASTER_RET egc_shift_right(int x1, int y1, int x2, int y2, int dots);
|
||
void MASTER_RET egc_shift_right_all(int dots);
|
||
void MASTER_RET egc_shift_up(int x1, int y1, int x2, int y2, int dots);
|
||
void MASTER_RET egc_shift_up_all(int dots);
|
||
#endif
|
||
|
||
#if MASTERV
|
||
# if !MASTER98
|
||
# define egc_shift_down_all(dots) vga4_byte_move(0,0,graph_VramWidth-1,graph_VramLines-(dots),0,(dots))
|
||
# define egc_shift_up_all(dots) vga4_byte_move(0,(dots),graph_VramWidth-1,graph_VramLines-(dots),0,0)
|
||
# endif
|
||
#endif
|
||
|
||
/* グラフィック画面への多角形描画処理 --------------------------------------*/
|
||
/* 出典:
|
||
gc_poly.h 0.16
|
||
*/
|
||
|
||
/* grcg_setcolor()や vgc_setcolor()に指定するアクセスプレーン指定 */
|
||
#define GC_B 0x0e /* 青プレーンをアクセスする */
|
||
#define GC_R 0x0d
|
||
#define GC_BR 0x0c /* : */
|
||
#define GC_G 0x0b /* : */
|
||
#define GC_BG 0x0a /* : */
|
||
#define GC_RG 0x09
|
||
#define GC_BRG 0x08 /* : */
|
||
#define GC_I 0x07
|
||
#define GC_BI 0x06
|
||
#define GC_RI 0x05
|
||
#define GC_BRI 0x04
|
||
#define GC_GI 0x03
|
||
#define GC_BGI 0x02
|
||
#define GC_RGI 0x01 /* : */
|
||
#define GC_BRGI 0x00 /* 全プレーンをアクセスする */
|
||
|
||
#if MASTER98
|
||
/* grcg_setcolor()の modeに設定する値 */
|
||
#ifndef GC_OFF
|
||
# define GC_OFF 0
|
||
# define GC_TDW 0x80 /* 書き込みデータは無視して、タイルレジスタの内容を書く */
|
||
# define GC_TCR 0x80 /* タイルレジスタと同じ色のビットが立って読み込まれる */
|
||
# define GC_RMW 0xc0 /* 書き込みビットが立っているドットにタイルレジスタから書く */
|
||
#endif
|
||
|
||
#define EGC_ACTIVEPLANEREG 0x04a0
|
||
#define EGC_READPLANEREG 0x04a2
|
||
#define EGC_MODE_ROP_REG 0x04a4
|
||
#define EGC_FGCOLORREG 0x04a6
|
||
#define EGC_MASKREG 0x04a8
|
||
#define EGC_BGCOLORREG 0x04aa
|
||
#define EGC_ADDRRESSREG 0x04ac
|
||
#define EGC_BITLENGTHREG 0x04ae
|
||
|
||
#define EGC_COMPAREREAD 0x2000
|
||
#define EGC_WS_PATREG 0x1000 /* WS = write source */
|
||
#define EGC_WS_ROP 0x0800 /* parren reg, ans of rop, cpu data */
|
||
#define EGC_WS_CPU 0x0000
|
||
#define EGC_SHIFT_CPU 0x0400 /* input to shifter */
|
||
#define EGC_SHIFT_VRAM 0x0000 /* cpu write, vram read */
|
||
#define EGC_RL_MEMWRITE 0x0200 /* RL = pattern Register Load */
|
||
#define EGC_RL_MEMREAD 0x0100 /* ^at mem write, <-at mem read */
|
||
#define EGC_RL_NONE 0x0000 /* no touch */
|
||
|
||
#define GDC_PSET 0x000
|
||
#define GDC_XOR 0x100
|
||
#define GDC_AND 0x200
|
||
#define GDC_OR 0x300
|
||
|
||
#define GRAM_400 0xa800
|
||
#define GRAM_200A 0xa800
|
||
#define GRAM_200B 0xabe8
|
||
#endif
|
||
|
||
|
||
typedef struct Point3D Point3D ;
|
||
struct Point3D {
|
||
int x, y, z ;
|
||
} ;
|
||
|
||
typedef struct Rotate3D Rotate3D ;
|
||
struct Rotate3D {
|
||
int rx, ry, rz ;
|
||
} ;
|
||
|
||
extern const int ClipXL,ClipXW,ClipXR, ClipYT,ClipYH,ClipYB ;
|
||
extern const int ClipZH,ClipZD,ClipZY ;
|
||
extern unsigned ClipYT_seg, ClipYB_adr ;
|
||
extern unsigned near trapez_a[], near trapez_b[] ;
|
||
extern const long SolidTile[16] ;
|
||
|
||
extern unsigned GDC_LineStyle ;
|
||
#if MASTER98
|
||
extern int GDCUsed ;
|
||
extern int GDC_Color, GDC_AccessMask ;
|
||
#endif
|
||
|
||
#if MASTER98
|
||
# ifdef grcg_off
|
||
# undef grcg_off /* 関数定義をするので、変換されるとまずい */
|
||
# endif
|
||
#endif
|
||
|
||
/* 設定 */
|
||
int MASTER_RET grc_setclip( int xl, int yt, int xr, int yb );
|
||
#define grc_setGRamStart(s) (graph_VramSeg = (s))
|
||
|
||
void MASTER_RET c_make_linework( void near * trapez, int xt, int xb, int ylen );
|
||
/* 多角形 */
|
||
int MASTER_RET grc_clip_polygon_n( Point MASTER_PTR * dest, int ndest,
|
||
const Point MASTER_PTR * src, int nsrc );
|
||
/* 直線 */
|
||
int MASTER_RET grc_clip_line( Point MASTER_PTR * p1, Point MASTER_PTR * p2 );
|
||
|
||
#if MASTER98
|
||
void MASTER_RET c_draw_trapezoid( unsigned y, unsigned y2 );
|
||
void MASTER_RET c_draw_trapezoidx( unsigned y, unsigned y2 );
|
||
|
||
void MASTER_RET grcg_setcolor( int mode, int color );
|
||
void MASTER_RET grcg_settile_1line( int mode, long tile );
|
||
void MASTER_RET grcg_and( int mode, int color );
|
||
void MASTER_RET grcg_or( int mode, int color );
|
||
void MASTER_RET grcg_off(void);
|
||
# define grcg_setmode(mode) OUTB(0x7c,mode)
|
||
# if GAME < 2
|
||
# define grcg_off() OUTB(0x7c,0)
|
||
# endif
|
||
|
||
/* EGC */
|
||
void MASTER_RET egc_on(void);
|
||
void MASTER_RET egc_off(void);
|
||
void MASTER_RET egc_start(void);
|
||
void MASTER_RET egc_end(void);
|
||
|
||
#define egc_setfgcolor(color) OUTW(EGC_FGCOLORREG,color)
|
||
#define egc_setbgcolor(color) OUTW(EGC_BGCOLORREG,color)
|
||
#define egc_selectfg() OUTW(EGC_READPLANEREG,0x40ff)
|
||
#define egc_selectbg() OUTW(EGC_READPLANEREG,0x20ff)
|
||
#define egc_selectpat() OUTW(EGC_READPLANEREG,0x00ff)
|
||
#define egc_setrop(mode_rop) OUTW(EGC_MODE_ROP_REG,mode_rop)
|
||
#define has_egc() (*((char far *)0x0000054dL) & 0x40)
|
||
|
||
/* GDC */
|
||
void MASTER_RET gdc_wait(void);
|
||
void MASTER_RET gdc_waitempty(void);
|
||
void MASTER_RET gdc_line( int x1,int y1,int x2,int y2 );
|
||
void MASTER_RET gdc_circle( int x, int y, unsigned r );
|
||
#define gdc_setlinestyle(style) (GDC_LineStyle = (style))
|
||
#define gdc_setcolor(color) (GDC_Color = (color))
|
||
#define gdc_setaccessplane(plane) (GDC_AccessMask = (plane))
|
||
|
||
/* 台形 */
|
||
void MASTER_RET grcg_trapezoid ( int y1, int x11, int x12,
|
||
int y2, int x21, int x22 );
|
||
|
||
/* 多角形 */
|
||
void MASTER_RET grcg_polygon_c( const Point MASTER_PTR * pts, int npoint );
|
||
void MASTER_RET grcg_polygon_cx( const Point MASTER_PTR * pts, int npoint );
|
||
void grcg_polygon_vcx( int npoint, int x1, int y1, ... );
|
||
|
||
/* 三角形 */
|
||
void MASTER_RET grcg_triangle( int x1,int y1, int x2,int y2, int x3,int y3 );
|
||
void MASTER_RET grcg_triangle_x( const Point MASTER_PTR * pts );
|
||
|
||
/* 直線 */
|
||
void MASTER_RET grcg_hline( int x1, int x2, int y );
|
||
void MASTER_RET grcg_vline( int x, int y1, int y2 );
|
||
void MASTER_RET grcg_line( int x1, int y1, int x2, int y2 );
|
||
void MASTER_RET grcg_thick_line( int x1, int y1, int x2, int y2,
|
||
unsigned wid, unsigned hei );
|
||
|
||
/* 四角形塗りつぶし */
|
||
void MASTER_RET grcg_boxfill( int x1, int y1, int x2, int y2 );
|
||
void MASTER_RET grcg_pset( int x, int y );
|
||
void MASTER_RET grcg_fill(void);
|
||
void MASTER_RET grcg_round_boxfill( int x1, int y1, int x2, int y2, unsigned r );
|
||
|
||
/* 円描画 */
|
||
void MASTER_RET grcg_circle( int x, int y, unsigned r );
|
||
void MASTER_RET grcg_circle_x( int x, int y, unsigned r );
|
||
void MASTER_RET grcg_circlefill( int x, int y, unsigned r );
|
||
|
||
/* 8dot単位の箱塗り */
|
||
void MASTER_RET grcg_byteboxfill_x( int x1, int y1, int x2, int y2 );
|
||
void MASTER_RET grcg_bytemesh_x( int x1, int y1, int x2, int y2 );
|
||
|
||
#endif
|
||
|
||
|
||
/* VGA16色グラフィック処理 -------------------------------------------------*/
|
||
/* "vgapoly"
|
||
* (c)恋塚, あら
|
||
*/
|
||
|
||
#if MASTERV
|
||
|
||
#define VGA_PSET 0x00f0
|
||
#define VGA_AND 0x08f0
|
||
#define VGA_OR 0x10f0
|
||
#define VGA_XOR 0x18f0
|
||
|
||
void MASTER_RET vgc_setcolor(int mask,int color);
|
||
void MASTER_RET vgc_hline(int x1,int x2,int y);
|
||
void MASTER_RET vgc_vline(int x,int y1,int y2);
|
||
void MASTER_RET vgc_line(int x1,int y1,int x2,int y2);
|
||
void MASTER_RET vgc_line2(int x1,int y1,int x2,int y2,unsigned lstyle);
|
||
void MASTER_RET vgc_thick_line( int x1, int y1, int x2, int y2, unsigned wid, unsigned hei );
|
||
void MASTER_RET vgc_boxfill(int x1,int y1,int x2,int y2);
|
||
void MASTER_RET vgc_pset(int x,int y);
|
||
void MASTER_RET vgc_round_boxfill( int x1, int y1, int x2, int y2, unsigned r );
|
||
void MASTER_RET vgc_trapezoid( int y1, int x11, int x12, int y2, int x21, int x22 );
|
||
void MASTER_RET vgc_polygon_c( const Point MASTER_PTR * pts, int npoint );
|
||
void MASTER_RET vgc_polygon_cx( const Point MASTER_PTR * pts, int npoint );
|
||
void vgc_polygon_vcx( int npoint, int x1, int y1, ... );
|
||
void MASTER_RET vgc_triangle( int x1,int y1, int x2,int y2, int x3,int y3 );
|
||
void MASTER_RET vgc_circle_x( int x, int y, int r );
|
||
void MASTER_RET vgc_circle( int x, int y, int r );
|
||
void MASTER_RET vgc_circlefill( int x, int y, int r );
|
||
void MASTER_RET vgc_byteboxfill_x(int x1,int y1,int x2,int y2);
|
||
void MASTER_RET vgc_byteboxfill_x_pset(int x1,int y1,int x2,int y2);
|
||
void MASTER_RET vgc_bytemesh_x(int x1,int y1,int x2,int y2);
|
||
|
||
void MASTER_RET vgc_font_puts(int x, int y, int step, const char MASTER_PTR * str );
|
||
void MASTER_RET vgc_font_put(int x, int y, const char MASTER_PTR * str );
|
||
|
||
void MASTER_RET vgc_bfnt_puts(int x, int y, int step, const char MASTER_PTR * str );
|
||
void MASTER_RET vgc_bfnt_putc(int x, int y, int ank );
|
||
void MASTER_RET vgc_kanji_puts(int x, int y, int step, const char MASTER_PTR * kanji );
|
||
void MASTER_RET vgc_kanji_putc(int x, int y, unsigned kanji );
|
||
|
||
#define VGA_PORT 0x03ce
|
||
#define VGA_SET_RESET_REG 0 /* setcolor */
|
||
#define VGA_ENABLE_SR_REG 1
|
||
#define VGA_COLOR_CMP_REG 2
|
||
#define VGA_DATA_ROT_REG 3 /* setcolor */
|
||
#define VGA_READPLANE_REG 4 /* ←readplaneは下位2bitにプレーン番号を書く */
|
||
#define VGA_MODE_REG 5 /* setcolorでVGA_CHARに設定される */
|
||
#define VGA_MULTI_REG 6 /* setcolorでVGA_CHARに設定される */
|
||
#define VGA_DISABLECMP 7 /* setcolorでVGA_CHARに設定される */
|
||
#define VGA_BITMASK_REG 8 /* setcolorで0ffhに設定される */
|
||
|
||
/* VGA_MODE_REGレジスタに設定する内容 */
|
||
|
||
#define VGA_READPLANE 0 /* readmap選択regの場所をそのまま読む */
|
||
#define VGA_COMPARE 8 /* 読み込み時色比較レジスタと一致したらbit on */
|
||
|
||
#define VGA_NORMAL 0 /* GCのモード */
|
||
#define VGA_LATCH 1
|
||
#define VGA_FILL 2
|
||
#define VGA_CHAR 3
|
||
|
||
#if !MASTER98
|
||
|
||
#define GC_RMW 0
|
||
#define GC_OFF 0
|
||
|
||
#define grcg_or(m,col) vgc_setcolor((m) | VGA_OR,(col))
|
||
#define grcg_and(m,col) vgc_setcolor((m) | VGA_AND,(col))
|
||
#define grcg_settile_1line(m,l) /* むむっ */
|
||
#define grcg_setcolor(m,col) vgc_setcolor((m) | VGA_PSET,(col))
|
||
#define grcg_off() (void)0/* 消す */
|
||
|
||
#define grcg_trapezoid(y1,x11,x12,y2,x21,x22) vgc_trapezoid(y1,x11,x12,y2,x21,x22)
|
||
#define grcg_polygon_c(pts,np) vgc_polygon_c(pts,np)
|
||
#define grcg_polygon_cx(pts,np) vgc_polygon_cx(pts,np)
|
||
#define grcg_polygon_vcx vgc_polygon_vcx
|
||
|
||
#define grcg_triangle(x1,y1,x2,y2,x3,y3) vgc_triangle(x1,y1,x2,y2,x3,y3)
|
||
#define grcg_triangle_x(pts) vgc_polygon_cx(pts,3) /* ? */
|
||
|
||
#define grcg_hline(x1,x2,y) vgc_hline(x1,x2,y)
|
||
#define grcg_vline(x,y1,y2) vgc_vline(x,y1,y2)
|
||
#define grcg_line(x1,y1,x2,y2) vgc_line(x1,y1,x2,y2)
|
||
#define grcg_thick_line(x1,y1,x2,y2,wid,hei) vgc_thick_line(x1,y1,x2,y2,wid,hei)
|
||
#define grcg_boxfill(x1,y1,x2,y2) vgc_boxfill(x1,y1,x2,y2)
|
||
#define grcg_pset(x,y) vgc_pset(x,y)
|
||
#define grcg_fill() vgc_boxfill(ClipXL,ClipYT,ClipXR,ClipYB) /* ? */
|
||
#define grcg_round_boxfill(x1,y1,x2,y2,r) vgc_round_boxfill(x1,y1,x2,y2,r)
|
||
|
||
#define grcg_circle(x,y,r) vgc_circle(x,y,r)
|
||
#define grcg_circle_x(x,y,r) vgc_circle_x(x,y,r)
|
||
#define grcg_circlefill(x,y,r) vgc_circlefill(x,y,r)
|
||
|
||
#define grcg_byteboxfill_x(x1,y1,x2,y2) vgc_byteboxfill_x_pset(x1,y1,x2,y2)
|
||
#define grcg_bytemesh_x(x1,y1,x2,y2) vgc_bytemesh_x(x1,y1,x2,y2)
|
||
|
||
#define GDC_PSET VGA_PSET
|
||
#define GDC_XOR VGA_XOR
|
||
#define GDC_AND VGA_AND
|
||
#define GDC_OR VGA_OR
|
||
|
||
#define SEQ_PORT 0x3c4
|
||
#define SEQ_MAP_MASK_REG 2
|
||
|
||
#define gdc_waitempty() (void)0
|
||
#define gdc_wait() (void)0
|
||
#define gdc_line(x1,y1,x2,y2) vgc_line2(x1,y1,x2,y2,GDC_LineStyle)
|
||
#define gdc_circle(x,y,r) vgc_circle(x,y,r)
|
||
#define gdc_setlinestyle(style) (GDC_LineStyle = (style))
|
||
#define gdc_setcolor(color) vgc_setcolor((color) & ~15, (color)&15)
|
||
#define gdc_setaccessplane(plane) OUTW(SEQ_PORT,SEQ_MAP_MASK_REG|(((~(plane))&15)<<8))
|
||
|
||
|
||
#define GRAM_400 0xa000
|
||
#define GRAM_200A 0xa000
|
||
#define GRAM_200B 0xa3e8 /* ? */
|
||
|
||
#endif
|
||
|
||
#endif
|
||
|
||
/* BEEP音による演奏処理 ----------------------------------------------------*/
|
||
/* 出典: bgmlib.h (C) femy, steelman
|
||
*/
|
||
|
||
#define BGM_STAT_PLAY 1 /* リターンコード */
|
||
#define BGM_STAT_MUTE 0
|
||
#define BGM_STAT_REPT 1
|
||
#define BGM_STAT_1TIM 0
|
||
#define BGM_STAT_ON 1
|
||
#define BGM_STAT_OFF 0
|
||
|
||
#define BGM_MES_ON 1 /* パラメータ */
|
||
#define BGM_MES_OFF 0
|
||
#define BGM_MUSIC 1
|
||
#define BGM_SOUND 2
|
||
|
||
#define BGM_COMPLETE NoError /* エラーナンバー */
|
||
#define BGM_FILE_ERR FileNotFound
|
||
#define BGM_FORMAT_ERR InvalidFormat
|
||
#define BGM_OVERFLOW InsufficientMemory
|
||
#define BGM_TOOMANY InvalidData
|
||
#define BGM_NO_MUSIC InvalidData
|
||
#define BGM_NOT_PLAY GeneralFailure
|
||
#define BGM_NOT_STOP GeneralFailure
|
||
#define BGM_EXTENT_ERR InvalidData
|
||
|
||
#define BGM_PART_MAX 3
|
||
#define BGM_SOUND_MAX 16
|
||
#define BGM_MUSIC_MAX 16
|
||
|
||
typedef struct BSTAT BSTAT ; /* ステータス構造体 */
|
||
struct BSTAT {
|
||
int music; /* 演奏処理 ON/OFF */
|
||
int sound; /* 効果音処理 ON/OFF */
|
||
int play; /* 演奏中か否か */
|
||
int effect; /* 効果音出力中か否か */
|
||
int repeat; /* リピート演奏か否か */
|
||
int mnum; /* 登録曲数 */
|
||
int rnum; /* セレクト中曲番号 */
|
||
int tempo; /* 現在のテンポ */
|
||
int snum; /* 登録効果音数 */
|
||
int fnum; /* セレクト中効果音番号 */
|
||
} ;
|
||
|
||
typedef struct BGM_GLB BGM_GLB;
|
||
struct BGM_GLB { /* グローバルデータ構造体 */
|
||
int imr; /* インターラプト・マスク・レジスタ */
|
||
unsigned int tval; /* タイマ設定値 */
|
||
int tp; /* テンポ */
|
||
int rflg; /* BGM ON/OFF */
|
||
int pnum; /* パート数 */
|
||
int pcnt; /* パートカウンタ */
|
||
int fin; /* パート終了フラグ */
|
||
int rep; /* リピート ON/OFF */
|
||
int tcnt; /* 処理カウンタ(4回に 1回処理 */
|
||
int bufsiz; /* 楽譜バッファのサイズ */
|
||
int buflast; /* 楽譜バッファのラスト */
|
||
int mnum; /* 登録曲数 */
|
||
int mcnt; /* セレクト中曲番号 */
|
||
int track[BGM_MUSIC_MAX]; /* 曲のトラックナンバー */
|
||
int mask; /* パートマスク情報 */
|
||
int mtp[BGM_MUSIC_MAX]; /* 曲ごとのテンポ情報 */
|
||
int effect; /* 効果音 ON/OFF */
|
||
int snum; /* 登録効果音数 */
|
||
int scnt; /* セレクト中効果音番号 */
|
||
int music; /* 演奏処理 ON/OFF */
|
||
int sound; /* 効果音処理 ON/OFF */
|
||
int init; /* イニシャライズ実行フラグ */
|
||
unsigned long clockbase; /* tempo120時のタイマカウント */
|
||
};
|
||
|
||
typedef struct BGM_PART BGM_PART;
|
||
struct BGM_PART { /* パート構造体 */
|
||
unsigned char far *ptr; /* 楽譜ポインタ */
|
||
unsigned char far *mbuf; /* 楽譜バッファ */
|
||
char note; /* 現在の音符 */
|
||
char _dummy;
|
||
int oct; /* 現在のオクターブ */
|
||
int len; /* 現在の音長 */
|
||
int dflen; /* デフォルトの音長 */
|
||
int lcnt; /* 音長カウンタ */
|
||
int mask; /* パートマスク ON/OFF */
|
||
int tnt; /* テヌート ON/OFF */
|
||
};
|
||
|
||
typedef struct BGM_ESOUND BGM_ESOUND;
|
||
struct BGM_ESOUND { /* 効果音構造体 */
|
||
unsigned int far *sptr; /* 効果音データポインタ */
|
||
unsigned int far *sbuf; /* 効果音データバッファ */
|
||
};
|
||
|
||
extern BGM_GLB bgm_glb;
|
||
extern BGM_PART bgm_part[BGM_PART_MAX];
|
||
extern BGM_ESOUND bgm_esound[BGM_SOUND_MAX];
|
||
|
||
int MASTER_RET bgm_init(int bufsiz);
|
||
void MASTER_RET bgm_finish(void);
|
||
#define bgm_start(b) bgm_init(b)
|
||
#define bgm_end() bgm_finish()
|
||
|
||
int MASTER_RET bgm_read_data(const char MASTER_PTR *fname, int tempo, int mes);
|
||
|
||
int MASTER_RET bgm_select_music(int num);
|
||
int MASTER_RET bgm_start_play(void);
|
||
int MASTER_RET bgm_stop_play(void);
|
||
int MASTER_RET bgm_cont_play(void);
|
||
int MASTER_RET bgm_wait_play(void);
|
||
int MASTER_RET bgm_read_sdata(const char MASTER_PTR *fname);
|
||
int MASTER_RET bgm_sound(int num);
|
||
int MASTER_RET bgm_stop_sound(void);
|
||
int MASTER_RET bgm_wait_sound(void);
|
||
void MASTER_RET bgm_repeat_on(void);
|
||
void MASTER_RET bgm_repeat_off(void);
|
||
int MASTER_RET bgm_set_tempo(int tempo);
|
||
void MASTER_RET bgm_set_mode(int mode);
|
||
void MASTER_RET bgm_read_status(BSTAT MASTER_PTR *bsp);
|
||
|
||
|
||
/* 日本語FEP制御 -----------------------------------------------------------*/
|
||
|
||
#define FEP_IAS 1 /* fep_exist() */
|
||
#define FEP_MSKANJI 2 /* fep_exist() */
|
||
|
||
int MASTER_RET fep_exist(void);
|
||
int MASTER_RET fep_shown(void);
|
||
void MASTER_RET fep_show(void);
|
||
void MASTER_RET fep_hide(void);
|
||
|
||
|
||
/* 数値計算関連 ------------------------------------------------------------*/
|
||
extern const short SinTable8[256], CosTable8[256] ;
|
||
extern const char AtanTable8[256] ;
|
||
extern const short SinTableDeg[360], CosTableDeg[360] ;
|
||
extern const char AtanTableDeg[360] ;
|
||
extern long random_seed ;
|
||
|
||
#define Sin8(t) SinTable8[(t) & 0xff]
|
||
#define Cos8(t) CosTable8[(t) & 0xff]
|
||
#define Atan8(t) AtanTable8[t]
|
||
|
||
#define SinDeg(t) (SinTableDeg[t])
|
||
#define CosDeg(t) (CosTableDeg[t])
|
||
#define AtanDeg(t) (AtanTableDeg[t])
|
||
|
||
int MASTER_RET iatan2( int y, int x );
|
||
int MASTER_RET iatan2deg( int y, int x );
|
||
int MASTER_RET isqrt( long x );
|
||
int MASTER_RET ihypot( int x, int y );
|
||
|
||
#define irand_init(seed) (random_seed = (seed))
|
||
int MASTER_RET irand(void);
|
||
|
||
#define srand(s) irand_init(s)
|
||
#define rand() irand()
|
||
|
||
/* パックファイル処理 ------------------------------------------------------*/
|
||
/* 出典: pf.h (C) iR, alty
|
||
*/
|
||
#define __PF_H
|
||
|
||
typedef unsigned bf_t; /* BFILE構造体のセグメント */
|
||
typedef unsigned pf_t; /* PFILE構造体のセグメント */
|
||
|
||
/* エラー情報 */
|
||
extern enum pferr {
|
||
PFEZERO, /* 初期値 */
|
||
PFENOTOPEN, /* ファイルをオープンできない */
|
||
PFENOTFOUND, /* ファイルがパックファイル中にない */
|
||
PFENOMEM, /* メモリを確保できない */
|
||
PFERESERVE0, /* 予約 */
|
||
PFEUNKNOWN, /* 圧縮タイプが不正 */
|
||
#define PFEILTYPE PFEUNKNOWN
|
||
PFEILPFILE, /* パックファイルがpar形式でない */
|
||
PFEILEXE, /* EXEファイルが不正 */
|
||
PFEINTERNAL = 0xff /* 内部エラー */
|
||
} pferrno;
|
||
|
||
extern unsigned bbufsiz; /* バッファサイズ */
|
||
#define BBUFSIZ 512
|
||
#define pfbufsiz bbufsiz
|
||
|
||
extern unsigned char pfkey; /* 復号化キー */
|
||
|
||
bf_t MASTER_RET bopenr(const char *fname);
|
||
void MASTER_RET bcloser(bf_t bf);
|
||
int MASTER_RET bgetc(bf_t bf);
|
||
int MASTER_RET bread(void MASTER_PTR *buf, int size, bf_t bf);
|
||
int MASTER_RET bseek(bf_t bf, long offset);
|
||
int MASTER_RET bseek_(bf_t bf, long offset, int whence);
|
||
bf_t MASTER_RET bopenw(const char MASTER_PTR *fname);
|
||
void MASTER_RET bclosew(bf_t bf);
|
||
int MASTER_RET bputc(int c, bf_t bf);
|
||
int MASTER_RET bputw(int w, bf_t bf);
|
||
int MASTER_RET bputs(const char MASTER_PTR *s, bf_t bf);
|
||
int MASTER_RET bwrite(const void MASTER_PTR *buf, int size, bf_t bf);
|
||
int MASTER_RET bflush(bf_t bf);
|
||
bf_t MASTER_RET bdopen(int handle);
|
||
#define bdopenr bdopen
|
||
#define bdopenw bdopen
|
||
#define bsetbufsiz(bufsiz) (bbufsiz = (bufsiz))
|
||
|
||
pf_t MASTER_RET pfopen(const char MASTER_PTR *parfile, const char far *file);
|
||
#define pfopenr pfopen
|
||
void MASTER_RET pfclose(pf_t pf);
|
||
#define pfcloser pfclose
|
||
int MASTER_RET pfgetc(pf_t pf);
|
||
int MASTER_RET pfgetw(pf_t pf);
|
||
unsigned MASTER_RET pfread(void far *buf, unsigned size, pf_t pf);
|
||
unsigned long MASTER_RET pfseek(pf_t pf, unsigned long offset);
|
||
#define pftell(pf) pfseek(pf,0)
|
||
void MASTER_RET pfrewind(pf_t pf);
|
||
#define pfsetbufsiz(bufsiz) bsetbufsiz(bufsiz)
|
||
void MASTER_RET pfstart(const char MASTER_PTR *parfile);
|
||
void MASTER_RET pfend(void);
|
||
#define pfinit pfstart
|
||
#define pfterm pfend
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|