diff --git a/doc/TECH.TXT b/doc/TECH.TXT index 37bd965..a747f55 100644 --- a/doc/TECH.TXT +++ b/doc/TECH.TXT @@ -84,7 +84,7 @@ 必要に応じてシナリオ内の変数に読み込みます。 f) リソースファイルは、マウスカーソルの形状とアニメーションマウスカーソルの - データを格納しています。これまで DARCROW でのみ使用されました。 + データを格納しています。これまで DARCROWS でのみ使用されました。 g) セーブデータは、システム管理情報と数値変数、文字列変数のすべてを含んだ 全セーブデータ(*.asd)と数値変数・文字列変数の一部を保存したデータの2種類が @@ -94,17 +94,17 @@ h) その他のデータの範疇に入るものとしては外字ファイルとデータファイルがあり ます。 外字ファイルは、PC9801の外字領域に16x16ドットのビットマップデータを並べた - もので、オリジナルの外字を表示させるのに加えて、98機種依存文字の吸収も目指 + もので、オリジナルの外字を表示させるのに加えて、PC98機種依存文字の吸収も目指 していたのですが、結局外字ファイルは「いけないかつみ先生」で使われたのみで、 SYSTEM35.EXE Version 2.x 以降ではサポートすらされなくなりました。また、機種 - 依存文字(まる文字やギリシャ数字など)はそれ以降のゲームでも機種存のコードで + 依存文字(まる文字やギリシャ数字など)はそれ以降のゲームでも機種依存のコードで 継続して使われています。SYSTEM 3.9 では再び外字のサポートが復活するようです。 データファイルは、基本的には、シナリオ変数を外部に保存したものと考える事 ができます。マップデータのようにあらかじめゲームに附属しているものもあれば、 ゲームの途中経過を記録するために、ファイルに書き出す事もあります。 - かえるにょぱにょーんのマップデータ等のように e)のデータファイルで代用できる - ものもあります。 + かえるにょ・ぱにょ〜んのマップデータ等のように e)のデータファイルで代用でき + るものもあります。 3. データファイル (.ald) のフォーマット @@ -143,15 +143,15 @@ data そのものについても、ヘッダと実データに分ける事が出来ます。ヘッダは 32バイト以上の長さで次のようになっています。 - int32 prt; + int32 ptr; int32 size; int32 time_l; int32 time_h; char name[?]; ptr は実際のデータへのヘッダからの相対アドレスです。size はデータの大きさを - 表します。 time_l と time_h は Windows 特有(?)の値で、データの作成時間をユリ - ウス歴の最初の日付からの経過時間をナノ秒で表したものです。name はアーカイブ + 表します。 time_l と time_h は Windows の FILETIME 型の値で、データの作成時刻 + を1601-01-01からの100ナノ秒単位の経過時間で表したものです。name はアーカイブ する前のデータのファイル名で、16バイト以上の長さがあります。16バイト未満の時 は0でパディングされます。またヘッダとデータを併せて 256バイト単位になるよう にデータの後ろは0でパディングされます。 @@ -204,13 +204,13 @@ int8 pal[3*16]; (x0,y0) は、CGを表示する位置を表します。シナリオから表示位置の指定のない場合 - この値を使います。x0 は 8で割った大きさになっていいますので、x0=10 とあった - 場合は実際には (80,y0) の位置に表示します。 + この値を使います。x0 は 8で割った大きさになっていますので、x0=10 とあった場 + 合は実際には (80,y0) の位置に表示します。 (width, height) は CG の大きさを表します。widthは実際には8で割った大きさに なっています。これは、プレーン型のデータが元になっているためです。プレーン型 のデータの場合、1バイトで表されるのは8ピクセル分だったため、width にいれる - 値は占めるバイト数を格納した方が有利だったんめと考えられます。よってCGの横の + 値は占めるバイト数を格納した方が有利だったためと考えられます。よってCGの横の サイズは常に8の倍数になります。8の倍数以外にしたい場合は、余る部分を透過 パレット(スプライト)とする事で実現出来ます。 @@ -234,7 +234,7 @@ です。 00, len; - 一つ上のプレーンと(len+1)の長さだけ同じ + 同じプレーンの一つ左の列と(len+1)の長さだけ同じ 01, len, pic; 1バイト(pic)の繰り返し。長さは(len+1) @@ -277,8 +277,9 @@ int8 bpp; int8 bppS; int8 trans_pal; - int16 palett_bank; - int32 rsv; + int8 rsv1; + int16 palette_bank; + int32 rsv2; int32 x0; int32 y0; int32 width; @@ -291,10 +292,9 @@ ver はデータのバージョンで、現在は 1 が入っています。 - bpp はデータの bit per pixel で 8または16です。256色データの場合は 8、64k色 - の場合は 16です。 + bpp はデータの bits per pixel で、256色データの場合は 8、64k色の場合は16です。 - bppsはαチャンネルの bit per pixel で通常は8です。 + bppsはαチャンネルの bits per pixel で通常は8です。 trans_pal は透過するパレットの番号です。通常はシナリオから指定が来るので 使用しません。 @@ -302,7 +302,7 @@ palette_bank は データの中のパレットのどの部分をシステムに転送するかを 表します。通常は 256個全部転送するのですが、CGデータがそれ以下しか色を使って ない場合には、一部のみ転送することができます。palette_bank は 16bit の情報を - 持ち 256個を 16個づつに分割してどの部分を転送するかを指定します。bit-on で + 持ち 256個を 16個ずつに分割してどの部分を転送するかを指定します。bit-on で 転送です。LSB が0-15, MSB が 240-255 です。 (x0, y0) は CG の表示位置です。VSP と違って8で割った大きさではなく実際の @@ -315,7 +315,7 @@ palette_ptr は bppが8の場合にはパレットへの相対アドレスが入りますが、 16の場合にはαチャンネルデータへの相対アドレスが入ります。 - comment_prt はデータにコメントをつける事ができて、そのデータへの相対アドレス + comment_ptr はデータにコメントをつける事ができて、そのデータへの相対アドレス を指定します。 パレット @@ -333,31 +333,31 @@ 2つ上のラインと同じ。長さは (len+3:8bit, len+2:16bit) 0xfd, len, pic, - 1byte の picデータの連続。長さは (len+4:8bit, len+3:16bit) + 1ピクセルの picデータの連続。長さは (len+4:8bit, len+3:16bit) 0xfc, len, pic1, pic2 - 2byte (pic1, pic2) データの連続。長さは ((len+3)*2:8bit, ((len+2)*2):16bit)) + 2ピクセル (pic1, pic2) データの連続。長さは ((len+3)*2:8bit, (len+2)*2:16bit) 0xfb - 左上のデータと同じ。(PMS16専用) + 左上のピクセルと同じ。(PMS16専用) 0xfa - 右上のデータと同じ。(PMS16専用) + 右上のピクセルと同じ。(PMS16専用) 0xf9, len, pic_h, pic_l1, pic_l2, .... (PMS16専用) ピクセル間の色の差が小さいものの連続。長さは(len+1) - 各ピクセルのうち、R の上位 3bit, G の 2bit, B の 2bit が同じで、R の下位 + 各ピクセルのうち、R の上位 3bit, G の 2bit, B の 3bit が同じで、R の下位 2bit, G の 4bit, B の 2bit が異なるとき、下位の異なる部分のみを pic_l2, pic_l3... で表す。( RGB は 5bit, 6bit, 5bit で表される) pic_h, pic_l1 で最初のピクセルを構成し、ここから、RGB の上位が同じで、下位の - 異なる部分を pic_l2, pic_l3... で構成する + 異なる部分を pic_l2, pic_l3... で構成する。 0xf8, pic picそのもの。コードと同じピクセル用。8bit では pic は 1byte, 16bit では 2byte. 0xf7-0x00 - データそのもの 8bitでは 1byte, 16bit では 00-f7 の次のコードはすべて(00-ff) - 使用してピクセルを構成。 + データそのもの。 8bitでは 1byte, 16bit では次の 1byte と合わせてピクセルを + 構成。 4.3 QNT フォーマット @@ -380,7 +380,7 @@ int32 width; int32 height; int32 bpp; - int32 rsv(?) + int32 rsv; (?) int32 pixel_size; int32 alpha_size; @@ -420,7 +420,7 @@ header_size はヘッダの大きさをバイト数で表しています。Version 0 では 48 バイト固定です。 - (x0, y0) は CG の表示位置の指定です + (x0, y0) は CG の表示位置の指定です。 (width, height) は CG の大きさの指定です。 @@ -472,8 +472,8 @@ 最新のものでは 'S380' となっています。途中混乱した時期があってこれと異なる 場合もあります。 - dat_prt は実際のシナリオデータの先頭への相対アドレスです。また、シナリオ中の - ジャンプ命令のアドレスは、上のヘッダの最初からの相対アドレスを使用します。 + data_ptr は実際のシナリオデータの先頭のアドレスです。また、シナリオ中の + ジャンプ命令のアドレスは、上のヘッダの先頭からの相対アドレスを使用します。 size はヘッダを含めたデータのサイズを示しています。 @@ -534,21 +534,21 @@ 04h 演算子(>= 以上) 数値は0から65535までの正の整数を扱えます。しかし、計算式上では word 定数は - 3FFFh しかあつかえませんので、それ以上の値を扱う場合は演算子を使います。 + 3FFFh までしかあつかえませんので、それ以上の値を扱う場合は演算子を使います。 65536 以上の数値を扱ったり、浮動小数を扱う場合は、64ビット変数を使用します。 - 配列を除く変数の最大は論理的には、16384 個ですが、実際には 2000 以下に実装上 - の限界があります。1000 以上になる場合は、配列変数を有効に使うと良いでしょう。 + 配列を除く変数は論理的には最大 16384 個ですが、実際には 2000 以下に実装上の + 限界があります。1000 以上になる場合は、配列変数を有効に使うと良いでしょう。 (xsystem35 の場合は 1024, 1.5.1pre1から 8192) 変数には、数値変数と配列変数があります。配列変数は、index 変数を用いた アクセス方法と、var[]のようなアクセス方法があります。var[]では上の 3.51拡張 - コードを使用して C0, 01, base_h, base_l, cali: というコーディングがなされま + コードを使用して C0, 01, base_h, base_l, cali: というエンコードがなされま す。配列のベースとなる変数が (base_h << 8) + base_l で表され、インデックスは - cali で指定されます。インデックスは配列変数も使用可能です。ex. var10[var20[5]] + cali で指定されます。インデックスは配列参照も使用可能です。ex. var10[var20[5]] - 計算式は逆ポーランド記述で格納されますので、基本的な処理はスタックから2つの - 数値または変数と1つの演算子を取り出して演算し、結果をスタックに戻します。 + 計算式は逆ポーランド記述で格納されますので、基本的な処理はスタックから1つの + 演算子と2つの数値または変数を取り出して演算し、結果をスタックに戻します。 この操作を 0x7f が出現するまで繰り返します。0x7f が来たら、スタックに残って いる数値を取り出します。コマンドの引数として変数を要求している場合の計算式 は、変数へのポインタを返します。 @@ -657,8 +657,8 @@ wav** など小文字系のコマンドはすべて 0x2f, 0x??, にエンコードされます。 また引数として文字列を含むもの(ファイル名など)は、従来は ':' で終っていました - が、system 3.8 以降では '\0' で終わるようになり、これらコマンドは新規に 0x2f - コマンドとして新規に割り当てられました。 + が、system 3.8 以降では '\0' で終わるようになり、これらのコマンドは新規に + 0x2f コマンドとして割り当てられました。 0x2f, 0x0a, cali *2: [wavLoad] 0x2f, 0x0b, cali *2: [wavPlay] @@ -807,7 +807,7 @@ ここでは、コマンド表に載っていないけど、ゲームに出て来るものを紹介します。 5.8.1 VA - * 機能: ユニットアニメーション (かえるにょ・ぱにょん初出) + * 機能: ユニットアニメーション (かえるにょ・ぱにょ〜ん初出) * フォーマット: VA getd, cali, cali, cali: * VA0 : 制御用コマンド @@ -821,7 +821,7 @@ VA0, no, 1, num: no番のアニメーション開始。すぐに制御を戻す。 numはコマ数, 0の場合と開始位置と終了位置が同じな時はアニメーションは - 動かずにコマ数だけが無限にされるカウント。 + 動かずにコマ数だけが無限にカウントされる。 VA0, no, 2, num: no番のアニメーション開始。終るまで制御を戻さない。