ついに パーフェクトな プログラムの かんせいじゃ!

前回は3日かけて図鑑を一匹ずつ集めましたが、今回は3時間かけて図鑑を埋めるプログラムを書きました。

原理

任意コード実行なのでもちろん図鑑も完成させられます。 D27Bから19byteが捕まえたフラグ、D28Eから19byteが見つけたフラグです。 8bit*19byteで合計152までありますが、それぞれ最後の1byteは最上位bitを使わないことで151にしています。 最上位bitを立てることでどちらも152まで増やし、No.152(けつばん)まで図鑑に載せられますが、この状態で評価を受けるとフリーズします。 よって、基本はFFで埋め、最後だけ7Fにします。

コーディング

相対のうち半分は入力不能な文字になっていて使えませんでした。具体的にはjr、jr nz、jr cは使えません。幸いにして、jr zとjr ncで両フラグをカバーできるのでそれで対応します。また、jrはcp aしてからjr zすることで対応します。


06 d2; ld b, d2
0e 80; ld c, 80
0d; dec c
50; ld d, b

0d; dec c
0d; dec c
0d; dec c
0d; dec c
c5; push bc
50;ld d, b

d1; pop de
bb; cp e (nop)
bb; cp e (nop)
bb; cp e (nop)
bb; cp e (nop)
50; ld d, b

3e 8d; ld a, 8d
bb; cp e
28 10; jr z (+16byte)
50; ld d, b

3e a0; ld a, a0
bb; cp e
28 0a; jr z (+10byte)
50; ld d, b

3e 30; ld a, 30
c6 cf; add a, cf
bb; cp e
50; ld d, b

bf; cp a (set z flag)
28 05; jr z +05
3e 80; ld a, 80
50; ld d, b

bb; cp e (nop)
3d; dec a
12; ld (de),a
3e a1; ld a, a0
50; ld d, b

13; inc de
bb; cp e
30 dc;jr nc dc(-36byte)
c9; ret
50; ld d, b

文字列にしたものがこちら。
ギめゾアゼ
ゼゼゼゼな
むささささ
ぼセさぐヂ
ぼメさぐザ
ぼだにまさ
そぐガぼア
さべデぼメ
ドさだわの

実験

評価

メノクラゲとニャースの準備が必要なのでバグありRTA等には向かないと思います。普通に呼び出して捕まえていくよりは楽だと思う。

追記

あまりにも無駄が多かったので最適化しました。コード長としては変わりませんが入力の手間は削減できていると思います。

; 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


戻る
connecting: riko.2rnd.msmrrneda.net