Updated Frequently Asked Questions (FAQ) (markdown)
parent
9d47a64387
commit
63ad45ddfb
|
@ -107,9 +107,15 @@ As of PR [#1365](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/pull/1365), LLE
|
||||||
***
|
***
|
||||||
|
|
||||||
### What is LTCG (Link-Time Code Generation)?
|
### What is LTCG (Link-Time Code Generation)?
|
||||||
LTCG is an optimization that may be applied to games, especially later in the Xbox's lifespan.
|
LTCG is an optimization technique that may be applied to games, especially later in the Xbox's lifespan.
|
||||||
|
|
||||||
This results in slight deviations in the way Functions are represented in the XBE, and as such makes function detection unreliable which leads to unused patches, and emulation errors.
|
When using LTCG, code is generated at link-time instead of compile-time: It's good (for developers of games/software) because it allows inlining of functions and optimization across boundaries that standard compilation cannot detect, leading to faster code.
|
||||||
|
|
||||||
|
It's awful for HLE emulation because it mangles the functions, so they are harder (sometimes impossible) to detect and hook.
|
||||||
|
|
||||||
|
What complicates things further is LTCG is free to do all kinds of crazy things in the pursuit for speed: As well as in-lining functions, it can also use non-standard calling conversions, change the order of parameters (or discard them entirely), meaning that even if we could easily find and intercept these LTCG functions, the existing implementations we have would not work.
|
||||||
|
|
||||||
|
Supporting LTCG isn't impossible for HLE, just incredibly awkward/difficult. Some LTCG games already boot and/or reach in-game, but nobody likes to work on them because of their complexity: We'd much rather fix the core emulator and move towards LLE of hardware components, LTCG is only a problem for HLE.
|
||||||
|
|
||||||
For more terminology and definitions, see the _[Overview of the project & Glossary of terms](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/wiki/Overview-of-the-project-&-Glossary-of-terms)_ page.
|
For more terminology and definitions, see the _[Overview of the project & Glossary of terms](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/wiki/Overview-of-the-project-&-Glossary-of-terms)_ page.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue