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

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) | 開発

2023年10月26日

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



3Dダンジョンロールプレイングゲーム 第32回目です。
さて、今回は残りのスクリプトの命令「GI」を組んでいきます。
「GI」はGet Itemの略で、アイテム取得命令です。

という事で、宝箱のイベントに最適です。
10_26_2.png

スクリプトの「GI」命令自体は所持品を増やすだけです。
但し、持ち物がいっぱいの時は上メッセージデータの例で、メッセージ6「もちものが、いっぱいだ。」を表示します。
10_26_1.png

次回も、残りのスクリプトを組み込んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月25日

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



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

さて、今回は「IN」を組んでいきます。
前回フローにした通り「宿屋」は、ほぼメッセージデータで賄えます。
簡単です。
10_25_1.png

次に、スクリプトの命令「IN」を組んでいきます。
@所持金が足らなければ、飛び先へ。
A所持金を減らす。
B体力・魔力回復。
10_25_2.png

C画面暗転
10_25_3.png

次回からは、残りのスクリプトを組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月24日

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



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

さて、前回のメインのメッセージウィンドウが所持金表示ウィンドウになってしまう不具合を解消するために、メッセージデータの組み込み制御コードに「|」(&H7C)を追加しました。
10_24_1.png
680〜700行にあった「イベントアドレス検索」と、「メッセージアドレス検索」をサブルーチン化し外へ出す事で、この領域を確保し組み込み制御コード「|」(&H7C)処理追加。
10_24_2.png
外へ出した「イベントアドレス検索」と、「メッセージアドレス検索」サブルーチン

この制御コードは、メッセージを表示後、キー入力待ちせず、すぐにスクリプトを実行するコマンドです。
メッセージデータを「|」だけにすると、メッセージ表示なしでスクリプトを実行します。
10_24_3.png

これで、新たにメッセージウィンドウを開き直してから、メッセージ表示することで不具合を解消できました。

うーん、「YN」命令でメインウィンドウのサイズを記録しなければ済むかとも思ったのですが、今度は別の場所に不具合出そうだったので、今回はこれでいきます。
検証に充てている時間もそう多く取れないし…。

大きなバグが出たら開発諦めそう…。

次回からは、「IN」命令を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月23日

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



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

さて、「INn」を組む予定だったのですが、フローに抜けを発見。
所持金が足りない時の「おかねがたりません。」です。

また、お金を使うので、所持金表示が必要です。
スクリプトで所持金が表示できないので、急遽、新命令「GP」(Gold Print)を作成しました。
宿屋に入った時に所持金を表示します。
10_23_2.png

フロー書き直しました。
10_23_1.png

さて、ここで問題が発生。
所持金表示した直後に「YN」命令を実行すると、メインのメッセージウィンドウが所持金表示ウィンドウになってしまう事が判明。
それ以降のメッセージを所持金表示ウィンドウに表示しようとしておかしくなる不具合が発生してしまいました。
10_23_3.png

不具合の修正も含め、どの修正方法が最適か現在検討中。
posted by J-JSOFT at 17:06 | Comment(0) | TrackBack(0) | 開発

2023年10月19日

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



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

さて、今回はスクリプトの命令「IN」を組んでいきます。
「INn」で宿屋となります。

前回の「IS」に比べれば、とんでもなく簡単です。
前回同様フローを書いてみました。
10_13_1.png
ほぼメッセージデータで組めます。
「IN」のスクリプト処理は、所持金減らして、体力・魔力を回復して、画面の暗転処理するだけです。
状態異常の毒はアイテムか魔法でないと消せません。

画面の暗転処理は、ちょっと凝ってみます。
上下から暗転するパターンで、偶数列は上から、奇数列は下から1FONT単位で黒く画面を消していくことにします。

次回は、実際に「IN」を組み込んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年10月18日

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



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

さて、今回もスクリプトの命令「IS」を組んでいきます。
前回「買い」を組みましたので、「売り」を組んでいきます。

「買い」同様、いくつかのサブルーチンが必要です。
@所持アイテムbゥら、そのアイテムデータの先頭アドレスを検索するサブルーチン。
「買い」の@と同じ。

A所持アイテム格納エリア(16バイト)が空かチェックするルーチン。(空ならエラー。)
10_18_7.png
コメントのKWは「KEY WAIT」、GPは「GOLD PRINT」のサブルーチンです。

B選択された所持アイテムの格納エリアのアドレスを検索するサブルーチン。
10_18_8.png
今作は所持アイテム数が16個と少ないので、並び替えしない。
そのため、所持アイテム格納エリアの空きを飛ばして検索する必要有り。
どういう事か具体的に説明します。
10_18_13.png
格納エリアに上図のように入っていたとして、3個目のアイテム20を使うとします。
10_18_14.png
すると、3個目の格納エリアが空きます。
この時、アイテム22は、アイテムとしては3個目になりますが、格納エリアは4個目となります。
並び替えしないと、格納エリアの空きを飛ばして個数カウントしないと、正常なアイテムを選べません。
因みに、この時アイテム21を手に入れると、格納エリアの一番若い空き場所である3個目に格納されます。
10_18_15.png

Cアイテム名と売値を一緒に表示するサブルーチン。
10_18_9.png
コメントのISは「ITEM SEARCH」、VPは「VARIABLE PRINT」です。
売値は買値の半額(/2)となります。

D所持金額を表示するサブルーチン。
「買い」のBと同じ。

E標準メッセージウィンドウを表示し、メッセージを表示するサブルーチン。(標準サブルーチンとして利用。)
「買い」のCと同じ。

F重要アイテム、若しくは装備中アイテムかチェックするルーチン。(重要アイテム、装備中アイテムならエラー。)
10_18_10.png
アイテムbフ8ビット中先頭1ビット目を重要品フラグ、先頭から2ビット目を装備中フラグとします。
10_18_12.png
どちらかでも立っていれば、売れない(捨てられない)事にします。
アイテム種類は6ビットなので、最大31種類作成可能。(今作は23種類。)
アイテム種類を32種類以上作りたければ、アイテム格納ワークと同数のアイテム情報ワークを用意します。
これがあれば、下6ビットで同じアイテムを複数持っている時に、1つの格納エリアで31個まで持たせるといった事が出来ます。
10_18_16.png


G所持品格納エリアからアイテムb削除し、所持金を増やすルーチン。
10_18_11.png
コメントのPSはB「POSSESSION SEARCH」、ISは「ITEM SEARCH」、KWは「KEY WAIT」です。

メッセージです。
10_18_1.png
10_18_2.png
10_18_3.png
10_18_4.png
10_18_5.png
10_18_6.png

次回は、「IN」を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
検索
<< 2024年12月 >>
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 31        
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード