ホーム > セレクトバグ > 5かいバグでオーキドせんせいを召喚する

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

名前欄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)

広告
カテゴリー:セレクトバグ タグ:
  1. thfan
    2015年11月27日2:53 AM

    はじめまして!
    ここのまとめページを拝見して5かいバグに挑戦してみました

    最適化できたら教えてほしいみたいなことがかかれていたので
    よかれとおもってオーキドせんせいのプログラムを短縮してみました

    ぜばがみぼ
    に「あ」づづざ
    ざぼ「ょ」づの

    「あ」の部分がバリエーション(とBGM)(今回は01)で
    「ょ」がトレーナーの種類です

    • 2015年11月27日3:20 PM

      ありがとうございます!
      これ書いた当時はまだlddが使えることに気付いてなくて、
      今から見るとだいぶ非効率的なことやってたのでまだ削れるとは思っていましたがまさか半分まで持って行けるとは・・・

      50+b1は全く気付いていませんでした、aに00近辺の数字作るときは参考にさせてもらいます!

  2. thfan
    2015年11月27日3:10 AM

    処理を書き忘れていました

    ld l,3a
    ld h,d0
    ld a,50

    add a,b1
    ldd (hl),a
    ldd(hl),a
    dec hl
    ld d,b

    dec hl
    ld a,e2
    ldd (hl),a
    ret

  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。