Archive

Archive for 2013年7月

ポケモンを呼ぶ笛 フリーズ条件完全解明

…… あー あー われわれは
なくこも だまる バイナリだん!
プログラムの かいどくを すすめた
3かげつかんの どりょくが みのり
いま ここに ポケモンをよぶふえの
かんぜんかいめいを せんげん するー!

というわけで、前回イーブイを出すときにはかなりの予測を含んでいましたが、フリーズ条件の完全解明が完了しました。
まずは原理から。
1. 道具欄を開くと現在の画面のマップチップ情報が0xCD7Cから先に360byteコピーされる。この時、0xCD7Cは画面の左上、0xCD7Dは画面の左上のひとつ右、画面の右上に到達したら画面の左上の真下の・・・と右下までコピーする。
2. 道具を使った瞬間に、0xCF78に使った道具の番号が保存される。0xCD68-0xCD7Bの20byteに道具名がコピーされる。このコピーは固定長。
3. そのまま0xCD68から、終端文字の0x50が現れるまでのデータを0xCF45から先にコピーする。ここで、20byte以内に0x50がないとそのまま画面のデータを読んでコピーを続け、0xCF78に保存されている道具の番号を壊す。
4. 道具使用時の処理に入る。0xCF78に入っている道具番号を読み込み、該当の道具の処理に飛ぶ。

ここまでで道具使用共通の処理は終了。個別の処理に入るのですが、作業用メモリがぐちゃぐちゃになっているため「てへを使った」という記録も壊れています。
何を使ったかの情報はやっぱり画面の一部分で上書きされています。
画面
チップ番号
赤枠で囲んだチップが「何を使ったかの情報」になっているチップです。このチップ番号がそのまま「内部番号何番目」にあたるので、たとえばこの場合だと「2C」、つまり?????(偽)を使ったことになります。
もちろん使えないのでオーキドのことば、その後カーソルが上に動き勝手に笛を吹いてメニューが閉じ、戦闘に入ります。(成功パターン)

失敗する場合は大きく分けて2パターン、画面がホワイトアウトする場合とボールを投げたり暴走する場合があります。
前者は戦闘中に使える道具かつポケモンを選ぶ系の道具だった場合、後者は戦闘中に直接使える道具だった場合。

次に、以上をまとめて成功条件をはっきりさせます。チップセットは街や道路のものとします。違うチップセットの場合はチップ番号で適宜読み替えてください。
・「フリーズ条件」の位置のマップチップ番号をアイテム番号として見た時に、「戦闘中に使えない道具である」
・画面の左上から「出現種族」までに木の左下(0x50)が出てこないこと
・「出現種族」マス以降に可及的速やかに0x50が出現すること(どこまでならフリーズしないかは未検証)
多分これで確定でいいと思います。問題は、ゲーム中でどのチップがどの番号か知る術がないということか。
まあ、フリーズ条件の場所が分かっただけよしとしてください・・・

— 追記 —
げんきのかたまりでホワイトアウトしないことが判明したので、若干条件が違う模様。

カテゴリー:セレクトバグ

13番目のポケモンでフリーズする場合の対処法・別解

2013年7月30日 1件のコメント

道具の13番目でセレクトし、ポケモンと入れ替えて道具覧を広げる技でフリーズする場合はタマムシに入れば良いということはよく知られていますが、
タマムシに入らないでもフリーズしない方法があります。

とても簡単で、13番目と入れ替えるポケモンの前に見た目がアネ゛デパミ゛になっているポケモンを挟むだけです。
例えば、6番目に名前を準備したいらないポケモン、5番目にアネ゛デパミ゛を配置すればok。見た目居ないように見えますがちゃんと選択出来ます。

原理もとても単純で、見た目0xFFのポケモンであるアネ゛デパミ゛が居ると、そこでポケモン覧の表示が終了するためです。
タマムシに入る前にフリーズするのは13番目のポケモンの最大HPが0で、HPバーの計算でゼロ除算が起こる(※)ためですが、
このHPバーの計算は見た目がアネ゛デパミ゛のポケモン以降は行いません。
一方、手持ちの数は1匹目の前に記録されているので、一覧の表示からは消えていても6匹なら6匹のままで選択も普通にできます。
よって、空欄に見えていても普通に交換できるし、バグを戻すときも何事もなく戻せます。
ただし、13番目と入れ替えた状態でステータスを見ると多分フリーズします。

※記憶が正しければですが、ゲームボーイに除算命令はないためループと引き算でやっているためゼロ除算すると無限ループに陥ります

カテゴリー:セレクトバグ

0xA6-0xC3の技を表示してもフリーズしない可能性

2013年7月29日 3件のコメント

とある条件下でいわゆるフリーズゾーンの全技検証しましたが、なんと1つもフリーズせず。
実は技の入れ替えだけならできる疑惑が。

条件というのは「戦闘開始時に画面左上が木になるようにする」ことです。
左上に木が来るようにする
一時的にフリーズしたように入力を受け付けなくなる場合がありますが、だいたいは改行コードを含む技名・タイプ名を表示してしまっているだけなのでBボタンでメッセージ送りすれば大丈夫です、多分。

カテゴリー:セレクトバグ

2匹の技を交換する

2013年7月26日 1件のコメント

本日の実験は豪華2本立てです。
タイプ2の2つ下が1番目の技で、PCセレクトでぎりぎり届いてくれる距離であることが判明したのでやってみました。

前回の記事でタイプ超/超を獲得したエーフィもどきのキシレン。今度はテレポートを覚えたいようです。
01

前回の記事でタイプ0x21/0x55になってしまったケーシィ。今度は唯一の技であるテレポートも奪われてしまうようです。
02
SSを撮り忘れたのですが、順序は1番目にキシレン、2番目にケーシィです。

今回入れ替えるテレポートはケーシィの1番目の技なので45番目セレクト。2番目なら46、3番目なら47、4番目なら48です。
03
キシレンのしっぽをふるでセレクト、なくなりました
04

逃げるとキシレンがテレポートを覚えています。
05
ケーシィはしっぽをふることができるようです。
06

余談:
応用すると技が3個以下のポケモンに対して一方的に技を与えることもできます。ただし、与える側は技を2つ以上持っており、与える技が一番後ろにあることが条件です。
やり方としては、与える側を戦闘に出し、もらう側の一番最初の空欄に該当する道具でセレクトを押します。例えば、技が1つだけの場合は最初の空欄は2番目の技なので46番目、ということ。
こうすると、与える側の技ともらう側の空欄が入れ替わり、与える側の技がなくなりもらう側に技が増えます。
セレクトバグの弊害で技が無くなってしまった場合でも、もらう側は戦闘に出す必要が無いので復旧可能だと思います。未検証。

正規ルートでは48種類もPCに預けること自体難易度が高くて実用性は微妙かも。大量にどくけしでも買います?

余談2:
キシレンはオルト、メタ、パラの3つの異性体を持ちます。なのでエーフィ、イーブイの他にもう1種類くらい姿があってもいいと思います。

カテゴリー:セレクトバグ

タイプ入れ替えを実験

2013年7月26日 2件のコメント

中身入れ替えの実験の際、無責任に「たぶん42番目と43番目でできるんじゃないかな」と言ってしまったので実験。
誰得画像ましましスペシャルでお送りいたします。
今回は経験値から作るのではなく、ケーシィのタイプ超/超をイーブイ(無/無)のキシレンに移植します。

用意したもの
超が欲しいイーブイのキシレン
01
超を持ってるケーシィ
02
媒介になるサンダースのスピカ
03

順番に並べます。まずは先頭が媒介、2番目がタイプを渡す側に。
04
42番目でselect
05
4番目の技と戦闘で入れか・・・ひでんマシンだとぉ?運が悪いとここでフリーズするかもしれません。リセット直後にやるといいかも。また、イーブイのタイプをもらった瞬間にこの技は消えるので一番下へ置いておくほうが良いです。
06
超タイプは0x18なので、にどげりがスピカの技になります。逆に、もともとここにあったたいあたり(0x21)がケーシィのタイプ1に入り、ケーシィは0x21/超という謎のタイプを手に入れました。
07
次に、タイプをもらう側のキシレンを2番目にし、同様に42番目セレクト。
08
4番目のにどげりと入れ替え。
09
一時的にさっきどっかに飛んでいったたいあたりが返って来ましたが、儚い夢です。戦闘が終わるとキシレンのタイプ1が入るので0x00、空欄になります。
10

さて、これでキシレンのタイプは超/無に変わったはずですが、一応確認します。ナツメのユンゲラーにぶつけてみる。しっかりいまひとつになっています。
11
12

同様に、43番目でも2回入れ替えます。まずはケーシィを2番目に。
13
どんどん技を失うスピカの図
14
またにどげりを習得します。
15
次にキシレンを2番目においてから43番目セレクト、にどげりと入れ替えます。
16
これで完成。キシレンのタイプは超/超、ケーシィのタイプは0x21/0x55になりました。スピカは技を2つ失ってしまいましたが、適当に何か覚えさせてケーシィのタイプと入れ替えれば取り戻せます。
ケーシィは進化させれば超/超に戻るのでほっといても大丈夫です。

おまけ:
あまりにもスピカの技がかわいそうだったので「わざマシン24」を与えました。
18
タイプ:マニア
19
効果はテクスチャーでした。お前もタイプを変えたかったんかい。
20
※撮影後、しっかり本物のわざマシン24を与えて10まんボルトを復活させてあげました

カテゴリー:セレクトバグ

常時くるくる移動実験

前にシミュレーションした常時くるくる移動モードの実験をしました。
半分成功、半分失敗といったところか。
今回用意したのは前回ラッタから生成したイーブイのベンゾインです。3番目の技を0x9E「ひっさつまえば」に調整済み。

道具の33番目でセレクト。

戦闘に入りベンゾインを33番目に送る。

逃げる・・・となぜか戦闘BGMのまま。これははやぶさバッヂ状態にでもなったか?と思いメニューを開いてびっくり

どうやら通信中フラグがたってしまったようです。


ボールを使えなかったのではやぶさバッヂ状態とは別物っぽい。

ちなみに、この状態で戦闘に入ろうとすると固まります。通信待機中になってしまうのだろうか。

カテゴリー:セレクトバグ

中身と見た目のタイプが違うとどうなるか

2013年7月18日 1件のコメント

前回の記事で種族入れ替えを行いました。
この時、タイプはそのままになる、と書いています。それに関する検証。
type1
こちらは元モンジャラのフェロセン。名前がかわいそうとか言わない。身も心もイーブイとなっていますがタイプはくさ/くさのままです。つまりはリーフィアもどき。
ステータスはボックスに預けて再計算させています。技はモンジャラ時代のまま、「すいとる」を覚えています。
見て分かる通り、ここに表示されるタイプは「見た目の種族」から導き出される「見せかけのノーマルタイプ」です。
type2
一方、こちらは元ラッタのベンゾイン。タイプはノーマル/ノーマルで通常のイーブイと同じです。
こちらもステータスは再計算済み。技をいじって「すいとる」を覚えさせています。

さて、この2匹が野生のメノクラゲLv15に対してすいとるを使用した結果は・・・?
type3
type4
見ての通りです。これは個体値やダメージ乱数の範囲を明らかに超えていると思います。
タイプ一致は「中身のタイプ」を使用して計算されます

フェロセンが水技を受けると・・・?
type3
通常のノーマルタイプならありえない「いまひとつ」表記。間違いなく草タイプとして計算されています。
ということで、種族自体のタイプはステータスの表示にのみ使われ、ダメージ計算は全て内部のタイプで行なっているようです。
この状態は育て屋へ預けてもボックスに預けても解消しません。

バグで「見かけ上の」種族が変わった場合でもタイプは変わりません。13番目ミュウは水タイプのままです。
同様に、「中身の」種族が変わった場合でもタイプは変わりません。バグの影響で中身が変わってしまった場合でもタイプは変わらないので大体の場合見かけ上の種族のタイプが残ることになります。
この状態を解消するにはタイプをセレクトバグで交換するか、進化させて全計算させるしかなさそうです。
幸い、まともなタイプの番号は0x1Bまでに固まっているので種族番号と違って地雷技ゾーンにひっかかる事はなく経験値調整などで簡単に修正できます。

・・・タイプ一致のわざマシンとか見てみたいかも

カテゴリー:セレクトバグ