2015年1月12日から2015年1月8日までの日記を表示中
2015年 1月12日 (月)
■骨董
■基板
キンドラを電池レス対応させたら不正な命令を実行したとかで固まりまくる問題、やはり掛け算が怪しい感じです。ひとまず掛け算結果の下位16bitだけをデータレジスタに読み出している部分が問題なのかどうかを切り分けるべく、掛け算結果を上下逆に読み出してSWAPする部分をレジスタごとにサブルーチンとして未使用領域に定義し、オリジナルの掛け算結果の読み出し部分をJSRに書き換えて定義したサブルーチンに飛ぶようにして動かしてみました。結果、見事不正な命令を実行して止まる現象が発生。掛け算の結果を下位16bitしか読んでないからまずいとか、そんなのではなさそうですな・・・。
そこで、次に非電池レスの状態で、掛け算の結果読み出し部分だけサブルーチン化してみたところ、何とこちらでも不正な命令を実行して止まることが判明。ということは、掛け算の結果読み出し部分を書き換えること自体に問題があるということか。それでは、一体どの掛け算に問題があるのか・・・。一旦オリジナルの状態に戻した上で、1つ1つ、掛け算結果読み出しをサブルーチン呼び出しに置き換えてはプレーを繰り返したところ・・・ついに書き換えることによって不正な命令に繋がる掛け算結果読み出しを発見。
一体なぜここを書き換えるとエラーになるのか。さっそくコードを追うべく、break pointを設定・・・したつもりが、間違えてwatch pointを設定しており、それに気付かず実行した結果、答えが判明してしまいました。問題となっている掛け算結果の読み出し処理のすぐ後に、掛け算結果の読み出し命令の一部をデータとして読み出している部分がありました。よく見ると、命令やアクセス先のレジスタが書き換えられていないかをきっちりチェックしているようです。なるほど、プロテクト解除対策が施されていたってわけね・・・。
そうとわかれば話は簡単。計算結果を揃えるのは面倒なので、分岐前の比較処理を変更して、必ず変更がない状態と同じ分岐をするように手直し。ようやく不正な命令に飛ばなくなりました。それにしても、この問題、1面クリアするまで解らないのが恐ろしいです。一体今日だけで何回1面をクリアしたことかw。後は最後まで遊べるかですねー。その辺はまた日を改めて実験しましょう。
[コメントを書く]
■コミケ特集
たまたまテレビの前にいたらNHKで始まったので視聴したり。まあ、無難にまとめた感じでしょうか。これの表現を真に受けてお客様感覚で参戦してくる人激増したりするとアレですが・・・。あー、次に参加するのはいつの日か。
[コメントを書く]
2015年 1月11日 (日)
■Hyrule Warriors
ようやくルトのLv.3武器をゲット。
[コメントを書く]
2015年 1月10日 (土)
■基板
電池レス化中のキンドラですが、クレジットを入れたらいきなり大量のエラーログが (;´Д`)。よく見たら未修正の掛け算処理がたくさん残ってました。トホホ。しかもそこを全部直しても、なぜか不正な命令の実行とかで止まるし。ぐおー、何だこりゃ。トレースを取ったりしてみてますが、原因わからず。うーん、手強い。
[コメントを書く]
■Nexus 7
[コメントを書く]
■飲み
ケイゴさんたちと築地で飲みでした。何話してたかよく覚えてないけど、あっという間に時間が過ぎてお開きにw
その後は、新宿に移動して16SHOTSに。初めて行きました。なるほど、こういうお店なのねー。お疲れ様でした。
[コメントを書く]
2015年 1月 9日 (金)
■お仕事
これから忙しくなりそうねぇ・・・。
[コメントを書く]
■Hyrule Warriors
今日はダルニアとガノンとラナのLv.3取れました。わーい。というか次の追加コンテンツはまだですか・・・。
[コメントを書く]
2015年 1月 8日 (木)
■Hyrule Warriors
今日も全然武器取れず (´・ω・`)
[コメントを書く]
2015年1月12日から2015年1月8日までの日記を表示中
[コメントを書く]