趣味だからこそ出来ること

一個前の記事の説明にすらなってない理由で開発滞らせていたわけですが、実はさらに開発が遅くなりそうなことを思いついていたり。

知ってる人は知っているだろうけど、実はth105_aiには初期版から脈々と受け継がれているバグがあって処理の内容に関係なく常に落ちる可能性を秘めていたりする。
その理由が実数→整数の変換処理で、これは緋想天と完全同期をしないためにどうやっても回避できない(と思っている)。

で、今まで起こさない方法がなかったので放置していたわけですが、逆に「例外起きても問題なく進められればいい」という新境地に踏み込んでみたく……
具体的にいうと
1:ai周辺データの退避
2:小数点演算フラグの初期化(不正演算時点で壊れてしまい、以降の処理に影響が出るため)
3:不正な実数のクリア
4:ai周辺データの復帰
こういう処理を例外処理内で行ってしまおうという話。

文として書くとすごく簡単そうだけど、実際にやる場合は全てレジスタ経由で読み書きすることになるのでかなり大変な予定。
幸い、例外処理中のみC言語の構造体としてレジスタにアクセスできるためアセンブラを書く必要はないが、大変なことにはかわりなさそう。

まだ脳内マップなので実現できるかも不明なわけですが、例外を根絶できるかもと考えれば挑戦してみる価値はあるはず。
ほんと、こういうことが出来るからC言語使うのは止められない。

追記:
例外を回避できない理由を書き忘れた。
その壊れたデータを参照した時点で例外するので、IFで検地しようとしてもその時点で例外を吐いてどうしようもありません。
int*キャストからごにょごにょで多少検地できてますが完璧には無理、ということで上の話になったわけです。

停滞中?

徹夜で緋想天したり、東方の新作情報に興奮してネットの海をさまよったり
そんなこんなで三日間バグとり以外何もやってないという話。

今更になって236コマンド出るようになってネット対戦が楽しくてしょうがないとか遅すぎるだろうと小一時間
未だに誤爆率5割超えてるし、練習ですら623コマンド出ませんけどね。
世の中には23623641236とか鬼畜コマンドが普通な格ゲーもあるそうで、自分では到底理解できそうもありません、うん。

あと新作のセンスがやばい、なにがヤバイって今時アダムスキー型のUFOを大真面目に出してる。
最初ギャグか何かかと思ったが、なんか普通にSTGのシステムとも連動している様子。
さすが神主、俺たちには出来ないことを平然と(ry

とりあえず新作出る前に地のEXクリアまで行きたいところ。
いや、してはいるけどまぐれにまぐれを重ねたクリアでまだ納得いってないのですよ、うん。