全然WebGLと関係ないのですけれど、最近ちょっとした事情で夜な夜なとあるファミコンのゲームのコードを読んでました(スペランカーではないです)。NES 回りとかさすがにもう枯れきってるはずなんですが、エミュはどれも完成度高いし最近は JavaScript 版なんかも使えるんですけど、逆アセンブラってあんまりいいのがないんですよね。もっとあったけどなくなってしまったのかもしれません。しかもたまたま使ったやつが微妙にバグっててちょっと悲しい思いをしました。

ndss1.png
JavaScript 版の逆アセンブラもすでにいくつかあるんですが、どちらかというとエミュ指向だったりして、今の自分のようにただソースを読みたいという場合にはあんまり向いていません。というわけで、3時間くらいかかりましたが作ってみました。

NES Disassembler  JavaScript 版

HTML5...といっても FileAPI 使ってるだけですけど、ほんとこういうツールはもうブラウザでいいな、って感じがします。

ちなみにこの逆アセンブラはどの辺がいいのかというと、
  • 2パス(以上)なのでラベルを解決する
  • 割り込みベクタからPC到達範囲を調べるので、データセクションを分離できる
  • その上ジャンプテーブルを使った間接ジャンプ先も結構追いかけてコードセクションを識別する
  • NES の IO アクセスをコメントで出してくれる
といった辺りが素敵な感じになっています。そしてこれが今後どうなるかというと・・・どうなるんだろう。。。とりあえずバンク切り替えに対応しないとですね。
あくまでエミュにせずにちゃんと解析していろいろする、というあたりに強いこだわりが感じられます(意味不明)

それではまた。