TOP > プログラミング関係解説&調査 > データマップ

「ライブ・ア・ライブ」データマップ

当ページの内容は、ある程度のプログラミングの知識を必要とする。
まず、プログラミング関係解説&調査をひととおり読んでいただきたい。

この項目は、以下ウェブサイト様などを参考にさせていただきました。

ここでは、「ライブ・ア・ライブ」の内部データのどこに何があるのか、つまりデータマップ及び、ゲームプレイ中のメモリマップを紹介する。
上記ウェブサイト様から引用したデータも数多く、先達の皆様に深く感謝する次第である。

筆者のプログラミング知識の不足ゆえに、誤りがある可能性も高いことをご了承いただきたい。
未調査の部分も多く、今後追記するかもしれない。

RAM領域はページを分けている。データマップ > RAMを参照。
サウンド(BGM・効果音)関連はこちら。

基礎知識

「ライブ・ア・ライブ」は、容量が「16メガビットロムカセット」のスーパーファミコンソフトである。
1バイトは8ビット(2進数8文字分)なので、16メガビット = 16000000ビット = 2メガバイト = 2000000バイト分のデータで構成されているということになる。

以下では他ページと同じく、16進数の頭には「$」をつけて「$12AB」などと表記し、2進数は頭に「%」をつけて「%0001 0101」のように表記する。2進数はわかりやすさ優先で4桁区切りで間にスペース(空白)を入れる。

このデータがスーパーファミコン本体のメモリ領域に読み込まれてゲームをプレイする。
メモリ領域のアドレスは16進数6桁で表し、上2桁を「バンク」、下4桁を「アドレス」と呼ぶ。
ここでは、

$00:0000

という形で、バンクとアドレスを「:」区切りで表記する。

スーパーファミコンのバンクは$00から$FFまで、その各バンク内に$0000から$FFFFまでアドレスが割り振られている。
1つのアドレスに入るのは、1バイト分のデータである(16進数2文字分、つまり$00~$FFが入る。10進数なら0~255)。
ゲームデータは$00:0000から順に入るのではなく、入る場所が決まっている。
ライブ・ア・ライブだと、

  • バンク$00~$1Fのアドレス$8000~$FFFF
  • バンク$40~$5Fのアドレス$0000~$FFFF

という位置に、ゲームカセット内のデータ16メガビット分が丸ごと入っている(コピーされている)。

ゲームカセット内のデータはゲームプレイの元となる基本のデータなので、ゲームプレイの最中、読み取りはしても上書きすることはない。
こういった領域をROM(Read-Only Memory)領域と呼ぶ。
一方で、戦闘のダメージ量計算などに使う、読み取りも書き込みもできる領域がRAM(Random-Access Memory)である。
(「ライブ・ア・ライブ」はバッテリーバックアップ機能つきで、セーブデータをカセット内に記録する時は読み書きをするが、SRAMという別のメモリがカセットの中に入っていて、そちらで読み書きをする。SRAMについては後で説明している)

また、まったく同じデータが入っている(ミラーリング)箇所も多い。
例えばバンク$00~$7Dは、バンク$80~$FDでミラーリングなので、大雑把に言えば、スーパーファミコンのメモリ領域を半分で区切り、前半部を後半部でミラーリングしているようなものである。
なぜ同じデータをミラーリングするのかだが、ゲームプレイの最中、ゲーム内部では各種データの読み込みや書き込みをしつつ様々な計算を行うことになる。
読み込み・書き込みをする時、次に探したいデータの位置が近くにある方が素早くアクセスできる。
ミラーリングにより同じデータを散らし、近い位置のアドレスからより速く読み書きできるようにしている、らしい。
そういう理由から、ゲームプレイ中は頻繁に使われる一部データが更にミラーリングされていることもある。

メモリ割り当ての規格(HiROMとLoROM)

SNES技術資料 - メモリマッピング

上でメモリ領域について少し触れたが、スーパーファミコンのゲームソフトにおいて、メモリ領域の規格はHiROMとLoROMの2種類あり、データの割り当て方が異なる。
「ライブ・ア・ライブ」はHiROMという規格を採用している。
上で説明した通り、ひとつのバンクに$0000~$FFFF、65,535バイトのデータを入れることができる規格である。
どこのバンクに何が入るかも規格で決まっており、メモリマップやメモリマッピングという名称で、どこに何が入るかの表が公開されている。
ここでは詳しい話には触れないでおく。興味があれば上サイト様などで調べていただきたい。

ゲームデータ部分(ROM領域)

「ライブ・ア・ライブ」は、スーパーファミコンのメモリの、

  • バンク$00~$1F(ミラーリング:$80~$1F)のアドレス$8000~$FFFF
  • バンク$40~$5F(ミラーリング:$C0~$DF)のアドレス$0000~$FFFF

に、ゲームデータが入っていると述べた通りだが、筆者にわかる範囲でどこに何があるか記す。
画像・音関係については未調査なので、非常に大雑把である。

詳しくはわからないが同じ文字でひたすら埋まっている箇所もあり、おそらくは未使用のアドレス部分なのであろう。

バンクアドレス内容
$00$80-プログラム他
$00$80$00:FFC0~$00:FFDFカートリッジヘッダ
$02$82$02:9380~$02:A695バンク$42のミラーリング(テキストデータ)
$10$90-テキストデータ(シナリオ関連)
$11$91-テキストデータ(シナリオ関連)
$16$96-テキストデータ(敵の名前・技名・技説明 など)
$40$C0-(ほぼ)プログラム(主にマップ関係, 後述)
$40$C0$C0:1353~$C0:135Bシナリオ別通常戦闘BGMのID
$40$C0$C0:BC94~$C0:BD1F正接(sin)の三角関数表(ラジアンで0~2π、5度区切りで360度分)
$41$C1$C1:0000~$C1:FDA5(ほぼ)プログラム(戦闘関係, 後述)
$41$C1$C1:02B2~$C1:02B9BG3ウィンドウ用赤系カラーパレット(4色)
$41$C1$C1:A5E6~$C1:A605$C1/A6D0用技モーションサブルーチン呼び出しアドレス値(2バイト)($C1/A72F~$C1/B01B呼び出し)
$41$C1$C1:A606~$C1:A665$C1/B00C用技モーションサブルーチン呼び出しアドレス値(2バイト)($C1/A8E2~$C1/B421呼び出し)
$41$C1$C1:FDA6~$C1:FFFF戦闘コマンドと戦闘終了時メッセージのテキスト(デバッグテキスト含む)
$42$C2$C2:0000~$C2:6B4Cプログラム(主にメニュー画面関係, 後述)
$42$C2$C2:6D5D~$C2:6D7C押したボタン判定用数値
$42$C2$C2:6D7D~$C2:6DDF押したボタンからアドレス呼び出し
$42$C2$C2:6DFD~$C2:704Cメニュー画面でのサブルーチンアドレス呼び出し値
$42$C2$C2:712A~$C2:7133メニュー画面コマンドの半透明位置を指定するHDMAテーブルの値
$42$C2$C2:73C8~$C2:7407GDMA転送用 I/Oポート定数
$42$C2$C2:7438~$C2:7453メニュー画面のセリフ吹き出し形状のBGマップデータ
$42$C2$C2:852E~$C2:8635メニュー画面 LISTENING ROOMで演奏可能な曲33曲のアドレスなどの呼び出しのデータ(各曲8バイト)
$42$C2$C2:8B2B~$C2:8BF0メニュー画面 LISTENING ROOMで演奏可能な曲33曲のBGMIDなどのリスト(各曲6バイト)
$42$C2$C2:9380~$C2:A695メニュー画面、セーブ・ロード画面、シナリオ選択画面、名前入力画面、現代編関係のテキストデータ
$42$C2$C2:D2A0~$C2:D49Fメニュー画面のセリフ吹き出し部分画像
$42$C2$C2:D4A0~$C2:D5BFメニュー画面のコマンド枠画像
$42$C2$C2:D5C0~$C2:D8BF装備画面における頭・右・左・体・足・アクセサリ欄の16×16サイズキャラ
$42$C2$C2:D8C0~$C2:DB3Fメニュー画面の四角枠画像
$42$C2$C2:DB40~$C2:DB9Fメニュー画面の斜め向き矢印、「←L」アイコン、「R→」アイコン
$42$C2$C2:DBD0~$C2:DBFFメニュー画面のUI用カラーパレット(枠、矢印、「←L」アイコン、「R→」アイコンなど)
$42$C2$C2:DC00~$C2:FFE9サンプリングデータ サウンド(BGM・効果音)参照
$43$C3$C3:0000~$C3:06F2プログラム(サウンド関連, 後述)
$43$C3$C3:0746~$C3:1D0FSPC700プログラム ARAMアドレス$0200~$180Bへ転送
$43$C3$C3:1D10~$C3:1F0ESPC700用プログラム計算用定数など ARAMアドレス$180C~$19C8へ転送
$43$C3$C3:1D6C~$C3:1D8BSPC700プログラム内 サウンド・シーケンスにおけるFIRフィルタ係数一覧表
ARAMアドレス$1826~$1845へ転送
※FIR(Finite Impulse Response, 有限インパルス応答)フィルタは、特定の周波数成分を除去してノイズを消したり信号の平滑化に使う
$43$C3$C3:1D8C~$C3:1D99SPC700プログラム内 サウンド・シーケンスにおける音符や休符のティック数(演奏長さ)一覧表
ARAMアドレス$1846~$1853へ転送
$43$C3$C3:1D9B~$C3:1DE7SPC700プログラム内 カーソル系効果音4種のシーケンスデータ ARAM$1855~$19C8へ転送
$43$C3$C3:1F11~$C3:2365効果音用サンプリングデータ ARAMアドレス$4800~$4C34へ転送
$43$C3$C3:2366~$C3:2390効果音用サンプリングデータ ARAMアドレス$1B00~$1B2Bへ転送
$43$C3$C3:2394~$C3:23AB効果音用サンプリングデータ ARAMアドレス$1A80~$1A97へ転送
$43$C3$C3:23AE~$C3:23C5効果音用サンプリングデータ ARAMアドレス$1A00~$1A17へ転送
$43$C3$C3:23C8~$C3:3FC7効果音用シーケンスデータ ARAMアドレス$2C00~$47FFへ転送
$43$C3$C3:3FC8BGMIDが$4E未満であることを確認するための値(キャリーフラグ判定用)
$43$C3$C3:3FC9~$C3:40A9サンプリングデータ開始位置計算値(3バイト区切り)
$43$C3$C3:426F~$C3:4355シーケンスデータ開始位置計算値(3バイト区切り)
$43$C3$C3:43C4~$C3:4D63BGMのサンプリングデータID16種($0~$F)
$43~$45$C3~$C5$C3:4D64~$C5:7E37サンプリングデータ サウンド(BGM・効果音)参照
$45~$46$C5~$C6$C5:7E5F~$C6:FC4Dシーケンスデータ
$4A$CA$CA:F300~$CA:FEFFメニュー画面の背景画像($200バイト毎に8シナリオ分)
$4A$CA$CA:FF00~$CA:FFFF画像マスキングでアイリスイン・アイリスアウトする時の座標計算係数
$4C$CC$CC:F000~$CC:FFF8サンプリングデータ サウンド(BGM・効果音)参照
$4E$CE-プログラム(メニュー画面・マップ・スプライトのロードなどシステム周りの色々)
$4E$CE$CE:001C~$CE:160FキャプテンスクウェアBGMode7用タイルデータ
$4F~$50$CF~$D0-画像(マップ用スプライトやマップ)のデータ
$4F~$50$CF~$D0$CF:F4A0~$CF:F51F塗りつぶし用の四角形
$4F~$50$CF~$D0$CF:F520~$CF:F91F各シナリオカーソル画像
$4F~$50$CF~$D0$CF:E000~$CF:FEAFフィールド用キャラカラーパレット
$51$D1-テキストデータ(シナリオ関連)
$54$D4$D4:9200~$D4:F1FF文字画像データ(文字データ参照)
$54$D4$D4:F200~$D4:FFFF8×8ピクセルサイズの文字画像・吹き出し・ウィンドウ形状などのタイルデータ
$55$D5$D5:0000~$D5:00BFバンク$7Eや$D5などのアドレス呼び出し用の定数
$55$D5$D5:00C0~$D5:04CA味方キャラデータ(詳細)
$55$D5$D5:04CB~$D5:24CA敵キャラデータ(詳細)
$55$D5$D5:24CB~$D5:3DB1味方技データ(詳細)
$55$D5$D5:3DB2~$D5:56CA敵技データ(詳細)
$55$D5$D5:570B~$D5:627C戦闘中の味方キャラのスプライトのタイルデータが格納されたアドレス計算値
$55$D5$D5:644B~$D5:64CA行動異常データ(詳細)
$55$D5$D5:64CB~$D5:71C3敵移動データ
$55$D5$D5:71C4~$D5:81C3アイテムデータ(詳細)
$55$D5$D5:81C4~$D5:8EA1状態異常アイコン及び技エフェクト用スプライトなどグラフィックデータ呼び出しアドレス値
$55$D5$D5:8EA2~$D5:F97A技のモーション(技データ00~05)
$55$D5$D5:F97B~$D5:F98A敵サイズ(Bit3~5が敵の横幅(マス数)、Bit0~2が敵の縦幅(マス数))
$55$D5$D5:FC51~$D5:FC60各シナリオのアイテム欄の開始アドレス&枠数
$56$D6$D6:0080~$D6:207Fカラーパレット(敵キャラ、32×32サイズ時)
$56$D6$D6:2080~$D6:235Fカラーパレット(味方キャラ、32×32サイズ時)
$56$D6$D6:2470~$D6:247Fカラーパレット(戦闘時BG3用ウィンドウ&文字色)
$56$D6$D6:4080~$D6:40BF最終編・敵パーティ編成テーブル
$56$D6$D6:4170~$D6:4183近未来編・ワールドマップ敵パーティ編成テーブル
$56$D6$D6:4280~$D6:512E敵パーティデータ(詳細)
$56$D6$D6:512F~$D6:514F各シナリオの味方パーティIDリスト(詳細)
$56$D6$D6:53CB~$D6:541A原始編・敵パーティ編成テーブル
$56$D6$D6:541B~$D6:549A中世編・敵パーティ編成テーブル
$56$D6$D6:AC00~$D6:CFFFテキストデータ(システム関連)
$56$D6$D6:E000~$D6:EF7Fテキストデータ(技の説明テキスト)
$56$D6$D6:F900~$D6:FAFFHPやダメージ量の数字と、「ミス!」の文字
$56$D6$D6:FC00~$D6:FFFF技範囲内の枠や、キャラ範囲枠、✕マークなど
$57~$5A$D7~$DA$D7:1620~$DA:DA2F戦闘 味方キャラのスプライトのタイルデータ
$5B~$5E$DB~$DE$DB:F979~$DE:DFFF戦闘 敵のタイルデータ
$5E$DE$DE:E000~$DE:FFFFフィールド背景用カラーパレット
$5F$DF$DF:0000~$DF:05FF戦闘 ダメージフィールドのタイルデータ
$5F$DF$DF:6200~$DF:687F状態異常アイコンのスプライトのタイルデータ
$5F$DF$DF:D060~$DF:DEDF敵技エフェクトのスプライトのタイルデータ
$5F$DF$DF:F680~$DF:FEFF味方技エフェクトのスプライトのタイルデータ

以下は各種データアドレスページに解説を載せているので参照のこと。

サブルーチン

筆者が調べた範囲のみ。

フィールド
アドレス内容
$C0:0016~$C0:0067リセット時初期処理 $00:0000~$00:1CFEに初期値設定
$C0:00FC~$C0:01CBリセット時初期処理 画像関係(PPU)$00:2100~$00:2133及び$00:4200~$00:420D、$00:4016、$00:4200の初期化
$C0:02E1~$C0:0305セーブデータ保存用$00:10FE~$00:10FFを更新($00:13xx用)
$C0:0308~$C0:032Cセーブデータからのセーブ用データ解凍($00:13xx用)
$C0:03EF~$C0:047Cシナリオ開始時処理 $00:0A??の初期化、シナリオIDから[$00:10E5]に通常戦闘BGMのID書き込み
$C0:0634~$C0:0644マップ上スプライトの初期配置を計算(操作可能かどうかで処理分岐)
$C0:06B5~$C0:070D[$00:0200]の値により、[$00:0119]か[$00:0A60]の値をBGMIDとして[$00:0030]に書き込み
$C0:06FA~$C0:070Dセーブデータをロードする時、セーブ時のBGMID[$00:0A60]を[$00:0030]に書き込んでサウンド処理$C0/10CCへ
$C0:07A3~$C0:09EFフィールド上ループ処理($C0/09EF→$C0/07A3とループ)
$C0:0823~$C0:0828[$00:0AC4]の値判定(戦闘開始時$01以上が入り、戦闘処理へ入る)
$C0:082E~$C0:08311フレーム毎のマップ乱数($00~$FF)生成処理
$C0:0831~$C0:09ECコントローラの押されたボタンの値からイベント分岐処理
$C0:09F2~$C0:0A5C1フレーム毎のマップタイマー及びグラフィック処理
$C0:0AC9~$C0:0AF61フレーム毎のマップ全体のスプライト位置計算処理
$C0:0C86~$C0:0CA8[$00:0070]と[$00:0200]の値からフレーム毎にイベント分岐処理
$C0:0CAC~$C0:0DC2マップ上移動速度[$00:01AE]から[$00:0A38]~[$00:0A3F]計算(BG1・BG2の水平/垂直スクロール量用)
$C0:0EDC~$C0:0F7Cタイトル画面の初期設定
$C0:0E1A~$C0:0ED7マップ切り替え時などにウィンドウ関係のI/Oレジスタ$00:21??に初期値書き込み
$C0:0EDF~$C0:0F7Cリセット時初期処理 BGマップ
$C0:0F80~$C0:0FB0BGモードをMode7(背景の回転・拡大・縮小モード)に変更
$C0:1051~$C0:1069[$00:4200]に$81を書き込んでNMI割り込みと自動ジョイパッド読み取り機能をONにする
$C0:106A~$C0:1074[$00:4200]に$01を書き込んで自動ジョイパッド読み取り機能をONにする
$C0:10CC~$C0:10D4[$00:0031]を[$00:0A61]に書き込み、Aに$10をロードして、サウンド処理$C0/12E7へジャンプ
$C0:10D8~$C0:10E0[$00:0031]を[$00:0A61]に書き込み、Aに$10をロードして、サウンド処理$C0/12E7へジャンプ
$C0:111D~$C0:1123[$00:0031]に$FF、Aに$10をロードして$C0/12CFにジャンプ([$00:1D00]に$10書き込み)
$C0:1183~$C0:12E6[$00:0031][$00:0A63]に$80を書き込み、[$00:1D00]に$18、[$00:1D01]に[$00:0030]、[$00:1D02]に$80を書き込んでサウンド$C3/0004~$C3/017F処理
$C0:12A6~$C0:12A8近未来編オープニング BGMID$18「GO!GO!ブリキ大王!!」のループをストップしてコーダ部分演奏切り替えのためサウンドドライバファンクションコマンドの値$FBをAにロード
$C0:12CF~$C0:12E2$00:1D00~$00:1D02を書き込んでサウンド処理$C3/0004にジャンプ
$C0:12E7~$C0:1316[$00:0030]にロードされたBGMIDを[$00:0A60]に書き込み
$C0:135C~$C0:13B4フィールドでYボタンを押した時の判定分岐(匂いを嗅ぐ・心を読む・隠れ蓑)
$C0:13B8~$C0:1575近未来編または最終編でYボタン判定フラグが立っている時のYボタン処理(匂いを嗅ぐ・心を読むをマップ・座標で分岐判定)
$C0:1A69~$C0:1ADBマップタイマーのカウントダウン計算
$C0:1C62~$C0:1C68[$00:0A0F](Yボタン判定フラグ)に$01書き込み(近未来編冒頭及び、最終編で本能のダンジョンまたは心のダンジョンに入る)
$C0:1D4B~$C0:1D55BGMIDをロードして[$00:0030]に書き込み
$C0:24D3~$C0:2546功夫編ラストバトル前に弟子のデータをシナリオ別キャラデータにコピー
$C0:263E~$C0:266Bカウントアップ処理
$C0:27FB~$C0:2813原始編でポゴが匂いを嗅げるかどうかのフラグ切り替え[$00:0AC7](匂い嗅げるフラグ)に$00または$01、[$00:0AC8]に$00、[$00:0AC9]に$23書き込み
$C0:282C~$C0:282F近未来編オープニング BGMID$18「GO!GO!ブリキ大王!!」のループをストップしてコーダ部分演奏切り替え
$C0:29F2~$C0:2A16シナリオクリア時、$00:0A01の更新
$C0:302B~$C0:304D固定色の輝度[$00:0A04]~[$00:0A07]を設定
$C0:30C5~$C0:30DBイベント戦闘時のサウンドデータを[$00:0043], [$00:0044]に書き込み
$C0:31A0~$C0:31B2戦闘前処理 [$00:0040]に$03、[$00:0043]に$00、[$00:0044]に[$00:10E5](シナリオの通常戦闘BGMID)を書き込み$C0:181Bにジャンプ
$C0:328A~$C0:32AFマップタイマー初期値読み込み
$C0:378F~$C0:37BEマップでの乱数イベント関連(戦闘中のテレポート飛び先判定も含む)
$C0:37D8~$C0:3806持ち物一覧を開いて何かのアイテムを選ぶことで進行するイベント
$C0:40C8~$C0:40D6[$00:0119]の値をBGMIDとして[$00:0030]に書き込み
$C0:421A~$C0:429E操作不可能時、マップ上スプライトの初期配置に5バイトのヘッダ付与処理(OBJマップデータ)
$C0:47E8~$C0:482Cアイテム取得時に持ち物欄の空欄に該当アイテムを入れ個数を+1する、または既に所持しているなら該当アイテムの個数を+1する処理
$C0:4839~$C0:4853アイテム使用時に持ち物欄から指定アイテム個数を-1する処理
$C0:48B0~$C0:4A47マップ移動時 [$00:0A02](マップ番号)からマップのマップ構造・グラフィックデータやBGMID計算など
$C0:4A4B~$C0:4B6Dバンク$7Fのアドレス$2800→$3800コピー、$7F:2000~2FFFを$00で初期化
$C0:4D17~$C0:4D9Cバンク$DEからバンク$7Eにグラフィックデータコピー
$C0:4D9F~$C0:4EE1グラフィックデータを指定先RAM(VRAM・CGRAM・OAM)へGDMA転送
$C0:4F80~$C0:5036マップ切り替え時[$00:0A38]~[$00:0A3F]に初期値書き込み(BG1・BG2の水平/垂直スクロール量用)
$C0:5043~$C0:5333BG1, BG2の1画面分BGマップデータを$7E:C000~$7E:C6FF、$7E:D000~$7E:D6FFにコピー
$C0:5337~$C0:53BFBG1, BG2の1画面分BGマップデータ(各$700バイト)をVRAM転送
$C0:53C0~$C0:541CBG1・BG2の水平/垂直スクロール量更新
$C0:619B~$C0:61B4移動時、効果音IDの計算&演奏
$C0:6F47~$C0:6F4E16bitでスタックの値をダイレクトページレジスタに転送+8bitでスタックの値をダイレクトページレジスタに転送
$C0:6FC0~$C0:70237E:F800~を7E:EC00~にMVN転送
$C0:70B6~$C0:7233MVN転送 $CF:xxxx→$7E:C100~$7E:C3BFの後、
$7E:C000~$7E:D7FF($1800バイト)を、VRAMアドレス$6000word ($C000byte)を開始位置にしてGDMA転送
$C0:72A5~$C0:7373$7E:C000~$7E:D7FF($1800バイト)を、VRAMアドレス$7400word ($E800byte)を開始位置にしてGDMA転送
$C0:7376~$C0:73BE$7E:8000~$7E:89FFを、VRAMアドレス$C500~$E7FFに$100バイトずつGDMA転送するループ処理
$C0:73C1~$C0:73C8[$00:0022]に$04、Xに$6C00をロードしてから、$C0/756Aへジャンプ
$C0:73DC~$C0:73E3[$00:0022]に$04、Xに$7000をロードしてから、$C0/756Aへジャンプ
$C0:7479~$C0:74B3MVN転送 $7E:xxxx→$7E:yyyy
$C0:74B6~$C0:74E2MVN転送 $7E:xxxx→$7E:yyyy+$01E0
$C0:74E5~$C0:751FMVN転送 $7E:xxxx→$7E:yyyy+$01E0
$C0:7526~$C0:752CAとYに+$0020して、$C0:7539へジャンプ
$C0:752F~$C0:7538AとYに-$0040して、$C0:7539へジャンプしてからサブルーチン戻り
$C0:7539~$C0:7569$7E:xxxxをビット反転し、$7E:yyyyにコピー
$C0:756A~$C0:75E1$7E:8000~$7E:87FFを、VRAMアドレス$D800~$DFFFに$100バイトずつ転送するループ処理
$C0:8E49~$C0:9528マップ上のスプライト位置(OBJマップデータ)の判定・計算
$C0:95D2~$C0:95E9マップ上のスプライトのモーション切り替えタイマー処理(1フレーム毎更新)
$C0:95EC~$C0:972COBJマップデータから、スプライトのオブジェクト属性の計算
$C0:9A09~$C0:9AC9カラーパレット番号$9~$Fをバンク$7E経由でCGRAMへ転送
$C0:9ACA~$C0:9AF6カラーパレット番号$0~$1をCGRAMへ転送
$C0:9AF7~$C0:9B64テキスト・セリフ関係グラフィック(BG3)の初期化及び、セリフウィンドウなど共通データのVRAM転送
$C0:A2CB~$C0:A2EEBG3のテキスト部分のタイル&BGマップデータをVRAMに転送
$C0:A64B~$C0:A86BVRAMに転送するBG3タイルデータ用テキストを$7E:C800~$7E:D0FFにコピー
$C0:A91A~$C0:A940BG3タイルデータ用テキスト$7E:C800~$7E:D0FFを、VRAMの$7000~$7900(BG3タイルデータの文字部分)に転送
$C0:B838~$C0:B8E5マップ用・コントローラーのボタンを押したか判定ループ([$00:4212][$00:4218]のチェック)
$C0:B900~$C0:B924マップ乱数計算
$C0:B925~$C0:B931VBlankフラグ判定ループ([$00:4212] 上1ビット判定)
$C0:B932~$C0:B93Eエンディング終了後用のVBlankフラグ判定ループ([$00:4212] 上1ビット判定)
$C0:B97C~$C0:B98CAレジスタに$01をロードしAをスタックにプッシュしてから$C0/B925(VBlankフラグ判定ループ)にジャンプし画面の輝度[$00:2100]変更ループ
$C0:BA12~$C0:BA7516bit×16bit乗算サブルーチン
$C0:BA76~$C0:BAA6符号付8bit×8bit乗算サブルーチン
$C0:BAE2~$C0:BB10OAM用オブジェクト属性計算値を$00:0020~$00:0025から$00:1Ann~にコピー
$C0:BB15~$C0:BC68OAM用データを計算、$00:0700~$00:0920に書き込み
$C0:BC6D~$C0:BC93OAMへデータ($00:0700~$00:0920)を転送
$C0:BE00~$C0:BF14モザイク処理 モザイクサイズを徐々に小さくする、かつ、輝度を上げる
$C0:BFE4~$C0:C002戦闘開始時 三角形ウィンドウマスク処理のHDMA転送7チャネル転送
$C0:C02A~$C0:C098モザイク処理 モザイクサイズを徐々に大きくする、かつ、輝度を下げる
$C0:C14F~$C0:C218カラーパレット変更処理
変更前用カラーパレット$7E:3800~$7E:39FFを$7E:3A00~$7E:3BFFにコピーし、$7E:3800~$7E:39FFに変更後用カラーパレットをロード
$C0:C266~$C0:C29Fカラーパレット変更処理
カラーパレット変更ループ処理回数判定
$C0:C2F5~$C0:C30Dカラーパレット変更処理
カラーパレット変更回数[$00:0109]処理、[$00:002A]にカラーパレット個数$10、[$00:002B]にカラーパレット色数$10を書き込んで、カラーパレット変更処理実行
$C0:C310~$C0:C31Cカラーパレット変更処理
カラーパレット変更回数、カラーパレット個数、カラーパレット色数のループ終了判定処理
$C0:C36A~$C0:C3CCカラーパレット変更処理
変更後・変更前のカラーパレット色を比較し値が異なる場合は$C0/C3CD~$C0/C408の処理+変更後・変更前分の色成分から、色変更中カラーパレット色を計算
$C0:C3CD~$C0:C408カラーパレット変更処理
変更後・変更前のカラーパレット色を比較し値が異なる場合、BGR555フォーマットの色を5ビットずつ分けて変更後・変更前の間の色を取り変更後・変更前分の色成分取り出し処理
$C0:C425~$C0:C448カラーパレット変更処理
$7E:3C00~$7E:3DFFをCGRAMアドレス$0000~$0200に転送
$C0:D001~$C0:D0CA固定色の輝度計算・更新
$C0:D190~$C0:D1E4戦闘開始時 三角形ウィンドウマスク処理のI/Oアドレス設定
$C0:D33C~$C0:D36D戦闘開始時 三角形ウィンドウマスク処理のHDMAテーブル・間接テーブルモードのアドレス書き込み
$C0:D404~$C0:D485マスク+スクロール時処理
$C0:D4F4~$C0:D54Eマスク+スクロール時処理
$C0:D54F~$C0:D5ADマスク+スクロール時処理
$C0:D52F~$C0:D54E$00:0250~$00:025Bを$00:025C~$00:0267にコピー
$C0:D65E~$C0:D6B2ラスタースクロール用[$00:210D](BG1水平スクロール)と[$00:210F]BG2水平スクロール量計算値$7F:5400~$7F:548Fから$7F:4000~$7F:41BEにコピー
$C0:D6B3~$C0:D6DF$C0:BC96~の三角関数表を$7F:5400~にコピー
$C0:D6E2~$C0:D6DF三角関数表の乗算処理から値を更新
$C0:D721~$C0:D829ラスタースクロール用HDMAチャネル3, 4, 5設定
$C0:D9DC~$C0:DAC9ラスタースクロール用HDMA転送の前準備+HDMA転送開始処理
$C0:DACA~$C0:DC74オープニングデモ前半 画面全体にロゴの文字が出て各シナリオの一場面が流れるシーン
$C0:DCD1~$C0:DFA7デモ画面用BGMode7
$C0:E017~$C0:E02Fタイトル画面の初期設定(メインスクリーン指定、画面サイズ、多重スクロール位置計算値)
$C0:E083~$C0:E08Dタイトル画面のHDMA転送開始
$C0:E1A2~$C0:E1CBタイトル画面のBG1垂直スクロール量[$00:210E]とBG2垂直スクロール量[$00:2110]の初期値書き込み
$C0:E1CC~$C0:E1FCタイトル画面の多重スクロール用HDMA転送チャネル6とチャネル7設定
$C0:E1FD~$C0:E20EHDMA転送で多重スクロールする時の変数[$00:0250]~[$00:0255]初期値設定
$C0:E20F~$C0:E230HDMA転送による多段スクロールのスクロール量計算・更新
$C0:E231~$C0:E387HDMA転送用HDMAテーブル計算(多段スクロールのスクロール量計算)
$C0:EA8E~$C0:EA99最終編ベストエンド時、スタッフロール前に[$30:7FFF][$30:7FFE]に$E41B書き込み(クリアデータ作成処理)
$C0:F338~$C0:F340キャプテンスクウェア用BGMode7のメインスクリーン指定
$C0:F347~$C0:F353キャプテンスクウェア用BGMode7 $00:0100~$00:0102に$00を書き込んで$C0/BB15~$C0/BC68にジャンプ、OAM転送
$C0:F356~$C0:F373キャプテンスクウェア用BGMode7 拡大縮小回転中心座標決定その1
$C0:F376~$C0:F37Aキャプテンスクウェア用BGMode7 [$00:0030]に$DDを書き込んで$C0/1183へジャンプ(サウンド処理へ)
$C0:F37D~$C0:F38Fキャプテンスクウェア用BGMode7 [$00:02A1]~[$00:02A6]に初期値を書き込み
$C0:F392~$C0:F39Aキャプテンスクウェア用BGMode7の表示開始 [$00:212C](メインスクリーン指定)に$11を書き込みBG1とOBJを表示させる
$C0:F39D~$C0:F3A7キャプテンスクウェア用BGMode7用の座標計算値[$00:210D]書き込み
$C0:F3AA~$C0:F3B7キャプテンスクウェア用BGMode7 [$00:02A5]~[$00:02A6]、[$00:0030]~[$00:0033]初期化
$C0:F3BA~$C0:F3CDキャプテンスクウェア用BGMode7 [$00:0030]~[$00:0033]から[$00:02A0]~[$00:02A3]更新
$C0:F3D0~$C0:F430キャプテンスクウェア用BGMode7 [$00:02An]更新ループ処理
$C0:F439~$C0:F467キャプテンスクウェア用BGMode7 拡大縮小回転中心座標決定その2
$C0:F46A~$C0:F4ACキャプテンスクウェア用BGMode7 [$00:210D]~[$00:211E]更新、[$00:02A0]~から[$00:0030]~更新
$C0:F4AF~$C0:F4FFキャプテンスクウェア用BGMode7 [$00:0030]~から[$00:02A0]~更新ループ処理
$C0:F502~$C0:F513キャプテンスクウェア用BGMode7 [$00:02A4]に$16、[$00:02A0]~[$00:02A6]に2バイトずつ$0001セット
$C0:F51C~$C0:F540キャプテンスクウェア用BGMode7 拡大縮小回転中心座標決定その3
$C0:F543~$C0:F55Eキャプテンスクウェア用BGMode7 [$00:210D]~[$00:211E]から[$00:2100](スクリーン初期化)更新
$C0:F561~$C0:F5DAキャプテンスクウェア用BGMode7 [$00:210D]~[$00:211E]最終値計算ループ処理
$C0:F5DD~$C0:F5E2キャプテンスクウェア用BGMode7 [$00:2100]に$8Fを書き込みBGMode7処理終了
$C0:F60D~$C0:F64CVRAM$0000~$4000の初期化
$C0:F64F~$C0:F757VRAMタイルデータとOBJ(スプライト)タイルデータ転送
$C0:F758~$C0:F77FOBJ(スプライト)タイルデータを$20バイトずつDMA転送
$C0:F780~$C0:F7B9CGRAMへDMA転送($7E:8020からCGRAMアドレス$0000に$20バイト、$0100に$20バイト)
$C0:F884~$C0:F8CCBGMode7用 BG1のBGマップ更新
$C0:FA4F~$C0:FAB9BGMode7用の三角関数表呼び出し
$C0:FA83~$C0:FAA0BGMode7用の三角関数表呼び出し
$C0:FB5C~$C0:FBA1BGMode7用の座標計算値の計算(sinθまたはcosθ,拡大縮小倍率のα及びβの計算)
$C0:FABA~$C0:FAD5BGMode7用の座標計算I/Oポート[$00:211B]~[$00:211E]書き込み
$C0:FAD6~$C0:FB18BGMode7 VRAMにタイルデータを8バイトずつ転送
戦闘関連
アドレス内容
$C1:0000~$C1:0079戦闘開始/終了時処理 ※戦闘開始は$C1/0049で分岐処理し$C1/0060へ
$C1:004B~$C1:005F※$C1/0049分岐[$00:2100]に$8F(FBlank強制割り込みで画面を黒一色にする)、[$00:4200]に$01を書き込んで戦闘終了処理
$C1:00A7~$C1:00AA戦闘開始時 味方行動順決定
$C1:0101~$C1:0107戦闘開始時 状態異常マークのスプライトをVRAMへ転送するため$C1:8858~$C1:8902実行
$C1:0136~$C1:0140[$00:2100]のディスプレイ制御レジスタ書き込みと[$00:4200]に$81を書き込んでNMI割り込みと自動ジョイパッド読み取り機能をONにする
$C1:0327~$C1:0346[$7E:FEFB]判定後、[$7E:FEF0](戦闘中タイマー)に$7Fセット
$C1:03F1~$C1:03F9敵データ15・タイプと$04(OBJECT)で論理積を取る処理
$C1:047C~$C1:04BC[$7E:A480]に$0F, [$7E:A481][$7E:A484][$7E:A485][$7E:A487][$7E:A488][$7E:A4A3]~[$7E:A4A6]に$00, [$7E:A482][$7E:A483]に$17, [$7E:A486]に$E0書き込み
$C1:04BD~$C1:04CBボス敵撃破時の効果音ID$90演奏処理
$C1:0BF7~$C1:0C10SF編主人公 キューブにデータ切り替え開始
$C1:0C14~$C1:0C29原始編・ざき3戦目 判定サブルーチン
$C1:0C2D~$C1:0C4A原始編・ざき3戦目 ざきへの攻撃回数$7E:9100を+1する処理
$C1:0CF2~$C1:0D5Aラーニング用 $7E:9200~に使用技を書き込み+使用技判定処理
$C1:0D0D~$C1:0D14功夫編修行 ラーニング用前処理
$C1:0D5B~$C1:0DBB功夫編修行 戦闘終了時 ラーニング処理
$C1:1083~$C1:10B2CGRAM転送 CGRAMアドレス$0010に$D6:2470~$D6:2477, CGRAMアドレス$0018に$D6:2478~$D6:247F(技名用)
$C1:10B3~$C1:10E8ダメージフィールド発生処理
$C1:10F0~$C1:1136戦闘フィールドマス$00:04C8~$00:04FFの値からダメージフィールドの状態確認
$C1:11D1~$C1:11E3[$00:0070]($01だとタイトルデモ)と[$00:0040]($04だと最終編ベストエンド中の戦闘シーン)の判定(技効果音を鳴らすかどうか)
$C1:11D8からだと[$00:0040]判定のみ
$C1:11E4~$C1:11F5戦闘コマンドでカーソル移動音/決定音/キャンセル音演奏決定、[$C1:11D1]へジャンプ
$C1:1255~$C1:12BE技を出す時の効果音IDと設定を[$00:1D00]~[$00:1D02]にセット&効果音を鳴らす回数[$7E:FEFC]の初期化・インクリメント
$C1:12AA~$C1:12BE技命中時数値飛び出し効果音ID$9B演奏処理
$C1:12BF~$C1:12C7技命中時効果音ID$17の演奏処理及び終了時コマンド$F2の実行
$C1:12C8~$C1:1315戦闘開始時 タイトルデモでなければ[$00:0044](戦闘BGMID)を[$00:0310]にコピー、[$00:1D00]に$86、[$00:1D01][$00:1D02]に$00を書き込んで[$C1:11D8]へジャンプ(サウンド処理)
$C1:1318~$C1:1325[$00:1D00]に$89、[$00:1D01][$00:1D02]に$00を書き込んで[$C1:11D8]へジャンプ(サウンド処理)
$C1:1328~$C1:1332[$00:1D00]に$F5、[$00:1D01]に$00を書き込んで[$C1:11D8]へジャンプ(サウンド処理)
$C1:1335~$C1:133F[$00:1D00]に$FA、[$00:1D01]に$00を書き込んで[$C1:11D8]へジャンプ(サウンド処理)
$C1:1342~$C1:1353[$00:1D00]に$14、[$00:1D01]に[$00:0310](戦闘BGMID) & $7F、[$00:1D02]に$FFを書き込んで[$C1:11D8]へジャンプ(サウンド処理)
$C1:14C7~$C1:14DC「アイテムを使う」コマンドが選択可能か判定
$C1:14DD~$C1:14EB[$7E:FEFA](ハルマゲドンフラグ)と[$00:0043]から、逃げるが選択可能か判定
$C1:1528~$C1:156C固定値を$20バイト毎ループ処理でコピー(一定範囲のアドレスの初期化)
$C1:156D~$C1:1630ラーニング用 $7E:9200~に書き込まれた使用技を習得技として記録する処理
$C1:166E~$C1:169D戦闘終了時 ドロップアイテム判定
$C1:16AD~$C1:171C敵キャラ操作時 座標・向きを敵データから味方データにコピー
$C1:16CA~$C1:16E2敵キャラのマス位置のX座標$00:1BnAに*$20+$10してピクセル座標$00:1BnCに書き込み、Y座標$00:1BnBに*$18+$27してピクセル座標$00:1BnEに書き込み
$C1:17E6~$C1:17E2行動異常発生時 レベル修正
$C1:1ADD~$C1:1B21功夫編ラストバトル 弟子に「旋牙連山拳」を習得
$C1:1B4F~$C1:1B67戦闘開始・戦闘終了時 功夫編主人公名確認処理2
$C1:1B72~$C1:1B7C戦闘終了処理
$C1:1BA2~$C1:1BBA戦闘開始・戦闘終了時 功夫編主人公名確認処理1
$C1:1BBE~$C1:1BE1功夫編ラストバトル 弟子が「旋牙連山拳」を使用後に習得技から削除
$C1:1C02~$C1:1C51順序ポイント計算(味方の攻撃以外の行動(1マス移動、Yボタン足踏み、パス、向き変え)、または敵味方全員行動できない状態)
$C1:1C77~$C1:1C8D順序ポイント計算(敵が攻撃)
$C1:1C91~$C1:1CA8順序ポイント計算(行動異常発生時)
$C1:1CAC~$C1:1CF6順序ポイント計算(敵がダメージを受ける)
$C1:1CF7~$C1:1D1D行動異常のデータ呼び出し
$C1:1DD0~$C1:1DF1味方キャラの毒状態判定及び、毒状態の時ダメージ量計算
$C1:1DF8~$C1:1E19味方キャラのダメージ処理
$C1:1E26~$C1:1E42味方キャラの吸収処理
$C1:1E4C~$C1:1E6F敵キャラの毒状態判定及び、毒状態の時ダメージ量計算
$C1:1E71~$C1:1E9A敵キャラのダメージ処理
$C1:1EA3~$C1:1ECA敵キャラの吸収処理
$C1:1ECE~$C1:1F05ダメージフィールド消去判定
$C1:1F06~$C1:1F47$7E:FEFDを+1&ダメージフィールド発動判定
$C1:1F5C~$C1:1FABダメージフィールド消去処理
$C1:1FB2~$C1:1FE9ダメージフィールドのダメージ判定
$C1:1FEA~$C1:201F味方キャラのフィールドダメージ処理
$C1:2029~$C1:2070敵キャラのフィールドダメージ計算
$C1:20CD~$C1:20E8ステータス復元用共通処理
$C1:2111~$C1:2132敵キャラ レベル復元
$C1:2133~$C1:2143敵キャラ 力・速・体・知の復元
$C1:21C1~$C1:21E0味方キャラ レベル復元
$C1:21E1~$C1:21ED味方キャラ 力・速・体・知の復元
$C1:2239~$C1:227B中世編ラストバトル ストレイボウのステータス判定
$C1:230E~$C1:234F功夫編修行 修行場所によるステータスアップ処理
$C1:2363~$C1:243D戦闘終了時 取得経験値計算
$C1:2451~$C1:2476レベルアップ時のHPアップ処理
$C1:248B~$C1:24C5レベルアップ時の力・速・体・知アップ処理
$C1:24C8~$C1:253Eレベルアップ時の技習得処理
$C1:25A8~$C1:25BC「逃げる」選択時 幕末編処理分岐(NAMEの敵用)
$C1:25D7~$C1:2633戦闘開始時 幕末編のNAMEタイプの敵ステータス処理
$C1:27D7~$C1:27DFNMI割り込みの$C1:612F~$C1:613Cをループさせる処理
$C1:2800~$C1:281A移動または向き変え時の行動ポイント計算用 $40 - 速/4(※向き変えはこの1/2で行動ポイント増減)
$C1:281E~$C1:2833味方の行動時、行動ポイント[$00:03AF][$00:03AE]増加処理
$C1:283D~$C1:2856敵の移動または向き変え時、行動ポイント[$00:03AF][$00:03AE]減少処理
$C1:2E9C~$C1:2EF9味方技を出したキャラの向き更新 ([$7E:A01D] & $80) | (([$7E:A01D]<<1) & $03)
$C1:2F1C~$C1:2F50味方技を出したキャラの位置のX軸(ピクセル単位)計算
$C1:2F51~$C1:2F85味方技を出したキャラの位置のY軸(ピクセル単位)計算
$C1:2EFC~$C1:2F0A味方技を出したキャラの位置の座標(ピクセル単位)書き込み
$C1:31B7~$C1:3279技モーション計算用 [$00:0311][$00:0310] = [$00:1C18](味方キャラX座標)*$20 + $20, [$00:0313][$00:0312] = [$00:1C19](味方キャラY座標)*$18 + $33を計算・書き込み(ピクセル座標計算)
X座標, Y座標, 向きを2バイト値[$7E:A020]~[$7E:A462]にコピー(初期値)
$C1:329F~$C1:32DD技モーション計算用 技データ00~技データ05(技モーション呼び出しアドレス)を$7E:A028~$7E:A468に$40バイト間隔コピー(初期値)
$C1:34EA~$C1:34F5HBlank判定用 Hカウンタ(画面描画水平位置)が$E0以上かまたは$50未満か判定
$C1:34F6~$C1:3504HBlank判定用 Hカウンタの値を取得
$C1:3546~$C1:35C3戦闘開始時 行動異常
$C1:35C7~$C1:35E9戦闘開始時 状態異常(実際のゲームでは未使用)
$C1:380E~$C1:38E1範囲攻撃における範囲の計算
$C1:3924~$C1:3970敵の縦・横幅, 技データ06, 技データ07, 座標チェック
$C1:3973~$C1:3A31敵の向きとサイズ判定
$C1:3B32~$C1:3BB0技が周囲攻撃でない時、回復技か判定
$C1:3B67~$C1:3C48技を出すキャラの向き判定
$C1:3BB1~$C1:3C41向き判定用分岐処理
$C1:3C4B~$C1:3CFE技が出るマスに対応したマス目計算値$00:0488~$00:04BEに$0F書き込み
$C1:3D2B~$C1:3D38フィールド用計算アドレス$00:0488(または$00:0480)~$00:04BFに$00をセット
$C1:3D5C~$C1:3DAF技IDから、技データ開始アドレスを算出~習得技のステータス移動ループ処理
$C1:3E18~$C1:3E4B戦闘開始時 幕末編のNAMEタイプの敵 名前処理
$C1:3E61~$C1:3EC7表示する文字列を取得し$7E:FF00~$7E:FF60にコピー
$C1:3EC8~$C1:3F7D$7E:FF00~$7E:FF60にコピーした文字列から文字の画像データをロード, 文字数とVRAMでの位置判定
$C1:41F2~$C1:4391敵の移動処理
$C1:42D4~$C1:4316移動時、移動先のマスに他キャラがいるか判定し座標処理
$C1:4450~$C1:4482味方移動時、移動終了時に座標更新
$C1:4535~$C1:4549マス目のX座標*$100*$20して、マス目のX座標からピクセル単位の座標計算
$C1:454A~$C1:455Eマス目のY座標*$100*$18して、マス目のX座標からピクセル単位の座標計算
$C1:455F~$C1:4564Aレジスタ*$20 + $20(ピクセル座標計算用)
$C1:4565~$C1:456AAレジスタ*$18 + $33(ピクセル座標計算用)
$C1:45D5~$C1:4582$0018,x(キャラ位置のマス目のX座標)*$100*$20 + $10(ピクセル単位の座標のマス中心部)をピクセル単位X座標$0010,xに、$0019,x(キャラ位置のマス目のY座標)*$100*$18 + $1F(ピクセル単位の座標のマス中心部)をピクセル単位Y座標$0012,xにセット
$C1:45EE~$C1:45F6X,Yをスタックに格納して$C1/45D5~$C1/4582実行
$C1:46C8~$C1:46C9乗算・除算時の時間経過用
$C1:4D7E~$C1:4D89シナリオIDまたは最終編主人公から、カーソル画像のアドレスを算出して、スプライトをVRAMに転送
$C1:4D8A~$C1:4DD1戦闘時の数字、記号、技範囲枠など固定スプライトをVRAMに転送
$C1:4EB0~$C1:4F01符号付16bit x 8bit「$0080 * 」の部分
$C1:4FDC~$C1:5000戦闘コマンド表示時 ハルマゲドン判定(逃げるコマンドが「ハルマゲドン」)
$C1:5002~$C1:5007戦闘コマンド表示時 キャプテンスクウェア判定(逃げるコマンドが「やめる」)
$C1:5009~$C1:501F戦闘コマンド表示時 テレポート判定(逃げるコマンドが「テレポート」)
$C1:5022~$C1:5038戦闘コマンド表示時 逃げるコマンドがどれになるか決定
$C1:5040~$C1:5075キャラIDから、キャラIDのキャラがいるか及びキャラ状態の判定
$C1:5076~$C1:5139テキストデータから文字ビットマップ呼び出し
$C1:5095~$C1:50EABG3のテキスト 文字部分を$7E:B000~にコピー
$C1:5143~$C1:5146BG3のBGマップデータ転送($C1:8D42~$C1:8D60)を実行してサブルーチン戻り
$C1:51FB~$C1:5245敵位置マス判定処理
$C1:5263~$C1:52C3敵状態判定
$C1:52C4~$C1:52F2味方キャラ全体の位置のY軸(味方データ$00:1C00+$12,ピクセル単位)下位バイトに+$20(右1マス移動計算値)
$C1:5AC2~$C1:5B64味方キャラのOAM下位テーブル用データ獲得
$C1:5EF5~$C1:5F1C味方キャラのOAM上位テーブル用データ獲得
$C1:5F1D~$C1:5F85味方キャラ以外のOAMデータ獲得
$C1:5F89~$C1:5FDF味方移動判定(味方データ$$00:1C00+$1E, $1Fチェック)
$C1:5FE0~$C1:60C9キャラのスプライトデータをWRAM$00:D000~$00:D400にGDMA(チャネル2)転送
$C1:612F~$C1:6144HDMA転送&NMIによる割り込み待ち用ループ
$C1:6145~$C1:614DVBlankフラグ判定ループ([$00:4212] 上1ビット判定)~NMI割り込み
$C1:6150~$C1:61A4戦闘用乱数計算
$C1:62EF~$C1:6325敵種類nのカラーパレットをCGRAMへGDMA転送(ピュアオディオは処理スキップ)
$C1:62BF~$C1:62EE味方キャラIDからカラーパレットデータ開始位置を計算しCGRAMへGDMA転送
$C1:6326~$C1:6337敵番号nのX・Y座標(マス目)からロードする敵キャラタイルアドレス計算
$C1:6338~$C1:63A7敵番号nの縦・横タイル幅からVRAMデータマップ書き込み位置計算
$C1:63C1~$C1:63EAシナリオIDと最終編主人公判定をして、最終編オルステッド主人公時以外、敵種類nの存在確認
$C1:641B~$C1:6435VRAMアドレス$6000~$9FFF初期化
$C1:64A6~$C1:64FB敵番号nのBG2のマップデータを$7E:F000~$7E:F7FE内に書き込み
$C1:65E9~$C1:660A敵IDから、敵キャラデータ02と敵キャラデータ03のアドレス算出&値のロード
$C1:6612~$C1:6640敵キャラデータ02から、敵の横幅と縦幅計算用アドレス呼び出し+敵タイルデータロードサブルーチン呼び出し
$C1:6641~$C1:665B[$00:039C]から、敵の横幅と縦幅を算出
$C1:6665~$C1:6687敵の横幅タイル数と敵の縦幅タイル数から、敵タイルデータのVRAM位置算出
$C1:668A~$C1:66B9敵タイルデータ縦1×横4タイル分をGDMA転送(ピュアオディオは処理スキップ)
$C1:66BC~$C1:66D0敵の横幅タイル数と敵の縦幅タイル数から、VRAMアドレス算出分岐
$C1:66D3~$C1:6705敵の横幅タイル数から、敵タイルデータのVRAM位置算出~改行処理
$C1:670C~$C1:6725[$00:1An2]に敵の横幅タイル数、[$00:1An3]に敵の縦幅タイル数、[$00:1An4]に敵の横幅マス数、[$00:1An5]に敵の縦幅マス数を書き込み+Yに$3000をロード
$C1:675C~$C1:67D8BG1のBGマップデータ$7E:8000~$7E:8FFFをVRAMアドレス$C000~$C7FFにGDMA転送
$C1:67D9~$C1:6919BG1のBGマップデータを$7E:8000~$7E:8FFFにコピー
$C1:6948~$C1:699DBG1背景用タイル及び、ダメージフィールド4種用タイルのVRAM転送処理
$C1:6B43~$C1:6B6F敵タイルデータ呼び出しのため、A、X、Yに値セットして、$C1:6B70~$C1:6CABでタイルデータをロード
$C1:6B70~$C1:6CAB敵タイルデータを[$7E:2000]~にロード
$C1:6DCC~$C1:6E12最終編ラストの7連戦後の画面上のドットがランダムに消えていく演出用計算
$C1:6F7C~$C1:6FBA最終編オルステッドルート おーでぃーおー戦でざき入れ替え判定
$C1:7046~$C1:70B9テレポートコマンド実行時 画像処理(モザイク処理など)
$C1:7202~$C1:7268技が周囲攻撃かどうか判定($C1:7236まで敵判定、それ以降は味方判定)
$C1:77CE~$C1:783A単発ダメージ/回復量計算
$C1:7843~$C1:7851単発ダメージ+乱数ブレ分
$C1:7852~$C1:786B技使用時、$7E:9010~$7E:9028に技データをコピー
$C1:7AED~$C1:7B01行動ポイントの更新
$C1:7AED~$C1:7B01味方キャラが行動可能か判定(状態異常とタメ時間中でないか確認)
$C1:7BCE~$C1:7F92最終編ラストバトル ピュアオディオ出現判定・処理
$C1:835E~$C1:8368[$00:2100]のディスプレイ制御レジスタに$0F書き込みと[$00:4200]に$81を書き込んでNMI割り込みと自動ジョイパッド読み取り機能をONにする
$C1:85C4~$C1:85EAHDMA転送処理+戦闘中タイマーを-1、65C816用レジスタをスタックから出してRTI(割込みから復帰し、中断していた処理を再開)
$C1:8702~$C1:8713HDMAチャネル5を停止(技使用中にHDMAチャネル4など使用時)
$C1:8849~$C1:8857I/Oポート[$00:2100](ディスプレイ制御レジスタ)に$8Fを書き込みブランク強制フラグを入れ、技を出した時、技エフェクトのスプライトをVRAM$5800~$5FFFにGDMA転送、転送終了したらブランク強制フラグオフ
$C1:8858~$C1:8902戦闘開始時や技終了時に状態異常マークのスプライト/技を出した時は技エフェクトのスプライトをVRAM$5800~$5FFFにGDMA転送
$C1:8913~$C1:894Eウィンドウ用カラーパレット転送(4色分)
$C1:89E5~$C1:8A25CGRAM転送+カラーマス処理 BG3の指定マス色を$840000で加算処理して色変更
$C1:8A67~$C1:8A6B[$00:0340][$00:0341]初期化
$C1:8AD8~$C1:8AFD戦闘用・コントローラーのボタンを押したか判定ループ([$00:4212][$00:4218]のチェック)
$C1:8B6B~$C1:8B87BG2のBGマップデータ転送処理
$C1:8C19~$C1:8C9E$7E:F980~$7E:F99Eにロードした技用のカラーパレットをCGRAMに転送
$C1:8D0F~$C1:8D32ウィンドウの文字画像データをVRAMに転送
$C1:8D33~$C1:8D60BG3のBGマップデータ転送($7E:C000~$7E:C73FをVRAMアドレス$D000~$D73FにGDMA転送)
$C1:8D9C~$C1:8DBFOAMへデータ$7E:0700~$7E:0920を転送
$C1:8DC0~$C1:8DFDWRAMにコピーしたスプライトデータをVRAM転送
$C1:8E51~$C1:8E5B行動ポイントのチェック
$C1:8E5E~$C1:8E7E順序ポイント計算(敵が行動不能な状態異常(石化、マヒ、眠り)の時)
$C1:8E82~$C1:8EB3敵ターン 移動・向き変え判定
$C1:8EB6~$C1:8F59敵ターン 使用技1, 2, 3, 4の判定
$C1:8F1C~$C1:8F2D敵ターン 敵の使用技判定
$C1:8F77~$C1:8F8C順序ポイント計算(敵が1マス移動)
$C1:8F8D~$C1:8FA1敵の移動・向き変え処理分岐
$C1:8FA4~$C1:90A1敵の移動・向き変え 行動パターン$00~$13
$C1:90A2~$C1:90C4行動異常継続判定
$C1:90DB~$C1:9139敵の向き・味方との相対距離から、敵移動データ読み込み
$C1:913A~$C1:9165敵の移動・向き判定用 敵味方の状態と座標獲得して、敵に一番近い味方の位置と距離獲得
$C1:9166~$C1:917A敵の移動・向き判定用 味方キャラ状態獲得
$C1:917D~$C1:91AA敵の移動・向き判定用 敵味方の座標、距離判定
$C1:91AB~$C1:91C5敵の移動・向き判定用 X座標相対位置判定
$C1:91C6~$C1:91E0敵の移動・向き判定用 Y座標相対位置判定
$C1:91E1~$C1:91EF敵の移動・向き判定用 相対位置判定で、味方-敵でキャリーフラグOFF
$C1:91F0~$C1:920B敵の移動・向き判定用 敵座標と敵幅を[$00:0314]~[$00:0317]へコピー
$C1:920C~$C1:9251味方全員の状態異常と、敵の使用技で発生する状態異常が被っていないか判定
$C1:9252~$C1:92C2技IDから、周囲攻撃・反撃専用・回復技判定~回復技使用判定
$C1:926D~$C1:927Dは敵ID$D7のスタビライザー専用処理
$C1:92C3~$C1:9335敵ターンで行動する敵を順序ポイントから決定
$C1:92D0~$C1:92F8行動異常発生後、BREAKDOWN対象の敵のみ行動異常解除
$C1:93A0~$C1:93E0行動ポイント計算(味方が技を出した時)
$C1:941E~$C1:943E行動ポイント計算(敵行動時 行動ポイント[$00:03AF][$00:03AE] & $6F | $10)
$C1:9474~$C1:9477行動ポイント判定~敵の行動決定(1回目)
$C1:9480~$C1:9533敵の行動決定(1回目か2回目か判定~2回目処理)
$C1:9536~$C1:956D味方移動時、移動可能かの判定(状態異常判定、酔い状態の場合乱数で移動方向処理)~移動方向により分岐処理
$C1:9572~$C1:957D行動ポイント計算(味方がパスまたは味方がYボタン足踏み)
$C1:9589~$C1:95E0味方移動時の向き変更処理~モーション値更新
$C1:9608~$C1:96C6味方移動時、移動先のマスがフィールド外か判定、外なら移動処理中止/フィールド内なら、移動先のX座標またはY座標を計算して、途中計算用X座標または途中計算用Y座標に書き込む
$C1:96C9~$C1:96EF味方移動時、ダメージフィールドマスチェックをしてから、行動ポイント計算(味方が移動)
$C1:9898~$C1:9895スタートボタンを押してポーズをかけた時、画面の輝度を下げる処理
$C1:990D~$C1:9927行動ポイント計算(味方が向き変え)
$C1:998E~$C1:99A2戦闘コマンドに何を表示するか判定~文字列呼び出し~表示位置決定~選択可能コマンド判定
$C1:99B4~$C1:9A91戦闘コマンドでコントローラ操作時に効果音を演奏するか判定
$C1:99F6~$C1:9AB7「逃げる」「テレポート」「ハルマゲドン」コマンド選択時処理 [$00:047E][$00:03FC]に$FF書き込み、[$00:0362]に$00書き込み
$C1:9D13~$C1:9D86Xボタンの「ひとつ前の技」関連処理
$C1:9EFA~$C1:9F51味方の行動順決定([$00:035B][$00:035A]を更新)
$C1:9F5A~$C1:9F75味方キャラ戦闘状態確認
$C1:A00B~$C1:A0DE味方が出した技が回復技または無属性ではないとき、技の属性を取り出す
$C1:A12C~$C1:A179敵が出した技が回復技または無属性ではないとき、技の属性を取り出す
$C1:A1BD~$C1:A21B敵から1ヒット以上の攻撃を食らった時、習得技で反撃できるか判定し、反撃技が出せなくなる状態異常ではないか判定
$C1:A312~$C1:A161敵が技を出した直後、味方側の被ヒット数$00:1C3B/1C7B/1CBB/1CFBを、$7E:EA20/EA60/EAA0/EAE0にコピー
$C1:A3E4~$C1:A3F3$7E:A000~$7E:A47Fを$00で初期化
$C1:A43E~$C1:A44B技データ19 & $80(範囲内に1ヒットなら1が立つ)でゼロフラグ分岐
$C1:A45D~$C1:A460技を出す時の効果音を鳴らす処理を行い、VBlankフラグ判定ループ$C1/6145にジャンプ
$C1:A4EE~$C1:A4F4技命中時、既に鳴っている効果音を停止+命中音効果音ID$17の演奏
$C1:A56D~$C1:A5CA技モーション中の座標・向き計算して$7E:A02nと$7E:A0Anにセット
$C1:A666~$C1:A6DA技データ00~05からモーションのサブルーチンアドレス呼び出し+ジャンプ
$C1:A6E7~$C1:A6F72バイトの技用定数を[$00:0311]~[$00:0312]にロード、Xを[$00:031D][$00:031C]に書き込み
$C1:A6F8~$C1:A70F3バイトの技用定数を[$00:0311]~[$00:0313]にロード、Xを[$00:031D][$00:031C]に書き込み
$C1:A710~$C1:A72E4バイトの技用定数を[$00:0311]~[$00:0314]にロード、Xを[$00:031D][$00:031C]に書き込み
$C1:A72F~$C1:A74E$C1/A6D0用技モーションサブルーチン01
$C1:A751~$C1:A76B$C1/A6D0用技モーションサブルーチン02
$C1:A76E~$C1:A79B$C1/A6D0用技モーションサブルーチン03
$C1:A79E~$C1:A7CB$C1/A6D0用技モーションサブルーチン04
$C1:A7CE~$C1:A7EC$C1/A6D0用技モーションサブルーチン05
$C1:A7EF~$C1:A80D$C1/A6D0用技モーションサブルーチン06
$C1:A810~$C1:A82A$C1/A6D0用技モーションサブルーチン07
$C1:A82D~$C1:A836$C1/A6D0用技モーションサブルーチン08
$C1:A839~$C1:A8C6$C1/A6D0用技モーションサブルーチン09
「ほいこーろー」/「わいろ」用乱数生成
$C1:A8C9~$C1:A8DF$C1/A6D0用技モーションサブルーチン10
$C1:A8E2~$C1:A943$C1/B00C用技モーションサブルーチン01
$C1:A946~$C1:A958$C1/B00C用技モーションサブルーチン02
$C1:A959~$C1:A969$C1/B00C用技モーションサブルーチン03
$C1:A96C~$C1:A97C$C1/B00C用技モーションサブルーチン04
$C1:A97F~$C1:A99D$C1/B00C用技モーションサブルーチン05
$C1:A99E~$C1:A9CF$C1/B00C用技モーションサブルーチン06
$C1:A9EE~$C1:AA19$C1/B00C用技モーションサブルーチン07
$C1:AA1F~$C1:AA41$C1/B00C用技モーションサブルーチン08
$C1:AA44~$C1:AA54$C1/B00C用技モーションサブルーチン09
$C1:AA57~$C1:AA67$C1/B00C用技モーションサブルーチン10
$C1:AA6A~$C1:AA7A$C1/B00C用技モーションサブルーチン11
$C1:AA7D~$C1:AA8D$C1/B00C用技モーションサブルーチン12
$C1:AA90~$C1:AAAD$C1/B00C用技モーションサブルーチン13
$C1:AAB0~$C1:AB4C$C1/B00C用技モーションサブルーチン14
$C1:AC5D~$C1:AC88$C1/B00C用技モーションサブルーチン15
$C1:AC8B~$C1:AC96$C1/B00C用技モーションサブルーチン16
$C1:ACA0~$C1:ACC9$C1/A6D0用技モーションサブルーチン11
$C1:ACCA~$C1:ACD9$C1/B00C用技モーションサブルーチン17
$C1:ACDC~$C1:ACE7$C1/B00C用技モーションサブルーチン18
$C1:ACEA~$C1:ACF9$C1/B00C用技モーションサブルーチン19
$C1:ACFC~$C1:AD0B$C1/B00C用技モーションサブルーチン20
$C1:AD0E~$C1:AD23$C1/B00C用技モーションサブルーチン21
$C1:AE2C~$C1:AE42$C1/B00C用技モーションサブルーチン22
$C1:AE43~$C1:AE55$C1/B00C用技モーションサブルーチン23
$C1:AF44~$C1:AF52$C1/B00C用技モーションサブルーチン24
$C1:AF48~$C1:AF52$C1/B00C用技モーションサブルーチン25
$C1:AF4C~$C1:AF52$C1/B00C用技モーションサブルーチン26
$C1:AF55$C1/B00C用技モーションサブルーチン27(BRL)
$C1:AF58~$C1:AF7A$C1/A6D0用技モーションサブルーチン12
$C1:AF84~$C1:AF9E$C1/A6D0用技モーションサブルーチン13
$C1:AFA8~$C1:AFCC$C1/A6D0用技モーションサブルーチン14
$7E0000,xと[$00:0311]の論理積をとりゼロフラグ分岐
$C1:AFD6~$C1:AFF8$C1/A6D0用技モーションサブルーチン15
$C1:B000~$C1:B01B$C1/A6D0用技モーションサブルーチン16
$C1:B019~$C1:B020$C1/B00C用技モーションサブルーチン28
$C1:B023~$C1:B02A$C1/B00C用技モーションサブルーチン29
$C1:B02D~$C1:B098$C1/B00C用技モーションサブルーチン30
$C1:B0AF~$C1:B18C技用のカラーパレットを$7E:F980~$7E:F99Eにロード
$C1:B200~$C1:B251$C1/B00C用技モーションサブルーチン31
$C1:B254~$C1:B268$C1/B00C用技モーションサブルーチン32
$C1:B26B~$C1:B270$C1/B00C用技モーションサブルーチン33
$C1:B273~$C1:B2F2$C1/B00C用技モーションサブルーチン34
$C1:B30F~$C1:B312$C1/B00C用技モーションサブルーチン35
$C1:B315~$C1:B329$C1/B00C用技モーションサブルーチン36
$C1:B39E~$C1:B3C7$C1/B00C用技モーションサブルーチン37
$C1:B3D3~$C1:B3FC$C1/B00C用技モーションサブルーチン38
$C1:B408~$C1:B40D$C1/B00C用技モーションサブルーチン39
$C1:B410$C1/B00C用技モーションサブルーチン40(BRL)
$C1:B413~$C1:B416$C1/B00C用技モーションサブルーチン41
$C1:B419~$C1:B41C$C1/B00C用技モーションサブルーチン42
$C1:B41F~$C1:B421$C1/B00C用技モーションサブルーチン43
$C1:B720~$C1:B732技データ00~05からモーションのサブルーチンアドレス呼び出し
$C1:BEA1~$C1:BEB0技命中後にダメージ量または回復量が表示される時の効果音ID$0Dの演奏
$C1:C047~$C1:C050技命中時、命中音効果音ID$17の演奏
$C1:C1D6~$C1:C1FBボス敵撃破時の効果音ID取得処理(敵ID$D1:ピュアオディオは分岐処理)
$C1:C39D~$C1:C3B7自爆999ダメージタイプ処理開始
$C1:C3DD~$C1:C3E7技タイプが「外すとダメージ」「自爆999ダメージ」か判定
$C1:C40F~$C1:C42B被ダメージの単発値、ヒット数書き込み
$C1:C5AA~$C1:C5B1ザコ敵撃破時の効果音ID$8E演奏処理
$C1:CB87~$C1:CBA5技・ダメージフィールドによる回復量計算(味方側)
$C1:CBA6~$C1:CBE2技・ダメージフィールドによるダメージ量計算(味方側)
$C1:CBC2~$C1:CBD7現在HPからダメージ量減算(味方側)
$C1:CBE3~$C1:CC6C敵への後方吹き飛ばし・90度右回転・180度回転判定と処理
$C1:CC29~$C1:CC3F行動異常発生処理
$C1:CC72~$C1:CCBF技・ダメージフィールドによるダメージ量計算(敵側)
$C1:CD09~$C1:CD2E現在HPからダメージ量減算(敵側)
$C1:CD32~$C1:CD53敵キャラ 総ダメージ量の回避属性半減処理・999を越えている時999に変える処理
$C1:CD9F~$C1:CDC8味方キャラ 総ダメージ量の回避属性半減処理・999を越えている時999に変える処理
$C1:CDF7~$C1:CE082桁の16進数の値を10進数に解釈し直すサブルーチン
$C1:CE60~$C1:CE91現在HPと技使用後のHPの差から残りHP計算
$C1:CED4~$C1:CEF4敵への90度回転処理
$C1:CF0A~$C1:CF12敵への180度回転処理
$C1:CF13~$C1:CF2E味方キャラの戦闘状態確認・座標を$00:1C18→$00:1C1A, $00:1C19→$00:1C1Bへコピー
$C1:CF2F~$C1:CF5A敵への吹き飛ばし処理
$C1:D025~$C1:D0F4敵への吹き飛ばし座標計算
$C1:D1D5~$C1:D29C味方キャラ 向き補正・回避属性判定(レベル補正)
$C1:D29D~$C1:D2BB[$7E:9EF0]~[$7E:9EF6]に$00書き込み
$C1:D6B9~$C1:D725攻撃技のヒット数計算
$C1:D726~$C1:D7F4攻撃技の敵ターゲット決定
$C1:D7A0~$C1:D7AD味方キャラ 技使用時 ヒット数をインクリメント
$C1:D7F7~$C1:D802敵キャラ 技使用時 ヒット数をインクリメント
$C1:D870~$C1:D8B1敵キャラ 回復技判定~命中判定計算
$C1:D8BE~$C1:D8FC味方キャラ技使用時 回復技かどうか判定
$C1:D900~$C1:D910外すとダメージタイプの処理開始位置
$C1:D912~$C1:D95C味方キャラ回復技使用時 技データ10からLV差係数関係算出~単発回復量計算~眠り状態解除
$C1:D978~$C1:D9D9敵キャラ技使用時 技データ10からLV差係数関係算出~単発回復/ダメージ量計算~眠り状態解除~オディオモールなら単発ダメージ量を1に
$C1:D9DA~$C1:DA24カウンター行動異常
$C1:DB38~$C1:DBF4状態異常 発生判定処理
$C1:DC66~$C1:DC99状態異常 依存ステータス判定
$C1:DC0A~$C1:DC4A武器の追加効果の状態異常処理
$C1:DCC1~$C1:DE82味方へのステータス変動処理
$C1:DD83~$C1:DE9C敵へのステータス変動処理
$C1:DF27~$C1:DF3B武器の追加効果の状態異常判定
$C1:DFAF~$C1:DFE8味方攻撃時、技範囲内に敵キャラがいるか判定
$C1:DFF0~$C1:E025敵攻撃時、技範囲内に味方キャラがいるか判定
(味方キャラが攻撃範囲内にいたら、戦闘中の味方キャラデータ$00:1C00+40n + $2Fに順に$01~$04の値を書き込む)
$C1:E061~$C1:E0A1敵キャラ 向き補正用の中心マスを計算
$C1:E0A2~$C1:E0F4敵キャラ 回避属性判定
$C1:E0F7~$C1:E124味方が敵を攻撃する時、向き補正[$7E:ABnB]から、向き補正したレベルの値を[$7E:ABnA]に書き込む
$C1:E127~$C1:E1A8味方が敵を攻撃する時、向き補正を判定して[$7E:ABnB]に書き込む値をAにロードする
$C1:E1A9~$C1:E1C7敵キャラ戦闘状態確認
$C1:E1CB~$C1:E1E9nを加算後に敵番号nの存在確認
$C1:E251~$C1:E2E9該当の技IDの技が出せる状態か判定
$C1:E327~$C1:E3B3敵移動時 上下左右移動処理
$C1:E3D9~$C1:E401行動ポイント計算(敵が移動)
$C1:E429~$C1:E487敵移動時 向き変え処理
$C1:E4CD~$C1:E552BG3のBGマップデータ(実際のテキスト部分)を$7E:B000~にコピー
$C1:E55C~$C1:E5A3BG3のBGマップデータ(固定値部分)を$7E:B000~にコピー
$C1:E6BD~$C1:E6ED戦闘コマンド表示位置をキャラ座標から決定
$C1:E7BD~$C1:E808敵番号nのX・Y座標(マス目)と向きから敵キャラタイルの向き判定
$C1:E80C~$C1:E832敵番号nの状態を確認してから座標・敵キャラタイル位置処理へジャンプ~処理終了
$C1:E894~$C1:E8C8仲間キャラ敵対時 敵キャラデータを味方キャラデータにコピー
$C1:E94B~$C1:E9FC$7E:E900~$7E:E9FFに技関係の値を入れ、「ひとつ前の技」がない場合は、味方キャラデータの技一覧から、最初の技のIDを取り出して、「ひとつ前の技」に登録
$C1:EA79~$C1:EA76敵番号nの存在確認の$C1:E1CB~$C1:E1E9へジャンプして分岐処理、敵番号処理が終わったらBG2のBGマップデータ転送処理へジャンプ
$C1:EB18~$C1:EB34VRAM$0000~$4000初期化 GDMAチャネル7転送$C1:029A(fixed) -> VRAM:$0000 4000Byte
$C1:EBAD~$C1:EBC0戦闘開始時、行動ポイント[$00:03AF][$00:03AE]に$0000をセット
$C1:EBCA~$C1:EBC7戦闘開始時、敵の順序ポイント初期値設定
$C1:EBF1~$C1:EC0F[$7E:B000]~[$7E:BFFF]初期化
$C1:EC25~$C1:EC4AキャラIDからキャラデータ開始アドレス開始アドレスを計算
$C1:EC5C~$C1:EC79SF編と功夫編・最終編での主人公ID呼び出し分岐
$C1:ECAB~$C1:ED0E最終編オルステッドルート 味方キャラデータを味方2人目以降にセット
$C1:ED7B~$C1:ED95味方パーティIDリストから仲間キャラのIDをロード
$C1:EE2F~$C1:EE46最終編で仲間キャラ敵対時 仲間キャラID・戦闘状態書き込み
$C1:EE56~$C1:EEC8最終編以外で仲間キャラ敵対時 味方キャラID・アドレス呼び出し
$C1:F05F~$C1:F2B1最終編オルステッドルート 対戦キャラのステータスセット
$C1:F2D1~$C1:F319戦闘開始時 GDMA転送初期設定
$C1:F31F~$C1:F337戦闘開始時 GDMA転送初期設定(チャネル4[$00:434?])
$C1:F338~$C1:F3AA戦闘開始時 グラフィック関係I/Oレジスタ初期設定
$C1:F3AB~$C1:F4A8[$00:420B], [$00:420C], [$7E:FE??], [$00:03??], [$00:1C??], [$00:1A??]の初期化
$C1:F4A9~$C1:F4C5[$00:00F8]~[$00:00FF]に初期値設定
$C1:F50E~$C1:F623最終編ランダムエンカウント時の敵パーティ算出
$C1:F55D~$C1:F727味方ステータスのセット
$C1:F575~$C1:F57C[$00:0041](背景番号)から上6ビットを[$00:0354]に書き込み
$C1:F626~$C1:F65E敵パーティデータから味方キャラ4キャラ分の向きと座標を獲得・設置
$C1:F661~$C1:F6E9敵キャラ操作時 敵種類1~4セット
$C1:F89B~$C1:F955敵キャラ操作時 操作する敵のステータスセット
$C1:F95C~$C1:F986仲間キャラ敵対時かどうか判断・キャラID処理
$C1:F9B0~$C1:F9DE仲間キャラ敵対時 キャラの初期位置のロード~敵ID呼び出し
$C1:F9E1~$C1:FA19最終編オルステッドルート 敵対キャラの戦闘状態書き込み
$C1:FA31~$C1:FB2A仲間キャラ敵対時 味方キャラデータを敵種類・敵個別データにコピー
$C1:FB62~$C1:FBB8敵種類1の敵ID書き込み
$C1:FB2B~$C1:FB5D味方の隊形から行動順を判定
$C1:FBBE~$C1:FBFD敵キャラ操作時 敵IDや敵座標セット
$C1:FC0A~$C1:FC3E戦闘開始時 敵データのロード&$00:1A??~への書き込み
$C1:FC3F~$C1:FC58最終編オルステッドルート 技1~4の反撃属性1/反撃属性2/使用不可になるステータス異常書き込み
$C1:FC78~$C1:FD0F戦闘開始時 敵データから$7E:AA??~への書き込み、行動異常・状態異常に初期値設定
$C1:FD76~$C1:FD80シナリオID判定(最終編の場合、最終編主人公は誰か)
$C1:FD81~$C1:FDA5最終編ラスト7連戦開始時のみ[$7E:FEFB]に$01を、それ以外は$00を書き込む
メニュー画面 及び 現代編
アドレス内容
$C2:00F7~$C2:00FAメニュー画面開いた時の暗転処理
$C2:0103~$C2:010C[$00:0579][$00:057A][$00:057B]に$00を書き込み$C2/51E1~$C2/51F8にジャンプ・処理
$C2:0115~$C2:0121メニュー画面用カラーパレットNo.$00のデータ$C2:72A8~$C2:72C7を$7E:8C00~7E:8C1FにMVN転送
$C2:0127~$C2:012FシナリオIDを[$00:054E][$00:054D]にコピー
$C2:0202~$C2:02DFシナリオクリア時の処理(クリアシナリオの更新、セーブデータの共有部の更新など)
$C2:044E~$C2:046F現代編 戦闘開始/終了時、[$7E:0ABF]から対戦相手がオブライトか判定、オブライト以外は[$7E:0ABE]を[$00:0540]に書き込み$C2/3230へジャンプ、オブライトなら$C2/05B2にジャンプ
$C2:04EF~$C2:04FD$7E:8C00~$7E:8DFEの初期化($00で埋める)
$C2:04FE~$C2:0525OAM用の$00:0700~$00:091Fの初期化($00で埋める)
$C2:0526~$C2:052F[$00:4200](割り込み有効化レジスタ)判定
$C2:05B2~$C2:05D2バンク$C2の値を$0000,yにループ処理で転送
$C2:0602~$C2:0653押したボタンからコマンド呼び出し
$C2:0677~$C2:06DAコマンドカーソル初期位置設定
$C2:0680~$C2:06DAカーソル位置設定
$C2:06F4~$C2:0709現代編 ラストバトル敗北時 カウントダウンタイマー中 残り秒数分岐処理
$C2:070C~$C2:0720現代編 ラストバトル敗北時 カウントダウンタイマー終了
$C2:0723~$C2:0730$C2:0731~$C2:0751で判定した処理のサブルーチンアドレス呼び出し~終了
$C2:0731~$C2:0751メニュー画面での処理分岐判定ループ処理(サブルーチンアドレス呼び出し)
$C2:0770~$C2:077BAレジスタ*8の値をXレジスタに転送
$C2:077C~$C2:07A4カーソル位置のOAMデータ処理($C2/0782~$C2/07A0)+OAM転送用 GDMA転送チャネル0設定($C2:4D35~$C2:4D54)
$C2:0782~$C2:07A0カーソル位置のOAMデータを$00:0700~$00:0703に、カーソル位置アドレスを$00:0542~$00:0545に書き込み
$C2:07B1~$C2:07DDカーソル移動のサウンド演奏+コマンドカーソル初期位置判定
$C2:07D1~$C2:07D4メニュー→「装備」, 「技」, 「隊形」選択時 選択音後のコマンド処理開始
$C2:07E0~$C2:07E3メニュー→「音声」選択時 選択音後のコマンド処理開始
$C2:07ED~$C2:07F3メニュー→「持ち物」選択時 選択音後のコマンド処理開始
$C2:0802~$C2:0808メニュー→「セーブ」選択時 選択音後のコマンド処理開始
$C2:0893~$C2:089Fメニュー画面コマンドカーソル位置から、HDMAテーブル[$7E:3105][$7E:3104]を書き換えて、半透明(カラーマス)部分位置を変更
$C2:08A0~$C2:08A7メニュー画面用・コマンド判定
$C2:091E~$C2:0971隊形・キャラ入れ替えのキャラ選択状態・空欄判定
$C2:0BB9~$C2:0C15メニュー画面用・カーソル位置をAボタンで選択~もう一か所をカーソル位置指定しAボタンで選択して入れ替え
$C2:1502~$C2:1531装備の変更時、装備変更DOWNとUPどちらの効果音を演奏するかの分岐処理
$C2:160D~$C2:1616セーブ時、効果音ID$97をAにロードし、効果音演奏
$C2:1BAA~$C2:1BBB[$7E:1D03][$7E:1D02]に$00FF、Aに$2514をロードして$C2/3CACにジャンプ(シナリオ選択画面で「SELECT・A・LIVE」を流す前処理)
$C2:20B7~$C2:20C7メニュー→音声で「ステレオ」または「モノラル」選択時、[$7E:0AB5]の上1ビット更新
$C2:213F~$C2:2149ひとつ前になっていたBGM/効果音IDを$7E:1D05→$7E:2EAFにコピー、$C2:2214~$C2:222A処理
$C2:215A~$C2:216DLISTENING ROOMグラフィック処理 [$00:0518][$00:0517]に$000F、[$00:0512][$00:0511]に$7FFF、[$7E:2EB4][$7E:2EB3]に$0000を書き込み、Aに$0600、Xに$71FCを書き込んで$C2/05B2にジャンプ
$C2:2170~$C2:2175[$00:0578][$00:0577]に$FFF7を書き込み$C2/31ABにジャンプ
$C2:2178~$C2:217BXに$849Eを書き込み$C2/35ADにジャンプ
$C2:217E~$C2:2198LISTENING ROOMグラフィック処理 $7E:8A00+yを$7E:2EB1にコピー(LISTENING ROOMのyページ目のシナリオID)、$C2:7120+シナリオIDの値を$00:0540に書き込み$C2/077C~$C2/07A4(カーソル位置のOAMデータ処理+OAM転送用 GDMA転送チャネル0設定)を実行
$C2:2214~$C2:222ALISTENING ROOM選択時サウンド処理 $7E:1D02に$00を書き込み、現在のBGMにフェード指示(コマンド$81 0C)、演奏停止処理
$C2:22E8~$C2:232ALISTENING ROOMでカーソル位置にある曲のBGM関係のデータ6バイトを$7E:2EB5~$7E:2EBAに書き込み
$C2:232B~$C2:2380LISTENING ROOM 曲の演奏開始処理
$C2:2352~$C2:2362LISTENING ROOMでカーソル位置のBGMIDをAにロード
$C2:2383~$C2:238FLISTENING ROOM 曲の演奏終了処理
$C2:2641~$C2:264E現代編 戦闘開始時、[$00:0577]に$00、[$00:0050]に$07、カーソル位置[$00:0565]の対戦キャラの数値を[$7E:0ABE]に書き込む
$C2:2651~$C2:2658現代編 戦闘開始から終了($C1:0000……$C1:005F)~メニュー画面表示までの処理
$C2:27B9現代編 戦闘終了(勝利または敗北時)処理開始($C2/3C59、サウンド処理にジャンプ)
$C2:27BC~$C2:27BF現代編 戦闘終了時 Xに$835Dをロードしてからグラフィック処理へ
$C2:27C2~$C2:27D1現代編 [$7E:0ABE]に[$00:0565]を書き込み、[$7E:0ABE]からアドレス計算し$C2/35ADにジャンプ
$C2:27D4~$C2:2859現代編 敗北時 グラフィック処理及び、[$7E:0ABE]の値からBGM演奏処理へ($C2/56C8~、$C2/3CAC~、$C3/0004~)
$C2:285C~$C2:2868現代編 OAMデータ、カラーパレットデータをGDMA転送処理
$C2:286B~$C2:287F現代編 ラストバトル敗北時カウントダウン処理
$C2:28C0~$C2:28D3現代編 勝利時、[$7E:0ABF]の更新
$C2:2DBC~$C2:2DCA$7E:A000~$7E:BBFEの初期化($00で埋める)
$C2:2DCB~$C2:2E6Bキャラ名などテキストデータを$7E:2000~から$00:05xx~にコピー
$C2:2F16~$C2:2FA4BG3の$00:05xx~のデータをタイルデータの配置に合わせて分割、$7E:A5C0~$7E:BA1Fにコピー
$C2:2FA5~$C2:2FBDタイルデータビット反転処理
$C2:2FBE~$C2:300E$D4:F200~$D4:FFFF(8×8ピクセルサイズの文字画像・吹き出し・ウィンドウ形状などのタイルデータ)をVRAMアドレス$6400~$8000にGDMA転送
$C2:300F~$C2:3022[$00:054E][$00:054D]からシナリオIDまたは最終編主人公IDを[$00:0550][$00:054F]にコピー
$C2:3023~$C2:308Aメニュー画面の共通画像部分(背景画像、セリフ吹き出し、コマンド枠)をVRAMアドレス$4000~$5FFFに転送
$C2:308B~$C2:3097XとYを指定した状態でバンクC2からバンク7Eへ$003F+#$007Fバイト転送
$C2:3098~$C2:30AAXとYを指定した状態でバンク7Eからバンク7EへXを+$20バイトしつつ+$001Fバイト転送
$C2:30AB~$C2:30FA$7E:C000~$7E:C7FEを$00で初期化、シナリオ別カーソルの画像コピー
$C2:3121~$C2:3160各シナリオカーソル、手袋カーソル、枠、斜め向き矢印、「←L」アイコン、「R→」アイコン画像をVRAMアドレス$8000~$87FFに転送
$C2:3161~$C2:3197装備画面における頭・右・左・体・足・アクセサリ欄の16×16サイズキャラのタイルデータ($C2:D5C0~$C2:D8BF)を、VRAMアドレス$BC00~$BD7F, $BE00~$BF7FにGDMA転送
$C2:321B~$C2:322FBG2(背景)タイルデータのBGマップ用データの同一箇所を[$7E:Cxxx]にコピー
$C2:3230~$C2:32BBBG2(背景)タイルデータのBGマップ用データのn行目タイルデータを[$7E:C000]~に転送
$C2:32CA~$C2:32C0$7E:A7FE~$7E:9800の初期化($00で埋める)
$C2:32CB~$C2:3334メニュー画面吹き出し形状のBGマップデータを$00:0655~$00:066Fにコピー
$C2:335E~$C2:336Dメニュー画面のBG1用BGマップデータ改行判定
$C2:3370~$C2:338Dメニュー画面吹き出し形状のBGマップデータ(吹き出しの尖った部分)を$7E:9800~$7E:9EFFにセット
$C2:33A1~$C2:33ECメニュー画面のBG1用BGマップデータを$7E:9800~$7E:9EFFにセット
$C2:3481~$C2:34A7VRAM転送用 GDMA転送チャネル4設定
$C2:34AC~$C2:34E4$7E:C000~にコピーされたキャラのスプライトデータを$7E:C800~へコピー
$C2:34FC~$C2:3526キャラのカラーパレットデータを$7E:8D00~へコピー
$C2:3534~$C2:35A8キャラのスプライトデータを$7E:C000~へコピー
$C2:35AD~$C2:3712キャラのOAMデータ、または背景のBGマップデータを$7E:xxxx~へコピー
$C2:35F5~$C2:360EBGマップ4バイト転送
$C2:3620~$C2:3665BGマップ反転処理
$C2:3966~$C2:398C各シナリオの主人公(+最終編で功夫編主人公になるユン、レイ、サモ)の、フィールドの16×16サイズスプライトをVRAMアドレス$A400~$BBFFにGDMA転送
$C2:3C28~$C2:3C34カーソル系効果音 カーソル移動音演奏
$C2:3C35~$C2:3C40カーソル系効果音 カーソル位置選択・決定音演奏
$C2:3C41~$C2:3C4Cカーソル系効果音 キャンセル音演奏
$C2:3C4D~$C2:3C58カーソル系効果音 ブザー音演奏
$C2:3C72~$C2:3C94装備やセーブ音など、音量$FF・パン(音の定位)$7Fで効果音演奏
$C2:3C95~$C2:3CAB「ステレオ」または「モノラル」切り替え時、ARAMに切り替え指示送信
$C2:3CAC~$C2:3CAFAを[$7E:1D01][$7E:1D00]に書き込んでサウンド処理$C3/0004にジャンプ
$C2:3CB4~$C2:3CCEセーブデータからのロード
$C2:3D4D~$C2:3D98セーブデータへのセーブ
$C2:3E0E~$C2:3E71シナリオクリア時、$00:0AB6~$00:0ABDの更新
$C2:42D9~$C2:43B5指定テキストを$7E:2000~にロードする
$C2:4386~$C2:43BBシナリオ別キャラデータからキャラ名を$7E:2000~にロード
$C2:44C9~$C2:44D8シナリオ別キャラデータからデータ呼び出し
$C2:44D9~$C2:4513シナリオIDからメニュー画面用の定数[$00:0555]~[$00:0559]設定
$C2:4514~$C2:453Cアイテム欄整頓用 $7E:8A00~及び$7E:8B00~から元の$00:0B01~及び$00:0C01~に転送・上書き
$C2:49A6~$C2:49D0アイテムIDからアイテムデータ開始アドレス計算の準備~アイテムデータ転送
$C2:4AEF~$C2:4AFFHDMAテーブルを$00:3100~にコピー
$C2:4B09~$C2:4B0DVBlankフラグ判定ループ([$00:4212] 上1ビット判定)
$C2:4B15~$C2:4B21ステータスレジスタとAレジスタをスタックに入れてからHDMA転送&NMIによる割り込み待ち用ループ処理
$C2:4B22~$C2:4B2BHDMA転送&NMIによる割り込み待ち用ループ
$C2:4B3B~$C2:4B50HDMA チャネル7設定
$C2:4B51~$C2:4B9Cメニュー画面 隊形・キャラ入れ替え
$C2:4C4D~$C2:4C87VRAMの初期化+アドレス$F800~$FFFFバイトに初期値書き込み
$C2:4C88~$C2:4CA0VRAM転送用 [$00:0600]がネガティブフラグONならGDMA転送実行
$C2:4D35~$C2:4D54OAM転送用 GDMA転送チャネル0設定
$C2:4D55~$C2:4D78CGRAM転送用 GDMA転送チャネル1設定
$C2:4D83~$C2:4DAFVRAMのBG1用BGマップ転送用 GDMAチャネル3設定
$C2:4DB0~$C2:4DD0[$00:057A](GDMA転送チャネルに設定がされているか判定用メモリアドレス)に値が入っていた ら、対応したGDMA転送チャネルを実行
$C2:4DD4~$C2:4FE5メニュー画面 グラフィック関係I/Oレジスタ初期設定
$C2:4FE8~$C2:4FEF[$00:4200]に[$00:0579]を書き込んで自動ジョイパッド読み取り機能をONにする(NMI割り込みONは[$00:0579]の値次第)&HDMA転送実行
$C2:4FF7~$C2:4FFDD/DB/Y/X/P/Aレジスタにスタックからプルして割込から復帰し、中断していた処理を再開
$C2:50D6~$C2:50FE現代編 ラストバトル敗北時 カウントダウンタイマーの[$00:0591](フレーム値残り時間)と[$00:0592](秒残り時間)のデクリメント分岐処理
$C2:5178~$C2:51E0メニュー画面用・コントローラーのボタンを押したか判定ループ([$00:4212][$00:4218]のチェック)
$C2:51F9~$C2:5201アドレス呼び出し用サブルーチン(Aに$7Eセット)
$C2:5204~$C2:5231シナリオ別キャラデータから功夫編主人公の「老師」「師範」のセット
(功夫編主人公IDが$08 = 老師かどうかで判定)
$C2:5232~$C2:523Dシナリオ別キャラデータからキャラ名呼び出し
$C2:5383~$C2:53F3入力テキストと$7E:2000~が一致しているか判定
$C2:55C7~$C2:55E2文字一覧表に文字を設置
$C2:564F~$C2:5669現代編 ラストバトル敗北時 [$00:0592]-1を[$7E:2E78]に書き込みカウントダウン数値のグラフィック処理へ
$C2:566C~$C2:5670現代編 ラストバトル敗北時 グラフィックデータVRAM転送処理
$C2:5671~$C2:56C7現代編 ラストバトル敗北時 カウントダウンの数字グラフィック処理
$C2:56C8~$C2:5706現代編 $7E:1D01に$00、Aに$0086をロードして、$C2/3CACにジャンプ(サウンド処理へ)
$C2:56D4~$C2:5720現代編 勝利時、[$7E:0ABE]から判定してBGM演奏処理へ($C2/3CAC~、$C3/0004~)
$C2:6238~$C2:6257アイテムIDからアイテムデータ開始アドレス計算
$C2:62EF~$C2:6300[$7E:8A00]~[$7E:8AFF]及び[$7E:8B00]~[$7E:8BFF]に初期値として$00を書き込む処理
$C2:6301~$C2:6316アイテム欄整頓用 アイテムIDを整理用アドレスにコピー及びアイテム個数の整理とコピー
$C2:6317~$C2:632Dアイテム欄整頓用 アイテムをアイテム欄整理用アドレスにコピーするループ処理
$C2:632E~$C2:6341アイテム欄整頓「回復先/攻撃先/装備先」用 回復/攻撃/装備アイテム以外をアイテム欄整理用アドレスにコピーするループ処理
$C2:6342~$C2:6371アイテム欄整頓「回復先」用 回復アイテムをアイテム欄整理用アドレスにコピーするループ処理
$C2:6372~$C2:639Dアイテム欄整頓「攻撃先」用 攻撃アイテムをアイテム欄整理用アドレスにコピーするループ処理
$C2:63A2~$C2:63E2アイテム欄整頓「装備先」用 装備アイテムをアイテム欄整理用アドレスにコピーするループ処理
$C2:6538~$C2:6580LISTENING ROOM $C2:62EF~$C2:6300後、ページ数$7E:8A00~にシナリオID、[$00:0538]にトータルのページ数書き込み(最終編ベストエンドを見たことがあるかどうかで処理分岐)
$C2:6581~$C2:6587LISTENING ROOM Xに$84B7をロードして$C2/35CEにジャンプ
$C2:658A~$C2:65ABLISTENING ROOM [$00:0538](トータルのページ数)からページ切り替え判定
$C2:65AC~$C2:65BFLISTENING ROOM $C2:8B1B→$00:0681にMVN転送(8バイト)
$C2:66FE~$C2:672F$7E:8CE0~$7E:8CEF→$7E:36E0~$7E:36EFにMVN転送
$CA:([$00:054F]*8+$F280)~+$0F→$7E:36C0~$7E:36CFにMVN転送
$318Cを[$7E:2F93][$7E:2F92]に、[$C2:8CA7][$C2:8CA8]を[$7E:2FE7][$7E:2FE6]に書き込み
$C2/677Fにジャンプ
$C2:677F~$C2:678D$7E:36E0~$7E:36EF→$7E:2F72~$7E:2F81にMVN転送して$C2/6834にジャンプ
サウンド
アドレス内容
$C3:0000~$C3:012Fリセット時サウンドデータ転送
$C3:0131~$C3:017Fサウンドデータ転送判定
$C3:0180~$C3:01C2戦闘BGMデータ読み込み前に[$00:1D00]と[$00:1D01]処理
$C3:01C5~$C3:02E4$00:1D10~$00:1E3Fに値設定
$C3:01DA~$C3:01E2演奏曲に使用するサンプリングデータIDを$00:1E00~$00:1E1Fに書き込み&ARAMと被っていないサンプリングデータIDをチェック
$C3:02C1~$C3:02D4サンプリングデータIDの値が$00ではないかチェック
$C3:0311~$C3:031Aサンプリングデータの開始アドレス計算 Aを[$00:1D1E]に書き込み, Yを+2, Yが$0040でなければ$C3/02C1にジャンプ
$C3:031C~$C3:036Aサンプリングデータの開始アドレス計算 [$C33FC9,x]~[$C33FC9,x+2]を[$00:1D10]~[$00:1D12]に書き込み
x = ([$00:1D2E]-1)*3
$C3:037A~$C3:03DF[$00:1DAE]を[$00:2142]、
[$00:1DAF]を[$00:2143]、
$03を[$00:2141]、
[$00:1D1E]を[$00:2140]に書き込みARAM転送
[$10],y以降を[$00:1D1C][$00:1D1D][$00:2141][$00:2142][$00:2143]に書き込み
yは$C3/031C~$C3/036Aで計算した[$C33FC9,x][$C33FC9,x+1]
$C3:03E2~$C3:03DFサウンドデータサイズを$00:2141に、転送先アドレスを$00:2143~$00:2142に書き込み
$C3:04DB~$C3:04EEシーケンスデータの開始アドレス計算
$C3:04F1~$C3:0587BGM切り替え時、ひとつ前の演奏曲コマンド4バイト$00:1D04~$00:1D07を$00:1D08~$00:1D0Bにコピー、切り替え前曲コマンド4バイトを$00:1D00~$00:1D03を$00:1D04~$00:1D07にコピー、切り替え前の演奏中のBGMをコマンド$F0で停止
$C3:062F~$C3:064F[$00:1D00]が$14以上の時、$04と[$00:1D00]で論理和を取って[$00:1D00]に書き込み
$C3:06BD~$C3:06CCAを[$00:2140]に書き込みARAMにデータ転送
$C3:06CD~$C3:06F2[$00:1D02]を[$00:2142]、[$00:1D01]を[$00:2141]、[$00:1D00]を[$00:2140]に書き込み[$00:2140]をロードしてARAM転送待ち、Aと$7Fで論理積をとって[$00:1D1E]に書き込み
システム・その他
アドレス内容
$00:FFB0~$00:FFB4リセット時初期処理
$CE:CD7A~$CE:CE61セーブデータへのセーブ用データ圧縮
$CE:CEEF~$CE:CF13セーブデータからのセーブ用データ解凍($00:12xx用)
$CE:D03D~$CE:D0A2シナリオ開始時 画像データ呼び出し用シナリオ分岐判定
$CE:D0A6~$CE:D0CFシナリオ開始時 [$0003,x][$0002,x]+2 を[$0001,x][$0000,x]に書き込むループ
$CE:D1F3~$CE:D397マップ上スプライトの初期配置を計算・$00:1329~$00:157Aに書き込み
$CE:D3BF~$CE:D432BG1,BG2マップデータの初期化
$CE:D47E~$CE:D89D各種データを$7E:xxxx~にコピー
$CE:D909~$CE:D95B戦闘開始時 三角形ウィンドウマスク座標計算
$CE:DAC5~$CE:DAFE戦闘開始時 三角形ウィンドウマスク処理のHDMA転送7チャネル設定
$CE:DB04~$CE:DB5C戦闘開始時 三角形ウィンドウマスク処理のHDMAテーブル初期値設定
$CE:DB5D~$CE:DB88戦闘開始時 三角形ウィンドウマスク座標計算終了判定
$CE:DB99~$CE:DBDD戦闘開始時 三角形ウィンドウマスク座標計算指示
$CE:DC76~$CE:DD0D戦闘開始時 三角形ウィンドウマスク座標のHDMAテーブル計算値書き込みループ
$CE:DD56~$CE:DDB2戦闘開始時 三角形ウィンドウマスク座標のHDMAテーブル計算値書き込み

RAM領域は次ページ参照。



このページをシェアする

上へ