8080マイコンをつくろう!(TK−80完全復活!)
なんと8080です!
もちろん、BASICからCP/Mまで、できます!
36年の時を経ていまよみがえる
8080CPUマイコン組立キット!
なんたってはるか昔の生産中止品を集めて作る組立キットです。
生産前から堂々予告です。
入手できなくなったら
即生産終了!売り切れ御免!




2016.6.14

前へ
次へ
ホームページトップへ戻る

[第40回]

●ゲームプログラムの乱数について(3)

相変わらず多忙な毎日が続いております。
そのため飛び飛びの更新で、しかもなかなかまとまって書くことができません。
少しずつの更新になってしまっております。
どうか気長なお付き合いをお願いいたします。

前回はゲームプログラムの乱数サブルーチンのプログラムリストをお見せしました。
何をやっているか、おわかりになりましたでしょうか?
ふつう乱数プログラムというと、なんだかややこしい計算をするものと相場が決っているようですが、前回お見せしたプログラムは何も計算らしきことはやっていないようです。
でも前回見ていただきますと、このサブルーチンを繰り返しコールすると、なんとなく乱数らしき数字が得られているようです。
一体何をやっているのでしょう。

それではタネ明かしです。
実は。
モニタROMの中身を読んでいるだけなのでした。
モニタROMの中身にはマシン語のプログラムが書かれています。
それを順に読んでいるだけです。
マシン語プログラムの命令は8ビットのコードで、命令によって使用頻度に偏りはありますが、8ビットのうちの一部を取り出すと、以外に乱数的なふるまいになります。
ただ単純に取り出すとどういうわけか、プログラムのクセなのでしょうか、同じ数値が連続して出てくることがよくあることがわかりましたので、ひとつ前の数値を記憶しておいて、それと比較して同じ値だったら、それを捨てて次の値を読むというようにプログラムしています。

ちょっとイージーな方法なのですが、まあ簡単なゲームのための乱数でしたら、こんなものでもなんとか使えると思います。

ところで。
こんなイージーな方法ではなくて、もっとしっかりした計算を行なう乱数プログラムでも、ゲームにとっては致命的ともいえる意外な弱点があります。
幸いZ80にはその弱点をクリアするありがたい機能があるのですが8080にはそれがありません(Z80に乱数発生機能があるということではありません。あくまで目的外使用です)。
そのために8080用の「応用プログラム」を書くにあたって、そこでどうしようかしばらく悩んでしまいました。

さてそれではその乱数の致命的な弱点とは一体何でしょうか?

毎回細切れ状態で申し訳ありません。
この続きはまた次回にすることにいたします。

8080マイコンをつくろう![第40回]
2016.6.14upload

前へ
次へ
ホームページトップへ戻る