解析資料というかオンラインマニュアル
多すぎてだるいので戻る

えー、オンラインマニュアルです
使い方はまぁ・・・「起動すれば」解るでしょう
取り敢えずこれを読めばVISINEよりは高機能なエディタが造れると思います。

■機能紹介と操作方法
主な解析結果
■エディタに実装済みのもの
1.面データ格納位置
2.チップグラフィック
3.チップ属性
4.チップのパレット
5.マップ
6.敵
7.アイテム
8.オブジェクトリスト
■エディタに未実装のもの
1.スクロール
2.スクロールエディットの注意点
3.スタート地点と中間地点
4.バンクのセット
5.スプライトバンクのセット
6.パレット変更
7.チップの属性
8.雑魚敵の耐久力
9.ボス敵の耐久力
10.音楽データ
12.その他
■事務的なもの
■謝辞

    #####################################################################
    機能紹介と操作方法（ボタンの説明は見れば解ると思うのでありません）
    #####################################################################
    ■マップエディット時
    マップ上で左クリック : チップを配置
    マップ上で右クリック : チップを取得
    チップ上で　クリック : チップを取得
    F5 : 上書保存
    F7 : リロード
    ← : 1画面左
    → : 1画面右
    ↑ : マップの最初
    ↓ : マップの最後

    ■チップエディット時
    チップ上で左クリック         : チップを配置
    チップ上で右クリック         : チップの取得
    属性テキストの上で左クリック : 属性の変更
    F5 : 上書保存
    F7 : リロード

    ■敵、アイテムエディット時
    マップ上で左クリック : 選択オブジェクトの移動
    マップ上で右クリック : 選択オブジェクトの移動（16ドット単位）
    ← : 前のオブジェクト
    → : 次のオブジェクト
    F5 : 上書保存
    F7 : リロード

    #####################################################################
    主な解析結果
    #####################################################################
    ヘッダの分である$10の差分を入れていません。
    バイナリエディタを使う際は御注意下さい。
    バイナリエディタについての御質問は御受けいたしません。

    ■エディタに搭載されているもの
    1.面データ格納位置
    $00000 : ヒート&ワイリー1
    $04000 : エアー&ワイリー2
    $08000 : ウッド&ワイリー3
    $0C000 : バブル&ワイリー4
    $10000 : クイック&ワイリー5&ワイリー土下座
    $14000 : フラッシュ&ワイリー6&メニュー&エンディング
    $18000 : メタル
    $1C000 : クラッシュ

    2.チップグラフィック
    0000〜$03FF（下位ビット）
    1バイトにつき4バイトずつ
    ヒート&ワイリー1は共通
    グラフィックは$40(64)種類から選ぶ

    3.チップ属性
    0000〜$03FF（上位2ビット）
    1バイトにつき一つの属性（背景、壁、梯子、トゲ等）
    $00〜$3Fは背景で$40〜$7Fが壁といった感じ
    $00と$40は同じグラフィックとなる

    4.チップのパレット
    $0400〜04FF
    1バイトにつき1チップ
    上位から2ビットずつでチップのパレットの種類を決める

    5.マップ
    $0500〜$0FFF
    1画面を8x8に分割、$40(64)byte
    1チップ1バイトずつで縦書き
    ヒートマン面の後ろにワイリー1面が入っている

    6.敵
    $3600〜$36FF
    1バイトずつ敵の出る部屋番号
    ワイリー面の部屋番号に注意
    $3700〜$37FF
    敵のX座標
    $3800〜$38FF
    敵のY座標
    $3900〜$39FF
    配置するオブジェクト番号

    7.アイテム（壁等、復活しないオブジェクト）
    $3A00〜3A3F
    1バイトずつアイテムの出る部屋番号
    ワイリー面の部屋番号に注意
    $3A40〜$3A7F
    X座標
    $3A80〜$3ABF
    Y座標
    $3AC0〜$3AFF
    配置するオブジェクト番号

    8.オブジェクト番号について
    オブジェクトは敵もアイテムも共通
    空いている所は頼みますｗ

    00エビ
    01エビ(アンコウから出てくる）
    02エビが出てくる
    03上から降りてくるバブルマン面のあいつ（色も変わる）
    04そいつ（色は変わらず）
    05？
    06何かが破裂？
    07カニが出てくる
    08カニ
    09
    0aヤドカリ
    0b貝がら
    0Cカエル？
    0D小さいカエル
    0E泡ブク
    0Fアンコウのちょうちん？

    21テリーが出てくる
    22テリー
    23チャンキーメーカー
    24何かが上に行って落ちてくる？
    25パレット変化
    26パレット変化
    27パレ変
    28パレ変
    29ギア乗り小僧のギア（小僧も降ってくる）
    2A小僧のみ
    2B落ちてくるデカブツが出現する
    2Cそのデカブツ
    2D壊せる壁
    2Eわからん見えないブロック？
    2F同じ
    30トゲのプレス
    31ダルマ
    32ダメージ受ける
    33何かが落ちてく？
    34メットール
    35弾
    36マタサブロウ
    37ピピの親
    39カラ？
    3Aピピ（止まってる）
    3Cピピ（通常）
    40エアーマン面の鬼
    4140と何が違うの？
    42?
    43パレット変化
    44鬼の角
    45鬼の子供
    46恐らくバネだと
    47モールが出てくる
    48モール（上向き）
    49?
    4A?
    4Bたま出す奴（左向き）
    4Cたま出す奴（右向き）
    4Dそいつの弾
    4Eスナイパーアーマー
    4Fジョー
    50ブーメランだす奴
    51ブーメラン
    52〜54消えるブロック
    55フラッシュ
    56壊せるブロック

    59クイックブーメラン
    5Aバブルマンの単発
    5Bバブルリード
    5Cメタルブレード
    5Dエアーシューター
    5Eクラッシュボム
    61リーフシールド
    62上から落ちてくるはっぱ

    6Bワイリーマシンの弾

    6Dブービームトラップ
    6Fエイリアンの弾
    86体力回復大
    88武器回復大

    8AＥ缶
    8B１ＵＰ

    ■エディタに搭載されていないもの
    これらは別ツールかバイナリエディタ使ってください。
    説明不足だと思うので元データを良く参照する事をお奨めします。
    これを元にエディタを作った方がいたら教えてください。
    ヒートマン面のアドレスですので他の面については$4000ずつ足していってください。

    1.スクロール
    $3400から1スクロールにつき1バイトずつ
    上位4ビットがスクロール方向
    0は無し
    2は右
    4は下
    8は上
    Eは右と上と下（組み合わせ）
    下位4ビットはスクロールまでの画面数
    例えば$82は「2画面横に行ってから上」
    $04は「その場で下」

    2.スクロールエディットの注意点
    $3B30から 00 02 05 07 08 08という文字列がある。
    これはスタート地点、中間地点におけるスクロール番号を表す。
    00は$3400を指し、02は$3402を指す。
    また、$3B3Cからの07 13 16というのはスタート地点
    「中間地点それぞれから始まった際にどれだけスクロールするか？」というのが入っている。
    極端な例としてヒート面、クラッシュ面を比べるといいだろう。
    これを合わせないとまともにゲームが出来ないので注意。

    3.スタート地点と中間地点
    スタート地点と中間地点はワイリー面と合わせて6つずつ持てる。
    $3B06,$3B36からのそれぞれ6byteが部屋番号。
    何故かメモリの融通が利かないのでこれも揃える必要がある。
    $3B00から6byteはスタート、中間地点のY座標
    下位4bitを04に合わせれば丁度ブロックに重なる。

    4.バンクのセット
    ロックマン1と違って画像が豊富にあるのであまり弄る必要は無いかもしれません。
    $3C00から
    例として07 90 09 00 84 01 09 94〜を
    W X1 Y1 Z1 X2 Y2 Y3〜〜と置く
    最初の1byte(W)は「X,Y,Zを何セット読みこむか」を表す（1セットにつき2byte）。
    X,Zで画像のアドレスを表す。
    まず、Zの値に$4000を掛ける。
    そこに(X-$80)に$100を掛けたものをプラスする。
    画像アドレス=$4000*Z+(X-$80)*$100である。

    Yは「画像を何列読み出すか？」を表す。
    例えば90 09 00では$1000から$09列読み出している。
    尚、一列は8x8のチップ16個でありロックマンにおいては16x16のチップの4つ分に当たる。
    この場合は$1000、$1200....と9列読み出している。
    YY-chrで「2bpp NES FC/NESx16」のモードで確認した方が解りやすい。

    見ればわかる事だが、まず、スプライト（キャラ）から読んでいる。
    スプライトを$10(16)列読んだ後に初めてBGが読まれる（ロックマンのキャラが読み込まれる）。
    パターンビュアのついているエミュレータで確認が出来ます。
    一応この辺を面毎に変える事が出来ます。

    スプライトの後ろ5列については後の「スプライトバンクのセット」について別途説明する
    最後のA0 0A 00はヒートマン面の画像($2000)で10列読んでいる事を確認してもらいたい。
    Yの合計が$20にならないとゲームが出来ないので注意。

    ワイリー面は$3D00から同じ事をやっているだけなので省略する。

    5.スプライトバンクのセット
    $3460から読み出すデータのアドレスが入っている。
    1セットにつき$12(18)byte
    下の5列のバンク（1列は8x8を16個）
    2byteで1列
    94 01の場合は[01*$4000+($94-$80)*$100]を表す。
    0F 11 30 0F 29 37はパレットを表す。
    3byteで1パレット（透過色は省略）

    $3420からは部屋毎のスプライトバンクセット
    上で決めたスプライトバンクセットを部屋に割り当てる。
    例えば00は$3460から$12(18)byteで$12は$3472から$12(18)byteを読む事を示す。
    1部屋につき1byteずつ読む。

    6.パレット変更
    $3E00から
    最初の1byteは「使うパレットの枚数」
    次の1byteは「パレットアニメーションの速度」（00の場合はアニメーション無し）
    4byte目から$10byteでパレット1枚ずつ表す。
    色についてはパレットを閲覧できるエミュで確認してください。
    ワイリー面は$3F00から

    7.チップの属性
    $3CC44(メガマン2は$3CC47)から1面につき2byteずつチップのs_1、s_2の属性
    00 背景
    01 壁
    02 梯子
    03 トゲ
    04 水
    05 ベルトコンベア（左）
    06 ベルトコンベア（右）
    07 氷
    だと思います。多分ｗ
    プログラムバンクの中なので上手く弄れば4つともいけます。

    8.雑魚敵の耐久力
    雑魚敵の耐久力は一律で$14(20)
    これはプログラム内$3D78A（メガマン2は$3D78D）から
    A9 14     :lda $14
    9D D0 06  :sta $06D0
    の5バイトで決められている。（本当は周りも関係あるので本格的にやりたい人はチェキ）

    $3E976(メガマン2は$3E978)からロックバスターの耐性が入っている。
    その後に特殊武器の耐性が続く（手抜きｗ）
    00は跳ね返す。

    9.ボス敵の耐久力
    $2E923(メガマン2は$2E942)からロックバスターの耐性でその後に特殊武器が続く。
    00は跳ね返し、FFはエネルギー回復。
    この回復は「体力を$1Cにする」という命令なのでA9 1Cで探せばその体力が見つかる。

    10.音楽データ
    音楽関連についてはドーコカラキさんがかなり詳しい解析をされました
    同氏の書いた資料をこちらにまとめて置かせて頂きます（量が多いので）(2004/07/04)

    11.音楽トラック
    $381D0からそれぞれの面の音楽トラック（03 04 01....）
    トラックについては上を参照。

    それ以外については
    A9 XX    : lda #$XX
    20 51 C0 : jsr $C051
    で挿入されている。
    雑魚敵や武器を改造したい場合は効果音等で探したほうがよい。

    12.それ以外の部分
    ここからさきは殆どプログラム改造になってしまいますので解説は難しいです。
    だから割愛します。
    ゼロページのメモリにアクセスする命令がそれぞれA5と85なのでそれ探して下さい。
    例えば残機数は$A8に格納されているのですが
    85 $A8 : sta $A8
    という命令は「$A8にAレジスタの値をセットする」という意味になっています。
    A9 03 : lda #$03
    85 A8 : sta $A8
    という命令が見つかったらこれは開始時、コンティニュー時、パスワード再開時の残機数のどれかです。

    雑魚敵の動きを変えたい場合は
    20 37 F1 : jsr $F137
    でオブジェクトを吐き出します。
    例によって[A9 XX 20 37 F1]で検索すれば大量に見つかります。
    ただ、この辺はプログラムのコア部分を変えてしまうと変わります。
    それでも変えたい場合は$F137がどこの事を表すのかを追っていく事をお奨めします。
    gnesのデバッガでぶれーくを貼ればすぐに見つかります。

    検索はバイナリエディタでも良いのですがBinarySearchを使うとかなり楽になります。
    http://www.geocities.co.jp/Playtown-Denei/3370/

    コア部分を変えようとするともうロックマン2ではなく、ファミコンのお約束事を知る必要があります。
    Nesdevにファミコンの技術資料があります。
    http://nesdev.parodius.com/
    わからない人もメモリマップは役に立つと思います。

    すずめ愛好会
    http://vsync.org/
    から見た方がいいかも

    #####################################################################
    事務的なもの
    #####################################################################

    ■履歴（正確な月日は忘れました）
    2000年
    	ロックマン2のエディタの作成を始める。（クワタ）
    	パレット、アニメーションの調整。（わいわい）
    2001年
    	敵位置のエディタを作成。（わいわい）
    2003年
    	チップエディットを作成。（クワタ）
    5月11日	機能統合&公開（クワタ）

    ■今後の予定
    readmeの書き直し（汗
    ツールの正式名称

    ■readmeのバージョン
    5/11 1.00新規作成　クワタ
    マニュアルというか技術資料になってしまいました。

    #####################################################################
    謝辞
    #####################################################################
    コア部分　わいわいさん
    http://www.geocities.co.jp/Playtown-Denei/4503/
    http://www.geocities.co.jp/SiliconValley/1145/
    http://www.briansemu.com/yymarioed/

    mm_skit 　モゲモゲ様さん
    http://www.geocities.co.jp/SiliconValley/5328/

    パレット　カション
    http://www.geocities.co.jp/Playtown-Denei/3370/