超高速!復活の呪文生成プログラム改良版

ドラゴンクエストII復活の呪文生成プログラムVer.2

2000年11月24日 作成

本プログラムの更新履歴
2000年12月12日 プリント機能追加,一部アイテム削除
2001年1月1日 ごろ合わせ呪文作成機能追加
2001年1月17日 ごろ合わせ呪文作成機能不具合修正
2001年1月27日 ごろ合わせ呪文作成機能の使用可能
文字チェック機能追加,不具合修正
2001年2月5日 名前の空白文字処理を変更
2001年2月15日 2種類の空白文字の入力に対応
2001年2月20日 サマルトリアの王子,ムーンブルク
の王女の名前決定ルーチンを修正
2001年3月26日 敵の出現率をゼロにする復活
の呪文の作成機能を追加



内容

このプログラムは1991年に作った「ドラゴンクエストII復活の呪文自動生成プログラム」をベースにし,操作性を向上させた改良プログラムです。説明上,旧プログラムをVer.1,今回の改良プログラムをVer.2と表記することにします。

本プログラムの操作は全体的にファイナルファンタジーVのメニュー画面の操作を参考にしています。カーソルキーまたはジョイスティック(以下方向キーと表記)で矢印やカーソルの移動,スペースキーまたはジョイスティックのトリガA(以下Aボタンと表記)で入力の決定や数値のカウントアップ,シフトキーまたはジョイスティックのトリガB(以下Bボタンと表記)で入力のキャンセルや数値のカウントダウンを行います。



Ver.1からの主な改良点

項目 Ver.1 Ver.2
プログラム BASICが中心 マシン語が中心
操作 ジョイスティックのみ対応 キーボード・ジョイスティック両対応
入力項目の修正機能 なし あり
MSX専用アイテム 入力不可 入力可(みみせん,しのオ
ルゴール
,あぶないみずぎ)



画面の説明

このプログラムの画面は3画面で構成されています。それぞれの画面間は方向
キーの上下で移動することができます。(ただし画面1-1,画面2-2の状態を除く)

画面1-1(プレイヤーの名前入力画面)
プログラムをRUNした直後に現れる画面です。方向キーでカーソルを動かし,Aボタンで1文字入力します。4文字まで入力できますが,1〜3文字の場合はBボタンで名前入力状態を抜けることができます。なお,入力文字数が0文字の場合は抜けることができません。

(2001年2月5日追加)名前入力状態で「GRAPH」「1」キーを押すと,名前に空白文字を入力することが可能です。ただし2文字目以降のみ可能です。(1文字目が空白だとNGとなるため)

(2001年2月15日追加)名前入力状態で「2」キーを押すと,名前に特殊版の空白文字を入力することが可能です。この場合は画面上には「!」と表示されます。「1」キーによる通常版空白とちがい,全文字とも可能です。(「特殊版空白文字」については以降のコメントを参照してください)

名前入力状態を抜けた後も名前に矢印を合わせ,Aボタンで文字の追加,Bボタンで文字の削除ができます。

画面1-2(各キャラクターのレベル,ゴールドなどの入力画面)
(画面1-1)の名前入力状態を抜けるとパーティの人数,各キャラクターのレベルや経験値,ゴールド,紋章,タイプを入力する状態になります。Aボタンで数値のカウントアップや紋章ありの状態にし,Bボタンで数値のカウントダウンや紋章なしの状態にします。

今回はレベルと経験値が連動していて,レベルを変更すると経験値が,経験値を変更するとレベルが自動的に設定されるようになりました。

項目の詳細についてはVer.1のページを参照。

画面2-1(各キャラクターのアイテム表示画面)
各キャラクターの所持アイテムを表示します。アイテムの空きは「−」として表示されています。アイテムを追加したい場合は,追加したいキャラクターの「・」「E」を除く任意の場所にカーソルを合わせ,Aボタンでアイテムの入力画面に移行します。アイテムを削除したい場合は「・」「E」以外の場所でBボタンを押すことで削除することができます。
また,入力されたアイテムの左にある「・」「E」にカーソルを合わせAボタンで装備させることや,Bボタンで装備をはずすこともできます。

画面2-2(各キャラクターのアイテム入力画面)
アイテム表示画面(画面2-1)でAボタンを押すとこの画面になります。方向キーで必要なアイテムを選び,Aボタンで決定します。入力中のキャラクターの所持アイテムが満杯(8個)にならない限り,続けて入力することができます。

Bボタンを押すとアイテム入力画面を抜けることができます。

画面3(スタート地点・イベントフラグ入力画面&復活の呪文の出力画面)
スタート地点や各種イベントフラグの設定と復活の呪文の表示部が一体となった画面です。AボタンとBボタンで(画面1-2)と同様に設定します。
項目の詳細についてはVer.1のページを参照。

「データクリア」でAボタンを2秒間押し続けるとデータを初期化することができます。初期化後は(画面1-1)に戻ります。
「プリントする」は,現在は未対応です。(今後,機能追加の可能性あり)
「プリントする」でAボタンを2秒間押し続けると表示されている復活の呪文をプリンタ出力することができます
(下記「プリンタ出力について」を参照)。

復活の呪文・パターンは0〜15の値をAボタンとBボタンで設定でき,同じ状態で16種類の復活の呪文を表示します。

プリンタ出力について
(画面3)で「プリントする」でAボタンを2秒間押した後,使用するプリンタが使用可能な状態ならば,プリンタ出力ができます。出力形式は以下の2通りを用意しています。
  • MSX実機用のプリンタに印刷する
  • MSXエミュレータにてテキストファイルに出力する
出力形式の設定はBASICプログラムの90行の最後にある数字で行います(左画面を参照)。実機用のプリンタを使用する場合は「8」,エミュレータの場合は「9」に設定する必要があります。誤った設定にすると「文字化け」が発生するので注意してください。
なお,ダウンロード時のプログラムの設定は「ディスクイメージ」のみ「9」,FDデータ,WAVEデータは「8」に設定されています。



プログラムについて

画面はVer.1と同じくSCREEN 1を使用しています。BASIC部分はSCREEN文やマシン語を実行するためのUSR関数があるのみでそれ以外はすべてマシン語で処理しています。今回のマシン語部分のデータサイズは史上最大だと思います。



プログラム作成から完成までの流れ

2000年11月6日 プログラム作成開始。ゲームの調査。
2000年11月7日 CGパターンの作成。
2000年11月8日 入力画面のレイアウトの作成。
2000年11月13〜14日 入力画面表示ルーチンの作成。
2000年11月15〜16日 名前入力ルーチンの作成。
2000年11月17〜18日 イベントフラグ等の入力ルーチンの作成。
2000年11月19日 レベル,経験値入力ルーチンの作成。
2000年11月20〜22日 アイテム入力ルーチンの作成。
2000年11月23日 復活の呪文表示ルーチンの作成。
2000年11月24日 ホームページを更新。



苦労した点

今回は何といってもデータ量の多さに苦労しました。マシン語部分はDATA文を並べて作っていくのですが,DATA文が多くなりすぎてOut of Memoryとなってしまったので,3回ほどDATA文をバイナリファイルに落とすためのプログラムを作り,Out of Memoryを回避してきました。デバッグよりもプログラムの作成のほうが難しかったです。

アイテムの入力ルーチンの作成にも苦労しました。アイテムを示すのに最初は(画面3)のように矢印を表示するだけだったのですが,これではみにくいと思い,横長カーソルに変更しました。この横長カーソルはスプライトを6枚使用しています。各スプライトの位置をY方向に微妙にずらすことで,横方向4枚以内をクリアしています。



最後に

プログラムの作成開始から2週間以上がたち,ホームページのほうも久しぶりに更新することができました。今回の復活の呪文生成プログラムは経験値だけでなくレベルとしても入力することができるようにしているのでいい出来だと思います。

唯一,気になるのは画面が切り替わるときやアイテムの入力画面のときのサウンドが伸びてしまうことです。ある意味で仕方ないことだと思いますが・・・。PC-6001のようなタイマー割り込みはMSXで利用できるのでしょうか?(私は今までMSXでタイマー割り込みを使ったことがないので,いつか調べてみます)

コメント追加(2000年12月12日)

2000年12月12日,プログラムの一部修正を行いました。
  • アイテムから「みみせん」と「しのオルゴール」を削除
  • プリンタ出力機能を追加
アイテム削除に関してはファミコン版とMSX2版のドラゴンクエストIIにて「じゅもんがちがいます」と表示されてしまうことを確認したことから。プリンタ出力に関しては,やはり機能がないと不便に思ったからです(原作のプログラムでさえプリンタ出力対応なので・・・)。今回は実機とエミュレータの両方に対応しているのでかなり便利になったと思います。

また,サウンドルーチンの改善のためにタイマー割り込みを使おうと考え調査したのですが,
どうやらMSXにはその機能はないみたいです。(画面上のカーソルが点滅しないのがその理由!?)。サウンドルーチンの改善についていい案がありましたら私のほうまでお知らせ願います。


コメント追加(2001年2月5日)

調査の結果,名前の2文字目以降に空白文字を混ぜた場合でも復活の呪文がパスすることがわかりました。よって2文字目以降に空白文字を入力できるように変更しました。「ごろ合わせ呪文作成機能」も同様に2文字目以降の空白文字がチェックに通るように変更しています。

画面1-1(名前入力状態)で「GRAPH」「1」キーを押すことで,名前に空白文字を入力することを可能にしました。2001年2月5日,この対応版をアップしました。


「ひそ あ」と名前の3文字目に
空白を入れた例です。
実際のゲームはステータスなどは
「ひそ あ」と表示されますが,
メッセージは「ひそ」となり,
空白文字以降は表示されません。



コメント追加(2001年2月15日)

プレイヤーの名前として使用できる空白文字についての新たな情報が得られましたので今回修正を加えました。プレイヤーの名前に空白文字を入れる場合,通常の空白文字(コード:62)以外に特殊な空白文字(コード:63)を入れられることがわかりました。このことに対応すべく今回修正行いました。画面1-1の名前入力状態で「1」キーを押すと通常の空白文字(コード:62)を,「2」キーを押すと特殊な空白文字(コード:63)を入力することができます。なお,コード63の空白文字は入力画面では「!」と表示されます。


プレイヤーの名前に空白文字(コード:63)を入れた場合の例です。最初の文字が空白文字の場合,ファミコン版ではゲームがスタートし,プレイヤーの名前が表示された後にフリーズしてしまうことがあります。なおMSX版ではフリーズは起こらないようです。



空白文字の特徴について(今回の調査にてわかったこと)

・最初の文字を「コード:63」による空白文字にすることは可能。
 ただしこの場合はゲーム中に表示が変になりフリーズする可能性がある。
・最初の文字を「コード:62」による空白文字にすることは不可能。
・2〜4文字目はコード62,63の両方の空白文字が使用可能。
・ゲーム開始後,コード63はすべて62に置き換わる。


情報提供:DQ裏技大全集のぺんさんです。ありがとうございました。


コメント追加(2001年2月20日)

このプログラムではプレイヤー(ローレシアの王子)の名前を決めると自動的にサマルトリアの王子,ムーンブルクの王女の名前が表示されるようになっていますが,以前のプログラムでは間違った名前が表示される場合があることが判明しました。それについて再度ゲームをプレイすることで2人の名前の規則性について調査し,ほぼ問題ないと思われる結果が出ました。256という値が出てきたことでおそらく合っているはずです。今回この修正版をアップしました。

サマルトリアの王子,ムーンブルクの王女の名前の決定方法を下記に示します。


プレイヤーの名前(4文字)を下記のコードに変換する。

あ:10 い:11 う:12 ・・・ ろ:52 わ:53 を:54 ん:55
っ:56 ゃ:57 ゅ:58 ょ:59 ゛:108 ゜:109 空白:95

1〜4文字目の合計値をAとする。
2〜4文字目の合計値をBとする。
Bの値が256以上の場合はAの値に1を足す。
Bの値が255以下の場合はそのまま。
Aを64で割り,余りをCとする。

Cのビット5〜3の値でサマルトリアの王子の名前が決定する。

0:ランド 1:カイン 2:アーサー 3:コナン
4:クッキー 5:トンヌラ 6:すけさん 7:パウロ

Cのビット2〜0の値でムーンブルクの王女の名前が決定する。

0:アイリン 1:マリア 2:ナナ 3:あきな
4:プリン 5:まいこ 6:リンダ 7:サマンサ



ごろ合わせ呪文作成機能追加について

2001年1月1日,もとのプログラムにごろ合わせ呪文作成機能を追加しました。
2001年1月17日,ごろ合わせ呪文作成機能の不具合を修正しました。
2001年1月27日,使用可能文字チェック機能を追加,名前チェックの不具合を修正しました。
2001年2月5日,名前の2文字目以降の空白文字をチェックに通るように変更しました。
2001年2月15日,2種類の空白文字ともチェックに通るように変更しました。

詳細はこちら


敵の出現率ゼロの復活の呪文作成機能について

2001年3月26日,敵の出現率をゼロにする復活の呪文作成機能を追加しました。

詳細はこちら




概要その3へ
概要その3へ戻る
シルゴンハーゲンのホームページ・MSX編へ
MSX編 トップへ戻る
シルゴンハーゲンのホームページ・メインへ
ホームページ トップへ戻る