NEStinymachines

Teenage Mutant Ninja Turtles (USA)

Teenage Mutant Ninja Turtles (USA) は MMC1 の基板に載り、プログラムは 131,072 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 40 本残した。それらを 23,980 フレームにわたって再生すると、プログラムのうち 14,264 バイト、11 パーセントが実行された。

規則が名付けたもの

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

ゲームのコードに入った場所のすべて。呼び出し、割り込み、テーブル経由のジャンプのどれかで入る。規則が名付けたものを先に、規則が見たものと一緒に並べる。

場所入り方回数何であるか、その証拠
$C0C3 (バンク 7)呼び出し162,202
スプライトの書き手: 走ったフレーム 10,174、スプライトのページへの書き込み 101,040
$C702 (バンク 7)呼び出し41,796
ジャンプエンジン: テーブル 11、そこを通った跳躍 41,796
$CEA7 (バンク 7)呼び出し41,026
バンク切り替え: 書き込み 205,084、ブランク中 112,989、描画中 92,095
$C50D (バンク 7)呼び出し26,312
パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 3
パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 3
$CEA5 (バンク 7)呼び出し25,605
バンク切り替え: 書き込み 127,978、ブランク中 200、描画中 127,778
$C3A3 (バンク 7)毎フレーム(NMI)13,200
割り込みの中のゲーム: 走ったフレーム 13,281、全フレーム 13,480、待機の場所 $C395
$C460 (バンク 7)呼び出し13,200
スクロールの書き手: 走ったフレーム 13,200、ブランク中の書き込み 25,848
$CED5 (バンク 7)呼び出し13,200
バンク切り替え: 書き込み 65,950、ブランク中 49,876、描画中 16,074
$C26C (バンク 7)呼び出し13,196
パレットの書き手: 走ったフレーム 13,196、書き込み 4,736
画面メモリへの書き手: 走ったフレーム 13,196、書き込み 116,494、ブランク中 116,494、描画中 0
$C001 (バンク 7)呼び出し13,185
スプライトの書き手: 走ったフレーム 13,236、スプライトのページへの書き込み 565,317
$C190 (バンク 7)呼び出し12,854
スプライトの書き手: 走ったフレーム 11,935、スプライトのページへの書き込み 414,325
$8BDA (バンク 0)呼び出し11,245
サウンドドライバ: 走ったフレーム 9,057、書き込み 21,910
$C1C6 (バンク 7)呼び出し10,136
スプライトの書き手: 走ったフレーム 10,134、スプライトのページへの書き込み 45,472
$8001 (バンク 0)呼び出し5,406
画面の分割: 走ったフレーム 5,410、描画中のスクロール書き込み 3,540、描画中のステータス読み 1,744,366
$CC18 (バンク 7)テーブル5,406
バンク切り替え: 書き込み 3,545、ブランク中 0、描画中 3,545
$D042 (バンク 7)呼び出し4,697
バンク切り替え: 書き込み 23,484、ブランク中 20、描画中 23,464
$9AD3 (バンク 6)呼び出し4,644
二つのものを比べる所: 命令 6、バイトの組 7、バイトの総数 9、比べた回数 6,154、横の位置のバイト $0480,$0485,$0486,$0487,$0488、縦の位置のバイト $0051,$0460,$0468,$04B5
$D04D (バンク 7)呼び出し2,334
バンク切り替え: 書き込み 11,669、ブランク中 0、描画中 11,669
$C1FA (バンク 7)呼び出し1,585
スプライトの書き手: 走ったフレーム 1,585、スプライトのページへの書き込み 50,687
$AA25 (バンク 4)テーブル1,544
バンク切り替え: 書き込み 6,950、ブランク中 0、描画中 6,950
$CE56 (バンク 7)呼び出し1,499
バンク切り替え: 書き込み 7,463、ブランク中 200、描画中 7,263
$D104 (バンク 7)呼び出し711
バンク切り替え: 書き込み 3,554、ブランク中 0、描画中 3,554
$B8C9 (バンク 3)呼び出し260
スプライトの書き手: 走ったフレーム 260、スプライトのページへの書き込み 1,040
$CEC0 (バンク 7)呼び出し180
バンク切り替え: 書き込み 900、ブランク中 0、描画中 900
$CE8A (バンク 7)呼び出し172
バンク切り替え: 書き込み 860、ブランク中 200、描画中 660
$CEF0 (バンク 7)呼び出し134
バンク切り替え: 書き込み 670、ブランク中 0、描画中 670
$CE6F (バンク 7)呼び出し132
バンク切り替え: 書き込み 660、ブランク中 200、描画中 460
$DB71 (バンク 7)呼び出し120
バンク切り替え: 書き込み 600、ブランク中 0、描画中 600
$8381 (バンク 5)呼び出し78
二つのものを比べる所: 命令 2、バイトの組 2、バイトの総数 3、比べた回数 306、縦の位置のバイト $0051,$0460,$04B5
$A634 (バンク 4)呼び出し60
バンク切り替え: 書き込み 20、ブランク中 0、描画中 20
$CBBF (バンク 7)テーブル46
バンク切り替え: 書き込み 225、ブランク中 0、描画中 225
$D22C (バンク 7)呼び出し40
バンク切り替え: 書き込み 200、ブランク中 0、描画中 200
$FFD8 (バンク 7)電源投入40
バンク切り替え: 書き込み 480、ブランク中 480、描画中 0
スプライトの書き手: 走ったフレーム 13,316、スプライトのページへの書き込み 10,240
$D0D1 (バンク 7)呼び出し33
バンク切り替え: 書き込み 165、ブランク中 0、描画中 165
$D0B0 (バンク 7)呼び出し16
バンク切り替え: 書き込み 80、ブランク中 0、描画中 80
$D0C6 (バンク 7)呼び出し16
バンク切り替え: 書き込み 80、ブランク中 0、描画中 80
$CE8C (バンク 7)呼び出し7
バンク切り替え: 書き込み 35、ブランク中 0、描画中 35
$9F5C (バンク 4)呼び出し3
バンク切り替え: 書き込み 15、ブランク中 0、描画中 15
$CA94 (バンク 7)呼び出し84,923
$8F96 (バンク 0)呼び出し61,854
$8671 (バンク 0)呼び出し61,650
$CA92 (バンク 7)呼び出し56,710
$8010 (バンク 6)呼び出し37,344
$8CE8 (バンク 0)呼び出し37,332
$9617 (バンク 6)呼び出し25,296
$DE24 (バンク 7)呼び出し23,224
$DD8B (バンク 7)呼び出し23,104
$DDC3 (バンク 7)呼び出し23,104
$DE02 (バンク 7)呼び出し23,104
$DE1A (バンク 7)呼び出し23,104
$DE3A (バンク 7)呼び出し23,104
$ACBE (バンク 4)呼び出し15,516
$C48E (バンク 7)呼び出し13,493
$C4B3 (バンク 7)呼び出し13,493
$8612 (バンク 0)呼び出し13,196
$8644 (バンク 0)呼び出し13,196
$C532 (バンク 7)呼び出し13,186
$F481 (バンク 7)呼び出し13,185
$C413 (バンク 7)呼び出し13,156
$C4C6 (バンク 7)呼び出し13,156
$C4D6 (バンク 7)呼び出し13,156
$C551 (バンク 7)呼び出し13,156
$C4F2 (バンク 7)呼び出し13,074
$F072 (バンク 7)呼び出し12,594
$DEA5 (バンク 7)呼び出し11,612
$844E (バンク 5)呼び出し9,197
$F089 (バンク 7)呼び出し8,009
$CB07 (バンク 7)テーブル7,358
$87B0 (バンク 0)呼び出し7,055
$C71B (バンク 7)呼び出し6,842
$DEFC (バンク 7)呼び出し6,814
$CDB9 (バンク 7)呼び出し5,738
$C564 (バンク 7)テーブル5,732
$808C (バンク 6)呼び出し5,549
$AC05 (バンク 4)呼び出し5,424
$9B11 (バンク 6)呼び出し5,405
$CA58 (バンク 7)呼び出し4,284
$C60F (バンク 7)テーブル4,280
$EF21 (バンク 7)呼び出し3,939
$87FA (バンク 0)テーブル3,554
$8032 (バンク 5)呼び出し3,234
$8049 (バンク 5)呼び出し3,234
$8077 (バンク 5)呼び出し3,234
$EF03 (バンク 7)呼び出し3,234
$F161 (バンク 7)呼び出し3,234
$EF9D (バンク 7)呼び出し3,118
$DEE0 (バンク 7)呼び出し3,094
$EFA3 (バンク 7)呼び出し3,080
$83D6 (バンク 5)呼び出し3,074
$9851 (バンク 5)テーブル3,074
$8466 (バンク 5)呼び出し3,072
$DF23 (バンク 7)呼び出し2,990
$D9F2 (バンク 7)テーブル2,941
$D9E3 (バンク 7)テーブル2,927
$DFDB (バンク 7)呼び出し2,888
$D9D8 (バンク 7)テーブル2,880
$D9D1 (バンク 7)テーブル2,864
$CFF3 (バンク 7)呼び出し2,363
$D000 (バンク 7)呼び出し2,363
$D02A (バンク 7)呼び出し2,363
$DEBB (バンク 7)呼び出し2,363
$E3F6 (バンク 7)呼び出し2,363
$F18D (バンク 7)呼び出し2,363
$8055 (バンク 0)呼び出し2,334
$CF10 (バンク 7)呼び出し2,334
$CF18 (バンク 7)呼び出し2,334
$CF42 (バンク 7)呼び出し2,334
$CF4A (バンク 7)呼び出し2,334
$CFC5 (バンク 7)呼び出し2,334
$CFCD (バンク 7)呼び出し2,334
$E145 (バンク 7)呼び出し2,334
$996F (バンク 4)呼び出し2,284
$8795 (バンク 0)テーブル2,281
$9989 (バンク 4)呼び出し2,272
$8081 (バンク 6)呼び出し2,160
$8C71 (バンク 0)呼び出し2,014
$8F86 (バンク 0)呼び出し1,900
$EF93 (バンク 7)呼び出し1,633
$CBA7 (バンク 7)呼び出し1,604
$8672 (バンク 6)呼び出し1,591
$864A (バンク 6)呼び出し1,578
$A8B5 (バンク 6)呼び出し1,567
$AB30 (バンク 6)呼び出し1,567
$DA35 (バンク 7)呼び出し1,554
$E218 (バンク 7)呼び出し1,545
$A8C7 (バンク 6)呼び出し1,445
$DF53 (バンク 7)呼び出し1,444
$DF8D (バンク 7)呼び出し1,444
$E019 (バンク 7)呼び出し1,444
$D4C8 (バンク 7)テーブル1,426
$DD08 (バンク 7)呼び出し1,426
$C6A8 (バンク 7)呼び出し1,373
$C5E1 (バンク 7)テーブル1,344
$CA9F (バンク 7)呼び出し1,278
$8CBD (バンク 0)呼び出し1,153
$80CC (バンク 6)呼び出し1,080
$CAA4 (バンク 7)呼び出し1,030
$86F3 (バンク 0)呼び出し996
$8B27 (バンク 0)呼び出し903
$EF48 (バンク 7)呼び出し859
$9C1D (バンク 6)呼び出し789
$9C2A (バンク 6)テーブル789
$9C69 (バンク 4)呼び出し789
$E152 (バンク 7)呼び出し789
$8D70 (バンク 0)テーブル745
$A24D (バンク 4)テーブル743
$871E (バンク 0)呼び出し722
$9BE4 (バンク 4)呼び出し705
$EF0D (バンク 7)呼び出し705
$842B (バンク 0)呼び出し591
$B91E (バンク 3)呼び出し520
$EFC7 (バンク 7)呼び出し520
$8F37 (バンク 0)テーブル467
$8F45 (バンク 0)呼び出し455
$8C75 (バンク 0)呼び出し441
$8CFB (バンク 0)テーブル441
$8D22 (バンク 0)テーブル420
$87A9 (バンク 0)テーブル405
$841D (バンク 0)呼び出し404
$8450 (バンク 0)呼び出し404
$846E (バンク 0)呼び出し404
$81AC (バンク 0)呼び出し381
$AC77 (バンク 3)呼び出し330
$9016 (バンク 0)呼び出し264
$AA5C (バンク 3)テーブル260
$ADD1 (バンク 3)呼び出し260
$C982 (バンク 7)呼び出し250
$8E66 (バンク 0)テーブル228
$84FC (バンク 6)呼び出し222
$C792 (バンク 7)呼び出し218
$F1D4 (バンク 7)呼び出し212
$F1EF (バンク 7)呼び出し212
$817A (バンク 0)テーブル206
$82E8 (バンク 0)呼び出し206
$8409 (バンク 0)呼び出し206
$8413 (バンク 0)呼び出し206
$8084 (バンク 0)テーブル202
$80CC (バンク 0)テーブル194
$811F (バンク 0)テーブル187
$9057 (バンク 0)呼び出し182
$F062 (バンク 7)呼び出し179
$C962 (バンク 7)呼び出し171
$8FA3 (バンク 0)呼び出し148
$A6AF (バンク 4)呼び出し148
$A8BE (バンク 6)呼び出し122
$DC17 (バンク 7)呼び出し120
$DC58 (バンク 7)呼び出し120
$DE46 (バンク 7)呼び出し120
$F72E (バンク 7)呼び出し118
$C6D2 (バンク 7)呼び出し112
$845E (バンク 6)呼び出し111
$8469 (バンク 6)呼び出し111
$88F8 (バンク 5)呼び出し108
$CAAC (バンク 7)呼び出し96
$F06A (バンク 7)呼び出し93
$C6B9 (バンク 7)呼び出し79
$F77E (バンク 7)呼び出し79
$8907 (バンク 5)テーブル78
$8570 (バンク 6)呼び出し74
$8DA0 (バンク 0)テーブル72
$C59C (バンク 7)テーブル68
$EFBC (バンク 7)呼び出し65
$CAAA (バンク 7)呼び出し64
$8DB8 (バンク 0)テーブル62
$D992 (バンク 7)呼び出し60
$F718 (バンク 7)呼び出し58
$F740 (バンク 7)呼び出し58
$8950 (バンク 5)呼び出し57
$8146 (バンク 6)呼び出し55
$EED3 (バンク 7)呼び出し55
$8634 (バンク 6)呼び出し52
$8642 (バンク 6)呼び出し52
$CB5C (バンク 7)テーブル51
$D34B (バンク 7)呼び出し51
$D536 (バンク 7)呼び出し51
$8593 (バンク 5)呼び出し49
$978E (バンク 5)テーブル49
$EF89 (バンク 7)呼び出し47
$AAFA (バンク 6)呼び出し45
$85F3 (バンク 0)呼び出し43
$8F55 (バンク 0)テーブル43
$C498 (バンク 7)呼び出し40
$C4A3 (バンク 7)呼び出し40
$C571 (バンク 7)テーブル40
$FFDD (バンク 7)割り込み(IRQ)40
$C93C (バンク 7)呼び出し39
$AAD9 (バンク 6)呼び出し38
$84AD (バンク 6)呼び出し37
$89AD (バンク 5)呼び出し37
$C6C7 (バンク 7)呼び出し37
$9662 (バンク 4)呼び出し33
$9870 (バンク 5)テーブル33
$C65C (バンク 7)テーブル33
$C669 (バンク 7)テーブル33
$C6C2 (バンク 7)呼び出し33
$C6D6 (バンク 7)呼び出し33
$CB3E (バンク 7)テーブル33
$CB54 (バンク 7)テーブル33
$D2D0 (バンク 7)テーブル33
$EF3D (バンク 7)呼び出し33
$EFF4 (バンク 7)呼び出し33
$AB0D (バンク 6)呼び出し32
$E838 (バンク 7)呼び出し32
$A618 (バンク 4)呼び出し30
$AB03 (バンク 3)呼び出し28
$AB5B (バンク 3)呼び出し28
$AB75 (バンク 3)呼び出し28
$8DE5 (バンク 0)テーブル21
$AA4A (バンク 3)テーブル21
$B695 (バンク 3)呼び出し21
$9F35 (バンク 4)呼び出し19
$95C9 (バンク 6)呼び出し18
$9FB0 (バンク 4)テーブル18
$A5F0 (バンク 4)呼び出し18
$A764 (バンク 4)呼び出し18
$AA5B (バンク 4)テーブル18
$A69F (バンク 4)呼び出し16
$EF3F (バンク 7)呼び出し16
$896B (バンク 5)呼び出し14
$D548 (バンク 7)呼び出し14
$D551 (バンク 7)呼び出し14
$D574 (バンク 7)呼び出し14
$F75E (バンク 7)呼び出し14
$CF20 (バンク 7)呼び出し13
$9D0C (バンク 4)テーブル12
$A23C (バンク 4)テーブル12
$A3B4 (バンク 4)呼び出し11
$A3DC (バンク 4)呼び出し11
$A0EA (バンク 4)呼び出し10
$8721 (バンク 0)呼び出し9
$9BAD (バンク 4)呼び出し8
$A106 (バンク 4)呼び出し8
$A612 (バンク 4)呼び出し8
$A936 (バンク 3)テーブル7
$A99A (バンク 3)テーブル7
$A9AB (バンク 3)テーブル7
$A9B0 (バンク 3)テーブル7
$A9B3 (バンク 3)テーブル7
$AA1C (バンク 3)テーブル7
$AA2A (バンク 3)テーブル7
$AAC2 (バンク 3)呼び出し7
$ABC6 (バンク 3)呼び出し7
$ADF4 (バンク 3)テーブル7
$C975 (バンク 7)呼び出し7
$8DB4 (バンク 0)テーブル5
$DBE4 (バンク 7)呼び出し4
$EF8C (バンク 7)呼び出し4
$9F22 (バンク 4)呼び出し3
$E127 (バンク 7)呼び出し3
$A404 (バンク 4)テーブル2
$E68A (バンク 7)テーブル2
$AFB3 (バンク 3)テーブル1
$AFBA (バンク 3)テーブル1

待つ場所

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

場所何であるか、その証拠
$C395 (バンク 7)
数える待機ループ: 数えるバイト $0045、周回 10,812,522、一フレームの周回 802、ループの外からの読み 33

ジャンプエンジンのテーブル

テーブルはそれぞれ、エンジンへの呼び出しの直後にある。項目は、走行が選ぶのを見た所までを数える。本当のテーブルはもっと長いかもしれない。最後の列は、その値が項目を選んだメモリのバイトで、追えた場合だけ書いてある: ゲームのモードか、物体の一つが今していることだ。

場所項目選ばれた数選んだバイト
$807C (バンク 0)44$001E
$A924 (バンク 3)99$00D0
$ADEC (バンク 3)11$008E
$AF46 (バンク 3)22
$9CB3 (バンク 4)136$0510
$AA1F (バンク 4)22$0510
$9C22 (バンク 6)21$005E
$C558 (バンク 7)54$001B
$C569 (バンク 7)44$001C
$CB26 (バンク 7)77$0034, $0617
$D9C9 (バンク 7)44$004F, $0051, $00A4

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

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

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

起点届いたバイト命令含まれる位置
$04601618縦 2
$04801617横 5
$04B0166縦 1
$004F41縦 1
$03002569
$04002564
$05002562
$07002562
$06002561
$02002536
$02012533
$02022533

位置と一緒に動くもの

少なくとも二つのルーチンが、位置の配列と一緒に、同じ範囲をたどった配列。画面上のものの表は、メモリの中ではこう見える: 性質ごとに配列が一つ、ものごとに枠が一つ。どの配列が位置を持つかは言える。ほかの配列のうち、どれが位置に足し込まれるか (速度がすること) と、どれがジャンプのテーブルの行き先を選ぶか (状態や種類がすること) も言える。残りが何を持つかは、まだ名付けていない。

枠配列ルーチン横の位置縦の位置位置に足し込まれる配列ジャンプを選ぶ配列一緒に動く配列
162523$0480$0460, $04B0$0470, $0490, $04C0, $04E0$0510$0400, $0410, $0420, $0430, $0440, $0450, $0470, $0490, $04C0, $04E0, $04F0, $0500, $0510, $0520, $0530, $0540, $0550, $0560, $0570, $0580, $0630, $0640

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

バイト読み書き書くルーチン読むルーチン
$004552,118,51322
$001E21,697,91226
$00082,315,62366
$00001,540,02066
$00011,306,14966
$0009758,98766
$0003685,61966
$0002662,55266
$000C642,67734
$0005616,59766
$0004482,43866
$0016365,55556
$0013298,86066
$0022286,79366
$0070151,18466
$000A145,45966
$001A140,76266
$00E1126,70246
$00E0126,66946
$00FF125,22266
$0011119,49766
$0010106,98966
$00F778,52423
$000B76,52166

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

すべてのゲーム