メガドライブ開発環境のSGDK用の(簡易)アドベンチャーゲーム制作向けツールを作成したので公開しようと思います。
エクセルファイルに記述されたスクリプトからSGDK用のC言語ソースを自動生成することで、MD向けのプログラムを書かなくても最低限のアドベンチャーゲームが作れることを目指しました。
プログラムを書けない人でも軽率にメガドライブゲームを作って令和の時代にメガドライブゲームで埋め尽くされる世界を見たいという願いによるものです。
が、結局詳細な手順説明等まで手が回らないし自身に宣伝力が皆無なことは色々なアレで火を見るより明らかになってしまったので果たしてこれが人々の目に止まることはあるのか…。
■ソースのダウンロード
ここ https://github.com/negativegame-net/ADV_SYSTEM
■環境
- Microsoft Excelが必要です。
- Code::Blocksでの開発を前提にしています。※開発環境の作成については割愛します。http://www.retropc.net/mm/md/などを参考にSGDKおよびCode::Blocksでの開発環境を構築してください。
■利用方法(プロジェクトに組み込む方法)
0.下記サイト様の「Draw_Shift_JIS」を組み込む前提のプログラムになってます。
https://nendo16.jimdofree.com/
「Draw_Shift_JIS」をダウンロードしてプロジェクトフォルダ内に下記のファイルを同階層に配置して下さい。
src/draw_sjis.c
src/draw_sjis.h
res/sjis_font.png
1.ADV_SYSTEM/src内のファイルをプロジェクトフォルダ内の同階層に配置してください。
2.「adv_system_codecreator.xlsm」の「スクリプト」シートにスクリプトを記述し、同シート内の「生成」ボタンを押すとプログラムファイルが出力されます。
出力場所のパスは「設定」シートに入力します。
出力されたadvsys_data.h、advsys_resource.hがそれぞれsrc、resフォルダ内に配置する必要がありますので、基本的に1.にはプロジェクトフォルダ/src、2.にはプロジェクトフォルダ/resを設定することを勧めます。
※エラーチェック等はしてないので不整合な値を設定するとプログラムがコンパイルエラーになる、または動作がおかしくなる可能性があります。
3.初期状態ではスクリプトの一番上のシーンから始まるような記述がmain.cに記載されています。
自作のプログラムから本エンジンを呼び出す場合は下記の関数を用いて実行が可能です。
void init_adv_system() エンジンの初期化
…開始する前に必ず実行する
void start_adv_system(u16 sceneIdx, u16 vramIdx) エンジンの開始
…sceneIdxで指定したシーンからエンジンを開始。
(シーンのインデックスはadv_system_codecreator.xlsm(プログラム生成後) の「シーンリスト」B列と対応)
本エンジンによる画像表示時、vramIdx以降の番地のVRAMをエンジンで利用する。 (上限なし。自前で枠などを描画するときは枠データの分より後を指定する、みたいな用途)
u16 update_adv_system() エンジンの更新
…ゲームループ内に記載することで更新が行われる。
スクリプトで「END」を指定した地点まで到達した場合、そのフレームで「返却値」に設定した 値を返す。それ以外(実行中)は定数「ADV_SYS_NULL」を返す。 終了判定を行いたい場合はそれで判別できる。
※sampleフォルダ内にサンプルゲームプロジェクト一式があります。
■その他
・BGMは鳴らせないんですか?
→大元のゲームではこのエンジン外で鳴らしてたので実装されてません。すみません。(そもそもメガドライブ用のBGMを作れるくらいならソースの修正くらい訳ないんじゃないかと思ってたり)
■ライセンス
MIT License
■バージョン
2021/01/24 … ver1.0
・・・え?実際にこれを使って作成したゲームですか? それは公序良俗に反するのでここではとても・・・。