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

2023年11月14日

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



3Dダンジョンロールプレイングゲーム 第44回目です。
さて、不具合もとりあえず解消したので製作再開します。
ただ、根本的な原因が解消できていないので、いつ再現するかとビクビクしています…。

今回はイベントの発生方法について説明します。

イベントの発生と一言で言っても、大きく2種類あります。

1つ目は「城」や、「街」、「落とし穴」や、「特定の場所」等、その座標に乗った時に発動する「設置型」。







11_10_1.png
←この状態から、上に移動して家の上に乗るとイベントが発生11_10_2.png
街のマップへ移動するイベントが発生

2つ目は「町人」や「ドア」、「宝箱」等、目の前にあるイベントに接触した時に発動する「接触型」。







11_10_3.png
←この状態から、上の障害物に接触(上に移動)するとイベントが発生11_10_3.png
障害物なので移動はできませんが、木から何か落ちてくるなどのイベントを発生

それ以外にも、地形イベント、マップ移動時発生イベント、アイテム使用時発生イベントなどあります。
因みに、
・地形イベントは、「毒沼」等プレイヤーがいる地形により発生するイベントです。
・マップ移動時発生イベントは、マップ移動を起点として発生するイベントです。
・アイテム使用時発生イベントは、アイテム使用を起点とするイベントです。

今作では関係ありませんが、結構大変なのが、2D「ドラクエ」タイプの移動する町人。
町人が移動している時に接触した時の判定が結構面倒。
まぁ、説明する機会があれば、その時にでも。

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

2023年11月13日

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



4_19_1.png

3Dダンジョンロールプレイングゲーム第43回目です。
メモリマップ改訂したので掲載しておきます。
(赤字が前回からの変更箇所)
各種データエリアを&HE800→&H9B00へ。
マシン語エリアを少し縮小し&HC000~&HDFFF→&HD9FFに。
メッセージエリアを&HE100→&HDA00へ。
今のところ、変数エリア(&HE000~&HE100)は壊れないようです。
































































アドレスデータ名備考
9B00〜9CB4アイテムデータエリア23種類×19バイト=437バイト
9D00〜9D4D魔法データエリア6種類×13バイト=78バイト
9E00〜9EAF敵データエリア8種類×22バイト=176バイト
9F00〜9FE7レベルアップデータエリア29レベル×8バイト=232バイト
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〜D9FFマシン語エリア6,655バイト
DA00〜DFFFメッセージデータエリア1,536バイト
E000〜E0FF変数エリア256バイト
EF00〜EFFFメニュー表示用ワークエリア256バイト

本気でカツカツですね!

折角広げたマシン語エリアが、また狭くなったのが痛いですね…。
メッセージエリアも文字列はちゃんと保存されるのに、制御bフ「0」、「1」、「2」が壊れてしまい、発生して欲しいイベントと、全く異なるイベントが発生してしまったり、同じ接触イベントなのに1回目と2回目で違うイベントが発生したりする。
壊れる領域と壊れない領域の差って何なんだろう…?
因みにこれも&HE100→&HDA00へ移動したら直りました…。

また、&HE500付近を書き換えるとフロッピーディスクが壊れるようです。

DISK-BASICの詳細記事何処かにないかなぁ…。
バカなのでテクハンだけじゃ解らないです…。

posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月12日

500PV!

11_19_1.png

何日だったか忘れましたが、500PV超えました!
突然この日だけ、ポコンと増えたのでどなたかが記事最初から流し読みでもしてくれたのかな?等と想像します。

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



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

ネット上のMSXのフロッピーディスク関連についていろいろ調べましたが、解りませんでした。
そもそも、フロッピーディスク関連の記事が少ない。

因みに仮データ、保存先アドレスを元に戻して(&HE800→&HE000)登録すると、ちゃんと登録されました!
11_13_3.png

そういえば、DISK-BASICだとデバイス用のメモリを使うから、その分使えるメモリが少なくなると覚えています。

11_13_1.png
MSX-BASIC時のフリーメモリ

11_13_2.png
DISK-BASIC時のフリーメモリ 5kバイトも減ってる…!

でも、&HE800当たりのメモリを使うんだとしても、アイテム名だけ正常に保存されるのはなぜ?
全部壊れていれば、悩まずに済んだのに…。
11_12_2.png
以前書いた通り、私にフロッピーディスク関連の知識は、全くありません。(2023年10月10日記事参照「マシン語からのファイル制御」)

このまま、調査続けて無駄に時間を費やすよりも、保存先アドレス変更した方が早いな…。
&HE000台、どこまで正常に使えるんだろう…。
いっそのこと、大きくBASIC部が増えることはないだろうから、各種データを&H9800に移動させるか…。
BASIC部は、あと戦闘開始(敵データの読込と、戦闘ロジック呼び出し)、死亡処理、エンディングスタートくらいかな。
完成時には初期値書き込み部分は削除されるから、容量は減ると思われます。

とりあえず、解決に時間掛かりそうなので各種データ&H9800に移動の方向で進めます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月11日

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



3Dダンジョンロールプレイングゲーム 第41.5回目です。
前回の不具合の続きです。

原因不明なので、とりあえずデータが正しく登録されているか確認する事に。
11_12_7.png
保存された「3DRPG.ITM」をBLOADし、メモリに書き込まれた値を確認するための簡単なBASICプログラムを組んで検証してみました。

11_12_2.png
アイテム名の後ろ2バイト(0〜65535)が金額なのですが、2バイト目以降全て「0」になってる!
(でも、「エリクサー」の&HFFはちゃんと残ってる!?)
うーん、結果「3DRPG.ITM」は壊れてる…。

では、どこで壊れたのか?
「ITMSET.BAS」起動後の時点ではどうか?
結果は同じ、BSAVEした後のメモリの時点でおかしい…。

えー…、なんで?
何度かプログラムを変更して試行錯誤を繰り返しましたが、結果は同じ。
まぁ、そもそもプログラムは変更していないから、動作は正常なはず…。

念のためにと、メモリに書き込んだ直後、BSAVE前でプログラムを終了し、その時点のメモリを確認する事に。
11_12_3.png
実行。

11_12_4.png
あ、正常だ。
当然ですが、メモリ内の表示プログラムは同じものを使っています。

BSAVE実行すると、アイテム名以降のデータが壊れる事が分かりました。
BSAVEが悪さしていることは分かりましたが、アイテム名部分はちゃんと保存されて、それ以降だけ壊れる意味が分からない…。
そんな事ある?

まさか、こんなことで躓くとは…。
どなたか知識ある方、ご教授ください!!
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月10日

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



3Dダンジョンロールプレイングゲーム 第41回目です。
原因不明の問題が発生しました!
他カテゴリの記事で時間稼いで、少しでも制作先に進めようと画策していたのですが、完全に予定外です…。

プログラムの改修が完了したので、新たなメモリマップに則って各種(仮)データの登録を行い、登録出来たか確認のためにメインプログラム(3DRPG.BAS)を起動したところ、「File Not Found in 740」と出ました!?
「は?」と思い、FILESを実行したところ、「いかぎ」と言うファイルが作成されており、「FILE1.SAV」と「3DRPG2.FNT」がなくなっている事が判明。
11_12_5.png
「いかぎ」…、アイテムデータに(仮)登録した「あおいかぎ」の事か!?

ファイルが壊れたので、慌てて取ってあったイメージディスクのバックアップから戻して、再び(仮)データの登録を行ったが、現象は再現せず…。

「何だったんだろう?」と、思いながらもテストプレイを続けていると、「あれ!?」。
「店屋のアイテムの金額がおかしい!?」事に今気づいた!
11_12_6.png

慌てて、アイテムデータ登録用のBASICプログラム「ITMSET.BAS」を確認。
11_12_1.png
特に問題なし。
保存先のアドレスくらいしか変更していません。(&HE000→&HE800)
そもそも、プログラムは変更していないから、正常に動作することは確認済み。
んー?
何がおかしいんだろう?

次から次へと問題が発生するなぁ…。
ブログでやってなければ、既に断念してたかも…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年11月09日

Laboratoryテーマ27「SCREEN1.5でSPRITEモード2を使いたい」



11_9_2.png
水平方向にSPRITEを16枚並べた時、8枚まで表示される。
今回は、Laboratoryテーマ27「SCREEN1.5でSPRITEモード2を使いたい」です。
(MSX2以降の機能となります。)
SCREEN1.5は前回書いた通り、FONTが非常に扱い易いモードです。
このモードを使ってシューティングゲームなんかを作りたい!
しかしながらMSX1の機能であり、スプライトの機能が貧弱です。
そこで、SCREEN1.5で、SPRITEモード2が扱えないか?
実は扱えます!
代表作がコナミの「スペースマンボウ」ですね。(2023年10月2日記事参照「MSX語り」)
やり方ですが、システムワークとVDPの設定で行います。

詳細を説明すると非常に長く、専門的になってしまうので、今回は必要な設定のみ記載します。(簡潔に説明しきるスキルがない…。)
詳細は、「MSX2 TEchnical Hand Book」等で調べてみて下さい。
























ラベル名アドレス初期値内容設定値
T32ATR&HF3C3・F3C4&H1B00SCREEN1スプライトアトリビュート・テーブル&H1E00
GRPATR&HF3CD・F3CE&H1B00SCREEN2スプライトアトリビュート・テーブル&H1E00





























名称対応するVDP機能設定値
R#0VDP(0)モードレジスタ#0&H4
R#5VDP(5)スプライトアトリビュートテーブル(LOW)&H3F
R#8VDP(9)モードレジスタ#2第3ビットを「1」

モードレジスタ#0(R#0)













0DGIE2IE1M5M4M30

DG:1のとき、カラーバスを入力モードにして、データをVRAMに取り込む
(デジタイズ機能を持ったMSX2でのみ使用可能)
IE2:Interrupt Enable2(1のとき、ライトペンによる割り込みを可能にする)
IE1:Interrupt Enable1(1のとき、水平帰線による割り込みを可能にする)
M5:表示モードの設定に使用する
M4:表示モードの設定に使用する
M3:表示モードの設定に使用する
(IE2はMSXでは使用しません。常に「0」)
(R#1のM1、M2と、R#0のM3~M5が「00010」でグラフィックモード3(SCREEN4)となります。
モードレジスタ#1(R#1)













0BLIE0M1M20SIMAG

BL:1=画面表示、0=画面非表示
IE0:Interrupt Enable0(1のとき、垂直帰線による割り込みを可能にする)
M1:表示モードの設定に使用する
M2:表示モードの設定に使用する
SI:スプライトのサイズ 1=16×16、0=8×8
MAG:スプライトの拡大 1=拡大する、0=拡大しない


スプライトアトリビュートテーブル(LOW)(R#5)













A14A13A12A11A10A911

(A9は必ず「1」に設定)

モードレジスタ#2(R#2)













MSLPTPCBVR0SPDBW


MS:1=マウスを使用する(カラーバスは入力モード)、0=マウスを使用しない(カラーバスは出力モード)
LP:1=ライトペンを使用する、0=ライトペンを使用しない
TP:カラーコード0の色をカラーパレットの色にする
CB:1=カラーバスを入力モードにする、0=カラーバスを出力モードにする
VR:VRAMの種類を選択する(1=64K×1bitまたは64K×4bit、0=16K×1bitまたは16K×4bit)
SPD:1=スプライト非表示、0=スプライト表示
BW:1=白黒32階調、0=カラー(Composit encoder にのみ有効)
(MS、LP、BWはMSXでは使用しません。常に「0」)

因みに「SPRITE EDITOR」はSPRITEモード2に対応しています。

BASICのサンプルプログラムです。
11_9_1.png
90行と100行でSPRITEモード2に設定できます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年11月08日

Laboratoryテーマ26「SCREEN1.5を使いたい」



今回は、Laboratoryテーマ26「SCREEN1.5を使いたい」です。
MSXのSCREEN1は、8FONT毎に前景色と背景色で2色しか扱えないという、独特な仕様です。
しかし、SCREEN1はFONTがもの凄く扱いやすい…。
せめて、SCREEN2のように横8ドット毎2色扱えればなぁ…。
と、言う要望をかなえられるのがSCREEN1.5です。

やり方は簡単、「BIOS」の「SETGRP」(&H007E)を使って内部処理(VDP)だけをSCREEN2にします。















ラベル名アドレス変化するレジスタ使い方
SETGRP&H007EすべてVDP のみを GRAPHIC2 モードにする


因みに「FONT EDITOR」も、SCREEN1.5に対応しています。

BASICサンプルプログラムです。
11_8_1.png
80行のみで、SCREEN1.5にする事が出来ます。

では、次回はLaboratoryテーマ27「SCREEN1.5でSPRITEモード2を使いたい」です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年11月07日

PVについて

11_7_1.png11_7_2.png

最近の当ブログのPV数ですが、200を超えています。
時々300を超える事もあります。

自分がページ更新の確認にカウントする分が10位あったとしても、結構なPVではないでしょうか?
でも、コメントが貰えません。
誰が来ているんでしょう?
MSXユーザーとは思いますが、反応がないので分かりません。
PV200あって誰も来てないって事はないですよね?
ロボット巡回だけとか…。

本気でX(旧ツイッター)進出しようかしら。
でも進出したら、ブログ更新滞りそう…。
うーん、悩む…。

2023年11月06日

「ゲーム制作」40回突破!

4_19_1.png

「ゲーム制作」も、ついに40回を迎えました。
まさかこんなに長丁場になるとは思ってもいませんでした…。

制作よりも不具合対応の方が時間がかかっている気がする。
EDITORのマウスが使えないから始まり、メモリ不足対応など…。

まだまだこれから「イベント発生」、「システムメニュー」、そして最大の難関「戦闘」が残っています。
本業が忙しく相変わらず開発速度は亀の歩みとなりますが、完成まで頑張るのでお付き合いください。

まぁ、MSXのプログラミングを思い出す第一作目として、題材にロールプレイングゲーム選択した時点で、間違いだったような…。
プログラミングの勘を取り戻すだけなら、サクッとアクションゲームでも作っておけばよかったんですよね。
なんでロールプレイングゲームにするかな?

でもまぁ、おかげで勘を取り戻すどころか、進化している気さえします。
昔は結構悩んだ気のするロジックも、なんだかサクサク組めている気がします。

しかも、以前にロールプレイングゲーム作ってた時は、スクリプトもここまで完成度の高い物じゃなかった気がします。
このスクリプトを使えば、アドベンチャーゲームと、ロールプレイングゲーム(命令の追加は必要ですが)は比較的簡単に制作できると思います。
これは、Windowsで制作していたツールで、色々鍛えられたおかげでもあります。

「努力は裏切らない」と言う言葉をなんか思い出しました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記
検索
<< 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コード