NEStinymachines

Tetris (USA)

Tetris (USA) は MMC1 の基板に載り、プログラムは 32,768 バイト。電源投入から 400 歩のクロールが、新しいコードを見つけた道筋を 33 本残した。それらを 32,313 フレームにわたって再生すると、プログラムのうち 5,371 バイト、16 パーセントが実行された。

規則が名付けたもの

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

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

場所入り方回数何であるか、その証拠
$AB69 (バンク 0)呼び出し43,322
パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4
パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4
$AC82 (バンク 0)呼び出し30,073
ジャンプエンジン: テーブル 4、そこを通った跳躍 30,073
$AB47 (バンク 0)呼び出し24,059
乱数のバイト: 走ったフレーム 21,661、バイト $0017,$0018、回転 2、排他的論理和 1
$AC6A (バンク 0)呼び出し22,895
スプライトの書き手: 走ったフレーム 21,628、スプライトのページへの書き込み 5,842,818
$8005 (バンク 0)毎フレーム(NMI)21,661
スクロールの書き手: 走ったフレーム 21,661、ブランク中の書き込み 43,298
$E000 (バンク 1)呼び出し21,661
サウンドドライバ: 走ったフレーム 21,500、書き込み 21,661
$82B1 (バンク 0)テーブル18,728
スクロールの書き手: 走ったフレーム 18,728、ブランク中の書き込み 37,456
$8C27 (バンク 0)呼び出し3,403
スプライトの書き手: 走ったフレーム 1,977、スプライトのページへの書き込み 28,840
$9725 (バンク 0)呼び出し2,244
画面メモリへの書き手: 走ったフレーム 561、書き込み 3,000、ブランク中 3,000、描画中 0
$ACB7 (バンク 0)呼び出し711
バンク切り替え: 書き込み 3,555、ブランク中 650、描画中 2,905
$ACCB (バンク 0)呼び出し711
バンク切り替え: 書き込み 3,555、ブランク中 650、描画中 2,905
$94EE (バンク 0)テーブル561
パレットの書き手: 走ったフレーム 561、書き込み 561
$8A0A (バンク 0)呼び出し550
スプライトの書き手: 走ったフレーム 550、スプライトのページへの書き込み 8,811
$8BCE (バンク 0)呼び出し550
スプライトの書き手: 走ったフレーム 550、スプライトのページへの書き込み 8,496
$AA98 (バンク 0)呼び出し296
パレットの書き手: 走ったフレーム 276、書き込み 2,592
$ACA3 (バンク 0)呼び出し84
バンク切り替え: 書き込み 420、ブランク中 165、描画中 255
$ACDF (バンク 0)呼び出し33
バンク切り替え: 書き込み 165、ブランク中 165、描画中 0
$FF00 (バンク 1)電源投入33
バンク切り替え: 書き込み 66、ブランク中 66、描画中 0
スプライトの書き手: 走ったフレーム 889、スプライトのページへの書き込み 8,448
$82D1 (バンク 0)テーブル31
バンク切り替え: 書き込み 62、ブランク中 0、描画中 62
$83D7 (バンク 0)テーブル20
バンク切り替え: 書き込み 40、ブランク中 0、描画中 40
$9808 (バンク 0)呼び出し12
パレットの書き手: 走ったフレーム 12、書き込み 96
$AB8B (バンク 0)呼び出し43,321
$804B (バンク 0)呼び出し21,661
$9D51 (バンク 0)呼び出し21,661
$AB5E (バンク 0)呼び出し21,661
$AB9D (バンク 0)呼び出し21,661
$E194 (バンク 1)呼び出し21,642
$E19C (バンク 1)呼び出し21,642
$E1AC (バンク 1)呼び出し21,642
$E1B9 (バンク 1)呼び出し21,642
$E583 (バンク 1)呼び出し21,642
$AA2F (バンク 0)呼び出し21,338
$E5D0 (バンク 1)呼び出し7,397
$E766 (バンク 1)呼び出し7,397
$8161 (バンク 0)呼び出し3,989
$815D (バンク 0)テーブル3,873
$819B (バンク 0)呼び出し3,873
$85DA (バンク 0)テーブル2,372
$E735 (バンク 1)呼び出し1,976
$EA41 (バンク 1)呼び出し1,391
$E072 (バンク 1)呼び出し1,379
$E0B5 (バンク 1)呼び出し1,256
$E481 (バンク 1)テーブル756
$84AE (バンク 0)呼び出し706
$8174 (バンク 0)テーブル550
$8186 (バンク 0)テーブル550
$81B2 (バンク 0)呼び出し550
$8776 (バンク 0)呼び出し550
$87AE (バンク 0)呼び出し550
$8884 (バンク 0)テーブル550
$9CBF (バンク 0)テーブル550
$9E16 (バンク 0)テーブル550
$A37F (バンク 0)テーブル550
$9874 (バンク 0)呼び出し549
$9E27 (バンク 0)テーブル549
$81CF (バンク 0)テーブル530
$88AB (バンク 0)呼び出し530
$8914 (バンク 0)呼び出し530
$89AE (バンク 0)呼び出し530
$9712 (バンク 0)呼び出し440
$AA45 (バンク 0)呼び出し323
$AB21 (バンク 0)呼び出し296
$E3B3 (バンク 1)テーブル294
$E271 (バンク 1)呼び出し201
$AA52 (バンク 0)呼び出し161
$AA5F (バンク 0)呼び出し161
$AA6B (バンク 0)呼び出し161
$AA78 (バンク 0)呼び出し161
$AA8A (バンク 0)呼び出し161
$E253 (バンク 1)呼び出し151
$E3DD (バンク 1)テーブル150
$E04B (バンク 1)呼び出し137
$AA82 (バンク 0)呼び出し132
$AC1C (バンク 0)呼び出し132
$E9EB (バンク 1)呼び出し126
$EA03 (バンク 1)呼び出し126
$E003 (バンク 1)呼び出し118
$948B (バンク 0)呼び出し105
$E287 (バンク 1)呼び出し64
$E473 (バンク 1)テーブル64
$9E07 (バンク 0)呼び出し49
$E247 (バンク 1)呼び出し49
$E3CA (バンク 1)テーブル49
$E6D7 (バンク 1)呼び出し49
$E39C (バンク 1)テーブル46
$8200 (バンク 0)テーブル33
$A459 (バンク 0)呼び出し33
$E006 (バンク 1)呼び出し33
$E244 (バンク 1)呼び出し33
$824F (バンク 0)テーブル32
$98EB (バンク 0)呼び出し26
$9907 (バンク 0)呼び出し26
$9FF2 (バンク 0)呼び出し20
$E33B (バンク 1)呼び出し20
$9969 (バンク 0)呼び出し14
$85F0 (バンク 0)テーブル12
$86DC (バンク 0)テーブル12
$87DC (バンク 0)呼び出し12
$E3D1 (バンク 1)テーブル10
$E417 (バンク 1)呼び出し10
$9A6B (バンク 0)テーブル8
$E390 (バンク 1)テーブル8
$E637 (バンク 1)呼び出し6
$9CAF (バンク 0)呼び出し5
$988E (バンク 0)テーブル4
$9D17 (バンク 0)呼び出し4
$99A2 (バンク 0)テーブル2
$9B03 (バンク 0)テーブル2
$9B58 (バンク 0)テーブル2
$A3F2 (バンク 0)テーブル2
$E384 (バンク 1)テーブル2

待つ場所

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

場所何であるか、その証拠
$828D (バンク 0)
フレーム待ち: 待つ相手のバイト $00F5、入った回数 32、周回 2,277、一周ごとの呼び出し 1、フレーム割り込みの下での書き込み 779,777、全フレーム 21,813
$A45B (バンク 0)
フレーム待ち: 待つ相手のバイト $00C3、入った回数 33、周回 8,136、一周ごとの呼び出し 1、フレーム割り込みの下での書き込み 70,306、全フレーム 21,813
$AA37 (バンク 0)
フレーム待ち: 待つ相手のバイト $0033、入った回数 21,338、周回 86,515,130、フレーム割り込みの下での書き込み 21,661、全フレーム 21,813
$AA4D (バンク 0)
フレーム待ち: 待つ相手のバイト $0033、入った回数 323、周回 1,223,757、フレーム割り込みの下での書き込み 21,661、全フレーム 21,813

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

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

場所項目選ばれた数選んだバイト
$8050 (バンク 0)43$00BD
$8166 (バンク 0)65$00C0
$81A0 (バンク 0)99$00A7
$81B7 (バンク 0)97$0068

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

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

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

起点届いたバイト命令含まれる位置
$0700802
$02003210
$0040322
$0060322
$0000252
$0001241
$03EF161
$03F0133
$03F1131
$0690101
$068093
$073093

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

バイト読み書き書くルーチン読むルーチン
$00007,465,96166
$00017,461,99366
$00F51,407,82546
$00E096,00766
$00ED85,01356
$001768,78424
$06F165,12963
$06F565,04133
$06F064,99223
$06F264,99223
$06F364,99223
$00F753,64225
$00FF52,93666
$00B145,43824
$00FB43,38812
$004037,97346
$006036,33633
$00C030,61556
$06FD29,40734
$00BD22,40663
$06F922,29566
$06F822,13624
$06FA22,01023
$06FB22,01023

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

すべてのゲーム