2024年04月10日
【ゲーム制作】面クリア型アクションゲーム 第11回
面クリア型アクションゲーム 第11回です。
いくつかのサブルーチンを使い、ゲーム画面を表示してみます。
良い感じですね。
バグ無し一発OKです。
続いて、アドレス計算サブルーチンを使い、指定した座標からアドレスを算出してその位置に「ハンド君」を表示したり、MAPキャラクタを別のキャラクタに変更したりしてみました。
特に問題なし…、
…ん?
なんか、「ハンド君」が1ドット下に表示されている…。
バグか?
試しにBASICのPUTSPRITE命令で、表示してみる。
やっぱりズレてる!
あれー? FONTとSPRITEの座標にそんなズレあったっけ?
私が忘れてるだけ?
まぁ、ズレているものは仕方ないので1ドット上に表示させます。
他のサブルーチンもバグ無し一発OKでした。
我ながら凄い!
一通りのデバック終わったので、次回は「ハンド君」表示の違和感を解消します。
2024年04月09日
【ゲーム制作】面クリア型アクションゲーム 第10回
面クリア型アクションゲーム 第10回です。
今回は一通りのサブルーチンを用意します。
考えつくサブルーチンは、
・乱数
・FONT設定
・SPRITE設定
・MAP表示
・16進数→10進数変換
・スコア表示
・面数表示
・残匹表示
・MAPアドレス算出
・VRAMアドレス算出
位ですかね?
特に、
・MAPアドレス算出
・VRAMアドレス算出
は、敵ルーチンの時も使えるようにしないといけません。
こちらもExcelで作成して、「.BAS」にコンバートして、「.BIN」ファイル作成。
「Disk-Manager」のおかげでExcelからのコンバートに手間かからないので、大きなロジックはExcelで開発→コンバート→MSXでデバッグした方が効率がはるかに良い。
一気に組み上げましたので、ちゃんと動作するかは不明。
次回は今回組んだサブルーチンの「デバッグ」作業をします。
2024年04月08日
【ゲーム制作】面クリア型アクションゲーム 第9回
面クリア型アクションゲーム 第9回です。
今回は走査線割込み処理を組んでいきます。
Laboratoryで扱った「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と、ツールとして制作した「BGM演奏ルーチン(通常版)」を使います。
Excelで別々のロジックを、1つにまとめます。
また、更に他のメモリエリアの邪魔にならないよう、限界まで後ろに持っていきます。
Excelから「.BAS」にコンバートして、「.BIN」ファイル作成。
仮想SPRITEアトリビュートテーブルを&HD700に、
シャッフル用仮想SPRITEアトリビュートテーブルを&HD780に持っていき、走査線割込み処理自体は&HD800~&HDAFFに置きます。(これ以上後ろに置くと、多分DISK-BASICエリアを侵食し正常に動作しない。)
「BGM演奏ルーチン(通常版)」も同じ位置に持っていきます。
何度かアドレスエラーで飛びましたが、無事BGM鳴らしながらSPRITEの点滅が出来るようになりました。
因みにBGMは仮で「TETRIS SPECIAL」で使った「トロイカ」です。
良い感じ。
やっぱりExcelでプログラムした方が、検索・置換、行の入替、コメント・矢印の挿入、色分けが出来るので作業が捗ります。
次回は、サブルーチン集を組んでいきます。
2024年04月07日
【ゲーム制作】面クリア型アクションゲーム 第8回
面クリア型アクションゲーム 第8回です。
今回は、面データを作成します。
面データの作成には「MAP16 EDITOR」を利用します。
「MAP16 EDITOR」では、1キャラ16×16ドットとなります。
横16キャラ×縦11キャラ(FONTでは32×22)のマップを横に連ねる形で作成していきます。
設計では14面作成するので、MAPデータの幅は16キャラ×14面=224キャラとなります。
高さはそのまま11キャラです。
まずは「設定画面」で、2×2で4FONT使い1キャラクタを作成していきます。
読込んだFONTによっては上図のように矢印が表示されないことがあるので注意が必要。
次に「エディット画面」で、作ったキャラクタを使いMAPを作成していきます。
こんな感じになります。
パズルではないので、適当にどんどん作成していきます。
結構いい感じではないでしょうか。
次回は「走査線割込み処理」を組んでいきます。
2024年04月06日
【ゲーム制作】面クリア型アクションゲーム 第7回
2024年04月05日
【ゲーム制作】面クリア型アクションゲーム 第6回
面クリア型アクションゲーム 第6回です。
今回は、SPRITEキャラクタを作成します。
SPRITEキャラクタの作成には「SPRITE EDITOR」を利用します。
メインは当然、じゃんけんの「グー」、「チョキ」、「パー」です。
ただ、「グー」、「チョキ」、「パー」がそのまま動いていると違和感しかない。
そこで、向いている方向が判るように目と、歩いているのが判るように足を付けて、キャラクタにします。
「グー」、「チョキ」、「パー」も向きを付けれればよかったのですが、横向くと「チョキ」と「パー」の判別が困難なので諦めました。
因みに、目と足は少し下にずらして表示して、縦18ドット×横16ドットキャラクタにする予定です。
こんな感じです。
名前は「ハンド君」。
まぁ…、可愛い…?
次回は、FONTキャラクタを作成します。
2024年04月04日
【ゲーム制作】面クリア型アクションゲーム 第5回
面クリア型アクションゲーム 第5回です。
今回はイメージディスクを作成します。
さて、いよいよプログラミングを開始していく訳ですが、今作のアクションゲームでは、前作までのロジックはほとんど使いません。
一部のサブルーチンくらいです。
あとは何と言っても「SPRITE EDITOR」や「MAP16 EDITOR」を初めて使います。
マシン語設定プログラム(「BINSET.BAS」)は、Excelからコンバートするので要らないので、メインのBASICプログラム位かな?
前作「ADV.BAS」の名前変えて「ACT.BAS」とします。
走査線割込み処理のロジックも、Excelからコンバートするので不要。
あとは、全部エディター使って新たに作成します。
あ、「AUTOEXEC.BAS」も要るか。
2ファイルだけでイメージディスク作成。
「ACT.BAS」のほとんどをコメントで潰してテスト実行できる準備だけ進めておきます。
次回は、SPRITEキャラクタを作成します。
2024年04月03日
【ゲーム制作】面クリア型アクションゲーム 第4回
面クリア型アクションゲーム 第4回です。
今回はメモリマップを作成します。
前回設計した内容に沿って必要なメモリ振りをします。
アドレス
データ名
備考
9C00〜9C4F
キャラクタデータ(20キャラクタ×4FONT=80バイト)
80バイト
A000〜A99F
面データ(1面16キャラ×11キャラ=176バイト×14面=2,464バイト)
2,464バイト
C000〜CFFF
マシン語エリア
4,096バイト
D000〜D6FF
BGMデータエリア
1,792バイト
D700〜D9FF
走査線割込み処理マシン語エリア
768バイト
E000〜E0FF
変数エリア
256バイト
「えぇっ? マジこんだけっ!?」って感じですよね。
前作のアドベンチャーゲームよりも、さらにスッキリ…。
復帰第一作目でロールプレイングゲーム選んだのが不思議ですよね…。
次回は、前作のプログラムを基にメインプログラムを用意します。
2024年04月02日
【ゲーム制作】面クリア型アクションゲーム 第3回
2024年04月01日
【ゲーム制作】面クリア型アクションゲーム 第2回
面クリア型アクションゲーム 第2回です。
今回は詳細設計をします。
昔の面クリア型のアクションゲームって、ストーリーないもの多いですよね。
あっても無理矢理と言うか…。
と、言う訳でこじつけストーリーです。
■■■ ストーリー ■■■
あなたは「じゃんけん国」の冒険家「ハンド君」。
「じゃんけん国」ではじゃんけんに勝った者が強者であった。
とある迷宮でお宝を発見した「ハンド君」、夢中でお宝を集めている最中、盗掘犯と鉢合わせ。
邪魔をする盗掘犯達をじゃんけんで勝って怯ませながら迷宮内に落ちているお宝をすべて集めろ!前回考えたゲームシステムを基にゲームになるように設計していきます。
■■■ ルール ■■■
ステージ上のドットを全て食べたら面クリア
ドット1個100点、敵1匹1,000点、面クリアボーナス10,000点
プレイヤーは残数3匹
50,000点で1匹増加(以降、増えない)1回動くと1キャラクタ分(16ドット)は強制的に動く(枠外脱出対策)
敵は最初3匹(グー、チョキ、パー各1匹)
最大9匹(各3匹)まで増える面数は14面、2面毎に敵が1匹増加(3面4匹…13面9匹)
敵の移動は曲がり角があればランダムに曲がる
敵は袋小路以外は反転しない敵に当たった時、敵の手に勝ったら敵は消滅
あいこ、若しくは負けたらプレイヤー1匹消失敵を倒すとプレイヤーキャラクタが「グー」→「チョキ」→「パー」の順で切り替わる
敵を倒した後、5秒以内に敵を倒したらスコア倍
もう1匹倒したら更に倍の倍々スコア倒した敵はしばらくしたら左上隅に再出現
ゲーム自体のスピードも面と共に上がっていく
とりあえず、ゲームシステムはこんなところでしょうか。
次回は詳細設計の続き、画面構成を考えていきます。