This adds more mount paths for the XEX's local directory to Emulator::LaunchXexFile, so any XEXs that try to use these mountpoints can load files from the XEX directory.
Mount points added:
- \Device\Harddisk0\Partition0 - original mountpoint used by Xenia
- \Device\Harddisk0\Partition1 - some games/apps seem to use this to refer to HDD1:
- \Device\Harddisk0\Partition1\DEVKIT
Used by xshell.xex, gets linked as E: (aka "development drive")
Even if a DEVKIT folder exists inside the local folder, it seems we still have to add this mount point explicitly.
- \Device\LauncherData
Also used by xshell.xex for various UI resources
The xlaunch.fdf file is normally mounted via DmMountFdfxVolume to this path (xlaunch.fdf is a FATX formatted container)
By mounting this xshell can retrieve extracted resources from the local dir.
- \SystemRoot
Normally refers to the NAND, used by dash.xex to retrieve XZP resources when they aren't inside xam.xex.
Other apps also use this to refer to other system XEXs/resources
By mounting it we can just place any needed resources in the local dir.
PVR stores the processor/motherboard revision, the latest I could find seems to be 0x710800 which is probably a Corona.
XShell tries to retrieve this during launch to print it on the console (search "XSHELL: CPUPVR" on pastebin for some examples)
Xenia crashes because it's unimplemented, so I just made it return 0x710800. It could be worth moving this to be a constant somewhere though.
IIRC hypervisor/kernel uses this for some things too, but since we don't emulate those it's not much of a problem, but there could still be other XEXs which use it for something.
This just adds some extra XConfig settings that the dashboard tries to retrieve.
The XCONFIG_USER_RETAIL_FLAGS setting gets used to decide whether to show the initial setup/OOBE wizard or not.
Since the OOBE currently isn't usable in Xenia (mostly due to missing XamProfile* exports, afaik), this setting is by default set to skip it.
But if that isn't desired the --xconfig_initial_setup flag can be used to un-set it.
This uses ContentManager to look for title updates, updates should be inside Content\[TitleID]\000B0000\
The updates can either be made up of an STFS package, or a folder containing extracted update files.
The update will then be mounted under update:\, so games that rely on loading updated assets from the TU should also work with it.
Normally ContentManager resolves package paths by using kernel_state_->title_id() as the title ID, but if we want to use ContentManager for TU's that won't work, since the XEX won't be fully loaded into kernel_state_->executable_module_ yet.
We can get around this by allowing the title ID used by ContentManager to be overridden, this should also help us support games that load packages from other title IDs.
This is fixed by adding a new startup_type parameter to XThread, which
lets us create an XThread that can run DllMain with correct arguments.
LaunchModule is then modified to use that param when launching a DLL
module that has an entrypoint. UserModule::LoadXexContinue also has code
added to call SetExecutableModule prior to loading any import libraries
1) Gives actual refresh rate of the window
2) FPS display based on profiler data, toggleable by pressing the the h key
on the keyboard, use Shift + h to modify FPS text scale (x1, x2 or x4)
3) Fix linux build by updating the gtk window
4) Fix linux build again, include microprofiler header directly and correct
parameters sent to ImGui::Text
5) Fix linux build by using a define to hide undefined functions on linux
Overview:
Added a Pop-up menu named 'Open Recent' under the 'File' menu bar item that lists 10 recently opened files.
- It stores the paths of opened games inside a file named 'recent.txt' in the same folder where the xenia.exe is located.
- If the file doesn't exits, the program creates it, then paths are stored when a new file is opened.
- Each time a file is opened, the program compares stored paths with the new one, if it exists then the path is moved to the top of the list to indicate that it is the most recent file opened.
- 'Open Recent' entries are refreshed once xenia is re-started.
most of the games this can be evidenced in are Unreal Engine titles or games that otherwise do not work in master yet but it can be shown in Saints Row 2 that does work in the master branch
this ID was found from debugging games where storage device detection wasn't working and reverse engineering of Unreal Engine 3