「昔のゲームジャンルで自主制作が一番大変だったのは何か?」と聞かれたら、私は迷わず「アドベンチャーゲーム」といいます。
あくまで私見です。
なぜかと言うと、絵を描くのが非常に大変だったから!
昔は今のようにグラフィックを描く環境が整っておらず、デジカメはない時代。
スキャナは取り込み画像小さいくせに、とんでもなく高額。
ペンタブレットは、その当時にあったのかなかったのかさえ不明…。
当然、液タブもしかり…。
絵を描く環境がグラフィックソフトとマウスしかなかったのです。
まぁ、まだマウスがあったのが、せめてもの救いでしたが…。
ケベロンシリーズ第一作目 「ケベロンの冒険〜勇者誕生〜」
以前にも書きましたが、私が絵を描く時は、紙に絵をかいて、それをサランラップに書き写しモニタに貼って、グラフィックソフト上でマウスでなぞる様に書いていました…。(2023年6月6日記事参照「他のツール集」)
死ぬほど時間と根気、集中力が必要な作業です。
しかも、目と指が死ぬ…。
一部のプロの人は直接マウスでグラフィックツールにゴリゴリ描いていたと聞きますが、素人の自分にそんなことできるわけない!
うーん、絵を描くこと自体は好きだったので、昔液タブがあれば制作ジャンルが全然違っていたと思います。
2023年07月17日
2023年07月16日
Laboratoryテーマ15「任意サイズのFONTキャラクタを指定座標に表示させたい」
今回は、Laboratoryテーマ15「任意サイズのFONTキャラクタを指定座標に表示させたい」です。
MSXのテクニック的な事を紹介しているサイトを巡って感じたのですが、SPRITE関連の事はもの凄くしっかり説明されているところが多いのですが、FONTについてはパターン作成の説明は詳しいのですが、表示に関しては1文字表示するくらいのものしかありませんでした。(私が探せなかっただけかもしれませんが…。)
実際、巨大ボスキャラを実現しようとするとFONTを使うしかなく、できればそれを動かしたいですよね?
そこで、任意サイズのFONTキャラクタを指定座標に表示させるサブルーチンを公開します。
特に今回用に作ったわけではなく、元々自作ゲームに使っているサブルーチンを改良したものです。
(因みに、3DダンジョンRPGの壁や敵モンスターの描画もこのルーチンを使います。)
表示するキャラクタは下記【キャラクタコード表】のキャラクタコードで指定します。
【キャラクタコード表】
上位4ビット | |||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | ||
下位4ビット | 0 | π | 0 | @ | P | ` | p | ️ | ー | タ | ミ | た | み | ||||
1 | 月 | ┴ | ! | 1 | A | Q | a | q | あ | 。 | ア | チ | ム | ち | む | ||
2 | 火 | ┬ | " | 2 | B | R | b | r | い | 「 | イ | ツ | メ | つ | め | ||
3 | 水 | ┤ | # | 3 | C | S | c | s | う | 」 | ウ | テ | モ | て | も | ||
4 | 木 | ├ | $ | 4 | D | T | d | t | ○ | え | 、 | エ | ト | ヤ | と | や | |
5 | 金 | ┼ | % | 5 | E | U | e | u | ● | お | ・ | オ | ナ | ユ | な | ゆ | |
6 | 土 | │ | & | 6 | F | V | f | v | を | か | ヲ | カ | ニ | ヨ | に | よ | |
7 | 日 | ─ | ' | 7 | G | W | g | w | ぁ | き | ァ | キ | ヌ | ラ | ぬ | ら | |
8 | 年 | ┌ | ( | 8 | H | X | h | x | ぃ | く | ィ | ク | ネ | リ | ね | り | |
9 | 円 | ┐ | ) | 9 | I | Y | i | y | ぅ | け | ゥ | ケ | ノ | ル | の | る | |
A | 時 | └ | * | : | J | Z | j | z | ぇ | こ | ェ | コ | ハ | レ | は | れ | |
B | 分 | ┘ | + | ; | K | [ | k | { | ぉ | さ | ォ | サ | ヒ | ロ | ひ | ろ | |
C | 秒 | × | , | < | L | \ | l | | | ゃ | し | ャ | シ | フ | ワ | ふ | わ | |
D | 百 | 大 | - | = | M | ] | m | } | ゅ | す | ュ | ス | ヘ | ン | へ | ん | |
E | 千 | 中 | . | > | N | ^ | n | ~ | ょ | せ | ョ | セ | ホ | ゛ | ほ | ||
F | 万 | 小 | / | ? | O | _ | o | っ | そ | ッ | ソ | マ | ゜ | ま |
※ BIOSの「CHPUT」ルーチンでは、&H00~&H1Fはコントロールキャラクタとなっています。
「あ」の場合は、上位4ビットを「9」、下位4ビットを「1」でキャラクタコードは「&H91」となります。
任意サイズのFONTキャラクタを指定座標に表示するサンプルです。
「CHPTSMPL.BAS」【ダウンロード】
十字キー若しくは「←」「→」カーソルで、横16キャラ×縦16キャラを左右に動かすプログラムです。
マシン語のサンプルです。
起動すると、CHPTSMPL.BINを作成します。
IN | OUT | |||
B | 表示先X座標 | なし | ||
C | 表示先Y座標 | |||
D | 横キャラ数 | |||
E | 縦キャラ数 | HL | キャラクタデータ先頭アドレス |
「BINSET.BAS」【ダウンロード】
プログラム長いですが、マシン語のサブルーチンとして必要なのは370行〜450行(&HC110~&HC14F)の64バイトです。
741行〜743行(&HC1F0~&HC1FF)で指定値を代入してサブルーチンコールします。
744行〜2,090行(&HC200~&HC5FF)が、左右2パターンアニメーションで計4パターン分のチャラクタデータです。(プログラムの半分以上がデータです。)
変数アドレス | 内容 |
BF00 | 速度カウンタ |
BF01 | キャラクタX座標 |
BF02 | キャラクタ速度 |
BF03 | 向き (0:← 1:→) |
BF04 | アニメカウンタ |
BF05 | ジョイスティック |
BF06 | アニメパターン |
では、今度こそは本当に、ここで一旦Laboratoryは中断して3DダンジョンRPGの制作に専念します。(2023年6月26日記事参照「開発案件広げすぎ…」)
2023年07月15日
簡易MMLコンパイラ 活用例
このツールの上位版である、「MMLコンパイラ(通常版)Ver.1.1」を2024年3月26日に公開しています。 |
「簡易MMLコンパイラ Ver.2.0」でコンパイルしたBGMデータ3つを、簡易BGM演奏ルーチンを3つ使い、スクウェアの「アルファ」のオープニングの冒頭部分を3重和音で演奏してみました。(フルコーラス作りましたが、著作権的に問題ありそうなので公開はやめます。)
画像出典: 『sinking into dithered』 ALPHA NEC PC-8801
https://pixelriots.tumblr.com/post/104261570162/alpha-square-nec-pc-8801-1986-in-this-game
MSX1の絵と思えない…。
因みに画像は「BMP to MSX」なるソフトでコンバートしました!
制作者のHRAさん、素晴らしいソフトをありがとうございます!
(古い方のホームページにしか置いていないようです。こちら)
【ダウンロード】
う〜ん、やっぱり「アルファのオープニングはカッコいい!!」(曲名知りません。)
「アルファ」(1986年発売)は高校2年生当時、X1持ってた友人に高校の文化祭のデモ陳列用に「X1貸して!」(パソコン同好会員に非ず。)と無理言って持って来てもらって、その時デモで流してたゲームでした。
聞いた時の最初の印象は、最初に書いた感想通り「カッコいい!」。
当然の如く、MSXでは発売されていなかったので、カセットテープに録音してもらい、それを耳コピでPLAY文データに起こしました。
伴奏がなかなか聴き取り難く、大ボリュームでやっていたため、耳が痛かった覚えがあります。
最後の方は力尽きてる感満載ですね…、なんかグダグダでデータ合ってるのかどうかが不明…。(注:公開分は問題なし)
因みに、こんなでっかいBGMデータ(フルコーラスで7kバイト強(BASIC部も含めると15kバイト)、MSXのメモリは32kバイト)、普通に全データDATA文にして打ち込んでコンパイルすると、当然飛びます。(リセット若しくは暴走。)
では、どうやってコンパイルしたかと言うと…。
まず、事前準備として、PLAY文の中のT(テンポ)、V(ボリューム)、S、M(エンベロープ)など、簡易コンパイラで使えないコマンドを削除・調整します。
併せて、スペースなどの無駄なデータも削除します。
次に簡易MMLコンパイラにPLAY文のAパートのみDATA文にして打ち込み、コンパイル。
次に簡易MMLコンパイラをコピーし、そちらでBパートのみDATA文にして打ち込み、コンパイル。
同じく簡易MMLコンパイラをコピーし、最後CパートのみDATA文にして打ち込み、コンパイル。
コンパイル時に、CLEAR文を使って領域確保し、飛ばないように調整します。
要するに、パート毎にMMLコンパイラも3つ用意した訳です。
それぞれ違うアドレスにBGMデータを置いて、サブルーチンを3つ重ねていざ演奏!
思った以上に上手くいきました!
…ていうか、簡易MMLコンパイラ、我ながら凄いな!
元のPLAY文を、ほぼなんの改修もせずにそのままコンパイルできました。
ゲーム以外の活用方法でしたー。
2023年07月14日
簡易MMLコンパイラ Ver.2.0
このツールの上位版である、「MMLコンパイラ(通常版)Ver.1.1」を2024年3月26日に公開しています。 |
ツール | 5 | 製作年 | 1990〜2023年 |
タイトル | 『 MML COMPILER Ver.2.0 』 | ||
対応機種 | MSX1、MSX2、MSX2+、MSXturboR | ||
ダウンロード | リンク先へ |
『基本操作』
プログラムを「LIST」表示します。
プログラム最初にあるDATA行部に、作成したMMLをパート毎に登録してください。
登録が終わったら「RUN」実行。
BGMデータを書き出すファイル名(デフォルト:「MML」)と、データの先頭アドレス(デフォルト:「&HC000」)を入力して下さい。
「Now Compile…」と表示されコンパイルが開始します。
コンパイルが完了したら「Complete」のメッセージと、BGMデータの開始と終了アドレスが表示されプログラムが終了します。
BGMデータは1パートに付き1ファイルとなります。
例えばA、Bパート2重奏のBGMの場合、A、BパートMML打ち込みが終わったら、まずBパートをコメントで潰して、Aパートのみでコンパイルし、次にAパートをコメントで潰して、Bパートのみでコンパイルします。
オールBASICですので、MMLデータの大きさによっては、完了までに時間を要します。
『追加機能』
デフォルト(RENUMしていない)の状態で「GOTO 1450」実行で演奏開始。(オクターブ上下(<、>)を使っている場合はエラーとなります。)
「GOTO 1380」実行でDATAリスト表示。(BGMデータを別ファイルにせず、プログラム本文に組み込む場合は、この機能をご利用下さい。)
『簡易MML仕様』
【書式例】
C+4
D
A-2.
F.
【音階】
C | D | E | F | G | A | B |
ド | レ | ミ | ファ | ソ | ラ | シ |
【半音】
半音下げる時は「-」、半音上げる時は「+」を音階に付けます。
【長さ】
全音符を「1」として、64分音符「64」まで使えます。
音階に付けます。
デフォルトの長さなら付ける必要なし。
【付点音符】
長さにピリオド「.」を付けると付点音符となり長さを半分伸ばします。
(4分音符に付けると、4分音符+8分音符になる。)
2段階まで可。(「..」4分音符+8分音符+16分音符)
【コマンド一覧】
T(テンポ)やV(ボリューム)、S、M(エンベロープ)は使えません。
コマンド | 意味 | ||
O | オクターブを設定する。(1〜8)【例】O2 | ||
> | オクターブを1上げる。 | ||
< | オクターブを1下げる。 | ||
L | デフォルトの音の長さを設定する。(【長さ】参照)【例】L4 | ||
R | 休符。(【長さ】、【長さ延長】参照)【例】R4. |
【作成ファイルレイアウト】
1音(3バイト) | 2音(3バイト) | ... | 最後 | ||||
音程下位8ビット | 音程上位8ビット | 長さ | 音程下位8ビット | 音程上位8ビット | 長さ | ... | FF |
2023年07月13日
Laboratoryテーマ14「簡単にBGMを鳴らしたい」
このツールの上位版である、「MMLコンパイラ(通常版)Ver.1.1」を2024年3月26日に公開しています。 |
今回は、Laboratoryテーマ14「簡単にBGMを鳴らしたい」です。
やっぱりゲームを作る以上、盛り上げる為BGMは必須ですよね。
無音空間でゲームをプレイするのはなかなかキツイ。
と言う訳で、現時点で公開している自作ゲームで使われているレベルの、簡易的なBGM演奏ルーチンを公開します。
なお、BGMデータは下記レイアウトに合わせて作る必要があるので、音階を周波数データに変換して作らなくてはなりません。
しかし、流石にそれは大変なので、後日「簡易MMLコンパイラ」を公開します。
元々ツールとして制作しておらず、自分が使う用で万人向けに作られていませんでしたが、ツールとして公開するため色々改良しました。
【BGMデータレイアウト】
1音(3バイト) | 2音(3バイト) | ... | 最後 | ||||
音程下位8ビット | 音程上位8ビット | 長さ | 音程下位8ビット | 音程上位8ビット | 長さ | ... | FF |
【音階・周波数対応表】
オクターブ | |||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
音階 | C | D5D | 6AF | 357 | 1AC | D6 | 6B | 35 | 1B |
C# | C9C | 64E | 327 | 194 | CA | 65 | 32 | 19 | |
D | BE7 | 5F4 | 2FA | 17D | BE | 5F | 30 | 18 | |
D# | B3C | 59E | 2CF | 168 | B4 | 5A | 2D | 16 | |
E | A9B | 54E | 2A7 | 153 | AA | 55 | 2A | 15 | |
F | A02 | 501 | 281 | 140 | A0 | 50 | 28 | 14 | |
F# | 973 | 4BA | 25D | 12E | 97 | 4C | 26 | 13 | |
G | 8EB | 476 | 23B | 11D | 8F | 47 | 24 | 12 | |
G# | 86B | 436 | 21B | 10D | 87 | 43 | 22 | 11 | |
A | 7F2 | 3F9 | 1FD | FE | 7F | 40 | 20 | 10 | |
A# | 780 | 3C0 | 1E0 | F0 | 78 | 3C | 1E | F | |
B | 714 | 38A | 1C5 | E3 | 71 | 39 | 1C | E |
【長さ】
音符 | 長さ |
全音符 | 128 |
2分音符 | 64 |
4分音符 | 32 |
8分音符 | 16 |
16分音符 | 8 |
32分音符 | 4 |
64分音符 | 2 |
本格的なBGM演奏ルーチンになると、BGMデータ中にテンポやボリューム、エンベロープ、タイ、スタッカート、連符等のデータが追加されるため、BGMデータの作成が大変です。(因みに、タイ以降はMSX-BASICのPLAY文にはないコマンドですので、そもそも演奏できません。)
何より、データが膨大になります。
私はあまり自作ゲームのBGMに拘らない人でした。
「T(テンポ)やV(ボリューム)、S・M(エンベロープ)はゲーム開始前に設定しておけば良い。」=「演奏中に変更する必要はない。」という考えでした。
まぁ、今でもそう考えています。
と言うか、私はそんな大層な曲を作曲できません。
ゲーム開発後半でも簡易版で十分でしたが、一緒にゲーム制作していた仲間からASCIIの「MuSICA」を使うよう依頼され使い始めた経緯があります。
しかし、プログラムもBGMデータも膨大で、メモリ制約のあるなか苦労した記憶があります。
簡易BGM演奏ルーチンです。
サンプル曲として「かえるの合唱」が鳴ります。
変数を利用しているので、サブルーチンとしてアドレス変更する際は、そこの変更を忘れないように気を付けてください。
「BGMSMPL.BAS」【ダウンロード】
サンプルは、私が通常やっている通りルーチンを2つ並べて2重和音でBGMを鳴らし(B、Cチャンネル)、残りの1チャンネル(Aチャンネル)は効果音用です。
250行の変数U1にBチャンネルのBGMデータ先頭アドレス上位8ビット、D1にBチャンネルのBGMデータ先頭アドレス下位8ビット、U2にCチャンネルのBGMデータ先頭アドレス上位8ビット、D2にCチャンネルのBGMデータ先頭アドレス下位8ビットを代入して下さい。
因みに、処理が早すぎるので430行〜450行で時間稼ぎの無駄ループをしています。
「Bチャンネル」
460行〜520行(&HC028〜&HC057)
変数アドレス | 内容 |
BF02 | 演奏中アドレスカウンタ |
BF03 | |
BF04 | 音長カウンタ |
BF05 | BGMデータ先頭アドレス |
BF06 |
「Cチャンネル」
530行〜590行(&HC058〜&HC087)
変数アドレス | 内容 |
BF07 | 演奏中アドレスカウンタ |
BF08 | |
BF09 | 音長カウンタ |
BF0A | BGMデータ先頭アドレス |
BF0B |
3つ並べて3重和音もできますが、効果音を鳴らす際、効果音のチャンネルが鳴っている間フラグを立てて、フラグが立っている時はデータは読んでアドレスは先に進めるが、PSGは触らないと言った工夫が必要です。
では、次回はLaboratoryテーマ15「任意サイズのFONTキャラクタを指定座標に表示させたい」です。
2023年07月12日
Laboratoryテーマ13「「GRAPH」キーが押されたか調べたい」
今回は、Laboratoryテーマ13「「GRAPH」キーが押されたか調べたい」です。
こちらも簡単なので、サクッと説明。
ゲームのコントローラーとしてキーボードを使う時、ジョイスティックのBボタンに該当するキーとして、「GRAPH」キーが良く利用されます。
ジョイスティックのAボタンに該当するキーは間違いなく「スペースバー」と思われますので、その横にある「GRAPH」キーが押しやすいのでしょう。(私はそう。)
今回も前回紹介したBIOSに、リアルタイムなキーボード入力状況を得るサブルーチンがありますので、そちらの機能を紹介します。
ただ、前回の「Ctrl」+「STOP」ように「GRAPH」キーの押下だけを判定するBIOSではないので、少し知識が必要です。
ラベル名 | アドレス | 変化するレジスタ | 使い方 |
SNSMAT | &H0141 | AF、C | 調べたいキーのある下表【キーマトリクス】の行をAレジスタに入れコールすると、Aレジスタの押されているキーに対応するビットが「0」、押されていないキーに対応するビットは「1」になる。 |
【キーマトリクス】
ビット | |||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
行 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | + | [ | @ | ¥ | ^ | - | 9 | 8 | |
2 | B | A | _ | / | > | < | ] | * | |
3 | J | I | H | G | F | E | D | C | |
4 | R | Q | P | O | N | M | L | K | |
5 | Z | Y | X | W | V | U | T | S | |
6 | F3 | F2 | F1 | かな | CAPS | GRAPH | Ctrl | SHIFT | |
7 | RET | SEL | BS | STOP | TAB | ESC | F5 | F4 | |
8 | → | ↓ | ↑ | ← | DEL | INS | CLS | SPACE | |
9 | 4 | 3 | 2 | 1 | 0 | / | + | * | |
10 | . | , | - | 9 | 8 | 7 | 6 | 5 |
※ 9〜10行はテンキーです。
例えば、「GRAPH」キーが押されたか調べたければ、【キーマトリクス】表の「GRAPH」キーのある行は「6」になるので、「6」をAレジスタに入れてコールすると、Aレジスタの第2ビットが「GRAPH」キーが押されていれば「0」、押されていなければ「1」になります。
これまでの私自作のゲームでも、それなりに使っています。
プログラムはBボタン(「GRAPH」ボタン)が押されたら下の処理へ、押されていなければ空欄に指定したアドレスへ飛びます。
押しっぱなしは、不可です。
変数は赤アドレス(&HE013)は、ジョイスティック
緑アドレス(&HE00D)は、Bボタン押し続け不可フラグです。
黄色がBIOSコール(&H0141)。
コール前の&H06が行aAコール後の&H04が第2ビット判定です。
では、次回はLaboratoryテーマ14「簡単にBGMを鳴らしたい」です。
2023年07月11日
Laboratoryテーマ12「「Ctrl」+「STOP」が押されたか調べたい」
今回は、Laboratoryテーマ12「「Ctrl」+「STOP」が押されたか調べたい」です。
Laboratoryの続きは3DダンジョンRPG完成後と言っていたのですが、マウス動かなくてストレスですので、気分転換も兼ねて追加した簡単なテーマを全部一気に。
現実逃避ともいう…。
マシン語を起動させると、プログラムが終了するまで中断させることは出来ません。
そこで、BASICと同じように「Ctrl」+「STOP」が押されたらプログラム中断するように、メインループに組み込んで使います。
今回は特に難しいことはありません。
ただ、そういう機能があることを知らないと、結構面倒臭いことをしないといけないので、機能を紹介します。
MSXには、どのMSXでも必ず動作するプログラムが作れるように「BIOS」(バイオス、Basic Input Output System)というサブルーチン群が用意されています。
そのBIOSに「Ctrl」+「STOP」が押されたか調べるサブルーチンが用意されています。
BIOSの使い方は簡単で、必要なデータを所定のレジスタに設定し、目的に応じたBIOSをコールするだけです。
ラベル名 | アドレス | 変化するレジスタ | 使い方 |
BREAKX | &H00B7 | AF | コールした時、「Ctrl」+「STOP」が押されていればCyフラグがセット、押されていなければCyフラグがリセットされる。 |
これまでの私自作のサンプルでも、当たり前のように使っています。
410行で、「Ctrl」+「STOP」が押されたか調べ、押されていればBASICに返ってきます。
では、次回はLaboratoryテーマ13「「GRAPH」キーが押されたか調べたい」です。
2023年07月10日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第5回
3Dダンジョンロールプレイングゲーム第5回目です。
未だマウスが使えず、全くFONT作成捗りません。
昨日1日掛けて「BlueMSX」の他、いろんなMSXエミュレータ触って試しましたが、どれもマウス動かない…。
おかげで更新1日空いてしまいました。
うーん、これだけやって動かないって事は、もしや実機でも動かない可能性もあるのかな?
実機持ってないので試せません…。
とりあえず制作進めるために簡単にFONT作成したので、しばらくはこの(仮)FONTで進めます。
(仮)なので非常に雑ですが、画面イメージはこんな感じになります。
とりあえず、ジョイスティック使ってポチポチドット打ちして制作しました。
あぁ、面倒臭い!
敵モンスターのデザイン始める頃に、まだマウス使えなかったら止めるかも…。
では、システム面を考えていきます。
見た目はレトロでも、操作性に関するシステムは新しいもので行きたいと思います。
【設定@】自動マッピング機能の有無?
【決定】今回は広いマップを作るわけでもないので、「無し」でいきます。
【設定A】メッセージエリアにステータス等を表示するか?
【決定】メッセージエリアを分割すると狭く感じるから、メッセージエリアは基本メッセージのみ。
コマンドメニュー等をBボタンでメッセージエリアにメニュー表示。(上部に表示するとFONT書き換えが必要になり遅くなるから。)
【設定B】そうするとメッセージエリアが狭くないか?
【決定】昔よくあった「見る」「調べる」など面倒くさいコマンドはなくして選択肢を減らす。
だから宝箱などがあった際は、Aボタンで開く。
人がいた場合も、Aボタンで話す。
【設定C】パーティ制の採用?
【決定】うーん…、本格的なものは次にするので、今回はソロでいきます。
【設定D】アイテム、お店、宿屋の有無?
【決定】必要なので、スタート地点の壁に商人と宿を埋め込んで置いておくことにします。
…とりあえず、現段階ではこれくらい決めておけば大丈夫。
パーティ制でなければ、初期段階でそこまでガチガチに決めなければならないこともないかな。
色々無理そうなら、都度方針変更の予定です。
次回からプログラムに入ります。
2023年07月08日
Laboratoryテーマ追加!
突然ですが、「Laboratory」のテーマを追加しました。
あちこち色んなサイトを見てきましたが、「初心者には必要かな?」と思われるのにあまり紹介されていないロジックを「Laboratory」に4テーマ追加しました。
(まぁ、「初心者がいないのでは?」と言われればそれまでなのですが…。)
中には「Laboratory」のテーマとして挙げる程のものでもないのもありますが、他に紹介するカテゴリがないので取り敢えず「Laboratory」で。
テーマ | ||||
12 | 「Ctrl」+「STOP」が押されたか調べたい |
初心者がマシン語でしがちなのが「永久ループ」。
私もよくしました…。
ですのでこれは必須です。
メインループに組み込めば、いつでもどこでもプログラムを止められます。
当然ですが、暴走を止めるのは不可能です。
13 | 「GRAPH」キーが押されたか調べたい |
ゲームのコントローラーとしてキーボードを使う時、ジョイスティックのBボタンに該当するキーとして、「GRAPH」キーが良く利用されます。
その「GRAPH」キーが押されたかの調べ方です。
と言うか、キーボード全キーの押されたかの調べ方です。
14 | 簡単にBGMを鳴らしたい |
本格的でない、簡易BGM演奏ルーチンです。
ここまでに公開している自作ゲーム(作品10)までは、これに近い(もっと簡易)ルーチンでBGMを鳴らしています。
本格的になると、ドラムっぽいのを鳴らしたり、デチューンかけられたりしますが、そうなると今度はBGMデータの製作が大変になります。
なので、とりあえず「無音は寂しいから何か鳴らしたい。」という人向け。
15 | 任意サイズのFONTキャラクタを指定座標に表示したい |
意外と他のサイトで説明されていないのがこれ。
ボスキャラ表示など、大きめのFONTキャラクタを表示するサブルーチンです。
私が初心者の頃は大きなキャラクタ表示させるの大変だったんだけどなぁ…。(まぁ、力技で何とかなりますが…。)
BレジスタにX座標、CレジスタにY座標、Dレジスタに横キャラ数、Eレジスタに縦キャラ数、HLレジスタにキャラデータのある先頭アドレスを入れてコールすると、任意サイズのFONTキャラクタを指定座標に表示します。
2023年07月07日
BlueMSXでマウス動かず(再チャレンジ!)
あれから何度もチャレンジしていますが、やっぱり「FONT EDITOR」でマウス動かない…。
おかげで全然3DダンジョンRPGのFONT製作進まない…。
FONT制作進まないと、やる気起きません…。
(私は先にキャラクタを制作して、それを見て気分を盛り上げながら、プログラミングに入るタイプです。)
ジョイスティックは問題なく動くのに…。
やっぱり自分のパソコンがペンタブ(液タブも使う)接続環境だからダメなのかな?
よし!
一度、マウスだけの環境のノートパソコンで試してみよう。
「ツール」の「コントローラー/キーボード構成編集」を開き、「Joystick1」を「マウス」に設定。
BlueMSX再起動。
…動かん!
ノートパソコンも再起動。
…動かん!!
なんでだろう?
ノートパソコンだから、タッチパッドがいけないのか?
念のためWebMSXでも試しに。
…動かん!!!
あぁ、ストレスです…。
うーん…、あと何が考えられますか?
誰かご教授くださいー!