HOME 2024/01/09  

NES on FPGAそんなベタなファミコンはイヤだ!

このディスプレイは使いやすかったよ。Ver.Upしたヤツ買ったけど縮小センタリングしてくれなかった。

 ファミコン互換機を自作して、プロセッサ、グラフィック、 サウンドについてのアーキテクチャやディジタル信号処理の基礎を体得! ここでは、実装で確認したファミコンに関する情報と、 実装についての解説を公開しています。

 トリプルプレイってやつ?

NEXT GENERATION ! SNES on FPGA

_
仕様

[NES] [CPU] [PPU] [APU] [PAD] [カートリッジ] [参考文献]

_
構成

・初代 Spartan-IIE300版 -ファミコンするならFPGA-
ビデオ出力 VGA 解像度640x480 最大512色 /サウンド出力 モノラルorステレオ、NSF再生機能(内蔵音源のみ)、ΔΣ型1ビットDAC、φ3.5mmステレオミニ端子 /ゲームコントローラ プレイステーションDUALSHOCK2、フォースフィードバック(振動)対応、2Play対応、マイク未対応 /ゲーム速度 ノーマルor低速モード /IF カートリッジコネクタ(3.3-5V変換)、RS-232C /ハードウェア記述言語 SFL、VHDL、Verilog HDL /開発環境 Windows2000、Cygwin、PARTHENON、VC++6.0、 SFL2VHDL、Pentium4 2.4GHz、メモリ512MB、Xilinx ISE 7.1、 CQ出版社 Spartan-IIE300評価キット

・二代目 DE1ボード CycloneII 2C20版 -サウンドマネジメント-
ビデオ出力 VGA 最大4096色 /サウンド出力 16bit Audio CODEC /NSF再生機能 NSFファイル最大1MB、拡張音源内蔵(N106、MMC5、FDS、VRC6、SN5B、VRC7)、複数曲対応 /IF SDメモリーカード(最大1GB、FAT16、ファイル数たくさん)、PC上のNSF Playerからのデータ送信 /ハードウェア記述言語 SFL+、VHDL、Verilog HDL /開発環境 sflp、sfl2vl、Athlon64 4000+、メモリ1GB、Altera QuartusII 7.2、 Terasic DE1 Board (拡張及び変更点についてのみ)

・DE0ボード移植版 -今更感あるよな-
Cyclone III 3C16 /サウンド出力 GPIO /NSF再生機能 /IF SDメモリーカード、USB経由でPCから転送 /開発環境 Windows7、Core i5 3320M、メモリ4→16GB、Altera QuartusII 12.1sp1、 Terasic DE0 Board

・1chipMSX移植版 -ようやくですよ-
Cyclone 1C12 /サウンド出力 /NSF再生・サウンドグラフィック機能 /IF SDメモリーカード /ジョイパッド、PS/2キーボード /開発環境 Windows10、Core i5-9600K、メモリ32GB、Altera QuartusII 11.0sp1、 1chip MSX

・Tang Nano シリーズ移植版 -20th Anniversaryには財布に優しい世界を-
Tang Nano 4K、9K、20K /HDMI出力+Audio /microSDHCメモリカードとFAT32サポート /USB-UART経由のROM転送とキー入力 /開発環境 Gowin EDA Designer 1.9.9.03、 Sipeed Tang Nano 9K

 ファミ…コン…?

_
実装

[はじめに] [開発環境] [NES] [CPU] [PPU] [APU] [RAM・ROM] [カートリッジコネクタ] [VGA] [PSPAD] [SDカード・FATファイルシステム] [NSF Player] [FM音源VM2413] [feat. 1chipMSX] [feat. TangNanoシリーズ] [その他] [動作確認] [紀行史] [おわりに]

_
動作

NES on FPGA feat. DE1 [youtube]

NSF Player on FPGA feat. DE1 [youtube]

_
配布

最新のコードやFPGAデータ等はこちら(GitHub)。

NES on FPGA feat. DE0-CV
 Terasic社製FPGAボード「DE0-CV」で.nes .nsfを実行します。 32MB〜2GBのmicroSDカードをFAT16にフォーマットして使用してください。 もしくはWindowsPCから送信できます。
 Ver.20190810 VRC7のプリセット値を修正。
 Ver.20190703 逆位相サラウンド実装。
 Ver.20181223 USB経由で.nes .nsfを送信できるようにしました。
 Ver.20170913 FAT16コアを修正。PS/2キーボードサポート。

NES on FPGA feat. DE1
 Terasic社製FPGAボード「DE1」で.nes .nsfを実行します。 32MB〜2GBのSDカードをFAT16にフォーマットして使用してください。 もしくはWindowsPCから送信できます。
 Ver.20190810 VRC7のプリセット値を修正。
 Ver.20190703 PS/2キーボードでの操作をサポート。
 Ver.20181223 USB経由で.nes .nsfを送信できるようにしました。

NSF Player on FPGA feat. DE0
 Terasic社製FPGAボード「DE0」でNSFファイルを再生します。 NSFファイルはSDカードから読み込み、もしくはWindowsPCから送信できます。 標準IOピンから出力しますので、ローパスフィルタを付けてアンプに接続してください。
 Ver.20190810 VRC7のプリセット値を修正。
 Ver.20190703 逆位相サラウンド実装。
 Ver.20171126 USB経由でNSFファイルを送信できるようにしました。
 Ver.20170624 DE0にLCDが実装されている場合、曲名と作成者を表示するようにしました。
 Ver.20170104 SuperNSFのようなDMCストリーム形式をサポートしました。
 Ver.20160103 ピンアサインを拡張基板EXT-1向けに変更しました。 また、NSD.LibやFamiTrackerで作成したNSFをサポートしました。

_
履歴

2025.4.13Tang Console 138K に移植
2025.3.19Analogue Pocket に移植
2024.1.9Tang Nano 4K,9K,20K に移植
2022.9.161chipMSX に移植
2015.10.10トランジスタ技術に寄稿『ファミコン・サウンド回路と6502互換CPUで懐かしのゲーム音再生』
2013.1.13IGS MMC3 実装
2012.12.5Tatio X1-005 実装
2012.12.2Konami VRC2 type B 実装
2012.11.22Bandai chip 実装
2012.9.15Namcot 106/163 実装
2009.10.8Konami VRC3 実装
2009.10.4Konami VRC4 実装
2009.9.28Sunsoft FME-7 実装
2009.9.22Nintendo MMC4 実装
2009.6.8Nintendo MMC3 実装
2008.11.6Nintendo MMC1 実装
2008.5.4VRC7音源実装 最初で最後のFM音源
2008.4.18SUNSOFT5B音源実装 炸裂ゆめたろー
2008.4.13VRC6音源実装 グロウズ□△
2008.4.5FDS音源実装 ビブラートきかせて
2008.3.28NAMCO106音源実装 カスタムオロチ
2008.3.2MMC5音源実装 ドリアーップ!
2008.2.25NSF再生サポート
2008.2.4SDメモリカードからのブートに対応
2006.11.25Terasic DE1 に移行
2006.8.15sflp SFLプリプロセッサで記述しやすく
2005.3.15カートリッジコネクタVer.3製作 5V対応
2005.1.27Electronic Design and Solution Fair 2005 に出展
2004.11.25電子情報通信学会技術研究報告『技術者教育のためのFPGAとSFLによるファミコンの実装』
2004.10.25全九州半導体技術フォーラムにて初展示
2004.10.6APU追加 やっぱりサウンドがないとね
2004.9.25カートリッジコネクタVer.2製作 複数ゲームに対応
2004.9.20PSパッド用インタフェース実装
2004.9.12PPU(スプライト)実装 マリオFPGAに立つ(世界初のファミコンFPGA実装!?)
2004.8.19FPGAにてマリオのタイトル画面を表示
2004.8.13secondsにてマリオのタイトル画面の描画を確認
2004.8.10カートリッジコネクタVer.1製作 要はマリオ直接続
2004.8.8PPU(バックグラウンド)実装
2004.7.30CPU(6502)をSFLで記述
2004.7.22エミュレータを作成し動作を確認
2004.5.3参考資料を集める
1991.7.30ファミリーコンピュータを親から買ってもらう
1983.7.15ファミリーコンピュータ発売
!

だいぶ再現性は上がってきたので、 実機じゃ無理なこと、やっちゃいましょう。

拡張音源内蔵してもSNESの半分の規模にもならない… ってことはもっと実装できるってことですね! マルチコア化?とか。

NSFプレイヤーとして使ってくれる人っていますかねぇ誰か誰か。

しかしTerasicのボードかっこいいな。

もう最近は新しい言語を習得するためなどでカジュアルにNESエミュを実装する人が増えましたね。

初期のアーカイブ(特に意味はないですが)

_
注意

 ここで公開している情報は実装によって動作を確認していますが、 想定外の動作により機器の破損につながるおそれもあります。 実装および運用は自身の判断にて行ってください。

! 時がくればあるいは。


*ファミリーコンピュータ、ファミコン、NINTENDO ENTERTAINMENT SYSTEM は任天堂の登録商標です。

E-mail

Copyright(C)2004-2025 pgate1 All Rights Reserved.