更新情報・お知らせ

2024/8/26
サーバーのサービス終了に伴うサイトの引っ越しNEW
2018/7/02
サイトリニューアル

はじめに

前書き

このサイトは、NES(Nintendo Entertainment System)向けのプログラム(ROM)を作るための技術資料を公開する目的で作成しました。
ここに来る方々は多分ご存知かと思いますが、NESとは日本で発売されたファミコンの事です。つまり、この資料はファミコンのプログラムを作るための技術資料ということにもなるはずです。

ファミコンのプログラム作る理由
1983年に発売されたファミコンは、今のゲーム機やコンピュータ、スマホに比べても非常にチープな性能しか持っていません。限られたコンピュータリソースの中で最大限の表現を実現しなくてはなりません。特に後期に開発されたゲームは、素晴らしい発想とそれを実現する高い技術力によって、ファミコンの限界に挑戦しているゲームが沢山あります。多くの技術者からの挑戦を受け止めてきたハードであったことは確かでしょう。
今のコンピュータは、ファミコンに比べるととてつもなく強力なハードウェア性能を持っていますが、1クロックの計算も1バイトのメモリもムダにできないようなファミコンでの開発をする事で、普段何気なく行なっている開発をレベルアップできるキッカケになるのではないかと感じます。

ファミコンのスペック

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

注意点

作ったROMはファミコン実機で動かせるの?
基本的にはNESエミュレータで動作できるROM(*.NES)ファイルを作成するための資料となっています。私はROMを焼くライターも技術も持ち合わせていないので、ファミコン実機での動作は検証したことがありません。

資料は正確なの?
色々なサイトで得た情報をまとめ、エミュレータで動作確認をしているだけなので、正確性はまったく保証しません。間違い等があれば教えていただけるとありがたいです。

ツールの紹介

開発ツール

CC65
6502用のフリーの開発環境です。Cコンパイラ、アセンブラ、リンカ、ライブラリが含まれています。アセンブラとして使うなら6502と65816のニーモニックに対応しています。分割コンパイルやライブラリ作成等もでき、最適化機能も付いているので強力な開発ができるでしょう。バイナリもWindows、Linux、Macなどマルチプラットフォームに対応しており、ソースコードも公開されています。
なお、NES用のライブラリも付属しており、main関数からC言語だけでプログラムを書くことも可能にはなっていますが、本サイトで紹介するサンプルプログラムでは標準ライブラリは使用しません。

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

YY-CHR
Windowsで動作する日本製のフリーのパターンテーブル作成ツールです。ファミコンに限らずゲームボーイやメガドライブ、スーパーファミコン等多くのフォーマットに対応しています。

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

NESエミュレータ

VirtuaNES
Windowsで動作するフリーのNESエミュレータです。再現レベルが非常に高く、多くのマッパーに対応しています。メモリマップ、パターンテーブル、ネームテーブル、パレットを確認できるビューアを搭載していますので、ゲームのデバッガとしてもかなり使いやすいです。

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

Nestopia
Windows、Linux、Macで動作するフリーのNESエミュレータです。このエミュレータも再現レベルが非常に高いです。

配布元 : http://nestopia.sourceforge.net