スポンサーリンク

Saturn Ring Library でビルドして Mednafen で確認するまでの手順

Saturn Ring Library でプログラムをビルドしてエミュレータを用いて動作確認するまでの手順のメモ.

スポンサーリンク

確認環境

  • CPU: Apple M4
  • macOS: 26.5.2
  • SRL commit: d4cd4a131cbf80ad0308a4b990d36582aeea899a
  • Mednafen: 1.32.1
  • Japanese Saturn BIOS: sega_101.bin
    • SHA-256: dcfef4b99605f872b6c3b6d05c045385cdea3d1b702906a0ed930df7bcb7deac
スポンサーリンク

開発環境のセットアップ

必要なツールのインストール(入ってなければ)

brew install make wget sox xorriso

unzipも必要だが、通常はmacOSに標準で入っている. 確認する場合:

command -v unzip

エミュレータと BIOS の準備

brew install mednafen
mkdir -p ~/.mednafen/firmware
cp /BIOSがある場所/sega_101.bin ~/.mednafen/firmware/

sega_101.binは、日本版セガサターンから取得したBIOSを使用する.

SaturnRingLibrary のセットアップ

git clone --recurse-submodules https://github.com/ReyeMe/SaturnRingLib.git
cd SaturnRingLib
./setup_compiler.bat

テストビルド

cd Samples/TestProject
./compile.bat

BuildDrop/TestProject.cueBuildDrop/TestProject.bin が生成されればビルド成功.

Mednafenを日本リージョンへ固定

手持ちの日本版 BIOS で起動するため、 ~/.mednafen/mednafen.cfg を次の設定にする.

ss.region_autodetect 0
ss.region_default jp

これは自動判定を無効にし、日本リージョンへ固定する設定. 将来PAL版を確認するときは別設定が必要になる.

TestProject 実行時の問題と回避策

今回使用した SRL リビジョンと Mednafen 環境では、TestProject に二つの独立した停止要因があった.

  1. TLSF使用時にSEGAロゴで停止する

SRL_MALLOC_METHOD = TLSF では SEGA ロゴから先へ進まず、 main() まで到達しなかった. TestProjectmakefile を次のように変更する.

-SRL_MALLOC_METHOD = TLSF        # Allocation method: TLSF or SIMPLE are supported.
+SRL_MALLOC_METHOD = SIMPLE      # Allocation method: TLSF or SIMPLE are supported.

SRL では TLSF 有効時の不具合が報告され、SIMPLE が暫定的な回避策として案内されていた. 関連するメモリ初期化および SGL ワークエリアの修正は SRL 本体へマージ済みだが、今回使用したリビジョンと Mednafen 環境では、 TLSF 使用時に SEGA ロゴで停止した. SIMPLE へ変更すると SEGA ロゴを通過して main() に到達したため、現状は SIMPLE を使用する.

  1. DateTime::Now()で起動後に停止する

SIMPLE へ変更すると SEGA ロゴは通過したが、 DateTime::Now() の呼び出しで処理が停止した.

TestProject の src/main.cxx を次のように変更する.

-        DateTime time = DateTime::Now();
-        SRL::Debug::Print(1,1, "%d:%d:%d %d.%d.%d    ", time.Hour(), time.Minute(), time.Second(), time.Day(), time.Month(), time.Year());
+        SRL::Debug::Print(1,1, "TestProject running");

これは DateTime 機能の修正ではなく、TestProject の描画・テクスチャ読み込みなど、ほかの基本機能を確認するために時刻取得処理を外す回避策.

修正後のビルドと起動

./compile.bat
./run_with_mednafen.bat

赤系の背景、3個の図形、矩形のテクスチャ、および TestProject running が表示されれば動作確認成功.

この記事に使われているゲーム画面の著作権はすべて権利者にあり、当ブログは権利者の温情により使わせていただいている立場です。
権利者から削除要請があった際には真摯に対応いたします。

管理人
ハマチさん

セガサターンと共に青春時代を過ごした1979年度生まれ。

幼少期にセガマーク3を買い与えられセガ道に入るも、ファミコン、スーパーファミコンと王道を進みセガはメガドライブとゲームギアを嗜む程度。

セガサターン世代になってセガ道に復帰。
セガのコンシューマハード事業撤退以降は世を忍んでセガサターンのソフトをコツコツと買い拾うもののプレイせず。

最近セガサターン現役時代気になっていたけどプレイしていなかったソフトをプレイしながらブログに記録することを始める。

ブログ内の誤りやリンク切れなどありましたら Twitter にてご連絡いただけますと幸いです(もちろんお問い合わせフォームでも構いません)

ぜひ twitter でのフォローをお願いします
スポンサーリンク
セガサターンの基礎知識
スポンサーリンク
タイトルとURLをコピーしました