したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

情報提供スレ

1名無しさん:2005/10/26(水) 19:02:23 ID:62ZTeETk
私たち一般人がメンバーさん達に解析関係の情報提供をするスレです。


早速ですが、マリオ2のゲームオーバー後のコンティニュー画面の解析をしてみました。
http://mudlava90.hp.infoseek.co.jp/smb/continue_test.zip
source_smb2.txt 解析テキスト
continue_test.ips 適当に移植(真っ白なトレイナー付きROM用)
           ※描画関係はそのままです。「CONTINUE」「RETRY」の文字は出ませんorz

タイムの100の桁を格納するメモリが
「CONTINUE」「RETRY」のどっちを選んでるかの分岐に使われているようです。
(適当に移植した方では未使用メモリを使用)

21:2005/10/26(水) 19:12:29 ID:62ZTeETk
よくSMB2の逆汗テキストを見てみるとタイムを格納するメモリじゃなかったっぽいorz
解析テキスト修正。場所は同じです。

3MHS ◆Kc5p0MalEM:2005/10/26(水) 22:26:41 ID:JXDdDc5Q
おお、貴重な資料提供ありがとうございます。
ソースしか見てませんが後ほどパッチのほうを解析して確かめ、
その後にCONTINUEとRETRYの文字を表示させるようにしてみたいと思います。

一応軽くSMB2の逆汗テキスト見ながら$07FAの用途を探しました。
おそらくWorld 9のプレイ権利のフラグだと思われます。
各ワールドをクリアしたら決められた値(01,02,04,08,10,20,40,80)を加算していき、
エンディングが終わったときにここの値がFFになっていればWorld 9に進むようになっている模様。
同じキノピオを助けるとora命令なので減算されるようですね。
ワープしたときにここの値に変化があるかどうかを調べてみよう。

4MHS ◆Kc5p0MalEM:2005/10/27(木) 18:32:13 ID:RGbYMjsE
減算されてませんでした。
eorと勘違いしたかも。
ワープのときに変動もないので別のフラグがあるのか、
単純にワープ使ってでもすべてのワールドのキノピオを救出すればいいのか・・・・・・。

5MHS ◆Kc5p0MalEM:2005/10/28(金) 15:51:34 ID:./B1/G7Q
コンティニュー画面のほう、文字を表示するようにしてみました。
バグというか細かい部分の修正も入れてあります。
http://www5d.biglobe.ne.jp/~Kawasumi/mario/other/continue_test2.zip

61:2005/10/28(金) 19:17:41 ID:bSLnxoY.
>>5
キタ━━━━━━(゚∀゚)━━━━━━!!!!!
正常動作確認しました。

7天津fan:2005/10/30(日) 15:07:56 ID:yucsh5J6
どうも、非常に返信遅れましたorz。
貴重な資料の提供、有難う御座います。

とりあえず正常動作確認。

8名無しさん:2005/11/01(火) 18:56:13 ID:MobTgRRs
yy-sm2_spで使ってあるパッチとか発表できませんか?
嵐とかルイージゲームとか毒キノコも使えるのとか
トレイナーでもいいですから

9MHS ◆Kc5p0MalEM:2005/11/02(水) 00:29:12 ID:prGo94Go
>>8
そうですねぇ。
嵐、ルイージゲーム、毒キノコ、逆さ土管など
それぞれのパッチを作ることは可能なのですが、
制約がありすぎてなかなか出すに出せないのが現状といったところです。

そのほとんどがトレイナーでは容量が小さすぎること。
ツールを使える状態で維持するにはトレイナー領域をつけるだけで済ますのが最大条件です。
それらが使えなくてもいいというのであれば問答無用でマッパー拡張なのですが。

別問題としては嵐の木の葉で、グラフィックを書き込める余裕がないということ。
マッパー3などでCHRを増やしてしまえば問題はなくなりますが、
その場合はやはりツールが使えなくなってしまうので難しいところです。

一応時間があるときに1つずつパッチを作ってみたいとは思います。
ひとつさらに別の問題としてはYY-SM2 SPで導入してるプログラム郡を忘れかけていることでしょうかw
ブレーキ音あたりでかなりやばいかもしれません。

10天津fan:2005/11/02(水) 20:17:43 ID:1UjQzfq2
どもです。
やはりマッパー拡張の欠点はツールが扱えない点でしょうか。
バイナリエディタで作っている人が今そんなにいないだろうと思いますし・・・。

実際に改造する場合は「面とかを改造する」→「マッパー拡張」となりそうですが、
システム面の改造の場合は不具合が起きるかも知れませんし・・・

と考えているうちに、改造済みのファイルに当ててくださいというパッチを作ったらどうなるのか?
と思ったのですが、マッパー拡張だと厳しいかなぁ・・・。

11えるざ:2005/11/03(木) 00:05:33 ID:SQhGPGew
マッパー拡張してる人は先に弄ってるんですか?やっぱり

12MHS ◆Kc5p0MalEM:2005/11/03(木) 20:37:25 ID:Y/iyWQM2
マッパー拡張にする場合は以下の手順で作っています。


1.まず普通にエディタで面データを作り、保存する(A)

2.Aとは別のROMにトレイナー領域をつけ、オブジェクト描画関係(逆さ土管とか)のソースを書く

3.トレイナー領域に余裕があれば続けて追加プログラムを書く
 足りない場合は面データ格納領域に書くので真っ白にする

4.面データ格納領域を真っ白にしたらできるだけ後ろから残りのソースを書いていく
 このときやたら書きすぎないようにするためにある使う領域を決めておく

5.面データ格納領域の上から1ルームずつAで作った面データを写していく
 全部入りきらない場合はマッパー拡張によるバンク切り替えでどうにかなるので無理しない
 この場合バンク切り替え関係のプログラムが必要になるのである程度領域に余裕を持たせておく

6.面データのアドレス指定などをしてから保存する(B)
 5で面データが入りきらなかった場合は2からの作業を繰り返して保存(B')
 (Bにある面データだけを真っ白にして別のデータを書いて保存でもいい)

7.BとB'をエディタで開いてきちんと表示できてることを確認し、最終調整をかける

8.BとB'のROM結合
 起動→バンク切り替えなどの動作チェック

9.問題なければ公開、バグがあれば7に戻る


だいたいこんな感じでしょうか。
最後の結合→チェック以外はほとんどツール使いまくりです。

ポール1UPとかコンティニューとかのシステム面なら改造後のパッチ当てでも問題ないのですが
毒キノコとか逆さ土管とかのオブジェクト面になると難しくなりますからねぇ。
難しいところです。

13えるざ:2005/11/04(金) 00:43:58 ID:TYZ.REYQ
という事は一旦4の段階で
│プログラム領域____│マップデータ│を
│プログラム領域_______│マップ│のようにしているって事ですよね

トレイナーを一旦書くのは先にプログラムの容量を測るためですよね

そういえば以前にitemboxのバグを修正してみようと挑戦してたのですが
まだまだ力不足で断念しました(T~T)
でもあのバグツタを使って隠し丸キャラとしてパズル系を作成してます(^^;

14MHS ◆Kc5p0MalEM:2005/11/04(金) 02:16:36 ID:sBCrmYV6
図に書いたほうが分かりやすかったですね。
そちらのを使わせてもらえば

AのROM:トレイナー領域 │通常プログラムA│マップデータ_____ │通常プログラムB|通常プログラムC|キャラクタデータ(CHR)
BのROM:追加プログラムA│通常プログラムA│マップ│追加プログラムB|通常プログラムB|通常プログラムC|キャラクタデータ(CHR)

となります(B'のROMはマップ部分が違うだけでBと一緒です)
ひとまずここまでの作業をやってからエディタで面データの調整をしたりします。
トレイナーを一旦書くのはプログラムの容量を測るためといいますか、
たとえば逆さ土管などををトレイナー領域に書いておけば
エディタでマップを作るときに逆さ土管のオブジェクトが実際使えますよね。
こういうマップを作るときに必要になりそうな素材などをあらかじめトレイナー領域に書いておくのです。
親切なことにトレイナーつき41,488バイトのROMがサポートされているからこそできる方法です。
もちろん最終的にはこのトレイナーを取っ払わないといけないので最初から最後まで頼るわけにはいかないのですが。
最終的にマッパー拡張(ひとまずマッパー1)をした場合はこのようになります

NESヘッダ│通常プログラムA│マップA│追加プログラムB|通常プログラムB|通常プログラムA|マップB|通常プログラムB|バンク切り替え操作(SRAMの一部)|追加プログラムA(SRAMの一部)|SRAM転送|キャラクタデータ(CHR)
_____|_______________バンク1__________|____________バンク2________|________________バンク3_________________|

このとき起動するとまずバンク3が読み込まれ、SRAM転送としてバンク切り替え操作以降、追加プログラムAまでを$6000に転送します
トレイナーを使用してアドレス指定をいちいち変えるのが面倒だった場合は追加プログラムAを$7000になるように書いておきます
転送が終わったらバンク切り替え操作を読み込むようにジャンプし、バンク1を読み込みます
この時点でメモリ空間は次のようになります

|$0000 RAM $07FF|$0800 RAMのミラー等I/Oレジスタ $5FFF|$6000 バンク切り替え操作|$7000 追加プログラムA|$8000 通常プログラムA|マップA|通常プログラムB $FFFF|

この後に必要に応じてゲーム中バンク2に切り替えたりしてマップデータを交換します
さて、ここまで書いて非常に分かりにくいだろうと思ったけどそのまま投稿。

>itemboxのバグ
すいません、すでにどこでこれに答えたのか忘れかけてます。
確かツタを上るときに音がするのと上ってもルーム移動できないようになってた記憶があります。
この修正は結構簡単でして、前者は叩いたブロックが壊せないブロックだった場合の音を鳴らす分岐
後者は豆の木効果代用ブロック指定を見比べてみればわかります。
どこをどう間違ったのか、値が間違ってるはずなのでここを直せば正常に動くと思います。
ちなみに隠し1UPキノコは地上以外に設置すると中身化けますのでご注意ください。

15MHS ◆Kc5p0MalEM:2005/11/04(金) 02:17:52 ID:sBCrmYV6
超ずれてるorz

16えるざ:2005/11/06(日) 03:14:30 ID:jRhiSuE.
通常プログラムAとBがそれぞれ2箇所あるんですが、これは同じモノなんでしょうか?
この場合AとBに対してA’、B’を用意しておけばシステム自体を入れ替えれる事も可能って事になるんでしょうか?
あまり使い道に関して思い浮かびませんけど・・・(^^;
(通常面とパラレルでマリオの性能を変えちゃうとかぐらいかしら?)


item box修正完了〜♪
すごく嬉しいですね、解析テキストとニラメッコしながら、なんとか上手く行きました!

17MHS ◆Kc5p0MalEM:2005/11/06(日) 12:04:52 ID:46cX50Sk
おっしゃるとおり、A'とB'を用意すれば切り替え後は別のシステムとして続きます。
2つあるAとBは同じですが、実際には何らかの形で少し違ってきます。
とにかくステージだけを増やしたいとかならほとんどは同じものになりますが、
バンク切り替え後にしか使わないギミックなどでしたら同じになることはありえません。

たとえばエンディング
ゲームの最後でしか使われず、最初のバンクで使われることはまずありません。
つまり最初のバンクではパラレルなどで使用しない限りエンディングのプログラム自体必要なくなるのです。

まぁほとんどはめんどくさいのでそんなことはしないんですが。
神風DXあたりが1番わかりやすい例といえるでしょう。

18えるざ:2005/11/06(日) 12:23:39 ID:H0uKrQpc
と言うことは最初のバンク以外は
タイトル描画等のオープニング、プレイヤーセレクト等の処理は潰して使える訳ですね

神風DXを探してみます、どこかにあると良いんですけど・・・
七休さん復活してくれないかしら(^^;

19えるざ:2005/11/12(土) 00:09:44 ID:54WJ87Ew
なんとか神風を入手できました(^^
とりあえずSoftwareで公開されてるMapper1と照らし合わせつつソースを見てみました
色々勉強になりました

ある程度プログラムのフローチャートみたいなの(?)を書けるようになってきたんですが
SMBに対するneseasmの利用方法があまりわかりません
MHSさん達は手作業で書かれているんでしょうか?
jsr $8220 が バイナリで20 20 82という風に手作業でかけないことも無いんですが
削ったプログラムでどれくらいズレがあるか判らなくなってくるときがあるので
(メモしていても何が何だかわからなくなるときがありますorz ルーチン1に飛ばしたつもりがルーチン2に飛ばしてたりとか)
前の板にも使いやすいと書いてあったので宜しければ、どなたか、ご教授お願いできるでしょうか?

20MHS ◆Kc5p0MalEM:2005/11/12(土) 20:48:11 ID:jsQ8WKVc
アセンブル可能なSMBのソースがあれば作業が格段にやりやすくなるのでその場合はnesasmにしてもいいのですが、
ものがものなだけにソースをまず自分で作らないとだめなのが辛いところ。
なので私は基本的にハンドアセンブルです。
大本のソースがないnesasmでできるのは追加プログラムのソースを書くことくらいだと思いますよ。
前の板で私が書いた例のようなものです。
ソースを書いて、それをデータ化して、そこからメインのROMにデータ化したソースをもってくる。
ただもってくるだけならまだしも、そのソースにジャンプさせるときが混乱するでしょうね。

試しにポール1UP(SMB2)をasm化してみました。
コメントにそれぞれの入口書いておいたからまだやりやすいと思うけど
ここまでするくらいならまだハンドアセンブルのほうが楽に感じてしまいますw
http://www5d.biglobe.ne.jp/~Kawasumi/mario/other/pole_1up.asm

21えるざ:2005/11/12(土) 22:24:59 ID:LH.2QDsg
わざわざソースまで書いて頂いてどうもありがとうございます
ソース書いて、なんでコンパイルできないんだろうと思って見比べていたら
ヘッダ等を書くのを忘れてましたorz
追加のプログラムを書くのにはホント便利ですね

新しいオブジェクトを考えるのってアイデアを出すのが難しいです(^^;

22えるざ:2005/12/11(日) 23:03:32 ID:5D8XvCNc
とりあえず練習台としてyy-sm2_sp2にコンティニュー画面を追加してみました
けどドコにアップして良いものやら
それにオリジナルでもないんで出していいのやら^^;

23MHS ◆Kc5p0MalEM:2005/12/12(月) 08:28:16 ID:v8Hh2kCw
専用のUPローダーをお使いください。
SP2はマッパー1に拡張していますが、追加プログラムのためのSRAM確保をしてるだけですから
コンティニューを追加したくらいであればそのままIPSでもいいでしょう。
そろそろSP3以降も作って結合させないと・・・・・・。

24えるざ:2005/12/14(水) 00:12:53 ID:R8Y41GdY
とりあえず爆弾投下(w
http://elsa-mario.hp.infoseek.co.jp/iroiro/EL_Item_Box.zip

MHS師匠のItemBoxを基に弄くり倒して逆さ土管を追加しました
逆さパックンが出ないのは仕様です(w

25えるざ:2005/12/14(水) 22:19:27 ID:whUfg1I.
イマイチ逆さパックンの追加が出来ません^^;

26えるざ:2005/12/15(木) 21:40:37 ID:dYCMiTuk
とりあえず逆さパックンはトレイナーでは断念
まぁマップ作成用なので良いかな^^;
その後にトレイナー部分のプログラムをSRAM領域に追加した
マッパー拡張パッチを使えばGBAでも動くようになるかな?


トレイナーを外すことが出来るツールってありましたっけ?


マッパー拡張慣れると楽ですね^^
トレイナーだと$200にギチギチに詰め込まなきゃいけなかったけど
ある程度容量を気にせずに突っ込めるし

27えるざ:2005/12/16(金) 21:58:29 ID:ktiJfpGE
う〜ん・・・どうしても長さ7以下の高さ4の位置が修正できないです(xx)
どなたか御教授お願いします

とりあえず上記のファイルをマッパー1拡張できるように差し替えましたけど
まだまだ不完全ですね

ある程度簡単にYY-SM2_spシリーズのような事が出来るようにと作ってたんですけど
難しい・・・orz
ソース凄く汚いし、ほぼ丸写し状態ですしね--;

28名無しさん:2006/01/01(日) 03:38:21 ID:aVPApI/o
外国人で、私はItemSMB2 転換の指示を理解してない。私にNES ファイルがIPS ファイルを加える、そしてかどうかがSMBMapper1 IPS は必要である質問ある。私はプロセスのより多くのより明確な説明を頂く。

29Elizabeth:2006/01/01(日) 04:54:12 ID:2vMoo2VQ
I'm sorry.
Though it is understood to write in English easily because a Japanese translation
is not understood easily

30Elizabeth:2006/01/01(日) 05:04:54 ID:2vMoo2VQ
The patch does "making_map.ips" to SMB with TRAINER.
After the map is remodeled, "Mapper.bat" is clicked.
The file of "Mapper1.nes" is newly made.
The patch does "ELSA_Item_Mapper1v1.2*.ips" to "Mapper1.nes".

31名無しさん:2006/01/01(日) 06:39:39 ID:qhD1T7Go
Thank you for the reply, Elizabeth。^^
私は私が指示のために使用した訳者が"trainer"のような単語を思い付かなかったことを仮定する。私はSMB2 転換のIPS ファイルを使用今できる。

32名無しさん:2006/01/10(火) 23:44:08 ID:jt5OpwiY
勝手にEXTRA MARIO BROS.の面データの形式を解析してみました。(まだ不完全)
http://mudlava90.hp.infoseek.co.jp/smb/emb_obj.txt

これによると、本来は長さが16もある「横に並んだレンガブロック」を8まで節約して
余った分は点線ブロックに使っているようです。どうやって実現しているのでしょうか?


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板