メガドライブゲーム開発記事の補足(SGDK 1.5)

今年3月末、「日経ソフトウエア2020年5月号」にメガドライブ用のゲーム開発記事を掲載したのですが、そのエラーの対策方法をご紹介します。

f:id:nicotakuya:20200624142308p:plain

SGDKを1.51に差し替え

 

githubからSGDK(開発環境)をダウンロードして、ローカルに展開します。すでにファイルがある場合は全て差し替えます。現時点での最新バージョンは1.51です。

 

f:id:nicotakuya:20200624143114p:plain

PLAN_Bでエラー

ビルドすると、エラーが出てしまいます。SGDK1.41だと正常にビルドできるのですが、SGDK1.50(2020年4月公開)の時点で、「PLAN_B」だった定義名が「BG_B」に変更されています。雑誌掲載から1か月経たないうちに誤植になってしまっていたとは! タイミング悪すぎです。

シューティングゲームのサンプルは以下の2点を修正します。

(修正1)

VDP_setTileMapXY(PLAN_B, tile, tmpx, tmpy);

VDP_setTileMapXY(BG_B, tile, tmpx, tmpy);

 

(修正2)

VDP_setVerticalScroll(PLAN_B, scrolly); // 画面のスクロール

VDP_setVerticalScroll(BG_B, scrolly); // 画面のスクロール

f:id:nicotakuya:20200624142237p:plain

正常にビルドできた場合

ビルドが正常に終了すると、「0 error」と表示されます。
 

f:id:nicotakuya:20200625102552j:plain

メガドライブ用自作ゲーム

nicotakuya.hatenablog.com

ファミコン用マルチタップの自作

Micro Magesを4人プレイで遊ぶため、ファミコン用のマルチタップを自作してみました。

 

 

 

f:id:nicotakuya:20200522200325p:plain

ホリ4プレイヤーズアダプター(イメージ図)

作った動機のもう一つは「ホリ4プレイヤーズアダプター」が高すぎること。Amazonで29800円で売ってて、腹が立ってしまいました。マイナーな存在なんでしょうか。

マルチタップを接続すると、元から付いてるコントローラと合わせると、技術的には6人同時プレイも可能です。通常はソフト的にマージしてしまうので、最大4人プレイになります。

 

f:id:nicotakuya:20200522124548p:plain

自作したマルチタップ基板

今回はプリント基板で作りました。配線の手間を省くことと、配線ミスを防ぐことが狙いです。制御はArduino(ATmega168/328)です。

 

f:id:nicotakuya:20200602144748j:plain

到着したプリント基板

届いた基板がこちら。今回はカートリッジ基板と一緒にオーダーしたので、合計で49000円くらいかかりました。これなら、マルチタップが余裕で買えるような気が、、、。

早速、失敗です。Dsub15pinコネクタを密に配置しすぎました。これだと、コネクタを挿し込むと衝突してしまいます。コネクタと基板の距離を伸ばすことで対策しました。

 

f:id:nicotakuya:20200623142706p:plain

ロジアナ機能で信号を測定

ファミコン用マルチタップは資料がありません。自分が見つけられていないだけかもしれませんけど。
そこで、ロジアナもどきのプログラムから作りました。ファミコンからの信号をRAMに蓄積して、シリアルポート経由でパソコンに送信します。パソコン側ではHSPでグラフ化しています。

ゲームによって信号のタイミングがバラバラです。上のグラフはMicro Magesの測定結果で、CH1=P/S、CH3=P1クロック、CH5=P2クロックです。クロックはハード的に生成しているみたいで、下がっている時間がものすごく短いです。

 

f:id:nicotakuya:20200523124500p:plain

Micro Mages説明書

作っている途中で気が付きましたが、Micro Magesは2Pモードでも遊べるように作られています。説明書だと、4Pモードを推奨してますが、実際はどっちでも大丈夫です。なので、わざわざプリント基板で作る必要はなかったかなという気もします。せっかく作ったので、もっと4Pモードに対応したゲームを遊んでみたいです。

 

f:id:nicotakuya:20200623145152j:plain

4Pモードじゃないゲーム

カンで「びっくり熱血新記録」と「ボンバーマン2」を買ってみたのですが、どっちも4Pモードじゃなかったです。難しい。

 

sites.google.com

 

ファミコンの修理とAV化

f:id:nicotakuya:20200620162047j:plain

画面がグルグルと動いてしまう

ファミコン用マルチタップの自作ですが、近いうちに資料を公開します。

それとは別の問題として、「ダウンタウン熱血行進曲」を動かそうとすると、ビデオ出力が正常に行われません。画面が下から上に向かってスクロールし続けてしまいます。「アルカノイドII」でもVSモードに入ると、表示がおかしくなってしまいます。

うちのファミコンは「ファミコン改造マニュアルVol.2(1988年)」を参考にAV化の改造をしているのですが、その回路に何らかの問題があるのではないか、、、と思います。今までは問題なく動いていたので、特定のソフトでのみ不具合が出るみたいです。(追記。直流カット用の10マイクロFが不具合の原因でした。抵抗に取り替えたら直ります。)

 

f:id:nicotakuya:20200620162209j:plain

RFモジュールを切断

そこで、別のファミコンを用意して、AV化の改造を最初からやり直すことにしました。ちょうど壊れた(壊した)ファミコンがあるので、その修理と同時に行います。

このファミコンは基板に1983年のシルク印刷があったので、けっこう初期型ですね。通電してテスタで確認したところ、電圧が0.6Vくらいしかありませんでした。あと、ヤバいものが焼けてるような匂いがします。たぶん、知らないうちに自分が電源IC(7805)を壊してしまったんだと思います。初期のファミコンはヒューズが付いてないので、壊れやすいんじゃないでしょうか。電源ICを交換してもいいのですが、RFモジュールをもう使わないので、配線をニッパーで切断しました。外したRFモジュールはもったいないので、いつかの時のために保管しておきます。

 

f:id:nicotakuya:20200620162303j:plain

ユニバーサル基板で自作

RFモジュールのあった場所にユニバーサル基板を置いて、回路を自作します。ビデオ信号トランジスタで増幅します。

ビデオとオーディオの信号は3.5mmのステレオミニジャックから出しました。3極のステレオミニプラグ→RCAケーブルを使った場合、白がオーディオ、赤がビデオに割り振られます。4極のミニプラグ→RCAケーブルを使った場合、白がオーディオ、黄色がビデオに割り振られます。自分の場合は古いビデオカメラ用のケーブルを使っているのですが、メーカーによって端子の割り当てが違う可能性があります。 

 

f:id:nicotakuya:20200620162359j:plain

USB電源アダプタに対応

背面はこうなりました。

電源はUSB電源アダプタで供給します。最初から5Vなので、降圧する必要がなく合理的です。ACアダプタの取り付け穴からマイクロUSBのコネクタを出します。

 

f:id:nicotakuya:20200620162446j:plain

ファミコンのビデオ出力に成功

うまく動きました!

画面がグルグルしません。取り付けた抵抗の値がいいかげんだったので、全体的に絵が暗いです。あとで直します。ファミコンはプラスドライバーでガワを開けられるし、DIP部品がたくさん使われているし、メンテナンスしやすくて助かります。

USB電源化したことにより、手軽に電流を測定できるようになりました。電流値は420mAくらいです。最近はラズパイ用の電源があるので、これくらいなら平気だと思います。外部端子にコントローラを接続すると10mAくらい増えます。

たまに電源を入れても画面が真っ暗なままになってしまうという問題が発生します。この場合は、リセットすると正常に動きます。起動時の電力消費がかなり大きいみたいです。電解コンデンサの容量を大きくすると直ると思います。RFモジュールには1000マイクロFの大容量の電解コンデンサが付いてました。

 

f:id:nicotakuya:20200620162825p:plain

CADで基板のデータを作ってみた

念のため、AV化のプリント基板も設計してみました。スカスカですね。現時点ではCADデータのままです。将来、大量にファミコンを改造するようなことになったら作りたいです。

 

nicotakuya.hatenablog.com

 

ファミコン版アルカノイド・コントローラの自作(update)

f:id:nicotakuya:20200617023829j:plain

アルカノイド用コントローラ

ファミコンアルカノイド・コントローラの自作ページをアップデートしました。写真と回路図とプログラムを差し替えてます。

sites.google.com

可変抵抗にツマミを付けました。

あと、通信時のタイミングを直したので、動作が安定しました。これで「アルカノイドII」をちゃんと遊べるようになりました。久々にオシロスコープが役に立ちました。

 

f:id:nicotakuya:20210601210835j:plain

製作途中の様子

f:id:nicotakuya:20200617024416j:plain

アルカノイドIIをプレイ中

アルカノイドII」はパート1のラスボスと戦うところからスタートするんですが、いきなり難しすぎじゃないですか? へたすると、この面で終わってしまいます。エディットモードで作ったマップを保存できたり(ファミリーベーシックのキーボードとデータレコーダが必要!)、コントローラをデイジーチェーンで接続できたり、チャレンジングなところは評価するんですけど、、、。

 

 続き

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

NES用ゲーム「Micro Mages」

フランスの通販サイトで「Micro Mages」というNES用のゲームを買ってみました。価格は45ユーロですが、送料が加わって最終的には51ユーロ(購入時は約6400円)でした。

新型コロナウイルスの影響により、注文してから届くまでに2か月ほどかかりました。無事に届いてよかったです。

f:id:nicotakuya:20200525224844j:plain

ファミコンでMicro Magesを動かす

ゲーム中の様子です。このゲームはNES/ファミコンに対応。さらにPAL/NTSCにも対応しているとのことです。

カートリッジはNES用です。自分の場合はサイバーガジェット製のレトロフリーク用のコンバータ(ヨドバシで1980円)で、カートリッジを接続しています。

プレイヤーや敵を8x8ピクセルで描くという発想が素晴らしいですね。スプライト1枚で済むので、処理を大幅に軽減できます。今だと大画面で遊べるので、キャラの小ささも払しょくできるのではないでしょうか。

少し遊んでみましたが、丁寧に作ってあります。操作性が良くて、敵に攻略法があって、ちゃんとボスも出ます。容量はプログラムROMが32KB、キャラクタROMが8KBのようです。バンク切り替えがなくても、ここまでのボリュームのゲームが作れることに驚きです。

f:id:nicotakuya:20200523124500p:plain

4人プレイにも対応しているらしい

このゲームの最大のウリは4人プレイにも対応しているということです。NESでは、コントローラをいったん外してマルチタップを接続しますが、ファミコンでは外部端子にマルチタップを接続します。NESファミコンではプログラムの処理が違ってくるのですが、自動的に判別してるということでしょうか。

説明書によると、ファミコンの場合はポートは1番と2番を使ってくれ(3番と4番のポートが使えない)と書いてあります。つまり、プレイヤー1~2は備え付けのコントローラを使うということでしょうか。まだ未確認です。

 


ファミコンでMicro Magesを動かすまで

 

(2021/1/11追記)

ファミコンカートリッジ版も出たみたいですね。これでもう変換する必要はありません。

現時点では品切れ状態です。

ファミコン版はカタカナで「マイクロメイジス」の文字がラベルに足されています。このMSゴシックみたいなフォントを見ると、テンションが下がってしまうのですが、なんでしょうか、この気持ちは。

ディズニーのアニメとかで、日本公開時に画面上の英語をわざわざ日本語に変えてくれるという余計な配慮がありますが、あれに似てます。

www.brokestudio.fr