ドラゴンクエスト (FC) 解析資料

Published on: 2022-03-24
Updated on: 2022-03-26

スクリプト

「スクリプト」とは、ウィンドウ/テキスト表示を行う命令を並べたものを指す。
例えば、イベントやアイテム名などはそれ自体スクリプトである。

スクリプト命令はオペコードと 0 個以上のオペランドからなる:

制御命令

0x57 - キー入力待ち

'▼' を表示し、A または B キーの入力を待つ。

0xF0 <ptr:u16> - 8bit 符号なし整数の10進表示 (3桁右詰め)

ポインタ ptr が指す先の u8 値を10進表示する。3桁右詰めで、空いた部分は空白 (0x5F) となる。

内部的には一時バッファにフォーマット結果を書き込み、命令 0xFA で終端し、スクリプトポインタをそこへ移している。

0xF1 <ptr:u16> - 16bit 符号なし整数の10進表示 (5桁右詰め)

ポインタ ptr が指す先の u16 値を10進表示する。5桁右詰めで、空いた部分は空白 (0x5F) となる。

内部的には一時バッファにフォーマット結果を書き込み、命令 0xFA で終端し、スクリプトポインタをそこへ移している。

0xF2 - 主人公の名前を表示

主人公の名前を表示する。

内部的にはスクリプトポインタを主人公の名前に移している(主人公の名前は命令 0xFA で終端されている)。

0xF3 <ptr:u16> - 16bit 符号なし整数の10進表示 (パディングなし)

ポインタ ptr が指す先の u16 値を10進表示する。パディングなし。

内部的には一時バッファにフォーマット結果を書き込み、命令 0xFA で終端し、スクリプトポインタをそこへ移している。

0xF7 <n:u8> <ch:u8> - 同じ文字を指定回数繰り返す

文字 chn 回繰り返し表示する。ch は正しい文字コードであることを期待している。

0xFA - スクリプトポインタを復元

退避しておいたスクリプトポインタを復元する。

スクリプトポインタを移動する命令を実行した場合、最終的にこの命令によりスクリプトポインタが復元される。

0xFB - ウェイト

ウェイト設定に応じた量のウェイトを入れる。

ウェイト中に start キーを押すとウェイトを延長できる。

0xFC -

0xFD - サブスクリプト実行

一時バッファの内容をスクリプトとして実行する。

内部的にはスクリプトポインタを一時バッファに移している。

0xFE -

0xFF -