銀河英雄伝説 (FC) 攻略/解析

Published on: 2022-07-09

RAM マップ

概要

アドレス内容
$00-$01雑用
$02-$07(未使用)
$08u8ルーチン $EFA7 への引数 (下位 CHR-ID)
$09u8ルーチン $EFA7 への引数 (上位 CHR-ID)
$0A-$0D雑用
$0Eu8PRG バンク切り替え時の PRG-ID 記録用
$0Fu8ソフトウェアスタック (ページ 7) 用スタックポインタ
$10-$17雑用
$18u8NMI 制御用
$19-$1B(未使用)
$1C-$24雑用
$25u8NMI カウンタ
$26-$2D雑用
$2E-$30(未使用)
$31u8乱数生成器の戻り値
$32u8乱数生成器の内部状態
$33-$34雑用
$35(未使用)
$36u8
$37ptr
$39-$3F(未使用)
$40-$47雑用
$48-$4C(未使用)
$4D-$5A雑用
$5B-$5F(未使用)
$60-$66雑用
$67(未使用)
$68-$6B雑用
$6C-$7F(未使用)
$80-$83雑用
$84-$88u8[5]数値の10進フォーマット用バッファ
$89u8
$8Au8
$8Bu8
$8Cu8
$8Du8
$8E(未使用)
$8Fu8
$90-$9F(未使用)
$A0-$B6雑用
$B7-$BE(未使用)
$BF-$E8雑用
$E9-$EF(未使用)
$F0u8
$F1-$F4(未使用)
$F5u81P エッジ入力 (ABSTUDLR)
$F6u82P エッジ入力 (ABSTUDLR)
$F7u81P 生入力 (ABSTUDLR)
$F8u82P 生入力 (ABSTUDLR)
$F9(未使用)
$FA
$FB常に 0
$FCPPU スクロールx 退避用
$FDPPU スクロールy 退避用
$FEPPU $2001 退避用
$FFPPU $2000 退避用
$0100-$01FFスタック領域
$0200-$02FFSprite[64]スプライトバッファ
$0300-$03FF
$0400-$041F
$0420-$0421雑用
$0422-$0423(未使用)
$0424u16
$0426-$0427(未使用)
$0428u8
$0429u8
$042A-$042D(未使用)
$042Eu8壊滅した敵艦隊の数
$042Fu8壊滅した味方艦隊の数
$0430u8戦闘における敵の攻撃力
$0431u8戦闘における味方の攻撃力
$0432-$0433(未使用)
$0434u8戦闘における味方のフォーメーション (補正前、1..=7)
$0435u8戦闘における敵のフォーメーション (補正前、1..=7)
$0436u8
$0437u8
$0438(未使用)
$0439u8
$043Au8
$043Bu8
$043Cu8現在の戦闘が行われている惑星ID
$043Du8
$043Eu8現在の戦闘に参加している味方艦隊数 ($04CC と同じ値)
$043Fu8現在の戦闘に参加している敵艦隊数 (駐留艦隊含む。$04CB と同じ値)
$0440u16
$0442u16
$0444u8(未使用。常に 0x32)
$0445u8
$0446u8
$0447u8
$0448u16経過日数 (表示時は上位 8bit が無視される))
$0449(未使用)
$044Au8キルヒアイスによるリセット勧告を既に行ったか (0:false, 0xFF:true)
$044B-$047F(未使用)
$0480-$049F
$04A0u8[8]味方艦隊構造体Bまたは敵艦隊構造体Bを展開するバッファ
$04A8-$04AF(未使用)
$04B0u8[16]味方艦隊構造体Aまたは敵艦隊構造体Aを展開するバッファ
$04C0u8現在処理している艦隊の番号 (1-based)
$04C1u8現在処理している艦隊の指揮官名に対応する単語ID
$04C2u8現在処理している艦隊の現在地または目的地の惑星
$04C3u8現在処理している艦隊の移動力 (write-only)
$04C4u8現在処理している艦隊の何らかの属性 (write-only)
$04C5u8現在処理している艦隊の疲労度
$04C6u8現在処理している艦隊のエネルギー
$04C7u8現在処理している艦隊の食料
$04C8u8現在処理している艦隊のダメージ
$04C9u8現在処理している艦隊のコマンド
$04CAu8現在処理している艦隊の目的地 (write-only)
$04CBu8現在の戦闘に参加している敵艦隊数 (駐留艦隊含む。$043F と同じ値)
$04CCu8現在の戦闘に参加している味方艦隊数 ($043E と同じ値)
$04CDu16敵兵力を隻数に変換した結果
$04CFu16味方兵力を隻数に変換した結果
$04D1(未使用)
$04D2u8味方艦隊が惑星に到着した際、隣接する 4 つの惑星のうち無補給で行ける惑星の数(エネルギー不足判定用)
$04D3u8現在処理している艦隊の輸送待ち日数
$04D4u8現在処理している艦隊のインデックス (メモリ上での並び順と一致する)
$04D5u8
$04D6u8[4]現在処理している艦隊が到着した惑星に隣接する 4 つの惑星ID
$04DAu8
$04DBu16
$04DDu16
$04DFu8現在処理している艦隊のアクシデントID (アクシデントが起こっていなければ 0xFF)
$04E0雑用
$04E1u8現在処理している艦隊の偵察先惑星ID
$04E2u8現在処理している艦隊の偵察先惑星への見積もり所要日数
$04E3u8現在処理している艦隊の偵察先で発見した敵艦隊の番号 (1-based)
$04E4u8現在処理している艦隊の偵察先で発見した敵艦隊の指揮官名に対応する単語ID
$04E5(未使用)
$04E6
$04E7u8現在の戦闘にヤンが参加しているかどうか (0:false, 0xFF:true)
$04E8u8ヤンが戦闘している惑星ID (ヤンが戦闘していなければ 0xFF)
$04E9u8キルヒアイスによる疲労度関連メッセージ選択用カウンタ
$04EA-$04EE(未使用)
$04EF雑用
$04F0-$04FF(未使用)
$0500-$0505雑用
$0506-$050F(未使用)
$0510-$05FF
$0600-$06FF
$0700-$07FF
$6000-$604F
$6050-$614Fu8[16][16]味方艦隊構造体Aの配列
$6150-$624Fu8[16][16]敵艦隊構造体Aの配列
$6250-$62CFu8[8][16]味方艦隊構造体Bの配列
$62D0-$634Fu8[8][16]敵艦隊構造体Bの配列
$6350-$63FF(未使用)
$6400-$647Fu8[4][32]惑星構造体の配列
$6480-$64FF(未使用)
$6500-$657F
$6580-$658Fu8[16]現在の戦闘に参加している味方艦隊インデックスの配列 (0xFF 終端)
$6590-$659Fu8[16]現在の戦闘に参加している敵艦隊インデックスの配列 (0xFF 終端)
$65A0-$65BF(未使用)
$65C0-$65C7
$65C8u8
$65C9u8
$65CA-$65CF(未使用)
$65D0-$65EFu8[32]各惑星の敵フォーメーション (不変)
$65F0-$65FF(未使用)
$6600-$661Fu8[32]各惑星に対応するデータ (write-only)
$6620-$663Fu8[32]各惑星の駐留艦隊の兵力
$6640-$6FFF(未使用)
$7000-$73FF
$7400-$7FFF(未使用)

データ構造

味方艦隊構造体A (len: 16)

オフセット内容
0
1u8座標x
2u8座標y
3u8座標z
4u8偵察先惑星ID
5u8食料
6u8輸送待ち日数
7u8疲労度
8u8エネルギー
9u8ダメージ
10
11u8移動力
12-15

敵艦隊構造体A (len: 16)

オフセット内容
0
1u8座標x
2u8座標y
3u8座標z
4-6
7u8疲労度
8
9u8ダメージ
10
11u8移動力
12
13u8マーク対象の味方艦隊インデックス (write-only)
14-15

味方艦隊構造体B (len: 8)

オフセット内容
0u8状態 (bit0:?, bit1:敵艦隊によりマークされている, bit2-4:?, bit5:コマンド入力済み, bit6:惑星に滞在中, bit7:健在)
1-4
5u8現在地または目的地の惑星ID
6u8コマンド (0:移動, 1:偵察, 2:休息, 3:補給, 4:戦闘, 5:退却, 6:停止)
7u8味方艦隊インデックス (メモリ上での並び順と一致する)

敵艦隊構造体B (len: 8)

オフセット内容
0u8状態 (bit0-5:?, bit6:惑星に滞在中, bit7:健在)
1-4
5u8現在地または目的地の惑星ID
6u8戦略ID (通常は 0..=3)
7u8敵艦隊インデックス (メモリ上での並び順と一致する)

惑星構造体 (len: 4)

オフセット内容
0u8座標x (不変)
1u8座標y (不変)
2u8座標z (不変)
3u8敵の退却先などに関係 (可変)