アーカイブ

Archive for 2015年5月

5かいバグで道具個数を修復する

昨日の図鑑完成コードにバグがあり、道具の個数領域0xD2A1を0xFFで上書きしてしまうようだったので、
道具欄で最初に0xFFが出現するまでカウントし、0xD2A1を正しい数値に戻すプログラムを書きました。バグをもってバグを制す。

汎用性があるのでセレクトバグで道具欄が壊れてしまった場合にも使えます。

使うのはボックスの中身で、名前は上から
ヅモめギめ
ネデゾヤな
むギガガぼ
ガガガガぼ
ガビくねズ
ズヅモめぼ
ビぶデデデ
ギめそぐろ


11 a1 d2; ld de, d2a1
06 d2; ld b, d2
50; ld d, b

97; sub a
12; ld (de), a
0e a2; ld c, a2
c5; push bc
50; ld d, b

d1; pop de
06 05; ld b, 05
05; dec b
3e 50; ld a, 50

05; dec b
05; dec b
05; dec b
05; dec b
3e 50; ld a, 50

05 ; dec b
1a; ld a, (de)
b8; cp b
c8; ret z
0c; inc c
50; ld d, b

0c; inc c
11 a1 d2; ld de, d2a1
3e 50; ld a, 50

1a; ld a, (de)
3c; inc a
12; ld (de), a
12; ld (de), a
12; ld (de), a
50; ld d, b

06 d2;ld b, d2
bf; cp a
28 db; jr z db (-37byte)
50; ld d, b

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

5かいバグでイーブイとりほうだい

お手軽にイーブイを復活させます。
メノクラゲの調整は技1: PU3, PP3 / 技2: PU1, PP23 / 技3: PU3, PP18です。
手持ちの頭から2匹にコードを書きます。


; 1匹目 ヅずゆビギ
11 2d d5; ld de, d52d
1a; ld a, (de)
06 50; ld b, 50

; 2匹目 ギっメデの
06 df; ld b, df
a0; and b
12; ld (de), a
c9; ret
50; eom

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

5かいバグで化石すり替え

5かいバグさえあればもう面倒な化石すり替え用調整をする必要もありません。
事前に化石を用意する必要すらありません。

今回は手持ちの名前にコードを書き、連続でボックス送りできるようにします。
メノクラゲの調整は技1: PU3, PP3 / 技2: PU1, PP23 / 技3: PU3, PP18です。
また、16bitロード命令がld deだけ使えることがわかったのでフル活用していきます。


; 1匹目 ヅタよギよ
11 8f d6; ld de, D68F
06 d6; ld b, d6
50; ld d, b

; 2匹目 ぼチよごデ
3e 90; ld a, 90 ここと
d6 2a; sub 2a ここの2行で復活する種族を制御 0x90 - 0x2a = 0x66
12; ld (de),a
50; ld d, b

; 3匹目 ヅがらギら
11 26 d7; ld de, D726
06 d7; ld b, d7
50; ld d, b

; 4匹目 ブブブブビ
1b; dec de
1b; dec de
1b; dec de
1b; dec de
1a; ld a, (de)
50; ld d, b

; 5匹目 ゾガゼゼゼ
0e 05; ld c, 05
0d; dec c
0d; dec c
0d; dec c
50; ld d, b

; 6匹目 ゼあデの
0d; dec c
b1; or c
12; ld (de),a
c9; ret
50; ld d,b

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

5かいバグで名前変更

シャワーズのフェノールは初代の入力制限で名前が「フエノール」になっていたので直しました。
1匹目の2文字目が「ェ」になります。
該当アドレスはD258ですが、58は入力不能な文字なのでいったん48を入れてから16回インクリメントするごり押しで対応。


; ギめゾぽズ
06 d2; ld b, d2
0e 48; ld c, 48
0c; inc c
50; ld d, b

;ズズズズズ を3匹
0c 0c 0c 0c 0c 50; inc c x5 ld d,b
0c 0c 0c 0c 0c 50; inc c x5 ld d,b
0c 0c 0c 0c 0c 50; inc c x5 ld d,b

; なむぼフに
c5; push bc
d1; pop de
3e 9b; ld a, 9b
c6 50; add a, 50

; デの
12; ld (de), a
c9; ret
50; eom

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

5かいバグで図鑑完成

GBの機械語にもちょっと慣れてきたので相対ジャンプとか条件分岐の練習として図鑑を完成させるコードを作ってみました。
ソースは長いので後ほど専用ページで公開します。→しました

ボックス上から9匹で

ギめゾアゼ
ゼゼゼゼな
むささささ
ぼセさぐヂ
ぼメさぐザ
ぼだにまさ
そぐガぼア
さべデぼモさべデぼメ
ドさだわの

でメノクラゲ・ニャースを調整し、5かいをつかうと見つけた数・捕まえた数が151になります。

5/29追記:1byte余計に0xffで埋めて道具の数の領域を壊すバグがあったので修正しました。
このバグを踏んでしまった方が居ましたら以下の修正プログラムを実行してください。
道具の数を最初の「やめる」までカウントして直します。
ヅモめギめ
ネデゾヤな
むギガガぼ
ガガガガぼ
ガビくねズ
ズヅモめぼ
ビぶデデデ
ギめそぐろ

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

5かいバグでオーキドせんせいを召喚する

2015年5月27日 3件のコメント

名前欄36byteをフル活用してオーキドせんせい(バリエーション0x01)と戦うコードを書きました。
にゅうりょく可能な文字だけで構成するためにかなり無駄なことをしています。

D123 06 xx ;ld B,xx 手持ちは6匹
D125 18 4D ;jr D174 2匹目はメノクラゲ 3匹目はニャース
D174 c3 57 d2 ;jp D257 メノクラゲ技1: PU3, PP3 / 技2: PU1, PP23 / 技3: PU3, PP18

; 1匹目の名前 ゾばギみな
0e 3a ;ld c,3a
06 d0 ;ld b,d0
c5 ;push bc
50 ;ld d, b

; 2匹目の名前 むぼギゼギ
; 3文字目はギグゲのどれかだと正規の手持ちになる
; スとかセにするとLv207のバグポケ満載、超強い
d1 ;pop de
3e 06 ;ld a,06
0d ;dec c
06 50 ;ld b,50

; 3匹目の名前 よガギみな
d6 05 ;sub a,05
06 d0 ;ld b, d0
c5 ;push bc
50 ;ld d,b

; 4匹目の名前 デむデゼゼ
12 ;ld (de), a
d1 ;pop de
12 ;ld (de),a
0d ;dec c
0d ;dec c
50 ;ld d,b

; 5匹目の名前 ゼギみなぼ
0d ;dec c
06 d0 ;ld b,d0
c5 ;push bc
3e 50 ;ld a, 50

; 6匹目の名前 むにテデの
d1 ;pop de
c6 92 ;add a,92
12 ;ld (de),a
c9 ;ret
50 ;名前終端

実は、やりたかったことを書くだけだったらこれだけでできます。
3e 01; ld a, 01
ea 3a d0; ld (d03a), a トレーナーのバリエーションは0x01
ea 39 d0; ld (d039), a 曲をジムリーダーに変更 00以外ならなんでもいい
3e e2 ; ld a, e2
ea 36 d0 ;ld (d036), a トレーナーの種類は0xE2(オーキドせんせい)
しかし、これを文字列に落とし込むと入力不能な文字が出てくるため、いろいろ試行錯誤の末、上の形で落ち着きました。
文字コードの関係でld (hl)とかld (bc)とかd,e,h,lへの即値代入とかレジスタ間の代入がだいたい封じられてしまいpushとpopで代用する始末。メモリにldしたいときはbcにアドレスを即値代入→push bc→pop de→ld (de),aの手順を踏む必要があります。
さらに6文字毎に入る0x50の壁。最後にはしっかり有効利用しました。

追記:未検証ですが、どうせ絶対アドレス指定するならボックスにいるポケモンの名前にjpさせれば手持ちにニックネームつけられることに気づきました。
D174 c3 64 de ;メノクラゲ技1: PU3, PP3 / 技2: PU1, PP36 / 技3: PU3, PP30
あたりで行けると思うんですが思い立ったタイミングで手元に検証環境がなかったので未検証。
アドレスの計算ミスしてるかもしれないので注意。
検証、実証しました

追記2: 動画化しました
通常手持ち(D03A:0x01)バグ手持ち(D03A:0x88)

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

SpeechCastExtra 1.0.7.2を公開しました

SpeechCastExtraのオートリンク機能がhttpsのリンクに非対応だったのにようやく気が付き対応させました。

ダウンロードはこちらから。

カテゴリー:プログラミング