110gc -- DataScope Graphics Component
Copyright (C) 1997 Zoroyoshi
(Free software; see the GNU Library General Public License)

Version 1 リリースノート

はじめに

このプログラムは、京セラのDataScope DS110用の、 グラフィックライブラリです。 主にDS110上のゲームを開発するために作成されており、 領域付きのbitblt、つまり、ピクセル単位のビットマップコピーを提供します。

このソフトウェアは、GNU Library General Public License に従い 再配布や改変が可能な無保証のフリーソフトウェアです。 詳しくは同包してあるファイル gnu-lgpl.txt を参照してください。

改定履歴とソフトウェアのダウンロード

1997-05-01 begin
作成開始。
1997-12-01 Version 1 (110gc1.lzh、163K、ソースとドキュメントとサンプルを含む)
とりあえず公開。

必要なもの

京セラ データスコープ DS110
DS320やAI15では、そのままでは動作しません。 機種依存部分の書換えが必要となります。
DS110 OS (DS110OS.S24) バージョン 2.1 (97-6-20版) 以降
動作確認は、2.1 (97-6-20版)、2.1b (97-6-27版)、3.0β (97-9-19版)、 3.0 (97-12-8版) の 4つのバージョンで行なっています。 これ以降のバージョンでも、ライブラリ内部でOSの解析を行なっているため、 OSの軽微な変更には対応します。
DS110開発キット
実際のDS110用アプリケーションの開発、及び、ライブラリの再作成に必要です。 なお、このライブラリは開発キット付属のエミュレータには対応しておりません。
NMAKE.EXE
ライブラリの再作成などはNMAKEを使用して行ないます。 できればDevStudio付属のバージョンがいいのですが、古くてもたぶん動作します。
MSCコンパイラ (Ver5.0など DOSプログラム作成が可能なもの)
DOS上で動作するサポートプログラムを再作成する場合に必要になります。
DS110開発キットを動作させるためのマシン環境
つまり、PCMCIAスロットを備えたWindows95マシンが必要です。
ドキュメントを見るためのWebブラウザ
…これを見ているなら大丈夫。

機能概要

このグラフィックスライブラリでは、領域付きのbitbltを提供します。 bitbltというのは、ビットブロック転送のことで、 画面上のビットマップをスクロールしたり、 メモリ上のビットマップを画面コピーしたりというような、 画面表示に関する処理を行ないます。

このグラフィックスライブラリでは、単なる矩形範囲のbitbltではなく、 領域のコピーを行なうことができます。 領域とは、複数の矩形で定義されており、 これにより、丸い形にコピーしたり、あるいは、 前面にあるウィンドウを避けて描画する、といったことができます。

110gcには、単なるコピーの他、 対象ビットマップとのandなどの各種演算コピー、 領域のパターン塗りつぶしなども行なうことができます。 また、領域同士を演算するルーチン、 可変長データである領域を扱うためのメモリ管理ルーチンも用意されています。

ただし、一般に思われるようなグラフィックライブラリの機能、 つまり、ななめの線を引いたり、円を描いたりすることはできません。 また、現在のバージョンでは、文字の出力を行なう機能もありません。

ファイル構成

readme.txt
全体の説明ファイルです。
gnu-lgpl.txt
再配布及び改変条件等を記述したテキストファイルです。
doc\
ドキュメントがhtml形式で格納されています。
doc\index.htm
ドキュメントのトップページ、このファイルです。
gc.h
110gcのヘッダファイルです。
gc.lib
110gcのライブラリです。
makefile
ライブラリを再作成するためのメイクファイルです。
app\ heap\ rgn\ bit\
ライブラリのソースファイル群です。
gcconv\
DOS上で動作するコンバータのソースファイルと本体です。
gcconv\gcconv.exe
コンバータの実行ファイルです。
potapota\
サンプルプログラムのソースファイルと.S24ファイルです。

ライブラリの使い方

ライブラリを使う時に必要なのは、トップティレクトリにある gc.h と gc.lib、 及び、ビットマップファイルを110gcでの形式に変換するための、 gcconv\gcconv.exe だけです。

gc.h は、ソースファイルにインクルードして使います。 gc.h 自体は、他に何もインクルードしませんので、 好きなディレクトリに置くことができます。 開発キットの標準インクルードディレクトリ %THOME%\include に置くのもよい考えです。

gc.lib は、ライブラリとして、tulink のコマンドファイルに指定します。 アプリケーション開発の作業ディレクトリ、あるいは、 開発キットの標準ライブラリディレクトリ %THOME%\lib に置いてください。

gcconv.exeは、Windowsのビットマップファイルを、 110gcで用いるビットマップあるいは領域データ形式へ変換するためのツールです。 コマンドパスが通った場所に置いてください。

ライブラリの説明

ユーザーズガイド
ユーザーズガイドです。110gcの概要を解説しています。
gcApp クラス リファレンス
アプリケーションコンテキストを管理します。
gcHeap クラス リファレンス
ヒープメモリを管理します。
gcObj クラス リファレンス
gcHeapのラップ関数群で、オブジェクトを管理します。
gcRgn クラス リファレンス
描画領域の演算を行ないます。
gcBit クラス リファレンス
ビットマップの描画を行ないます。
使用上の補足
110gcライブラリ使用上の補足事項の説明です。
Inside 110gc
まだ書いてません(^^; ホームページで公開予定だけど、うーん、面倒だなぁ。

ライブラリの再作成

トップディレクトリへ移動して、nmakeを実行してください。 各サブディレクトリ app、heap、rgn、bit のライブラリを作成した後、 自動的にそれらをまとめて gc.lib を更新します。

実行前に、開発キットの環境変数 THOME 及び THOME900 のセット、及び、 開発キットの実行プログラムへの PATH をセットしておいてください。 さらに、環境変数 DOS4G=quiet とセットしておくと、 うっとおしいメッセージが抑制されます。

ツール gcconv

gcconv.exeは、DOS上で動作するツールであり、 gcconv は、唯一つの引数として C テンプレートファイルのファイル名を取ります。 Cテンプレートファイル (拡張子.cgc) には、通常のCコードの中に、 ビットマップファイルを埋め込むための指示が記述されており、 gcconv は、この指示に従いビットマップファイルを読み込み、 110gcで扱えるビットマップデータや領域データを生成し、 C言語のソースファイル (拡張子.c) に書き出します。 詳しくはこちらをどうぞ。

gcconv自体のソースファイルはgcconvの中のgcconv.cだけですので、 MSC5.0なら、cl gcconv.c のようにして再作成して下さい。 特にMSC依存部分はありませんので (stricmp/strincmpぐらいかな?)、 他のコンパイラでも大丈夫だと思います。

サンプル「ぽたぽた」

ディレクトリ potapota\ に、サンプルプログラムが置いてあります。 ライブラリの使い方のサンプル、というよりは、 私自身が領域関連の動作チェックに使用したものですので、 あんまり参考になりませんね。 サンプルプログラムの操作は何もありません、見てるだけ、 いわゆる古典なプログラムです。 プログラムについて詳しくはこちらへどうぞ。

再作成には、ディレクトリ potapota\ に移動し、 DS110開発キット用の環境変数を整えた後、 nmakeを実行してください。 ここで作成される.S24ファイルは、 AppLoader1.0以前でDSX形式に変換することはできません。 変換しようとするとディスク領域を食い潰すので注意してください。 これは、.ABSから.S24へ変換する際に手抜きで実行しているからです。 AppLoader1.1以降に付属の S24toDSX を使用するか、 手抜きでないように.ABS から .S24 を作ってから、S24toDSXにかけてください。

手抜きのS24ファイルでも変換できるバージョンを小田桐さんにいただきました。 こちらからダウンロードできます。

よくある質問とその回答

Q. えーと、 このプログラムはどうやれば僕のDS110にインストールできるのですか?

A. このソフトウェアは単独で動作するようなものじゃございません。 DS110のプログラム作成をしない人には全く無意味です。 グラフィックライブラリとは、 画面に絵を描くためのサブルーチンであり、 他のプログラムから呼び出されて動作します。 WindowsのGDIルーチン群とか、MacOSのQuickDrawとかに相当します。 んじゃそのレベルのライブラリなんだ、というと、 全くそのレベルには届いておりませぬ。

Q. gnu-lgpl.txtを読むのが面倒なんですけど、しかも英語だし。

A. 読むのが面倒だって? ほんとに面倒だよ、まったく。 ←アメリカ流ツッコミ。
110gcのソースコードを改変しないでリンクして使う限りは、 出来上がったゲーム等のドキュメントのどっかに、 「フリーライブラリの 110gc を使ってます」 ぐらいでいいんじゃないの?
作ったゲームのソースコードを公開する必要もないし、 そのゲームをシェアウェアとして販売するもよし。

Q. 確か97年8月末には完成予定じゃなかったの? 開発に時間がかかりすぎでは?

アセンブラとかで組み始めると1クロックを節約するのが なんだか楽しみになってしまって、よくないですね。 メモリを詰め直すルーチンなんて、 C言語版は動作チェックを含めて1日しかかからなかったのに、 アセンブラに書き直されたのが5日後だしね。 実はアセンブラで書いたルーチンのうち半分はスピードに関係ない部分なんだけど、 なんだか意地になってる部分も大いにあります。

Q. グラフィックライブラリと呼ぶにはあまりに低機能では?

A. いや、さ、あのね、なんかDS110もうつまんなくなってきちゃって、 まあどうでもよくなっちゃったからさ、まあ完全版のイメージはあるんだけど、 そんなの完成するの待ってたらすげー時間がかかっちゃうからさ、 まあなんとか他の人に使ってもらえる部分が出来たから公開しただけでさ、 ええ、低機能のいいわけにしか聞こえないっていうかもしれないけどさ、 あ、カップ焼きそばにお湯入れっぱなしだった、やべーやべー … ぐずぐずだよ、あーあ。

Q. その割にはあんまり速くないのでは?

A. …いいの。いいの。使ってくれる人だけ使ってくれれば。 ふぃ〜ん。

連絡先

結構でかくなってしまったので、十分なバグチェックをしていません。 バグが見つかったり、あるいはソフトウェアに対する改善点などありましたら、
z@apps.atjp.jp (ぞろよし)
までよろしくお願いします。