アーカイブ

Posts Tagged ‘5かい’

道具を使った場合の処理@緑初期版

2015年7月29日 10件のコメント

せっかくなのでついでに調査しました。コードはピカ版と同様ですが、アドレスがずれています。
ROM3:5642から。テーブルは5657から始まっているので、5657 + (アイテム番号 – 1) *2に書いてあるアドレスにjpします。
一応テーブル眺めてみましたが5かい以外にうまいこと飛んでくれるアイテムはなさそうですね・・・

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

ピカチュウ版での任意コード実行+没BGM再生

2015年7月28日 コメントを残す

雫月さん初代ポケモンのBGM周りの話に触発されてピカ版の没BGMをうまく鳴らせないか試したらできちゃいました。

私の任意コード実行の主戦場は緑なのでピカ版はあんまりちゃんとやってませんでしたが、
ピカ版の「5かい」はエントリポイントがずれているためD123に飛んでくれず、
もっと手前に飛ぶのでだいたいは主人公の名前に引っかかって固まるようです。
特に名前「れんだ(DA DE 30 50)」は1文字目からしてjp cなのでキャリーが立ってたら30deにジャンプして暴走確実です。
ということで代用品を探したところ、どうやら「はやぶさバッヂ(65)」がD4CAに飛ぶっぽいということを確認しました。
(今のところ条件付きとかではないと思っているのですが、ちゃんと追ったわけではないので100%飛ぶかは怪しい)追跡しました、必ずD4CAに飛びます。
これは自分のパソコンの9番目の種類にあたります。

ということで、ポケスタを利用するなりして「はやぶさバッヂ」をピカ版に密輸、
自分のパソコンの9番目から
9: かみなりのいし x 99
10: 技22 x 35 ←2015/7/28修正、0x23なので10進数では35個が正しいです
11: 技33 x any
を並べるとjp de64が達成されてボックスのニックネーム1文字目から実行されます。
これで赤緑用と同様の5かいプログラムが実行できます。しかも手持ちが制限されないおまけつき。

本題に戻り、これを利用して没BGMを再生するコードを書きました。
例によってボックス頭から並べ、自転車に乗って「はやぶさバッヂ」を起動、自転車から降りるとBGMが変わります。
このまま赤緑で実行すると多分フリーズしますが、適切にBGMのバンク番号とBGM番号を設定してやれば流用可能です。
(02とかは文字にできないので引き算するなり改造が必要です)

; 1匹目 ヅろめゆゅ
11 db d2; ld de, d2db
d5; push de
e1; pop hl
50;

; 2匹目 ぼぐづぼム
3e 28; ld a, 28 ここがBGMバンク号 28はピカ版専用曲バンク
32; ldd (hl), a
3e 9f; ld a, 9f ここがBGM番号 9fは没曲
50;

; 3匹目 づの
32; ldd (hl), a
c9; ret
50;

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

5かいでニックネーム変更

2015年7月25日 14件のコメント

リクエスト第一弾。
文字コード指定で手持ちの6匹目のニックネームの1文字を変えます。
エントリポイントがあっていれば手持ち・ボックスどちらでも大丈夫ですが、多分手持ちが便利だと思います。

ゾAひぢゼ
ひぢギめな
ゅぼBにC
づの

Aには「カキクケコサ」のどれかを入れます。それぞれ名前の1文字目から6文字目に対応。
指定した文字がB+Cの文字になります。
たとえば、Aが「カ」、B+Cが0xF0であれば6匹目の名前の1文字目が「円」になる、といった具合。

文字数が増える場合(「ポリゴン」を「ポリゴン1」に変える場合など)は増えた文字の後ろに0x50の文字を入れないと暴走する可能性がありますのでご注意を。

以下、ソース

0e 85; ld c, 85 - 8aのどれか
cb 31; swap c 85 -> 58
0d; dec c 58 -> 57
50; ld d, b

cb 31; swap c 57 -> 75
06 d2; ld b, d2
c5; push bc
50; ld d, b

e1; pop hl
3e xx; ld a, xx
c6 yy; add yy
50; ld d, b

32; ldd (hl), a
c9; ret
50; ld d, b

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

5かいプログラムのネタ募集

2015年7月10日 6件のコメント

いい加減ネタが尽きたので募集してみます。
調査・実験のツールから単なるフラグリセットまで、可能な限り対応します。

制約
・5かいは原理上はなんでもできますが私の実力による制限でゲーム内の任意のアドレスを書き換える程度しかできません。
・可変値が必要な場合は文字の足し算かアイテムの個数を入力とすることができます
・出力も同様に文字、アイテムの個数にすることができると思います(まだやったことがない)

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

5かいバグでどこでもドア 完成版

2015年6月30日 コメントを残す

そういえばadd (hl)とか便利な命令がありましたね・・・

ということで5byte削減した完成版です。前回のコードと比較してみてください。

ヅらめゆゅ
ヅユめビべ
ヅだもギも
デひすごキ
ドデの


11 d7 d2; ld de, d2d7
d5; push de
e1; pop hl
50; ld d, b

11 a3 d2; ld de, d2a3
1a; ld a, (de)
3d; dec a
50; ld d, b

11 30 d3; ld de, d330
06 d3; ld b, d3
50; ld d, b

12; ld (de), a
cb bd; res 7, l
2a; ldi a, (hl)
86; add (hl)
50; ld d, b

13; inc de
12; ld (de), a
c9; ret
50; ld d, b

5かいバグでどこでもドア 試作版

2015年6月29日 コメントを残す

建物の1番目の出口を書き換えて任意の場所に移動できるコードを書きました。ボックス1匹目からに置くことを想定しています。
移動先を指定するには「マップ番号」と「出口番号」が必要になります。
これらを間違えるとバグマップに飛ばされたりフリーズしたりしますので注意して使ってください。

マップ番号の指定は「手持ち一匹目の名前の1文字目+2文字目」で、出口番号の指定は「道具1番目の個数」です。
姓名判断士の家で実行、左側から出ることで指定したマップの指定した出口に飛びます。

コードの見た目上の仕上がりが悪いので改良できないか検討中。


ヅユめビべ
ヅだもデそ
ヅらめゆゅ
ひすごぺご
アヅぢもデ



11 a3 d2; ld de, d2a3
1a; ld a, (de)
3d; dec a
50; ld d, b

11 30 d3; ld de, d330
12; ld (de), a
bf; nop
50; ld d, b

11 d7 d2; ld de, d2d7
d5; push de
e1; pop hl
50; ld d, b

cb bd; res 7, l hl=d257
2a; ldi a, (hl)
47; ld b, a
2a; ldi a, (hl)
50; ld d, b

80; add b
11 31 d3; ld de, d331
12; ld (de), a
50; ld d, b

c9; ret
50; ld d, b

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

5かい図鑑完成プログラムでバイナリゴルフ

2015年6月17日 コメントを残す

54byte使うのはあまりにも長すぎじゃね?ということで、大規模に修正をかけてメインのコード部分を大幅に短くしました。
手順としては次のような方針。

  1. 埋める順番をd27b→d2a0の方向から、d2a0→d27bの方向に変更、ldd (hl),aを活用
  2. 相対ジャンプを絶対ジャンプにすることで短距離の戻りジャンプを実現
  3. 7Fの代入を先において次のFF代入命令にフォールスルーさせることでコード短縮
  4. 終端文字50を可能な限り活用して無駄を減らす

と、ここまで頑張って30byteまで減らしたのですが、絶対ジャンプのアドレス指定の関係でボックスの5匹目から配置する必要があります。
しかも、メノクラゲのPPから5匹目の先頭アドレスde7cに直接ジャンプしようとするとPU1, PP60というありえない数値を要求されてしまいます。

ということで、頭4匹には事実上のnopになってもらうことにしました。


; 1匹目~4匹目: そそそそそ
bf; cp a x5回
50; ld d, b

; de7c 5匹目 ぜメがめぼ
2e a0; ld l,a0
26 d2; ld h,d2
3e 50; ld a, 50

; de82 6匹目 にぞづョべ
c6 2f; add a, 2f
32; ldd (hl),a
af; xor a
3d; dec a
50; ld d, b

; de88 7匹目 づぼセすぼ
32; ldd (hl),a
3e 8d; ld a, 8d
bd; cp l
3e 50; ld a, 50

; de8e 8匹目 はアんにご
ca 80 de; jp z de80
c6 2a; add a, 2a
50; ld d, b

; de94 9匹目 すつカんの
bd; cp l
c2 85 de; jp nz de85
c9; ret
50; ld d, b

最終的に全体のコード長は削減されていませんが、入力の手間がちょっと減ったということで。

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

5かい化石変換プログラムでバイナリゴルフ

2015年6月13日 コメントを残す

化石変換のコードがあまりにも長く、まだ削れそうだったので挑戦した結果24byteまで減りました。
CB-prefixな命令が使えることを知らなかったので今まで投入していませんでしたが、使えるとわかったからにはフル活用します。


; 1匹目 ヅづらギら
11 32 d7; ld de, d732
06 d7; ld b, d7
50; ld d, b

; 2匹目 ひユビひぬ
cb a3; res 4,e (de: d732 → d722)
1a; ld a, (de)
cb c7; set 0,a
50; ld d, b

; 3匹目 デぼメよシ
12; ld (de),a
3e 90; ld a, 90 ここと
d6 2a; sub 2a ここを変えて復活する種族を変更
50; ld d, b

; 4匹目 ヅタよデの
11 8f d6; ld de, d68f
12; ld (de),a
c9; ret
50; ld d, b

動画はこちら

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

5かいプログラマの日常

2015年6月10日 コメントを残す

レベル上げが面倒になったのでLv99にするコードを書きました。
アメ投与でLv100にするために寸止めしています。手持ちの4番目がLv99になります。

ヅみむそぼ
にドデの

11 d0 d1; ld de, D1D0
bf; nopがわり
3e 50; ld a, 50

c6 13; add a, 13
12; ld (de), a
c9; ret

で、レベルを上げてみたらあまりにステータスが残念だったので全ステータスの努力経験値を0xFFFFにするコードを書きました。
こちらは手持ち先頭をいじります。一回ボックスに預けて引き取るとステータスに反映されます。

がむぜぴョ
べづづづづ
づづづづづ
づの

26 d1; ld h, d1
2e 45; ld l, 45
af; xor a
50; ld d, b

3d; dec a
32 32 32 32; ldd (hl), a
50; ld d, b

32 32 32 32 32; ldd (hl),a
50; ld d, b

32;
c9; ret

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

5かいで空中浮遊(完全版)

CD38が0x02だと完全な壁抜けモードになります。
プログラムは例によってボックス頭から。
一度使えば完全な壁抜けモード、もう一度使えば解除します。
わざわざ解除しなくても扉に突っ込めば壁抜け解除ですが、
建物の出口の場合は解除せずに突っ込むとそのままマップ外に出て固まります。
最悪死に至るのでご注意ください。


; ヅばへブゾ
11 3a cd; ld de, CD3a
1b; dec de
0e 50; ld c, 50

; ブビワくゾ
1b; dec de
1a; ld a, (de)
a9; xor c
b8; cp b (nop)
0e 50; ld c, 50

; ズズワデの
0c; inc c
0c; inc c
a9; xor c
12; ld (de), a
c9; ret
50; ld d, b

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