空き領域は全て 0xFF で埋められている。
アドレス | 型 | 内容 |
---|---|---|
$8000 | code | RESET 割り込みハンドラ。 |
$802B | code | NMI 割り込みハンドラ。 |
$8070 | code | IRQ 割り込みハンドラ。無限ループする (本作では IRQ は使わない)。 |
$8073 | code | ゲームを開始する。 |
$80A1 | code | 手番のプレイヤーについて現在の面をイントロから開始する。 |
$8178 | code | ゲームプレイ中の通常のメインループ。 |
$8200 | code | ミス後の再開処理。 |
$820F | code | 面イントロからの再開処理 (ミス後または面クリア後にここに来る)。 |
$821F | code | 面クリア処理。 |
$830A | code | (未使用) NMI を無効化する。 |
$830E | code | (未使用) PPU_CTRL ($2000 ) およびその管理用変数 $00 に値を書き込む。 |
$8314 | code | (未使用) NMI を有効化する。 |
$831A | code | NMI スレッドに制御を譲り、完了を待つ。 NMI が無効な場合は次の VBLANK の開始を待つ (が、本作ではブート時を除き NMI は常時有効)。 |
$8335 | code | レンダリングを無効化する (事前に NMI を待つ)。レンダリング有効状態 $02 の更新も行う。 |
$8337 | code | レンダリングを有効化または無効化する (事前に NMI を待つ)。レンダリング有効状態 $02 の更新も行う。 |
$8340 | code | レンダリングを有効化する (事前に NMI を待つ)。レンダリング有効状態 $02 の更新も行う。 |
$8344 | code | (未使用) ネームテーブルアドレス計算。 |
$837E | code | 矩形データ (塗りつぶし) 転送ルーチン。 |
$8384 | code | 矩形データ (ベタ) 転送ルーチン。 |
$8388 | code | 矩形データ転送ルーチン。$837E , $8384 下請け。 |
$83CC | code | 横長の矩形データ転送ルーチン。$8388 下請け。 |
$8429 | code | 縦長の矩形データ転送ルーチン。$8388 下請け。 |
$848B | code | PPU データ転送キューへの要素の書き込みを開始する。 |
$84A0 | code | PPU データ転送キューへ現在の要素内の 1 バイトを書き込む。 |
$84AC | code | PPU データ転送キューへの要素の書き込みを完了する。 |
$84B1 | code | PPU データ転送キューの内容を消費し、PPU へ転送する。 NMI スレッド専用。 NOTE: 60 バイト以上消費した時点で打ち切る。 |
$850D | code | 1P/2P入力を更新する。 NMI スレッド専用。 |
$851A | code | 指定したコントローラーの入力を更新する。$850D 下請け。 |
$853A | code | (未使用) |
$855E | code | (未使用) |
$8584 | code | (未使用) |
$8591 | code | 盤面上の玉の更新処理。 既存の全ての玉に対して更新処理を行い、可能なら新しい玉を生成する。 |
$8775 | data | 盤面の各行の先頭を指すアドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 なぜか 19 行ではなく 21 行分あるが、末尾の 2 行分は実質未使用。 |
$879F | data | 盤面の各行に対する初期値テーブル ($87B4 ) 内インデックス。なぜか 19 行ではなく 21 行分あるが、末尾の 2 行分は実質未使用。 |
$87B4 | data | 盤面の行の初期値テーブル。 |
$87BA | data | 盤面の行 0..=1 の初期値。 |
$87D4 | data | 盤面の行 2, 6, 10, 14, 18 の初期値 (右端 2 列以外全て閉じた壁)。 |
$87EE | data | 盤面の行 3..=5, 7..=9, 11..=13, 15..=17 の初期値。 |
$8808 | code | 盤面を初期化する。 19 行ではなく 20 行分初期化する (off-by-one)。これにより自機移動履歴が一部上書きされるが、この領域は後から改めて初期化されるので実害はない。 |
$8833 | code | swap 操作を行う。 |
$8853 | code | 部屋ペア内の 1 つの行に対する swap 操作を行う。$8833 下請け。 |
$8874 | data | 盤面内の各部屋の左上隅を指すアドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$8894 | code | 盤面を再描画する (常に非同期)。 |
$89F1 | data | 盤面の各行の先頭を指すネームテーブル PPU アドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$8A1B | data | 盤面セル値の下位 4bit に対応するBGタイルIDのテーブル。 |
$8A2B | data | 盤面の各行に対応する赤玉スプライト座標yのテーブル。 |
$8A3E | data | 盤面の各列に対応する赤玉スプライト座標xのテーブル。 |
$8A58 | code | カニ部屋にある玉の数を返す。 |
$8A72 | data | カニ部屋の各マスへのオフセットテーブル (部屋の左上隅のマスを基準とする)。 |
$8A81 | code | 乱数を更新する。 |
$8A97 | code | NMI 待ちルーチン $831A を指定回数呼ぶ。 |
$8A9E | code | 描画を有効化し、BGスクロールの再設定を行う。レンダリング有効状態 $02 の更新も行う。 |
$8AA1 | code | BGスクロールを再設定し、描画を有効化する。レンダリング有効状態 $02 の更新は行わない。NMI スレッドから直接呼ばれる。 |
$8ABE | code | レンダリングを無効化し、画面をクリアする。 ネームテーブル 0, 2 はともに空白タイル 0x2C でクリアされ、2 つのスプライトバッファはともに全スプライト非表示となる (240 で埋められる)。 |
$8AD9 | data | ネームテーブル 0 を空白タイル 0x2C でクリアするための矩形データ。 |
$8ADE | data | ネームテーブル 2 を空白タイル 0x2C でクリアするための矩形データ。 |
$8AE3 | code | 自機/相方の回転状態を更新し、自機/相方スプライトをスプライトバッファに書き込む。 ゲームプレイ中に NMI スレッドから呼ばれる。 |
$8BA9 | data | 自機/相方スプライトの開始タイルID加算値テーブル。 |
$8BB1 | data | 自機/相方スプライトのスプライト属性テーブル (水平/垂直方向の反転指示)。 |
$8BB9 | data | 自機/相方スプライトの変位yテーブル。 |
$8BE9 | data | 自機/相方スプライトの変位xテーブル。 |
$8C19 | data | 自機/相方の姿勢に対応するスプライト変位テーブル内オフセットたち。 |
$8C21 | code | カニのスプライトをスプライトバッファに書き込む。 |
$8C7E | data | $8C21 関連。 |
$8C82 | data | $8C21 関連。 |
$8C86 | data | $8C21 関連。 |
$8C8A | data | $8C21 関連。 |
$8CB9 | data | $8C21 関連。 |
$8CE8 | code | 赤玉スプライトをスプライトバッファに書き込み、盤面外の通常玉の更新処理を行う。 |
$8DAF | data | (未使用) |
$8DC3 | code | 盤面外の玉を生成する。$8591 下請け。 |
$8DE9 | code | スプライトバッファオフセット操作: $1A を 4 進め、$1B を 4 戻す。 |
$8DF8 | code | スプライトバッファオフセット操作: $24 を 4 進める。 |
$8E00 | code | スコア/ハイスコア再描画処理。必要な場合のみ再描画する。 |
$8EBB | code | 入力処理および自機/相方の移動処理。 ゲームプレイ中に NMI スレッドから呼ばれる。 |
$8F73 | code | 与えられた座標に対応する部屋インデックスを返す。 |
$8F9A | code | 自機および相方の移動処理。 |
$9001 | data | 自機の移動方向に対応する方向キー入力のテーブル。 |
$9009 | data | 自機/相方が移動可能範囲の左端にいる場合の移動方向補正テーブル (座標制限用)。 |
$9011 | data | 自機/相方が移動可能範囲の上端にいる場合の移動方向補正テーブル (座標制限用)。 |
$9019 | data | 自機/相方が移動可能範囲の右端にいる場合の移動方向補正テーブル (座標制限用)。 |
$9021 | data | 自機/相方が移動可能範囲の下端にいる場合の移動方向補正テーブル (座標制限用)。 |
$9029 | data | 自機/相方の移動方向に対応する変位x (i16) のテーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9039 | data | 自機/相方の移動方向に対応する変位y (i16) のテーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9049 | code | スコア加算ルーチン。付随する諸々の処理も行う。 |
$9106 | data | 1P/2Pスコア末尾へのオフセットテーブル (アドレス $47 を基準とする)。 |
$9108 | data | 目標スコア到達時のBGパレット変更用データ。 便宜上、矩形データ (4x1) 形式としている。 |
$9110 | data | 目標スコア到達時のスプライトパレット変更用データ。便宜上、矩形データ (4x1) 形式としている。 |
$9118 | code | カニの更新処理。 |
$91B9 | code | 面イントロシーン。 |
$926E | data | 面イントロ: "PLAYER {n}" を消去するための矩形データ (塗りつぶし)。 |
$9273 | data | 面イントロ: "PLAYER 1" の矩形データ。 文字 '1' を書き換えることで "PLAYER 2" の描画にも使われる。 |
$927F | data | 面イントロ: "ROUND " の矩形データ。 末尾 2 バイトは適宜書き換えられる。 |
$928B | data | 面イントロ: "LET'S GET 0000 PTS." の矩形データ。 万の位以上は適宜書き換えられる。 |
$92A5 | data | 面イントロシーン用パレット。 便宜上、矩形データ (32x1) 形式としている。 |
$92C9 | data | 面イントロシーン用アトリビュートテーブル。 便宜上、矩形データ (64x1) 形式としている。 |
$930D | code | 目標スコア更新処理。面イントロシーンから呼ばれる。 |
$9363 | data | 1, 2 面における目標スコア。 |
$9371 | code | ミス状態の更新処理。 |
$9441 | data | $9371 関連。 |
$944A | data | $9371 関連。 |
$9454 | data | $9371 関連。 |
$945E | data | $9371 関連。 |
$946C | data | $9371 関連。 |
$947B | data | $9371 関連。 |
$948A | code | ゲーム画面を構築する。 |
$9506 | data | ゲーム画面: 手番でない側のプレイヤー番号 '1', '2' 描画用矩形データのヘッダ。 |
$950A | data | ゲーム画面: 手番の側のプレイヤー番号 '1' (大フォント) 描画用矩形データ。 |
$9512 | data | ゲーム画面: 手番の側のプレイヤー番号 '2' (大フォント) 描画用矩形データ。 |
$951A | data | ゲーム画面: 手番の側のプレイヤーの残機数描画用矩形データのヘッダ。 |
$951E | data | ゲーム画面: 面ごとのパレット設定 (通常玉の色変更)。((現在の面) - 1) mod 8 をインデックスとする。 |
$952E | data | ゲーム画面の基本パレット。便宜上、矩形データ (32x1) 形式としている。 |
$9552 | data | ゲーム画面の初期 tilemap。便宜上、矩形データ (32x32) 形式としている。 |
$9956 | data | (未使用) |
$995E | code | タイトルシーン。 |
$9A21 | data | タイトル: カーソルインデックスに対応する赤玉スプライト座標y。 |
$9A23 | data | タイトル: "LotLot" ロゴの左半分 "Lot" の矩形データ (先頭 1 行)。 後続の行は 0xD8..=0xFF の連番となる。PPU アドレスを書き換えることで右半分の描画にも使われる。 |
$9A2F | data | タイトル: "1 PLAYER GAME" の矩形データ。 PPU アドレスおよび文字 '1' を書き換えることで "2 PLAYER GAME" の描画にも使われる。 |
$9A40 | data | タイトル: "HI-SCORE" の矩形データ。 |
$9A4C | data | タイトル: 著作権表示 (徳間書店) の矩形データ。 |
$9A7E | data | タイトル: 著作権表示 (アイレム) の矩形データ。 |
$9A92 | data | タイトル: ハイスコア描画用矩形データのヘッダ。 |
$9A96 | data | タイトル画面用パレット。 便宜上、矩形データ (32x1) 形式としている。 |
$9ABA | data | タイトル画面用アトリビュートテーブル。 便宜上、矩形データ (64x1) 形式としている。 |
$9AFE | code | ゲームオーバーシーン。1 人のプレイヤーが残機を全て失った際に呼ばれる。 |
$9B70 | data | ゲームオーバー: "GAME OVER" の矩形データ。 |
$9B7E | data | ゲームオーバー画面用パレット。 便宜上、矩形データ (32x1) 形式としている。 |
$9BA2 | data | ゲームオーバー画面用アトリビュートテーブル。 便宜上、矩形データ (64x1) 形式としている。 |
$9BA7 | data | ゲームオーバー: キーワード描画用矩形データのヘッダ。 |
$9BAB | data | ゲームオーバー: 特定のスコア条件を満たした際に表示されるキーワードたち。 |
$9BCB | code | wave 進行および壁の更新処理。 |
$9D0D | code | 指定した壁の内部に赤玉があるかどうかを返す。$9BCB 下請け。 |
$9D57 | code | wave データ参照用ポインタ $1A , オフセット Y の組を 1 進める。$9BCB 下請け。 |
$9D5D | code | 壁と穴パターンを指定して対応する盤面セルたちを更新する。$9BCB 下請け。 |
$9DA3 | data | 盤面内の各壁の左上隅を指すアドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9E0B | data | 横壁の穴パターンに対応する盤面セル配列テーブル内オフセットたち。 |
$9E13 | data | 横壁の穴パターンに対応する盤面セル配列テーブル。 |
$9E3B | data | 縦壁の穴パターンに対応する盤面セル配列テーブル内オフセットたち。 |
$9E43 | data | 縦壁の穴パターンに対応する盤面セル配列テーブル。 |
$9E5B | data | 交点壁の穴パターンに対応する盤面セルテーブル。 |
$9E5D | code | 指定した壁を再描画する (常に非同期)。 |
$9E79 | code | 横壁の再描画処理 (常に非同期)。$9E5D 下請け。 |
$9EAD | data | 各横壁 (左上から row-major) の左端を指す PPU アドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9ED5 | data | 横壁の穴パターンに対応する壁タイル配列テーブル内オフセットたち。 |
$9EDD | data | 横壁の穴パターンに対応する壁タイル配列テーブル。 |
$9F05 | code | 縦壁の再描画処理 (常に非同期)。$9E5D 下請け。 |
$9F3E | data | 各縦壁 (左上から row-major) の上端を指す PPU アドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9F5E | data | 縦壁の穴パターンに対応する壁タイル配列テーブル内オフセットたち。 |
$9F66 | data | 縦壁の穴パターンに対応する壁タイル配列テーブル。 |
$9F7E | code | 交点壁の再描画処理 (常に非同期)。$9E5D 下請け。 |
$9FAA | data | 各交点壁 (左上から row-major) を指す PPU アドレステーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$9FCA | data | 交点壁の穴パターンに対応する壁タイルテーブル。 |
$9FCC | code | オーディオドライバを(再)初期化する。 |
$9FEE | code | オーディオ: 指定した効果音を再生要求する。 |
$A03F | data | オーディオ: 各効果音の nice 値。 |
$A04E | data | オーディオ: 各効果音で使用するチャンネルのマスク。 |
$A05D | data | オーディオ: 各効果音バイトコードへのポインタテーブル。(下位バイト配列, 上位バイト配列) の形式。 |
$A07B | code | オーディオ: 指定した音楽を再生要求する。(NOTE: 実際は常に音楽ID 0 が渡される) |
$A0AF | data | オーディオ: 各音楽バイトコードへのポインタテーブル (1 つしかないが)。(下位バイト配列, 上位バイト配列) の形式。 |
$A0B1 | code | オーディオドライバを tick する。 NMI スレッドから呼ばれる。 |
$A148 | code | オーディオ: 効果音の tick 処理。 |
$A14D | code | オーディオ: 効果音バイトコード: プログラムカウンタをインクリメントし、次の命令を実行する。 |
$A153 | code | オーディオ: 効果音バイトコード: 次の命令を実行する。 |
$A15B | code | オーディオ: 効果音バイトコード: オペコード 0x40..=0xFF (矩形波/三角波の発音/消音) の処理。 |
$A181 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0..=0x3F )。 |
$A187 | code | オーディオ: 効果音バイトコード: オペコード 0..=0x1F (ウェイトカウンタ設定) の処理。 |
$A18F | code | オーディオ: 効果音バイトコード: プログラムカウンタをインクリメントする。 |
$A196 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x20..=0x3F )。 |
$A19C | code | オーディオ: 効果音バイトコード: オペコード 0x20..=0x2F (APU レジスタへの書き込み) の処理。 |
$A1AF | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x3F )。 |
$A1B5 | code | オーディオ: 効果音バイトコード: オペコード 0x3F (全ての矩形波/三角波チャンネルを消音) の処理。 |
$A1D0 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x3E )。 |
$A1D4 | code | オーディオ: 効果音バイトコード: オペコード 0x33 (ジャンプ) の処理。 |
$A1E2 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x32, 0x34..=0x3E )。 |
$A1E6 | code | オーディオ: 効果音バイトコード: オペコード 0x34 (サブルーチン呼び出し) の処理。 |
$A20D | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x32, 0x35..=0x3E )。 |
$A211 | code | オーディオ: 効果音バイトコード: オペコード 0x35 (サブルーチンからの復帰) の処理。 |
$A224 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x32, 0x36..=0x3E )。 |
$A228 | code | オーディオ: 効果音バイトコード: オペコード 0x36 (n 回のループを開始) の処理。 |
$A248 | code | オーディオ: 効果音バイトコード: オペコード分岐 (0x30..=0x32, 0x37..=0x3E )。 |
$A24C | code | オーディオ: 効果音バイトコード: オペコード 0x37 (ループ継続/終了) の処理。 |
$A269 | code | オーディオ: 効果音バイトコード: オペコード 0x30..=0x32, 0x38..=0x3E (矩形波/三角波の周波数変化) の処理。 |
$A291 | code | オーディオ: 音楽の tick 処理。 |
$A29B | code | オーディオ: 音楽バイトコード: プログラムカウンタをインクリメントし、次の命令を実行する。 |
$A29E | code | オーディオ: 音楽バイトコード: 次の命令を実行する。 |
$A2A6 | code | オーディオ: 音楽バイトコード: オペコード 0x40..=0xFF (矩形波/三角波の発音/消音要求) の処理。 |
$A2CB | code | オーディオ: 音楽バイトコード: オペコード分岐 (0..=0x3F )。 |
$A2D1 | code | オーディオ: 音楽バイトコード: オペコード 0..=0x1F (ウェイトカウンタ設定) の処理。 |
$A2D5 | code | オーディオ: 音楽バイトコード: プログラムカウンタをインクリメントする。 |
$A2DC | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x20..=0x3F )。 |
$A2E2 | code | オーディオ: 音楽バイトコード: オペコード 0x20..=0x2F (APU レジスタへの書き込み要求) の処理。 |
$A2F2 | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x3F )。 |
$A2F8 | code | オーディオ: 音楽バイトコード: オペコード 0x3F (未使用) の処理。 |
$A30D | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x3E )。 |
$A311 | code | オーディオ: 音楽バイトコード: オペコード 0x33 (ジャンプ) の処理。 |
$A31F | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x32, 0x34..=0x3E )。 |
$A323 | code | オーディオ: 音楽バイトコード: オペコード 0x34 (サブルーチン呼び出し) の処理。 |
$A34A | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x32, 0x35..=0x3E )。 |
$A34E | code | オーディオ: 音楽バイトコード: オペコード 0x35 (サブルーチンからの復帰) の処理。 |
$A361 | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x32, 0x36..=0x3E )。 |
$A365 | code | オーディオ: 音楽バイトコード: オペコード 0x36 (n 回のループを開始) の処理。 |
$A385 | code | オーディオ: 音楽バイトコード: オペコード分岐 (0x30..=0x32, 0x37..=0x3E )。 |
$A389 | code | オーディオ: 音楽バイトコード: オペコード 0x37 (ループ継続/終了) の処理。 |
$A3A6 | code | オーディオ: 音楽バイトコード: オペコード 0x30..=0x32, 0x38..=0x3E (未使用、実質 nop) の処理。 |
$A3AD | data | オーディオ: 効果音 1 バイトコード (面開始ジングル)。 |
$A48C | data | オーディオ: 音楽 0 バイトコード。 |
$A62F | data | オーディオ: 効果音 2 バイトコード (面クリアジングル)。 |
$A6AB | data | オーディオ: 効果音 3 バイトコード (ゲームオーバージングル)。 |
$A753 | data | オーディオ: 効果音 4, 5 バイトコード (通常玉が 50pts に落下)。 |
$A75B | data | オーディオ: 効果音 6 バイトコード (通常玉が 50pts に落下)。 |
$A763 | data | オーディオ: 効果音 7 バイトコード (通常玉が 50pts に落下)。 |
$A76B | data | オーディオ: 効果音 8 バイトコード (通常玉が 50pts に落下)。 |
$A773 | data | オーディオ: 効果音 9 バイトコード (カニ警告)。 |
$A781 | data | オーディオ: 効果音 10 バイトコード (赤玉が 50pts 以外に落下)。 |
$A7C4 | data | オーディオ: 効果音 11 バイトコード (ミス)。 |
$A804 | data | オーディオ: 効果音 12 バイトコード (swap 操作)。 |
$A839 | data | オーディオ: 効果音 13 バイトコード (ポーズ)。 |
$A851 | data | オーディオ: 効果音 14 バイトコード (通常玉が 50pts 以外に落下)。 バイトコード内のバグにより無音になっている (おそらくノイズ音量を 0 にするつもりで矩形波Aの音量を 0 にしてしまっている)。 |
$A864 | data | オーディオ: 周波数タイマー値テーブル (u16be[60] )。12 平均律の F2 から半音ずつ高くなる。末尾は値 0 (消音用)。 |
$A8DC-$CEFF | (空き領域) | |
$CF00 | data | (未使用 wave テーブル) |
$CF03 | data | wave テーブル (ビッグエンディアンのポインタ配列 (0 終端))。 |
$CF54 | data | (未使用 wave データ) |
$D029 | data | wave 8, 35 データ。 |
$D1F2 | data | wave 6, 23, 33 データ。 |
$D2A9 | data | wave 7 データ。 |
$D42E | data | wave 24, 38 データ。 |
$D5C7 | data | wave 31 データ。 |
$D74A | data | wave 10, 26 データ。 |
$D90B | data | wave 19 データ。 |
$DAD2 | data | wave 13, 34 データ。 |
$DD11 | data | wave 12 データ。 |
$DE46 | data | wave 29 データ。 |
$DFA5 | data | wave 21, 32 データ。 |
$E1AA | data | wave 22 データ。 |
$E375 | data | wave 16 データ。 |
$E4C2 | data | wave 17 データ。 |
$E5A1 | data | wave 15, 37 データ。 |
$E738 | data | wave 14, 30 データ。 |
$E949 | data | wave 0 データ。 |
$E9D4 | data | wave 1 データ。 |
$EBA3 | data | wave 2, 27 データ。 |
$EDD2 | data | wave 3 データ。 |
$F031 | data | wave 4 データ。 末尾に 2 つの無効エントリがある (wave 内時間 255 に対するエントリと思われるが、実際には終端バイト 0xFF とみなされ、そこで wave が終わる)。 |
$F2B2 | data | wave 5 データ。 |
$F491 | data | wave 20, 36 データ。 |
$F672 | data | wave 28 データ。 |
$F829 | data | wave 9 データ。 |
$FA52 | data | wave 11 データ。 |
$FBC1 | data | wave 18, 39 データ。 |
$FE08 | data | wave 25 データ。 |
$FFDF-$FFF9 | (空き領域) | |
$FFFA-$FFFF | data | 割り込みベクタ。 |
$8388
: 矩形データ転送ルーチンPPU へ矩形データ (ベタまたは塗りつぶし) を転送する。レンダリングが有効なら非同期、無効なら同期で転送する。
A
$0B
A
の値。ptr
A
$0B
から復元した値。X
, Y
$837E
(塗りつぶし矩形データ転送ルーチン), $8384
(ベタ矩形データ転送ルーチン) の下請け。
ベタ矩形データの形式:
型 | 内容 |
---|---|
u16le | 矩形の左上隅に対応する PPU アドレス。 |
u8 | 矩形の幅 (タイル単位)。 |
u8 | 矩形の高さ (タイル単位)。 |
u8[] | 矩形内のタイル配列。(幅) >= (高さ) の場合 row-major, (幅) < (高さ) の場合 column-major |
塗りつぶし矩形データの形式:
型 | 内容 |
---|---|
u16le | 矩形の左上隅に対応する PPU アドレス。 |
u8 | 矩形の幅 (タイル単位)。 |
u8 | 矩形の高さ (タイル単位)。 |
u8 | 矩形を塗りつぶすタイル。 |
レンダリングが有効なら非同期、無効なら同期で転送を行う。
矩形の幅/高さに応じて転送方向が変わる:
(幅) >= (高さ)
の場合、$83CC
を呼んで横方向転送を行う。(幅) < (高さ)
の場合、$8429
を呼んで縦方向転送を行う。NOTE: 「同期かつ縦方向転送かつベタ」の設定で本ルーチンを呼び出すと暴走する。ただし、ゲーム内でそのような呼び出しが行われるケースはない。原因は縦方向転送ルーチン $8429
内の分岐命令のオフセットの誤り。
$9049
: スコア加算ルーチン指定されたスコアを加算し、付随する諸々の処理を行う。
A
0..=5
: 10 * A
点 (ただし、ボーナスタイムの場合 A の値によらず 100 点)。$29
Y
の値。A
, Y
現在のプレイヤーのスコアに指定された値を加算し、スコア再描画フラグを立てる。
加算結果がハイスコア以上の値ならばハイスコアを更新し、ハイスコア再描画フラグを立てる。
まだ現在の面の目標スコアを達成しておらず、かつ加算結果が目標スコア以上の値ならばボーナスタイムを開始する。