読者です 読者をやめる 読者になる 読者になる

NES

NES 基礎知識 - 目次

NES

TAS さんや攻略のための解析がしたい人向けです。ゲームを自作したい人は NesDevWiki をしっかり読んだ方がいいでしょう。 メモリ CPU コード読解 コントローラ PPU APU (ほとんど無内容) 他機種向けにこういう記事書いてくれる人いないかなー(チラッ

NES 基礎知識 - APU

NES

今回は APU について扱…いたかったのですが、残念ながら知識不足のためまともに解説できる気がしません^^; ということで、参考になりそうなリンクを張るにとどめておきます。 NesDevWiki - APU ニコニコ大百科 - FC音源 Plogue livenes とりあえず I/O レジ…

NES 基礎知識 - PPU

NES

今回は PPU について扱います…が、正直難しいのでゲーム内のロジックを調べたいだけなら完全に理解する必要はないと思います(私もきちんと理解してません)。完全に理解したければ NesDevWiki の PPU の項目などを参照。 NTSC を前提とします。PAL などはよく…

NES 基礎知識 - コントローラ

NES

今回は NES/FC の標準コントローラについて扱います。特殊コントローラ(アルカノイドパドルなど)は扱いません。 標準コントローラには I/O レジスタ $4016, $4017 経由でアクセスします。NES と FC で若干細部が異なりますが、基本は同じです。詳細は NesDev…

NES 基礎知識 - コード読解

NES

今回は CPU の項を踏まえた上で具体的なコード例などを見ていきます。ここで挙げるコードが自力で読めればハードウェアの絡まないロジックを追うには十分だと思います(どのゲームでも基本的にあまり難解なアルゴリズムは使われていません)。 コード例 配列ア…

NES 基礎知識 - CPU

NES

今回は CPU について扱います。NES の PPU や APU はかなり複雑ですが、CPU は単純なので理解は容易です。CPU さえ理解しておけば乱数などの「目に見えない値」を探したり、ダメージ計算などの内部ロジックを追うには十分です。 ロジックを追う際は別にアセ…

NES 基礎知識 - メモリ

NES

何回かに分けて NES に関する基礎知識を書いていこうと思います。簡単なリバースエンジニアリングができるようになる程度の内容を予定しています(ゲーム自作までは扱いません、というか扱えません)。ほとんど NesDevWiki に書いてあることばかりなので、ガチ…

エミュレータのフレーム境界

NES

FCEUXではフレーム境界がline240(post-render)となっていますが、この理由がよくわかりませんでした。しかし考えてみると、入力更新タイミングとしてはここが適切なのではないかと思いました。 NESゲームの入力処理はNMIルーチン(line241で呼び出される)内で…

SMB1などのムービーがsyncした

NES

まだgithubには反映されてませんが、手元のブランチで主にPPUをFCEUXと一致させる作業中です。とりあえず以下のムービーはsyncするようになりました: HappyLee's NES Super Mario Bros "warped" in 04:57.31 t3h Icy's NES Urban Champion in 00:26.97 アス…

一応APU実装完了

NES

どうにか全チャネルがそれなりに鳴ってくれるようになりました(DMCは以前作ったPCM再生ROMでテストしましたが、本来の使い方であるDelta PCMについてはまだテストしてません)。ただ、ほとんどFCEUXのパクリなので理解度は半分以下です。 NesDevWikiの記述通…

NESエミュレータ(未完成)のリポジトリ作成

NES

とりあえず矩形波と三角波はそれっぽく鳴るようになったので一応リポジトリを作ってみました。ノイズとDMCは未実装です。 まだエミュレーション精度はガバガバです。最終的にはFCEUX互換にしたいですが…。 なお、このプロジェクトはとにかくシンプルでわかり…

APUむずい

NES

とりあえず三角波だけ実装してみたけど音がおかしい(;´Д`) 音のタイミング自体は正しそうなんだけど凄く耳障りな感じになる…。エミュレーションがおかしいのかWAVEへの変換がおかしいのかよくわからないんですよねー。固定周波数の正弦波を出力する仮想チャ…

bjneのビルドが通らないのを修正

NES

元リポジトリのソースはそのままだとDebian stableでビルドが通らなかったので、一応修正版を置いておきます。ビルドシステムをwafからsconsに変更した*1ので、sconsのインストールが必要です。まあLinuxならパッケージがあるでしょうから許してくださいとい…

APUメモ

NES

APUが1割くらい理解できた(NesDevWikiを読んだだけですが)ので、既存のエミュレータの実装も合わせて少し書いてみます。まずAPUはフレームカウンタを内蔵しており、フレームカウンタはCPUサイクルに連動するシーケンサを持ちます。このシーケンサの動作サイ…

今更NESでPCM再生

NES

※中途半端な知識で書いているため壮絶に間違っている可能性があります。おかしなところは指摘してもらえると有難いです。$4011 にWAVEデータを流し込んで再生する、というやつです。とりあえず8KHzで2秒程度再生するものを作ってみました(ca65 使用。素材は…