アーカイブ

Archive for 2015年6月

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

そういえば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かいバグでどこでもドア 試作版

建物の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

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

メモ書き: 強制そらをとぶ

D699に行先の番号を入れた後、D6B1のbit3とD6B2のbit7をセット。D6B2はセットしなくても着地が変になるだけなので問題ない。
一度遭遇したことのある「出口番号00以外へ行く」方法は不明。

カテゴリー:未分類

メモ書き:出口フォーマット

コードを書く余裕がないのでこれだけ置いときます。こんど5かいプログラムに落とします。

D32D: マップ内の出口の数
D32E: 1番目の出口の場所(縦)
D32F: 1番目の出口の場所(横)
D330: 1番目の出口の行先の出口番号
D331: 1番目の出口の行先のmapID (同一市内:FF)
D332-D345: 2番目の出口

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

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

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かい化石変換プログラムでバイナリゴルフ

化石変換のコードがあまりにも長く、まだ削れそうだったので挑戦した結果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かいプログラマの日常

レベル上げが面倒になったので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

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