
--------------------------------------
HVC-SM　メモリ情報
--------------------------------------
$00E7 : マップコマンドアドレスの下位
$00E8 : マップコマンドアドレスの上位
$00E9 : 敵コマンドアドレスの下位
$00EA : 敵コマンドアドレスの上位

サウンド関連サブルーチン内のローカル変数

  $F0 : どの音長テーブルを使うか。(普通使う値 00,08,10,18,20)

  $F1 : SQ1効果音鳴っている時。$FFからコピーされる。
        00: 効果音無し
        01: 大マリオジャンプ 
        02: ブロックたたき,亀跳ね返り,ファイア衝突
        04: 踏みつけ「ぺにょ」,泳ぎ
        08: 「ポコ」
        10: 土管入り,パワーダウン
        20: ファイア吐き
        40: ポールつかむ
        80: 小マリオジャンプ
  $F2 : SQ2効果音鳴っている時。$FEからコピーされる。
        00: 効果音無し
        01: コイン
        02: きのこにょきにょき
        04: 豆の木にょきにょき
        08: キラー,花火,クッパ橋崩れ
        10: ゴール時タイムカウント
        20: パワーアップ
        40: 1up
        80: クッパ落下
  $F3 : NOI効果音鳴っている時。$FDからコピーされる。
        00: 効果音無し
        01: レンガ崩れ,クッパ橋崩れ
        02: クッパ炎

  $F4 : 大曲鳴っている時。$FBからコピーされる。
        00: 曲無し
        01: 地上
        02: 海
        04: 地下
        08: 城
        10: 雲面
        20: 地上イントロ
        40: スター
        80: 曲を一時的に止める

  $F5 :  SQ2 の曲データの先頭位置へのポインタの下位バイト
  $F6 :  SQ2 の曲データの先頭位置へのポインタの上位バイト

  $F7 : SQ2 曲のカウンター(インクリメント)
  $F8 : SQ1 曲のカウンター(インクリメント)
  $F9 : TRI 曲のカウンター(インクリメント)
================================================================
メインルーチン側から渡される引数

  $FA : ポーズのフラグ。00:通常, 01:ポーズせよの命令, 02:ポーズを解除せよの命令

  $FB : 大曲を選択せよの命令   $F4へコピー
  $FC : 小曲を選択せよの命令  $7B1へコピー

  $FD : NOI 効果音を鳴らせの命令  $F3へコピー
  $FE : SQ2 効果音を鳴らせの命令  $F2へコピー
  $FF : SQ1 効果音を鳴らせの命令  $F1へコピー
================================================================

$0200 - $02FF スプライトメモリーへ転送

$0300 から パレット（コインのパレット等）
インデックス、PPUアドレス上位、PPUアドレス下位、データ、…

$0483：クッパが後、いくつのファイアーボールに耐えられるか。（5で初期化される。）

$0500～$050F:SMB Utilで言う高さ0の地形。
$0510～$051F:SMB Utilで言う高さ1の地形。
$0520～$052F:SMB Utilで言う高さ2の地形。
$0530～$053F:SMB Utilで言う高さ3の地形。
$0540～$054F:SMB Utilで言う高さ4の地形。
$0550～$055F:SMB Utilで言う高さ5の地形。
$0560～$056F:SMB Utilで言う高さ6の地形。
$0570～$057F:SMB Utilで言う高さ7の地形。
$0580～$058F:SMB Utilで言う高さ8の地形。
$0590～$059F:SMB Utilで言う高さ9の地形。
$05A0～$05AF:SMB Utilで言う高さ10の地形。
$05B0～$05BF:SMB Utilで言う高さ11の地形。
$05C0～$05CF:SMB Utilで言う高さ12の地形。

上のアドレスは、現在表示されているページの地形。
これより下は、次のページの地形。
メモリビューアーなどで見るとよくわかる。

$05D0～$05DF:SMB Utilで言う高さ0の地形。
*
*（略）
*
$0690～$069F:SMB Utilで言う高さ12の地形。

と言うような感じ。
RAMには、七休氏の高度なグラフィック改造のための解析資料のグラフィック通し番号が格納されている。

$06D4 : 現在のコインの色のインデックス(00から05まで1ずつあがっていく)

//　ワールド７のループ（３つで一組）を処理するときに使用
$06D9 : 3つのうち、決められた高さを通った数
$06DA : 3つのうち、現在まで通ったチェックポイント

$06CC:ハードモード
0:右記以外　1:２周目or５－３以降

$0704 : 泳ぐかどうか
00-泳がない
01-泳ぐ

$0710 出現位置

$0715 持ち時間

$071A : 現在のマップのページ

$071B : 現在の敵のページ

$0725 : 現在のページ

$0726 : 現在の横位置（1ページ＝16*16）

$0727 : 現在有効な基本ブロック

$072A : マップの次に処理するページ
$072B : マップの改ページフラグ
$072C : マップの先頭からのバイト

レンガ等の長さを持つオブジェクトの残りの表示について
$072D - $072F  …　先頭からのバイト
$0730 - $0732　…　残りの長さ
すなわち、３つまでしか残りのオブジェクトを保存する領域が
ないということになる。

$0734 次に描画する階段高さ階段(低8,7,6,5,4,3,2,1,0高)
$0736 - $0738 キノコの島の茎の位置（ページを超えたキノコの島の茎の描画に必要）

$0739 : 敵の先頭からのバイト
$073A : 敵の次に処理するページ
$073B : 敵の改ページフラグ

$073F：現在の横スクロールの値
$0740：現在の縦スクロールの値

$0742 現在有効な景色

面設定 xx
       xx!=#$03　xx==#$03
$0743    ??       xx
$0733    xx       00

背景オブジェクト xxx
       xxx!=#$04   xxx==#$04
$0744    xxx         ??
$0741    #$00        xxx

$0748：エリア内で獲得したコインの枚数

$074A：1Pパッド入力
$074B：2Pパッド入力
○01：→　02：←　04：↓　08：↑　10：スタート　20：セレクト　80：A　40：B
※03がムーンウォーク（多分）
　同時に押すと合計される。
　デモではこの値を用いていると思われる。

$074E : エリアの種類 ルームID[-xx- ----]
 $074E : (1だったら敵を踏めない)
 0:地上 1:海 2:地下 3:城

$074F : エリアの番号 ルームID[---x xxxx]

$0750 : ルームID[xxxx xxxx]
$0751 : 開始ページ

$0752 : 
<00>イントロから初期位置
<01>初期位置から出現
<02>土管から出現 豆の木から出現
<03>雲から落下

$0753：0 - マリオ
       1 - ルイージ
（パレットだけでなくコントローラーも）

$0754 : 0　デカマリオ、 1　チビマリオ

$0756 : マリオの状態（0-チビ, 1-スーパーマリオ, 2-ファイアーマリオ）

$075A：マリオの残機
○ミスすると-1　00でミスをするとFF　-1したときの値が80-FFならゲームオーバー

$075E : コインの枚数

$075F : ワールド（ワールド－１、つまり、０から始まる。）
$075C : エリア(導入面は、数えない。)
$075D：1upキノコを出すかどうか(==0→出さない,else→出す）。
$0760 : エリア(導入面も数える。)

$0770
00:デモ状態（音なし、操作不能）
01:通常状態（音あり、操作可能）
02:斧状態（音あり、テキスト表示、操作不能、しばらくすると次のワールドへ）
03以降:フリーズ

$0778：PPUコントロールレジスタ#1($2000)の値
$0779：PPUコントロールレジスタ#2($2001)の値

$079F:スターの残り時間

$07A2:タイトル画面でのデモプレイまでの時間。
　　　#$18から01ずつ減っていき、00になるとデモプレイ開始。


サウンド関連サブルーチン内のローカル変数

 $7B0 : NOI 曲のカウンター(インクリメント)
 
 $7B1 : 小曲鳴っている時。$FCからコピーされる。(メインルーチン側で読まれることがある。)
        00: 曲無し
        01: 死
        02: ゲームオーバー
        04: ピーチ
        08: 斧
        10: (没ネタゲームオーバー)
        20: ゴール
        40: 残り100秒
        80: 曲を一時的に止める

 $7B2 : 今、ポーズ音が鳴っているかどうか。
        00:とにかく鳴ってない, 01:ポーズ音鳴ってる, 02:ポーズ解除音鳴っている


 $7B3 : SQ2 現在の音長(テーブルの中身)
 $7B4 : SQ2 音長カウンター(デクリメント)
 $7B5 : SQ2 エンベロープカウンタ(デクリメント)

 $7B6 : SQ1 音長カウンター(デクリメント)
 $7B7 : SQ1 エンベロープカウンタ(デクリメント)

 $7B8 : TRI 現在の音長(テーブルの中身)
 $7B9 : TRI 音長カウンター(デクリメント)

 $7BA : NOI 音長カウンター(デクリメント)


 $7BB : SQ1 効果音発音カウンター(デクリメント)
 $7BD : SQ2 効果音発音カウンター(デクリメント)
 $7BE : SQ2 きのこ,豆の木専用効果音発音カウンター(インクリメント)  終値20:きのこ,終値40:豆の木
 $7BF : NOI 効果音発音カウンター(デクリメント)
 
 
 $7C0 : エミュレータではおそらく無用だろう。DMC音量レジスタ $4011 に関わる。
 
 $7C1 : NOI 曲の開始位置。$7B0の保存用

 $7C4 : 通常00。残り100秒 になったら 08となって次の音長テーブルを使用させる(テンポアップになる)。
 $7C5 : $F4のコピー。現在鳴っている大曲。残り100秒の警告音楽が鳴り終わった後、
        元の大曲を復元するために使われている。

 $7C6 : ポーズに関わるBGMのスイッチ。
        00:(まだ)BGMを鳴らす, 01:鳴らさない, 02:現在ポーズ解除中(まだBGMはオフ)

 $7C7 : 地上の音楽の繰り返しカウンター(インクリメント)、11～31。
        その他の大曲では10。小曲は関わりを持たない。

 $7CA : SQ1 音色。死んだ時にふざけた音色になる:94。通常00。
        その本質は 矩形波1コントロールレジスタ2  すなわち $4001 へ代入する値。
        プログラムの都合上必要。

$07D7から6バイトがハイスコア(1桁につき1バイト)

$07E9-07EE
○表示上のコインの枚数　01-09でなぜか6桁もある
　09 09 09 09 09 09でコインを取ると00 00 00 00 00 00に戻る

$07F8　時間のデータ(00,04H, 03H, 02H)
$07F9  10の位
$07FA  1の位

$07FC ($076A): 全面クリアーすると１それ以外は、0

$07FF: A5h-ハイスコアは、有効
　　　 それ以外-ハイスコアは、無効

=== 未使用のメモリ =================

① ＄０７６Ｃ～＄０７６Ｆ
② ＄０７７Ｂ～＄０７７Ｅ

①のメモリは、ゲームオーバーやリセット、デモプレイ終了で初期化されますが、②のものは、こちらで操作するか、シャットダウンしない限り初期化されません。
====================================

$02:敵の縦座標
$05:敵の横座標

$39:アイテムの種類？
0:パワーアップ類 1:スター 2:1UPキノコ

$58から何バイトかは、敵キャラの速度？

$EF:敵の通し番号？

$0770,$0772 : 画面のモード
        0 -　タイトル画面
        1 -　ｴﾘｱとｴﾘｱの間の表示
        2 - クリアー
        3 - ゲームオーバー

$1D : ジャンプしたときに1になる。それ以外は0?

$0748 : 
$0725 : ページ？
$0726 : 下位4ビットのみ有効?
　　　　$0725とorをとっている
       4回、左にシフト
$0739 : 敵に関するページ？
$071A
$071B
$072A

マリオのY座標　$00CE
マリオのX座標  $03AE
$03B2

$073B -> 0
$072B -> 0
$0739 -> 0
$073A -> 0

//ルーしたときに0に戻される
$073B
$072B
$0739
$073A

//何かループを処理するためのもの
$06D9 :
$06DA :
$072C : 

//ページのデータ($0751)をこれらのアドレスのストア
$071A
$0725
$0728

マップコマンドヘッダの処理
$9C58から

//スタート直後の
$8E16->$8245->$8255->$82d8->$9C03
         (タイトルループ)

$8E16 -> $858B-

//1ページ目の敵

//実際にマップ表示を開始している部分
$93FC

//
$0745 … ﾙｰﾌﾟの処理を行うか（ﾙｰﾌﾟコマンドであるか）
$06CB
$06CC
$06CD
$071B
$071D
$076A …　裏面