同じCPUを2個載せても使うメモリの数は減らしたい

アーケード基板だと、Z80x3とか、68000x2 なんて基板が普通に存在するわけだが、それらは対応が面倒ということでやってない。問題は複数の CPU を FPGA に置くと、CPUの数だけメモリ領域が必然的に発生してしまう。

そこで本来の CPU の動作スピードが12MHz だとすると、 24MHz を入力して 2clock に 1回ずつ動かして、メモリ領域をその都度切り換えればいいのではないかとときどき考えている。単純に 1clock ごとに切り換えるとメモリアクセスの途中に切り換えることになるので、メモリアクセスが終わったら切り換えるようにしないといけない。それが動いたとすると、お互いの CPU の動作時間は均一ではなくなり再現度が下がるとか、そんなんソフトエミュと同じでおもしろくないとかで結局やらず。現実では単純にやる時間がないだけだが。

68000 の場合は FC pin で見た方がいいと思うんだけど、 TG68 はでてないし、ビルド時間はかかるだろうし、EP2C20 に収まるかどうかとか。 Z80 の場合は M1 で1命令ごとに切り換えればいいのかなーとか思うが、1命令の実行時間なりメモリアクセス回数は当然異なるのでどうなのとか。

Z80 ならシミュレートもしやすいし、実行時間関連で再現度が低くてもよさそうなのを... といくらか探したんだが、これといって作ろうというものがあまりない。

  • 1943: Z80x2, YM2203
  • psychic5: Z80x2, YM2203
  • omega fighter: Z80x3, YM2203
  • final romance: Z80x2, YM2413

なぜか YM2203 が人気。音源は自分で作らないといけない。その中 final romance (初代)は YM2413 なんで MSX 系とかで公開されていて使えたりする。ゲームを始めるといきなりウッチャン(のそっくりさん)が出てくるのが衝撃的なんだが、一般受けはおそろしく悪いと思われる。

final romance は麻雀たる所以で、スプライトがないから実装が楽そうという甘い点と、キャラクタデータがでかいので SD カードから SDRAM に転送しないといけない点があるのであった。

結局保留。