diff --git a/documentation/decompilingcpp.md b/documentation/decompilingcpp.md index 8fe24a7..eaf73cb 100644 --- a/documentation/decompilingcpp.md +++ b/documentation/decompilingcpp.md @@ -117,7 +117,13 @@ its lifetime (e.g. it goes out of scope), which can lead to inclusion in exception handling code or just being called at the end of a code block even if the source code doesn't invoke it explicitly. This automatic resource management is often called part of C++'s RAII (resource acquisition is -initialization) design. +initialization) design. Lastly, objects with constructors that exist for the +lifetime of the program (e.g. global variables or static local variables) have +special treatment, having their constructor run before `main()` and their +destructor run on program exit. In an Xbox game specifically, the `_cinit()` +function called by `mainXapiStartup()` walks a list of function pointers, with +each called function calling an object's constructor and registering its +destructor with `atexit()`. Virtual methods are methods that can be overridden on child classes. They're not called directly, but instead called through a hidden first member that diff --git a/readme.md b/readme.md index a007c5f..148da8b 100644 --- a/readme.md +++ b/readme.md @@ -4,6 +4,7 @@ A matching decompilation of the Xbox game Jet Set Radio Future. ## Progress - Delinking progress: 0.52% (13263 out of 2574172 bytes in XBE address space) - Decompilation progress: 30.6% (30 out of the 98 functions delinked so far) +- **Estimated total progress: 0.16%** (previous two multiplied together) ## Roadmap The approach of this decompilation is to: