本将棋 内藤九段将棋秘伝 (FC) 攻略/解析

Published on: 2022-01-21

PRG-ROM マップ

概要

アドレス種別内容
$C000codeRESET/IRQ ルーチン
$C0E1codeゲームオーバーシーン
$C161codeパレット初期化ルーチン
$C17AcodeNMI の特殊タスクの完了を待つルーチン
$C17Fdata初期パレットデータ
$C19FcodeBGデータをVRAMへ転送するルーチン (RLE 対応)
$C1EBcodeVRAMをゼロクリアするルーチン
$C207codeNMI にスプライトDMAタスクを依頼し、完了を待つルーチン
$C20Ecode入力更新ルーチン
$C239codeNMI ルーチン
$C306code持ち時間表示用バッファへ数字を 1 つ書き込むルーチン
$C36BcodeNMI タスク: パレット転送
$C39AcodeNMI タスク: スプライトDMA
$C3A7codeNMI タスク: VRAMへのデータ転送 (Type A)
$C3ADcodeVRAMへのデータ転送ルーチン (Type A)
$C3D4codeNMI タスク: VRAMへのデータ転送 (Type B)
$C3FBcodeNMI タスク: 右上メッセージ欄の点滅表示
$C44Cdataメッセージ欄 "指せない" BGデータ (Type A)
$C45Fdataメッセージ欄 消去用 BGデータ (Type A)
$C478codeNMI タスク: 手数表示用バッファをVRAMへ転送
$C4ABcodeタイトルシーン
$C5DBcode手合割表示用バッファ更新ルーチン
$C605codeデモプレイ開始ルーチン
$C61Adata手合割表示用 BGデータ placeholder (Type A)
$C63Fdata手合割表示用 BGデータ データ部
$C66Fdataタイトル画面 BGデータ (RLE)
$C7F1dataタイトル画面 スプライトデータ
$C821dataタイトル画面 BGデータ
$C825code対局画面初期化ルーチン
$C85Ddata対局画面 BGデータ (RLE)
$CAC0code
$CB4Ecode
$CCABcode
$CCE8code
$CD26code
$CDC0code
$CDCEcode
$CE4AcodeL キーが押された際の処理
$CE76codeR キーが押された際の処理
$CE94codeD キーが押された際の処理
$CEB1codeU キーが押された際の処理
$CECEcode
$CEE5code
$CEFFcode駒を掴む際の処理
$CF33codeカーソル座標 (x,y) をマスに変換するルーチン
$CF3Ecodeプレイヤーが違法手を指そうとしたときの処理
$CFD7code
$D094code手数描画ルーチン
$D0CBcode手数表示用バッファへ数字を 1 つ書き込むルーチン
$D0EBcodeプレイヤー側の成/不成の選択処理
$D161data「成る」「成らず」BGデータ (Type A)
$D186data「成らず」消去用 BGデータ (Type A)
$D19Bcode「王手です」「詰みです」表示要求ルーチン
$D1D2data「王手です」BGデータ (Type A)
$D1E5data「詰みです」BGデータ (Type A)
$D1F8code右上キャラスプライト描画ルーチン
$D227codeスプライトバッファへの書き込みルーチン
$D250data右上プレイヤー側キャラ スプライトデータ
$D323data右上COM側キャラ スプライトデータ
$D3C1code駒音を鳴らすルーチン
$D3D8code
$D496code右上キャラスプライトを描画後、少し待つルーチン
$D4A4code
$D4D3data
$D4F2data
$D4F9data
$D540data
$D564data
$D57Cdata
$D594data
$D5ACdata将棋盤の星、および持ち時間表示の ':' のスプライトデータ
$D5C4dataデモプレイ入力 (0xFF 終端)
$D5E0data「あなたの勝ち」BGデータ (Type A)
$D5F9data「わたしの勝ち」BGデータ (Type A)
$D612data時間制限「アリ」BGデータ (Type A)
$D618data時間制限「ナシ」BGデータ (Type A)
$D61Ecode対局シーンへジャンプ
$D621data玉の近接利きデータ(相対インデックス形式)
$D62Adata金の近接利きデータ(相対インデックス形式)
$D631data銀の近接利きデータ(相対インデックス形式)
$D637data桂の近接利きデータ(相対インデックス形式)
$D63Adata歩の近接利きデータ(相対インデックス形式)
$D63Cdata龍の近接利きデータ(相対インデックス形式)
$D641data馬の近接利きデータ(相対インデックス形式)
$D646data駒種ごとの近接利きデータ(相対インデックス形式)へのポインタテーブル
$D666data駒種ごとの価値テーブルA
$D676data駒種ごとの価値テーブルB
$D686data駒種ごとの価値テーブルC
$D696data駒種ごとの価値テーブルD
$D6A6data近接駒の駒種ごとの利きデータ(相対座標形式)へのポインタテーブル
$D6C6data空の近接利きデータ(相対インデックス形式と相対座標形式を兼ねる)
$D6D6data玉の近接利きデータ(相対座標形式)
$D6E6data金の近接利きデータ(相対座標形式)
$D6F6data銀の近接利きデータ(相対座標形式)
$D706data桂の近接利きデータ(相対座標形式)
$D716data歩の近接利きデータ(相対座標形式)
$D726data平手初期盤面 1〜3段目
$D747data盤面 空白3段
$D768data平手初期盤面 7〜9段目
$D789data戦型ごとの定跡分岐へのポインタテーブル
$D79Ddata戦型ごとの定跡手順へのポインタテーブル
$D7B1data定跡分岐 中飛車
$D7E4data定跡分岐 四間飛車
$D817data定跡分岐 戦型ID=2 (空)
$D818data定跡分岐 角換わり
$D828data定跡分岐 筋違い角
$D833data定跡分岐 戦型ID=5 (空)
$D834data定跡分岐 プレイヤー飛車落ち
$D849data定跡分岐 プレイヤー二枚落ち
$D84Fdata定跡分岐 COM飛車落ち
$D85Fdata定跡分岐 COM二枚落ち
$D874data定跡手順 中飛車
$D89Bdata定跡手順 四間飛車
$D8BEdata定跡手順 戦型ID=2 (空)
$D8BFdata定跡手順 角換わり
$D8E8data定跡手順 筋違い角
$D90Ddata定跡手順 戦型ID=5 (空)
$D90Edata定跡手順 プレイヤー飛車落ち
$D931data定跡手順 プレイヤー二枚落ち
$D958data定跡手順 COM飛車落ち
$D979data定跡手順 COM二枚落ち
$D996code対局シーン
$D9D6code対局シーン プレイヤーの手番
$DA54code
$DA7Bcode
$DA9Bcode
$DAE3code
$DAFAcode
$DB0Acode
$DCE3code対局シーン COMの手番
$DDB9codeCOMの序盤処理
$DDF0codeCOMの着手反映処理
$DFDCcode待った処理
$E382code手合割に応じて局面と戦型関連データを初期化するルーチン
$E488codeマスを座標 (x,y) に変換するルーチン
$E497code座標 (x,y) をマスに変換するルーチン
$E49Fcodeビジーウェイトルーチン
$E4B2codeタイマーAの bit0 を得るルーチン (平手の戦型選択用)
$E4B7codeプレイヤーの指し手の合法性判定ルーチン
$E527code近接駒の利きデータ(相対座標形式)をロードするルーチン
$E540codeプレイヤーの香を動かす指し手の合法性判定ルーチン
$E55Acodeプレイヤーの龍を動かす指し手の合法性判定ルーチン
$E55Fcodeプレイヤーの飛を動かす指し手の合法性判定ルーチン
$E57Dcodeプレイヤーの馬を動かす指し手の合法性判定ルーチン
$E582codeプレイヤーの角を動かす指し手の合法性判定ルーチン
$E5A8codeプレイヤーの駒打ちの指し手の合法性判定ルーチン
$E5FFcodeプレイヤーの遠隔駒の移動の合法性判定ルーチン
$E62Ecodeプレイヤーの指し手の移動距離が 2 以上かどうかを返すルーチン
$E64DcodeCOMの指し手の合法性判定ルーチン
$E6CBcodeCOMの香を動かす指し手の合法性判定ルーチン
$E6E0codeCOMの龍を動かす指し手の合法性判定ルーチン
$E6E5codeCOMの飛を動かす指し手の合法性判定ルーチン
$E703codeCOMの馬を動かす指し手の合法性判定ルーチン
$E708codeCOMの角を動かす指し手の合法性判定ルーチン
$E72EcodeCOMの駒打ちの指し手の合法性判定ルーチン
$E784codeCOMの遠隔駒の移動の合法性判定ルーチン
$E7B3codeCOMの指し手の移動距離が 2 以上かどうかを返すルーチン
$E7D2code定跡関連データ初期化ルーチン
$E7F8code定跡処理
$E8E8code定跡手を採用するかどうかの判定
$E90Ecode定跡手を採用するかどうかの判定: 駒損判定
$E98Acode局面Aを局面Bへコピーするルーチン
$E9B2code局面Bを局面Aへコピーするルーチン
$E9DAcode利き情報初期化ルーチン
$E9F2codeプレイヤー側の利き情報更新ルーチン
$EA20codeプレイヤー側の利き情報更新: 近接駒の処理
$EA57codeプレイヤー側の利き情報更新: 指定マスへの利き追加および attacker 更新
$EA80codeプレイヤー側の利き情報更新: 香の処理
$EA8Acodeプレイヤー側の利き情報更新: 単一方向の遠隔利きの処理
$EB26codeプレイヤー側の利き情報更新: 飛/角の処理
$EB3Ddata飛/角の遠隔利きデータ
$EB45codeプレイヤー側の利き情報更新: 飛の処理
$EB4Dcodeプレイヤー側の利き情報更新: 角の処理
$EB55codeプレイヤー側の利き情報更新: 龍の処理
$EB5Dcodeプレイヤー側の利き情報更新: 馬の処理
$EB65dataプレイヤー側の利き情報更新: 駒種ごとの処理ルーチンテーブル
$EB85codeCOM側の利き情報更新ルーチン
$EBB6codeCOM側の利き情報更新: 近接駒の処理
$EBF2codeCOM側の利き情報更新: 指定マスへの利き追加および attacker 更新
$EC1BcodeCOM側の利き情報更新: 香の処理
$EC25codeCOM側の利き情報更新: 単一方向の遠隔利きの処理
$ECC1codeCOM側の利き情報更新: 飛/角の処理
$ECD8codeCOM側の利き情報更新: 飛の処理
$ECE0codeCOM側の利き情報更新: 角の処理
$ECE8codeCOM側の利き情報更新: 龍の処理
$ECF0codeCOM側の利き情報更新: 馬の処理
$ECF8codeCOM側の利き情報更新: 駒種ごとの処理ルーチンテーブル
$ED18code局面評価ルーチン
$EEE2code局面評価: 駒得マスの処理
$EF11code局面評価: 駒損マスの処理
$EF4Acode2つのマスの間の距離を求めるルーチン
$EF70code探索による思考ルーチン (定跡を使わない)
$F06Dcode探索による思考: 盤上の駒を動かす指し手の生成
$F08Bcode探索による思考: 盤上の駒を動かす指し手の生成: 近接移動
$F0D5code探索による思考: 盤上の駒を動かす指し手の評価
$F0FEcode探索による思考: 盤上の駒を動かす指し手を適用
$F150code探索による思考: 盤上の駒を動かす指し手の生成: 飛/角
$F167data飛/角の遠隔利きデータ
$F16Fcode探索による思考: 盤上の駒を動かす指し手の生成: 飛
$F177code探索による思考: 盤上の駒を動かす指し手の生成: 角
$F17Fcode探索による思考: 盤上の駒を動かす指し手の生成: 香
$F189code探索による思考: 盤上の駒を動かす指し手の生成: 龍
$F191code探索による思考: 盤上の駒を動かす指し手の生成: 馬
$F199code探索による思考: 盤上の駒を動かす指し手の生成: 単一方向への遠隔移動
$F1C7code探索による思考: 駒打ちの指し手の生成
$F205dataCOM側の駒種ごとの打てる範囲の制限
$F20CcodeCOM側の歩のある筋を求めるルーチン
$F23Bcode探索による思考: 駒打ちの指し手の適用/評価
$F262code探索による思考: 駒種ごとの盤上の駒を動かす指し手生成ルーチンテーブル
$F2ACcode候補手の評価修正および最善手との比較を行うルーチン
$F6F9code最善手更新ルーチン
$F854codeプレイヤー玉の詰み判定ルーチン (候補手を適用した局面が対象)
$F8AEdata距離 1 以内への相対インデックスたち
$F8B7codeプレイヤー玉の詰み判定: 玉以外の盤上の駒を動かす指し手を生成
$F937codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成
$F952codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 近接移動
$F98Ecodeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を適用/判定
$F9ADcodeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を適用
$F9C5codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 飛/角
$F9E1codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 飛
$F9E7codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 角
$F9EDcodeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 香
$F9F8codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 龍
$FA03codeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 馬
$FA0Ecodeプレイヤー玉の詰み判定: ある盤上の駒を動かす指し手を生成: 単一方向への遠隔移動
$FA3Acodeプレイヤー玉の詰み判定: あるマスに駒を打つ手を生成
$FA6Edataプレイヤー側の駒種ごとの打てる範囲の制限
$FA75codeプレイヤー玉とその両隣の筋に歩があるかどうか調べるルーチン
$FAB5codeプレイヤー玉の詰み判定: あるマスに駒を打つ手を適用/判定
$FAD8codeルート局面に対して現在の候補手を適用するルーチン
$FB03codeプレイヤー玉の詰み判定: 指し手を適用した結果詰みを逃れているか判定
$FB1Adataプレイヤー玉の詰み判定: 駒種ごとの盤上の駒を動かす指し手生成ルーチンテーブル
$FB3Acodeフレームごとのサウンド処理ルーチン (NMI から呼ばれる)
$FB4DcodeAPU $4015 更新ルーチン
$FB59code矩形波1 発声ルーチン
$FB6Acode三角波 発声ルーチン
$FB80codeフレームごとの矩形波1処理ルーチン
$FB8Bcode矩形波1 サウンドデータ処理ルーチン
$FBE8code矩形波1 サウンドデータアドレス設定ルーチン
$FBF1code(未使用コード)
$FC00code矩形波1 消音ルーチン
$FC22code矩形波1 音色設定ルーチン
$FC2Fcode指定した音階に対応する矩形波/三角波周波数タイマー値を返すルーチン
$FC46codeフレームごとの三角波処理ルーチン
$FC51code三角波 サウンドデータ処理ルーチン
$FCA7code三角波 サウンドデータアドレス設定ルーチン
$FCB0code(未使用コード)
$FCBFcode三角波 消音ルーチン
$FCCBdata矩形波1 音色設定ルーチンテーブル
$FCE9code矩形波1 音色設定: 音色0
$FCEEcode矩形波1 音色設定: 音色1
$FCF3code矩形波1 音色設定: 音色2
$FCF8code矩形波1 音色設定: 音色3
$FCFDcode矩形波1 音色設定: 音色4
$FD02code矩形波1 音色設定: 音色5
$FD07data各音階に対応する周波数タイマー値
$FD21code矩形波1 有効化ルーチン
$FD28code三角波 有効化ルーチン
$FD2Fcodeサウンド 0 再生要求ルーチン
$FD33codeサウンド再生要求: 矩形波1
$FD41dataサウンド 0 データ 矩形波1
$FD48codeサウンド 1 再生要求ルーチン
$FD4Fdataサウンド 1 データ 矩形波1
$FD59codeサウンド 2 再生要求ルーチン
$FD60dataサウンド 2 データ 矩形波1
$FD66codeサウンド 3 再生要求ルーチン
$FD6Ddataサウンド 3 データ 矩形波1
$FD73codeサウンド 4 再生要求ルーチン
$FD81codeサウンド再生要求: 三角波
$FD8Cdataサウンド 4 データ 矩形波1
$FD9Adataサウンド 4 データ 三角波
$FDA6codeサウンド 5 再生要求ルーチン
$FDB4dataサウンド 5 データ 三角波
$FDBFcodeサウンド 6 再生要求ルーチン
$FDC6dataサウンド 6 データ 矩形波1
$FDD2codeサウンド 7 再生要求ルーチン
$FDD9dataサウンド 7 データ 矩形波1
$FDE6codeサウンド 8 再生要求ルーチン
$FDEDdataサウンド 8 データ 矩形波1
$FDF4codeサウンド 9 再生要求ルーチン
$FDFBdataサウンド 9 データ 矩形波1
$FE01codeサウンド 10 再生要求ルーチン
$FE0Fdataサウンド 10 データ 矩形波1
$FE74dataサウンド 10 データ 三角波
$FE8Acodeサウンド 11 再生要求ルーチン
$FE98dataサウンド 11 データ 矩形波1
$FEBFcodeサウンド 12 再生要求ルーチン
$FEC6dataサウンド 12 データ 矩形波1
$FEE9-$FFDF(未使用)
$FFE0code入力更新ルーチン: 拡張ポート対応
$FFEF-$FFF9(未使用)
$FFFAdata割り込みベクタ