/*--------------------------------------------------------------------------- * 「画面取り込みライブラリ BMPSaver ver2.01」 * bmpsaver.lib (2000/07/19 - 2000/12/26) ver 2.01 * Copyright (c) 2000, Kazuhide Hatsuyama, All rights reserved. * mail : hat@lares.dti.ne.jp * HomePage: http://www.lares.dti.ne.jp/~hat/ *---------------------------------------------------------------------------*/ □ 概要 ワンダースワンの画面をBMPファイル形式で保存するためライブラリです。 自作したプログラムに組み込むことで、作品を公開する時の紹介用画像などを作成 することが出来ます。 /ram0 もしくは XMODEM通信 によって BMP 形式のファイルとして画面を出力します。 カラーにも対応。 ---------------------------------------------------------------------- □ ファイル構成 readme_lib.txt : 説明ファイル bmpsaver.lib : ライブラリ本体 bmpsaver.h : ヘッダーファイル src/ : ソースファイル群 sample/ : BMPSaverを使用したサンプルプログラム ---------------------------------------------------------------------- □ 関数 void bs_set_target(int target); ---- 取り込みの対象を指定 引数 KH_BS_SCREEN1, KH_BS_SCREEN2, KH_BS_SPRITE の論理和 (デフォルト値 KH_BS_SCREEN1 | KH_BS_SCREEN2 | KH_BS_SPRITE) void bs_sprite_set_range(int start, int count); ---- スプライトの範囲を指定 BIOSの sprite_set_range() と同様です。 void bs_save_screen(const char far *fn, int x, int y, int w, int h); ---- ファイル名、領域の左上座標、大きさを指定して画像を /ram0 に保存 void bsc_save_screen(const char far *fn, int x, int y, int w, int h); ---- カラー対応 void bs_save_screen_xmodem(const char far *fn, int x, int y, int w, int h); ---- XMODEM 版 void bsc_save_screen_xmodem(const char far *fn, int x, int y, int w, int h); ---- カラー対応、XMODEM版 ---------------------------------------------------------------------- □ 使い方 ===== 白黒 ram0 に保存する場合 ===== (1) bmpsaver.lib を ワンダーウィッチをインストールしたフォルダの中の   lib\ フォルダに置いてください。(デフォルトでは c:\WWitch\lib\) 次に、画像を取り込みたいプログラムのソースコードを修正。 (2) bmpsaver.hファイルをインクルード。   (bmpsaver.hはc:\WWitch\include\においておくのがいいかと思います。) #include "bmpsaver.h" (3) bs_set_target() 関数で取り込みの対象を指定する。省略可能。 bs_set_target(int target); target には次の値の論理和で指定。 KH_BS_SCREEN1 : スクリーン1 KH_BS_SCREEN2 : スクリーン2 KH_BS_SPRITE : スプライト (4) スプライトを取り込む場合には bs_sprite_set_range() 関数で   取り込むスプライト番号の範囲を指定する。   これは画面制御BIOS のsprite_set_range() 関数と同じ数値を指定すれば良い。   スプライトの数が多いほど、取り込み完了までに時間がかかります。 bs_sprite_set_range(int start, int count); (5) ソースコードの、画面を取り込みたい場面でbs_save_screen()関数を呼び出す。 bs_save_screen("filename", x, y, w, h); filename: 自由なファイル名 x, y: 取り込みたい矩形領域の左上座標(x[0,255], y[0,255]) w, h: 取り込みたい矩形領域のサイズ(x[1,256], y[1,256]) (6) コンパイル。   この際、lcc86に -l オプションを加えて bmpsaver.lib をリンクする。 例: lcc86 -o foo.bin foo.obj -lbmpsaver (7) 実行。画面の取り込みにはかなり時間がかかります。ひたすら待ちましょう。 処理中は右下(カラースワンは右上)のマークが点滅。 (8) /ram0/に 指定した名前でファイルができるので、PCに転送。 (9) mkfent -r filename.fx とコマンドラインで実行して、.fx を .bin ファイルに変換。 (9) filename.bmp.bin というファイルが出来るので、 拡張子を .bmp に変更する。 ===== 白黒 XMODEM でPCに送る場合 ===== /ram0 に保存する場合と (4) までは一緒。 (5) の bs_save_screen() を bsc_save_screen() に変更 実行すると右下(カラーは右上)のマークが点灯。PC側の応答を待ちます。 (1分ほど応答がないと、保存をあきらめます)この状態になったら、 PC側でXMODEMに対応した通信ソフトを使って(TeraTermとか) ファイルを受信してください。ちなみに TransMagic は使えませんので。 ===== カラー で保存する場合 ===== 上記の説明を、 bs_save_screen() −> bsc_save_screen() bs_save_screen_xmodem() −> bsc_save_screen_xmodem() に置き換えて使用してください。 bs_set_target() と bs_sprite_set_range() はそのまま。 ---------------------------------------------------------------------- □ 注意事項 本ソフトウェアはフリーソフトです。 善意の範囲で自由に使って頂いて構いません。 ただし、本ソフトウェアの使用によって生じたいかなる結果に対しても 当方は一切の保証・責任を持ちませんのであしからず。 改造、転載、再配布については一応、作者の許可をとってください。 ---------------------------------------------------------------------- □ 更新情報 2000/12/26 16色モードにおける透明色についての勘違いを修正(ver2.01) 2000/12/24 カラー正式版(ver2.00) 2000/12/16 透明色、ボーダーカラーのバグ修正。(ver2.00b2) 2000/12/13 構成大幅変更。 カラーライブラリベータ版に対応。XMODEM対応。(ver2.00b) 2000/11/03 ソースコード、readme.txt若干修正(ver 1.10) 2000/09/12 スプライトのクリッピング機能が常に有効となっていたので修正 スクロール機能を使った時のウインドウクリッピング処理が間違っていたので修正 2000/09/11 bs_set_target()の追加 画面からはみ出したスプライト、スクリーンのスクロールに正しく対応していなかったので修正 2000/07/29 スプライトの取得をちょっとだけ高速化 2000/07/23 パレットの番号、スクリーンが0-7、スプライトが8-15だと 思いこんでました。スクリーン0-15に修正。 2000/07/21 スプライトの色が正常に取得できないバグ修正 /ram0/ の空き容量が足りないとフリーズしてしまうバグを修正 2000/07/20 横幅が8の倍数以外で正常に記録できないバグを修正 サイズの小さいファイルを上書きしようとするとフリーズする現象を修正。 SCREEN1 が正常に取りこめないバグを修正 2000/07/19 とりあえず作成