アフィリエイト広告を利用しています
 

2023年11月05日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第40回



4_19_1.png

3Dダンジョンロールプレイングゲーム第40回目です。

・変数名の書換。
・各種データ領域変更。
・システムメッセージのデータファイル化。
・それらに伴うメモリマップの再編成。

やり切りました!
あー、大変だった…。
でも、結構早かった。
なかなか順調に進んで、一通りのデバッグ処理完了です。

しかし、今回の作業は、あくまでデバッグ。
作業量は膨大だったけど、ゲームの製作進捗は全く進んでいない…。
マイナスがゼロになっただけです。
なんか、空しい…。

では、次回から開発再開します。
次回は、イベントを作成していきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月04日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第39回



4_19_1.png

3Dダンジョンロールプレイングゲーム第39回目です。
メモリマップ改訂したので掲載しておきます。
(赤字が前回からの変更箇所)































































アドレスデータ名備考
A000〜A1B82Dマップデータ21マス×21マス=441バイト
A200〜A7FF壁キャラクタデータ15パターン、1,536バイト
A800〜ABFFBGMデータ3曲?(ダンジョン、店屋、戦闘)1,024バイト
AC00〜AFFFシステムメッセージデータエリア1,024バイト
B000〜B7FFフォントキャラクタデータ256キャラ×縦8バイト=2,048バイト
B800〜BFFFフォントカラーデータ256キャラ×縦8バイト=2,048バイト
C000〜DFFFマシン語エリア8,192バイト
E000〜E0FF変数エリア256バイト
E100〜E9FFメッセージデータエリア2,304バイト
EA00〜EBB4アイテムデータエリア23種類×19バイト=437バイト
EC00〜EC4D魔法データエリア6種類×13バイト=78バイト
ED00〜EDAF敵データエリア8種類×22バイト=176バイト
EE00〜EEE7レベルアップデータエリア29レベル×8バイト=232バイト
EF00〜EFFFメニュー表示用ワークエリア256バイト


各種データエリアの領域は、まだ変動します。
ただ、&HE000~&HEFFFを超えることはないと思うので、暫定でこれで行きます。

さぁ、マシン語エリアが&HDFFFまでに収まるかが最大の課題です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月03日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第38回



4_19_1.png

3Dダンジョンロールプレイングゲーム 第38回目です。

今作で使用するスクリプト命令一覧です。
以前に掲載したものと、パラメータに若干の変更がありますので、ご了承願います。







































































































































命令意味記述動作
NXNeXtNX次のメッセージへ。
FNFlagNextFN,nフラグをn値に設定し、イベントを継続。
FEFlagEndFE,nフラグをn値に設定し、イベントを終了。
FSFlagSetFS,e,nイベントeのフラグをn値に設定する。
endイベント終了。
MSMessageSpeedメッセージ表示速度をn値に設定。(初期値:40)
YNYes/NoYN,y1,x1,m1,m2,m3座標(x1,y1)に「はい/いいえ」の選択ウィンドウを開く。「はい」が選択されたら、メッセージm1、「いいえ」が選択されたら、メッセージm2、キャンセルが選択されたら、メッセージm3へ。
WOWindowOpenWO,y1,x1,x2,y2,n座標(x1,y1)にメッセージ欄幅x2、高さy2のウィンドウを開く。nで枠線の有無設定。(0:有 1:無)
SWSelectWindowSW,y1,x1,x2,y2,n座標(x1,y1)にメッセージ欄幅x2、高さy2の選択ウィンドウを開く。選択肢数はn。幅は、選択肢最大文字数+2。選択肢数が高さを超えていると、選択肢上下スクロール。
JPJumPJP,nメッセージnへ。
CFCheckFlagCF,e,m0,m1,m2,m3,…イベントeのフラグが0ならメッセージm0、1ならメッセージm1、2ならメッセージm2...へ。
ESEventStartES,eイベントeを実行する。
SSSetSelectSS,eイベントeのフラグに選択ウィンドウで選択された項目数を設定する。
ISItemShopIS,y1,x1,n,i1,i2,i3…店屋。座標(x1,y1)にn種類のアイテムと金額の選択ウィンドウを開き、アイテムi1、i2、i3…を購入する。若しくは所持品と売却額の選択ウィンドウを開き、売却する。
CICheckItemCI,i,m1アイテムiを所持していなければ、メッセージm1へ。
GIGetItemGI,i,m1アイテムiを所持する。これ以上持てなければメッセージm1へ。
LILoseItemLI,iアイテムiを所持品から消失させる。所持していなければ何も起こらない。
ININnIN,g,m1宿屋、所持金額をg減らし、HP・MPを全回復させる。所持金額が足らなければメッセージm1へ。
BEBattleEnemyBE,e,m1敵eとイベント戦闘を開始する。負ければメッセージm1へ。
DWDefaultWindowDW標準(デフォルト)メッセージウィンドウを表示する。
GPGoldPrintGP所持金を表示する。

計21種類の命令でした。
必要かと思い、今作では使わない命令まで組んでしまいました。(SW、CF、ES、SS等)
2D「ドラクエ」タイプのロールプレイングゲームだと、これにイベント移動の命令などが必要になるので、30個強になります。
このスクリプトが出来てるから、比較的楽に作成できそう。

下表はメッセージ中に組み込む制御コードです。






















組込文字キャラクタコード動作
^&H5E改行。
_&H5F入力待ち。
|&H7Cメッセージ終了。(入力待ち無)

計3種類の制御コードでした。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月02日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第37回



3Dダンジョンロールプレイングゲーム 第37回目です。
今回はメモリ節約のために、プログラム中のシステムメッセージを一纏めにして別ファイルにします。

システムメッセージのあった領域分が空くので、その領域をプログラムで使おうという取り組みです。
意外とシステムメッセージデータは多く、それだけで最終的にはかなりの容量を使ってしまいます。
現状、メモリマップのBGMデータの後ろが空いているので、そこにシステムメッセージデータエリアを作り格納します。

あちこちに散らばっているシステムメッセージデータを集めて「3DRPGSYS.MES」ファイルを作成します。
11_2_1.png
11_2_2.png
11_2_3.png
11_2_4.png
結構なデータ量散らばっています。
これ、戦闘部分になると格段に増えますので、このタイミングに思い立って良かった…。

システムメッセージデータを削除した領域と領域の間に残ったプログラムを可能な限り片寄し、大きな領域が確保できました。
11_2_5.png
結構な領域が空きました。
イベント発生判定ロジックくらいなら、この領域内で収まりそう。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月01日

細かく修正L

4_19_1.png

Laboratory」のテーマメニューに新しく2テーマを追加。

ゲーム制作」の「3Dダンジョンロールプレイングゲーム」で前後回へのリンク切れが複数見付かったので修正。

ダウンロード」に追加で新規公開したゲームやツール、サンプルの記事へのリンク追加、「Laboratory」テーマメニューの公開分記事へのリンク追加。

それ以外は、画像の貼り直しや、記事の誤記の修正程度です。

2023年10月31日

Laboratory再々々々追加




6_2_1.png
MSX1でゲームを製作するにあたり、一番の基本だけど、とても大切なことを忘れていました。
SCREEN1.5の設定方法です。
SCREEN1.5はこの機能が有ると無いとで、ゲームの出来栄えに雲泥の差が出ます。
当たり前すぎて、MSX1の標準機能と思ってしまいます。
あと、MSX2でSCREEN1.5を使ってシューティングゲームを作りたい時に必須のSPRITEモード2の設定方法です。










テーマ
26SCREEN1.5を使いたい

標準のSCREEN1では、画面をきれいにするにも限界がありますが、SCREEN1.5を使うことによって、MSX1のグラフィック機能のすべてが使えるようになると言っても過言ではありません。







27SCREEN1.5でSPRITEモード2を使いたい

MSX2の機能ですがSPRITEモード2が使えるようになれば、2枚重ね3色や、横ライン毎1色、水平方向同時表示8枚など、SPRITE機能が強化されます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年10月30日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第36回



3Dダンジョンロールプレイングゲーム 第36回目です。
今回は、プログラム中の変数の書換えを行います。

簡単なBASICプログラム作って、変数部分(&HD000~&HD0FF)を検索してみます。
今回、変数に&HD000台を使っているので、PEEKで「&HD0」を探せばいいです。
「&HD0」はマシン語コード「RET NC」で、私は全く使わない命令ですので、見付かればまず変数と思ってよい。(あとは、「JP」、「JR」の飛び先指定くらいですかね…。)
まぁ、それがせめてもの救いですね…。

11_1_1.png
こんなにあった…。
37行×6個で222箇所…。

あと、「&HD1」(メッセージデータ開始アドレス)と、「&HDF」(選択ウィンドウ選択肢格納ワーク)も併せて検索します。
11_1_2.png
こちらは「&HD1」、困ったことに「&HD1」は「POP HL」でもあるので、結構ありました…。
ほとんどが「POP HL」だと思います。
仕訳が大変そうです。

11_1_3.png
こちらは「&HDF」、こちらもマシン語コード「RST 18H」で私は使いません。
なのでほぼ変数だと思われます。

まぁ、結構な数ありますね…。
ボチボチ変換かけて行くことにします。
一括変換機能が欲しい…。
これもハンドアセンブルじゃなく、アセンブラ言語なら簡単だったのかな?
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月29日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第35回



3Dダンジョンロールプレイングゲーム 第35回目です。

…あぁ…。
…あぁ、遂にマシン語部が&HCFFFに達してしまいました!
前回、スクリプト命令「BE」で掲載されたプログラムで気付かれた方もいると思いますが、遂にこの時が来たという感じですね。
10_29_1.png

うーん、戦闘部分だけプログラムを分けるか、変数・データエリアをズラすかで悩んでいたのですが、まだ、システムメニューも、イベント発生ロジックも組めていない…。
と言う訳で、必然的に変数・データエリアをズラす方になります。

まぁ、今回のメッセージ表示ルーチンへの「|」制御コード追加など、プログラムの最初の方のルーチンのバグフィックスで、プログラムの最後の方に修正分を追加したところがいくつかあるので、まぁ、そうなるだろうなと薄々感じてはいましたので、それほどショックは大きくない。
もし、戦闘部分だけプログラムを分ける方にしても、膨大な作業量であることに変わりないですしね。

と、言う訳で変数群及び各種データエリアを&HD000→&HE000にズラします。
その分をマシン語エリアに充てるので、マシン語エリアが倍になります。
作業的には、なんと、プログラム中の変数はすべて書き換えです。
各種データは、登録用のBASICプログラムで保存先を変更するだけで済みますが、変数はそうはいかない…。
一体何カ所の変更が必要なのか…。
怖いです…。

「最初の見込みが甘いとこうなるよ」と言う反面教師にしてください…。
しかし、&HC000~&HCFFFは4kバイト…。
あっという間に埋まりましたね。
MSXのメモリ、本当に少ないんだなぁと、改めて感じました。
これ以上の拡張は難しいので、プログラムなるべく節約していきます。

うーん、プログラム書き換えに結構時間かかるかも…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月28日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第34回



3Dダンジョンロールプレイングゲーム 第34回目です。
さて、今回も残りのスクリプト命令「BE」を組んでいきます。

ただ、メッセージデータを見て気になることがひとつ…。
「WO,16,0,30,6,0」が多い…。
10_25_1.png
宿屋4箇所
10_26_2.png
宝箱2箇所
10_27_3.png
ゲート3箇所

デフォルトのメッセージウィンドウを表示することで、
・イベント終了時に、メッセージを消す
・選択メニューを開いた際の、メインウィンドウ再表示
が目的ですが、あまりにも多すぎる。
1箇所につき、13バイトも取ってしまいます。

10_28_1.png
そこで、新たに「DW」(Default Window)命令を作って、13バイト→2バイトに縮めて、1箇所当たり11バイトのデータ圧縮を図ります。
「DW」命令プログラムサイズが32バイトなので、3箇所直せば元が取れます。

10_28_3.png
10_28_4.png
10_28_5.png
ああ、スッキリしました。
他のイベントも併せ、まだ途中なのに既に14箇所あったので計154バイト圧縮、154-32=122バイトの節約になりました。
意外とメリット大きい!
まだまだイベント組むので、「DW」命令どんどん使うと思います。
最終的に何バイトの節約になるのか楽しみです。

次に「BE」ですが、これは戦闘ルーチンが完成後、それと連動させますので今は呼び出し口だけ作成しておきます。
10_28_2.png

これで、今作で予定していたスクリプト命令は、全て組み込み完了しました。
次回は、今回組み込んだスクリプト命令の使い方やパラメータをまとめます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月27日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第33回



3Dダンジョンロールプレイングゲーム 第33回目です。
さて、今回も残りのスクリプトの命令「CI」、「LI」を組んでいきます。

「CI」(Check Item)は所持アイテムをチェックして、指定アイテムの有無に応じメッセージを変更します。
例えば、持っていなければ「もっていません。」メッセージ表示。
持っていれば「LI」命令実行。と言った使い方をします。10_27_1.png


「LI」は単純に所持アイテムからアイテムを消失させます。
そのアイテムを持っていなくても特に何も起こらないので、確実に消したい時は「CI」命令と併用してください。
10_27_2.png

共に、アイテムを使う処理に使います。
ドアの鍵開けや、アイテムを所持している事でイベントが発生など。
10_27_3.png


次回、残りのスクリプトを全部組み込んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード