この動画を作るときにメモしておいたものです。
そのままコピペしただけのものなので見にくいと思いますが、良ければどうぞ。
メモ
pokemonbug@ウィキ タケシスルー
伝説のスターブロブ2 ニビジム誘導員をスルーすると
ガナヒビ 【ポケモン】強制移動イベントを利用した空中浮遊バグ
glitchcity through walls
昔のポケモンの裏技を語る【アネ゛デパミ゛】 5
Pokémon Red/Blue [Any% (No Item Underflow)] by G3neziz
06:7E85 ニビの主人公の圧縮移動データ
06:7E92 ニビのNPC圧縮移動データ?
3544 圧縮移動データ解凍 HL,解凍先 DE,データ元
06:7E39 ニビの歩行ルーチン開始
1E0A メインループ
1E58 ボタン入力関連
294C フィールドのボタン入力
2A34 マップスクリプト
3DB5 HLのテーブルからA番のアドレスに飛ぶ
3196 ↑のやつの特別バージョン というより近づいてくるNPCがいるところでは割と普通に使われているらしい(D6B2bit4が立ってたらD97Cをスクリプト番号として使う)D973は何?
D71B グレンの開くドアフラグ
31B5 名前入れるルーチン CF59・ジム名 CF5E・ジムリーダー名
CCD2=主人公が進む距離
CCD3~主人公の移動データ(後ろから読む) 00一瞬待機,10→,20←,40↑,80↓ ボタンのbit通りに動く
CF0B CC57をテーブルとしてここに入ってた番号のアドレスに飛ぶよ
CC57 ここをテーブルとして(CF0B)番目のアドレスに飛ぶよ
CC58 バンク
294C スクリプト関連 CF0B実行もここ(CF0B実行が先)
その下にメニュー開く分岐がある
CD5B NPC歩いてきてるよフラグとか
D6AFのbit7を立ててCD38に歩数入れてCCD3~逆順に操作データを入れると主人公が歩き出す
1E0A メインループ操作分岐
↓
294C{
3144 CF0B実行
↓
2A3A~ マップスクリプト
}
↓
メニューとか
0D:7DD3 ニビのNPCの動きの分岐 ここの検索がうまくいかないからRAMまで伸びてくる CC60~
こっちは圧縮されていない
D0F4 (歩くときとかのテンポラリ領域)恐らく主人公の移動データのポインタテーブルを指定するためのアドレス
牛アイコンのTileNoが24hでY座標が10hなので、これが主人公の座標と一致するから
CF0B実行はCC57に値が入っていると起きる
はみ出したときにCD66の値が変わる
CD3B 強制移動中(D6AFbit7)有効になるボタンのbit? CD66もクリアすると普通に動かせる 謎 通常00にクリアしかしていないように見えるが…
3E8B(a:4F) (D0F4)や座標をもとに主人公の歩行データを書き込む
強制移動はボタン入力を強引に動かしている感じ。歩行データというよりはボタン入力データという方が正確かも。
1E54 歩行コマンド分岐(というよりメインループの入力分岐部分)
0C47 01AFが黄版入力?黄版は前フレームと今フレームでの差分を取って更新されていた場合入力が入る仕組みになっているからできない と思っていたけど単純にCD66ロックがしっかりしているだけっぽいな…なんだよ…赤緑だとF0だけど黄版だとFC
294C D6AF判定とかのやつ
CC57は1,2,3まで対応
1 オーキド連行
2 ニビ博物館の人
3 ニビ邪魔な人
自動歩行自体はD6AFとCD38と歩行データのみで可能だった じゃあ何のためのCC57???
CC57は歩行データを張るために必要だったりする。一応自動歩行終了時の処理もあるみたいだけど、これはD6AFのチェック(294C)でやってくれそうなもんだから全く用途がわからん
もしかしたらNPCと同時に移動があるイベントはCC57なのかもしれない
06:5941
え……!
そりゃ ぜったい
いった ほうが いい!
CD3Bに届くにはCCF9から数えて66バイト必要 CCD3~
xy CCF9~ 3B CD66 データ量
-------------------------------
10 CE64 4F 00 401
20 CD7F B2 0F 172
30 CF4E 79 88 635
40 CF59 69 0F 286
50 CDD9 4B BF 262
60 CD06 33
3E8B(22)と3E8B(20)はオーキド連行と研究所のライバル移動の時しか使われていないっぽい 無駄に見える
なんでNPC移動を共通のものにしていなかった?主人公の移動方法も複数あるのが謎 そういうのまとめといてよ
オーキド連行イベントでオーキドが近づいてくる移動ルートはデータではなく計算で出している なんで??
恐らく研究所でのライバルの移動も同様 なんで??
ニビの座標ごとの歩行データ バンクは0d: 7E38~
10,22 7E4C
11,23 7E51
12,25 567E
13,25 7E62
11,24 7E67
10224C7E1123517E1225567E1325627E1124677E
スクリプトでの座標の並び
1123,1124,1225,1325
297A
FFB4とCD3Bの論理積が00でない場合、強制移動がストップして入力が利くようになるが、Aボタンは会話とかの分岐があって十字キーが利かない
D5D2 ワタルイベントスクリプト番号
D5CA 殿堂入りイベントスクリプト番号
ワタルイベントマス
0105,0206,0B05,0B06,1018,FF
D576 ニビのスクリプト番号
D6AFbit7
CC97 NPCの動き
01:4A53 NPCに動きをつける
CF12 動かすNPCの番号
CF12にNPCの番号*10hを入れてD6AFbit7を立ててD6ADのbit7を立ててCC97に移動データを入れてCD37に00、CD38に移動データのサイズを入れるとNPCが動く(CFACにも適切な値を常に入れないといけない)
CFAC 歩きアニメーション
多分こっちのNPCアニメーションの方がNPCの動きが速い=主人公と同時に動かすのに対応している
だけどわざわざCC57でそれを呼び出す意味が分からない
値さえ入れておけばそれで動くのにマップスクリプトのように毎フレーム確認しておく必要は何?
頼むからそういうのはマップスクリプトで統一させて動かしてくれないかなあ…読みにくいから
伝説のスターブロブ2 ニビジム誘導員をスルーすると
ガナヒビ 【ポケモン】強制移動イベントを利用した空中浮遊バグ
glitchcity through walls
昔のポケモンの裏技を語る【アネ゛デパミ゛】 5
Pokémon Red/Blue [Any% (No Item Underflow)] by G3neziz
06:7E85 ニビの主人公の圧縮移動データ
06:7E92 ニビのNPC圧縮移動データ?
3544 圧縮移動データ解凍 HL,解凍先 DE,データ元
06:7E39 ニビの歩行ルーチン開始
1E0A メインループ
1E58 ボタン入力関連
294C フィールドのボタン入力
2A34 マップスクリプト
3DB5 HLのテーブルからA番のアドレスに飛ぶ
3196 ↑のやつの特別バージョン というより近づいてくるNPCがいるところでは割と普通に使われているらしい(D6B2bit4が立ってたらD97Cをスクリプト番号として使う)D973は何?
D71B グレンの開くドアフラグ
31B5 名前入れるルーチン CF59・ジム名 CF5E・ジムリーダー名
CCD2=主人公が進む距離
CCD3~主人公の移動データ(後ろから読む) 00一瞬待機,10→,20←,40↑,80↓ ボタンのbit通りに動く
CF0B CC57をテーブルとしてここに入ってた番号のアドレスに飛ぶよ
CC57 ここをテーブルとして(CF0B)番目のアドレスに飛ぶよ
CC58 バンク
294C スクリプト関連 CF0B実行もここ(CF0B実行が先)
その下にメニュー開く分岐がある
CD5B NPC歩いてきてるよフラグとか
D6AFのbit7を立ててCD38に歩数入れてCCD3~逆順に操作データを入れると主人公が歩き出す
1E0A メインループ操作分岐
↓
294C{
3144 CF0B実行
↓
2A3A~ マップスクリプト
}
↓
メニューとか
0D:7DD3 ニビのNPCの動きの分岐 ここの検索がうまくいかないからRAMまで伸びてくる CC60~
こっちは圧縮されていない
D0F4 (歩くときとかのテンポラリ領域)恐らく主人公の移動データのポインタテーブルを指定するためのアドレス
牛アイコンのTileNoが24hでY座標が10hなので、これが主人公の座標と一致するから
CF0B実行はCC57に値が入っていると起きる
はみ出したときにCD66の値が変わる
CD3B 強制移動中(D6AFbit7)有効になるボタンのbit? CD66もクリアすると普通に動かせる 謎 通常00にクリアしかしていないように見えるが…
3E8B(a:4F) (D0F4)や座標をもとに主人公の歩行データを書き込む
強制移動はボタン入力を強引に動かしている感じ。歩行データというよりはボタン入力データという方が正確かも。
1E54 歩行コマンド分岐(というよりメインループの入力分岐部分)
0C47 01AFが黄版入力?黄版は前フレームと今フレームでの差分を取って更新されていた場合入力が入る仕組みになっているからできない と思っていたけど単純にCD66ロックがしっかりしているだけっぽいな…なんだよ…赤緑だとF0だけど黄版だとFC
294C D6AF判定とかのやつ
CC57は1,2,3まで対応
1 オーキド連行
2 ニビ博物館の人
3 ニビ邪魔な人
自動歩行自体はD6AFとCD38と歩行データのみで可能だった じゃあ何のためのCC57???
CC57は歩行データを張るために必要だったりする。一応自動歩行終了時の処理もあるみたいだけど、これはD6AFのチェック(294C)でやってくれそうなもんだから全く用途がわからん
もしかしたらNPCと同時に移動があるイベントはCC57なのかもしれない
06:5941
え……!
そりゃ ぜったい
いった ほうが いい!
CD3Bに届くにはCCF9から数えて66バイト必要 CCD3~
xy CCF9~ 3B CD66 データ量
-------------------------------
10 CE64 4F 00 401
20 CD7F B2 0F 172
30 CF4E 79 88 635
40 CF59 69 0F 286
50 CDD9 4B BF 262
60 CD06 33
3E8B(22)と3E8B(20)はオーキド連行と研究所のライバル移動の時しか使われていないっぽい 無駄に見える
なんでNPC移動を共通のものにしていなかった?主人公の移動方法も複数あるのが謎 そういうのまとめといてよ
オーキド連行イベントでオーキドが近づいてくる移動ルートはデータではなく計算で出している なんで??
恐らく研究所でのライバルの移動も同様 なんで??
ニビの座標ごとの歩行データ バンクは0d: 7E38~
10,22 7E4C
11,23 7E51
12,25 567E
13,25 7E62
11,24 7E67
10224C7E1123517E1225567E1325627E1124677E
スクリプトでの座標の並び
1123,1124,1225,1325
297A
FFB4とCD3Bの論理積が00でない場合、強制移動がストップして入力が利くようになるが、Aボタンは会話とかの分岐があって十字キーが利かない
D5D2 ワタルイベントスクリプト番号
D5CA 殿堂入りイベントスクリプト番号
ワタルイベントマス
0105,0206,0B05,0B06,1018,FF
D576 ニビのスクリプト番号
D6AFbit7
CC97 NPCの動き
01:4A53 NPCに動きをつける
CF12 動かすNPCの番号
CF12にNPCの番号*10hを入れてD6AFbit7を立ててD6ADのbit7を立ててCC97に移動データを入れてCD37に00、CD38に移動データのサイズを入れるとNPCが動く(CFACにも適切な値を常に入れないといけない)
CFAC 歩きアニメーション
多分こっちのNPCアニメーションの方がNPCの動きが速い=主人公と同時に動かすのに対応している
だけどわざわざCC57でそれを呼び出す意味が分からない
値さえ入れておけばそれで動くのにマップスクリプトのように毎フレーム確認しておく必要は何?
頼むからそういうのはマップスクリプトで統一させて動かしてくれないかなあ…読みにくいから