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

2023年09月09日

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



3Dダンジョンロールプレイングゲーム第13回目です。
今回は遂に、3D表示のプログラミングに挑戦します。
前々々回(【ゲーム制作】3Dダンジョンロールプレイングゲーム 第10回)に書いたロジック通りに、前回設定した表示ワークの地形を描画します。
これはもう簡単。
条件に従って表示ロジックを記述していくだけです。
6_6_1.png

気を付けなければいけないのは一カ所だけ。
8_12_3.png

正面Dに壁があった時、Vだけでなく、その両サイドUとWの壁も描画し、T描画のロジックへ飛ぶくらいですね。
壁の描画はLaboratoryテーマ15「任意サイズのFONTキャラクタを指定座標に表示させたい」のサブルーチンで描画します。
9_9_5.png

前回同様各向きで描画してみました。
9_9_1.png
9_9_2.png
9_9_3.png
9_9_4.png

期待通りの動きです、問題なしですね。
マウスが使えなかった時に、とりあえずで作成したFONTなのでチープです。

では、次回は描画が非常にチープなのでもう少し(ほんの少し)見栄え良くしてみます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2023年09月08日

夏休み

専門学校の夏休みは短い…。
2週間くらいしかなかったと記憶しています。
私の兄が大学生で、夏休みが2ヶ月以上あったので「大学って何しに行ってるんだろう?」と思ってました。(兄だけかと思いますが…。)

その短い夏休みを、購入したMSX2+の機能検証に費やしました。
CPU的な違いはないので、その他の機能強化となります。

まずは追加機能。
「HB-F1XDJ」だけになりますが、FM音源が内蔵されています。
音色が綺麗。
次に漢字ROMが内蔵されています。
んー、漢字表示ですがMSXの解像度では文字が大きくなりすぎてやっぱり使いづらい。
小さくするとインターレースになり、ブレるし…。
あと、スピードコントロールと、連射機能が付いています。
ゲームプレイではお世話になりました。

次にグラフィック関係。
やはり、特筆すべきはSCREEN12の自然画モード。
YJK方式により19,268色の同時発色が可能で、とても綺麗でした。
…が、それだけ。
元々グラフィックデータのフロッピーディスクからの読み込みに時間が掛かるところ、圧縮掛けてるので展開に更に時間が掛かる。
しかも、1画面に必要なVRAM容量は128KB(2画面)。
2DDのフロッピーディスクしかないMSX2+では容量的にも扱いにくく、コンパイルの「真・魔王ゴルベリアス」のようにオープニング、エンディングくらいでしか使えない…。
9_5_1.png
画像出典: 『電撃オンライン』 真・魔王ゴルベリアス MSX2+版
https://dengekionline.com/articles/96649/

本編を自然画モードで作ったら、フロッピーディスク何枚組のゲームになるんだろう…。
他にはハードウェア横スクロールの実装!
ただ、これも後にコナミの「スペースマンボウ」のようなSETADJUSTの応用による1ドット横スクロールがMSX2で実現されてからは、MSX2+だけの特徴ではなくなりました。
9_5_2.png
画像出典: 『GameFAQS』 スペースマンボウ MSX2版
https://gamefaqs.gamespot.com/msx/917251-space-manbow/images?pid=917251&img=6


と言う訳で、特にMSX2+だからこれが出来る!と言うのもなく、結局そのまま今まで通りのゲーム作りとなりました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年09月07日

バグ発見A




6_2_1.png

連続バグ報告でスイマセン…。
Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@のロジック中にバグを発見しました。

「3Dロールプレイングゲーム」の制作中、プレイヤー移動用にジョイスティック入力処理追加したとたんに暴走しました。(フリーズ)
キーボード操作では、問題ありません。
原因は、ジョイスティックのボタン操作判定用のBIOS「GTTRIG」(&H00D8)。
メッセージ表示速度調整用の時間稼ぎループをBレジスタでループさせていて、そのループ中にボタン判定(WAIT飛ばし)しているため、Bレジスタの内容が壊れフリーズしたものと思われます。
MSXテクニカルハンドブック」には、「GTTRIG」の使用レジスタは「AF」のみとなっているので、これを信じて他レジスタの退避していなかったのですが、よく考えたらジョイスティックを使うとなぜかBレジスタが壊れるんです。
このことは経験則で知っていたのですが、あまりに久しぶりだったので「MSXテクニカルハンドブック」を信じてしまいました…。
と、言う事で「GTTRIG」使う際には必要ならBレジスタを退避しなければなりません。(調べてないけど他のレジスタも?)
うーん、ブランクって怖いですね…。

2023年8月29日の記事、Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@を再度改訂しました。
(サンプル自体はキーボード入力固定なので問題はありませんが、バグ有ロジック放置するのも嫌なので…。)

サンプルプログラムの再ダウンロードをお願いします。
ご迷惑おかけし申し訳ありません。
…ん?今回は私のせいなのか…?
posted by J-JSOFT at 12:00 | Comment(0) | TrackBack(0) | Laboratory

2023年09月06日

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



3Dダンジョンロールプレイングゲーム第12回目です。
随分久しぶりになってしまいました。
Laboratoryテーマ23「コマンドを選択肢メニューを開いて、選択したい」のサンプル作りにてこずっておりまして、時間だけが過ぎていく…。
まぁ、おかげで「MSX回顧録」、だいぶ進めることが出来ましたが…。

さて、今回は3D表示のプログラミングに挑戦します。
前々々回(【ゲーム制作】3Dダンジョンロールプレイングゲーム 第9回)で考えたロジック通り、@〜Gの表示ワークへセットするプログラムを作ります。
これ、BASICの配列変数を使えれば簡単にできるんですが、マシン語にはそんな便利な機能はありません。

ただ、考え方は配列変数の考え方がそのまま使えます。
BASICですと、配列変数にマップデータを代入(MAP(21,21))し、自機のX座標、Y座標をそれぞれ変数X、Yとすると、X、Yを起点に、調べたい座標位置に加減算をします。
9_6_1.png
例えば、上向きの場合、@=MAP(X-1,Y-2)、A=MAP(X,Y-2)…と言った感じです。
簡単ですね。
それをマシン語で実現するためには、この加減算値でデータベースを作成します。(8ワーク×4方向×X/Y=64バイト)
9_6_3.png
XとYの加減算値は-2〜2の5つしかないので、容量節約のためにBレジスタ上4桁をX加減算値、下4桁をY加減算値とします。
これで、容量を半分に削れました。(8ワーク×4方向=32バイト)
先ほどの加減算値のルール通り変換しました。
9_6_2.png
データベース登録完了したら、向きにより自動でデータベースアドレスを算出し、データベースから加減算値を取得し、マップデータから地形データを読んでワークに設定するマシン語サブルーチンを作ります。
9_6_4.png
&HC370からは、Bレジスタに加減算値を代入しコールすると、マップデータ上の自分の位置+加減算値のアドレスを計算し、Aレジスタにその座標のキャラクタコードが返されるルーチンです。
&HC3B8は、向きによってデータベースアドレスを算出し、データベースを読んで8つ分ワークへ地形データを設定するルーチンです。

各向きで読み込んだキャラクタコードを表示してみました。
9_6_5.png
期待通りの動きです、問題なしですね。

では、次回は3D表示のプログラミングです。
posted by J-JSOFT at 10:30 | Comment(0) | TrackBack(0) | 開発

2023年09月05日

バグ発見




6_2_1.png

Laboratoryテーマ22「文字列中の数字を数値に変換したい」のロジック中にバグを発見しました。

DEレジスタに、文字列中の数字部分の先頭アドレスを代入しコールするとAレジスタに数値として取り出せるサブルーチンです。
単体での動作は問題ありません。
問題はスクリプト内のコマンドに記述された数字を連続で読みだす際、その中に3桁の数字があるとエラーとなります。
なぜかと言うと、仕様では数値変換終えた後、DEレジスタは文字列中の数字の最後尾アドレスを指しているはずが、プログラミングミスで先頭アドレスのままとなっていました。
9_4_1.png
そこから読み込もうとする時、2つアドレスを進めたところから読み始めるので、2桁なら数字から抜けたところスタートなのでよかったのですが、3桁だと1の位スタートになるのでエラーとなります。

2023年9月1日の記事、Laboratoryテーマ22「文字列中の数字を数値に変換したい」と、
そのロジックを内包する、2023年8月29日の記事、Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@を改訂しました。

サンプルプログラムの再ダウンロードをお願いします。
ご迷惑おかけし申し訳ありません。
ロジックが複雑なサンプルが多くなるのでバグが増えそうです…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2023年09月04日

ゲーム専用機

4_19_1.png

前回、MSXturboRと他のゲーム専用機との価格について書きましたが、私の記憶となんか微妙に時期のズレがあったので調べてみました。











































機種メーカー価格発売日
ファミリーコンピュータ任天堂14,8001983年7月15日
セガ・マークIIIセガ15,0001985年10月20日
PCエンジンNECホームエレクトロニクス24,8001987年10月30日
メガドライブセガ21,0001988年10月29日
PCエンジンCD-ROM²NECホームエレクトロニクス24,8001988年12月4日
MSXturboR「FS-A1ST」パナソニック87,8001990年10月中旬
スーパーファミコン任天堂25,0001990年11月21日

うーん、やっぱりMSXturboRが話題になった1990年10月には、スーパーファミコンって発売されていなかったんだ…。
専門学校1年生の頃に、友人宅でPCエンジンCD-ROM²で遊んだ記憶しかないのはそういう事か…。
納得。
しかし、MSXturboR発売直後にスーパーファミコンなんか発売されたら、そりゃ勝てないよね…。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX雑記

2023年09月03日

MSX2+購入!

専門学校も、もうすぐ夏休みに差し掛かる頃だったと思います。
友人が入学早々MSX2+を購入し、見せびらかしてくるので、対抗して私も遂にMSX2+を購入しました。
私の製作するゲームはMSX2の機能で十分だったのですが、つい…。
機種はSONYのMSX2+「HB-F1XDJ」でした。
FM音源も漢字ROMも搭載している優れモノでした。
6_20_1.png
出典: 『MSX Resource Center』
https://www.generation-msx.nl/hardware/sony/hb-f1xdj/748/

でも今思うと、MSX1からMSX2、MSX2+と進化するにつれて、余計な(失礼)機能が付加されて、その分価格も上がってしまいました。
元々家庭用ホビー機として普及したのだから、「機能も抑えて価格も抑えて」にした方が、良かったのではなかったのかと思います。
追加機能(漢字ROMとか、FM音源)はROMで出せばいいだけなので…。

パソコンとはいえ、ゲーム機のイメージが強いMSXなので、どうしても比較対象はゲーム機になります。
MSXturboR発売当時(1990年)だとまだ、スーパーファミコン(希望小売価格25,000円)とメガドライブ(同21,000円)、PCエンジン(同24,800円)が主流だったので、ゲーム機としては高価すぎました。
また、パソコンとしてもMSXturboRが税込10万円台なのに対し、当時普及していた性能面で大きく上を行くPC98互換機の最廉価モデルの販売価格が12万円台と、ゲーム機としてもパソコンとしても、価格競争力がなくなったことがMSXの敗因だったと聞いたことがあります。
MSXturboRの販売価格が、MSX2+の5万円前後+αの税込7万円程度で維持できていれば、全然状況は違ったと思います。
MSX1〜MSX2+までの大きなユーザー数を生かす戦略を取れなかったのかな?
まぁ、PC98互換機の価格が急に下がったなどの要因が、後出しであったのなら仕方ないですが…。

さて、この頃になると、1本のゲームを完成させるのに数か月といった状態になり、ほぼ完成しないといった状態に陥ってしまいました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年09月02日

日商簿記検定試験3級

4_19_1.png

専門学校生活にも慣れてきた頃…。
「第二種情報処理技術者試験」を目指した授業の中に、簿記の授業が入るようになってきました。
そう、入学早々に申し込んだ「日商簿記検定試験3級」を受けるための授業が始まりました。(2023年8月24日記事参照「資格試験」)

普通高校の私は「簿記」ってなんぞや?レベルの知識しかありません。
「借方」「貸方」「貸借対照表」など専門用語から覚えなければなりません。
「こんなの数回授業で教えてもらっただけで受かるのか?」
そう思いながらも過去問を繰り返しやることで、8割くらい合格圏内まで上げる事が出来ました。
まぁ、3級だと専門用語を覚えていて、「仕訳」が間違いなくできれば、ほぼ受かるレベルでした。(30年前です。)

で、受験結果は「合格」でした。
これが終わり、「第二種情報処理技術者試験」の授業に主軸を移した授業になるのでした。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | MSX回顧録

2023年09月01日

Laboratoryテーマ22「文字列から数値に変換したい」




9_3_1.png

さて、今回はLaboratoryテーマ22「文字列から数値に変換したい」です。
前回のメッセージウィンドウオープンで説明した通り、イベント制御には自作スクリプトを用意します。
しかし、スクリプトを読み込む際、数字も文字列として読み込んでしまうため、そのままでは数値として利用できません。
例えば、スクリプト「FE,12」(実行中イベントのフラグを12にする。)は、メッセージデータ上は文字列「46 45 2C 31 32」となっています。
そこで、数字部「31 32」を数値「12」化するためのサブルーチンが必要になります。

文字→数値変換のサンプルプログラムです。

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

数字を含む文字列を入力すると、文字列中の数字部分を数値化し、数値として結果を表示します。
文字列データとなっている途中経過をASCIIコード化して表示します。
9_3_2.png

マシン語のサンプルです。
(因みに、メッセージウィンドウオープンのサンプルに既に入っています。)
起動すると、Ato9SMPL.BINを作成します。

掛け算のサブルーチンを内包しています。
0〜255までの値を変換可能です。
変換用のワークとして、5個の変数を使っています。
サブルーチンとしてアドレス変更する際は、そこの変更を忘れないように気を付けてください。(&HD0E0〜&HD0E4)













INOUT
DE文字列数字部先頭アドレスA数値

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

9_3_3.png
マシン語のサブルーチンとして必要なのは&HC000~&HC03Fまでです。
&HC058~&HC06Fは文字列先頭アドレスから、数字部分を見付けサブルーチンコールします。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

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
検索
<< 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コード