自作PC見積もり

軽く見積もったら35万円~なり...

  • CPU
  • GPU
    • RTX3070 old
    • 7
  • MB
    • ASUS TUF GAMING X670E-PLUS
    • 5
  • Cooler
    • Noctua NH-D15 chromaxblack
    • 1.5
  • Power
    • ASUS ROG-STRIX-850G 80 PLUS GOLD
    • 2.3
    • Fractal Design ION Gold 850W
    • 1.8
  • Case
    • Fractal Design Define 7 Compact
    • 1.2
    • Fractal Design Pop Silent + USB-C option
    • 1.4
  • Memory
    • Kingston FURY DDR5 AM5 AMD EXPO認定 5600MT/秒 16GB×2枚
    • 3
    • クルーシャル 16GBX2 DDR5-4800
    • 2
  • SSD
    • Kingston SSD KC3000 1024GB 1TB PCIe Gen 4.0 x4
    • 1.6
    • Crucial P5 Plus 1TB PCIe Gen4
    • 1.4
  • CPU Grease
    • シミオシ OC Master 1g SMZ-01R-01 (13.2W/m・K)
    • 0.1
  • OS

現状、PC買ってもYoutube見るのが8割くらいなのでハイスペ組む意味。。。またどっぷりクソおもコンパイル走らせるようなことするようになるのならいいだろうけど、その予定全くない。いつかグラフィックス、機械学習関連やりたいかなぁ。。。

なんか11月らしいな

早くない?人生very短い。最近は寝るのももったいないくらいやることがあったりなかったりする。

スプラ3を発売日から毎日2時間とかやっててくっそハマってる。これのためにSwitch買った。リッター持って固定砲台やってる。メモリー再生機能とかいう神機能が3から追加されて、ポンポコあたった試合見返してはリッターポルノと化している。S+5まで来たけどなんにもしてないけどなんか勝った試合でだいたい昇給してる気がする。

プログラミングやってないぞ。スマホからも投稿できる自ブログつくろうと思っていろいろ調べた結果めんどくさくなってる。どのクラウドサービス使っていいのか選べない。めんど。GBEもcpu大体できて以來あんまやってない。ppuの実装し始めたけど、ホントはラインごとに描写していきたいがそのロジックが組めない。結局一枚絵まとめて書くっていうたぶん違うたろ的な実装にしかならなさそう。

自作PCに興味が出てきた。7000番台が出て型落ちした5950xあたりがねらいめなんじゃないかと思ってたが、まぁ予算はあるし今イチから組むのなら7950xでも別にいいんだよな。ただ熱と消費電力が気になってて、電力制限すればだいぶ熱も70-80くらいに落ち着くらしく空冷でもワンチャン行けそう。簡易水冷はポンプの音が気になりそうで悩んでる。消費電力は流石にブレーカー落ちないだろうけど、古い家なのでやばいかもしれない。そんなハイスペPC組んでもやることといえばYoutube見るだけなんだよなぁ。コンパイルしまくるようなコードも書いてないし。ほしいだけで使う用途がないという。かなしい。

ブログやってない。昔はいちいちAmazonで買った商品ログってたけどしらんまにやらんくなってて謎。最近買ったのはSwitchようにLANケーブル挿せるようにLANのハブを買ったり、それ用に6個付きの電源タップを買ったり。fitbitも買ってたわ。

fitbitを睡眠計として買った。レム睡眠が1~6%で全然ない。たぶん薬のせいだろうけど、そもそもアルツハイマーとかうつ病の人はレム睡眠が少ない傾向にあるらしい。やばい。レム睡眠は浅い眠りなので少ないのはいいことなのかと思ってスルーしてたけど、昨日レム睡眠もとても重要な睡眠であると知ったわ。まじかよ。睡眠スコアが70前後くらいで低め。7~8時間は寝れるようにベットについているが寝付けるようになるまで時間がかかるので実質6~7時間になってるらしい。知ってた。

Pixel7に買い替えてたな。ガラスフィルムつけたせいか指紋認証全滅でshit。とはいえ顔認証が追加されたのでそれが意外と便利だが認証率は微妙。iPhoneなら9割以上顔認証成功してたのでそこはストレスというか、それだけのためにiPhoneに買い替えようか悩んでいたところに7が発売されて6の下取りが6万以上で実質2万くらいで買えたのでこっちにしてみたけど、やっぱり生体認証成功率低くてつらい。

仕事忙しい。片道一時間の現場が続く。危ない仕事も続く。辞めたい。ってここ数年ずっといっているのに転職するための準備なにもしてない俺は一体なんなんだ。

短歌やってない。短歌やってて紡いだ言葉がすごく今の自分に馴染んでるのをみるに続けるべきなんだと思う。SNSという動力を放棄してしまった以上なかなかめんどくさい。歌の日でもやってみるかな。やりたくないけど。やんねぇ。

次々と涙のつぶを押し出してしまうまぶたのちから かなしい / 笹井宏之

2022年ためてたくせに歌壇におくりそこねた短歌

僕と俺

  1. 感謝して理性確かめ軽蔑で本能に飲まれる僕でした
  2. 出る俺を自ら叩く俺が今仕事辞めたい俺叩く今
  3. 願いつつ祈りつつこの言の葉はオリーブの葉となりつつあって
  4. まばたきで始まる未来少しでも遠ざけるため開かずにいる
  5. 世のため人のため僕のためだった 歌集携え引き出しの中
  6. いつの日かすべての星が降る夜も結局君は見つからなそう
  7. 朝という仕組みの中に入れずに目覚めることも叶わない夢
  8. やまない雨にどこまでも広い傘は雲の上で開いた日傘
  9. 目的が手段に変わりこなれ感漂わせてた羊の群れは
  10. 朝焼けが発明された夜だけど夕焼けはまだ先のお話
  11. 夕暮れを2つくださいえぇ、今日と明後日の分ですまた来ます
  12. ひらりひらりとひかりに讃えられつつ落ち花びらは着地して亡骸
  13. 木々に囲まれ木偶坊と呼ばれた日々は遠い記憶いや昨日
  14. 君の涙は空へ向かって落ちるから傘をさして全部拾う
  15. まだあんなところに残る夕焼けは眩しくなくてとても見やすい
  16. 桜散っても梅残り道汚す花びらと空飾る花びら
  17. 田園の水面にたゆたう満月炊きたての月明かり食す日
  18. 開け放つ窓という窓すべてに降り注ぐ雨がありますように
  19. 青空の下ささやかな月明かりを頼る僕は夜が眩しい
  20. まぶしさは不完全なる遮光カーテン超え永遠じゃない眠り
  21. できるだけ夜を伸ばして朝焼けに焼かれ続ける夜を消せない
  22. 月光に日傘を差したこの夜も月の裏側を満たす日陰
  23. 夜風からあなたの声が聞こえたし眠ることとかが怖くなった
  24. 死にゆくを紡ぎ続ける食卓に色とりどりの惨殺死体
  25. はつなつに覗き込んでた紫陽花は落ちた涙の色になってた
  26. かすがいに交わる空の夕暮れと暁は言う もう疲れたと
  27. まばたきの周波数には程遠い寝ぼけ眼で見つめるまぶた
  28. なんどでもえいえんを見る窓割って翔び立つ僕の番の教室
  29. それなりの夜を過ごした君だからそれならぬ僕でもいいらしい
  30. 歌集将棋ピアノギターハンダゴテ転がる部屋でやることがない
  31. 晩春の寒き夜更けに眠りたくもマットレスから熱損失
  32. 光芒の膀胱を裂く美しさいわれてみれば地球の尿だ
  33. 窓隠すカーテンに隠された部屋解き放ちゆく窓の内側
  34. 枕もとにタオルをおく窓隠し透いた朝焼けを隠すため
  35. 青春の残火燻る水たまり夏の匂いに吐き気がしてた
  36. 不自然な自然公園駐車場に戻りながら木々は減りゆく
  37. 浸るべき虚妄は日々の平穏の中に生きてて夕時の龍
  38. 失われゆく頭髪よ今一度その対価を支払い給う
  39. インターネットの外側で会えるよ 傘がいる日になってしまった
  40. 月光が色褪せていく暁に夜の終わりを告げる人になる
  41. 雨風の風だけ残し止む雨にともに打たれたカエルと笑う
  42. 夕暮れを背に君のほうがまぶしい 雨風の雨だけ消えて風
  43. 楽しいなやるべきことをやらない時間初恋刈りのお姉さん
  44. 仕組まれた景色の中に君はいて第三者的スポットライト
  45. 開いたり閉じたりしつつ快楽に飲まれるゲームとしての悟り
  46. 友達がいないあの人が友達になれぬ理由とくになさそう
  47. ムクドリの夢にさえ城と玉座はありつつも座すことはないのだ
  48. 梅雨と夏始まるらぬまま消えてくれ傘も帽子も僕には重い
  49. 面影や夏日幻は揺蕩う光の向こうに潰れた光
  50. 雨漏りの向こう側には穴がありそこから覗く光が丸い
  51. 花束ははじめましてに挟まれて讃えられつつ人肌の雨
  52. 君からの手紙はいつも僕にだけ読める字だったりはしなかった
  53. 夜景見に夜の街へと繰り出して通り抜けたら向こうの山へ
  54. 夕暮れも夜空も壁を挟んでどうせPCよりも美しいのだろう
  55. 目で追った夜風はここにやってきて汗をさらって見えなくなった
  56. 足音が足早になり遠ざかり二人引き連れ帰ってくるな
  57. 人知れずいつまで居れることでしょう星屑のクズはゴミとは言わず
  58. そして失われゆくとは輝きだ瞳から漏れ出す光さえ
  59. 夕焼けを拾いそこねた僕だけに君が見せるポケットの朝焼け
  60. 夏空のせきらんうんにに名をつける良ければぼくの名を貰ってよ
  61. 散るを望まれ咲く桜舞い落ちるだけが楽しみですか?そうです。
  62. その空へ向かって落ちる涙とは浅い水面に立った写し絵
  63. 白昼夢から飛び立った幻は何度でも飛び立てる幻

2021年短歌まとめ

すっかり短歌やってないんだけど、こっちに去年のをログっておく。


1月


2月

頬つたう流れてどうか心まで誰もがきっと気付かぬように


3月

誰がためにほうきで掃いた星屑はかなわぬ願いの後片付け

ふつうとはあなたのことをいうんだよぼくのことではないはずなんだ

お互いがお互いを見る節穴に見限るのは私自身

君が君生き延びているかたわらで私が私イキイキしてる

たゆまなく耐え忍ぶ日々正しくも頼りない僕はただ立ち止まる

明け方に途切れる雨の音さえも僕に仕事に行けよと告げる

内は外、心の壁の内側に外の世界が焼き付いている

やわらかに木漏れ日はらり影の跡どうせ僕らは落ち葉の一つ

不死鳥のからあげ一つ食べたなら永遠の満腹感を得る


4月

空白のむなしさに詰め込めるだけ詰め込んで想像と青春

影の影は僕の形をしていた 心から日が差し込んでいた

梯子外してすみません これ以上僕と仲良くならないでください

お風呂から上がった僕はもうお風呂につかる前の僕とは違う

白黒はっきりさせる矛盾に一同なっとくする一部始終


5月

お休みが多くてとても幸せでこのまま何もせずに死にたい

地獄とはこの世のことを言うんだよ親はぼくらを堕とした悪魔

ありがとうと言わずじまいの優しさがたくさんあってごめんなさい

テトリスみたいな心だから穴が空いたままじゃないとだめなんだ

できるだけ川の上流のほうからぼくの遺灰は流してください

普通ってホントに普通であったらいいのにみんな普通が違う

言うほどに言葉足らずで沈黙の方がたくさん伝わる二人

確実に伝わる言葉選んでて、いつまでも君に追いつけない

伸びきった春をちぎってポケットにしまう君が次にねらう夏

風の方 背中を押して過ぎ去って、行く手阻んで過ぎ去らないな

春気配 秋名残 冬嫌気 夏に囚われている彼が詠む四季

今日という日にしおり閉じて眠った ちゃんと昨日に戻れるように

自分宛ではない誰かへの手紙が届いた時の敗北感

君の歌から月夜雨風空花僕が消えてもまだ短歌


6月

連想をできない孤独な言葉が意味指し示す物は無いんだ

Fホールが空いた心はうるさくて感情全部音楽だった

カップ麺お湯入れ待ちできあがる時にはいないウルトラマン

暑い寒い痛い辛い何も無い所へ行くと言うお爺さん

僕の言葉に合わせて輝く星があって君と同じ名前で

バス停に出逢いと別れがあるとはしらないままに列を成してた


7月

物書きは退屈を字で埋めるべく心傷つけ言葉掘り出す

あれも言えないこれも言えない僕が唯一言う「お疲れ様でした」

自分内宇宙探索 内は外 内向性は反転するよ

誰しもの生の狭間に青春も空虚も老いもひとしく消えて

物陰で運命呪う人だった僕もいつかは日向で呪う

揺れ動く何かがないと風さえも気付かぬ人へ言の葉が舞う

湖を渡る風分冷える汗が乾く前に噴き出すポカリ

死にたいはいかに幸せに生きたいかの裏返し 祭りは後だ

青春ですべて思いついたけれどすべて青春に忘れたんだ


8月

あの雲の天井がこの水の星たらしめてるバケツの端っこ

薄明を見上げればあれがまことの空の高さだ夜光雲立つ

湖の水面は揺らぐ人として揺らぐはずないものは沈んで

誰しもが誰であろうと構わない誰も君を気にはしない 行け

墓参り初心者なのでじいちゃんのお墓の場所がわからない孫

孤独だと伝える人がいるならばそれはもうその二人の孤独

夢にまで見た君だ また出会うとは夢にも思わなかった君だ

愛してる 返事は後でずっと後で僕のお墓に言ってあげて

死にたいと言ってるけれど大丈夫 生きるって死んでいくことだよ

おはようを言わない朝の静けさが必要なんだおやすみなさい

そんな先のことじゃなくて瞬きをする度訪れる未来だよ


9月

人としてあらねば人は超えられぬ人のその先でも人であれ

死にたがる心が心として死に生きたがる心が生き残る

好きです付き合ってくださいそれではこちらの契約書にサインを

かめはめ波をうてないのと同じ理由で青春は放たれなかった

特に言いたいことなんてない方を特に意味なく言いたいんです

明日よりもずっと長くて深い過去の成れの果てが生き抜いて明日

「生きたい」は「死にたい」と言った僕の屍の上に成り立っている

目が眩む対向車通り過ぎても瞬きごとに夜はまろやか

闇に顔を打つと痛いから少し夜が柔らかくなるまで待つよ

カーテンの向こうに誰の魔法やら雨降りの夜に月は差して

ガタガタと風に揺れてもそれなりの壁を隔てて夜は優しい


10月

空腹は最高の調味料だよ二分息止めた後の空気

光から雨になりつつあった風を射る光もやがて雨へと

僕の歌から友恋夢金愛が消えても全部残ってるな

本棚に選ばれし勇者ではないと抜けない本が刺さっている

よく夜が明けない人を見かけるが日が暮れない人は見かけない

この夜を昼寝みたいな気軽さで超えたらきっと朝は軽々

この行列から湖は見えないみんなで徐行してる国道

まっすぐに走っても新幹線の下2回くぐる道なんだね

おにぎりを温めますか?と聞いてほしいけど温めないでほしい


11月

炊飯器を開けた時の幸せの速さで今日は寝る 栗ご飯

かなしみがなみだへ変わるそのまえにきみを突き刺す刃となりぬ

入れ物としての君へとそそがれる人としての君はたぶん僕

忘れ方知ってしまえばすぐ僕は記憶喪失依存症へと

救急車の音聞くたびお迎えかって思うのにスルーされてく

真っ黒にならない空に真っ黒を教えるように消える星々

さようなら、つつがなく水は流れてすべての形にだってなれる

肌を刺す風はすっとずっと伸びて雲待たず雨君待たず恋

光差す透明な月はプリズム夜空に色という色放つ

一粒一粒に書かれ物語は降る私は傘を差せない

きらめきがざわめきを呼ぶ秋草で孤独も枯れると気づいたんだ

人生はどう歩んでも死ぬだから僕ら長い自殺の最中

たぬきちがたまに言う「だも」を許さぬ「だなも」過激派が火放つ森

指揮者だと思っていたら魔術師でなんだそういうことだったのか

紅葉をより色付けるように虹が落ちる青を余らせた秋

嘘のない道で枯れ草を辿った先で根も葉も無い花と君


12月

終わりまで夜を計って記載する完全でない遮光カーテン

もうダウン着たくないって言ってからまたダウン着るまでの青春

翼って無くなるものと知らなくて自分の名前書いてなかった

僕こそが夜の終わりを告げる人なのに3度目のスヌーズ鳴る

揺れるとき匂うとき孤独に届く誰かを切って音立てた風

燃え尽きるものに願いは込められる叶わぬなら燃やせということ

インターナショナルオレンジの夕暮れに東京タワーは消えていく

新しい枕が欲しい君の夜消えるまえなら触れれるひかり

良い仕事をしたと僕は思ってる頭を下げるお詫びを述べる

白くなる雪白くなる前の雪解けると白くなくなった雪

見えぬものは見えない月の裏側いつだって闇満ちる満月

僕が僕救った言葉でも君が君救う歌にはなれないか

まばたきを使い果たして眠る時のいつか尽きる命のまたたき

コンビニで雪見だいふく買ってきて一つを二人でなんてしない

少しだけしっとりとした嫉妬する正しく影で光ったりする

雪道にバンパーとタイヤチェーンと手袋が落ちててかなしけり

GBEのu16+i8、キャリーしてない場合はフラグを立てるっぽいな

前記事においてよくわからんなとかいってたやつ。単純にキャリーしないときにオンにするかんじやな。

.carry = (a ^ i ^ result) & 0x100 != 0を逆にして.carry = (a ^ i ^ result) & 0x100 == 0でよいかんじでした。

fn addU16ToSingedU8WithCarryHalf(a: u16, b: u8) u16OpResultWithCarryHalf {
    const n = @intCast(u16, bitClear(u8, b, 7));
    if (bitCheck(u8, b, 7)) {
        const i = 128 - n;
        const result = a -% i;
        return .{
            .result = result,
            .carry = (a ^ i ^ result) & 0x100 == 0,
            .half = (a ^ i ^ result) & 0x10 == 0,
            //.carry = (a & 0xff) -% (i & 0xff) < (a & 0xff),
            //.half = (a & 0xf) -% (i & 0xf) < (a & 0xf),
        };
    } else {
        const result = a +% n;
        return .{
            .result = result,
            .carry = (a ^ n ^ result) & 0x100 != 0,
            .half = (a ^ n ^ result) & 0x10 != 0,
        };
    
    }
}

GBEの16bit+8bitIntのときのフラグがよくわからん

ADD SP NLD HL SP+N命令においての引き算時のキャリーとハーフキャリーのフラグの建て方がよくわからんかってしばらく詰んでた。昔書いたコード適当にコピペしてパスしたけど、よくわからんままやな。普通の引き算とは違うフラグの建て方してるっぽいんだけど、なんでここだけこうなの。昔の僕はこのコードを自力で書くに至ったはずなんだが、なんも覚えてないという。

fn addU16ToSingedU8WithCarryHalf(a: u16, b: u8) u16OpResultWithCarryHalf {
    const n = @intCast(u16, bitClear(u8, b, 7));
    if (bitCheck(u8, b, 7)) {
        const i = 128 - n;
        const result = a -% i;
        return .{
            .result = result,
            //.carry = (a ^ i ^ result) & 0x100 != 0,
            //.half = (a ^ i ^ result) & 0x10 != 0,
            .carry = (a & 0xff) -% (i & 0xff) < (a & 0xff),
            .half = (a & 0xf) -% (i & 0xf) < (a & 0xf),
        };
    } else {
        const result = a +% n;
        return .{
            .result = result,
            .carry = (a ^ n ^ result) & 0x100 != 0,
            .half = (a ^ n ^ result) & 0x10 != 0,
        };
    
    }
}

fn ld16_hl_sp_n(self: *CPU) void {
    const n = self.fetch8();
    const a = addU16ToSingedU8WithCarryHalf(self.sp, n);
    self.setHL(a.result);
    self.setCarry(a.carry);
    self.setHalf(a.half);
    self.setNegative(false);
    self.setZero(false);
    self.tick();
}

fn add_sp_n(self: *CPU) void {
    const n = self.fetch8();
    const a = addU16ToSingedU8WithCarryHalf(self.sp, n);

    //std.debug.print("ADD SP:{x:0>4} N:{d:0>4} -> SP:{x:0>4} C:{d} H:{d}\n", .{self.sp, n, a.result, @boolToInt(a.carry), @boolToInt(a.half)});

    self.sp = a.result;
    self.setCarry(a.carry);
    self.setHalf(a.half);
    self.setNegative(false);
    self.setZero(false);
    self.tick();
    self.tick();
}

こういう結果になるらしいぞ。うーん。

ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0001 -> SP:0001 C:0 H:0
ADD SP:0001 N:0001 -> SP:0002 C:0 H:0
ADD SP:000f N:0001 -> SP:0010 C:0 H:1
ADD SP:0010 N:0001 -> SP:0011 C:0 H:0
ADD SP:001f N:0001 -> SP:0020 C:0 H:1
ADD SP:007f N:0001 -> SP:0080 C:0 H:1
ADD SP:0080 N:0001 -> SP:0081 C:0 H:0
ADD SP:00ff N:0001 -> SP:0100 C:1 H:1
ADD SP:0100 N:0001 -> SP:0101 C:0 H:0
ADD SP:0f00 N:0001 -> SP:0f01 C:0 H:0
ADD SP:1f00 N:0001 -> SP:1f01 C:0 H:0
ADD SP:1000 N:0001 -> SP:1001 C:0 H:0
ADD SP:7fff N:0001 -> SP:8000 C:1 H:1
ADD SP:8000 N:0001 -> SP:8001 C:0 H:0
ADD SP:ffff N:0001 -> SP:0000 C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1
ADD SP:0000 N:0255 -> SP:ffff C:0 H:0
ADD SP:0001 N:0255 -> SP:0000 C:1 H:1
ADD SP:000f N:0255 -> SP:000e C:1 H:1
ADD SP:0010 N:0255 -> SP:000f C:1 H:0
ADD SP:001f N:0255 -> SP:001e C:1 H:1
ADD SP:007f N:0255 -> SP:007e C:1 H:1
ADD SP:0080 N:0255 -> SP:007f C:1 H:0
ADD SP:00ff N:0255 -> SP:00fe C:1 H:1
ADD SP:0100 N:0255 -> SP:00ff C:0 H:0
ADD SP:0f00 N:0255 -> SP:0eff C:0 H:0
ADD SP:1f00 N:0255 -> SP:1eff C:0 H:0
ADD SP:1000 N:0255 -> SP:0fff C:0 H:0
ADD SP:7fff N:0255 -> SP:7ffe C:1 H:1
ADD SP:8000 N:0255 -> SP:7fff C:0 H:0
ADD SP:ffff N:0255 -> SP:fffe C:1 H:1

zigでゲームボーイエミュレータ書いてる

github/kmtoki/gbe-zig

エミュレータ開発用テストROMのgb_test_roms/cpu_instrsがパスしたのでcpuはざっくり書けたっぽい。過去にTypescriptとHaskellとRustで書いてて、TSはなんとか動いたけど、haskellとrustはcpuのテストをパスできなかったので三度目の正直ぎみ。

一番最初はrustで書き始めて、cpuの一命令ごとに関数呼び出しとかあかんやろとか適当なことを思って、命令を関数ではなくマクロで書いてしまったのでコンパイルがくっそ遅くなったのとエラーメッセージが読みにくくなったのでテストROMさえ回すことなく投げた。その次に、トライアンドエラーにおけるコンパイルのストレスをなくそうというのとブラウザで動かそうというモチベーションでTypescript/denoで書き始めた。低レイヤーの知識ゼロでなんにもわからない状態から始めたのと、既存エミュレータのコードは読まずに(daaで挫折してカンニングした)、英語読めないくせに英語ドキュメントしか見ないで実装するという謎の縛りプレイをやっていたので、数ヶ月かかりつつもなんとかブラウザで「ゼルダの伝説夢見る島」が動くようになった。その次に、haskellでとりあえずcpuざっくり書いたんだけど、コンパイル時間が10秒くらいかかるくせに、TS/deno版とくらべて4倍くらい遅いというかなしい結果になってしまって心折れた。lens/mtl/StateMonadでごりごりやっていったのがよくなかったのか、IOVectorが遅いのか、よくわからんけどちゃんと最適化すればどこまで早くなるのかは興味があるがコンパイルおそすぎて諦めてる。どこに最適化の余地があるのかもわからん。というかv8早すぎるだろ。

RustとかTSで書いたのが2年前で、Haskellで挫折したのが今年の夏で、なんかZig流行りだしたしこっちで試してみるかってなっていまここ。10日くらいでなんとなくcpu部分まで書けたんだけど、cpu_instrsテストをパスするまで一ヶ月かかってしまった。ここからこまかなタイミング合わせとか、ppuとか、apuとかやってるとまたどっかで詰んで終わらない感じになりそう。今回は詰んだら既存エミュのコードをカンニングしていくしかない。というかちょっと前に、tanakh先生が怒涛のエミュ実装祭りをやっていて、そのコードを見てしまったのでだいぶ影響されたコードになってしまった。良いことだろうけど。

zigで良かったところは、コンパイル早い、実行早い、黒魔術のないシンプルで素直な言語機能。便利だったのが、型が自明であれば、enumとかstructの名前を省略できる。`read(Register::IF)`と書かなければいけなさそうなところをread(.IF)と書けるのでありがたかった。おかげでinstructionの呼び出しが短く書けた。イマイチだったところはキャストがめんどい。@intCast(u16,0xff)と関数呼び出し的な文法で長ったらしい。演算子もデフォルトではオーバーフローするとランタイムエラーで落ちるので、GBEのケースでは255 + 1 // :u8255 +% 1と書く必要が多くあり、めんどい。あとはメモリ管理。人類には手動でメモリ管理するのは早すぎるとかなんとかは置いといて、ファイル一つ読むだけでも長くなる。

    pub fn readFile(allocator: std.mem.Allocator, path: []const u8) !ROM {
      const file = try std.fs.cwd().openFile(path, .{ .mode = .read_only });
      defer file.close();
      const stat = try file.stat();
      const buffer = try file.reader().readAllAlloc(allocator,stat.size);
      return parse(buffer);
    }


    pub fn main() !void {
      var gpa = std.heap.GeneralPurposeAllocator(.{}){};
      var path: []const u8 = "rom/gb_test_roms/cpu_instrs/cpu_instrs.gb";
      const rom = try ROM.readFile(gpa.allocator(), path);
    }

いちいちアロケーター引きずり回して開放も実装して(上記ではやってない)というのは、GCがないので当然ではあるし、その分軽くて早いという恩恵を受けるためにzig選んでいるわけだが、まぁめんどいよね。仕方がないというかなんというか。そのへんrustは上手だなと思うけど、使いこなすにはプログラム全体の構造をちゃんと把握して、所有権やライフタイムをきっちり理解した設計に最初からしないと破綻しがちというのは、クソザコナメクジの私にはつらい。場当たり的に書きながら考えるやり方なので、まぁしょうがないよね。