NEStinymachines

Zelda II - The Adventure of Link (USA)

Zelda II - The Adventure of Link (USA) は MMC1 の基板に載り、プログラムは 131,072 バイト。電源投入から 6,400 歩のクロールが、新しいコードを見つけた道筋を 73 本残した。それらを 235,313 フレームにわたって再生すると、プログラムのうち 12,967 バイト、10 パーセントが実行された。

規則が名付けたもの

走行が入った 246 個のルーチン

ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。それらのリスティングでの名前は、何であるかを言う: poll (読み取り)、engine (エンジン)、drain (書き出し)。

場所リスティングでの名前入り方回数何であるか、その証拠
$D385 (バンク 7)b7_engine_D385呼び出し162,665
ジャンプエンジン: テーブル 19、そこを通った跳躍 162,643
$D367 (バンク 7)b7_poll_D367呼び出し128,450
パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4
パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4
$FFCC (バンク 7)b7_bank_FFCC呼び出し64,522
バンク切り替え: 書き込み 322,610、ブランク中 321,205、描画中 1,405
$C07B (バンク 7)b7_nmi毎フレーム(NMI)64,345
乱数のバイト: 走ったフレーム 64,377、バイト $051A,$051B,$051C,$051D、回転 4、排他的論理和 1
スクロールの書き手: 走ったフレーム 64,377、ブランク中の書き込み 236,320
$D2EC (バンク 7)b7_drain_D2EC呼び出し64,221
パレットの書き手: 走ったフレーム 64,221、書き込み 6,496
画面メモリへの書き手: 走ったフレーム 64,221、書き込み 589,837、ブランク中 529,595、描画中 60,242
$8000 (バンク 6)b6_sound_8000呼び出し54,157
サウンドドライバ: 走ったフレーム 53,939、書き込み 108,314
$C032 (バンク 7)b7_bank_C032呼び出し54,157
バンク切り替え: 書き込み 270,785、ブランク中 269,150、描画中 1,635
$A8CF (バンク 5)b5_sprites_A8CF呼び出し35,060
スプライトの書き手: 走ったフレーム 34,795、スプライトのページへの書き込み 210,883
$A918 (バンク 5)b5_sprites_A918呼び出し35,060
スプライトの書き手: 走ったフレーム 32,596、スプライトのページへの書き込み 145,563
$FFC9 (バンク 7)b7_bank_FFC9呼び出し22,804
バンク切り替え: 書き込み 114,020、ブランク中 620、描画中 113,400
$FFC5 (バンク 7)b7_bank_FFC5呼び出し19,603
バンク切り替え: 書き込み 98,007、ブランク中 22,477、描画中 75,530
$D24C (バンク 7)b7_sprites_D24C呼び出し18,901
スプライトの書き手: 走ったフレーム 19,058、スプライトのページへの書き込み 1,209,664
$B574 (バンク 5)b5_sprites_B574呼び出し17,961
スプライトの書き手: 走ったフレーム 17,961、スプライトのページへの書き込み 71,844
$B596 (バンク 5)b5_sprites_B596呼び出し17,961
スプライトの書き手: 走ったフレーム 17,961、スプライトのページへの書き込み 215,532
$ED7A (バンク 7)b7_sprites_ED7A呼び出し16,820
スプライトの書き手: 走ったフレーム 8,410、スプライトのページへの書き込み 234,108
$B678 (バンク 5)b5_dispatch_B678テーブル10,212
スプライトの書き手: 走ったフレーム 10,212、スプライトのページへの書き込み 416,098
$D250 (バンク 7)b7_sprites_D250呼び出し10,084
スプライトの書き手: 走ったフレーム 10,083、スプライトのページへの書き込み 635,292
$C1C1 (バンク 7)b7_bank_C1C1呼び出し10,064
バンク切り替え: 書き込み 50,315、ブランク中 44,921、描画中 5,394
$C1CD (バンク 7)b7_bank_C1CD呼び出し5,208
バンク切り替え: 書き込み 25,900、ブランク中 13,320、描画中 12,580
$968D (バンク 0)b0_sprites_968D呼び出し5,205
スプライトの書き手: 走ったフレーム 5,204、スプライトのページへの書き込み 41,640
$E070 (バンク 7)b7_bank_E070呼び出し4,993
バンク切り替え: 書き込み 24,965、ブランク中 0、描画中 24,965
$80E5 (バンク 0)b0_sprites_80E5呼び出し4,962
スプライトの書き手: 走ったフレーム 4,962、スプライトのページへの書き込み 104,672
$9888 (バンク 0)b0_sprites_9888呼び出し4,962
スプライトの書き手: 走ったフレーム 4,962、スプライトのページへの書き込み 1,352
$D3CC (バンク 7)b7_dispatch_D3CCテーブル4,962
画面の分割: 走ったフレーム 4,962、描画中のスクロール書き込み 9,924、描画中のステータス読み 1,028,693
$E1DD (バンク 7)b7_bank_E1DD呼び出し4,962
バンク切り替え: 書き込み 24,810、ブランク中 0、描画中 24,810
$EBF0 (バンク 7)b7_sprites_EBF0呼び出し4,962
スプライトの書き手: 走ったフレーム 4,962、スプライトのページへの書き込み 9,834
$C3ED (バンク 7)b7_dispatch_C3EDテーブル3,448
スプライトの書き手: 走ったフレーム 3,448、スプライトのページへの書き込み 6,896
$FED0 (バンク 7)b7_bank_FED0呼び出し2,053
バンク切り替え: 書き込み 10,265、ブランク中 0、描画中 10,265
$D382 (バンク 7)b7_engine_D382呼び出し1,090
ジャンプエンジン: テーブル 1、そこを通った跳躍 1,090
$9DB0 (バンク 0)b0_split_9DB0呼び出し243
画面の分割: 走ったフレーム 243、描画中のスクロール書き込み 486、描画中のステータス読み 62,584
$C24F (バンク 7)b7_bank_C24F呼び出し140
バンク切り替え: 書き込み 700、ブランク中 0、描画中 700
$FFB1 (バンク 7)b7_bank_FFB1呼び出し135
バンク切り替え: 書き込み 675、ブランク中 365、描画中 310
$FF9D (バンク 7)b7_bank_FF9D呼び出し104
バンク切り替え: 書き込み 520、ブランク中 365、描画中 155
$A8C1 (バンク 5)b5_sprites_A8C1呼び出し74
スプライトの書き手: 走ったフレーム 74、スプライトのページへの書き込み 18,944
$BF9D (バンク 5)b5_bank_BF9D呼び出し73
バンク切り替え: 書き込み 365、ブランク中 0、描画中 365
$BFB1 (バンク 5)b5_bank_BFB1呼び出し73
バンク切り替え: 書き込み 365、ブランク中 0、描画中 365
$FF70 (バンク 7)b7_reset電源投入73
バンク切り替え: 書き込み 292、ブランク中 292、描画中 0
$DFDB (バンク 7)b7_bank_DFDB呼び出し70
バンク切り替え: 書き込み 350、ブランク中 0、描画中 350
$96A8 (バンク 0)b0_random_96A8呼び出し62
乱数のバイト: 走ったフレーム 31、バイト $074F、回転 2、排他的論理和 1
スプライトの書き手: 走ったフレーム 31、スプライトのページへの書き込み 496
$C62F (バンク 7)b7_dispatch_C62Fテーブル30
スプライトの書き手: 走ったフレーム 30、スプライトのページへの書き込み 120
$98A6 (バンク 0)b0_sprites_98A6呼び出し28
スプライトの書き手: 走ったフレーム 28、スプライトのページへの書き込み 168
$D55E (バンク 7)b7_sprites_D55E呼び出し28
スプライトの書き手: 走ったフレーム 28、スプライトのページへの書き込み 56
$BAB8 (バンク 5)呼び出し91,168
$F27D (バンク 7)呼び出し64,811
$D346 (バンク 7)呼び出し64,220
$D174 (バンク 7)呼び出し63,938
$D168 (バンク 7)呼び出し63,852
$821B (バンク 6)呼び出し54,157
$826A (バンク 6)呼び出し54,157
$A6D9 (バンク 5)呼び出し54,154
$810F (バンク 6)呼び出し36,062
$8116 (バンク 6)呼び出し36,062
$A6F0 (バンク 5)テーブル35,425
$EAE8 (バンク 7)呼び出し30,622
$D56D (バンク 7)呼び出し29,772
$D5DA (バンク 7)呼び出し29,772
$D603 (バンク 7)テーブル29,772
$815E (バンク 6)呼び出し27,316
$816B (バンク 6)呼び出し27,316
$D625 (バンク 7)呼び出し26,082
$850C (バンク 1)呼び出し25,629
$A6DD (バンク 0)呼び出し24,810
$B8D2 (バンク 5)呼び出し24,315
$A737 (バンク 5)テーブル24,081
$A795 (バンク 5)呼び出し22,978
$B22D (バンク 5)テーブル18,675
$B5EA (バンク 5)呼び出し16,210
$B623 (バンク 5)呼び出し16,210
$AC07 (バンク 5)呼び出し16,091
$B5B5 (バンク 5)呼び出し15,942
$B663 (バンク 5)呼び出し15,214
$AB6D (バンク 5)テーブル10,979
$B3CF (バンク 5)テーブル10,388
$9000 (バンク 6)呼び出し10,187
$920B (バンク 6)呼び出し10,187
$92F4 (バンク 6)呼び出し10,187
$9408 (バンク 6)呼び出し10,187
$95A7 (バンク 6)呼び出し10,187
$990B (バンク 6)呼び出し10,187
$9B18 (バンク 6)呼び出し10,187
$E1B8 (バンク 7)呼び出し9,986
$E1BE (バンク 7)呼び出し9,986
$C2CA (バンク 7)呼び出し9,784
$C2E6 (バンク 7)テーブル9,752
$B242 (バンク 5)テーブル8,287
$B261 (バンク 5)テーブル8,105
$B502 (バンク 5)呼び出し8,105
$B5D8 (バンク 5)呼び出し8,105
$B603 (バンク 5)呼び出し8,105
$B63C (バンク 5)呼び出し8,105
$B529 (バンク 5)呼び出し7,837
$815A (バンク 6)呼び出し5,379
$8167 (バンク 6)呼び出し5,379
$C1DD (バンク 7)呼び出し5,183
$9038 (バンク 6)呼び出し5,180
$CF30 (バンク 7)呼び出し5,180
$9097 (バンク 6)呼び出し5,174
$E079 (バンク 7)呼び出し4,993
$8DC3 (バンク 0)呼び出し4,962
$903A (バンク 0)呼び出し4,962
$9235 (バンク 0)呼び出し4,962
$97FA (バンク 0)呼び出し4,962
$9847 (バンク 0)呼び出し4,962
$9925 (バンク 0)呼び出し4,962
$A6D2 (バンク 0)呼び出し4,962
$D5A7 (バンク 7)呼び出し4,962
$E1E6 (バンク 7)呼び出し4,962
$92BF (バンク 0)テーブル4,932
$93BC (バンク 0)呼び出し4,932
$9483 (バンク 0)呼び出し4,932
$94C5 (バンク 0)呼び出し4,932
$959C (バンク 0)呼び出し4,932
$9031 (バンク 6)呼び出し4,926
$9089 (バンク 6)呼び出し4,926
$DEE7 (バンク 7)呼び出し4,898
$D1CE (バンク 7)呼び出し4,866
$9610 (バンク 0)呼び出し4,622
$9A04 (バンク 0)呼び出し4,347
$DF56 (バンク 7)呼び出し3,658
$C397 (バンク 7)テーブル3,544
$D15C (バンク 7)呼び出し3,544
$814F (バンク 6)呼び出し2,465
$C947 (バンク 7)呼び出し2,077
$8120 (バンク 6)呼び出し2,075
$9AB8 (バンク 0)テーブル2,053
$C82B (バンク 7)呼び出し1,984
$8147 (バンク 6)呼び出し1,873
$906F (バンク 6)呼び出し1,557
$C988 (バンク 7)呼び出し1,550
$C944 (バンク 7)呼び出し1,271
$CF3C (バンク 7)テーブル1,090
$9A30 (バンク 0)呼び出し1,052
$9AA8 (バンク 0)呼び出し1,047
$9A77 (バンク 0)テーブル1,030
$D120 (バンク 7)テーブル966
$814B (バンク 6)呼び出し958
$C95C (バンク 7)呼び出し806
$C95F (バンク 7)呼び出し744
$9042 (バンク 6)呼び出し734
$80EE (バンク 1)テーブル713
$8247 (バンク 1)呼び出し713
$C912 (バンク 7)呼び出し713
$818C (バンク 6)呼び出し710
$A2D4 (バンク 0)呼び出し672
$BA6F (バンク 5)呼び出し594
$D19B (バンク 7)呼び出し589
$9B13 (バンク 0)テーブル510
$FD82 (バンク 7)呼び出し510
$9067 (バンク 6)呼び出し464
$821D (バンク 1)テーブル434
$906B (バンク 6)呼び出し420
$F2D3 (バンク 7)呼び出し400
$D263 (バンク 7)呼び出し354
$D261 (バンク 7)呼び出し323
$D266 (バンク 7)呼び出し323
$A3B3 (バンク 0)呼び出し280
$A558 (バンク 0)呼び出し280
$A56B (バンク 0)呼び出し280
$A589 (バンク 0)呼び出し280
$8201 (バンク 1)呼び出し279
$BA40 (バンク 5)呼び出し273
$AE15 (バンク 5)テーブル255
$959D (バンク 6)呼び出し233
$AEC1 (バンク 5)呼び出し231
$ACFA (バンク 5)呼び出し222
$AE55 (バンク 5)テーブル219
$AF1F (バンク 5)テーブル219
$AC31 (バンク 5)テーブル191
$8293 (バンク 6)呼び出し170
$9B19 (バンク 0)呼び出し153
$A1DD (バンク 0)テーブル152
$B24E (バンク 5)テーブル145
$C258 (バンク 7)呼び出し140
$A5A4 (バンク 0)呼び出し122
$D29C (バンク 7)呼び出し104
$BA18 (バンク 5)呼び出し102
$AC73 (バンク 5)テーブル99
$ACA8 (バンク 5)テーブル99
$81F3 (バンク 1)テーブル93
$DF4C (バンク 7)呼び出し93
$B40A (バンク 5)テーブル91
$A6A0 (バンク 5)呼び出し73
$A70F (バンク 5)テーブル73
$A72E (バンク 5)テーブル73
$ADE0 (バンク 5)呼び出し73
$AF2B (バンク 5)テーブル73
$AF34 (バンク 5)テーブル73
$B960 (バンク 5)呼び出し73
$D281 (バンク 7)呼び出し73
$A49F (バンク 0)呼び出し70
$A546 (バンク 0)呼び出し70
$DFE4 (バンク 7)呼び出し70
$CB18 (バンク 7)呼び出し64
$A2FE (バンク 0)テーブル60
$A35F (バンク 0)呼び出し60
$A5E3 (バンク 0)呼び出し60
$B412 (バンク 5)テーブル54
$B3DF (バンク 5)テーブル34
$B3F4 (バンク 5)テーブル34
$AF02 (バンク 5)テーブル33
$A057 (バンク 0)呼び出し32
$A6E5 (バンク 5)テーブル32
$AA08 (バンク 0)呼び出し32
$B911 (バンク 5)呼び出し32
$BA6C (バンク 5)呼び出し32
$C34F (バンク 7)テーブル32
$C3A5 (バンク 7)テーブル32
$C3B5 (バンク 7)テーブル32
$C3E6 (バンク 7)テーブル32
$CB35 (バンク 7)テーブル32
$CC50 (バンク 7)呼び出し32
$CC97 (バンク 7)呼び出し32
$CD40 (バンク 7)テーブル32
$D293 (バンク 7)呼び出し32
$812F (バンク 1)テーブル31
$81A3 (バンク 1)テーブル31
$8340 (バンク 1)テーブル31
$C4CB (バンク 7)呼び出し31
$C63E (バンク 7)テーブル31
$C690 (バンク 7)呼び出し31
$C70C (バンク 7)テーブル31
$C755 (バンク 7)呼び出し31
$C819 (バンク 7)呼び出し31
$C89D (バンク 7)呼び出し31
$C927 (バンク 7)呼び出し31
$D05B (バンク 7)テーブル31
$D0FC (バンク 7)テーブル31
$D25E (バンク 7)テーブル31
$D269 (バンク 7)テーブル31
$D27D (バンク 7)呼び出し31
$9047 (バンク 0)テーブル30
$90ED (バンク 0)呼び出し30
$99D4 (バンク 0)呼び出し30
$E030 (バンク 7)呼び出し30
$942B (バンク 0)呼び出し19
$A3D7 (バンク 0)テーブル11
$AD7C (バンク 5)呼び出し11
$A57E (バンク 0)呼び出し10
$A26B (バンク 0)テーブル7
$AEEE (バンク 5)呼び出し7
$9064 (バンク 6)呼び出し6
$A148 (バンク 0)テーブル6
$A347 (バンク 0)テーブル6
$AF19 (バンク 5)テーブル2
$960B (バンク 0)呼び出し1
$A338 (バンク 0)テーブル1

待つ場所

規則が名付けたループのうち、ルーチンの内側にあって、それ自身はコードの入口ではないもの。

場所リスティングでの名前何であるか、その証拠
$ABE5 (バンク 5)b5_wait_ABE5
フレーム待ち: 待つ相手のバイト $0033、入った回数 818、周回 24、一周ごとの呼び出し 2、フレーム割り込みの下での書き込み 275、全フレーム 65,213
フレーム待ち: 待つ相手のバイト $0761、入った回数 818、周回 24、一周ごとの呼び出し 2、フレーム割り込みの下での書き込み 1,088、全フレーム 65,213
$C010 (バンク 7)b7_wait_C010
フレーム待ち: 待つ相手のバイト $0736、入った回数 91、周回 79,438,110、フレーム割り込みの下での書き込み 1,067、全フレーム 65,213

ジャンプに使うテーブル

ゲームがその中から一つを選ぶ、アドレスのテーブル。ジャンプエンジンへの呼び出しの直後にあるものもあれば、カートリッジのどこかにあるものもある。後者は、ゲームが通って跳んだアドレスがどこから読み込まれたかで見つける。アドレスを積んでそこへ戻ることで跳ぶゲームもあれば、テーブルを二つに分けて、アドレスの下位バイトをある場所に、上位バイトを別の場所に置くゲームもある。どちらも同じやり方で見つける。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。

場所届き方項目選ばれた数選んだバイト
$903F (バンク 0)呼び出しの直後22$00B5
$9A1E (バンク 0)呼び出しの直後94$0740
$9DE4 (バンク 0)呼び出しの直後97$0524
$8133 (バンク 1)呼び出しの直後81$0731
$A6DF (バンク 5)呼び出しの直後33$076C
$A705 (バンク 5)呼び出しの直後55$0736
$ABEB (バンク 5)呼び出しの直後66$0761
$AE4F (バンク 5)呼び出しの直後33$0035
$B236 (バンク 5)呼び出しの直後22$0736
$B248 (バンク 5)呼び出しの直後33$073B
$B3D5 (バンク 5)呼び出しの直後55$073B
$C2D8 (バンク 7)呼び出しの直後22$076C
$C2EC (バンク 7)呼び出しの直後18$0736
$C39D (バンク 7)呼び出しの直後44$0738
$CF42 (バンク 7)呼び出しの直後55$0769
$D5F1 (バンク 7)ポインタ経由11$00B6, $00B7, $00B8, $00B9

ルーチンが共有するメモリ

あるルーチンが書き、別のルーチンが読んだメモリは 1,470 バイト。添字を通して届いた場所は 96 か所で、メモリの中のテーブルや、物体の枠の並びはそう見える。

004080C0$0000$0100$0200$0300$0400$0500$0600$0700
コンソールのメモリ 2,048 バイト。一行が 256 バイト。 行の下の印は、最も忙しい共有バイト 24 個のうちの一つ。 二行目は、プロセッサがスタックを置くページだ。 添字で届いた範囲のうち、どの表にも属さないものは描いていない: メモリを消すループは、ほとんどすべてのバイトに届くからだ。

添字で届いた範囲: 位置を含むもの、次いで最も長いもの

起点届いたバイト命令含まれる位置
$02002566
$03002562
$04002562
$07002562
$05002561
$06002561
$00002242
$03021636
$03011631
$02671083
$03A4592
$0201575

最も忙しい共有バイト 24 個

バイト読み書き書くルーチン読むルーチン
$073679,549,38466
$00004,342,08666
$00012,363,57966
$00F51,848,29236
$00021,524,21666
$0003997,02166
$000E931,83666
$000F870,62666
$000A630,48765
$000C578,10166
$0006560,33366
$000D521,84866
$00F7515,16226
$004D471,93566
$00FF454,46566
$0008391,57566
$003B366,12566
$0004357,17766
$072C345,90846
$0012336,25646
$0010290,15066
$072A285,05556
$00E9218,41664
$000B206,58865

このページはゲームのバイトを一つも見せない。これらの数を読み取ったリスティングは、カートリッジと一緒に留まる。

すべてのゲーム