カテゴリ | 重要度 | ステータス | 解決状況 | 登録日時 | 最終更新 |
---|---|---|---|---|---|
グラフィック | 低 | 解決済み | 修正済み | 2008-02-07 00:35 | 2008-02-15 02:40 |
テスター | Mr. Do | 担当者 |   | ソース | konami/thunderx.cpp |
バージョン | 0.79 | 発生バージョン | 修正バージョン | 0.116u2 | |
修正コミット | プルリク | ||||
フラグ | 旧BugID | thunderx079u1gre | |||
セット | thunderx | ||||
セット詳細 |
thunderx - サンダークロス (set 1)
| ||||
概 要 | P2側で1人プレーすると、得点がP1側に入る。 | ||||
詳 細 | While playing a single player game with the 2-player ship (the red ship), your score is criss-crossed. Any ships you shoot down register under the score for 1P, while any bonus capsules you pick up register under 2P. Your entire score should register under 2P. Follow-up by ShimaPong in 0.116u1: It will be run_collisions (K052591 collision emulation) routine bug. See run_collisions in drivers/thunderx.c // set flags p0[0] = (p0[0] & 0x9f) | 0x10; p1[0] = (p1[0] & 0x9b) | 0x10; If collide with an object, set the flags. p0[0] is for an enemy and p1[0] is player ship or player's bullet. I have found that bit 2 (0x04) of the value stored into p1[0] is "Player" flag (OFF = 1P/ON = 2P). And the program checks this bit in p0[0] (NOT p1[0] itself!) then sets score for each players.Therefore it needs to set in this routine. // set flags p0[0] = (p0[0] & 0x9f) | (p1[0] & 0x04) | 0x10; p1[0] = (p1[0] & 0x9b) | 0x10; It seems to work fine... but incomplete. When 2P has "penetrator" type weapon, like Flame, Tail Laser etc, a point is sometimes added to 1P. If 2P gets these weapons, 0xe5 is set. It's correct. But 0xe1 is stored newly at hit. It's the same flag as 1P. The cause is the flag setting for p1[0]. 0x9b kills "Player" flag so that it should use 0x9f instead, I think. // set flags p0[0] = (p0[0] & 0x9f) | (p1[0] & 0x04) | 0x10; p1[0] = (p1[0] & 0x9f) | 0x10; OK, no problem. | ||||
再現手順 | |||||
追加情報 | |||||
添付ファイル | thunderx079u1gre.png (2008-02-15 02:40) |