エキサイティングラリー (FC) 攻略/解析

RAM

メモリマップ

アドレス内容
$00-$1F雑用
$20
$21u8PPU_CTRL ($2000) 管理用
$22u8PPU_MASK ($2001) 管理用
$23u8PPU_SCROLL ($2005) x 管理用
$24u8PPU_SCROLL ($2005) y 管理用
$25ptr
$27ptrPRG 6 内のパレットテーブル $BC3E へのポインタ (不変)
$29
$2A雑用
$2B(実質未使用)
$2Cu8
$2D(未使用)
$2Eu8
$2Fu8MMC1: 制御レジスタ ($9FFF) 管理用
$30u8MMC1: PPU $1000-$1FFF の CHR バンクID管理用
$31u8MMC1: PPU $0000-$0FFF の CHR バンクID管理用
$32u8MMC1: CPU $8000-$BFFF の PRG バンクID管理用
$33u8
$34u81P 生入力 (ABSTUDLR)
$35u81P エッジ入力 (ABSTUDLR)
$36u82P 生入力 (ABSTUDLR)
$37u82P エッジ入力 (ABSTUDLR)
$38u8フレームカウンタ (NMI 待ちを行うたびにインクリメントされる)
$39-$3A(未使用)
$3Bu8
$3Cu16le
$3Eptr
$40-$47ptr[4]
$48u8
$49u8VRAM の内容に基づいて自機と地形との衝突判定を行うかどうか (0:false, 1:true)
レース中は true
$4Au8
$4Bu8NMI スレッドに対するパレット転送要求フラグ (0:false, 非0:true)
$4Cu8
$4Du8NMI ハンドラ終了フラグ (0:false, 非0:true)
NMI 待ち用。NMI ハンドラ終了時にインクリメントされる
$4E(write-only)
$4F
$50
$51u8現在の ROUND 内 SS (0-based)
$52u8現在の ROUND (0-based)
$53u8CHAMPIONSHIP モードにおける難易度 (0:EASY, 1:NORMAL, 2:HARD)
ゲーム内ではそれぞれ "GROUP N", "GROUP A", "GROUP S" と表記される
$54-$55i8[2]自機の速度x/yの符号 (0:0, 1:正, -1:負)
自機座標x/y中位の変化を反映する
$56-$57u8[2]自機の座標x/y下位 (px)。x, y成分ともに mod 8
$58-$59u8[2]自機の座標x/y中位。x成分は mod 32, y成分は mod 16
他用途への使い回しあり
$5A-$5Bu8[2]自機の座標x/y上位。x成分は mod 16, y成分は mod 64
他用途への使い回しあり
$5C-$5Di8[2]現フレームにおける自機の変位x/y (px)
他用途への使い回しあり
$5E-$76
$77u16be自機のスピード
$79u8
$7Au8
$7Bi16le自機のエンジン温度
上位バイトが 0x80..=0xEF のときオーバーヒートする
$7Du8自機のオーバーヒートタイマー
$7E-$7Fu8[2]
$80(未使用)
$81u8自機の車体が向いている角度 (0..=0xFF)。0 が真上で、時計回り
$82u8自機の移動角度 (0..=0xFF)。0 が真上で、時計回り
$83u8自機の現フレームにおける移動距離
$84u8現在の自機のスピード上位の上限
$85u8自機の操作不能タイマー
毎フレームデクリメントされる。非0である間操作不能
$86u8
$87(未使用)
$88u8自機の状態
$89u8
$8Au8
$8Bu8自機の外観が壊れかけかどうか (0:false, 4:true)
ダメージ 192 以上で true になる
$8Cu8自機のダメージ
240 に達した状態でさらにダメージを受けるとクラッシュ
$8Du8レースの状態
$8E-$92
$93雑用
$94-$95(write-only)
$96未使用
$97u8
$98u8
$99u8最終ラップ通知タイマー
$9Au8自機の DRIVE (0:2WD, 1:4WD)
$9Bu8自機の INTAKE (0:NORMAL, 1:TURBO)
$9Cu8自機の TIRE
$9Du8
$9Eu8自機の加速力 (最大 54)。値はセッティング依存
加速条件を満たしているフレームで 18 + (加速力) が自機スピードに加算される
$9Fu8現在の SS における路面状況 (0..=14)。値が小さい方が状況が良い
0..=4 は TARMAC, 5..=9 は GRAVEL, 10..=14 は SNOW として扱われる
特に 14 は凍結路面を表す (ROUND 2 でのみ発生しうる)
$A0u8現在の SS における障害物の発生頻度 (0..=13)
$A1-$A2u8[2]現在の SS における昨日/今日の天候
$A3-$A4u8[2]現在の SS における昨日/今日の気温 (i16, 摂氏 0.1 度単位) 下位
$A5-$A6u8[2]現在の SS における昨日/今日の気温 (i16, 摂氏 0.1 度単位) 上位
$A7u8ゲームモード (0:CHAMPIONSHIP, 1:BATTLE-TRIAL, 2:BATTLE-RALLY)
$A8-$A9
$AAu8現在の SS における残り周回数
$ABu8周回の進捗状況
$AC-$AFu8[4]現在計測中のタイム
$B0-$B1雑用
$B2u8
$B3u8コーナー予告スプライト表示タイマー
$B4-$B7u8[4]衝突判定用 VRAM アドレス配列 上位
$B8-$BBu8[4]衝突判定用 VRAM アドレス配列 下位
$BC-$BFu8[4]衝突判定用に VRAM から取得したタイル値を格納するバッファ
$C0-$C7u8[8]乱数生成器の内部状態
$C8u8
$C9-$FF
$0100-$016F
$0170u8SP マークスプライトを表示中かどうか (0:false, 1:true)
$0171-$0174
$0175u8逆走周回の進捗状況
$0176u8逆走による FOUL フラグ (0:false, 1:true)
$0177-$01FFu8[137]スタック領域
$0200-$02FFSprite[64]スプライトバッファ
$0300-$04D9
$04DAu8スタート時にホイールスピンが発生した際のホイールスピンタイマー初期値
$04DBu8スタート時にホイールスピンが発生しうるかどうか (0:false, 非0:true)
$04DCu8スタート時にホイールスピンが発生した際のホイールスピンタイマー
$04DDu8スタート時にホイールスピンが発生したかどうか (0:false, 1:true)
$04DEu8自機と地形との衝突判定を無効化するデバッグ用フラグ (0:false, 1:true)。通常は常に false
$04DF-$05CE
$05CFu8自機のスピード上位の上限の基本値。路面状況およびセッティングに依存
最終的な上限 ($84) はオーバーヒートなどを考慮して決まる
$05D0u8
$05D1u8
$05D2-$05D5
$05D6-$05DAu8[5]現在のゲームに参加しているプレイヤーインデックスの配列 (存在しない場合 0xFF)
$05DB-$0602u8[4][10]
$0603-$062Au8[4][10]
$062B-$063Eu16be[10]各選手の合計ポイント
$063F-$0652(未使用)
$0653-$065Cu8[10]
$065D-$06FA
$06FB-$06FEcodeTODO オーディオドライバ用
$06FF(未使用)
$0700-$0703u8[4]ソフトリセット判定用 magic 文字列 "RIE "
$0704u8
$0705u8
$0706u8[8]現在のプレイヤー名
$070E-$074Du8[8][8]登録されているプレイヤー名の配列
$074E-$07D4u8[3][45]ベストタイム配列
$07D5-$07F4u8[0x20]現在のパレット (要求に応じて PPU へそのまま転送される)
$07F5-$07FF(未使用)

詳細

自機の状態

bit意味
0-1TODO ジャンプ状態? (ジャンプ開始時に 1, 着地時に 3 になる?)
2スリップ中 (水溜まりなどによる)
3クラッシュした敵車と接触中
4バックギア
5壁と接触中
6アンダーステア状態 (タイヤのグリップ力不足による)
7ドリフト中

レースの状態

bit意味
0タイム計測中 (ポーズ中は 0 になる)
1-5(未使用)
6最終ラップ突入中
7ゴール中 (自機のスピード上位が 0 になるまで実際にはゴールしない)

自機の TIRE

意味
0..=4TARMAC (0:SLICK, 1:TM-1, 2:TM-2, 3:TM-3, 4:TM-4)
5..=9GRAVEL (5:GV-1, 6:GV-2, 7:GV-3, 8:GV-4, 9:GV-5)
10..=14SNOW (10:SN-1, 11:SN-2, 12:SN-3, 13:SN-4, 14:STUD)

天候

意味
0FAIR
1CLOUDY
2LIGHT RAIN / LIGHT SNOW
3RAIN / SNOW
4HEAVY RAIN / HEAVY SNOW

雨/雪については、気温が負なら雪、非負なら雨となる。

周回の進捗状況

bit意味
0-5(未使用)
6第2チェックポイント通過済 (ゴール地点の直前)
7第1チェックポイント通過済 (スタート地点の直後)

現在計測中のタイム

offset内容
0u8分 (packed BCD) (タイムが無効なとき 0xFF)
1u8秒 (packed BCD)
2u81/100 秒 (packed BCD)
3u81/10000 秒

逆走周回の進捗状況

bit意味
0-5(未使用)
6逆走の第2チェックポイント通過 (スタート地点の直後)
7逆走の第1チェックポイント通過 (ゴール地点の直前)