2017-01-01から1年間の記事一覧
過去にチマチマと作っていた解析資料を github に上げていこうと思います。TASってないゲームも含まれます。 アセンブリをそのまま配布するのはさすがにまずいので、Mesen デバッガ用のラベルファイル(*.mlb)にします。この形式だと若干不便なところもありま…
TAS さんや攻略のための解析がしたい人向けです。ゲームを自作したい人は NesDevWiki をしっかり読んだ方がいいでしょう。 メモリ CPU コード読解 コントローラ PPU APU (ほとんど無内容) 他機種向けにこういう記事書いてくれる人いないかなー(チラッ
今回は APU について扱…いたかったのですが、残念ながら知識不足のためまともに解説できる気がしません^^; ということで、参考になりそうなリンクを張るにとどめておきます。 NesDevWiki - APU ニコニコ大百科 - FC音源 Plogue livenes とりあえず I/O レジ…
今回は PPU について扱います…が、正直難しいのでゲーム内のロジックを調べたいだけなら完全に理解する必要はないと思います(私もきちんと理解してません)。完全に理解したければ NesDevWiki の PPU の項目などを参照。 NTSC を前提とします。PAL などはよく…
今回は NES/FC の標準コントローラについて扱います。特殊コントローラ(アルカノイドパドルなど)は扱いません。 標準コントローラには I/O レジスタ $4016, $4017 経由でアクセスします。NES と FC で若干細部が異なりますが、基本は同じです。詳細は NesDev…
今回は CPU の項を踏まえた上で具体的なコード例などを見ていきます。ここで挙げるコードが自力で読めればハードウェアの絡まないロジックを追うには十分だと思います(どのゲームでも基本的にあまり難解なアルゴリズムは使われていません)。 コード例 配列ア…
今回は CPU について扱います。NES の PPU や APU はかなり複雑ですが、CPU は単純なので理解は容易です。CPU さえ理解しておけば乱数などの「目に見えない値」を探したり、ダメージ計算などの内部ロジックを追うには十分です。 ロジックを追う際は別にアセ…
何回かに分けて NES に関する基礎知識を書いていこうと思います。簡単なリバースエンジニアリングができるようになる程度の内容を予定しています(ゲーム自作までは扱いません、というか扱えません)。ほとんど NesDevWiki に書いてあることばかりなので、ガチ…
デバッグモードと思われる未使用コードを見つけました。 $C2FF-$C300 を NOP で潰すことで未使用コードが有効になり、以下の機能が使えるようになります: タイトルで1コンの AB を押しつつ NORMAL START を選ぶことで面セレクトができる 面セレクト画面から…
前回、アドレス単位のコード解析について考察しました。今回はその結果を元に制御フローを考慮したコード判定を行うことを考えます。 このパスは誤判定を避けるため、極力保守的な方針で解析を行います。まずは6502の制御フローについて再確認します。 制御…
前回述べた前提に基づいて解析フェーズを考えます。 簡単のため、解析はマルチパスで行うことにします。具体的には以下の通り: アドレス単位のコード判定 制御フローを考慮したコード判定(これ自体も複数パス。後述) 以前作ったC++版では解析を1パスで行って…
tl;dr: taotao54321/td6502 懲りずに6502逆アセンブラについて考えてみます。まあ素直に IDA を買えという話なのかもしれませんが、結構お高いですし、プロプライエタリでない選択肢があってもいいと思うので…。なお、私はNES以外のプラットフォームには詳し…
Python Packaging User Guide (PyPUG) を日本語訳してみました。Python のパッケージング周りは変化が激しいのでいつまで役に立つのかはわかりませんが…。 PyCon JP で毎年パッケージング関連の発表があるようなので、とりあえず現状を把握するにはこれを見…
Sphinx日本ユーザ会の「不自然な空白が表示される」にある通り、japanesesupport.py を使うと解消されるようです。ただしこれをそのまま使うと改行だけでなくリンクの前後の空白なども潰されてしまい、英単語が頻繁に混じる文章だとかなりギチギチした見た目…
相当手強いのでとりあえず不完全ですが途中結果だけ置いておきます。 メモリマップ 文字列デコーダ マップデータ切り出し マップデータ画像化 今までで一番読みにくいコードだと感じています。バンク切り替えが8K単位になっている上に、同じバンクが異なるア…