検索
<< 2023年06月 >>
1 2 3
4 5 6 7 8 9 10
18 19 20 21 22 23 24
25 26 27 28 29 30
広告
駿河屋レトロゲーム
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
カテゴリーアーカイブ
ファン
QRコード

2023年06月27日

しまった




6_2_1.png
Laboratoryテーマ??6「自機に向かって飛んでくる敵弾」のマシン語サンプル作ってて思い出しました…。
「三平方の定理」使って弾道計算するなら、「割り算で計算結果が小数点にならないように、16ビット演算しなきゃいけない」のをすっかり忘れてました…。

なぜ16ビット計算が必要なのかを、「テーマ??6「自機に向かって飛んでくる敵弾」その?@」での数字を使って説明します。 (2023年6月12日記事参照「 テーマ??6「自機に向かって飛んでくる敵弾」その?@
1移動当りの弾移動量を計算します。
Y方向 = 72(a)÷ 120(c)= 0.6
X方向 = 96(b)÷ 120(c)= 0.8

記事内のこの部分、これです。
マシン語は小数点を扱えませんので、小数点にならないよう事前に割られる数に「×100」若しくは「×10」しておく必要があります。
そのためには、8ビットだと0〜255までの値しか使用できないため、16ビットにする必要があるのです。
Y方向 = 7,200(a×100)÷ 120(c)= 60
X方向 = 9,600(b×100)÷ 120(c)= 80

「テーマ??6「自機に向かって飛んでくる敵弾」その?A」のサンプルBASICプログラムでは何も考えずに普通に×100を組み込んでいました…。 (2023年6月14日記事参照「 テーマ??6「自機に向かって飛んでくる敵弾」その?A
6_24_1.png

MSXプログラミングから離れて久しいので、8ビットの制約を忘れてました。
Windowsプログラミングだと、特に気にする必要ありませんからね…。
なんたって、マシン語で掛け算、割り算ができるし、マシン語使わなくても処理が早いので、ラジアン計算、三角関数(Sin、Cos、Tan)が普通言語で使えますからね…。

後日、16ビットの割り算サブルーチンLaboratryで公開します。

それと、実は私は自作シューティングゲームの弾道計算にこのロジックを使っていません。(おい。)
Laboratoryテーマ??9「32方向弾」の時に説明すると思いますが、処理速度と簡易性を重視した「なんちゃって弾道計算」ロジックを使っていました。
「なんちゃって」ですので、あまり人にお勧めできるものではないというのが正直なところですが。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | Laboratory
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: