2024年09月30日
ガリウスの迷宮って…
先日、youtubeで懐かしのコナミ「ガリウスの迷宮」のプレイ動画を発見しました。
懐かしくてついつい見入っていたら…。
画像出典: 『週刊アスキー』
https://weekly.ascii.jp/elem/000/002/622/2622571/
ん!?
「ガリウスの迷宮」のエンディングのスタッフロール、1ドットスクロールしてる!?
(下のリンクにエンディング動画があります。)
画像出典: 『RETRO PC GAME MUSIC STREAMING RADIO』
http://gyusyabu.ddo.jp/MP3/1987/GALI1.html
流石はコナミ…。
これどうやってやってるのかな…?
最近、過去の制作ディスクで2Dスクロールばかり見てたので、なんとなく気になりました。
私の過去の試作プログラムにも、この手のものはなかった…。
よし! 今後制作する(であろう)ロールプレイングゲームにも使えそうなので、一度チャレンジしてみます!
久しぶりに、Laboratoryの新テーマに挙げて取り組みます。
2024年09月29日
Laboratoryテーマ??18「回転する敵を作りたい」その?B
さて、今回はLaboratoryテーマ??18「回転する敵を作りたい」その?Bです。
前回でテーマ自体は終わっているのですが、移動データをデータベース化したら、設計した形通りにしか動かせないのではないか?と、考えてしまいます。
その通りなら少しの移動パターンの違いでも、別途データベースを作らなければならず、結局凄いデータ量になってしまいます。
そこで、少しの工夫でできる移動パターンの変更の仕方を考えます。
回転する敵に関しては、回転サイズの変更は簡単に出来ます。
・データベースを読み取ったデータを1/2にして加減算する。
・データベースを1バイト飛ばして読む。
この2つの方法は、どちらも回転サイズを半分にする方法です。
こんな感じです。
それを更に倍にすると1/4になります。
それ以外にも、X若しくはYどちらかのみ半分にする事で楕円移動に変更が可能です。
回転に限らず、放物線の揺れ幅を縮めるなども同じ考え方で出来ます。
これら踏まえて、結構な数の移動パターンが出来るのではないでしょうか?
2024年09月28日
Laboratoryテーマ??19「半円移動する敵を作りたい」その?A
さて、今回はLaboratoryテーマ??19「半円移動する敵を作りたい」その?Aです。
結局静止画だと、全く動きが判りませんね。
移動データを登録します。
前回同様、制御用コードとしてデータの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで66バイトです。
?の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら?を?@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に加算します。
データが「&H87」になったら、最後のデータを再度読むようにして、画面外へ消えるようにします。
半円ですので、?Aと?Bの処理は要りません。
プログラムの効率化は図っていません。
このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
2024年09月27日
Laboratoryテーマ??19「半円移動する敵を作りたい」その?@
2024年09月26日
Laboratoryテーマ??17「放物線を描いて飛来する敵を作りたい」その?A
さて、今回はLaboratoryテーマ??17「放物線を描いて飛来する敵を作りたい」その?Aです。
やはり静止画だと、全く動きが判りません。
移動データを登録します。
前回同様にデータの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで66バイトです。
?の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら?を?@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に減算、Y座標に減算します。
データが「&H87」になったら、最後のデータを再度読むようにして、画面外へ消えるようにします。
半円ですので、?Aと?Bの処理は要りません。
プログラムの効率化は図っていません。
このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
2024年09月25日
Laboratoryテーマ??17「放物線を描いて飛来する敵を作りたい」その?@
2024年09月24日
Laboratoryテーマ??18「回転する敵を作りたい」その?A
さて、今回はLaboratoryテーマ??18「回転する敵を作りたい」その?Aです。
当然ですが静止画だと、全く動きが判りませんね。
移動データを登録します。
前回同様、制御用コードとしてデータの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで68バイトです。
?の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら?を?@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に減算、Y座標に減算します。
データが「&H87」になったら?@を?Aにして、再び上から下にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に減算します。
最後、データが「&H88」になったら?Aを?Bにして、下から上にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に加算します。
今回もプログラムの効率化は図っていないので、遅く長いです。
このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
基準線がないと、ちゃんと円描いて回ってるのか解り辛いので、円を描いてみました。
2024年09月23日
Laboratoryテーマ??18「回転する敵を作りたい」その?@
次は、Laboratoryテーマ??18「回転する敵を作りたい」その?@です。
回転する敵とは、画面内をぐるりと回転する敵です。
こんな感じの動作をします。
回転位置まで別の移動方法で移動してきて、任意位置でぐるりと回るなんてパターンをよく見かけますね。
円なので、三角関数の出番ですが、前回同様、Excelで移動量におけるY・X座標を求めておき、始点からの移動量をデータベース化します。
データベース化するのは、1回転分のデータです。
回転中に、任意位置で回転を止めて別の移動方法で逃走なんてのも、よく見かけますね。
今回も全部で252バイトもあるので、円を?〜?Bに4分割します。
形を見てみれば、?を基準とすると、?@は?の左右反転型。
?Aは上下左右反転型。
?Bは上下反転型となるので、やはりデータとしては?分の64バイト持っておいて、後は計算で求めるようにします。
2024年09月22日
Laboratoryテーマ??16「波状攻撃してくる敵を作りたい」その?A
さて、今回はLaboratoryテーマ??16「波状攻撃してくる敵を作りたい」その?Aです。
当然ですが静止画だと、全く動きが判りませんね。
移動データを登録します。
制御用コードとして、データの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで56バイトです。
?の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら?を?@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に減算、Y座標に加算します。
データが「&H87」になったら?@を?Aにして、再び上から下にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に加算します。
最後、データが「&H88」になったら?Aを?Bにして、下から上にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に加算します。
プログラムの効率化は図っていないので、遅く長いです。
このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
良い感じに波形移動しています。
因みにBGMは制作予定の「シューティングゲーム」の1面用のBGMです。
2024年09月21日
Laboratoryテーマ??16「波状攻撃してくる敵を作りたい」その?@
さて、長らく放置してしまったLaboratoryですが、「シューティングゲーム」を製作するにあたり、主に「シューティングゲーム」用の敵の移動系のテーマをやってしまおうと考えました。
多分4つとも使います。
まず、テーマ??16「波状攻撃してくる敵を作りたい」その?@です。
波状攻撃とは、いわゆる魔城伝説の序盤のコウモリです。
こんな感じの動作をします。
放物線を描いているので、三角関数の出番です。
…が、三角関数を用いて計算しながら移動させると、編隊飛行のように複数出現させるとなると処理が重いです。
ではどうするか?
何通りかの方法があると思いますが、今回は、もっとも単純な方法、最初にExcelで放物線上の任意の座標を求めておき、始点からの移動量をデータベース化します。
データベース化するのは、波形1回分のデータです。
後はそれを繰り返すだけです。
座標データ数により、敵の動作が速くなったり粗くなったりするので、そのあたりは最適な数を見付けて下さい。
このデータベースをそのまま利用してもいいのですが、全部で208バイトもある。
移動データ1つにそれだけのメモリはさすがに使えない…。
と、言う事で波形を?〜?Bに4分割します。
形を見てみれば、?を基準とすると、?@は?の上下左右反転型。
?Aは左右反転型。
?Bは上下反転型となるので、データとしては?分の52バイト持っておいて、後は計算で求めるようにします。