PC-98『ビ・ヨンド』のテキストを取り出した話
(=・ω・=) PC-98の『ビ・ヨンド 〜黒大将に見られてる〜』(Silky's)から、テキストを引っぱり出したときの覚書です。 ちゃんと調べた資料ではないので、そのつもりで読んでください。
はじめにお断りしておくと、デコードしたのはテキストだけです。絵の方は調べていません。
まず、シナリオが入っているMESという塊を開いても文字は見えません。独自の圧縮がかかっています。 目録みたいな部分に名前と置き場所が並んでいるので、そこを頼りに1本ずつ切り出しました。 切り出したものは頭のほうに「ほどいた後の大きさ」と「フラグ列の長さ」が入っていて、 そのうしろにフラグ列と本体が別々に並んでいます。 フラグのビットを上から順に見ていって、立っていれば前に出てきた並びをもう一度使う、 寝ていればそのまま1バイト書き出す。使い回すときは、どこから何バイト持ってくるかが本体側に入っています。
ほどけたら文字を拾うだけかと思ったら、素直には並んでいませんでした。 命令の列の中に文字列が挟まっている作りで、しかも前のほうに置かれた辞書を呼び出している箇所があります。 よく出てくる語句を辞書に登録して、本文側からは呼び出すだけにしてる模様。 同じ言葉を何度も書かずに済ませる、容量節約ですかね。 なので、文字列らしき区間をShift_JISとして成立するか確かめながら拾って、 辞書の呼び出しが出てきたら中身に差し替える、という乱暴なやり方にしました。 最後は日本語として読めるかどうかで足切り。それでだいぶ通りました。
厄介だったのが外字です。PC98ではよくあることですが、ゲーム専用の外字が普通にあります。
特に代表的なのは、EB D4「レ'」でした。
プレイした人にはわかるかと思います。あるキャラクターに使われる文字ですね。
ほかの外字は!?やら!!やら……まあ、外字そのものを取り出すか、ゲームと突き合わせるかはやる人次第ですね。
このゲーム、台詞や説明文をあわせて、ざっと3万5千行ほどありました。 よくこの分量が収まったな、と素直に思います。
もし間違っているところがあれば、掲示板にでも書いてください。