Posts
KFX 逆汗道中記 (3)
ガードゲージはガードブレイクが発生すると点滅しながら減少していくが、この際に使われる通常時と点滅時の画像が隣接しているのには理由があった。
以下のコードは画像を点滅させるために使われる計算式の一部。
00411673 81e101000080 and ecx,80000001 0041167b 49 dec ecx 0041167c 83c9fe or ecx,-02 0041167f 41 inc ecx
ecx に入る値は 8 ビットの範囲だったので、それより上位のビットを無視した状態で計算を行ってみる。
// ecx が 0 のとき 00000000 & 00000001 = 00000000 // and 00000000 - 00000001 = 11111111 // dec 11111111 | 11111110 = 11111111 // or 11111111 + 00000001 = 00000000 // inc ecx = 0
// ecx が 1 のとき 00000001 & 00000001 = 00000001 // and 00000001 - 00000001 = 00000000 // dec 00000000 | 11111110 = 11111110 // or 11111110 + 00000001 = 11111111 // inc ecx = -1
このコードは偶数が来ると 0、奇数がくると -1 を返すようになっている。
ecx にガードブレイク時のガードゲージ量を入れた場合、ecx が減少する度に 0 と -1 を交互に繰り返し、この値を画像切り出し時の Y 座標に足せば表示する画像を交互に切り替えることができる。