NEStinymachines

Fester's Quest (USA)

Fester's Quest (USA) は MMC1 の基板に載り、プログラムは 131,072 バイト。電源投入から 8,000 歩のクロールが、新しいコードを見つけた道筋を 221 本残した。それらを 314,881 フレームにわたって再生すると、プログラムのうち 13,207 バイト、10 パーセントが実行された。

規則が名付けたもの

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

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

場所リスティングでの名前入り方回数何であるか、その証拠
$C9D2 (バンク 7)b7_bank_C9D2呼び出し529,567
バンク切り替え: 書き込み 2,646,883、ブランク中 548,326、描画中 2,098,557
$8605 (バンク 3)b3_sound_8605呼び出し342,785
サウンドドライバ: 走ったフレーム 95,798、書き込み 135,084
$CA0F (バンク 7)b7_sprites_CA0F呼び出し231,173
スプライトの書き手: 走ったフレーム 55,863、スプライトのページへの書き込み 5,029,996
$C024 (バンク 7)b7_poll_C024呼び出し208,560
パッドの読み取り: ポート $4016、一フレームの読み 16、一フレームのストローブ 4
パッドの読み取り: ポート $4017、一フレームの読み 16、一フレームのストローブ 4
$C072 (バンク 7)b7_engine_C072呼び出し109,816
ジャンプエンジン: テーブル 2、そこを通った跳躍 109,816
$C364 (バンク 7)b7_nmi毎フレーム(NMI)103,798
スクロールの書き手: 走ったフレーム 103,798、ブランク中の書き込み 206,587
$C3FC (バンク 7)b7_drain_C3FC呼び出し103,575
パレットの書き手: 走ったフレーム 103,575、書き込み 1,333,017
画面メモリへの書き手: 走ったフレーム 103,575、書き込み 1,333,017、ブランク中 1,333,017、描画中 0
$C968 (バンク 7)b7_bank_C968呼び出し103,575
バンク切り替え: 書き込み 1,033,532、ブランク中 1,033,532、描画中 0
$C0CC (バンク 7)b7_sprites_C0CC呼び出し55,854
スプライトの書き手: 走ったフレーム 55,854、スプライトのページへの書き込み 2,636,250
$C168 (バンク 7)b7_bank_C168呼び出し30,428
バンク切り替え: 書き込み 151,954、ブランク中 0、描画中 151,954
$C0C7 (バンク 7)b7_sprites_C0C7呼び出し978
スプライトの書き手: 走ったフレーム 837、スプライトのページへの書き込み 62,592
$C9BE (バンク 7)b7_bank_C9BE呼び出し820
バンク切り替え: 書き込み 4,100、ブランク中 1,105、描画中 2,995
$FFF3 (バンク 7)b7_irq割り込み(IRQ)221
バンク切り替え: 書き込み 442、ブランク中 442、描画中 0
スプライトの書き手: 走ったフレーム 31,752、スプライトのページへの書き込み 56,576
$C34E (バンク 7)b7_wait_C34E呼び出し2
フレーム待ち: 待つ相手のバイト $00F5、入った回数 2、周回 36、一周ごとの呼び出し 1、フレーム割り込みの下での書き込み 3,647,761、全フレーム 104,461
$81A3 (バンク 3)呼び出し826,082
$9C9A (バンク 6)呼び出し721,396
$856F (バンク 3)呼び出し342,854
$C046 (バンク 7)呼び出し208,556
$9A70 (バンク 6)呼び出し109,786
$9AB2 (バンク 6)呼び出し108,658
$C053 (バンク 7)呼び出し103,575
$C9E8 (バンク 7)呼び出し103,575
$E0A8 (バンク 7)呼び出し103,575
$8000 (バンク 3)呼び出し103,570
$C000 (バンク 7)呼び出し101,868
$8510 (バンク 6)テーブル100,468
$D1C3 (バンク 7)呼び出し97,786
$D29F (バンク 7)呼び出し35,723
$DD69 (バンク 7)呼び出し35,215
$9C0A (バンク 6)呼び出し30,428
$CA86 (バンク 7)呼び出し30,428
$8000 (バンク 6)呼び出し30,409
$84AF (バンク 6)呼び出し30,409
$E840 (バンク 7)呼び出し30,409
$EB45 (バンク 7)呼び出し30,409
$9AE9 (バンク 6)呼び出し29,947
$A857 (バンク 5)呼び出し23,867
$A8E8 (バンク 5)呼び出し14,722
$A974 (バンク 5)呼び出し14,722
$88DC (バンク 6)テーブル8,190
$A87A (バンク 5)呼び出し6,474
$DEC0 (バンク 7)呼び出し5,268
$DEE1 (バンク 7)呼び出し5,268
$DF0F (バンク 7)呼び出し5,268
$DFAE (バンク 7)呼び出し5,126
$E04A (バンク 7)呼び出し5,126
$8891 (バンク 3)呼び出し3,468
$991E (バンク 6)呼び出し3,328
$9988 (バンク 6)呼び出し3,328
$A8C1 (バンク 5)呼び出し2,623
$A900 (バンク 5)呼び出し2,623
$A92F (バンク 5)呼び出し1,903
$A947 (バンク 5)呼び出し1,903
$862B (バンク 6)テーブル1,128
$9ADD (バンク 6)呼び出し1,128
$C088 (バンク 7)呼び出し938
$80C8 (バンク 3)呼び出し803
$C091 (バンク 7)呼び出し769
$C3C5 (バンク 7)呼び出し694
$80F3 (バンク 3)呼び出し677
$C144 (バンク 7)呼び出し462
$E871 (バンク 7)呼び出し438
$C379 (バンク 7)呼び出し265
$E32F (バンク 7)呼び出し234
$8009 (バンク 5)呼び出し223
$C13F (バンク 7)呼び出し223
$B63A (バンク 6)呼び出し207
$C09A (バンク 7)呼び出し159
$C106 (バンク 7)呼び出し159
$8003 (バンク 4)呼び出し153
$D23A (バンク 7)呼び出し152
$E12D (バンク 7)呼び出し152
$DF5F (バンク 7)呼び出し142
$DFFD (バンク 7)呼び出し142
$8527 (バンク 3)呼び出し58
$CF5C (バンク 7)呼び出し30
$CF74 (バンク 7)テーブル28
$E17B (バンク 7)呼び出し26
$E307 (バンク 7)呼び出し19
$8006 (バンク 4)呼び出し6
$8049 (バンク 3)呼び出し2
$D114 (バンク 7)テーブル2

待つ場所

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

場所リスティングでの名前何であるか、その証拠
$A800 (バンク 4)b4_wait_A800
フレーム待ち: 待つ相手のバイト $00F5、入った回数 256、周回 745、一周ごとの呼び出し 1、フレーム割り込みの下での書き込み 3,647,761、全フレーム 104,461
$A825 (バンク 5)b5_wait_A825
フレーム待ち: 待つ相手のバイト $00ED、入った回数 956、周回 952、一周ごとの呼び出し 9、フレーム割り込みの下での書き込み 206,611、全フレーム 104,461
$B6B2 (バンク 6)b6_wait_B6B2
フレーム待ち: 待つ相手のバイト $0080、入った回数 4、周回 1,024、一周ごとの呼び出し 1、フレーム割り込みの下での書き込み 1,813、全フレーム 104,461
$C004 (バンク 7)b7_wait_C004
フレーム待ち: 待つ相手のバイト $00F0、入った回数 103,499、周回 382,776,872、フレーム割り込みの下での書き込み 103,319、全フレーム 104,461

ジャンプに使うテーブル

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

場所届き方項目選ばれた数選んだバイト
$84C5 (バンク 6)呼び出しの直後323$0012, $030E, $031E, $032E
$CF62 (バンク 7)呼び出しの直後72$04EB

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

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

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

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

起点届いたバイト命令含まれる位置
$030025617
$02002566
$070025518
$00002401
$04001283
$030F11310
$03091137
$030A1137
$030B1137
$030C1137
$030E1133
$0308976

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

バイト読み書き書くルーチン読むルーチン
$00107,459,52666
$00F56,834,96246
$00115,981,49666
$00205,213,26822
$00215,212,15022
$00124,466,57466
$00133,163,03866
$00EF2,326,24852
$001B1,547,60062
$00161,537,20162
$00171,423,08761
$00ED1,413,83236
$00CF1,356,28155
$00001,311,20666
$00011,055,27466
$0015885,32866
$00C8791,84134
$0087582,44953
$0014549,91264
$0084536,54843
$0089517,82332
$0030327,32733
$04FB301,76636
$04F9297,51936

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

すべてのゲーム