文書の過去の版を表示しています。
ハイハイスクールアドベンチャー技術資料
概要
この文書は、ハイハイスクールアドベンチャーの技術的な資料である。
データファイル構成
プログラム本体以外には以下のファイルを使用している。
- シナリオデータファイル
- 画面データファイル
- 部屋データ
- アイテムデータ
- 語句辞書ファイル
- 初期データ
- 音データファイル
- メッセージファイル1)
ゲームエンジン仕様
ゲームエンジンは、汎用のアドベンチャーゲームエンジンを目指してデザインしたものの、入出力と強く結びついた動作をきれいに落とし込み切れていないので事実上のハイハイスクールアドベンチャー専用エンジンとなっている。
シナリオデータは32bitを1単位としたバイナリデータの集合で、複数の条件語からなる条件節に続いて、アクション節が続く構成となっている。
エンジンは条件節を評価し、条件節内の全ての条件語を満たしたら、アクション節を実行する。 複数の条件節を満たす場合には先にある条件節が優先的にマッチし、以下のものは対象外となる。
ハイハイスクールアドベンチャーの場合は、基本的には、どの部屋で、どういうコマンドが渡されたのかを評価する形が最も一般的である。
条件にはワイルドカードがあり、例えば、どの部屋であっても、北へ移動しろというコマンドが来たら、アクションを起こすというような場合には、部屋番号に相当する部分にはワイルドカードを渡しておく。
フォーマット
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
act | op | pad | typ | id | offset | value | |||||||||||||||||||||||||
typ | id |
actビットで、条件語(act=0)かアクション語(act=1)かを判別している。 opは条件やアクションを具体的に示す。 3bit 8種類を持つことができる。 padはパディングエリアで、この4bitは使用されていない。 typとidはペアで、typで示される種類のデータのid番目にアクセスする。 offsetは8ビットのデータとしても使われるし、typ(3)+id(5)としても使われる。 typ(id)同士を比較したり内容をコピーしたりするときには offsetをこのように分割する。 valueは8ビットのデータである。
条件語
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | cond | typ1 | id1 | typ2 | id2 | value |
cond
condは以下の8種類がある。
値 | 意味 |
---|---|
0 | NOP |
1 | EQ |
2 | NE |
3 | GT |
4 | GE |
5 | LT |
6 | LE |
7 | 未定義 |
オペランド
第一オペランドは typ1 + id1 であらわされ、第二オペランドは typ2 + id2または valueが使われる。 第二オペランドが typ2 + id2なのか valueなのかは、typ2によって決まる。
typは以下のものがある。
値 | 意味 |
---|---|
0 | None (typ2ならvalueを使う) |
1 | Fact |
2 | Place |
3 | System |
4 | Vector |
Factおよび Placeはフラグである。 ハイハイスクールアドベンチャーにおいては、Factは懐中電灯が使用中かとか、先生が出現しているかとかそいうい情報を、Placeはアイテムの場所を管理している。idは5ビットあるので32種類ずつ持つことができるが、そんなには使っていない。
Systemは文字通りシステム変数で、Vectorは部屋と部屋のリンク情報を管理している。