-
「LIBRARY PUBLIC DOCUMENT MCLIB GRAPHIC」の版間の差分
提供: HI-TECH C for CP/M Fan WIKI(JP)
(ページの作成:「<strong> MSX-C Library下位互換ライブラリ MSX-Graphic function library By Tatsuhiko Syoji(Tatsu) 1999-2000 </strong> ==本ライブラリについて== 本ライ...」) |
(相違点なし)
|
2017年8月7日 (月) 19:24時点における最新版
MSX-C Library下位互換ライブラリ MSX-Graphic function library By Tatsuhiko Syoji(Tatsu) 1999-2000
本ライブラリについて
本ライブラリはMSX-C Libraryのうちグラフィックライブラリと互換性を持ったライブラリです。 ソースコードは完全に自由に使える事が確認されているソースコードで構成しています。 実装が面倒なくせに余り使わない関数は実装していないので。
構成ファイル
- .AS
- 本ライブラリのソースファイルです。
- GLIB.TXT
- このファイルです。
- GLIB.H
- 本ライブラリのヘッダファイルです。
アセンブル
MKGLIB.BATを実行すると本ライブラリのソースをコンパイルすることができます。 ライブラリファイルはLIBM.LIBというファイル名で生成されます。 あとはヘッダファイルのあるディレクトリにGLIB.Hを、ライブラリのあるディレクトリにライブラリファイルをコピーすればOKです。
関数リファレンス
- void ginit(void);
- グラフィックライブラリを初期化します。
- 以下の関数を使う前に1回コールする必要があります。
- void interlace(char mode);
- 画面をインターレースモードにするかどうか設定します。
- modeの値は次のようになっています。
0 | ノンインターレース |
1 | インターレース |
2 | ノンインターレースで奇数ページと偶数ページを交互に表示 |
3 | インターレースで奇数ページと偶数ページを合成表示 |
- 2,3を使う場合、表示ページは奇数ページに設定して下さい。
- void setrd(unsigned addr);
- VDPを読みこみモードに設定し、I/Oポートを利用してVRAMのaddr番地から読み込みを行えるようにします。
- 実際の読みこみはinvdp()関数で行います。
- char invdp(void);
- setrd()関数で設定したアドレスのVRAMからI/Oポートを利用して1バイト読みこみます。
- 読みこんだ後はアドレスカウンタがオートインクリメントされるので、連続して呼び出すことで、連続した範囲のVRAMの内容を読み込むことができます。
- void setwrt(unsigned addr);
- VDPを書きこみモードに設定し、I/Oポートを利用してVRAMのaddr番地から書き込みを行えるようにします。
- 実際の書きこみはoutvdp()関数で行います。
- void outvdp(unsigned char ch);
- setwrt()関数で設定したアドレスのVRAMからI/Oポートを利用して1バイトchを書きこみます。
- 書きこんだ後はアドレスカウンタがオートインクリメントされるので、連続して呼び出すことで、連続した範囲のVRAMに書き込むことができます。
- unsigned char vpeek(unsigned int addr);
- VRAMのアドレスaddrから1バイト読みこみます。
- 次のバイトからはinvdp()関数を利用して読み込むことができます。
- void vpoke(unsigned int addr,unsigned char ch);
- VRAMのアドレスaddrに1バイトchを書きこみます。
- 次のバイトからはoutvdp()関数を利用して書き込むことができます。
- void wrtvdp(char no,unsigned char val)
- VDPのno番レジスタに値valを書きこみます。
- SOLID Cのslib.irlとの互換性維持の為にvdpという関数名でも同じ関数を呼び出すことができます。
- unsigned char rdvdp(char no)
- VDPのコントロールレジスタレジスタno番の値を読み出します。
- VDPのコントロールレジスタ書きこみ時にワークエリアに保存した値を返すだけです。
- unsigned char rdvsts(char no)
- VDPのステータスレジスタno番の値を読み出します。
- SOLID Cのslib.irlとの互換性維持の為にvdpstatという関数名でも同じ関数を呼び出すことができます。
- void color(char fg,char bg,char bd);
- 前景色をfgに、背景色をbgに、周辺色をbdに設定します。
- 指定した値はそれぞれc_fore,c_back,c_bordに保存されます。
- void iniplt(void);
- パレットを初期化します。
- VRAMにはパレットデータを保存しません。
- void setplt(char no,unsigned int dat);
- パレット番号noのパレットを設定します。
- パレットはdatで設定します。
- bit 10-8が緑、bit 7-4が赤、bit 3-0が青の濃度になります。
- void inispr(char mode);
- スプライトをmode番のモードで初期化します。
- modeは次のものがあります。
0 | 8*8拡大なし |
1 | 8*8拡大あり |
2 | 16*16拡大なし |
3 | 16*16拡大あり |
4 | スプライト表示禁止(VDPコマンドの実行速度が上がります。) |
- unsigned int calpat(char num);
- num番のスプライトジェネレータテーブルのアドレスを返します。
- unsigned int calatr(char plane);
- plane番のスプライトプレーンのスプライトアトリビュートテーブルのアドレスを返します。
- void sprite(char no,void *data);
- no番のスプライトパターンをdataで指定します。
- void colspr(char plane,void *data);
- plane番のプレーンに表示されるスプライトの表示色を指定します。
- Screen 4以降で有効です。
- void putspr(char plane,int x,int y,char color,char pat);
- plane番のプレーンの座標(x,y)にpat番のパターンのスプライトを表示します。
- Screen 1-3ではcolorで表示色を指定します。
- スプライト関連関数のスプライト番号はBIOSやMSX-BASICと同様にスプライトサイズによる影響を受けません。
- void totext(void);
- 画面モードを直前のテキスト画面に戻します。
- グラフィックモードのまま終了するとDOSの文字出力が画面に出ないので、グラフィックモードを利用したプログラムを終了する際は必ず呼び出してください。
- void grpprt(char ch,char logop);
- グラフィック画面に文字chを表示します。
- screen 5以降ではlogopでロジカルオペレーションを指定できます。
- void glocate(int x,int y);
- grpprt()関数で文字を表示する座標を指定します。
- void setpg(char dp,char ap);
- screen 5以降で表示ページを設定します。
- dpには表示ページ番号、apにはアクティブページ(実際に描画を行うページ)番号を指定します。
- void fsetrd(char bit16,unsigned int bitf0);
- setrd()関数とは異なり、setpg()関数の指定を無視してVDPを読みこみモードに設定し、I/Oポートを利用して読み込みを行えるようにします。
- アドレス指定は、bit16をbit16で、bit15-0はbitf0で指定します。
- 実際の読みこみはinvdp()関数で行います。
- 本関数はMSX-C Libraryには存在しません。
- void fsetwt(char bit16,unsigned int bitf0);
- setwrt()関数とは異なり、setpg()関数の指定を無視してVDPを書きこみモードに設定し、I/Oポートを利用して書き込みを行えるようにします。
- アドレス指定は、bit16をbit16で、bit15-0はbitf0で指定します。
- 実際の読みこみはoutvdp()関数で行います。
- 本関数はMSX-C Libraryには存在しません。
- void lsetrd(unsigned long addr);
- setrd()関数とは異なり、setpg()関数の指定を無視してVDPを読みこみモードに設定し、I/Oポートを利用してVRAMのaddr番地から読み込みを行えるようにします。
- 実際の読みこみはinvdp()関数で行います。
- 本関数はMSX-C Libraryには存在しません。
- void lsetwt(unsigned long);
- setwrt()関数とは異なり、setpg()関数の指定を無視してVDPを書きこみモードに設定し、I/Oポートを利用してVRAMのaddr番地から書き込みを行えるようにします。
- 実際の読みこみはoutvdp()関数で行います。
- 本関数はMSX-C Libraryには存在しません。
- void vdpcom(void *dat);
- dat以降のメモリ内容をVDPレジスタ#32-#46の内容とみなしてVDPコマンドを実行します。
- 本関数はMSX-C Libraryには存在しません。
- 転送元のサイズが固定されている時に威力を発揮します。
;Copyright (c) 1999-2000 Tatsuhiko Syoji, Japan . All rights reserved. ; ;Redistribution and use in source and binary forms, with or without ;modification, are permitted provided that the following conditions are ;met: ; ;1 Redistributions of source code must retain the above copyright notice, ; this list of conditions and the following disclaimer as the first lines ; of this file unmodified. ; ;2 Redistributions in binary form must reproduce the above copyright ;notice, this list of conditions and the following disclaimer in the ;documentation and/or other materials provided with the distribution. ; ;THIS SOFTWARE IS PROVIDED BY Tatsuhiko Syoji ``AS IS AND ANY EXPRESS ;ORIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ; DISCLAIMED. IN NO EVENT SHALL Tatsuhiko Syoji BE LIABLE FOR ANY DIRECT, ; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ;(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ;SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ;HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ;STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ;IN ; ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;POSSIBILITY OF SUCH DAMAGE.