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

2024年10月05日

Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのC







Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのCです。
完成しました!!
メッセージ1ドットスムーズスクロールです!

24_9_17_1.png

とりあえず今回は、上手くいくかどうか分からなかったのでSCREEN1を採用しました。
おかげで、処理速度的には「早すぎる」。
結構な無駄ループで時間稼ぎしています。

メッセージスクロールなら、そんなに速度は要らないだろうしSCREEN1.5を使ってグラデーション付きのFONTを流しても綺麗でしょうね。



うーん、綺麗で気持ち良い!

24_10_5_3.png
プログラムの効率化してないので、無駄に長いです。























アドレス内容
&HA000〜メッセージデータ(MAP8 EDITOR)
&HB000〜FONTデータ(FONT EDITOR)
&HC210〜シフトオーバーデータ退避ワーク
&HC180・&HC181メッセージデータ表示先頭アドレス(初期値:&HA060(最初に入れ替えるのが「B」なので))
&HC182スクロールフラグ(0:小文字 1:大文字)
&HC183シフトカウンタ(0〜7)

MSX1でも発想次第で、いろんな事が出来るもんですね。
今回はたまたま見かけた動画のおかげでいい勉強になりました!
駿河屋
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年10月04日

Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのB







Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのBです。
プログラムが完成したので、メッセージスムーズスクロールのテストデータを作成します。
とりあえずメッセージを流せればいいので、物語のプロローグ的な物があればいいな…。

そうだ!
MicrosoftのAIであるCopilotに考えてもらおう!

…凄い!

これが、Copilotが考えてくれた、プロローグです。




プロローグ

遥か昔、世界は光と闇の二つの力によって支配されていた。光の力は平和と繁栄をもたらし、闇の力は混沌と破壊をもたらした。二つの力は永遠に対立し、均衡を保っていた。

しかし、ある日、闇の力が突如として増大し、世界は暗黒に包まれた。光の守護者たちは必死に抵抗したが、次々と倒れていった。最後の希望として、光の神は一つの予言を残した。

「選ばれし者が現れ、闇を打ち破り、再び光をもたらすであろう。」

時は流れ、予言の存在は忘れ去られた。しかし、闇の力は再び動き出し、世界は再び危機に瀕していた。そんな中、平凡な村に住む若者が、運命に導かれるようにして旅立つことになる。

彼の名はアレン。彼の冒険が、世界の運命を変えることになるとは、誰も予想していなかった。


単純ですが、自動ってのが凄いです。

それを安定のBing翻訳で翻訳します。




prologue

Long ago, the world was ruled by two forces: light and dark. The forces of light brought peace and prosperity, while the forces of darkness brought chaos and destruction. The two forces were forever in opposition and in equilibrium.

However, one day, the power of darkness suddenly increased, and the world was enveloped in darkness. The Guardians of Light resisted desperately, but fell one after another. As a last hope, the God of Light left a prophecy.

The Chosen One will come and break through the darkness and bring light again.

Time passed, and the existence of the prophecy was forgotten. However, the forces of darkness were set in motion again, and the world was once again in danger. Meanwhile, a young man living in an ordinary village is forced to set off on a journey as if guided by fate.

His name is Allen. Little did anyone expect that his adventure would change the fate of the world.


いつも通りの手順でMSX1に取込みます。
そして、メッセージ編集加工用プログラムを作成し、1行目は全て小文字に変換し、1行の幅を32文字で統一。
その下の行に、大文字の同じメッセージの行(キャラクタコードを-&H20)を追加します。

「MAP8 EDITOR」で開くとこんな感じ。
24_9_17_3.png
メッセージ中のピリオドやカンマ、カギ括弧、感嘆符等は別のFONTに変更します。

次回は実際にプログラムを動作させます。
駿河屋
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年10月03日

Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのA







Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」そのAです。
画面のチラつきと言うかガタつきの解消方法を考えます。

なぜチラついたり、ガタついたりするのか?
チラつきは、「空白になっていた大文字にパターンを戻す」、「文字パターンのある小文字を空白にする」時の書き換え処理に時間的ズレがあり、描き換え中の状態が一瞬でも表示されてしまうため。
ガタつきは、上記状態と併せて24行分(最大32×24=768バイト)のメッセージの書き換えを行っているからです。

チラつきを抑えるには、どうすればよいか?
文字パターンデータを一気に戻さなければいいです。
では、どうするか?
大文字から小文字へ8バイト上シフトした後、今度は小文字から大文字にシフトするようにします。
24_9_23_1.png
これで、大文字と小文字間で永久ループする形になります。

24_10_3_2.png

次に、ガタつきを抑えるには、書き換えデータ数を減らせばいいです。
上記変更で、大文字と小文字間をシフトループするようにしたので、8ドット上にシフトした時(小文字に文字パターン、大文字は空白状態)、最初は大文字行だけを2行上にスクロールさせます。
24_9_23_2.png
24_9_23_3.png

次に8ドット上にシフトした時(小文字は空白、大文字に文字パターン)、今度は小文字行だけを2行上にスクロールさせます。
24_9_23_4.png
24_9_23_5.png
これだと1回のメッセージ書き換えは、12行分(最大32×12=384バイト)で済みます。
更にこの方法だと、常に空白行と空白行を入れ替えるだけなので、チラつきません。

ちなみにVRAMの描き換えは、BIOS(&H005C)を使っています。
OUT命令を使えば、より一層綺麗にできるはず。

24_10_3_3.png

次回、テストデータを用意します。
駿河屋
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年10月02日

Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」その@







さて、Laboratoryテーマ29「メッセージを1ドットスムーズスクロールで流したい」その@です。
「ガリウスの迷宮」のメッセージの1ドットスムーズスクロールについて考えます。

見る限り、メッセージ行間に1行の空白行があります。
ですので、2行1セットでスクロールさせているのは明白。

で、基本的にアルファベットの大文字のみ使用。(最後に数字出てきますが4文字)

...と、いう事で、アルファベットの小文字は空白にして、その下の行に大文字をセットし、大文字から小文字へ1ドットシフトすればよいと考えました。

まず、仮に画面には小文字の行とその下に大文字の行をセット。
24_9_22_2.png
解り易いように左は内部、右が編集状態で表示しています。
小文字は空白、大文字には文字パターンがセットされています。

それを1ドットずつ上にシフトします。
24_9_22_1.png
8ドット分上にシフトしたら、8ドット一気に下にシフトし、文字パターンをシフト開始前の状態に戻して、画面全体を1行分上にスクロールします。
24_9_22_3.png

後はこれをメッセージ行分繰り返すだけです。

理屈的には簡単です。
…が、この方法ですと8ドット上シフトが終わり、文字パターンを元に戻して、メッセージを1行上スクロールさせるとき、一瞬チラつきとガタつきが発生します。
なぜならその一瞬に、24行分のメッセージ書き換えと、「空白になっていた大文字にパターンを戻す」、「文字パターンのある小文字を空白にする」時の書き換え処理に時間的ズレがあるため、その瞬間がどうやっても見えてしまうためです。

次回はこの現象が解消できないか考えます。
駿河屋
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年10月01日

Laboratory新テーマ追加




6_2_1.png

先日の記事でも書きましたが、たまたま見かけたコナミ「ガリウスの迷宮」のエンディングの、メッセージの1ドットスムーズスクロール。
MSX1では、なかなか見かけない処理です。
そこで、どのようにやっているか研究します。
私自身過去の試作などでやった事がないので、本当の意味での「Laboratory」です。










テーマ
29メッセージを1ドットスムーズスクロールで流したい

これが出来れば、ロールプレイングゲームなどで活用できますね。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年09月29日

Laboratoryテーマ18「回転する敵を作りたい」そのB




さて、今回はLaboratoryテーマ18「回転する敵を作りたい」そのBです。

前回でテーマ自体は終わっているのですが、移動データをデータベース化したら、設計した形通りにしか動かせないのではないか?と、考えてしまいます。
その通りなら少しの移動パターンの違いでも、別途データベースを作らなければならず、結局凄いデータ量になってしまいます。

そこで、少しの工夫でできる移動パターンの変更の仕方を考えます。

回転する敵に関しては、回転サイズの変更は簡単に出来ます。
・データベースを読み取ったデータを1/2にして加減算する。
・データベースを1バイト飛ばして読む。
この2つの方法は、どちらも回転サイズを半分にする方法です。
こんな感じです。


それを更に倍にすると1/4になります。


それ以外にも、X若しくはYどちらかのみ半分にする事で楕円移動に変更が可能です。

回転に限らず、放物線の揺れ幅を縮めるなども同じ考え方で出来ます。
これら踏まえて、結構な数の移動パターンが出来るのではないでしょうか?
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年09月28日

Laboratoryテーマ19「半円移動する敵を作りたい」そのA




さて、今回はLaboratoryテーマ19「半円移動する敵を作りたい」そのAです。

24_10_1_3.png
結局静止画だと、全く動きが判りませんね。

移動データを登録します。
24_10_1_1.png
前回同様、制御用コードとしてデータの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで66バイトです。

24_9_30_3.png
⓪の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら⓪を@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に加算、Y座標に加算します。
データが「&H87」になったら、最後のデータを再度読むようにして、画面外へ消えるようにします。

24_10_1_2.png
半円ですので、AとBの処理は要りません。
プログラムの効率化は図っていません。

このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年09月27日

Laboratoryテーマ19「半円移動する敵を作りたい」その@




最後は、Laboratoryテーマ19「半円移動する敵を作りたい」その@です。

半円移動する敵は、また魔城伝説の序盤のコウモリですかね。
こんな感じの動作をします。
24_9_30_1.png

前回同様、Excelで移動量におけるY・X座標を求めておき、始点からの移動量をデータベース化します。
24_9_30_2.png
データベース化するのは、半回転分のデータです。

今回も全部で124バイトもあるので、半円を⓪と@に2分割します。
24_9_30_3.png
⓪を基準とすると、@は⓪の上下反転型となるので、データとしては半分の62バイト持っておいて、後は計算で求めるようにします。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年09月26日

Laboratoryテーマ17「放物線を描いて飛来する敵を作りたい」そのA




さて、今回はLaboratoryテーマ17「放物線を描いて飛来する敵を作りたい」そのAです。

24_9_29_3.png
やはり静止画だと、全く動きが判りません。

移動データを登録します。
24_9_29_1.png
前回同様にデータの始まりに「&H87」、データの終わりに「&H88」を付加します。
これで、全データで66バイトです。

24_9_28_3.png
⓪の時は上から下にデータを読んで、読んだデータをX座標に減算、Y座標に加算します。
データが「&H88」になったら⓪を@にして、今度は下から上にデータを読んでいきます。
読んだデータをX座標に減算、Y座標に減算します。
データが「&H87」になったら、最後のデータを再度読むようにして、画面外へ消えるようにします。

24_9_29_2.png
半円ですので、AとBの処理は要りません。
プログラムの効率化は図っていません。

このロジックを「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」と「BGM演奏ルーチン(通常版)」の組み込まれたプログラムに入れて実行させます。
結果は、動画でどうぞ。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory

2024年09月25日

Laboratoryテーマ17「放物線を描いて飛来する敵を作りたい」その@




次は、Laboratoryテーマ17「放物線を描いて飛来する敵を作りたい」その@です。

放物線を描いて飛来する敵とは、有名どころではゼビウスの「テラジ」です。
こんな感じの動作をします。
24_9_28_1.png
ターン時に大量に弾吐いていくので嫌な敵でした…。

今回も前回同様、Excelで移動量におけるY・X座標を求めておき、始点からの移動量をデータベース化します。
24_9_28_2.png
データベース化するのは、半回転分のデータです。

今回も全部で124バイトもあるので、半円を⓪と@に2分割します。
24_9_28_3.png
⓪を基準とすると、@は左右反転型となるので、データとしては半分の62バイト持っておいて、後は計算で求めるようにします。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory
検索
<< 2024年12月 >>
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 31        
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード