NEStinymachines

Battle Chess (USA)

Battle Chess (USA) は MMC1 の基板に載り、プログラムは 262,144 バイト。電源投入から 6,400 歩のクロールが、新しいコードを見つけた道筋を 49 本残した。それらを 183,069 フレームにわたって再生すると、プログラムのうち 9,181 バイト、4 パーセントが実行された。

規則が名付けたもの

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

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

場所リスティングでの名前入り方回数何であるか、その証拠
$C160 (バンク 15)b15_bank_C160呼び出し147,239
バンク切り替え: 書き込み 736,195、ブランク中 1,740、描画中 734,455
$C4EF (バンク 15)b15_nmi毎フレーム(NMI)36,863
スクロールの書き手: 走ったフレーム 37,100、ブランク中の書き込み 66,538
$D42F (バンク 15)b15_sprites_D42F呼び出し36,706
スプライトの書き手: 走ったフレーム 36,944、スプライトのページへの書き込み 9,243,994
$C764 (バンク 15)b15_poll_C764呼び出し36,665
パッドの読み取り: ポート $4016、一フレームの読み 8、一フレームのストローブ 2
パッドの読み取り: ポート $4017、一フレームの読み 8、一フレームのストローブ 2
$C6D0 (バンク 15)b15_drain_C6D0呼び出し33,105
パレットの書き手: 走ったフレーム 33,105、書き込み 1,059,360
画面メモリへの書き手: 走ったフレーム 33,105、書き込み 1,059,360、ブランク中 1,059,360、描画中 0
$D4A0 (バンク 15)b15_sprites_D4A0呼び出し17,363
スプライトの書き手: 走ったフレーム 14,724、スプライトのページへの書き込み 373,400
$8000 (バンク 14)b14_sound_8000呼び出し16,986
乱数のバイト: 走ったフレーム 16,985、バイト $0690、回転 1、排他的論理和 1
サウンドドライバ: 走ったフレーム 16,985、書き込み 58
$D05E (バンク 15)b15_sprites_D05E呼び出し14,799
スプライトの書き手: 走ったフレーム 14,796、スプライトのページへの書き込み 29,592
$C35F (バンク 15)b15_wait_C35F呼び出し14,300
フレーム待ち: 待つ相手のバイト $0030、入った回数 14,297、周回 52,330,296、フレーム割り込みの下での書き込み 48,944、全フレーム 39,849
$C9FD (バンク 15)b15_palette_C9FD呼び出し537
パレットの書き手: 走ったフレーム 489、書き込み 5,024
$CD8F (バンク 15)b15_sprites_CD8F呼び出し162
スプライトの書き手: 走ったフレーム 963、スプライトのページへの書き込み 41,185
$C099 (バンク 15)b15_sprites_C099呼び出し157
スプライトの書き手: 走ったフレーム 609、スプライトのページへの書き込み 40,192
$C000 (バンク 15)b15_reset電源投入49
バンク切り替え: 書き込み 392、ブランク中 392、描画中 0
スプライトの書き手: 走ったフレーム 19,560、スプライトのページへの書き込み 12,544
$C174 (バンク 15)b15_bank_C174呼び出し49
バンク切り替え: 書き込み 245、ブランク中 245、描画中 0
$E67B (バンク 15)b15_handlers_E67B呼び出し11
メモリに置かれたハンドラ: 跳躍 11、着地した場所 2、アドレスの写し元 $04B3
$C7CD (バンク 15)b15_sprites_C7CD呼び出し5
スプライトの書き手: 走ったフレーム 5,495、スプライトのページへの書き込み 20
$C156 (バンク 15)呼び出し41,153
$D3BE (バンク 15)呼び出し36,709
$C63C (バンク 15)呼び出し36,706
$D3E2 (バンク 15)呼び出し36,662
$DD3C (バンク 15)呼び出し24,108
$DD55 (バンク 15)呼び出し17,712
$D36F (バンク 15)呼び出し17,330
$CCC8 (バンク 15)呼び出し16,986
$807A (バンク 14)呼び出し16,979
$8091 (バンク 14)呼び出し16,935
$CC8D (バンク 15)呼び出し14,799
$E2A1 (バンク 15)呼び出し14,799
$E2BE (バンク 15)呼び出し14,799
$C79D (バンク 15)呼び出し14,271
$C343 (バンク 15)呼び出し12,212
$9819 (バンク 0)呼び出し12,192
$97E5 (バンク 0)呼び出し12,020
$97A7 (バンク 0)呼び出し12,009
$9CC1 (バンク 0)呼び出し12,009
$80CA (バンク 14)呼び出し7,577
$80E9 (バンク 14)呼び出し7,396
$81EB (バンク 14)呼び出し7,396
$CA93 (バンク 15)呼び出し6,132
$D8EA (バンク 15)呼び出し5,832
$EA8A (バンク 15)呼び出し5,316
$EAA3 (バンク 15)呼び出し5,312
$E2EB (バンク 15)呼び出し5,292
$C567 (バンク 15)呼び出し4,432
$DC7C (バンク 15)呼び出し4,018
$E357 (バンク 15)呼び出し4,000
$C149 (バンク 15)呼び出し3,911
$D93C (バンク 15)呼び出し3,888
$E727 (バンク 15)テーブル3,807
$DBE8 (バンク 15)呼び出し2,132
$8D99 (バンク 0)呼び出し2,094
$8A98 (バンク 0)呼び出し2,079
$DC39 (バンク 15)呼び出し1,886
$D9C9 (バンク 15)呼び出し1,711
$DA3C (バンク 15)呼び出し1,353
$DAED (バンク 15)呼び出し1,353
$8283 (バンク 14)呼び出し1,310
$EB70 (バンク 15)呼び出し1,211
$CAD3 (バンク 15)呼び出し1,120
$DB52 (バンク 15)呼び出し1,066
$DD73 (バンク 15)呼び出し1,066
$DD7F (バンク 15)呼び出し1,066
$82A9 (バンク 14)呼び出し943
$DB9D (バンク 15)呼び出し943
$DD6D (バンク 15)呼び出し943
$DD79 (バンク 15)呼び出し943
$8355 (バンク 14)呼び出し686
$D980 (バンク 15)呼び出し648
$C103 (バンク 15)呼び出し608
$C367 (バンク 15)呼び出し525
$C0EF (バンク 15)呼び出し404
$C0F8 (バンク 15)呼び出し404
$C931 (バンク 15)呼び出し295
$C9C7 (バンク 15)呼び出し295
$CDE1 (バンク 15)呼び出し270
$CDD6 (バンク 15)呼び出し269
$99ED (バンク 0)呼び出し266
$C0E0 (バンク 15)呼び出し264
$8372 (バンク 14)呼び出し257
$CEE1 (バンク 15)呼び出し200
$8C9A (バンク 0)呼び出し196
$8C6E (バンク 0)呼び出し190
$C04C (バンク 15)呼び出し158
$C13E (バンク 15)呼び出し158
$C074 (バンク 15)呼び出し157
$C143 (バンク 15)呼び出し157
$8115 (バンク 14)呼び出し153
$8CCC (バンク 0)呼び出し146
$CAC5 (バンク 15)呼び出し125
$814E (バンク 13)呼び出し123
$CACA (バンク 15)呼び出し123
$E6B2 (バンク 15)テーブル120
$818E (バンク 13)呼び出し117
$C0D3 (バンク 15)呼び出し113
$CA5A (バンク 15)呼び出し110
$E1DF (バンク 15)呼び出し110
$CA85 (バンク 15)呼び出し104
$817F (バンク 13)呼び出し94
$EA66 (バンク 15)呼び出し88
$880C (バンク 0)呼び出し87
$CE13 (バンク 15)呼び出し87
$CE67 (バンク 15)呼び出し87
$CEF1 (バンク 15)呼び出し87
$CFC8 (バンク 15)呼び出し87
$D00C (バンク 15)呼び出し87
$E1FC (バンク 15)呼び出し87
$E23B (バンク 15)呼び出し87
$E373 (バンク 15)呼び出し87
$E3DF (バンク 15)呼び出し87
$8231 (バンク 13)テーブル84
$EA78 (バンク 15)呼び出し83
$E6D6 (バンク 15)テーブル60
$E6DF (バンク 15)テーブル60
$C8C0 (バンク 15)呼び出し59
$80B9 (バンク 14)呼び出し51
$CCC0 (バンク 15)呼び出し51
$E4E4 (バンク 15)テーブル51
$8A16 (バンク 0)呼び出し49
$C01F (バンク 15)割り込み(IRQ)49
$C3B7 (バンク 15)呼び出し49
$EB1F (バンク 15)呼び出し49
$822B (バンク 13)テーブル48
$EB43 (バンク 15)呼び出し48
$821A (バンク 13)テーブル47
$C3BE (バンク 15)呼び出し47
$EA02 (バンク 15)呼び出し44
$EA32 (バンク 15)呼び出し44
$8CFB (バンク 13)呼び出し42
$8D2B (バンク 13)呼び出し42
$8FAE (バンク 13)呼び出し42
$9698 (バンク 0)呼び出し42
$96B7 (バンク 0)呼び出し42
$E87F (バンク 15)呼び出し42
$EAFD (バンク 15)呼び出し42
$96F0 (バンク 0)呼び出し41
$D7FA (バンク 15)呼び出し41
$D826 (バンク 15)呼び出し41
$8A4F (バンク 0)呼び出し40
$8076 (バンク 13)呼び出し39
$8086 (バンク 13)テーブル39
$9C63 (バンク 0)呼び出し39
$8108 (バンク 14)呼び出し28
$8D41 (バンク 0)呼び出し24
$CC9F (バンク 15)呼び出し24
$8A54 (バンク 0)呼び出し19
$8081 (バンク 13)呼び出し14
$995D (バンク 0)呼び出し13
$8B65 (バンク 0)呼び出し11
$8D7C (バンク 0)呼び出し11
$9EB1 (バンク 0)呼び出し11
$E558 (バンク 15)テーブル11
$E669 (バンク 15)テーブル11
$8C53 (バンク 0)呼び出し10
$9DA1 (バンク 0)テーブル8
$9DE4 (バンク 0)呼び出し8
$80AA (バンク 14)呼び出し7
$CCBA (バンク 15)呼び出し7
$8AF9 (バンク 0)呼び出し4
$8B36 (バンク 0)呼び出し4
$82F6 (バンク 13)呼び出し3
$8BCC (バンク 0)呼び出し3
$9DB3 (バンク 0)テーブル3
$9E48 (バンク 0)呼び出し3
$CE87 (バンク 15)呼び出し3
$E1ED (バンク 15)呼び出し3
$8071 (バンク 13)テーブル2
$808F (バンク 13)テーブル2
$8098 (バンク 13)テーブル2
$809C (バンク 13)テーブル2
$80C7 (バンク 13)テーブル2
$80D6 (バンク 13)テーブル2
$813F (バンク 13)呼び出し2
$8254 (バンク 13)呼び出し2
$8296 (バンク 13)呼び出し2
$8309 (バンク 13)呼び出し2
$8323 (バンク 13)呼び出し2
$8383 (バンク 13)呼び出し2
$8396 (バンク 13)呼び出し2
$839E (バンク 13)呼び出し2
$844D (バンク 13)呼び出し2
$8D10 (バンク 13)呼び出し2
$914E (バンク 0)テーブル2
$E8DD (バンク 15)呼び出し2
$91E4 (バンク 0)テーブル1
$921D (バンク 0)テーブル1
$9286 (バンク 0)呼び出し1

待つ場所

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

場所リスティングでの名前何であるか、その証拠
$C150 (バンク 15)b15_wait_C150
フレーム待ち: 待つ相手のバイト $03E9、入った回数 2,915、周回 10,771,895、フレーム割り込みの下での書き込み 66,466、全フレーム 39,849
$C3B9 (バンク 15)b15_wait_C3B9
フレーム待ち: 待つ相手のバイト $0030、入った回数 48、周回 18,393,403、フレーム割り込みの下での書き込み 48,944、全フレーム 39,849
$C3C0 (バンク 15)b15_wait_C3C0
フレーム待ち: 待つ相手のバイト $0663、入った回数 46、周回 11,162,932、フレーム割り込みの下での書き込み 586,640、全フレーム 39,849
$C3CA (バンク 15)b15_wait_C3CA
フレーム待ち: 待つ相手のバイト $0663、入った回数 41、周回 2,904,578、フレーム割り込みの下での書き込み 586,640、全フレーム 39,849
$C568 (バンク 15)b15_wait_C568
フレーム待ち: 待つ相手のバイト $002B、入った回数 5,642、周回 4,163,468、フレーム割り込みの下での書き込み 3,437、全フレーム 39,849
$C8B2 (バンク 15)b15_wait_C8B2
フレーム待ち: 待つ相手のバイト $03E9、入った回数 5,463、周回 7,798,908、フレーム割り込みの下での書き込み 66,466、全フレーム 39,849
$D82A (バンク 15)b15_wait_D82A
フレーム待ち: 待つ相手のバイト $002B、入った回数 648、周回 1,981,370、フレーム割り込みの下での書き込み 3,437、全フレーム 39,849
$DA9B (バンク 15)b15_wait_DA9B
フレーム待ち: 待つ相手のバイト $002B、入った回数 1,353、周回 2,074,721、フレーム割り込みの下での書き込み 3,437、全フレーム 39,849

ジャンプに使うテーブル

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

場所届き方項目選ばれた数選んだバイト
$E6C4 (バンク 15)ポインタ経由22$04B3

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

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

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

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

起点届いたバイト命令含まれる位置
$07002566
$02002563
$00002561
$03002561
$04002561
$05002561
$06002561
$000423116
$05601201
$00051131
$000A1131
$000B1131

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

バイト読み書き書くルーチン読むルーチン
$03E918,692,19524
$066314,965,64536
$002B8,278,31566
$000B5,920,51966
$005D1,590,57454
$00321,397,30266
$0664802,41634
$0033549,84266
$0007492,30266
$006F433,91666
$000E410,52666
$00A4279,29955
$00A2267,92256
$00A3267,46856
$007B203,66666
$00A6196,17956
$0004168,39366
$005F132,95844
$0026129,17366
$0390123,32666
$0393123,32666
$0391122,75266
$0394122,75266
$000D120,00866

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

すべてのゲーム