コードとデータなんて機械的に分けられるもんじゃねえだろ
ジャンプテーブルなんか使ってたらひとたまりもない
そういう時はIDAの出番だよ
ほぼ間違いなくコードとデータに分けてくれる
プラグインを使えばコメントさえ付けてくれる
オレはファミコンの解析はこれ一つでやっている
終了時にプログラムカウンタの通過したバンク・アドレスを出力すりゃいいんだから
改造としては簡単な部類だと思うが
ビルド環境の導入から始めても2時間も掛からんだろ
俺はやらんがね
みなさん、レスありがとうございます。
>>940 codeとdataの分離なしに逆アセンブルすると、
dataの部分もcodeとして逆アセンブルしたり、
opコード(1バイト目)でなく、オペランド(2バイト目以降)を
逆アセンブルしてしまって、わけがわからなくなるのです
地道に読んでいけばよいのですが、一万行くらいになりそうなので
先人の知恵にすがりたかったのです。
>>942 IDAのフリー版をインストールしてみましたが、86系しかモジュールが入って
いませんでした。これは非常に強力そうだけど、けっこうお高いのですね。
ちょっと買えそうにないです(泣)
コード解析機能のある逆アセンブラとして、td6502というのを見つけたので、
これでとりあえでためしてみます。
>>943 たしかにエミュの改造は小改造ですみそうなのですが、私のちからでは
ビルド環境をそろえるのと、エミュの動作を調べるのでけっこうな
時間を食いそうに思い躊躇しています。
コード解析つきの逆アセンブラで地道にすすめて、きりがなさそうだと
感じたらエミュにも挑戦するかもしれません。
ファミリーベーシックが動いて、ビルドが簡単で、ソースが読みやすい
そんな都合の良さそうなものがなにかありますでしょうか?
(Cぐらいしか読めません。ビルドはlinuxだと比較的簡単なんでしょうか?)
後だしになってもうしわけありません。
やりたいことはメッセージボードやミュージックボードの、自作プログラムを
書き込んで問題なさそうな領域の調査やBASICのパッチあてです。
何か追加情報ありましたらレスいただけるとありがたいです。
945 :
940:2011/11/29(火) 22:28:15.09
>>944 ツール系は他の詳しそうな人に任せる。
944の望むモノは理解できたので、以下、経験談。
ファミリーベーシックは、V2もV3も、プログラムROMは32Kバイトで
&H8000〜&HFFFFにプログラムROMがマップされる、というところはおk?
その最終部分、&HFFFA〜&HFFFFまでの6バイトに、
NMIとリセットとIRQの割り込みベクタがリトルエンディアンで書き込まれている。
よって、ここに記載されているアドレスを起点にして順にたどれば、
データを間違ってディスアセンブルする、という現象はひとまず回避できる。
次に、他の人も描いている通り、6502は非常にややこしい間接アドレッシングがあって、
ジャンプ先アドレスがリトルエンディアンで2バイトずつ、ずらずら並んでいるところがある。
ここも、それらを検知したうえで、それぞれ基点として逆アセンブルしなければならない。
(V3.0の場合は5箇所ぐらいみつかった)
あと、非常にトリッキーなアセンブルをしている箇所が、少なくともV3.0には数箇所あった。
それは、オペコードではなく「オペランドのアドレスに向かってジャンプ(またはブランチ)する」というもの。
これによって、通常の逆アセンブルをやっていては絶対に通らない部分がある。
(つづく)
946 :
940:2011/11/29(火) 22:29:02.02
(つづき)
たとえば、
AE A5 33
という並びの3バイトのマシン語を解釈すると「LDX $33A5」となる。
だが、&H33A5はファミコンでは未使用のアドレスなので、
結果的に「LDX #$00」と同じ動きになる。
一方、この3バイトのマシン語の2バイト目「A5」に向かってジャンプする命令が別の箇所に存在する。
この場合、CPUは「A5 33」の2バイトを解釈して「LDA $33」となり、
&H0033の値をAレジスタにロードするという、
6502独自のゼロページ命令として解釈される。
これによって、「LDX #$00」と「LDA $33」が3バイトで表現され、都合1バイトメモリが節約できるわけ。
この辺に注意して逆アセンブラを自作し、何度も何度ももジャンプベクタを
見つけてはそれを起点に加えて逆アセンブルを繰り返していけば、
逆アセンブルは出来ると思うよ。8ビットでオペコードも少ないし、情熱があれば何とかなる。
ただ、V2.0の場合、メッセージボードやミュージックボードもマシン語で書かれているから、
「使っても良さそうな領域」と「使えなさそうな領域」の区別は結構難しい気がする。
むしろ、V3.0を使い、GAME1〜GAME4の、
ベーシックの中間コードを丸つぶししてパッチを当てるほうが楽だと思うんですがね。
普通にNES用の逆アセンブラツールじゃいかんの?
944です。
レスありがとうございます。
>>945 なるほどー。V3の内蔵プログラム領域というのは見つけるのが簡単そうですね。
V3が安く店頭に出てきたらぜひやってみようと思います。(今は2.0をさわってます)
ジャンプテーブルの件、逆アセンブラによってはcode/dataの他にジャンプテーブルも
記述できるようですので、特定でき次第逆アセンブラのヒントファイルに書いていく予定です。
オペランドにジャンプするというのはいやらしいですね。8ビットパソコンのプロテクトなんかでは
そんなのもあったような気がするけど、rom化するプログラムでそんなことをすることがあったのですね!
>>947 へたれなのでできるかぎり自動化したいのです。
現状、G-NESにトレースログを出力(他のエミュにもあるとは思うけど)する機能があることが
わかったので、トレースログからcode部を抽出していっているところです。
あれこれトレースして6キロバイト分くらいコード部がでてきました。まだまだ先が長いです。
ZACNER IIとかって内蔵ゲームの領域潰してプログラムされてたの?
そうすると4KB超って事になるんだろうか?
950 :
ナイコンさん:2012/03/11(日) 11:12:53.09
今ファミコン互換機が新聞広告に載ってるぞ
あんまりファミベに関係ないな
スレ違いではありますが、どんな機種が広告ででてたのですか?
15ピンポートとかありました?
ファミリーベーシック V2.1Aを解析したサイトがあった。
俺もみつけた
enri氏のサイト以外でしたら教えていただけないでしょうか。
(enri氏のサイトは年末に大幅加筆されてすごく参考になりました)
957 :
ナイコンさん:2012/05/12(土) 17:10:18.45
そーいえば随分前の方でV4やらなんやら言ってたけど俺はハックしてv14.5aまで行ってるよ
でも.nesでグラ改造のみ...
959 :
ナイコンさん:2012/10/03(水) 17:22:57.12
961 :
【大吉】 :2013/01/01(火) 20:32:55.95
あけまして
おめでとうございます
Enri氏のページが消えてるんですが・・・
どうか移転であってくれ。
毎月末の更新で間違って消した可能性はないだろうか
右上にあった「残り〜」はなんだったんだ
>965
移転先のようですね。
非常に詳細で貴重な情報をあげてくれているので
消えてしまわなくてよかったです。
968 :
ナイコンさん:2013/05/27(月) 21:54:14.81
ファンコミュニケーションズがSNSプロモ子会社の事業を終了
ジャスダック上場のインターネット広告大手「ファンコミュニケーションズ」は、
6月30日をもって100%出資のソーシャルメディアマーケティング子会社「アドボカシ」(東京都渋谷区)の事業を終了すると発表しました。
>>967 こんなのあったんだ。
俺バイナリエディタでコピペで作ってたよ。
v3持ってないんだけど初代の黒いカセットのヤツでも使える?
使えるとかそんなレベルじゃなくて、なぜかV3込みのNESファイルを吐き出してる。
ちょっと調べるわ。
972 :
971:2013/06/16(日) 11:42:26.22
完全にやっっちゃってるねこれ。
http://messatu.wordpress.com/ で配布されているSTTONES.exe (バージョン1.1.0.0)には
サンプルプログラム部分と分岐1ヶ所潰してリセットベクターを書き換えただけの
ファミリーベーシックV3のロムイメージがリソースとして内包(FAMIBE_V3modelとして読み込み)されています。
著作権的に完全にアウトなのでダウンロードしないで下さい。
これがアウトならば多くの所から出ているファミコンのパチモノもエミュもアウトだろうがw
ふぁみぱちは、ハードウェアのコピーだから問題なくね?
エミュでオフィシャルが許可したようなのってあったっけ?
ふぁみぱちもエミュも同じ動作をするものを一から作りあげたものだから著作物の複製には当たらない
なのでカセットの形状などの意匠権や商標で縛っている
ソフトの著作権は発表後50年間は保護されているので多少改変しようが配布はアウト
引用は著作権に該当しない(研究目的)
STTONESに関しては金とって利益得てる訳じゃないから良いじゃん
コレがダメだというならハック関係でパッチ配布してるの全部ダメじゃね?
ケチつける人って作れる人の才能に嫉妬してるだけでしょ
教育目的でも研究目的でもないのは明白であり、
そもそも引用であれば出典を明記しなければならないが
「Copyright (C) 2013 Death☆です」と自分の著作物であると書いている
またほぼ全部を含めるものは出典の範疇を逸脱している
金を取っていなければセーフというのはネットでゲームを配布するだけで捕まっている現状を考えれば判ること
他がやっているから構わないとか小学生じゃないんだからバカみたいなことを言わないでくれ
誤 出典の範疇を逸脱している
正 引用の範疇を逸脱している
素人では手を出せないような手順で解析されたものに対して、
公表された著作物であるからどうたらとは言えないだろう
ニコ百って中学生かよwww
983 :
ナイコンさん:2013/06/16(日) 21:32:14.33
文化庁ホームページ
著作権 > 著作権制度に関する情報 > 著作権制度の解説資料 > 著作権制度の概要 > 著作物が自由に使える場合
ttp://www.bunka.go.jp/chosakuken/gaiyou/chosakubutsu_jiyu.html より引用
引用における注意事項
他人の著作物を自分の著作物の中に取り込む場合,すなわち引用を行う場合,
一般的には,以下の事項に注意しなければなりません。
(1)他人の著作物を引用する必然性があること。
(2)かぎ括弧をつけるなど,自分の著作物と引用部分とが区別されていること。
(3)自分の著作物と引用する著作物との主従関係が明確であること(自分の著作物が主体)。
(4)出所の明示がなされていること。(第48条)
(参照:最判昭和55年3月28日 「パロディー事件」)
(1) (3)に関係するが主体がファミリーベーシックなので、必然性があるとしたらファミリーベーシックを配布することが目的になる
(2) 引用部分が区別されていない
(3) 最終出力されるNESファイルは本来ファミリーベーシック上で動作するプログラムであり、あくまで主体はファミリーベーシックにある
(4) 出所の明示がなされていない
引用の条件を満たす気が微塵も感じられません
作者さん本気で問題ないと考えてるなら隠れてないで堂々と出てこいよ
文化庁のオナニーwww
埋めなくて大丈夫?
980越えたら、1日放置で落ちるんじゃない?
こんな過疎板でもそうなの?