ファミコン用カートリッジ基板の製作(設計編)

ファミコンのゲーム作りには絶対に手を出すまい、と心に誓っていたのですが、、、考えを改めました。今回も目コピーでカートリッジ基板を作りたいと思います。

f:id:nicotakuya:20200209132328j:plain

ファミコンカートリッジ分解

手持ちのファミコンのカートリッジを開けるところから始めます、、、が、方法がよくわからず、マイナスドライバーでこじ開けたらツメが折れてしまいました。

すごい敗北感。

 

f:id:nicotakuya:20200210153731j:plain

基板のサイズを測る

ノギスでサイズを測定します。ピン間隔は2.54mmピッチですね。板厚は1.2mmくらいでしょうか。

 

f:id:nicotakuya:20200301121800p:plain

回路を解析

回路を調べます。ファミコンの資料はネット上に一杯あるので、解説は特に不要だと思います。上の基板の写真は、右側を左右反転してあります。

このカートリッジはマッパー2を採用している「うっでいぽこ」です。プログラムROM容量は128KB。16KB単位でバンク切り替えを行っています。キャラクタRAMは8KBです。キャラクタROMではありません。このため、ROM側からデータをコピーしています。

2つのロジックICはバンク切り替えに使用しています。ファミコンのカートリッジはCPUリード信号とライト信号が兼用になっているという妙な仕様です。プログラムROMはずっとアクティブになったままで、バンク切り替え時に書き込もうとするとデータバスが衝突するようになっています。データバスの衝突を回避するためには、バンクのページ番号をあらかじめROMに書き込んでおくとのことです。「Enri's homepage」というサイトに書いてありました。

 

f:id:nicotakuya:20200229214900p:plain

ファミコンカートリッジ基板。32KB

さっそく基板を設計してみました。外形は目コピーですが、回路は現代の部品にアレンジする必要があります。

キャラクタROMかキャラクタRAMか、どちらかを選択する必要がありますが、やはりRAMのほうが使い勝手がいいです。値段を考えると秋月で売ってる32KB(256Kbit)がベストです。8KBしか使わないので、もったいないですが。端子のピッチは1.27mmですが、これなら手でハンダ付けできます。

プログラムROMはやっぱりフラッシュメモリですね。WE信号をどこかのピンに割り振る必要が出てくるのですが、2本あるVCCのうち1本に割り当てました。

アドレスバスが少ないので、バンク切り替えをしない場合、容量が最大32KB(256Kbit)になってしまいます。ただし、手持ちのフラッシュメモリが512KB(4Mbit)です。バンク切り替えなしでも面白いゲームは作れる(スーパーマリオとか)と思うのですが、これはさすがにもったいないので、この基板はボツにしました。

 

f:id:nicotakuya:20200227083337j:plain

基板のチェック

やっぱりバンク切り替えをするしかないってことになったのですが、一気にハードルが上がります。容量が512KBだと「ドラゴンクエストIV」が有名なので、マッパー1に決めました。マッパー1だとMMC1という専用のICが必要になってしまいますが、当然、売ってません。どうやって入手するのかが大問題ですが、解決を後回しにしてとりあえず設計してみました。

f:id:nicotakuya:20200229214808p:plain

ファミコンカートリッジ基板

最終的に出来上がったCADデータです。

フラッシュメモリのOE信号を外部から制御したいのですが、カードエッジの中に該当する端子がありません。しかたないので、2本あるGNDのうち1本を割り振っています。

バックアップRAMを載せて、リチウム電池を入れる空間を確保しておきました。バックアップRAMには安全装置がなくて、MMC1からチップセレクト信号がきたら書き込み可能になってしまいます。ドラクエのセーブデータが間違って消えてしまうことがよく話題になりますが、これは当然だなと思います。

バンク切り替えとフラッシュメモリの相性がよくありません。1バイト書き込むたびにバンクを切り替えていたら、ものすごい時間がかかってしまいます。なので、いざとなったらジャンパピンでMMC1の電源を切れるようにしてみました。

実際に作ってみて動作に問題がなければ、データを公開しようと思います。

(追記)

f:id:nicotakuya:20200316012824p:plain

基板のCADデータをさらに手直し

その後、基板の高さを50mmから48mmに縮めました。が、作る値段は1円も変わらなかったです。

続きはこちらです。

https://nicotakuya.hatenablog.com/entry/2020/03/16/152958

 

レゴ エデュケーションSpikeプライムを買いました

レゴ エデュケーションSpikeプライムを秋葉原のテクノロジアさんで買いました。

箱から出して、パソコンと接続して動かすまでの様子を動画にしてみました。


レゴ エデュケーションSpikeプライムを動かすまで

 

地球防衛軍3

f:id:nicotakuya:20200116140017j:plain

地球防衛軍3 ミッション達成率100%

地球防衛軍3」を久々に遊んでみました。INFERNOの「星船」「蟲の怒り」「凶蟲行進」がずっと解けずにいたのですが、Youtubeのクリア動画をマネしてみたら全部解けました。何度やってもダメだったのに、武器を変えるだけでなんとかなってしまい、拍子抜けです。やっとジェノサイドガンが使えるようになりました。一発誤爆したら死亡というむちゃくちゃな性能が素晴らしい。

地球防衛軍は3(Xbox360)、4(Xbox360)、5(PS4)と、ひと通り遊んでみましたが、3が一番ストレスなくプレイできますね。ZEXR-GUNが一瞬で置けて、移動もピタッと止まれて、武器のチェンジも早い。遠い敵がボケないでクリアに見える。死骸がバラバラにならないので、邪魔になりやすくてゲーム性が高い気がします。

困難がないとクリアした時の楽しさが生まれないのですが、ストレスが増えすぎると魅力が半減です。バランスが大事ってことでしょうか。「地球防衛軍3」は中古で500円くらいで売ってるのでオススメです。

 

日経ソフトウエア2020年3月号

f:id:nicotakuya:20200124052423j:plain

日経ソフトウエア2020年3月号

雑誌「日経ソフトウエア2020年3月号」で記事を2つ書かせて頂きました。

1つはプチコン4の連載記事、もう1つはPygame Zeroの特集記事です。
 

日経ソフトウエア2020年3月号「プチコン4入門2」掲載プログラム

プチコン4の連載では「LMATRIX」命令を使って、疑似3D表示のレーシングゲームの作り方を紹介しています。単に画像を変形させるだけではなく、変形した画像に追従してスプライトを配置する方法も紹介しています。あと、誌面に掲載している公開キーをプチコン4に入力すると、サーバからプログラムをダウンロードすることができます。

 


Pygame Zeroで作成したゲーム(日経ソフトウエア2020年3月号掲載)

Pygame Zeroの特集ではジャンプアクションゲームとシューティングゲームの作り方を紹介しています。Pygame ZeroはPythonで手軽にゲームが作れるというライブラリです。誌面ではWindows+Anaconda3でプログラムを実行していますが、ラズパイでも動きます。 

ナツキクロニクルを遊んでみた

f:id:nicotakuya:20200110190931p:plain

ナツキクロニクル EXTREMEモード

「ナツキクロニクル」を2週間くらい遊んでみたので、感想を書いてみようと思います。「ナツキクロニクル」はキュートさんのXbox One用ゲームです。開発期間はなんと4年以上。途中、発売中止するんじゃないかと心配しましたが、結局、ダウンロードのみでの販売となりました。Xbox One専用の日本製シューティングゲームを作ったというだけで、もう大変な偉業ですね。

このゲームではライフ制を導入していて、さらにシールドが使えるので、猛烈に弾が飛び交います。弾道が見えるというアイデアは斬新。しかし、難易度が上がってしまうと意味を成さない。最高難易度のEXTREMEになると、敵がむちゃくちゃな攻撃をしてくるのですが、ダメージ受けながらごり押しでクリアしてしまいました。これは、うまい人のプレイが見てみたいです。ライフは最後の3つだけは自動的に回復してくれるので、瀕死状態で粘って戦うことができます。これが熱いですね。ゲーム内のお金でパワーアップできたり、頑張ってプレイするほどに報いてくれるようになってます。装備がかなり豊富で、武器の組み合わせを考えるのが楽しいです。ミサイル系は使えなかったです。ホーミング系は重宝しました。頑丈な敵はグレネードとかメガビームで倒すと気持ちいいです。

敵の出現位置がしっかり決まっていて、覚えゲーになってますね。攻略しやすいように作られているのですが、攻略してしまうと飽きてしまうかもしれません。このへんは好みの問題でしょうか。逆にSTAGE3のボスはランダムでジャンプして面白いですね。あと、STAGE4が妙に難しいと感じます。ドアとか壁とかプレイヤーの攻撃を問答無用にキャンセルされるせいでしょうか。グラディウスを思わせるステージでお気に入りです。

演習ステージ2のNORMALが全然クリアできません。敵弾の隙間がないのですが、どうやったらいいんでしょうか。演習ステージはシールドが加算されないので、どうにも進めません。クリア動画が見てみたいです。

STAGE4のEXTREMEだけで80回以上遊びましたが、同じセリフを聞くのは苦痛なので、ボイスは切って遊んでます。毎回Aボタン長押しをして、ブリーフィングをスキップするのですが、それすら面倒に感じます。「繰り返して何度も遊ぶ」と「ストーリーあり」というコンセプトはマッチしないような気が、、、。これは他のゲームにも言えるので、しかたないことでしょうか。

ストーリーには不満が残ります。「しかたなく殺しちゃった」の繰り返しで、使い捨てのキャラクターがもったいないです。すごく真面目に作られているゲームなので、シリアスになっちゃったと思うんですけど。プレイヤーが殺す側なので、どうにもモヤモヤしてしまいます。マルチストーリーにすればいいんじゃないかと思うんですが、贅沢な望みでしょうか。あとは人が死なないようにするとか?

「アーケードモード」はボイスもブリーフィングもないので、個人的にはこっちの方が好みです。ただし、ステージが連続しているので、プレイ時間が長くなってしまいます。パワーアップアイテムは正しいものを取らないと先に進めないのですが、アイテムがアイコン表示なので、初見殺しなのが困りもの。これは、やり込んで遊べばいいことでしょうか。オンラインランキングを見ると凄いスコアの人が一杯います。