とわ君に独り言2(痛)

MSXやエレキギターが好きなおっさんの戯言です。

■MSX BASIC入門 ゲーム制作〜番外編〜■"PLAY文"等音に関すること■

※コロナ禍で子供達の世話が大変な方々、皆で一緒に頑張りましょう!

本題
■PLAY文等音に関するおさらいや、改めて考えた事をメモっときます。■
(基本的なことは書きません)
当時、シンセサウルスやMIDIサウルスにすぐ移行し、MMLが苦手でPSGはゲームの効果音位にしか使ってなくて、当たり前の事を色々忘れてました…。


●Nで音を鳴らす時に、変数を使う方法。(完全に忘れてました)●
・Nの値を定数以外で鳴らす方法
(キャラのジャンプの効果音を高さに応じた音程に変えたり簡単に出来ます。)

10 ■=200
20 PLAY"N=■;"
(※■は変数)


●作ったゲームでBGMを鳴らす●
(沢山方法があります)

・普通にPLAY文で鳴らす。
(効果音程度ならギリ実用の範囲内ですが、BGMは難しいです…)

・メインルーチン複数回に一度だけPLAY文発動。
(多少実用的になったけどループの繋がり等合わない…)

・音が鳴ってないかを確認してPLAY文発動。
(ループがズレてイマイチだった)

・ON INTARVAL命令を使う①
特定のタイミングでPLAY文実行
(そこそこ行けそうだけど一瞬メインの処理が大きく止まりそ)

・ON INTARVAL命令を使う②
特定のタイミングで1音づつ位で音を鳴らす、簡易ドライバ的なあれ的なそれ的なコレ的な?
(これはそこそこ実用的?)
※これはサンプルプログラム用意したいです。

・きちんとしたドライバを自作する。
(う〜ん、無理しんどい)

・MuSICAやDM-SYSTEM等々の既存ドライバを使う。
(嫌ですw)


●PLAY文のループのズレを改善●
・変数を使わず、直接データを指定
・最後の音や休符を短めに設定する。

・※以下は「ポケットバンク2マイコンジュークボックス」からの抜粋ですが、タイミングの狂いを目立たせなくするテンポの数値が、
T32,T64,T96,T128,T192,T255
だそうです。
(仕組みはようわからん…)

・データの末尾から最初に戻す時は、
「IF PLAY(0)=0 THEN ■」等を使うより、直接&HFB40のワークエリアが「0」(鳴っていない)かを確認した方が少し速くてズレが少ない?
(未検証です、すんまそん…)


●PLAY文で嘘ドラム音を鳴らす●
・1トラックとエンヴェロープを使い、疑似的なドラム音を出します。

昔、ショボいFM音源で色々工夫していた中の1つの方法で、ショボいキック音(バスドラム)に、ベースの低〜くて短めの音を足し低音を増強したりしてました。
(その時考えた方法達が、アナログシンセシミュ等への応用で後々重宝するのはまた別の話し)

はい、PLAY文に応用してみます。
短い周期の低〜い音をバスドラ代わりにして、1オクターブ上位の音をスネア代わりに鳴らすと、ほらドラムっぽく聞こえるでしょ?
(多分、きっと、恐らく、かもしれない、だったらいいな…)

10 PLAY"T200L■S1M400"
20 PLAY"O3C O4C O3C O4C"
30 GOTO20
(■の数値はお好みで)

はい、ショボいですが
ドッパッ、ドッパッ
にはならなくとも、
ポッタッ、ポッタッ
位の感じがします(したってことで)
まぁ、無いより全然ましです。
MSXでこんな感じの音出してるゲーム沢山あった気がします。
☆エンヴェロープを使うため、音量指定の「V」が使えないデメリットがあります。


●音数少ないのをやりくりする●
・同じトラックの低い方の音達と、高い方の音達を別の楽器として扱う。

・そもそもトラック数少くて成立するジャンルの曲で勝負する!?
(開き直ったもん勝ち的発想)
初期のテクノ系実験音楽みたいな感じ?
個人的には、反復する呪術的なシンセベースと単調なリズムに金属音やノイズが乗るような、初期のエレクトロニック・ボディミュージック(EBM)の方法論がミニマル系より結構マッチすると思ってます。
(DAFの一部の楽曲やニッツァーエヴの方法論がシンプルで、特にPSGとマッチすると思います)

●このへんに、ツールかBASICの簡易的なドライバでも追記する予定です。
(あくまで予定ですが、BASIC簡易ドライバは自分が使用するつもりなので絶対必要かと思います。)
他にも簡単な16分割のリズムボックスがあると便利かなと思います。


■他にも思い出したりしたら、追記修正なるべく致します。■
ひとまず下書き公開w

■MSX BASIC入門 ゲーム制作〜番外編〜■MSX 高速化テクニック考察■

5/16追記修正
MSXは電気羊の夢を見るのか?〜
本題
■MSXBASIC速度アップの方法を探ります。■「TIME」変数で検証もします。


●「DEFINTA-Z」で変数の整数型宣言を行う。●(確保するメモリも削減)
(※「RND」を使う場合は個別に「INT」を付けないと遅かったです。)

●基本的な記述に関すること●
・「:」を使い1行により多く詰める。
・「REM」や「`」を使わない。
・変数名を短く。(1文字が1番速い)
・扱う数値を速い物にする
整数型の0〜9が1番、10〜255が2番目に使用メモリも少なく速度も速い。(※MSX-DatapackのP258参照)
0〜9>10〜255>256〜32767
・メインルーチンやサブルーチンをプログラム前方に置く。
(行番号若いとアクセス速いそうです。)

●「LOCATE」「PRINT」文関連●
・「PRINT」文末尾に「;」を足す。(検証済)
※「;」で文字列を接続し表示すると遅くなる。(超意外!!!)
・「LOCATE ■,■」のX座標が0なら「LOCATE,■」と省略。(※速度未検証…)
・「LOCATE■,■:PRINT"■";」と「VPOKE■,■」ではどちらが速い?
(これも検証したけど結果を忘れたのでそのうち元気な時にまた検証します)

●アドレス指定●(検証済み)
※「PEEK」「POKE」「VPEEK」「VPOKE」等アドレス指定をする場合、10進数より&hで始まる16進数で指定した方が速い!
(中間コードの性質上あり得るかとは思いますが驚き!!!)

●スプライト関連●
・PUTSPRITEとVPOKEどちらが速いのか?(検証しましたが忘れてしまったので、そのうち検証します)

●IF文関連●(検証済分)
・空白を削減し詰めて記述
「IF A>7 THEN A=0 」は「IFA>7THENA=0」にする。
・ 「IF〜THENGOTO■」(■は行番号)
は「IF〜THEN■」に省略。
・「IF〜THEN〜ELSEGOTO■」を「IF〜THEN〜ELSE■」に省略。
・無駄な変数を減らす
「T=STRIG(■):IF T THEN 〜」なら、
「IF STRIG(■) THEN 〜」に変更
(変数Tを他で参照しない前提なら)

●FOR〜TO〜NEXT文関連●
・繰り返しの処理は極力展開し、「FOR〜NEXT」文を極力使わない。
・「TO」の前後の数値も、0〜9や10〜255の数値に収めると、僅かに速くなる
・「NEXT ■(変数名)」は、
変数名を省略すると速くてメモリ節約にもなるというのが通説。
・「NEXT:NEXT」をまとめ、「NEXT■、■」(■はFOR文で使われているそれぞれの変数名)にする。

●「GOSUB」関連●(検証済)
・サブルーチンを展開
サブルーチンへの往復分速くなる。
(2ヶ所以上で呼び出すサブルーチンを展開すると、メモリ使用量が増え遅くなる場合もある??)
・GOSUB RETURNの行き帰りより、GOTO2回の方が速い。
・「GOSUB RETURN」で呼び出す良く使うサブルーチンは若い行に置く。
(※修正。ネット上に詳しそうな方の説明があり、若い行番号程アクセスが速いそうです)

●変数に0代入が複数ある場合、「CLEAR」分を先に入れれば一度に複数の変数を0に定義出来、速くなる場合がありメモリ削減も出来る●(未検証)
※「CLEAR」は変数の型宣言より前に置かないといけない。
(これは勝手に思い込んで変数の初期化に使ってたけど、検証が必要かも…)

●一部の乗算式の展開●(検証済)
乗算より加算が速い場合がある。
「A=A×2」は「A=A+A」とした方が速い(3倍以上は遅くなり、使用頻度は少ない)



★以下は全て未検証の課題★


▲論理演算を別の物に置き換える▲
論理演算は全体的に遅いようなので、他の物に置き換える。
・IF文の方が速いので、極力IF文に変更する。(未検証…)
▲「IF A=A<(定数や変数)AND A>(同じ定数や変数)THEN〜」を「<>」や「><」等に変更する。
「IF A<>(定数や変数) THEN〜」等に変更。
▲良く使う変数の初期値を早めに宣言する▲
▲メインルーチンを短くする▲
(アルゴリズムの単純化ならば間違いなく速いけど、サブルーチン飛びまくると遅くなりそうなんだけどなぁ)
※MSXBASICには当てはまらない場合もあるのではないかと考えてます。

▲複数方法のある自キャラ移動のプログラムではどれが1番速いか▲
(「IF」文羅列や、「ON ■ GOTO〜」や、「MID$」を使うのを比べてみたのですが、結果を忘れたので再検証しないとです…汗汗汗)

▲ファイルの読み込み▲
BASIC上でVRAMデータを書き込むよりも、BSAVEされたVRAMデータファイルを読み込んだ方が速い。
(どの位のデータ数からファイル読込みが速いか調べるのは、ちとしんどいので未検証のままで…)



■まとめ■
意外な結果も多く、色々検証した方が良さそうです。
検証をしていると、BASICインタープリタ内での挙動が何となく見えて来るような気がします。(えっ、しない?)
※一定条件下での検証なので、全てにおいて高速化にはならないとは思いますが、1つの指針としては有用ではないかと思います。
(昔、BASICでシューティングゲーム作ろうとして調べた時の記憶頼りだったり、複数一度に検証しメモ取り忘れたりしたので、再検証しないといけない物が多い…)


◆他にもあったら教えてエロい人◆

◆予告なくのんびり検証しつつ加筆修正整理します◆

■MSX BASIC入門 ゲーム制作〜番外編〜■簡単な嘘縦横スクロールを考える■

5/15更新
※エイプリルフールでも、嘘内容ではありませぬ。
番外編は、自分に向けた自由な内容にします。(大した内容では無いよう…)


本題
■手抜き嘘スクロールを考えてみました。(SCREEN1や1.5ベース)■
マップデータ無しで、同じパターンを繰り返す物に絞っています。
※簡単に思いつく代物ですが、マシン語にも応用可。


●縦に星が流れるように見せる嘘縦スクロール●
・8 ドット(1文字分)嘘縦スクロール
f:id:FujiiMar:20200218183935j:plain
↑残像だらけですみません。

★超絶簡単ですね。
スクロールさせたい最初の行にランダムにドット文字("・")を1つ置き、エスケープシーケンスの1行挿入を使い、8ドット(1キャラ分)分下にスクロール。
これを繰り返し星が流れた風の処理の完成です。(1番簡単な方法ですね。)

☆※画面横&下方向に流れない場所を確保出来ず、流させないスコア表示等は画面上部にしか作れないのと、少し処理が重いのがデメリットです。
エスケープシーケンスの1行挿入は凄く便利でアイデア沢山浮かびますよね。
f:id:FujiiMar:20200218183906j:plain
↑※PRINT文中の「;」「+」を省き、最後の「;」だけにするのが1番速いです。


★★★●1ドット単位で星(ドット)を複数流れさせる嘘縦スクロール●★★★
・メインルーチン内で呼ぶのはVPOKE文2つ+αだけの単純な方法。

星位は滑らかに流したいので、今回初めて考えてみた応用の広い方法です。

まず、a〜x等のフォントデータが連続している24文字を、縦1列分順番に並べて置き、そのフォントデータを全て00Hで埋めます。
(※MSX依存フォントの&H80〜の文字等を使った方が色々賢いのかもしれません…)
次に、フォントデータがVRAM上に8バイトずつ順に並んでいるのを利用し、
01H(1ドット)を書いてはアドレスを1増やして書き、一つ前のアドレスに00Hを書き込んでやります。
xのフォントデータの次まで来たらaに戻ればよいだけです。
これだけでは星1個なので、予めa〜xの順番を適当にシフトした列を複数列画面に貼っておけば、
嘘星スクロールルーチン内のVPOKE文2つ+αだけで複数の星を一度に流れさせることが可能です!
メリットは星が増えても速度が落ちないことです。
★応用すれば、星を2重スクロールさせたりとか海の波にするとか、色々応用出来そうです。

☆※同じパターンの繰り返しになるのと、SCREEN1.5(多色刷り)には通用しないのが最大のデメリットです。
逆に言えば、多色刷りでない方がメリットがある場合もあると思いました。

f:id:FujiiMar:20200204210004j:plain
↑下準備が長いですが、メリットが多いと思います。1列飛ばしにしていますが「STEP2」を削除したりすると、簡単に32列に出来ます。
(アレッ?2行の最後に誤記入あるぅ…汗)


●星を1文字分流す嘘横スクロール。●
・8ドット(1文字分)嘘横星スクロール。

・上記の縦8ドット未満スクロールの応用で縦を横に変え準備をし、1番右から8バイト減らしながらフォントデータを書き換えるだけでも可能です。
これは横方向なので、SCREEN1.5(多色刷り)でも簡単に使えそうです。

・もっと一般的(?)な方法なら、1行分配列変数に「MID$」の文字列として入れておき、
31文字分「RIGHT$」で取り出して、最初の1文字分を「LEFT$」で取り出しそれを付け足し、それを配列変数変数分繰り返しす。
(この方法だとBASICでは重いです)

●星を1ドット分流す嘘横スクロール●

簡単な事だと気付きました…
&B00000001を2倍して8回目に元に戻して上記の1バイトスクロールをさせればいいじゃないのぉ
ビットのシフトやローテイト命令なくても掛け算割り算あるじゃないのぉ
(その内具体的なプログラム作ってみます)


★★★●嘘3D横スクロール●★★★(超絶手抜き)
・3D機能のないMSXで、ワイヤーフレームや3D演算等を使わず、それっぽく見せる方法として、紙芝居(アニメーション)を考えてみました。
※画像準備中
色々実験し、今回は縦横4✖32文字分で上下「PRINT」文で3コマ分表示を行い、また最初に戻らせてそれっぽく見せました。
1ドットスクロールとも、1文字(キャラ)スクロールとも違う、不思議な効果になったと思います。
私は絵を書くのが苦手だし、データを増やすのも面倒なので手抜きですが、もっときちんとやればかなりそれっぽく見えると思います。(手を抜いたので、今回はパースの狂いがあります…)
紙芝居方式は、巧くやれば色々な効果を出せそうです。
※画像準備中
☆3パターンの画像データが結構多いのがデメリットです…。
※初代MSXBASICの機能の範囲内で、もっと速く表示する方法も考えているので、そのうち実験してみます。

何れも、シューティングゲームで使うことを想定しており、BASICで使うと速度的に厳しいので、べーしっくんで使うかマシン語化するのが得策かもしれません。


◆嘘縦横スクロールを検討していたら、大昔にDELのコントロールコードで嘘横スク出来ないか、一生懸命テストこいてダメだったホロ苦い記憶を思い出しました…。◆

■他にアグレッシヴな方法考えたりしたら、追記修正行います■

■MSX BASIC入門 ゲーム制作①■簡単いきなりスプライトぉ?!

◆娘のためにBASIC入門的な物を考えてみました。◆(視覚的な物を優先し、ゲーム制作の近道を目指します。)
※アルファベットの入力は、準備編で多少慣れている前提です。


本題ここから、すたーてぃんっ♥↓

◆コンピュータは、人間が指示をしないと何も出来ないおバカさんなので、コンピュータでも理解出来るBASICという言語で、ゲームを創れるようになりましょう!◆

■BASICの立上げ■

●さぁ、電源を入れて下さい。

f:id:FujiiMar:20200326160453j:plain
↑こんな画面が出て、
f:id:FujiiMar:20200326160525j:plain
↑こんな感じの文字を入力出来る画面になったら始まりです。


■画面の準備■

●まず、最大15色使える横32列✖縦24段のマス目のような画面モードにする、
「SCREEN1」という命令を使ってみます。

「SCREEN1」とキーボードで入力し、
逆Lのような形をしているリターンキーを押して下さい。
命令を入力しリターンキーを押す事で、実行をさせられます。
画面には次のように出ていますか?

SCREEN1
OK

※入力した命令に問題がなければ、「OK」という文字が表示されます。
決まり事から外れたことを打ち込むと、「syntax error」のような表示が出るので、入力し直してみましょう。


●次に、画面の色を変えてみましょう。
「COLOR」という色指定の命令を使い、

COLOR 11,1,11

と入力し実行してみましょう。
(数字と数字の間は「,」で区切ります)

文字と外枠が明るい黄色で、文字の背景が黒になっていたらOKです。

「COLOR」の後に続く3つの数字は、
左から前景色(文字の色)、背景色(文字の背景の色)、周辺色(外枠)
の3つで、各数値は0〜15で

■0=透明・・ ■ 8 = 赤
■1=黒・・・ ■ 9 = 明るい赤
■2=緑・・・ ■10=黄色
■3=明るい緑 ■11=明るい黄色
■4=暗い青・ ■12=暗い緑
■5=明るい青 ■13=紫(マゼンタ)
■6=暗い赤・ ■14=灰色
■7=水色・・ ■15=白

に対応しているので、数値を変更し色々(色なだけに?)遊んでみましょう。
(※文字と背景を同じ色にすると、字が読めなくなるので注意です。)


■行番号■

●さきほど入力した物に、行ごとに番号を付けると、
行番号の小さい順に実行し、最終行まで行くと終了する、命令のかたまりの「プログラム」になります。

10 SCREEN1
20 COLOR 11,1,11

1つの行番号を入力し終えたら、必ずリターンキーで登録をさせてから、別の段で次の行番号を入力して下さい。


■プログラムの確認■

●次に、プログラムがきちんと登録されているか確認してみます。
登録されているプログラムを表示する命令「LIST」を入力し実行して下さい。
上記と同じプログラムが表示されていればOKです。


■プログラムの実行■

●入力が終わったら、行番号を打たずに「RUN」と入力し、リターンキーを押すとプログラムが実行されます。
行番号の付いているプログラムを実行する時は「RUN」を使います。

※行番号を付けず直接実行する事と、行番号を付け登録してから実行する「プログラム」との違いに注意しましょう。


■プログラムの削除(さくじょ)■

●ここで一旦(いったん)登録したプログラムを全て消してみます。
「NEW」という命令を入力しリターンキーを押して下さい。

「LIST」で、何も出なければOKです。


◆ここまでで、最低限の操作方法は理解出来たのではないでしょうか。
ここからは、ゲームに特に必要なことを優先して覚えて行きましょう。◆


■キャラクター表示■

MSXのほとんどのゲームでは、自機主人公敵キャラ等を、スプライト(SPRITE)という機能で表示しているので、スプライト機能を使ってみます。

まず、以下のプログラムを頑張って入力してみて下さい。
(※プログラムの詳しい説明は次回行います。)

10 SCREEN1,1
20 A1$=CHR$(&B11111111)
30 A2$=CHR$(&B11111111)
40 A3$=CHR$(&B11111111)
50 A4$=CHR$(&B11111111)
60 A5$=CHR$(&B11111111)
70 A6$=CHR$(&B11111111)
80 A7$=CHR$(&B11111111)
90 A8$=CHR$(&B11111111)
100 SPRITE$(0)=A1$+A2+A3+A4$+A5$+A6$+A7$+A8$
110 PUTSPRITE 0,(111,111),5,0

※$はSの真ん中に|(縦棒)が入っているような記号で左上の方にあるキーです。
「$」や「&」や「(」や「)」は、SHIFTキーを押しながら押すと入力が出来ます。


●では、プログラムを実行してみましょう!
「RUN」して画面真ん中あたりに四角いキャラクタ(スプライト)が表示されたら大成功です!


■スプライトの色の変更■

●今度はそのキャラクターの色を変えてみましょう。
110行の「5」の部分が色の指定になっているので、「COLOR」の時に出て来た0〜15の色から好きな色に変更してみましょう。
(※背景と同じ色にならないように気をつけて下さい)

実行(RUN)したら、思った通りの色になりましたか?


■デザイン変更■

●四角いキャラクターだと寂しいので、デザインを変えてみましょう。

20〜90行の「11111111」の1の部分は、1は塗り潰し表示され0の部分は表示されない透明色になるので、
変更して好みのキャラクターを色々作ってみましょう。
変更したら必ずリターンキーを押してきちんと登録して下さい。

実行してみると、何だかグッとゲームっぽくなったような気がしませんか?


■ひとまず、出て来た命令や書式を整理し今回はここまでとします。■

●画面の準備
・SCREEN(画面モードの変更)
・COLOR(画面の色変更)

●行番号を付けるとプログラムのかたまりになる。

●直接命令する
・LIST(登録したプログラムを表示する)
・NEW(登録したプログラムを消す)
・RUN(登録したプログラムを実行する)

★以下は次回以降説明予定★

●SCREEN1,1の2つ目の1の意味(スプライトサイズの指定)
●A1$〜A8$(変数の箱)
●CHR$(キャラクタコード指定)
●SPRITE$(スプライトの形を登録)
●PUTSPRITE(スプライトを表示)



以上、良く頑張りました!!!
( ´∀`)/

次回以降、スプライトをもう少し詳しく(くわしく)説明をしてから、動かして行こうと思うので、それまでにお気に入りのキャラクターを創っておいて下さいね。
( ´∀`)
















◆って、BASIC説明すんのすんげぇ難い…(汗)
字数を減らし簡潔に解りやすく説明するって、高校1年中退の私には凄く難しいです…◆

■四年生の娘が理解しやすくなるよう読めない字を削減し、記述間違いも訂正し、必要のない説明をドンドン省き、簡略化し加筆修正整理しますが、各命令を教える順番はゲーム制作に優先される物からで、通常のBASIC入門としては邪道になります。■


※頭の良い方に改善点を教えて頂けると助かります。

■MSX-FAN 一画面プログラムの切ない思い出■

■昔々、あるところにMSX-FANという雑誌の投稿プログラム紹介ページがあったそうな。
その中で一画面プログラムという横縦40×24内の字詰めで完結させるBASICのコーナーがあってじゃな、
わしも投稿しようとせっせと色々創っておったんじゃ。
しっかし、面倒臭くて一度も応募せんじゃった…■

ってことで、昔のFDがいくつか生きていたので、記念にココにおもひでを記しておきます。
残念ながら、処女作のエスケープシーケンスを使ったレースもどきや、横スクジャンプゲーや、マシン語で2重スクロールさせた壁をビットバイパー(ドットバイパーではない)が避けるゲーム等々複数データがご臨終してましたが、いくつかはここで成仏させてあげたいと思います。
(毎回課題を作り、何か1つ他の人と違う要素を盛り込むつもりで創ってました。)


●ディスマシンブラ機能付き簡易マシン語モニタ「よるのおともに」●
(「に」はVer2の意)

・後述するシューティングゲームもどきを創っていた時に、ハンドアセンブルに疲れ切り、
アセンブラ創ったろかー!」っと、
無謀なことを考えたものの簡単に創れる訳もなく、
たまたま何処か(確かマイコンBASICマガジンだったと…)でディスアセンブラをBASICで創った人がいるのを見掛け、
ディスアセンブラなら創れるのではないかと思ったのですが、
普通に創っても面白くないので、何かアグレッシヴな方法がないかなぁと、
ニーモニックやら何やらの表を死ぬほど見ていた時に、
コード表にある程度の規則性があると気付き、巧く活用すれば面白くなるかなと始めてみたところ、
ニーモニックに対応する必要バイト数のデータを、予想以上に短いプログラムでデータベース化出来たので、
であればマシン語モニタ(既に創っていた短いプログラムの「よるのおとも」)と合体させた一画面プログラムが出来るんでないかと色々苦しんで完成(していない…)させました。
マシン語モニタとしては必要最低限位の機能ですが、指定したアドレスの命令の必要バイト分を横に並べて表示させる(だけの)その名も「ディスマシンブラ機能!!!」を内蔵させています!
(ディスアセンブラ一歩手前の状態と言ったら良いのでしょうか?コード表片手に解析するのが少し楽になります)
今更解析するのもめんどいので、覚えている範囲で簡単に説明すると、

・アドレス指定。
・指定済みのアドレスから実行。
・指定済みのアドレスに直接入力。
・指定済みのアドレスから8バイトダンプし、アドレス値をプラス8する。
・指定済みのアドレスの命令に必要なバイト数分のデータを横に並べ表示し、アドレス値に必要バイト分プラスする。
(各機能はカーソルキーの組み合わせで発動)

と、いう感じの機能があったような気がするようなしないような…です…汗

f:id:FujiiMar:20200315160617j:plain
f:id:FujiiMar:20200315165928j:plain
f:id:FujiiMar:20200315165952j:plain

画面内にダンプやら直接入力やらディスマシンブラやらを、共存して表示出来るので、デバッグするのに意外と重宝した覚えがあります。
※何十回と必要命令バイト数データを見直してはいますが、どこか微妙に間違っている 可能性もあると思います。

f:id:FujiiMar:20200315171629j:plain
↑これがディスマシンブラ機能です。

個人的には最高傑作でしたが、今創ればもちっとマシになるかと思いますが、今更なんの役にも立たないプログラムですから…。
おそらくですが、後で問題を修正しようとして一画面+1行位になったままのようで、そこで力尽きたようです。
(その後ディスアセンブラは創りませんでしたとさ…トホホ)



マシン語超最低限シューティングゲーム「KIHON(仮)」●

マシン語の一画面シューティングゲームが掲載されていた(確か450バイト位のマシン語だった)のを見て、
もっと少ないバイト数でシューティングゲームとしてギリッギリ成り立つのかを課題にして、必死に考えて挑戦したプログラムです。
(完成したら一画面に納まる程度でバージョンアップするつもりだったけど…)

f:id:FujiiMar:20200315163452j:plain
↑最初の2列は、あえて切れたままの画像で…(どうせ16進データの羅列だしね)
開始アドレスがD000でないのは、プログラムを縮めるためのジャンプ命令の(JRだったかな?)関係で後からサブルーチンを前に移動したからか、データを前に置いたからだと思います。
f:id:FujiiMar:20200315164925j:plain

8方向でなく左右2方向のみ移動にした(左右はSTICK値の0と1〜5と6〜8で分岐)り、玉は一発しか出ない自動連射だったり、乱数使わずにRレジスタ(だったっけかな)を使ったり、
紙に書いたプログラムとコード表を穴が開く程見返して、更に短くする方法を閃く度ハンドアセンブルを繰り返し、200バイト近くまで減らせたと思います。
(その割にキーボードでもジョイパッドでも遊べるようにはしてます。)
敵は4機で自機に向かって来るので、一発ずつしか出ない弾で交戦して何点まで行けるかだけのゲームです。
(一応ライフ制、1000点ごとに敵の縦移動ドット数が増えて行き、音は「パンッ」という破裂音だけ出してます。)
途中から「よるのおともに」を使ってデバッグが少し楽になりました。

これも今ならもちっと短くもっとアグレッシヴにゲーム性を上げて創れるのではないかと思います。
(何かウェイト部分とか短く出来そうとかすぐに浮かぶし)
悲しいかな、背景枠の色設定するの忘れて、後からBASIC内で設定してたり、
REM文にせず16進データだったり、色々力尽きた感満載です。

友達や子供達には比較的好評でした。

f:id:FujiiMar:20200315165444j:plain

f:id:FujiiMar:20200315165510j:plain


■まとめ■
他に、MSX-FANに掲載された一画面キャラエディタに対抗心メラメラで、
機能増やした一画面プログラムの8×8や16×16のエディタも創りました…。
無いものは自分で創るDIY精神が、
MSXユーザーには根付いていましたね。

可愛いプログラム達は、これで成仏出来たかな。

※他のプログラムもぼちぼち追記して行きます。

◆予告なく加筆修正します。◆

■MSX BASICで活用出来そな簡単ツール■

東京オリンピック会場地下施設にAKIRAはいるのか?
なんて思う今日この頃ですが…

本題
MSXでゲームを創る時に役に立ちそうなツールを探してみました。■


●これで貴方もドットクリエイター!●
〜キャラエディタに便利なソフト〜

・「ドット絵メーカー」(スマホアプリ)

いくつかアプリを使ってみましたが、このアプリが私には1番便利でした。
左右上下反転、上下左右シフト、アニメーションや画像取込みなんて機能まであります。
電車移動や時間が余った時に、何処でも気軽にキャラ作成が出来てとても便利です。(結構ハマりますよ)
流石に16進データとかは出ませんので、創ったキャラは自作のエディタで打ち直し、データを拾って入力とかしてますが、
自作エディタ(昔々一画面プログラムに投稿しようとして創った8×8や16×16のそれぞれのソフト)より数倍効率が上がりました。
キャラ以外でも、
32×24ピクセルにしてSCREEN1での背景のざっくりとした雰囲気を見てみたり、色々簡単にテスト出来ます。

今のところ不満は、アニメーションをテストする時のキャラサイズを変更出来たらってのと、部分コピペや複数のデータを分割や統合出来たらなぁ(部位をバラバラに創ってから1つにするとか)位です。
(そこまで無くても凄く便利ですけど)


・「Tiny Sprite」

「大仏パラダイス」というゲームを創った方のはてなブログで紹介されていたのですが、PCでしか使えないと思っていたら、スマホでも普通に使えるのに最近気付きました…(汗)
何と!MSXBASICのスプライト定義のプログラムまで吐きます!
ビックリです、創った方に感謝です。
まだきちんと使ってないので何とも言えませんが、16進データを吐けるのは凄く凄〜く便利です!
ただ、スマホでは「ドット絵メーカー」の方が使い勝手は良いかもしれません。

これから使ってみてまた追記します。

※使ってみて、スマホだとドットが小さいのが微妙でした。
ドット置く画面をスマホ上で大きくする方法がはみつかりましたが、スマホ画面ピッタリにするのが難しく、スマホでは使いづらいようです。
簡単にスマホサイズにする方法あったらすみません。
m(_ _)m



●これで貴方もチップチューンクリエイター!?●
〜BGM創るのに便利なDSのソフト〜

・「KORGDS-10やM-01」
f:id:FujiiMar:20200409194745j:plain

MSXのPSGっぽい音で簡単に楽曲を創るのに、
スマホシーケンサーアプリ等をいくつか使ってみましたが、DSのソフトの方が全然使いやすかったです。
アプリだと高機能過ぎたり、シンプル過ぎたりしますが、
DSのこのソフト達は丁度良い位の性能機能で、丁度良い位の使い勝手です。
セーブできる曲数がやや少なかったり、中古でも意外と高いのがデメリットでしょうかね。
一応どちらもPSGな音を吐けますし、
DS-10はアナログシンセシミュレータに簡単なシーケンサーが付いていて、音色も自分で創れるので頑張ればPSGそっくりな音も出せますし、
M-01なら用意された音色の中から近い物を選べば簡単です。
(私がこのソフトを発売時から使ってたり、自分がやっていた会社で輸入版の時から販売してた位好きってのもオススメな理由として大きいですが…)

iosで同じような兄弟アプリがありますが、確かAndroidでは無かったと思います。


●他に●
ツクール系ソフトで代用するのもオススメです。
使い慣れたソフトなら効率も上がりますよね。


■まとめ■
MSXは実機派の私ですが、実機と比べようも無く便利なので、キャラクタエディタと曲創りは、外部ツールを使うことにしました。

自作の8×8と16×16のソフトでちまちまドットを打っていた頃に比べると、格段にキャラ作成が楽になったので、20数年ぶりに少し本気のゲームを創ろうと思いました。

私が最初に曲を打ち込んだのは、ファミコンの「オトッキー」というゲームの簡単な楽譜入力で、映画「トップガン」の曲を打ち込んだのが初めてで、その後シンセサウルスを使い、MIDIサウルスでRolandの音源CM-32Lを鳴らした時は、根拠も無くこれで俺は完全に無敵だと狂喜乱舞しました…。
今は無料ソフトでも良い音で沢山のトラック数で曲創りが行えたり、エフェクトも豊富なので、
何て便利な世の中になったと感慨にふける今日この頃です。


◆予告なく加筆修正します◆

■MSX BASIC入門 ゲーム制作 簡単準備編■

◆私が作ったゲームを見て、娘が「私もゲーム作りたいっ!」と言うのでBASIC入門的な何かを始めました。◆
(間違って下書きに戻してしまったので、再掲載です…汗汗汗)


■準備の巻■
いきなりプログラムを教えるのは、乗り越えるべき壁が多過ぎるので、
まずはキーボードに慣れてもらうため、
簡単なゲームでキーの配置を覚えて貰います。

●〜その1〜●
・タイピングゲーム的なあれ的なそれ的なコレ的な…
以下の簡単なプログラムを大急ぎで作りました。
アルファベットが落ちて来るタイピングソフト的な、その名も「キーマトリックス」という安直ネーミングのゲームです。
大文字一点に集約した半覚醒なゲームです。(なんだそりゃ)

f:id:FujiiMar:20200204210859j:plain
f:id:FujiiMar:20200204210526j:plain
(慌てていたので、同じ命令が2回あったり色々酷いですが…)

※某1画面プログラムに慣れ過ぎているため、ゴチャゴチャしたスパゲッティプログラムですみません。
f:id:FujiiMar:20200204210620j:plain
落ちてくるアルファベットを入力するゲームで、ミスタイプしたり画面最下部まで問題が流れてしまうとミスになり、5回でゲームオーバーになります。

◆娘に凄く気に入って貰え、初回で1時間近く遊んで貰えました。
( ´∀`)
一部の友人にも評判が凄く良かったので、調子に乗ってそのうち創り直すかもしれません。◆


●〜その2〜●
・2本目は、BASICでよく使う命令等の綴りを覚えるための簡単なソフトで「BASIQ」と名付けました。

f:id:FujiiMar:20200218083053j:plain

表示された文を入力してリターンキー押すだけです。
これは超絶手抜きなので、もう少しゲーム性を上げて子供でも楽しめるよう改良を加えたいと思います。

◆しばらくこんなゲームっぽい物で、キーボードに慣れて貰います。◆

その後、うちにあったMSX-FANの一画面プログラムの入力をやらせてみました。
やはり、人のプログラムを入力するのはプログラムのパターンに慣れるのに1番だと思います。

今回はこんな位で、次回から本格的(なのか?)に始めます。


■まとめ■
何十年かぶりに、BASICをやったら凄く楽しかったので、しばらく色々やって行こうと思います。
安い(短い)早い(速い)美味い(巧い)
が理想ですけど、安い(短い)プログラムしか創ったことがないので、どうなることか…



◆予告なく追記修正します。◆

■MSXジャンル別おすすめゲーム■

韓国でMSXの新機種が販売されてるようで、羨ましい今日この頃です。

本題
◆ジャンル別でおすすめ又はやってみたいゲームをいくつかメモっときます。◆
一応軽く40本以上は遊んでますが、やったことの無いゲームも沢山あります。(つい最近、追加でディスク版のゲームを30本位手に入れましたwグフフ)
初代MSXMSX2以降に大別して、それぞれ一本ずつアバウトに選んでみました。
ファミコンで先に発売しているソフトは極力外しました。


■横スクロールシューティングゲーム
●初代MSXなら「パロディウス
MSX2以後なら「スペースマンボウ

パロディウス
横スクシューティングならコナミ
グラディウスシリーズがMSXに移植されるとは、皆思っていませんでしたが、コナミが8ドットスクロールで強引にやってのけたのは衝撃的でした。
敵キャラがスプライトとPCG両方で、とても巧く見せていたり、工夫が色々されてます。
MSX発のオリジナリティと影響力という部分で、パロディウスを取り上げておきます。

・スペースマンボウ
f:id:FujiiMar:20200204232941j:plain
f:id:FujiiMar:20200204233225j:plain
f:id:FujiiMar:20200204233410j:plain
MSXでなくMSX2以降でグラディウスを出して欲しいと思った人も多かったのではないでしょうか?
そんなユーザーの隙間を埋めてくれるのがスペースマンボウかもしれません。
縦横斜めスクロールが滑らか(特にMSX2+以降)で、グラフィックも綺麗です。
コナミMSXクラシックコレクション的な物を間違えて購入した人が、初代MSXグラディウスシリーズを見て、カクカクスクロール等ボロクソにコメントしているのを見かけましたが、
スペースマンボウが収録されていれば、印象は大きく違ったのではないでしょうか…。
MSX2以降でもっとコナミシューティングゲームを見たかった…。


■縦スクロールシューティングゲーム
●初代MSXなら「ザナック
MSX2以降なら「アレスタ」シリーズ
(個人的には「ブラスターバーン」です)

ザナック
f:id:FujiiMar:20200204235351j:plain
縦シューならやっぱコンパイルっしょ!
ガーディック、ガルケーブ、ファイナルジャスティス等々ありますが、ザナックしか持ってませんので1択でした。
(EIはやったことありましたし、ガルケーブは横スクなので)
他にも縦スクだとレイドックシリーズ、スカイジャガー、エグゾイドZシリーズ、ダーウィン4078、スターフォーススターソルジャーあたりはMSXでやりました。
(ファミコンだったらスターソルジャーを選んだと思います。)


・アレスタシリーズ
ザナックEXは持ってますが、ファミコン版からの逆移植に近く、何となく色味がファミコンや初代MSX臭いので外し、
現状では体験版しかやってないですが、アレスタを選びました。
これも入手したら追記します。
(個人的にはDS収録のブラスターバーンが大好きで、そのためにDS買ってました。最近もちまちまオクで落していて、あと2号位で全部揃います)


■疑似3Dシューティングゲーム
●初代MSXなら「VAXOL」
MSX2以降なら「FEEDBACK」

・VAXOL
f:id:FujiiMar:20200204233558j:plain
初代MSXの機能では頑張っているとは思います。
なかなか難しくて、クリアはしてませんが、色々努力を感じます。
MSXでスペハリやりたかった人達の怨念を感じます…w
MSXの色目のせいで、目がチカチカするのがたまにキズですがw
もっと面白いのあったら誰か教えて下さい。
(一応次点はゼクサスリミテッドです。)

・FEEDBACK
f:id:FujiiMar:20200204233503j:plain
なかなか手に入りませんが、どうしてもやってみたいソフトです。
YouTubeで見ると、なかなかどうしてカッコいい!いつか、入手したら追記します。
※手に入れてしまいましたwww
超カッコいいです。初プレイで2面ボスまで行ったので、バランスもそこそこ良いのではないでしょうか?
娘が「ニュータイプっぽい」って言ってましたw


■横方向アクションゲーム■
●初代MSXなら「妖怪屋敷」
MSX2以降なら「幽霊君」

・妖怪屋敷
f:id:FujiiMar:20200204233757j:plain
初期MSXではすんごく頑張っていると思います。
初期MSXを牽引したCASIO発売で、
きちんとボス戦もあり、一つ間違ったらファミコンに対抗できる傑作になったのではないでしょうか?
ルパン三世も良いですが、CASIOから1本選びたかったし…
(他に「子猫の冒険」はファミコンでありそうなジャンプゲーで結構好きです)

・幽霊君
YouTubeで見てどうしてもやってみたくなりました。
絶対に面白いと思います。
しかし、オクでも糞高い…。
何とか手に入れたいゲームです。
(個人的にはDS収録のジャンプヒーローが大好きでオススメです)
悪魔城ドラキュラグーニーズや忍者くんシリーズやマッピーは当時ファミコンでも遊んだしね。
次点は、かなり遊びやすい「モンモンモンスター」です。


RPG
●初代MSXでは自分はRPGはやっていないので全く選べません…
MSX2以降なら「ロードス島戦記

・選べない…
ディープダンジョンドラクエファミコンでやったし、メガテンは好きではないし、ウィザードリィウルティマはやってないし、ハイドライドシリーズはアクションRPGだし…
「何も言えね」って感じです…。

ロードス島戦記
生まれて初めてプレイしたFFはMSXでしたが、ロードス島戦記コンプティークテーブルトークRPGリプレイの時から好きで小説も読んでいたし、D&Dダンジョンマスターもやっていたので、グループSNEびいきかもしれません。
とにかくFDの読み込みが糞遅い印象ですが、システム的には好きでした。
当時はMSX2+のFS-A1FXだったので、ちょい高速モードでやってました。
次点は、最近手に入れて始めたティルナノーグあたりかなぁ…。
(長く遊べる分、こっちが本命かも)


アクションRPG
●初代MSXなら「ガリウスの迷宮」で異論は無いのではないでしょうか?
MSX2以降なら「ハイドライド3」でしょうか?

ガリウスの迷宮
ポポロンとても懐かしいです。
当時はセーブ出来なくてクリアはしてないですが、凄く面白かったです。
ファミコンに対抗出来るゲームは少なかったので、改めてコナミに感謝です。

ハイドライド3
ハイドライドシリーズはファミコンハイドライドMSX2ハイドライド3しかやってませんが、
当時小遣い叩いてMSXの新品のゲームを初めて購入したのがハイドライド3でしたし、PACないとセーブ出来ないので、更に一生懸命お金貯めてPAC購入してから遊びました。
残念ながらクリア直前で止めてしまいましたが、かなり長時間遊びました。
重さの概念が独特なARPGです。
何故か最近また少し遊んでますw
ファルコム系は技術的に凄いですが、ゲームバランスとかが私には向かないようですので…。


アクションパズルゲーム
●初代MSXなら「エルギーザの封印」
MSX2以降なら「ぷよぷよ

・エルギーザの封印
初代MSXにはアクションパズルゲームが沢山あるので、一瞬だけ迷いましたが、文句なくこれです!
一度はやってみて欲しいゲームです。

アクションパズル系は初期MSX時に大量に発売され、ロードランナーやライズアウトやアイスワールド等良作が沢山です。

ぷよぷよ
言わずと知れたコンパイル最大のヒット作!
落ちゲーは、テトリスぷよぷよで完全にジャンルが認知されたと言っても過言ではないのでしょうか?
ぷよまんとか余計なことをしなければ、今頃コンパイルは大企業だったかもしれませんね。(社長さんが1番脳みそコネコネすべきだったのかも…)
次点はスーパーロードランナーとエルギーザの封印ですが、エルギーザはMSX1版を選出したし、ぷよぷよMSX発で影響力絶大なのでぷよぷよにしました。


■パズルゲーム■

全てのMSXで1番面白い究極のパズルゲームは…









プログラミング!!!

「BASIC」や「マシン語」等のプログラミング言語ではないでしょうか?
いや、絶対そうです!(言い切り)
むしろBASIC1択ですっ!(それは言い過ぎ)
それどころか、全ゲームよりBASICの方が究極に面白いです!
(流石に偏見あり過ぎ…)

ファミコンの影に隠れてしまい、その存在意義はあまり認知されていませんが、ファミリーベーシックを軽く駆逐するプログラミングの楽しさが、
MSX最大の魅力で間違いないのではないでしょうか!


※それを言いたいだけだったりしてぇ
(そういうオチで…笑)


以上、ジャンル別のオススメゲームでした。

◆自分の中で順位が変わったりしたら、適当に修正加筆します。◆

■MSX BASICに追加で欲しい命令■

◆子供達がきっかけで、何十年かぶりにMSXでBASICを使い始めて感じた、初代MSXでゲームを楽に作れそうな、BASICの補助命令(マシン語サブルーチン)を、あったらいいなで考えてみました。◆
※いくつかは昔マシン語サブルーチンで似たようなプログラムを作ってはいますが…。

■既に同じような考えのDM-SYSTEM2やCMDモジュレータ等に重複する物もあるかも知れませんが、そんな古いもんは無視して考えてみます。■

●ウェイト●
・FORNEXT飽き飽きです。

●コンティニュー入力待ち●
・ループ入力待ち飽き飽きですね。

●フォント全体の変更●
・数種類のフォントから選べるとオリジナリティ度が少し上がりますよね。
(太字とか、下半分太字とか、斜文字とか簡単な計算で出来る物だけでも充分です。)
SCREEN1.5モードのPCGのカラーテーブルを変えるだけでも効果大です。
BASICでやると糞遅いッス…。

●SCREEN1.5モード初期設定●
(多色刷りともいいますね。)
・3段に別れているフォントデータを一旦1つ目と同じ物で埋めるのは、BASICでやるとおっそいです。
フォント変更と組み合わせると便利。
(後述する1バイト単位コピーを内包すると思います)

●2つのXY座標を比較●
・当たり判定必須です。
●スプライトとPCGの当たり判定●
・この当たり判定も必須
当たり判定というよりは、特定の方向のキャラクタコード返してくれるだけでもよいので…。

●8✖8又は16✖16の正方形データの左右反転上下反転90度回転と、上下左右1ドットシフト●
・これはある意味強力ですw
BASICでやると遅いし長いですが、
これならデータ量も減らせるし、言う事なし!
スプライト等に使えば、ファミコンに肉薄する処理が簡単に出来ます!
45度回転があったら最強かもw(それは無理無理…)

●1バイト単位VRAMコピー●
・VRAM任意アドレス→VRAM任意アドレスに任意バイト数をコピーさせる高速な処理
8ドットスクロールにも使えるし、色々応用が効きそうです。
RAM上で処理して一気にVRAMにコピーした方が早いかもですが…。

●任意アドレス→任意アドレスに任意データ数コピー●
●任意アドレス→VRAM任意アドレスに任意データ数コピー●
●VRAM任意アドレス→任意アドレスに任意データ数コピー●
・この3つも高速に任せられると、凄く色々出来るようになります。

★●スプライト横表示数疑似増●★
・これは超絶強力ですwww
割込みで、特定番号以降(これ重要)のスプライトをローテーションし、
横表示数を擬似的に増やすので、
MSX1なら疑似的にスプライトモード2に近くなり、MSX2以降なら疑似的にスプライトモード2以上になります。
タイミング調整が難しそう。
(単純な、この程度の仕様で充分でしょ)
※今回考えた中で、市販ソフトにも迫れて間違いなく1番欲しい命令です。

●1(複数)バイトをシフトさせる●
・BASICには1(複数)バイトをローテートやシフトする命令がないので、それ系の命令あれば楽ちん。
例えば、空白(スペース)のデータに背景画像を入れといて、アドレスを8回シフトしてループさせれば、空白背景アニメーションがBASICより速くさせられます。
配列変数とかで比較的簡単に出来るのは出来ますが、遅いBASICでは苦しいです。
(昔、1ドットと8ドットの疑似横スクロールのマシン語を使った一画面ゲームを作りました…BASICでは遅くて仕方なく…)

●8バイトPCG1キャラを縦ループ●
・これもあったら便利かも
上記のような背景アニメーションを縦方向にさせられます。

■他にも、8ドット未満のスムーススクロールをさせる(市販ソフトでもエグゾイドZ等初期の物でもやっています)とか、使っていないVRAMをドライブ代わりに使うとか色々あったら便利ですが、簡単な物に絞りました。■

◆本当は、ラベル処理出来たりマシン語吐き出すBASICコンパイラとかあったら凄く楽なんですけどねぇ。
(ラベル処理は、バッ活25号で既に実現している方がいたと思います)
あと、上スクロールで若い行番号のプログラムを逆上りながら見れるようになるだけでも、長いプログラム作り易いんだけどなぁ…◆
(PCのテキストエディタは面倒なので)

見返してみたら、ほぼVRAM操作の処理ですねぇ。
MSXでのBASICゲームは、VRAM操作が肝なのが良くわかりました。
「MSXBASICとはVRAMを制することだ」とも言えそうです。
べーしっ君プチコンでやれって言わないで…。

■適当に加筆修正します■

■MSXおすすめ名作ゲーム■

MSXの新機種の動きがないなぁ…。
西さん何とかして下さい。

本題
◆超個人的な、今でも遊べるMSXのおすすめゲームをメモっときます。◆


■スペースマンボウ■(MSX2以降)
横スクロールシューティングゲーム
(MSX2+以降だと横スクロールが滑らかになります)
f:id:FujiiMar:20200204234441j:plain
f:id:FujiiMar:20200204234524j:plain
●何度でもコンティニューが出来て、装備の復活も比較的簡単でシンプルなので、シューティングゲームが得意でない方もそこそこ楽しめます。
●自機は右向きですが、画面はシーンにより縦横斜めを縦横無尽にスクロールします。
●基本的に、特定の敵を倒した時に出る物を取るとそれに応じたパワーアップをし、
自機の上下に付けられるオプションは、ボタンを押すと玉の出る方向が上下左右に切り替えられて、
ショットは普通の玉のニードルと、右三方向に玉が出るワイドの二種類で、他にグラディウスで言うところのミサイルもあります。
グラディウス系好きならイケます。
▲個人的にMSXのゲームの中でぶっちぎりで1番好きなので、
沢山の人にプレイして欲しいのですが、中古価格がアホみたいに高く非常に残念です…。


■ブラスターバーン■(MSX2以降)
縦スクロールシューティングゲーム

ディスクステーションに掲載された、少し特殊な連載型縦スクシューティングです。
●1番のおすすめポイントは、ゲームオーバーになっても経験値とお金はそのままなので、
プレイすればする程経験値とお金が増え、レベルアップさせたり装備を購入して成長させ、どんどん楽になって行くのでシューティングゲームが得意でなくとも、根気さえあればその号のラストまでは行けるようになり、初心者でも楽しめるところです。
●パワーアップの装備が色々あるので、買物の楽しみや自分向けの機体にする楽しみもあります。
ザナックやアレスタ等コンパイル系シューティングが好きなら、イチコロでしょう。
▲残念ながら総集編が存在しないので、全ての面を見るには中古のディスクステーションを沢山買わないといけないのですが、例え手に入れてもディスクが死んでいる物が多く、なかなか全て揃えるのが厳しいです。
(PROJECT EGGで総集編がダウンロード出来るようですが、MSXエミュレータより実機が好きなので…)


■ジャンプヒーロー■(MSX2以降)
縦スクロールアクションゲーム

ディスクステーションに掲載された、縦スクジャンプゲーです。
●ひたすらゴールまで上に上にジャンプして登っていく単純なゲームですが、左右移動に絶妙な慣性が付いていたり、キャラがコミカルでモジモジ君みたいだったり、仕掛けも色々あったりで飽きずに楽しく遊べます。
アイスクライマースーパーマリオの好きな方なら楽しめそうです。
ディスクステーション掲載のミニゲームなので、面数が少ないのが残念ですが、逆にこの位の方が子供でも飽きずに遊べるのかもしれません。
●うちの子供達には超絶大人気です。


■エルギーザの封印■(MSX1、MSX2)
アクションパズルゲーム

●色々なアイテムを使い分け、面の中の金塊を全て拾い、出口に向かうゲームです。
ロードランナーが好きな人なら充分遊べます。(ロードランナー以上かも…)
●複数人で、ああでもないこうでもないと攻略しながらやると凄く盛り上がります。
●初代MSXの頃に発売された、「王家の谷」(これも秀作です)というゲームのリメイク版であり、見た目が綺麗になっていたりアイテムも増えています。
f:id:FujiiMar:20200204234913j:plain
↑これが王家の谷
●初代MSX版とMSX2版がありますが、少し絵が違う位で、ゲームの性質上あまり大差なく感じられます。
▲これも中古がくっそ高いので、手に入れづらいのが残念です。


■スーパーロードランナー■(MSX2)
アクションパズルゲーム
f:id:FujiiMar:20200204234612j:plain
●今回選んだ中で、1番知名度が高いシリーズの一品です。
ファミコン版とも違く古いPC版(両方秀作ですね)とも違う、ゲーセンのアイレムロードランナーをアレンジ移植しています。
絶妙な移植で、当時のゲームセンターでやった記憶が蘇ります。
ゲーセン版に近付けるよう、キャラの縦横比率を変えていたり、移植の努力が感じられます。
ファミコンやPC版よりも敵キャラの種類が多かったり、一味違います。
ゲーム内容は説明必要ありませんね。
▲プログラム的に問題があり、残念ながらターボRだと動きません。
修正パッチを作った人がネット上にパッチを置いてくれてるっぽいです。
そして、あまり中古で出て来ないし高いです…(泣)


◆きりがないので、この辺で◆

■たまに加筆修正等行います■

■MSXの未来を勝手に考える■

MSXの未来について勝手に考えてみました。◆

エミュレータや後継機や新機種は偉い賢い人達が考えるとして、ここでは視点を変え、FPGADSPも使わず、なじみの実機をそのまま使う比較的簡単で実現可能そうな方法がないか考えてみました。■
(RAM64kVRAM128k以上のMSX2以降の機種を想定)

●まず、昔のMSXに求めていたことをいくつか整理してみます。

・ゲームが出来る。
・自分でゲームが作れ(そう)る。
・自分で音楽が作れ(そう)る。
・自分でCGが書け(そう)る。
・自分で周辺機器も作れ(そう)る。
・制約の中で工夫するのが楽しい。
・創作物を公開するのが楽しい。

低価格で、多種多様なことが出来そうなワクワクする夢のようなマシンでした。
(今だとプチコンとかUnityにも近い存在でしょうか?)

■次に、現代のPCに必要最低限の機能やソフトで、ノーマルなMSXに無い物を列べてみます。■

・大容量記憶装置
EXCEL
・ネット接続しサイト閲覧。
・高速なファイル圧縮解凍
・音声のステレオ再生
・動く3次元CG
・高画質高解像度(HDMIや最低限のVGA位は…)

こんな感じでしょうか?
現代のPCに最低限必要な機能があれば、また実機使えるかと思うので、
具体的にクリア出来るか、はたまた既に取り組まれているのかを、軽く調べてみました。

●大容量記憶装置は、CFやSDカードの実装を実現している方々が既におり、一部販売もされているので可能です。(私もSDカード実装させてます)
FDDエミュレータだと、読込みの遅さまでエミュレートされる場合があるそうです。

●ソフト的な物
・簡易EXCEL互換ソフトや標準的なファイル圧縮解凍ソフトは、フリーウェアでありそうですし、MSXのコアユーザーなら余裕で作れるでしょう。(速度やメモリは一旦置いておくとして…)
※ネットが出来れば、WEB上のEXCEL互換ソフトも使えるようになるかもしれません。

▲3次元の動くCGはMSXでは速度的に厳しく、ターボRで少し動く程度でしょうか。
(ポリゴンはフレームだけなら動いたとしても、テクスチャを貼り付けて複数動かすのは厳しいですよね)

▲高解像度もVDPの制約で無理ですし、高画質もRGB出力のある機種はありますが、HDMI出力はありません。

▲音声ファイルステレオ再生もハード的に出来ません。

▲ネット接続(サイト閲覧)は、前から挑戦してる方々が世界にはいるようですが、現状微妙です。(SymbOSとかUZIXのMSX実装を祈ってましたが…)

■そこで、出来ないことを補う方法を適当に考えてみたのですが、
足りない機能をラズパイ的な物にほとんど任せ、
MSXに入力と最終的な画像出力のみに集約させるなんていかがでしょうか?
バージョンアップアダプタやスターFOXの特製チップみたいなもんです。

これなら、RAM不足を補いネット閲覧やSDカード入出力や3次元の計算の補助やファイルの圧縮解凍までした上で、
ネット上に自作プログラムを公開することまで既存本体実機で可能になりそうです。

SDのスロットを2つにして、1つをドライブとして使い、もう一つにSDサイズのWi-Fi機器を突っ込むのもありかもすれませんし、
既にSD2スロットのカートリッジとSDのWi-Fiを使う小冊子もマルツ等で購入出来たりします。
指示を出す命令は、BIOSをRAMにコピーして書き換えたり、BIOSのフックを使ったりすれば何とかなるのではないでしょうか?(適当…良く考えたらBIOSの裏RAMコピー使用は色々問題が起こりやすいですね…)

●高解像度高画質●
高解像度に関しては最低でもVGA位の解像度が欲しいところですが、
それはMSXとは別物のような気がするし、MSX後継機を考える偉くて賢い人達にお任せして、
残る方法はMSX2MSX2+あたりの解像度で我慢するか、
V9990互換機能を積むかエミュレートする位しか選択肢がありません。
モニタとの接続のHDMI端子も欲しいところなので、やはりラズパイ的な物で補えればなぁと思います。
(私はRGBをアップスキャンコンバータに繋ぎ、HDMI接続してます)

●音声のステレオ再生●
音声ファイルのステレオ再生も、やはりラズパイ的な物に頼るしかなさそうです。
音源も互換性保ったまま、ステレオ化(疑似でなく)出来たら嬉しいですし、
FM音源のリズム音位は好きな音声ファイルに切り替えられたりすると、個人的に凄く嬉しいです。
更に、対応したシーケンサー等のソフトも欲しいです。
(ファミコンとかで多い、外部アンプ&DSPの疑似ステレオでは面白くありません。)

何でもかんでもラズパイ的な物に頼るのもなんですが、実機だと旧実機のスロットを活用するしか方法が無さそうです。
サイトの描画は初代MSXでは厳し過ぎるし、MSX2のスクリーンモードでも微妙だしなぁ…。
(SymbOSでは確かSCREEN7で表示していたと思いますが…)

おまけで、マウスやジョイパッドでUSBの物を使えるようになると大変助かります。
(既に同人でありますね)

■纏めると、「SDスロット✖2とHDMI等を含むラズパイ的な物を、スロットにぶっ挿して強引に足りない機能も一気に補うおもちゃが欲しい」ってことです。■

■押入れで眠っている、使い慣れたMSX実機を再利用して、旧MSXをきちんと完結させて欲しいなぁと思います。
多分きっと、現役ユーザーの大半は必要最低限の機能拡張とBASICやマシン語をそのまま使え、プログラミングしやすくゲームが作りやすいような環境が欲しいのではないでしょうか?
高性能を求めるのならMSXである必要性が全くありませんし、やはりプチコンやUnityのような環境をMSXの資産を継承したままMSX上で実現して欲しいです。■

以上、BASICとマシン語が少し使え、簡単な増幅回路を適当に設計出来る程度の、知識の薄い1ユーザーの戯言でした。


■現状で手に入りそうで比較的簡単なパワーアップアイテム■

・SDカードカートリッジ(2万以下位で海外やBEEP等で販売?)
・RGB→HDMI(1万円以下位)
・ATARI9ピン←USB(マウス接続用の物が2000〜10000円以外位で販売されているようです。
・メモリカートリッジ(ヤフオクやアマゾンで2万以下位で見かけます。)

■おまけ■
個人的には今後のMSXには、プチコンやUnity的な立ち位置を望んでいます。
(マシン語ファイルを吐けるべーしっ君的な最適化もしてくれるコンパイラも標準装備で)

関係ないですが、MSXエミュレータレッツノートに入れてMSXノートPCもどきでも作ってみようかなぁ…。

1年位MSXのソフトや本体を大人買いしていましたが、MSXの未来を考えていたらBASICやりたくなったので、子供達に向けた簡単なゲームを創りました。

◆賛同してくれる方で、MSXが前に進むための物を一緒に創って頂ける方を募集したいです。◆


■適当に追記修正します。■

■MSXミニに収録したいソフト■

◆最近ソフトが下落し本体は高騰してる中古MSXですが、(海外に流出?)
何故か出ないMSXクラシックミニの収録ソフトを妄想してみました。◆
f:id:FujiiMar:20200204235846j:plain
(↑これは、スペースマンボウ)

■個人的に名作と思うソフト等■
・BASIC(やっぱこれが1番!)
べーしっ君(命令解説TEXT付で)
・SCC(ハードだけど…)
・スペースマンボウ(1本だけならこれ1択!)
・ブラスターバーン(総集編で)
・ジャンプヒーロー(DS収録)
ぷよぷよ(元祖!)
・エルギーザの封印(MSX1とMSX2がある)
・スーパーロードランナー(ターボRだと動かないけど)
・FEEDBACK(MSX版スペハリ系)
奇々怪界(ゲーセンでたまにやった)
・ぎゃわんぶらあ自己中心派2

■その他(1番使えて権利OKな物で…)■
アセンブラ
コンパイラ(BASICやCを最適化もしてくれる物)
・グラフィックソフト
・スプライトエディター
・PCGエディター
・PSGエディター
FM音源エディター
・SCCエディター
・音系総括出来る簡単なシーケンサー

■やってみたかったソフト達■
・幽霊君(動画見て欲しくなりました)
モンモンモンスター(入手しました!)
・幻影都市(入手しましたが、放出してしまいました…)
・サイコワールド
ゼビウス(その後手に入れました!)
・ファイヤーホーク
スナッチャー(PS版はクリア済み)
・SDスナッチャー(入手したけど放出…)
メタルギア2(初代は持ってました)
タイムギャル(LDソフト!昔ゲーセンでやりました)
・中華大仙(入手しました!)
バブルボブル

●プレミア付いてるソフト●
●LDのソフト●

※初代MSXのソフトは同じような仕様の機種がMSX以外にもあり特色が薄いので、極力外しました。※

■■MSXはゲーム専用機ではないので、普通のゲーム機のラインナップとは違う物や、
今でも遊べるゲームを収録して欲しいです。MSXミニとMSX2以降ミニで別個に出してくれたらなぁ…汗汗■■

1チップMSXに積めば、版権以外は簡単に出来そうですが、
今んとこ出そうにないなぁ…
エミュレータでやれって言わないでね…(汗)

◆予告なく加筆修正します。◆