2004.7.23 公開
Time Pilot on FPGA

 一世代進んだ回路を手がけてみる。



PACMANとの主な違い

1.タイルマップ(背景)とオブジェクト(スプライト)の描画が別系統になった。
2.オブジェクト描画用RAMが2重化され、同時表示可能な16x16のオブジェクト数が6から24に増えた。(TimePilotでは裏テクで24個以上を表示してる!)
3.RGB出力が8bpp(256色)から15bpp(65535色)に増加した
4.CPUがメイン/サブに分かれ、サブCPUでサウンドを演奏してる
5.サウンド回路に汎用PSGチップ(AY-3-8910)を2つ使用

FPGAに乗せる際の問題点

1.外部ROMの種類が増加、全部でメインCPU,サブCPU,背景パターン,オブジェクトパターンの4つが必要。
 多インターリーブ、高速ROM、複数ROM化などで対応する。
2.内部RAM/ROMの容量増加
 XC2S200なら、ぎりぎり間に合う。
2.ツインCPU+PSGにより、2倍以上の回路規模のFPGAが必要
 注:サウンド未実装ならXC2S150で入る。
 試:Z80を1つ外付けすれば、XC2S200でサウンドも鳴るか?
 望:ALUやMCodeを時分割実行するMulti-Z80のIPがあれば...

実装方法

1.ROM
 1つのROMを、9.216MHzサイクルで6インターリーブして、全てのROMバスを1つでまかなう。
 順序=Tile -> MainCPU -> SubCpu -> Obj -> MainCPU -> SubCpu -> Tile
 ROMのアクセス速度は100ns程度が必要

2.サブCPU
 無くても動くので、とりあえず未実装とする。当然音は出ない
 AY-3-8910は自前で書いてみたら、4時間くらいでそれなりに動いてしまった。
 そのノリでサウンドも適当にインプリメントした。RCフィルタだけは入ってない。
 デバッグには、メインCPUバスをJTAGでハックしてMAMEと繋いでみた。楽ちん〜
 ボードを作ってないのでノーチェックだが、手持ちのXC2S300Eで動くハズ

Download

Download Page

転用、展望

 ビデオ回路では、以後数世代の間で様々な機能が追加さていく。
・背景のスクロール
・背景の2重化
・背景、オブジェクトの色数増加
・オブジェクトの倍サイズ、拡大機能
 それでも、基本回路はTimePilotと大差なく、特に画面構成が256x224pixelの物は、これに追加/変更する形で多くに転用可能と思われる。
 しかし、ROMの数やバス幅が増加していくため、1つのFPGA+1つの古典8bit PROMで実装できるのは、この辺が限界だろう。

 サウンド回路では、PACMANのいわゆるナムコサウンドは多く使われているが、YM2203やYM2151等のFM音源やADPCMも主流になっていく。
 FM音源そのものはFPGAでも書けるが回路規模は肥大化していく。
 MAME用のFM音源エミュを書いた経緯もあるので、気がむいたらOPN-IPでも組んでみるか?