はじめに

前書き

NESとはファミコンの海外の名称の事です。ファミコンと言えば、日本ではゲームをしない人でもほとんど知らない人はいないぐらい有名なゲーム機ですね。最近ではNintendoの新しいゲーム機Wiiがファミコン等の昔のゲーム機を再現するVirtualConsoleなんていう機能を加えていますが、まだまだファミコンは現役と言うことなのでしょうか。

NES研究室は、私が以前ネット上に転がっている様々なファミコン開発用の資料を公開できる形でまとめると言う目的の元で開設しました。ただ資料公開だけでは面白くないので、そのうちCから呼び出すことの出来るファミコン向けゲームライブラリ等も公開出来たらなぁと思っています。

スペック

ファミコンのスペックは次のとおり、はっきり言って携帯電話と比べても比較にならないほど低スペックですが、これでも発売当時は高性能だったんでしょうね。

メインプロセッサ 8bit 6502カスタム 1.79MHz
ROM 最大プログラムROM:32KByte+キャラクタROM:8KByte (マッパ未使用)
RAM WorkRAM:2KByte, VideoRAM:2KByte
解像度 NTSC:256x224ピクセル60Hz, PAL:256x240ピクセル50Hz
最大発色数 52色
画面 BG+スプライト同時表示可能
サウンド 矩形波1, 矩形波2, 三角波, ノイズ, DPCMの5チャンネル
コントローラ 上, 下, 左, 右, A, B, スタート, セレクト

ツール紹介

NESASM

ファミコン用のソフトを作る際に最もポピュラーと思われるフリーのNES用6502アセンブラです。名前のとおりファミコン開発用なので、NESヘッダーが擬似命令で記述できたりするので実験用等ではとても便利ですが、分割コンパイル等が出来ない等本格的なプログラムを作るにはちょっと微妙かもしれません。

配布元 : http://www.magicengine.com/mkit/

CC65

6502用のフリーの開発環境です。Cコンパイラ、アセンブラ、リンカ、ライブラリが含まれています。アセンブラとして使うなら6502と65816のニーモニックに対応しています。フリーで制限無くC言語が使えるコンパイラはこれぐらいしか知りません。もちろん分割コンパイルやライブラリ作成等もでき、最適化機能も付いているので本格的なプログラム製作にも十分耐えられます。
また、NES用のライブラリも付属しています。それを使えばmain関数からC言語だけでプログラムを書くことも可能な感じです。

配布元 : http://www.cc65.org/

WDC-SDK

現在私がメインで使っている6502,65816用の開発環境です。6502と65816用のCコンパイラ、アセンブラ、リンカが含まれています。色々検索かけた限りでは65816でC言語を使える唯一のコンパイラだと思います。
浮動小数点もサポートしていたりと、ANSI規格は正確にサポートしている感じです。こちらも分割コンパイルやライブラリ作成も出来ますが、試用版なのでCソースの行数制限や中間アセンブリファイルのサイズ制限があるのが最大の欠点です。
ちなみに、ファミコン開発ではアセンブラにWDC02AS、CコンパイラにWDC02CC、リンカにWDCLNを使います。

配布元 : http://www.westerndesigncenter.com/wdc/

YY-CHR

日本製のフリーのパターンテーブル作成ツールです。ファミコンに限らずゲームボーイやメガドライブ、スーパーファミコン等多くのフォーマットに対応していると言う点と、かなり直感的な操作で使えると言う点でパターンテーブルを作る時に愛用しています。

配布元 : http://www.geocities.co.jp/Playtown-Denei/4503/

VirtuaNES

有名なフリーのNESエミュレータです。再現レベルが非常に高く多くのマッパーに対応しているだけでなく、メモリマップ、パターンテーブル、ネームテーブル、パレットそれぞれをビュアーで確認できるので「デバッガ」としてもかなり活躍してくれます。基本的にここのサンプルソースやゲームはこのエミュレータで動作確認をしていると思ってください。

配布元 : http://virtuanes.s1.xrea.com/


その他

用語

このページで使われる用語は、一般的に呼ばれている用語を使う事もありますが、私が勝手に命名定義したものも数多くあります。
出来るだけイメージが連想されやすいように付けているつもりですが、発想やイメージの持ち方が違うタイプの人だと逆に「?」となるかもしれません。

注意

ここにある情報は一応いくつかのエミュレータで動作を確認してから情報を載せていますが、他のエミュレータやROMに焼いて実機で動くかどうかは分かりません。このエミュレータでこうするとうまくいかない等、メール等で報告してくださると非常に助かります。

参考文献

このページの情報を集めるにあたって色々なサイトを参考にさせていただきましたが、特にお世話になったすずめ愛好会さん、NESDEV等で色々なドキュメントを公開してくださったハッカー方にはこの場を借りて感謝の意を表します。