![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Ys I & II Eternal Story' playable.
Posted on 2006-02-18 00:00:00 |
Had another power outage this night, so I wasn't able to reproduce the movie playing problem... Instead, I've checked the problem that makes the game hang when hitting an enemy.
The problem seems to be happening in a certain routine that calculates a sine value of an angle, computes a ratio of a number out of it and then uses this new value as a counter for a loop. The problem arises when the angle exceeds the value of Pi and when the sine value of the angle gives a negative value. This becomes equivalent to do a loop of (MAXINT - 1) which can last a very long time... There doesn't seem to be any checks at all for negative values in the routine. I also checked how the angle value was computed and how it could change and there wasn't any limits checking in there either. I'll keep on investigating tomorrow... My feeling is that there should be some limits checking in the routine, but it doesn't get called somehow or I can't figure out what it is for now... |