7月も終わりに差しかかってはじめての更新となります
早速ですが、皆さま一度はポケモンで好きなメッセージを表示させたいと思ったことはありませんか?
ありすはあります
ルビー・サファイアでは流行の言葉を作ることもできましたがそれはあくまで決められた定型文の中から選んで作るだけの話です
一字一挙を全てオリジナルで製作して好きなメッセージを出すことが出来ればコミュニケーションももっと発展していくことでしょう
・・・え?思ったことがない?
『COMMUNICATION ERROR』『COMMUNICATION ERROR』
『COMMUNICATION ERROR』
そうですよね、好きなメッセージを出したいですよね
ではそのやり方を伝授しましょう。ですがその前に、そもそも
『テキストウィンドウのメッセージはどのような処理で表示されているのか』
この点について軽く触れてみましょう
テキストウィンドウのメッセージを描画するプログラムは
ROM0:05F1あたりにCall部分があります
ここに
『ここから終端(50)まで文字を表示』
『ここのアドレスを表示』
『SEを流す』
『ここからプログラムとして実行』
などといった命令を一緒に与えることで起動します
オブジェクトを調べるとHLレジスタに命令付きのメッセージデータを渡して
テキストウィンドウに文字を描写させたりといった具合です
ちなみに、上の画像だとD2D7のアドレスが代入されているのがわかりますね
D2D7は『テキストメッセージの描画速度のフラグ』と言えばいいでしょうか
普段は『01』で維持されており、メッセージを表示させる際に『03』に切り替わり、実際に描画するときには『01』に戻すといった挙動を起こします
『せってい』から《はなしのはやさ》に『はやい』『ふつう』『おそい』の3つがありますが、この差は『03』から『01』に戻す切り替わり速度のことでした
『せってい』画面を開くと自動で『01』に戻すようにされています
また、『せってい』から変更できるデータのためD2D7のメモリはレポートされる領域でもあります
ちなみに、殿堂入りの際に素早くメッセージが切り替わるのは『00』に
オーキド博士に図鑑を見せる際にゆっくりなのは『02』になっているためでした
それでは本題に入りましょう
要は05F1に渡すアドレスを任意で変えることができれば
『好きなメッセージを描画してくれる』わけです
そんなことが可能かって?不可能はありません
そう、《なかよしバッヂ》ならね
と、いうことで恒例のボックスに預けるニックネーム紹介です
今回は複雑な処理ということもありボックスを2つ使用します
また、必要となるポケモンの数は17+7匹です。お、多いっ!
ボックスA(ニックネーム変換用)
がんぜッレ
ヅッんプレ
ゾデへノん
ぼあぞデド
ゾヅヘノん
ぼョぞデド
ぼギデドョ
デドぼロぞ
デドのレぼ
せごぐガデ
ドゼねレレ
てノん
ボックスB(描画用)
ヅイんプョ
デゆゾらレ
ひぢなぼノ
ゅぞづゅレ
へへぶの
この2つのボックスを用意できたら、お次は実際に描画する内容を用意します
7匹のポケモンをボックスAの『てノん』の下に預けましょう
ここで預けたポケモンのニックネームがそのままテキストウィンドウに描写されるメッセージとなります
ちなみに7*5で35文字分表示されるわけなのですが、35文字未満の文章を作る際であってもニックネームに空白を打てることを利用して必ず7匹預けてください
ではまず1回目のなかよしバッヂ使用です
使用しているボックスがボックスAであることを確認したら使ってください
そしたらボックスAから、てノんより下にいる7匹を引き取りましょう
ニックネームがおかしくなっていますが気にせずに
そしたらそのままボックスBにその7匹を預けます
7匹の順番を間違えるとメッセージがズレるので注意しましょう
ボックスBの『へへぶの』の下に7匹を預けたら
2回目のなかよしバッヂ使用フェイズに移りましょう
すると・・・?
このように無事メッセージが表示されましたね
ニックネームに空白を入れる場所によって調整できるので
綺麗に描画したいなら工夫してください
※上はそのままニックネームを打ち込んだだけです
上の表示を綺麗にするなら
『いっぴきめ』『 にひきめ』
『 さんひき』『め よんひき』
『め ごひき』『め ろくひき』
『め ななー』
とすれば良いでしょう(実際にやってその目で確かめてみよう!)
ありすはこの任意コード実行を
《任意テキストメッセージ実行》と名付けます(ポケモン屋敷の日誌風に)
皆さまも他のトレーナー達と自由にコミュニケーションを図っていきましょう
今回はここまでになります、ありがとうございました
---07/26追記---
同じ効果でボックス1つに収まる任意コードが出来上がりました
こちらのほうが準備が楽だと思います
がんぜせレ
ヅせんプレ
ゾデへャん
ぼあぞデド
ゾヅヘャん
ぼョぞデド
ぼギデドョ
デドぼロぞ
デドヅすん
ョデゆゾワ
なぼノゅぞ
づゅへへぶ
のぼョぞせ
ごぐガデド
ゼねてャん
ぜねてャんの下にポケモンを7匹預けて
なかよしバッヂを発動することによって
預けたポケモンのニックネームがテキストメッセージとして表示されます
情報提供ありがとうございました!