F1レース (FC) Memory Map ======================== # スコアは1桁1Byte, リトルエンディアン。一の位は省略され、十万の位まである。 # 通常のプレイでは10万点など出ないが、チートで99000点にしてやると10万点以上になることを確認できる。 # 桁チェックは行っていないので、チートで999000点にして100万点を超えさせると、$13 が書き換えられて画面がおかしくなる。 $00 U8[5] レベル1ハイスコア $05 U8[5] レベル2ハイスコア $0A U8[5] レベル3ハイスコア $0F U8[5] スコア $16 U8 NMI実行フラグ # 0:未実行, 1:実行済 $2D U8 コース # [0, 9] $2E U16 乱数0 # リトルエンディアン 敵車生成、敵車の色、敵車の動き(LV0のみ)に関係 $30 U16 乱数1 # リトルエンディアン 敵車生成に関係 $33 U8 レベル # [0, 2] $36 U8 デモ画面のコース # [0, 9] $3C ptr 現在の (カーブ値,長さ) へのポインタ $41 U16 総走行距離 # リトルエンディアン $43 U8 区間内走行距離 # $41 とは単位が異なる(区間データの単位) $47 U8 ギア # 0:LOW, 1:HI $4A U16 背景スクロールオフセット # ビッグエンディアン $4C U24 x座標 # $4D が上位Byte(符号), $4E が下位Byte, $4C が中位Byte $4F U8 フレームカウンタ $50 U24 速度 # ビッグエンディアン $53 U8 RPM(エンジン回転数) $56 U8 クラッシュ時に回るカウンタ # 各レベルの最終面では、2周しても $59 は1のままになり(クリアさせないため)、$5E で周回数がカウントされる(タイムペナルティ用) # 最終面以外では $5E はカウントされない。 # また、$59, $5E ともゴールより少し手前でインクリメントされる。 # (このため、レベル最終面の加算タイムは最初からペナルティを受ける) $59 U8 周回数 # [0, 2] $5A U8 クリアの演出中 0x0A となる。その他の場面では0 $5B U8 クリアフラグ $5E U8 最終面の周回数 $66 ptr # 斜め入力は正しく処理されない。ソース参照 $6B U8 selectボタン入力状態 # 0:Off, 1:On $6C U8 startボタン入力状態 # 0:Off, 1:On $6D U8 Aボタン入力状態 # 0:Off, 1:On $6E U8 Bボタン入力状態 # 0:Off, 1:On $6F U8 上下キー入力状態 # 0:下, 1:上, 0xFF:無入力 $70 U8 左右キー入力状態 # 0:右, 1:左, 0xFF:無入力 $71 U8 シーン管理 # 0:本編プレイ中(ポーズ中も), 1:タイトル(デモ含む), 2:ゲームオーバー $74 U8 残り時間がなくなったかどうか $75 U8 ターボ # 0:Off, 1:On $76 U8 残り時間用タイマ $77 U8[2] タイム # 1桁1Byte, リトルエンディアン # $7A が非0の間キュルキュル減速する(というか加速が鈍る)。 # $7A は1Fごとにデクリメントされ、RPM($53)を下回ると0になる $7A U8 スタート時のキュルキュル減速フラグ $7D U8[3] $80 U8[3] $83 U8[3] $86 U8[3] $89 U8[3] $8C U8[3] 敵車のX座標 # 初期値は右車線なら 0x38, 左車線なら 0xC8 $8F U8[3] 敵車のZ座標上位Byte # 存在しない場合、0xF8 (Z座標が 0xF000 以上で存在しないとみなされる) $92 U8[3] 敵車のZ座標下位Byte $95 U8[3] $98 U8[3] 敵車の動きを制御する変数 $9B U8[3] 敵車の色 # 1:青, 2:黄 (0にすると自車と同じ赤) # スタート前の信号、時間切れ時、面クリア時に使われる $A4 U8 各種ウェイト用カウンタ(フレーム単位) $A7 U8 ポーズ中かどうか $B0-B2 U8[3] 敵の車線変更頻度に関わるパラメータ # LV0: (3,6,0x80) # LV1-2: (0,0,0x40) $B3 U8 レベル内コース番号 # 1-origin $C3 U8 縁石に当たっていると1 $0600-$065E U8[0x5F] コード領域 # 動的に書き換えられる $0660- ? コースデータ(区間ごとに (カーブ値、長さ))