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

えー、オンラインマニュアルです
使い方はまぁ・・・「起動すれば」解るでしょう
取り敢えずこれを読めば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.オブジェクト番号について
オブジェクトは敵もアイテムも共通
空いている所は頼みますw

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武器回復大

8AE缶
8B1UP




■エディタに搭載されていないもの
これらは別ツールかバイナリエディタ使ってください。
説明不足だと思うので元データを良く参照する事をお奨めします。
これを元にエディタを作った方がいたら教えてください。
ヒートマン面のアドレスですので他の面については$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 氷
だと思います。多分w
プログラムバンクの中なので上手く弄れば4つともいけます。


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

$3E976(メガマン2は$3E978)からロックバスターの耐性が入っている。
その後に特殊武器の耐性が続く(手抜きw)
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/