Each research project's scientist-days remaining is stored in a little-endian word (low-order byte first). For realistic cases, the difference between signed word and unsigned word is irrelevant. 96 words i.e. 192 bytes.
Every reference to research is in hours (research.dat), therefore i took the value as literal. In my case: BB = 187 hours. So I started digging and found that the correct calculation to determine research time (in days) is: roundup((hours / scientist)). Every test case produced the expected result. Below are the test and results.
Motion Scanner: 187 hours | Scientists: 50
- roundup(187/50) = 4 (raw value is 3.7) Result: Research ended at the 23:59:55 hour of the 4th day.
Motion Scanner: 187 hours | Scientists: 100
- roundup(187/100) = 2 days (raw value is 1.8) Result: Research ended at the 23:59:55 of the second day.
Motion Scanner: 187 hours | Scientists: 200
- roundup(187/200) = 1 day (raw value is .9). The research ended at the 23:59:55 of the current day.
Laser Pistol: 19 hours | Scientists: 10
- roundup(19/10) = 3 day (raw value is 2.5). The research ended at the 23:59:55 of the current day.
I think that the above statement needs to be revised.
--pjlasl 3:27PM 08/01/2011
- Definitely not days, as the values are derived directly from research.dat, which stores them as scientist hours (+/-50% at the time it is entered). -NKF 03:21, 3 August 2011 (EDT)