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

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雑記

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月 >>
      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コード