「りも」トップページへ
インデックスページへ
「りも」デジタルノベルシステム
シナリオデータのバイナリ形式フォーマット
Jul.24.1999
れろれろ@ふみ
(國兼憲太郎)
○概要
シナリオデータはバイナリ形式で基本的に1バイト完結。
コマンドによって固定長や可変長の形式をとる。
2バイト以上の命令形態の場合、コマンド実行側で的確に追加分引数を
処理し他に影響を与えてはならない。
○帯域
データを1バイト読んできて、その数値範囲によって以下のような意味
合いを持つ。
- ・$00 〜 $7f : 辞書圧縮文字コード
- 使用頻度の高い128文字を辞書テーブル管理することによっ
て1バイトで表記できるようにする。
- ・$80 : 未使用(リザーブ)
- ・$81 〜 $ed : SJIS文字コード
- 次の1バイトと必ず組になって2バイトのSJIS漢字コードを
表現する。
本当は $a0〜$df も空いているのだが処理の簡略化のため
当面無視。
- ・$ee 〜 $ff : シナリオコマンド
- シナリオ進行用コマンドコード
帯域と拡張性のためマルチバイトコマンドが多い
なお文字は2バイト文字のみで、1バイト文字はサポートしない。
1バイト文字をサポートするためには辞書圧縮部分の仕様を排除する必要が
ある。
○シナリオコマンドコードリファレンス
- $ff --- 終了コード
- シナリオを終了する。
とりあえずタイトルに戻る。
- $fe --- 範囲終了(end)
- スキップ時に必要、特に何もしない。
- $fd --- 範囲開始(begin)
- スキップ時に必要、特に何もしない。
- $fc --- 画面クリア
- 画面の文字を消去する。
- $fb --- グラフィック表示
- マルチバイトコマンド。
| $01 nnnn | -- | nnnn番のグラフィックをバッファに転送 |
| $02 nnnn | -- | nnnn番のグラフィックをVRAMに転送 |
| $03 | -- | バッファのグラフィックをVRAMに転送 |
| $04 | -- | VRAMのグラフィックをバッファに転送 |
| $05 nnnn xx yy | -- | nnnn番のOBJをバッファの(xx,yy)に合成 |
| $06 nnnn xx yy | -- | nnnn番のOBJをVRAMの(xx,yy)に合成 |
# 画面フェードもそのうちに…
- $fa --- サウンドリクエスト
- マルチバイトコマンド。
| $01 nn | -- | nn番のBGMをリクエスト |
| $02 nn | -- | nn番のSEをリクエスト |
# フェードイン・アウトもそのうちに…
- $f9 --- プレイヤー選択
- マルチバイトコマンド。
コマンド直後の begin($fd)で始まり end($fc)までがコマンド
アイテムとなる。選択肢の数はその範囲の中に何個のアイテム
があるかで決まる。
→詳細は後述
- $f8 --- 改ページ
- キー待ちをした後に画面クリアを実行。
- $f7 --- 改行
- 文字表示行を改行する。
なお改段落は空白と組み合わせて「改行+空白」と表現する。
- $f6 --- 空白
- 一文字スキップし空白を作る。
- $f5 --- キーウェイト
- キー押下を要求し、それがなされるまで待つ。
- $f4 --- 文字表示ウェイト
- マルチバイトコマンド。
次の1バイト(0〜255)をウェイト値として、その時間だけ処理
を止める。キーキャンセル有り。
- $f3 --- フラグチェック
- マルチバイトコマンド
| $01 nnnn {} | -- | nnnn番のフラグがON(0以外)なら実行 |
| $02 nnnn {} | -- | nnnn番のフラグがOFF(0)なら実行 |
| $03 nnnn mm {} | -- | nnnn番のフラグがmmなら実行 |
| $04 nnnn mm {} | -- | nnnn番のフラグがmmでないなら実行 |
| $05 nnnn mm {} | -- | nnnn番のフラグがmmより大きい時実行 |
| $06 nnnn mm {} | -- | nnnn番のフラグがmmより小さい時実行 |
- $f2 --- フラグセット
- マルチバイトコマンド
| $01 nnnn | -- | nnnn番のフラグをONにする |
| $02 nnnn | -- | nnnn番のフラグをOFFにする |
| $03 nnnn mm ll | -- | nnnn番にmmをセット、0〜llの範囲で乱数加算 |
| $04 nnnn mm ll | -- | nnnn番にmmを加算、0〜llの範囲で乱数加算 |
| $05 nnnn mm ll | -- | nnnn番にmmを減算、0〜llの範囲で乱数加算 |
- $f1 --- ジャンプ
- 次の2バイトにて飛び先のシナリオ番号を指定。
シナリオ番号と実アドレスの関係は本体側が把握。
○プレイヤー選択コマンド詳細
$f9 で示されるプレイヤー選択コマンドについて解説する。
$f9 のあとにはすぐ {}($fd,$fe)が続き、この範囲内にあるだけのアイテムが
選択肢となる。
選択肢個々はさらに {} で囲まれその個数が選択肢の数を表わす。
各アイテム内のフォーマットは以下の通り。
- {nnnn mm 〜} -- 「〜」という文の選択肢
- 選択されたら nnnn番のフラグにmmをセット
〜は通常のSJISコードの羅列、辞書圧縮も有効
〜の終端は } の存在で判断
rero2@yuumu.rim.or.jp