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

2023年08月31日

Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」そのB




6_2_1.png
さて、今回はLaboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」そのBです。
今回公開したメッセージウィンドウは、メッセージを表示するだけでなく、スクリプトを組み込むことが可能です。
スクリプトに命令を追加することで、複雑なイベント管理が可能となります。
今組み込んであるのは、下表の3命令。



























命令意味記述動作
NXNeXtNX次のメッセージへ
FEFlgsetEndFE,nフラグをn値に設定し、イベントを終了
endイベント終了

追加で組み込む予定なのは、下表の命令。











































































命令意味記述動作
YNYes/NoYN,x1,y1,m1,m2,m3座標(x1,y1)に「はい/いいえ」の選択ウィンドウを開く。「はい」が選択されたら、メッセージm1、「いいえ」が選択されたら、メッセージm2、キャンセルが選択されたら、メッセージm3へ
SWSelectWindowSW,x1,y1,x2,y2,n座標(x1,y1)に幅x2、高さy2の選択ウィンドウを開く。選択肢数はn
WOWindowOpenWO,x1,y1,x2,y2,l座標(x1,y1)に幅x2、高さy2のウィンドウを開く。lで枠線の有無設定(0:有 1:無)
MSMessageSpeedMS,nメッセージ表示速度をnに設定
JPJumPJP,nメッセージnへ
FSFlagSetFS,m1,e1,nマップm1のイベントe1のフラグをn値に設定
ESEventStartES,e1イベントe1を実行する
CFCheckFlagCF,m1,e1,m0,m1,m2,m3,…マップm1のイベントe1のフラグが0ならメッセージm0、1ならメッセージm1、2ならメッセージm2...へ
CSCheckSelectCS,m0,m1,m2,m3,…SWで選ばれた項目番号が、キャンセルならメッセージm0、1ならメッセージm1、2ならメッセージm2...へ
ININnIN,n,m1宿屋、所持金額から人数×nを減らし、HP・MPを全回復させる。所持金額が足りなければメッセージm1へ
ISItemShopIS,n,i1,i2,i3…,m1店屋、n種類のアイテムを購入、所持アイテムの売却する。店を出た時はメッセージm1へ

とりあえず今回は必要最低限、こんなところです。
ロールプレイングゲームでは、キャラクタ移動命令等も必要になるので、あまり多くの命令を組み込むと、メモリが全然足りません…。
私がMSXでのロールプレイングゲーム製作を断念し、Windowsへ製作移行した理由の大半はそれです。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年08月30日

Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」そのA




さて、今回はLaboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」そのAです。
その@で公開したメッセージウィンドウに表示するメッセージデータを、レイアウトに合わせて作成するツールを公開します。

MESSET.BAS【ダウンロード

使い方はサンプルに倣って、DATA文にメッセージを入力し「RUN」実行するだけです。
8_29_1.png

データレイアウトは下記となります。

【 レイアウト 】
イベント開始(0),メッセージ開始(1),メッセージ,スクリプト開始(2)(,スクリプト),1,メッセージ,2(,スクリプト),0,1,メッセージ,2(,スクリプト),1,メッセージ,2(,スクリプト),…,2(,スクリプト),END



















0イベントデータ開始コード
1メッセージデータ開始コード
2スクリプト開始コード
ENDデータ終了



















イベント@0,1,"おはよう。",2,"NX",1,"きのうはよくねむれた?",2
イベントA0,1,"やあ!",2,"NX",1,"きょうはねぶそくだよ。",2
イベントB0,1,"・・・",2
イベントC0,1,"ちょっとはなしかけないで・・・。",2

スクリプトは、次回説明します。
サンプルの中にある「NX」がそれです。
因みに「NX」は、「入力待ちして、メッセージエリアをクリア後、次のメッセージを表示」の命令です。
スクリプトが不要でしたら、記載の必要はありません。
記載がなければ、「ED」(EnD)命令が実行されます。
「ED」は、「入力待ちして、イベントを終了」の命令です。

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

















組込文字キャラクタコード動作
^&H5E改行
_&H5F入力待ち
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年08月29日

Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@




8_28_1.png

さて、今回はLaboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@です。
「ゲーム製作」カテゴリで制作中の3Dダンジョンロールプレイングゲームで利用する、ドラクエ風メッセージウィンドウの実装準備をします。

実はちょっと自信作です。
メッセージ本文中に「^」(キャラクタコード&H5E)で改行、「_」(同&H5F)で入力待ちとなります。
ウィンドウ枠の右端までメッセージが行くと、自動で改行されます。
また、ウィンドウ枠下端まで行くと、メッセージが上にスクロールします。
詳しくはサンプルプログラムで機能デモをしていますのでご覧ください。

メッセージデータは、レイアウト通りに登録しないといけないので、専用の「メッセージエディタ」を後日公開しますね。

「MWOPSMPL.BAS」【ダウンロード

メッセージウィンドウの機能を紹介するデモが実行されます。
説明しだすと切りがないので、BASICサンプルと、下部変数表で色々試してみて下さい。
8_28_2.png







































D006表示先Y座標
D007表示先X座標
D008表示幅
D009表示高さ
D00Eジョイスティック
D010〜11イベント1フラグアドレス(&HD042)
D012メッセージ表示速度
D014メッセージ枠無しフラグ(0:有 1:無)
D042イベント1フラグ

マシン語のサンプルです。
起動すると、MWOPSMPL.BINを作成します。

「MWOPSMPL.BAS」【ダウンロード

8_28_3.png
かなり長いサンプルとなっています。
「選択肢」のサンプルはもっと凄いことになります。
因みに1260行から1380行は、独自スクリプトを組み込む予定です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年08月28日

開発

4_19_1.png
以前にも書きましたが、本業が忙しく、難易度の高いロジックを含むサブルーチンの開発が、なかなかにキツイ…。
簡単なロジックなら、サクサク作れるので苦ではありませんが、現在制作中の3Dダンジョンロールプレイングゲームでのドラクエ風メッセージ表示や、メニュー選択(特にこっち)はなかなかなロジックです。
昔にもロールプレイングゲームを作っていたので、それを改良して…。と、思っていたのが大間違い。
やはり、サブルーチンとして公開するのと、完全組み込み型のプログラムでは難易度が違います。

まず、見易くしなくてはいけない。
これは言わずもがな、コメント細かく入れたりします。
次に、ある程度纏めなくてはいけない。
これが結構大変、昔なら以前書いたようにバグがあれば適当にバグを改訂したロジックを他のアドレスに組んで、バグのある部分からそこへ飛ばして終わり。だったのですが、公開するとなるとあちこちに飛ばす訳にはいきません。
第一、見難くなります。
バグが見つかると、そのルーチン内で直して、飛び先全部見直して…と、非常に大変です。(ハンドアセンブルの宿命…。)
また、昔はちょっと異なるだけのロジックがあった時、大きなロジックでも別々に組み込んでいました。
当然、容量の無駄です。
そこも公開にあたり、共通部分をサブルーチン化するなどして纏めています。
うーん、これも地味に大変です…。

ですので、昔のロジックはほぼ使えないので、一から組んでる状態です。

当然1日で開発できる訳ないので、「MSX回顧録」などで時間潰して、その間に開発を進めている状態です。
睡眠時間削って…。
そろそろ毎日更新は難しいかな…。
まぁ、「MSX回顧録」の溜まってる記事がなくなったら必然的にそうなりますね…。
でも、自分の性格上、毎日更新止めてしまうと、更新間隔がどんどん広がりそうで怖い…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年08月27日

作品MPAC-MAN

次はこれ。
おなじみレトロゲーム、ナムコの「PAC-MAN」です。
g32_t.png
■主な新テクニック
 ・SPRITEが横に4枚以上並んだ時の点滅処理
 ・豊富なアニメーション
 ・敵移動アルゴリズム実装

本物のMSX版PAC-MANをプレイしていた時、友人が「お前ならもっときれいに作れるんじゃないの?」と言われたので、俄然やる気になって作りました。(2023年7月18日記事参照「制作が簡単なゲームジャンル(私見)」)
キャラクタはファミコン版のPAC-MANを参考にしました。
自己採点で、音関係以外は100点です。
(音関係は10点です…。)
こちらも目標とするため、エンディングを付けています。
g32_1.png































タイトル『 PAC-MAN 』作品13
内容モンスターを避けて、ドットを食べ尽くして下さい。
操作方法

操作説明は不要かとは思いますが、一応

起動し、しばらくしてタイトルが表示されたら、「スペース」バー若しくはAボタンでゲーム開始

開始させたコントローラーで操作します

「↑」「→」「↓」「←」カーソル若しくは十字キーで、自機移動

パワーアップエサを食べるとモンスターが一定時間いじけモンスターになるので、やっつけます
対応機種MSX1、MSX2、MSX2+製作年1989年
ダウンロードリンク先へジャンルアクション
ライセンスPAC-MANはバンダイナムコエンターテインメントの登録商標です。






※ゲーム内のキャラクタ、音楽は制作当時の物です。

公開前提に製作していないため、雑誌等から流用している物もあるかも知れませんので、著作権侵害の恐れのあるものは、ご連絡をお願いします。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年08月26日

居候生活

4_19_1.png
専門学校に高校から一緒に行った友人が、学校の近くで一人暮らしを始めました。
当然、みんなの溜まり場になります。
学校の帰りに寄って、毎日ゲームなどしてバカ騒ぎしてました。

かくいう私も、ほぼ居候状態で、家に帰らない日もしばしば。

当然毎日居座ってると、友人の友人とも徐々に顔見知りになって、仲良くなってと楽しい学生生活でした。
最初2人、しばらくし5人、そのあと6人と増えていきました。
6畳ワンルームなので、6人勢揃いすると、狭い狭い。
ゲームしたりして座っている時はいいが、寝る時は一人玄関前でした。
常時、居候してたのは私だけ。
後は、数日単位で入れ替わっていました。

その内、高校の友人が私がゲーム開発していることを他のメンバーに暴露。
というか、友人宅で開発したいからバラしました。
高校の時に移植した「テトリス」や「平安京エイリアン」を見せると、過去ゲームの移植依頼が殺到。
この頃、自作ゲームのラインナップに移植ゲームが多いのはそういう訳です。
ゲーム開発が始まると、MSXを私が占有してしまうので、他の皆はゲーム専用機。
当時はNECのPC-EngineのCD-ROM²が流行ってました。
友人宅には当然というか、なぜかテレビが2台ありました。

後はそれぞれのメンバーの家を転々と訪問し、団体で数日滞在を繰り返しました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年08月25日

バイナリーエディタ

昔制作したゲームの公開にあたり、「SOLGER」以降「.BIN」ファイルのBASICソースがない。
これまでに公開した分も、エンディングのクレジット、実名で載ってるので全部「J-J SOFT」に書き換えてから公開しています。
しかし、ソースがなければ書き換えられない。
と、なるとバイナリエディタか、アセンブラ(逆アセンブル)使うしかないね。
と言う訳で、適当に探しました。

便利なバイナリーエディタ見付けました!
「TINY BINFILE EDITOR for MSX」です。
8_25_1.png
直接フロッピーディスクの中身を書き換えるので、バックアップを取ってからいじるようにしましょう。
MSX-DOS上で動作するので、MSX-DOS必須です。
MSX-DOSのディスクに「TINY BINFILE EDITOR for MSX」をコピーして使用します。

おぉ、MSX-DOSなんて、いつ以来だろう…。
昔はノーブランドの2DDのフロッピーディスク、頻繁に壊れてたので、バイナリーエディタでインデックスいじって無理やり復旧させたりしてました。
懐かしい…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年08月24日

資格試験

4_19_1.png
以前にも書いたとおり、私が通っていた専門学校は、資格取得に力を入れた学校でした。
最終目標は、当時、実務経験がなくて取得できる情報処理関係の最難関資格「第一種情報処理技術者試験」合格です。
しかし、これに受からない人のために、各種資格取得に向けた学習をしてくれました。
私が受けた資格試験は、
・日商簿記検定試験3級
・通産省情報処理検定試験1級
他にもあったかと思いますが、私は第二種情報処理技術者試験を1回目で受かったので、他の物は取りませんでした。
これだけ資格取得に拘った専門学校も珍しいのではないでしょうか?
本当にこの学校にしてよかったと思います。

ただ、資格試験の頻度が多く、ゲーム制作している暇がない…。
1作品1作品のクオリティを高めているのも相まって、ゲーム完成作品数は激減しています…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年08月23日

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



4_19_1.png
3Dダンジョンロールプレイングゲーム第11回目です。
今回は3D表示のプログラミングに挑戦する予定だったのですが、ゲーム製作久しぶりすぎて、最初にやらなくてはならない事を忘れていました。

メモリマップの作成です。
ゲームを製作する時には、ツールを使うなりして各種データを作成し、最後すべて読み込んで1本のゲームにします。
と、いう事は、それぞれのデータの保存アドレスが重ならないように、データ保存する必要があります。(若しくは読込先アドレスを変更する。)
しかも、ロールプレイングゲームは、データの種類が多いジャンルです。
・マップデータ
・イベントデータ
・メッセージデータ
・アイテムデータ
等々…。
これらが重ならないように事前にデータ量と範囲を決めておく必要があります。
今回の3Dロールプレイングゲームのメモリマップは、現状下記としました。






































アドレスデータ名備考
A000〜A1B82Dマップデータ21マス×21マス=441バイト
A200〜A7FF壁キャラクタデータ前回から保存先アドレス変更
A800〜AFFF空き
B000〜B7FFフォントキャラクタデータ256キャラ×縦8バイト=2,048バイト
B800〜BFFFフォントカラーデータ256キャラ×縦8バイト=2,048バイト
C000〜CFFFマシン語エリア
D000〜D0FF変数エリア
D100〜DFFFメッセージデータエリアアイテムデータも含む


ゲームの種類によっては、各面の最初にフォントを設定してしまえばフォントデータのエリアは不要なのですが、ロールプレイングゲームの場合は、敵キャラフォントを毎回読み込む必要があるので、読込先エリアとして空けておく必要があります。

うーん、キツキツですね。
MSX2以降だと、データをVRAMに保存してといったことが可能なのですが、MSX1だと厳しいです…。
メッセージ表示ルーチンとか、選択ルーチンとかは、かなり巨大なサブルーチンだけど、マシン語エリア(&HC000〜&HCFFF)に収まるのか?
因みに、タイトル背景の「Devils Busters」製作中にメモリ不足に悩まされて、ロールプレイングゲーム製作止めた過去があります…。2023年4月14日記事参照「ブログタイトル画像更新」)

とりあえず、今のところはこれだけ決めておけば大丈夫です。
これに合わせて、各データの保存先アドレスを変更しておきます。

では、次回こそ、3D表示のプログラミングをしましょう。

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

2023年08月22日

Laboratoryテーマを再々追加!




6_2_1.png
前回「Laboratory」に追加したテーマに、何も手を付けられていないのに新たにテーマを追加しました。(2023年7月21日記事参照「Laboratoryテーマを再追加!」)
ゲーム製作」で制作中の3Dダンジョンロールプレイングゲームで利用するメッセージウィンドウのサブルーチンが、他のゲームにも色々使えるのでこちらで紹介しようと思い追加しました。
これは制作進捗によりますが、メッセージウィンドウが必要になったら先んじて公開します。
あと、ずっと名前だけ上がっている「なんちゃって弾道計算」も追加しました。










テーマ
21指定座標に指定サイズのメッセージウィンドウを開き、メッセージを表示したい

ロールプレイングゲームなどによくある「メッセージウィンドウ」を、指定の座標に指定のサイズで開きます。
メッセージがあれば、ウィンドウ内に表示し、ウィンドウ内に収まらなければスクロール表示します。







22文字列中の数字を数値に変換したい

文字列データの中の数字部分を、数値として取り出す。
例えば、メッセージデータ中として「100えんあげる。」とあった時、数字部分の100はキャラクタコードの31,30,30の3バイトデータとしてデータ化されているが、それを数値の100としてAレジスタに入れる。







23コマンドを選択肢メニューを開いて、選択したい

メッセージウィンドウを開き、その中に選択肢を表示し選択させます。
ウィンドウに収まりきらない選択肢は、選択肢の最上段で「↑」、最下段で「↓」でスクロール表示します。







24簡単な、自機に向かって飛んでくる敵弾(なんちゃって弾道計算)

三角関数を使った弾道計算は処理が遅いので、もっと簡単な弾道計算ロジックを考えます。

「Laboratory」で紹介したサンプルを組み合わせるだけでいろんなジャンルのゲームが作れそうですね。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory
検索
<< 2023年08月 >>
    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コード