Yesterday, Galactic asked me, how research speed is calculated in Outpost 2. So, I opened Ollydebug and found most of the code already commented by Hooman.
As we all know, research progress doesn't happen continuously, but in chunks. One chunk will be added to the progress every 192 ticks.
The size of a progress chunk is determined by the number of scientists working on a project, the maximal number of scientists that can be assigned to it, and morale.
Let S be the number of scientists assigned to the topic. There is a table called scientistEfficiencyTable, from which a byte value E at index S*15 + maxScientists is loaded. In addition, M = moraleLevelModifiers[moraleLevel].M_RSCH_BONUS (the value is the corresponding value in morale.txt, multiplied by 256/100) is loaded.
Let P = E * (256 + M) * S
If the mission is a multiplayer mission, P is multiplied by 3.
Finally, P is subtracted from the remaining costs of the research topic, i.e. added to its progress.
You can find the code for this in Outpost2.exe at 0x0043E48A inside the function "ProcessTimers()".
The scientistEfficiencyTable is located at 0x004E0CD5. It is:
[15 bytes at the beginning are not part of the table]
[4 bytes] 07 07 07 07 07 07 07 07 07 07 07
07 07 07 07 09 09 09 08 08 08 08 08 08 08 08
08 08 08 08 0B 0B 0A 09 09 09 09 09 09 09 09
09 09 09 09 0D 0C 0B 0A 0A 0A 0A 0A 0A 0A 0A
0A 09 09 09 0D 0D 0C 0B 0B 0B 0B 0A 0A 0A 0A
0A 0A 0A 09 0D 0D 0D 0C 0C 0B 0B 0B 0B 0B 0B
0A 0A 0A 0A 0D 0D 0D 0D 0C 0C 0C 0B 0B 0B 0B
0B 0A 0A 0A 0D 0D 0D 0D 0D 0C 0C 0C 0B 0B 0B
0B 0B 0A 0A 0D 0D 0D 0D 0D 0D 0C 0C 0C 0C 0B
0B 0B 0B 0A 0D 0D 0D 0D 0D 0D 0D 0C 0C 0C 0C
0B 0B 0B 0B 0D 0D 0D 0D 0D 0D 0D 0D 0C 0C 0C
0C 0B 0B 0B 0D 0D 0D 0D 0D 0D 0D 0D 0D 0C 0C
0C 0C 0B 0B 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0C
0C 0C 0C 0B 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D
0C 0C 0C 0C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D
0D 0C 0C 0C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D
0D 0D 0C 0C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D
0D 0D 0D 0C 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D
0D 0D 0D 0D
Note: the table contains 19 complete lines, hence a maximum of 18 scientists can work on a topic. The last byte is indexed by 18 scientists working on a topic with maximally 18 scientists.