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

前回の続きです。

nicotakuya.hatenablog.com

 

メガドライブ用開発環境「SGDK」の最新バージョン「1.70(2022年2月公開)」をダウンロードしてみました。

以前、雑誌/書籍用に作った「shooting」をリビルドしてみました。統合開発環境はCodeBlocks 20.03を使用しています。

やたらと「D:¥apps」フォルダを参照しているのが、意味不明です。どうやったらこれを止めさせることができるんでしょうか?

あと、Warningが一杯出るようになってしまいました。原因は不明。実害がないので、そのまま使っても大丈夫そうですが、

(修正前)

VDP_setPaletteColors(PAL0, (u16*) spdata.palette->data, 16);

(修正後)
PAL_setPalette(PAL0, spdata.palette->data, CPU);

こんな感じで置き換えると、Warningを1つ減らすことができます。知らない間に「vdp_pal.h」が「pal.h」に変わっていました。

 

大問題が発生。

実行してみると、スプライトが全て表示されなくなってしまいました。

main.c内の次の行を書き換えます。

(修正前)

VDP_waitVSync();

(修正後)
SYS_doVBlankProcess();

 

ビルドすると、スプライトが正常に表示されるようになりました。

GitHubで確認したところ、SDGK 1.60(2020年12月公開)からサンプルプログラムも「VDP_waitVSync」から「SYS_doVBlankProcess」に書き換わっていました。

 

ゲームの吸い出しの話

スーパーファミコンのゲームを読み取って複製したいのですが、できますか?

みたいなメールを受け取ったんですが、、、何なんだろう?

私のことを違法コピーの無料コンサルタントか何かと思っているんでしょうか? そういう人だと思われてるのか? ゲーム開発用としてカートリッジ基板の自作を3年ほど続けてきましたが、その結果がコレってのが、もう残念すぎです。

メールを受け取って既に数日が経過しているのですが、まだ怒りが治らないので、これを書くことにしました。

 

ゲームの吸い出し行為が合法か? 違法か?

自分は「違法」だと思ってます。コピーツール(吸い出し機やマジコン)がまっとうなお店で売ってないことを考えれば明らかです。レトロフリークもこれに該当すると思います。海外旅行のお土産でコピーツールを買ってみれば、もっとハッキリすると思います。

しかし、Amazonで検索すると、コピーツールがゾロゾロと出てきます。最近だと秋葉原のショップで「Cartridge Reader」というのが売られています。普通に売っているってことは、税関を通過してるということでしょうか? 不思議です。当然のように売っているので、罪の意識が薄い人が居るのでしょうか? だったらそれらを買えばいいだけで、私にメールする必要はないのでは。

 

上の写真は「デジゲー博2018(2018年11月開催)」のIMPACT SOFTさんのブースで売っていた「FC Bus-EmulatoR」。

撮影した時はこれが何なのか全くわかりませんでした。

 

gamernium.com

開発元、GamerniumさんのWebページより。上記のページの注意書きでは、「ゲームのアップロード/ダウンロードは違法です」程度にとどまっています。まあ、同人なので、法的なグレーさは許されてると思います。

 

私の解釈としては、吸い出し行為は違法です。

ただし、自分の持ってるゲームを吸い出して、自分で遊んでいるだけなら、問題ないと思います。違法行為ですが、告発する人は居ません。密造酒を自分で作って、自分で飲んでいる状態と同じと考えていますが、果たして良い例えなのかどうか。

 

バンダイ アルカディア用カートリッジ基板の自作

バンダイの「アルカディア」用のカートリッジ基板を自作してみました。

以下のページに作り方を公開しています。

sites.google.com

youtu.be

動画。

 

仕組みはフラッシュメモリをバスにつなぐだけです。

初の試みとして、超薄型ユニバーサル基板をカードエッジとして使ってみました。が、接触の信頼性が良くないので、プリント基板を作った方がいいです。

 

自作したフラッシュメモリライター。Pi STARTERで動きます。

 

関連

nicotakuya.hatenablog.com

nicotakuya.hatenablog.com

バンダイ アルカディアのビデオ出力改造

www.youtube.com

 

バンダイの「アルカディア」にビデオ端子を付けてみました。元はRF出力しか搭載されていないので、今のTVでは映すことができません。

 

手順としては、本体を分解して、回路を追加して、外装にRCA端子を取り付けます。

 

関連

nicotakuya.hatenablog.com

Raspberry Pi PicoでDVI(HDMI)出力

前回の続き。

nicotakuya.hatenablog.com

 

f:id:nicotakuya:20220410134957j:plain

Raspberry Pi PicoでDVI(HDMI)出力を試してみました。上の写真はAdafruitが公開しているサンプル「hello_dvi」を実行中の様子です。

 

f:id:nicotakuya:20220410135348j:plain

使用した部品、「Adafruit DVIブレークアウトボード」です。スイッチサイエンスで330円(+送料)でした。

この他、「Raspberry Pi Pico用DVIアダプタ基板(990円)」という部品も使えます。商品説明が「HDMIっぽい」となってますが、HDMIです。

 

f:id:nicotakuya:20220410135510p:plain

説明文を元に書いた回路図。

VGA出力にくらべてシンプルです。Raspberry Pi公式もVGAじゃなくて、こっちを採用したほうが良かったのでは。

 

f:id:nicotakuya:20220410135556j:plain

完成。

 

f:id:nicotakuya:20220410135642j:plain

サンプルの「sprite_bounce」を実行中。

うちのディスプレイの仕様なのかもしれませんが、解像度が低い場合はこんな感じで額縁状態で表示されます。

 

f:id:nicotakuya:20220410135915j:plain

「moon」を実行中。

 

f:id:nicotakuya:20220410140030j:plain

「terminal」を実行中。

 

f:id:nicotakuya:20220410140119j:plain

「mandelbrot」を実行中。

f:id:nicotakuya:20220410135736j:plain

Shuichi TAKANOさんという方が開発したファミコンNESエミュレータ「pico-infones ver.0.1」を動かしてみました。試しに自作ファミコンゲームのROMを入れてみたら動きました。ドキュメントによると、対応するゲームパッドはBUFFALO BGC-FC801、SONY DUALSHOCK 4、SONY DualSenseの3種類とのこと。

以下のページでUF2ファイルとソースコードを公開されています。

GitHub - shuichitakano/pico-infones: infones for pico

 

f:id:nicotakuya:20220410233435j:plain

(追記)

バッファローのBSGP801を接続した場合、ボタンが複数反応してしまうという現象が発生していたのですが、次の方法で修正してみました。

まず「pico-infones-0.1」のソースをGitHubからダウンロードします。

「hid_app.cpp」の内の2箇所を変更。

・258行目「uint8_t axis[3];」→「uint8_t axis[2];」に変更。

・267行目「gp.axis[2] = rep->axis[2];」を削除。またはコメントアウト

これでZ軸が除外されて、十字ボタンのXY軸だけ読み取るようになります(たぶん)。

ターミナルを起動して「cd pico-infones-0.1」「mkdir build」「cd build」「cmake ..」「make」でビルドをやり直します。buildフォルダにpicones.uf2が作成されたら成功です。