ふっかつのじゅもんがちがいます

なんか不意に、ふっかつのじゅもんってどういう仕組みなのだろう、と思って調べてました。そうしたら流石はインターネット、調べたらちゃんとあって、じゅもんを読み書きするコードまで公開されていました。ありがとうございます。
Diary of DQ1-PASSWORD.

CとPerlで書かれたコードがあって、Perlはすげー苦手なのでCのコードを読んでると、これは今どきあんまり見ないビットフィールドの出番では、と思ったので書き換えてみました。

ふっかつのじゅもんの仕組みは、分かってしまえばやっていることは簡単です。まず経験値だとかお金だとかアイテムだとかイベントのフラグだとかの、みんなの血と汗のつまったデータ、今で言う冒険の書があるわけです。これが驚くべきことにドラクエ1においては、わずか14バイトしかないのですが。この14バイトに対してチェックサムCRCっぽいもの?を算出します。そして14バイトとCRC?の1バイトをくっつけましょう。できた15バイトを、ふっかつのじゅもんで使える64種類の文字、すなわち6bit単位にデータを分割。最後に簡単な暗号化をすれば皆様おなじみの20文字からなるふっかつのじゅもん形式になるわけです。

仕組みはまあ簡単なのですが、それよりもドラクエ1の冒険情報は14バイトであるということに感動しますね。仕様を見ると本当に1ビットを惜しむ作りになっていることがわかります。そしてそんなデータ構造を記しやすいビットフィールド(とユニオン)があるC言語。そんなあたりになんとも不思議な感慨があるなあと思ったのでした。