* [alex47exe] major overhaul of **generate_emu_config** - custom configs, proper ini parsing, better logging and error handling, helper tools:
* add `-def1` ... `-def5` arguments, which can be used to generate your preferred custom config if no `-def` argument is provided, `-def1` will be used by default, to automatically copy from the following folders: * `.\_DEFAULT\0` ............... essential emu files, like latest GSE dlls (*steam_api.dll* and *steam_api64.dll*) * `.\_DEFAULT\1` ............... other GSE files and folders, including default ini files * `.\_DEFAULT\<appid>` ... other GSE files and folders, but only for the current `<appid>`, if the folder exists * (Windows only) add some useful helper tools, written in *AutoIt3*: * **gse_acw_helper.exe** - add the required achievements schema db files for *Achievement Watcher*, if .\steam_misc\extra_acw\extra_acw.zip file exists (if generated by `generate_emu_config.exe -acw <appid>`) * **gse_debug_switch.exe** - automatically switch between release and debug versions of the emulator, if *steam_api.7z* / *steam_api64.7z* file exists (or *steamclient.7z* / *steamclient64.7z*, if you use the steamclient version) paths to release and debug files inside 7z, can be customized in .\steam_misc\tools\au3\scripts\gse_debug_switch.ini * **gse_generate_interfaces.exe** - simple x64-x86 launcher for *generate_interfaces.exe* it also writes all found steam interfaces to CODEX *steam_emu.ini* (if generated by `generate_emu_config -cdx <appid>`) make sure to name your original dll to one of these formats, so it can automatically find its interfaces: * `valve_api.dll / valve_api64.dll` * `steam_api.dll.bak / steam_api64.dll.bak` or `steam_api.dll.org / steam_api64.dll.org` * `steam_api.bak / steam_api64.bak` or `steam_api.org / steam_api64.org` * `steam_api_orig.dll / steam_api64_orig.dll` or `steam_api_legit.dll / steam_api64_legit.dll` * **gse_lobby_connect.exe** - simple x64-x86 launcher for *lobby_connect.exe* * new folder structure, compatible with current and future helper tools --- default arguments are `-acw -cdx -clr <appid>` NEVER delete `.\steam_misc\app_backup`, `.\steam_misc\app_info`, `.\steam_misc\tools` and `.\steam_settings` folders MIGHT need `.\steam_misc\extra_acw` and `.\steam_misc\extra_cdx` for compatibility with Achievement Watcher and CODEX * add `-scx` argument to automatically download images / videos for trading cards, backgrounds, badges, emoticons and other tradable items unfortunately I couldn't find any direct steam api method to download the files, so I had to write a rudimentary web scrapper to extract the download links from a third-party website, hence the *scx_gen.py* script might need updating in the future if the website design changes * download screenshots and videos: * download thumbnails for both screenshots and videos, and compress them to `.zip` files * screenshots and videos are now numbered from first to last published, as in the Steam store page * add `-vids_low` / `-vids_max` arguments to download all videos, in low and / or high quality * create / update .\\*top_owners_ids.txt* when .\\*top_owners_ids.html* is present * generate controller action sets txt files for all found controller vdf configs, and zip them inside .\steam_misc\app_backup\app_backup.zip by default, the emu supports only `xboxone` and `xbox360` controller configs, though if the're are any issues with the default supported controller action sets inside .\steam_settings\controller folder, you could try to unpack and overwrite action sets for other unsupported controller configs * (Windows only) add *AdvancedRun* launchers (cmd console + silent) for `.bat` files and `.py` scripts * **[alex47exe]** major overhaul of **migrate_gse** - uses the same `.\_DEFAULT\0` and `.\_DEFAULT\1` folder structure for default configs it can convert old `.txt` format to `.ini` format, minus *branches.json*, which would require using *top_owners_ids.txt* and some login code from **generate_emu_config**, which should actually be used to properly generate the config files, instead of converting from the old `.txt` format * [alex47exe] *generate_interfaces.exe* - find all Steam Interfaces instead of only old ones the emu will ignore the ones it doesn't require, while we'll have the complete list to write it to CODEX *steam_emu.ini* * [alex47exe] *lobby_connect.exe* - improve cmd console text alignment * [alex47exe] `mods_img` instead of `mod_images` (better folder consistency), better example for `mods_img`, minor tweaks to `.ini` and `.md` files
4
.github/workflows/migrate_gse-build-win.yml
vendored
@ -21,10 +21,10 @@ jobs:
|
||||
runs-on: windows-2022
|
||||
|
||||
steps:
|
||||
- name: Set up Python 3.10
|
||||
- name: Set up Python 3.12
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.10"
|
||||
python-version: "3.12"
|
||||
|
||||
### on Windows Git will auto change line ending to CRLF, not preferable
|
||||
- name: Ensure LF line ending
|
||||
|
132
CHANGELOG.md
@ -1,6 +1,57 @@
|
||||
|
||||
* **[Detanup01]** Fix GetISteamGenericInterface when asking for Interface: STEAMTIMELINE_INTERFACE_V001
|
||||
* **[KGHTW]** Fixing Steam Datagram Error.
|
||||
|
||||
## 2024/7/29
|
||||
|
||||
|
||||
* **[alex47exe]** major overhaul of **generate_emu_config** - custom configs, proper ini parsing, better logging and error handling, helper tools:
|
||||
|
||||
* add `-def1` ... `-def5` arguments, which can be used to generate your preferred custom config
|
||||
if no `-def` argument is provided, `-def1` will be used by default, to automatically copy from the following folders:
|
||||
* `.\_DEFAULT\0` ............... essential emu files, like latest GSE dlls (*steam_api.dll* and *steam_api64.dll*)
|
||||
* `.\_DEFAULT\1` ............... other GSE files and folders, including default ini files
|
||||
* `.\_DEFAULT\<appid>` ... other GSE files and folders, but only for the current `<appid>`, if the folder exists
|
||||
* (Windows only) add some useful helper tools, written in *AutoIt3*:
|
||||
|
||||
* **gse_acw_helper.exe** - add the required achievements schema db files for *Achievement Watcher*, if .\steam_misc\extra_acw\extra_acw.zip file exists (if generated by `generate_emu_config.exe -acw <appid>`)
|
||||
* **gse_debug_switch.exe** - automatically switch between release and debug versions of the emulator, if *steam_api.7z* / *steam_api64.7z* file exists (or *steamclient.7z* / *steamclient64.7z*, if you use the steamclient version)
|
||||
paths to release and debug files inside 7z, can be customized in .\steam_misc\tools\au3\scripts\gse_debug_switch.ini
|
||||
* **gse_generate_interfaces.exe** - simple x64-x86 launcher for *generate_interfaces.exe*
|
||||
it also writes all found steam interfaces to CODEX *steam_emu.ini* (if generated by `generate_emu_config -cdx <appid>`)
|
||||
make sure to name your original dll to one of these formats, so it can automatically find its interfaces:
|
||||
* `valve_api.dll / valve_api64.dll`
|
||||
* `steam_api.dll.bak / steam_api64.dll.bak` or `steam_api.dll.org / steam_api64.dll.org`
|
||||
* `steam_api.bak / steam_api64.bak` or `steam_api.org / steam_api64.org`
|
||||
* `steam_api_orig.dll / steam_api64_orig.dll` or `steam_api_legit.dll / steam_api64_legit.dll`
|
||||
* **gse_lobby_connect.exe** - simple x64-x86 launcher for *lobby_connect.exe*
|
||||
* new folder structure, compatible with current and future helper tools --- default arguments are `-acw -cdx -clr <appid>`
|
||||
NEVER delete `.\steam_misc\app_backup`, `.\steam_misc\app_info`, `.\steam_misc\tools` and `.\steam_settings` folders
|
||||
MIGHT need `.\steam_misc\extra_acw` and `.\steam_misc\extra_cdx` for compatibility with Achievement Watcher and CODEX
|
||||
* add `-scx` argument to automatically download images / videos for trading cards, backgrounds, badges, emoticons and other tradable items
|
||||
unfortunately I couldn't find any direct steam api method to download the files, so I had to write a rudimentary web scrapper to extract the download links from a third-party website, hence the *scx_gen.py* script might need updating in the future if the website design changes
|
||||
* download screenshots and videos:
|
||||
|
||||
* download thumbnails for both screenshots and videos, and compress them to `.zip` files
|
||||
* screenshots and videos are now numbered from first to last published, as in the Steam store page
|
||||
* add `-vids_low` / `-vids_max` arguments to download all videos, in low and / or high quality
|
||||
* create / update .\\*top_owners_ids.txt* when .\\*top_owners_ids.html* is present
|
||||
* generate controller action sets txt files for all found controller vdf configs, and zip them inside .\steam_misc\app_backup\app_backup.zip
|
||||
by default, the emu supports only `xboxone` and `xbox360` controller configs, though if the're are any issues with the default supported controller action sets inside .\steam_settings\controller folder, you could try to unpack and overwrite action sets for other unsupported controller configs
|
||||
* (Windows only) add *AdvancedRun* launchers (cmd console + silent) for `.bat` files and `.py` scripts
|
||||
* **[alex47exe]** major overhaul of **migrate_gse** - uses the same `.\_DEFAULT\0` and `.\_DEFAULT\1` folder structure for default configs
|
||||
it can convert old `.txt` format to `.ini` format, minus *branches.json*, which would require using *top_owners_ids.txt* and some login code from **generate_emu_config**, which should actually be used to properly generate the config files, instead of converting from the old `.txt` format
|
||||
* **[alex47exe]** *generate_interfaces.exe* - find all Steam Interfaces instead of only old ones
|
||||
the emu will ignore the ones it doesn't require, while we'll have the complete list to write it to CODEX *steam_emu.ini*
|
||||
* **[alex47exe]** *lobby_connect.exe* - improve cmd console text alignment
|
||||
* **[alex47exe]** `mods_img` instead of `mod_images` (better folder consistency), better example for `mods_img`, minor tweaks to `.ini` and `.md` files
|
||||
|
||||
---
|
||||
|
||||
## 2024/7/28
|
||||
|
||||
* **[Detanup01]** fix GetISteamGenericInterface() when asking for Interface `STEAMTIMELINE_INTERFACE_V001`
|
||||
* **[KGHTW]** fix Steam Datagram Error
|
||||
|
||||
---
|
||||
|
||||
## 2024/7/7
|
||||
|
||||
@ -11,8 +62,8 @@
|
||||
* **[qingchunnh]** update Chinese translations for the overlay
|
||||
* update the tool `generate_emu_config` to generate a new file `steam_settings/branches.json` which contain all info about the branches of the game, needed by SDK v1.60
|
||||
this json file could be put inside the global settings folder, but **not recommended**, it is meant to be generated per-game basis
|
||||
* deprecate the setting `build_id` in `configs.app.ini`, the user selected branch (`branch_name`) is now used to grab the build id of that branch from `branches.json`.
|
||||
if no `branch_name` is specified, the emu will use the default branch called `public`.
|
||||
* deprecate the setting `build_id` in `configs.app.ini`, the user selected branch (`branch_name`) is now used to grab the build id of that branch from `branches.json`
|
||||
if no `branch_name` is specified, the emu will use the default branch called `public`
|
||||
if `branches.json` is missing the `public` branch, the emu will force add it in memory with a default build id = 10
|
||||
* add new properties to `mods.json`:
|
||||
- `min_game_branch`
|
||||
@ -21,11 +72,10 @@
|
||||
|
||||
unclear how they're used for now, but they're introduced in SDK v1.60
|
||||
* add a somewhat useless/stub implementation for the new interface `ISteamTimeline001` (introduced in SDK v1.60), could be extended later to interact with the built-in overlay or save the info to disk for external applications to listen to events
|
||||
* add a new option `allow_unknown_stats` in `configs.main.ini` to allow games to change unknown stats.
|
||||
* add a new option `allow_unknown_stats` in `configs.main.ini` to allow games to change unknown stats
|
||||
the emu by default rejects any changes to a stat not mentioned inside `steam_settings/stats.txt`, this option allows these changes
|
||||
* add a new option `save_only_higher_stat_achievement_progress` in `configs.main.ini` and enable it by default.
|
||||
this option will prevent the emu from updating the progress of any achievement due to a stat change/update, if the new value is less than or equal the current one.
|
||||
this solves an overlay spam problem and avoids *some* useless disk write operations.
|
||||
* add a new option `save_only_higher_stat_achievement_progress` in `configs.main.ini` and enable it by default
|
||||
this option will prevent the emu from updating the progress of any achievement due to a stat change/update, if the new value is less than or equal the current one - this solves an overlay spam problem and avoids *some* useless disk write operations
|
||||
|
||||
unfortunately some games abuse stats and update them a lot during gameplay with useless and disposable values, this will cause a lot of disk write operations and cannot be avoided unless you remove the definition of that stat from `steam_settings/stats.txt`, or avoiding that definition file altogether and forget about stats
|
||||
* fix conditions for app/DLCs ownership APIs:
|
||||
@ -47,8 +97,8 @@
|
||||
## 2024/6/21
|
||||
|
||||
* fix the conditions for achievement progress indication when a game updates a stat which is tied to an achievement
|
||||
now the user achievements will be updated and saved, and an overlay notification will be triggered.
|
||||
works with **[Achievement Watcher by xan105](https://github.com/xan105/Achievement-Watcher)** and the built-in overlay.
|
||||
now the user achievements will be updated and saved, and an overlay notification will be triggered
|
||||
works with **[Achievement Watcher by xan105](https://github.com/xan105/Achievement-Watcher)** and the built-in overlay
|
||||
you need `stats.txt` and `achievements.json` inside your local `steam_settings` folder for this feature to work properly
|
||||
* fix an old problem where games would crash on exit if the overlay was enabled, more prominent in `DirectX 12` games, also set the overlay hook procedure to an empty function before cleaning up the overlay
|
||||
* remove an invalid condition when resetting stats, only write to disk and share values with any gameserver if the stat value isn't already the default
|
||||
@ -63,12 +113,12 @@
|
||||
# duration of achievement progress indication
|
||||
Notification_Duration_Progress=6.0
|
||||
# duration of achievement unlocked
|
||||
Notification_Duration_Achievement=7.0
|
||||
Notification_Duration_Achievement=6.0
|
||||
# duration of friend invitation
|
||||
Notification_Duration_Invitation=8.0
|
||||
# duration of chat message
|
||||
Notification_Duration_Chat=4.0
|
||||
```
|
||||
```
|
||||
you can set these values in the global settings, just like all the other settings in all `.ini` files
|
||||
you can also override them per-game by modifying your local `steam_settings/configs.overlay.ini`
|
||||
* for Windows `ColdClientLoader`: if the file `load_order.txt` is used, then only load the files mentioned with their respective order, otherwise load all valid PE files as usual
|
||||
@ -94,22 +144,21 @@
|
||||
|
||||
* **[Detanup01]** add `premake` build scripts, allowing the project to be built with different toolsets with ease on different platforms
|
||||
for example the project could be built with `Visual Studio` on Windows, or via the `make` tool on Linux
|
||||
* **[schmurger]** add progress bar to the achievements in the overlay, only for achievements that are not earned yet.
|
||||
also implement notifications for these progress indications (whenever the game indicates a new progress).
|
||||
* **[schmurger]** add progress bar to the achievements in the overlay, only for achievements that are not earned yet
|
||||
also implement notifications for these progress indications (whenever the game indicates a new progress)
|
||||
you can disable the achievement progress notifications via `disable_achievement_progress` inside `configs.overlay.ini`
|
||||
* **[schmurger]** implement the function `Steam_User_Stats::GetAchievementProgressLimits()`
|
||||
* **[Detanup01]** add missing interfaces `ISteamScreenshot` `v001` and `v002`
|
||||
also fix lots of build warnings in Visual Studio
|
||||
* third-party dependencies could now be built with a `premake` script, offering more flexibility.
|
||||
* third-party dependencies could now be built with a `premake` script, offering more flexibility
|
||||
for example you can choose to extract or build certain libraries only, you can also build 32-bit or 64-bit separately
|
||||
|
||||
---
|
||||
|
||||
**check the updated readme**
|
||||
**and re-clone the repo recursively again!**
|
||||
**check the updated readme and re-clone the repo recursively again!**
|
||||
|
||||
---
|
||||
|
||||
|
||||
* enable controller support by default for the regular API library
|
||||
* fix an old buffer overrun bug in `Steam_User_Stats::UpdateAvgRateStat()`
|
||||
* fix an old bug in the shutdown functions, now they will refuse incorrect requests like the original API library, solving a crash in some games
|
||||
@ -131,9 +180,9 @@
|
||||
* add new button to the overlay `toggle user info` to show/hide user info, also make user info hidden by default
|
||||
* make all overlay popups toggle-able, clicking its button another time will hide or show the popup, depending on its previous state
|
||||
* allow `Steam_User_Stats::ClearAchievement()` to reflect the status in the overlay
|
||||
* initial support for building with `MSYS2` on Windows.
|
||||
**this is still highly experimental and non-functional, this is more of tech demo at the moment**
|
||||
the original SDK is created as `MSVC` library, and all games on Windows link with it.
|
||||
* initial support for building with `MSYS2` on Windows
|
||||
**This is still highly experimental and non-functional, this is more of tech demo at the moment**
|
||||
The original SDK is created as `MSVC` library, and all games on Windows link with it
|
||||
MinGW toolchain has a completely different **ABI** and the output binary will **not work**
|
||||
* deprecated and removed the special Git branches `ci-build-*`, they were intended for automation but no longer maintained
|
||||
|
||||
@ -216,10 +265,10 @@
|
||||
- `configs.overlay.ini`: configurations of the overlay
|
||||
|
||||
they could be placed inside the local `steam_settings` folder,
|
||||
or inside the new global settings folder `GSE Saves/settings`, located at `%appdata%\GSE Saves\settings\` on Windows for example.
|
||||
you can create a global `.ini` file `GSE Saves/settings/config.xxx.ini` for the common options, and another local one `steam_settings/config.xxx.ini` for the game-specific options, and the emu will merge them.
|
||||
or inside the new global settings folder `GSE Saves/settings`, located at `%appdata%\GSE Saves\settings\` on Windows for example
|
||||
you can create a global `.ini` file `GSE Saves/settings/config.xxx.ini` for the common options, and another local one `steam_settings/config.xxx.ini` for the game-specific options, and the emu will merge them
|
||||
|
||||
To avoid confusion, the global saves folder is changed to be `GSE Saves` by default.
|
||||
To avoid confusion, the global saves folder is changed to be `GSE Saves` by default
|
||||
|
||||
* new tool `migrate_gse` to convert either your global `settings` folder, or your local `steam_settings` folder from the old format to the new one
|
||||
- run the tool without arguments to let it convert the global settings folder
|
||||
@ -249,7 +298,7 @@
|
||||
- `SteamEnv`
|
||||
- `SteamPath`
|
||||
|
||||
---
|
||||
---
|
||||
|
||||
## 2024/4/11 (2)
|
||||
|
||||
@ -290,7 +339,7 @@
|
||||
---
|
||||
|
||||
* **[breaking]** introduced a new config file `enable_experimental_overlay.txt`, which deprecates the config file `disable_overlay.txt`
|
||||
in many occasions this feature was a source of crashes, so it's better to make it an opt-in option.
|
||||
in many occasions this feature was a source of crashes, so it's better to make it an opt-in option
|
||||
otherwise, the `experimental` and `Cold Client` builds of the emu will crash by default on startup for some apps/games
|
||||
|
||||
---
|
||||
@ -324,7 +373,7 @@
|
||||
- allow loading a custom font whose location is defined in `overlay_appearance.txt`
|
||||
fonts with relative paths will be loaded from `steam_settings\fonts`
|
||||
* allow sharing leaderboards scores with connected players, adjust players ranks locally, and sort entries as needed by the game, suggested by **[M4RCK5]**
|
||||
this will only work when people connected on the same network are playing the same game, once they disconnect their leaderboard entry will be lost (no data persistence for other players), also it doesn't work well with VPN clients.
|
||||
this will only work when people connected on the same network are playing the same game, once they disconnect their leaderboard entry will be lost (no data persistence for other players), also it doesn't work well with VPN clients
|
||||
this behavior could be enabled via `share_leaderboards_over_network.txt`
|
||||
* implemented the missing interface `ISteamGameServerStats`, allowing game servers to exchange user stats & achievements with players
|
||||
could be disabled via `disable_sharing_stats_with_gameserver.txt`,
|
||||
@ -332,7 +381,7 @@
|
||||
* for windows: updated stub drm patterns and added a workaround for older variants,
|
||||
this increases the compatibility, but makes it easier to be detected
|
||||
* for windows: new stub/mock dll `GameOverlayRenderer(64).dll` for the experimental cold client setup,
|
||||
some apps verify the existence of this dll, either on disk, or inside their memory space.
|
||||
some apps verify the existence of this dll, either on disk, or inside their memory space
|
||||
**not recommended** to ignore it
|
||||
* separated the config file `disable_leaderboards_create_unknown.txt`, previously it was tied to `leaderboards.txt`,
|
||||
by default the emu will create any unknown leaderboards, you can disable this behavior with this file
|
||||
@ -539,8 +588,8 @@
|
||||
* **[Kola124]** enhanced the settings parser to detect primary and preview mod files sizes automatically +
|
||||
use the base Steam URL by default for workshop URL + auto calculate the mod `score` from up/down votes
|
||||
also thanks to **[BTFighter]** for providing logs
|
||||
* **Breaking change** mod preview image file must exist in `steam_settings\mod_images\<MOD_ID>`
|
||||
* an enhancement to the settings parser to attempt to auto detect mods when `mods.json` is not present, with the same behavior as when the json file was created.
|
||||
* **Breaking change** mod preview image file must exist in `steam_settings\mods_img\<MOD_ID>`
|
||||
* an enhancement to the settings parser to attempt to auto detect mods when `mods.json` is not present, with the same behavior as when the json file was created
|
||||
this works for mods with only 1 primary file and only 1 preview file
|
||||
* fixed the generated path of mod `preview_url`, previously it would contain back slashes `\` on Windows
|
||||
* use last week epoch as the default time for mods dates (created, added, etc...)
|
||||
@ -576,9 +625,9 @@
|
||||
|
||||
## 2024/1/3
|
||||
|
||||
* added a new option to the Windows version of the client loader to aid in debugging.
|
||||
* added a new option to the Windows version of the client loader to aid in debugging
|
||||
the option is called `ResumeByDebugger`, and setting it to `1` will prevent the loader from
|
||||
auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
auto resuming the main app thread, giving you a chance to attach your debugger
|
||||
* make the script `generate_emu_config` generate an empty `DLC.txt` if the app has no DLCs
|
||||
* windows build: sign each file after build with a self-signed generated certificate + note in the release readme regarding false-positives
|
||||
* windows build: note in readme about Windows SDK
|
||||
@ -600,13 +649,13 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
* `Steam_User::GetAuthSessionTicket()`
|
||||
* `Steam_User::GetAuthTicketForWebApi()`
|
||||
|
||||
this allows the emu to generate new ticket data, and additionally the GC token.
|
||||
this allows the emu to generate new ticket data, and additionally the GC token
|
||||
check the new config files `new_app_ticket.txt` and `gc_token.txt` in the `steam_settings` folder
|
||||
* **[Detanup01]** fixed print issues in some places
|
||||
* **[remelt]** use the `index` argument to grab the preview URL from UGC query result, fixed by: https://cs.rin.ru/forum/viewtopic.php?p=2964432#p2964432
|
||||
* **[remelt]** allow overriding mod `path` & mod `preview_url` in the `mods.json` file, suggested by: https://cs.rin.ru/forum/viewtopic.php?p=2964432#p2964432
|
||||
* allow setting the mod `score` in the `mods.json`
|
||||
* when the mod `preview_url` is not overridden, don't set it automatically if `preview_filename` was empty, otherwise the `preview_url` will be pointing to the entire `mod_images` folder, like: `file://C:/my_game/steam_settings/mod_images/`
|
||||
* when the mod `preview_url` is not overridden, don't set it automatically if `preview_filename` was empty, otherwise the `preview_url` will be pointing to the entire `mods_img` folder, like: `file://C:/my_game/steam_settings/mods_img/`
|
||||
instead set it to an empty string
|
||||
* updated `mods.EXAMPLE.json`
|
||||
* added 2 new config files `is_beta_branch.txt` and `force_branch_name.txt`
|
||||
@ -631,8 +680,8 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
* added licenses & sources of all extrnal libraries + added a new cryptography library `Mbed TLS`
|
||||
you have to rebuilt the deps
|
||||
* deprecated the separate/dedicated cleanup script for Windows, it's now inlined in the main build script
|
||||
* For Windows build script: deprecated `low perf` & `win xp` options
|
||||
* For Linux build script: deprecated `low perf` option
|
||||
* for Windows build script: deprecated `low perf` & `win xp` options
|
||||
* for Linux build script: deprecated `low perf` option
|
||||
* restored all original but unused repo files into their separate folder
|
||||
* lots of refactoring and relocation in the source repo:
|
||||
- all build stuff will be inside `build` folder
|
||||
@ -813,7 +862,7 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
- declare the new API: SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences()
|
||||
- (needs revise) update signature of the API: SteamAPI_ISteamUGC_SetItemTags() to add the new argument
|
||||
this will potentially break compatibility with older version of the flat API
|
||||
////////////////////
|
||||
////////////////////
|
||||
- declare new interface getter: SteamAPI_SteamRemotePlay_v002()
|
||||
- declare the new API: SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether()
|
||||
////////////////////
|
||||
@ -829,7 +878,7 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
- implement the new API: SteamAPI_ISteamUGC_GetUserContentDescriptorPreferences()
|
||||
- (needs revise) update signature of the API: SteamAPI_ISteamUGC_SetItemTags() to use the new argument
|
||||
this will potentially break compatibility with older version of the flat API
|
||||
////////////////////
|
||||
////////////////////
|
||||
- implement new interface getter SteamAPI_SteamRemotePlay_v002()
|
||||
- implement the new API: SteamAPI_ISteamRemotePlay_BStartRemotePlayTogether()
|
||||
////////////////////
|
||||
@ -920,6 +969,8 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
- without admin, run `build_win_deps.bat`, this will do the following:
|
||||
+ unpack the third party libraries (protobuf, zlib, etc...) from the folder `third-party` to `build-win-deps`
|
||||
+ build the unpacked libraries from `build-win-deps`
|
||||
|
||||
|
||||
|
||||
you only need this step once, additionally you can pass these arguments to the script:
|
||||
+ `-verbose`: force cmake to display extra info
|
||||
@ -947,7 +998,7 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
+ `+lowperf`: (UNTESTED) for 32-bit build only, pass the argument `/arch:IA32` to the compiler
|
||||
|
||||
+ `-j <n>`: force build operations to use `<n>` parallel jobs
|
||||
|
||||
|
||||
* added all required third-party libraries inside the folder `third-party`
|
||||
|
||||
* greatly enhanced the functionality of the `generate_emu_config` script + add a build script
|
||||
@ -958,8 +1009,7 @@ auto resuming the main app thread, giving you a chance to attach your debugger.
|
||||
+ inside the folder of the built executable
|
||||
+ create a file called `my_login.txt`, then add your username in the first line, and your password in the second line
|
||||
+ run the .exe file without any args to display all available options
|
||||
|
||||
|
||||
|
||||
* revert the changes to `SetProduct()` and `SetGameDescription()`
|
||||
|
||||
* in `steam_overlay.cpp`, in `AddAchievementNotification()`: prefer original paths of achievements icons first, then fallback to `achievement_images/`
|
||||
|
87
CREDITS.md
@ -441,12 +441,12 @@ terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
@ -454,7 +454,7 @@ terms of section 4, provided that you also meet all of these conditions:
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
@ -481,7 +481,7 @@ in one of these ways:
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
@ -493,13 +493,13 @@ in one of these ways:
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
@ -512,7 +512,7 @@ in one of these ways:
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
@ -592,21 +592,21 @@ that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
@ -847,7 +847,7 @@ Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
@ -861,17 +861,17 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
@ -1234,12 +1234,12 @@ above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
@ -1278,14 +1278,14 @@ Sections 1 and 2 above provided that you also do one of the following:
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
@ -1408,17 +1408,17 @@ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
@ -1432,17 +1432,17 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
@ -1679,33 +1679,34 @@ CMake was initially developed by Kitware with the following sponsorship:
|
||||
~~~~~~~~~~~
|
||||
License for use and distribution
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Copyright (C) 1999-2023 Igor Pavlov.
|
||||
|
||||
|
||||
7-Zip Extra files are under the GNU LGPL license.
|
||||
|
||||
|
||||
Notes:
|
||||
You can use 7-Zip Extra on any computer, including a computer in a commercial
|
||||
organization. You don't need to register or pay for 7-Zip.
|
||||
|
||||
|
||||
Notes:
|
||||
You can use 7-Zip Extra on any computer, including a computer in a commercial
|
||||
organization. You don't need to register or pay for 7-Zip.
|
||||
|
||||
It is allowed to digitally sign DLL files included into this package
|
||||
with arbitrary signatures of third parties."
|
||||
|
||||
|
||||
GNU LGPL information
|
||||
--------------------
|
||||
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
|
||||
You can receive a copy of the GNU Lesser General Public License from
|
||||
http://www.gnu.org/
|
||||
|
||||
@ -1955,7 +1956,3 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
Sean Middleditch
|
||||
Copyright (C) 2010 Sean Middleditch
|
||||
LICENSE: MIT/X
|
||||
|
||||
|
||||
### Template License
|
||||
License Here
|
||||
|
46
README.md
@ -1,9 +1,7 @@
|
||||
## :large_orange_diamond: **This is a fork**
|
||||
## :large_orange_diamond: **Goldberg Steam Emu**
|
||||
Fork of https://gitlab.com/Mr_Goldberg/goldberg_emulator
|
||||
|
||||
Fork originally make by wizark952.
|
||||
|
||||
This is a latest version of his work.
|
||||
Fork originally make by wizark952. This is a latest version of his work.
|
||||
|
||||
### Feel free to make a PR.
|
||||
|
||||
@ -41,10 +39,6 @@ You can find helper guides, scripts, and tools here in this wiki: https://github
|
||||
You can also find instructions here in [README.release.md](./post_build/README.release.md)
|
||||
|
||||
---
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
# **Compiling**
|
||||
## One time setup
|
||||
### **Cloning the repo**
|
||||
@ -80,7 +74,7 @@ You can also find instructions here in [README.release.md](./post_build/README.r
|
||||
* Using `MSYS2` **this is currently experimental and will not work due to ABI differences**: https://www.msys2.org/
|
||||
<details>
|
||||
<summary>steps</summary>
|
||||
|
||||
|
||||
* To build 64-bit binaries use either the [environment](https://www.msys2.org/docs/environments/) `UCRT64` or `MINGW64` then install the GCC toolchain
|
||||
`UCRT64`
|
||||
```shell
|
||||
@ -93,8 +87,8 @@ You can also find instructions here in [README.release.md](./post_build/README.r
|
||||
* To build 32-bit binaries use the environment `MINGW32` then install the GCC toolchain
|
||||
```shell
|
||||
pacman -S mingw-w64-i686-gcc
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
</details>
|
||||
* Python 3.10 or above: https://www.python.org/downloads/windows/
|
||||
After installation, make sure it works
|
||||
@ -154,7 +148,7 @@ Open CMD in the repo folder, then run the following
|
||||
* To build using `MSYS2` **this is currently experimental and will not work due to ABI differences**
|
||||
<details>
|
||||
<summary>steps</summary>
|
||||
|
||||
|
||||
*(Optional)* In both cases below, you can use `Clang` compiler instead of `GCC` by running these 2 commands in the same terminal instance
|
||||
```shell
|
||||
export CC="clang"
|
||||
@ -170,7 +164,7 @@ Open CMD in the repo folder, then run the following
|
||||
export CMAKE_GENERATOR="MSYS Makefiles"
|
||||
./third-party/common/win/premake/premake5.exe --file=premake5-deps.lua --32-build --all-ext --all-build --verbose --os=windows gmake2
|
||||
```
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
This will:
|
||||
@ -201,29 +195,29 @@ Open CMD in the repo folder, then run the following
|
||||
* For `Visual Studio 2022`
|
||||
```batch
|
||||
third-party\common\win\premake\premake5.exe --file=premake5.lua --genproto --os=windows vs2022
|
||||
```
|
||||
```
|
||||
You can then go to the folder `build\project\vs2022\win` and open the produced `.sln` file in Visual Studio.
|
||||
Or, if you prefer to do it from command line, open the `Developer Command Prompt for VS 2022` inside the above folder, then:
|
||||
```batch
|
||||
msbuild /nologo /v:n /p:Configuration=release,Platform=Win32 gbe.sln
|
||||
|
||||
|
||||
msbuild /nologo /v:n /p:Configuration=release,Platform=x64 gbe.sln
|
||||
```
|
||||
|
||||
* For `MSYS2` **this is currently experimental and will not work due to ABI differences**
|
||||
<details>
|
||||
<summary>steps</summary>
|
||||
|
||||
|
||||
```shell
|
||||
./third-party/common/win/premake/premake5.exe --file=premake5.lua --genproto --os=windows gmake2
|
||||
|
||||
|
||||
cd ./build/project/gmake2/win
|
||||
```
|
||||
*(Optional)* You can use `Clang` compiler instead of `GCC` by running these 2 commands in the current terminal instance
|
||||
```shell
|
||||
export CC="clang"
|
||||
export CXX="clang++"
|
||||
```
|
||||
```
|
||||
* 64-bit build (`UCRT64` or `MINGW64`)
|
||||
```shell
|
||||
make config=release_x64 -j 8 all
|
||||
@ -232,11 +226,11 @@ Open CMD in the repo folder, then run the following
|
||||
```shell
|
||||
make config=release_x32 -j 8 all
|
||||
```
|
||||
To see all possible build targets
|
||||
To see all possible build targets
|
||||
```shell
|
||||
make help
|
||||
```
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
This will build a release version of the emu in the folder `build\win\<toolchain>\release`
|
||||
@ -249,22 +243,22 @@ Open a terminal in the repo folder, then run the following
|
||||
```shell
|
||||
./third-party/common/linux/premake/premake5 --file=premake5.lua --genproto --os=linux gmake2
|
||||
cd ./build/project/gmake2/linux
|
||||
```
|
||||
```
|
||||
*(Optional)* You can use `Clang` compiler instead of `GCC` by running these 2 commands in the current terminal instance
|
||||
```shell
|
||||
export CC="clang"
|
||||
export CXX="clang++"
|
||||
```
|
||||
```
|
||||
Then run the following
|
||||
```shell
|
||||
make config=release_x32 -j 8 all
|
||||
make config=release_x64 -j 8 all
|
||||
```
|
||||
```
|
||||
|
||||
To see all possible build targets
|
||||
```shell
|
||||
make help
|
||||
```
|
||||
```
|
||||
|
||||
This will build a release version of the emu in the folder `build/linux/<toolchain>/release`
|
||||
An example script `build_linux_premake.sh` is available, check it out
|
||||
@ -292,12 +286,12 @@ Open bash terminal then:
|
||||
1. Create python virtual environemnt and install the required packages/dependencies
|
||||
```shell
|
||||
sudo ./recreate_venv_linux.sh
|
||||
```
|
||||
```
|
||||
You might need to edit this script to use a different python version.
|
||||
Find this line and change it:
|
||||
```shell
|
||||
python_package="python3.12"
|
||||
```
|
||||
```
|
||||
2. Build the tool using `pyinstaller`
|
||||
```shell
|
||||
./rebuild_linux.sh
|
||||
|
@ -1 +1,2 @@
|
||||
Explanations for random thoughts and ideas.
|
||||
Explanations for random thoughts and ideas.
|
||||
|
||||
|
@ -963,7 +963,7 @@ static std::string get_mod_preview_url(const std::string &previewFileName, const
|
||||
} else {
|
||||
auto settings_folder = std::string(Local_Storage::get_game_settings_path());
|
||||
std::replace(settings_folder.begin(), settings_folder.end(), '\\', '/');
|
||||
return "file://" + settings_folder + "mod_images/" + mod_id + "/" + previewFileName;
|
||||
return "file://" + settings_folder + "mods_img/" + mod_id + "/" + previewFileName;
|
||||
}
|
||||
|
||||
}
|
||||
@ -972,7 +972,7 @@ static void try_parse_mods_file(class Settings *settings_client, Settings *setti
|
||||
{
|
||||
for (auto mod = mod_items.begin(); mod != mod_items.end(); ++mod) {
|
||||
try {
|
||||
std::string mod_images_fullpath = Local_Storage::get_game_settings_path() + "mod_images" + PATH_SEPARATOR + std::string(mod.key());
|
||||
std::string mod_images_fullpath = Local_Storage::get_game_settings_path() + "mods_img" + PATH_SEPARATOR + std::string(mod.key());
|
||||
Mod_entry newMod;
|
||||
newMod.id = std::stoull(mod.key());
|
||||
newMod.title = mod.value().value("title", std::string(mod.key()));
|
||||
@ -1063,7 +1063,7 @@ static void try_detect_mods_folder(class Settings *settings_client, Settings *se
|
||||
{
|
||||
std::vector<std::string> all_mods = Local_Storage::get_folders_path(mods_folder);
|
||||
for (auto & mod_folder: all_mods) {
|
||||
std::string mod_images_fullpath = Local_Storage::get_game_settings_path() + "mod_images" + PATH_SEPARATOR + mod_folder;
|
||||
std::string mod_images_fullpath = Local_Storage::get_game_settings_path() + "mods_img" + PATH_SEPARATOR + mod_folder;
|
||||
try {
|
||||
Mod_entry newMod;
|
||||
newMod.id = std::stoull(mod_folder);
|
||||
|
@ -533,7 +533,7 @@ int32 Steam_Remote_Storage::UGCRead( UGCHandle_t hContent, void *pvData, int32 c
|
||||
if (dwf.source == Downloaded_File::DownloadSource::AfterSendQueryUGCRequest) {
|
||||
std::string mod_base_path = dwf.mod_query_info.is_primary_file
|
||||
? mod.path
|
||||
: Local_Storage::get_game_settings_path() + "mod_images" + PATH_SEPARATOR + std::to_string(mod.id);
|
||||
: Local_Storage::get_game_settings_path() + "mods_img" + PATH_SEPARATOR + std::to_string(mod.id);
|
||||
|
||||
mod_fullpath = common_helpers::to_absolute(mod_name, mod_base_path);
|
||||
} else { // Downloaded_File::DownloadSource::FromUGCDownloadToLocation
|
||||
@ -1116,7 +1116,7 @@ SteamAPICall_t Steam_Remote_Storage::UGCDownloadToLocation( UGCHandle_t hContent
|
||||
: mod.previewFileName;
|
||||
std::string mod_base_path = query_res.value().is_primary_file
|
||||
? mod.path
|
||||
: Local_Storage::get_game_settings_path() + "mod_images" + PATH_SEPARATOR + std::to_string(mod.id);
|
||||
: Local_Storage::get_game_settings_path() + "mods_img" + PATH_SEPARATOR + std::to_string(mod.id);
|
||||
int32 mod_size = query_res.value().is_primary_file
|
||||
? mod.primaryFileSize
|
||||
: mod.previewFileSize;
|
||||
|
@ -1,10 +1,8 @@
|
||||
## What is this ?
|
||||
This is the debug build of the emu, while the game/app is running
|
||||
the emu will write various events to a log file called `STEAM_LOG.txt`.
|
||||
This is the debug build of the emu, while the game/app is running, the emu will write various events to a log file called `STEAM_LOG.txt`
|
||||
|
||||
## Where is this log file ?
|
||||
Generally it should be beside the .dll/.so iteself, unless the environment variable `GseAppPath`
|
||||
is defined, in which case this will be the path of this log file
|
||||
It should be beside the `.dll/.so` itself, unless the environment variable `GseAppPath` is defined, in which case this will be the path of this log file
|
||||
|
||||
## Why ?
|
||||
This is intended for debugging purposes, use it to check the behavior of the emu while running.
|
||||
This is intended for debugging purposes, use it to check the behavior of the emu while running
|
||||
|
@ -1,23 +1,25 @@
|
||||
## What is this ?
|
||||
This build of the emulator:
|
||||
* Blocks all outgoing connections from the game to non **LAN** IPs
|
||||
* Lets you use CPY cracks that use the `steam_api` dll to patch the exe in memory when the `SteamAPI_Init()` method is called
|
||||
This experimental build of the emulator:
|
||||
* Blocks all outgoing connections from the game to non-LAN IPs
|
||||
|
||||
* Lets you use CPY style cracks that use the `steam_api` dll to patch the exe in memory when the `SteamAPI_Init()` method is called
|
||||
|
||||
* Can load extra dlls in memory via `LoadLibraryW()`
|
||||
|
||||
* Mr.Goldberg's note:
|
||||
> In this folder is an experimental build of the emulator with code that hooks a few windows socket functions. It should block all connections from the game to non LAN ips. This means the game should work without any problems for LAN play (even with VPN LAN as long as you use standard LAN ips 10.x.x.x, 192.168.x.x, etc...)
|
||||
|
||||
> It likely doesn't work for some games but it should work for most of them.
|
||||
|
||||
> Since this blocks all non LAN connections doing things like hosting a cracked server for people on the internet will not work or connecting to a cracked server that's hosted on an internet ip will not work.
|
||||
Mr.Goldberg's note:
|
||||
> In this folder is an experimental build of the emulator with code that hooks a few windows socket functions. It should block all connections from the game to non-LAN IPs. This means the game should work without any problems for LAN play (even with VPN LAN as long as you use standard LAN IPs 10.x.x.x, 192.168.x.x, etc...)
|
||||
|
||||
> It likely doesn't work for some games but it should work for most of them
|
||||
|
||||
> Since this blocks all non LAN connections doing things like hosting a cracked server for people on the internet will not work or connecting to a cracked server that's hosted on an internet IP will not work
|
||||
|
||||
## Why ?
|
||||
Mr.Goldberg's note:
|
||||
> Lots of games seem to connect to analytics services and other crap.
|
||||
> Blocking the game from communicating with online ips without affecting the LAN functionality of this emu is a pain if you try to use a firewall.
|
||||
> Lots of games seem to connect to analytics services and other crap
|
||||
> Blocking the game from communicating with online IPs without affecting the LAN functionality of this emu is a pain if you try to use a firewall
|
||||
|
||||
## Which IPs are blocked ?
|
||||
**All** IPs *except* these ranges:
|
||||
## Which IPs are allowed ?
|
||||
With `disable_lan_only=0` inside `.\steam_settings\configs.main.ini`, only **LAN-only IPs** are allowed:
|
||||
* 10.0.0.0 - 10.255.255.255
|
||||
* 127.0.0.0 - 127.255.255.255
|
||||
* 169.254.0.0 - 169.254.255.255
|
||||
@ -25,14 +27,12 @@ Mr.Goldberg's note:
|
||||
* 192.168.0.0 - 192.168.255.255
|
||||
* 224.0.0.0 - 255.255.255.255
|
||||
|
||||
## To disable the LAN only connections feature
|
||||
Modify your `steam_settings\configs.main.ini` and set `disable_lan_only=1`.
|
||||
To allow all IPs, including **non-LAN IPs**, modify your `.\steam_settings\configs.main.ini` and set `disable_lan_only=1`
|
||||
|
||||
## How to use a CPY style crack
|
||||
1. Rename `steam_api.dll` crack to `cracksteam_api.dll`, or `steam_api64.dll` to `cracksteam_api64.dll`
|
||||
2. Replace the `steamclient(64).dll` crack with the one in this folder.
|
||||
3. Then use the emu like you normally would with all the configurations
|
||||
2. Replace the `steamclient(64).dll` crack with the one in this folder
|
||||
|
||||
## How to load extra dlls in memory
|
||||
Put the dll file inside the folder `steam_settings\load_dlls\` and it will be loaded automatically using the `LoadLibraryW()` function
|
||||
Put the dll file inside the folder `.\steam_settings\load_dlls`, and it will be loaded automatically using the `LoadLibraryW()` function
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
## What is this ?
|
||||
This build of the emu has the overlay enabled, it works on very few games
|
||||
This experimental build of the emu for Linux. The overlay is enabled, though it works on very few games.
|
||||
|
@ -1,27 +1,26 @@
|
||||
## What is this ?
|
||||
This is a build of the `experimental` version of the emu in `steamclient` mode, with an included loader which was originally [written by Rat431](https://github.com/Rat431/ColdAPI_Steam/tree/master/src/ColdClientLoader) and later modified to suite the needs of this emu.
|
||||
This is a build of the `experimental` version of the emu in `steamclient` mode, with an included loader which was originally [written by Rat431](https://github.com/Rat431/ColdAPI_Steam/tree/master/src/ColdClientLoader) and later modified to suit the needs of this emu.
|
||||
|
||||
The backend .dll/.so of Steam is a library called `steamclient`, this build will act as a `steamclient` allowing you to retain the original `steam_api(64).dll`.
|
||||
See both the regular and experimental readmes for how to configure it.
|
||||
The backend `.dll/.so` of Steam is a library called `steamclient`, this build will act as a `steamclient` allowing you to retain the original `steam_api(64).dll`. See both the regular and experimental readmes for how to configure it.
|
||||
|
||||
---
|
||||
|
||||
**Note** that all emu config files should be put beside the `steamclient(64).dll`.
|
||||
**Note** that all emu config files should be put beside the `steamclient(64).dll`
|
||||
|
||||
You do not need to create a `steam_interfaces.txt` file for the `steamclient` version of the emu.
|
||||
You do not need to create a `steam_interfaces.txt` file for the `steamclient` version of the emu
|
||||
|
||||
---
|
||||
|
||||
## How to ue it ?
|
||||
## How to use it ?
|
||||
1. Copy the following files to any folder:
|
||||
* `steamclient.dll`
|
||||
* `steamclient64.dll`
|
||||
* `ColdClientLoader.ini`
|
||||
* `steamclient_loader.exe`
|
||||
|
||||
2. While it is not mandatory, it is highly recommended to copy the relevant `GameOverlayRenderer` dll(s)
|
||||
This is recommended because some apps check for the existence of this dll, either on disk, on inside their memory space, otherwise they'll trigger custom protection.
|
||||
When in doubt, just copy both dlls.
|
||||
2. While it is not mandatory, it is highly recommended to copy the relevant `GameOverlayRenderer` dll
|
||||
This is recommended because some apps check for the existence of this dll, either on disk, on inside their memory space, otherwise they'll trigger custom protection
|
||||
When in doubt, just copy both dlls:
|
||||
* `GameOverlayRenderer.dll`: for 32-bit apps
|
||||
* `GameOverlayRenderer64.dll`: for 64-bit apps
|
||||
|
||||
@ -48,37 +47,36 @@ You do not need to create a `steam_interfaces.txt` file for the `steamclient` ve
|
||||
* `Mode` (in `[Persistence]` section):
|
||||
- 0 = turned off
|
||||
- 1 = loader will spawn the exe and keep hanging in the background until you press "OK"
|
||||
- 2 = loader will NOT spawn exe, it will just setup the required environemnt and keep hanging in the background
|
||||
- 2 = loader will NOT spawn exe, it will just setup the required environment and keep hanging in the background
|
||||
you have to run the Exe manually, and finally press "OK" when you've finished playing
|
||||
you have to rename the loader to "steam.exe"
|
||||
it is advised to run the loader as admin in this mode
|
||||
|
||||
|
||||
**Note** that any arguments passed to `steamclient_loader.exe` via command line will be passed to the target `.exe`.
|
||||
Example: `steamclient_loader.exe` `-dx11`
|
||||
If the additional exe arguments were both: passed via command line and set in the `.ini` file, then both will be cocatenated and passed to the exe.
|
||||
If the additional exe arguments were both: passed via command line and set in the `.ini` file, then both will be concatenated and passed to the exe.
|
||||
This allows the loader to be used/called from other external apps which set additional args.
|
||||
|
||||
### `DllsToInjectFolder`
|
||||
The folder specified by this identifier should contain the .dll files you'd like to inject in the app earlier during its creation.
|
||||
All the subfolders inside this folder will be traversed recursively, and the .dll files inside these subfolders will be loaded/injected.
|
||||
## Using `DllsToInjectFolder`
|
||||
The folder specified by this identifier should contain the dll files you'd like to inject in the app earlier during its creation.
|
||||
All the subfolders inside this folder will be traversed recursively, and the dll files inside these subfolders will be loaded/injected.
|
||||
|
||||
Additionaly, you can create a file called `load_order.txt` inside your folder (root level, not inside any subdir), mentioning on each line the .dll files to inject.
|
||||
The order of the lines will instruct the loader which .dll to inject first, the .dll mentioned on the first line will be injected first and so on.
|
||||
Each line inside this file has to be the relative path of your target .dll, and it should be relative to your folder. Check the example.
|
||||
Additionally, you can create a file called `load_order.txt` inside your folder (root level, not inside any subdir), mentioning on each line the dll files to inject.
|
||||
The order of the lines will instruct the loader which dll to inject first, the dll mentioned on the first line will be injected first and so on.
|
||||
Each line inside this file has to be the relative path of your target dll, and it should be relative to your folder. Check the example.
|
||||
|
||||
If this file is created then the loader will only inject the .dll files mentioned inside it, otherwise it will attempt to find all valid .dll files and inject them.
|
||||
If this file is created then the loader will only inject the dll files mentioned inside it, otherwise it will attempt to find all valid dll files and inject them.
|
||||
|
||||
---
|
||||
|
||||
## `extra_dlls`
|
||||
This folder contains an experimental dll which, when injected, will attempt to patch the Stub drm in memory, mainly for newer variants but it also works on some of the older ones.
|
||||
## Using `extra_dlls`
|
||||
This folder contains an experimental dll which, when injected, will attempt to patch the Stub DRM in memory, mainly for newer variants but it also works on some of the older ones.
|
||||
|
||||
This isn't a complete solution, just a different method.
|
||||
This dll is meant to be injected during **startup** only, it must **not** be placed inside `steam_settings/load_dlls`, otherwise it would cause a huge FPS drop.
|
||||
This dll is meant to be injected during **start-up** only, it must **NOT** be placed inside `.\steam_settings\load_dlls`, otherwise it would cause a huge FPS drop.
|
||||
|
||||
---
|
||||
|
||||
## `GameOverlayRenderer`
|
||||
## Using `GameOverlayRenderer`
|
||||
Some apps verify the existence of this dll, either on disk, or inside their memory space, that's why this dll exists.
|
||||
It is **NOT** recommended to ignore this dll.
|
||||
|
@ -3,19 +3,19 @@ This tool will generate the file `steam_interfaces.txt` which is **always** reco
|
||||
|
||||
## How to use it ?
|
||||
1. * On Windows
|
||||
* Drag `steam_api.dll` or `steam_api64.dll` on this exe
|
||||
* Drag `steam_api.dll` or `steam_api64.dll` on this exe.
|
||||
* Or run the command line (example):
|
||||
```batch
|
||||
generate_interfaces_file.exe steam_api64.dll
|
||||
generate_interfaces_x64.exe steam_api64.dll
|
||||
```
|
||||
* On Linux:
|
||||
* Run the command line (example):
|
||||
```bash
|
||||
chmod 777 generate_interfaces_file_x64 # make sure we can execute the binary
|
||||
generate_interfaces_file_x64 libsteam_api.so
|
||||
chmod 777 generate_interfaces_x64 # make sure we can execute the binary
|
||||
generate_interfaces_x64 libsteam_api.so
|
||||
```
|
||||
2. Copy the generated `steam_interfaces.txt` file inside the folder `steam_settings`
|
||||
2. Copy the generated `steam_interfaces.txt` file inside the folder `steam_settings`.
|
||||
---
|
||||
|
||||
In both cases, make sure the .dll/.so is **the original** one
|
||||
In both cases, make sure the .dll / .so is **the original** one !
|
||||
---
|
||||
|
@ -2,38 +2,37 @@
|
||||
====Goldberg Steam Emulator====
|
||||
---
|
||||
|
||||
An emulator that supports LAN multiplayer without steam.
|
||||
An emulator that supports LAN multiplayer without Steam
|
||||
https://gitlab.com/Mr_Goldberg/goldberg_emulator
|
||||
|
||||
---
|
||||
|
||||
## How to use:
|
||||
1. Replace the `steam_api(64).dll` (Windows) or `libsteam_api.so` (Linux) from the game with the emu.
|
||||
2. Use the command line tool `generate_emu_config` to generate the `steam_settings` folder
|
||||
1. Replace the `steam_api(64).dll` (Windows) or `libsteam_api.so` (Linux) from the game with the emu
|
||||
2. Use the command line tool `generate_emu_config` to generate the `.\steam_settings` folder
|
||||
3. Use the command line tool `generate_interfaces` to generate the file `steam_interfaces.txt`,
|
||||
then move it inside the folder `steam_settings`
|
||||
4. Move the entire folder `steam_settings` beside the emu .dll/.so.
|
||||
5. Copy the the example files `steam_settings.EXAMPLE\configs.xxx.EXAMPLE.ini` and paste them inside your own `steam_settings` folder, then the postfix `.EXAMPLE`.
|
||||
6. Make sure to keep the **only** options you need, do **NOT** sepecify everything inside these .ini files
|
||||
then move it inside the folder `.\steam_settings`
|
||||
4. Move the entire folder `.\steam_settings` beside the emu `.dll/.so`
|
||||
5. Copy the the example files `.\steam_settings.EXAMPLE\configs.xxx.EXAMPLE.ini` and paste them inside your own `steam_settings` folder, then remove `.EXAMPLE` from their name
|
||||
|
||||
|
||||
Mr.Goldberg's note:
|
||||
> If the game has DRM (other than steamworks) you need to remove it first.
|
||||
> If the game has DRM (other than Steamworks) you need to remove it first
|
||||
|
||||
---
|
||||
|
||||
## Various configurations:
|
||||
Due to the various changes and additions, it became tedious to document everything,
|
||||
so it is recommended to check each example file in the `steam_settings` folder, and the various options inside `configs.xxx.ini`.
|
||||
so it is recommended to check each example file in the `.\steam_settings` folder, and the various options inside `configs.xxx.ini`
|
||||
|
||||
---
|
||||
|
||||
When you use the emu at least once, some default configurations are saved inside the global settings folder
|
||||
When you use the emu at least once, some default configurations are saved inside the global settings folder:
|
||||
|
||||
* `configs.main.ini`: configurations for the emu itself
|
||||
* `configs.user.ini`: configurations specific to the user
|
||||
* `configs.app.ini`: configurations specific to the game/app
|
||||
* `configs.overlay.ini`: configurations of the overlay
|
||||
* `configs.user.ini`: configurations for the user
|
||||
* `configs.app.ini`: configurations for the game/app
|
||||
* `configs.overlay.ini`: configurations for the overlay
|
||||
|
||||
---
|
||||
|
||||
@ -50,60 +49,58 @@ When you use the emu at least once, some default configurations are saved inside
|
||||
* Otherwise:
|
||||
`SAVE/GSE Saves/` (relative to the current directory, which might not be the same as app/game directory)
|
||||
|
||||
You can override the name of the base folder `GSE Saves` to whatever you want per game, to do this modify `configs.user.ini` inside your `steam_settings` folder and change the value of `saves_folder_name`.
|
||||
Check the example file in `steam_settings.EXAMPLE\configs.EXAMPLE.ini`.
|
||||
You can override the name of the base folder `GSE Saves` to whatever you want per game, to do this modify `configs.user.ini` inside your `.\steam_settings` folder and change the value of `saves_folder_name`
|
||||
Check the example file in `.\steam_settings.EXAMPLE\configs.EXAMPLE.ini`
|
||||
|
||||
Any configurations inside your `steam_settings` folder will always override the global configurations.
|
||||
Any configurations inside your `steam_settings` folder will always override the global configurations
|
||||
|
||||
---
|
||||
|
||||
## Portable saves:
|
||||
|
||||
If you want to use local/portable saves, specify the parameter `local_save_path` inside your local `steam_settings/configs.user.ini`, the emu will completely ignore the global settings folder, allowing a full portable behavior
|
||||
If you want to use local/portable saves, specify the parameter `local_save_path` inside your local `.\steam_settings\configs.user.ini`, the emu will completely ignore the global settings folder, allowing a full portable behavior
|
||||
|
||||
---
|
||||
|
||||
## Languages:
|
||||
You can include a `steam_settings\supported_languages.txt` file with a list of languages that the game supports.
|
||||
You can include a `.\steam_settings\supported_languages.txt` file with a list of languages that the game supports
|
||||
If the global emu language setting is not in this list of languages, the emu will default to the first language in the list
|
||||
|
||||
If the global emu language setting is not in this list of languages, the emu will default to the first language in the list.
|
||||
|
||||
See the `steam_settings.EXAMPLE` folder for an example.
|
||||
See the `.\steam_settings.EXAMPLE` folder for an example.
|
||||
|
||||
---
|
||||
|
||||
## Depots:
|
||||
This is pretty rare but some games might use depot ids to see if dlcs are installed.
|
||||
You can provide a list of installed depots to the game with a `steam_settings\depots.txt` file.
|
||||
This is pretty rare but some games might use depot ids to see if dlcs are installed
|
||||
You can provide a list of installed depots to the game with a `.\steam_settings\depots.txt` file
|
||||
|
||||
See the `steam_settings.EXAMPLE` folder for an example.
|
||||
See the `.\steam_settings.EXAMPLE` folder for an example
|
||||
|
||||
---
|
||||
|
||||
## Subscribed Groups:
|
||||
Some games like payday 2 check which groups you are subscribed in and unlock things based on that.
|
||||
You can provide a list of subscribed groups to the game with a `steam_settings\subscribed_groups.txt` file.
|
||||
Some games like payday 2 check which groups you are subscribed in and unlock things based on that
|
||||
You can provide a list of subscribed groups to the game with a `.\steam_settings\subscribed_groups.txt` file
|
||||
|
||||
See `steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt` for an example for payday 2.
|
||||
See `.\steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt` for an example for PayDay 2
|
||||
|
||||
---
|
||||
|
||||
## Subscribed Groups (Clans):
|
||||
Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan.
|
||||
You can provide a list of subscribed group ids, names, and tags to the game with a `steam_settings\subscribed_groups_clans.txt` file.
|
||||
Some games like Counter-Strike check which groups you are subscribed in and allow you to choose a group clan
|
||||
You can provide a list of subscribed group ids, names, and tags to the game with a `.\steam_settings\subscribed_groups_clans.txt` file
|
||||
|
||||
Group ids must be valid and can be obtained by pasting '`/memberslistxml/?xml=1`' at the end of a Steam group page.
|
||||
Group ids must be valid and can be obtained by pasting '`/memberslistxml/?xml=1`' at the end of a Steam group page
|
||||
|
||||
See `steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt` for an example.
|
||||
See `.\steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt` for an example
|
||||
|
||||
---
|
||||
|
||||
## App paths:
|
||||
Some rare games might need to be provided one or more paths to app ids.
|
||||
For example the path to where a dlc is installed.
|
||||
This sets the paths returned by the `Steam_Apps::GetAppInstallDir` function.
|
||||
## App Paths:
|
||||
Some rare games might need to be provided one or more paths to app ids, for example the path to where a dlc is installed
|
||||
This sets the paths returned by the `Steam_Apps::GetAppInstallDir` function
|
||||
|
||||
See `[app::paths]` inside `steam_settings.EXAMPLE\configs.app.EXAMPLE.ini` for an example.
|
||||
See `[app::paths]` inside `.\steam_settings.EXAMPLE\configs.app.EXAMPLE.ini` for an example
|
||||
|
||||
Note that paths are treated as relative paths **from where the steam_api dll is located**.
|
||||
---
|
||||
@ -111,51 +108,51 @@ Note that paths are treated as relative paths **from where the steam_api dll is
|
||||
---
|
||||
|
||||
## Mods:
|
||||
* Put your mod in the `steam_settings\mods\<MOD NUMBER>\` folder
|
||||
* Modify `mods.json` and specify `primary_filename` and `preview_filename`, other options in this json file are optional.
|
||||
* Put the mod image/preview inside `steam_settings\mod_images\<MOD NUMBER>`
|
||||
* Put your mod in the `.\steam_settings\mods\<MOD NUMBER>\` folder
|
||||
* Modify `mods.json` and specify `primary_filename` and `preview_filename`, other options in this json file are optional
|
||||
* Put the mod image/preview inside `.\steam_settings\mods_img\<MOD NUMBER>`
|
||||
|
||||
Mod data folder must be a number corresponding to the file id of the mod.
|
||||
Mod data folder must be a number corresponding to the file id of the mod
|
||||
|
||||
See the `steam_settings.EXAMPLE` folder for an example.
|
||||
See the `.\steam_settings.EXAMPLE` folder for an example
|
||||
|
||||
---
|
||||
|
||||
## Steam appid:
|
||||
Put your `steam_appid.txt` in the `steam_settings` folder because this is where the emulator checks first.
|
||||
Put your `steam_appid.txt` in the `.\steam_settings` folder because this is where the emulator checks first
|
||||
|
||||
If there is no `steam_appid.txt` in the `steam_settings` folder it will try opening it from the run path of the game.
|
||||
If one isn't there it will try to load it from beside steam api dll.
|
||||
If there is no `steam_appid.txt` in the `.\steam_settings` folder it will try opening it from the run path of the game
|
||||
If one isn't there it will try to load it from beside steam api dll
|
||||
|
||||
The steam appid can also be set using the `SteamAppId` or `SteamGameId` env variables (this is how real steam tells games what their appid is).
|
||||
The steam appid can also be set using the `SteamAppId` or `SteamGameId` env variables (this is how real steam tells games what their appid is)
|
||||
|
||||
But it is highly recommended to always create this file inside `steam_settings` folder
|
||||
It is highly recommended to always create this file inside `.\steam_settings` folder !
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## Custom Broadcast IPs:
|
||||
If you want to set custom ips (or domains) which the emulator will send broadcast packets to, make a list of them, one on each line in: `GSE Saves\settings\custom_broadcasts.txt`
|
||||
If you want to set custom IPs (or domains) which the emulator will send broadcast packets to, make a list of them, one on each line in: `.\GSE Saves\settings\custom_broadcasts.txt`
|
||||
|
||||
If the custom IPs/domains are specific for one game only you can put the `custom_broadcasts.txt` in the `steam_settings` folder.
|
||||
If the custom IPs (or domains) are specific for one game only you can put the `custom_broadcasts.txt` in the `.\steam_settings` folder
|
||||
|
||||
An example is provided in `steam_settings.EXAMPLE\custom_broadcasts.EXAMPLE.txt`
|
||||
An example is provided in `.\steam_settings.EXAMPLE\custom_broadcasts.EXAMPLE.txt`
|
||||
|
||||
---
|
||||
|
||||
## Achievements, Items or Inventory:
|
||||
Create a file named `items.json` and/or `achievements.json` inside the `steam_settings` folder which will contain every item/achievement you want to have in your game.
|
||||
Create a file named `items.json` and/or `achievements.json` inside the `.\steam_settings` folder which will contain every item/achievement you want to have in your game.
|
||||
|
||||
An example can be found in `steam_settings.EXAMPLE` that works with Killing Floor 2.
|
||||
An example can be found in `.\steam_settings.EXAMPLE` that works with Killing Floor 2.
|
||||
|
||||
The `items.json` syntax is simple, you **MUST** validate your `.json` file before trying to run your game or you won't have any item in your inventory.
|
||||
Just look for "online json validator" on your web brower to valide your file.
|
||||
The `items.json` syntax is simple, you **MUST** validate your `.json` file before trying to run your game or you won't have any item in your inventory
|
||||
Just look for "online json validator" on your web browser to validate your file.
|
||||
|
||||
You can use https://steamdb.info/ to list items and attributes they have and put them into your .json, you can also use the command line tool `generate_emu_config`.
|
||||
You can use https://steamdb.info/ to list items and attributes they have and put them into your `.json`, you can also use the command line tool `generate_emu_config`
|
||||
|
||||
Keep in mind that some item are not valid to have in your inventory.
|
||||
Keep in mind that some item are not valid to have in your inventory !
|
||||
---
|
||||
For example, in PayDay2 all items below `item_id` `50000` will make your game crash.
|
||||
For example, in PayDay2 all items below `item_id` `50000` will make your game crash
|
||||
* `items.json` should contain all the item definitions for the game,
|
||||
* `default_items.json` is the quantity of each item that you want a user to have initially in their inventory. By default the user will have no items.
|
||||
|
||||
@ -164,13 +161,12 @@ It is recommended to use the command line tool `generate_emu_config` for that ma
|
||||
---
|
||||
|
||||
## Leaderboards:
|
||||
By default the emulator assumes all leaderboards queried by the game `FindLeaderboard()` exist and creates them with the most common options (sort method descending, display type numeric).
|
||||
In some games this default behavior doesn't work and so you may need to tweak which leaderboards the game sees.
|
||||
By default the emulator assumes all leaderboards queried by the game `FindLeaderboard()` exist and creates them with the most common options (sort method descending, display type numeric)
|
||||
In some games this default behavior doesn't work and so you may need to tweak which leaderboards the game sees
|
||||
|
||||
To do that, you can put a `leaderboards.txt` file in the `steam_settings` folder.
|
||||
To do that, you can put a `leaderboards.txt` file in the `.\steam_settings` folder
|
||||
|
||||
The format is:
|
||||
`LEADERBOARD_NAME=sort method=display type`
|
||||
The format is: `LEADERBOARD_NAME=sort_method=display_type`
|
||||
|
||||
For the sort methods:
|
||||
* 0 = none
|
||||
@ -183,14 +179,14 @@ For the display type
|
||||
* 2 = time seconds
|
||||
* 3 = milliseconds
|
||||
|
||||
An example can be found in `steam_settings.EXAMPLE`
|
||||
An example can be found in `.\steam_settings.EXAMPLE`
|
||||
|
||||
---
|
||||
|
||||
## Stats:
|
||||
By default this emulator assumes all stats do not exist unless the option `allow_unknown_stats` in `configs.main.ini` is set to 1.
|
||||
By default this emulator assumes all stats do not exist unless the option `allow_unknown_stats` in `configs.main.ini` is set to 1
|
||||
|
||||
To properly define the stats of a game, put a `stats.txt` file in the `steam_settings` folder.
|
||||
To properly define the stats of a game, put a `stats.txt` file in the `.\steam_settings` folder
|
||||
The format is:
|
||||
`stat_name=type=default value`
|
||||
|
||||
@ -199,29 +195,29 @@ The type can be
|
||||
* float
|
||||
* avgrate
|
||||
|
||||
The default value is simply a number that represents the default value for the stat.
|
||||
The default value is simply a number that represents the default value for the stat
|
||||
|
||||
You can use the command line tool `generate_emu_config` to generate a stats config
|
||||
|
||||
---
|
||||
|
||||
## SteamHTTP:
|
||||
Create a `steam_settings\http\` folder which should contain the domain name and path to the files that will be returned by steamHTTP like so \(For example this url: `https://en.wikipedia.org/wiki/Main_Page`\):
|
||||
Create a `.\steam_settings\http\` folder which should contain the domain name and path to the files that will be returned by steamHTTP like so \(For example this url: `https://en.wikipedia.org/wiki/Main_Page`\):
|
||||
|
||||
* Create a folder `steam_settings\http\en.wikipedia.org\wiki\Main_Page`
|
||||
* Create a folder `.\steam_settings\http\en.wikipedia.org\wiki\Main_Page`
|
||||
* The `Main_Page` **file** would contain the data returned by the steamHTTP api when it tries to access: `https://en.wikipedia.org/wiki/Main_Page`
|
||||
|
||||
An example that was made for payday 2 can be found in `steam_settings.EXAMPLE`
|
||||
An example that was made for PayDay 2 can be found in `.\steam_settings.EXAMPLE`
|
||||
|
||||
---
|
||||
|
||||
## Avatar:
|
||||
Copy a `png`, or a `jpg`, or a `jpeg` image file to your `GSE Settings/settings` folder and name it `account_avatar`.
|
||||
You can also place this file inside the local `steam_settings` folder of the game.
|
||||
Copy a `png`, or a `jpg`, or a `jpeg` image file to your `.\GSE Settings\settings` folder and name it `account_avatar`
|
||||
You can also place this file inside the local `.\steam_settings` folder of the game
|
||||
|
||||
Players avatars are shared over the local network
|
||||
|
||||
You can find an example in `steam_settings.EXAMPLE`
|
||||
You can find an example in `.\steam_settings.EXAMPLE`
|
||||
|
||||
---
|
||||
|
||||
@ -232,53 +228,55 @@ See the build in the experimental folder.
|
||||
You must all be on the same LAN for it to work.
|
||||
|
||||
**IMPORTANT:**
|
||||
Do not run more than one steam game with the **same appid** at the same time on the same computer with this emu or there might be network issues (dedicated servers should be fine though).
|
||||
Do not run more than one steam game with the **same appid** at the same time on the same computer with this emu, or there might be network issues (dedicated servers should be fine though)
|
||||
|
||||
---
|
||||
|
||||
## Overlay:
|
||||
**Note: at the moment this feature is only enabled in the experimental builds**
|
||||
**It's a highly experimental feature, use at your own risk**
|
||||
|
||||
**It's a highly experimental feature, use at your own risk !**
|
||||
|
||||
---
|
||||
|
||||
This is made possible using the amazing third-party library `Ingame Overlay project`: https://github.com/Nemirtingas/ingame_overlay
|
||||
|
||||
The overlay can be enabled by modifying `configs.overlay.ini` and setting `enable_experimental_overlay=1`.
|
||||
Use `SHIFT-TAB` to open the overlay.
|
||||
The overlay can be enabled by modifying `configs.overlay.ini` and setting `enable_experimental_overlay=1`
|
||||
Use `SHIFT-TAB` to open the overlay
|
||||
|
||||
This feature is **highly experimental** and might cause crashes or other problems.
|
||||
This feature is **highly experimental** and might cause crashes or other problems
|
||||
|
||||
Alternatively, you can use the dedicated tool `lobby_connect` to join a game lobby.
|
||||
Alternatively, you can use the dedicated tool `lobby_connect` to join a game lobby
|
||||
|
||||
---
|
||||
|
||||
## Overlay notifications sounds:
|
||||
**Note: at the moment this feature is only enabled in the experimental builds for Windows only**
|
||||
|
||||
---
|
||||
|
||||
You can place a `.wav` file called `overlay_achievement_notification.wav` inside either the local `steam_settings/sounds` folder of the game, or inside `GSE Settings/settings/sounds` folder, which will be played whenever an achievement is unlocked.
|
||||
You can place a `.wav` file called `overlay_achievement_notification.wav` inside either the local `.\steam_settings\sounds` folder of the game, or inside `.\GSE Settings\settings\sounds` folder, which will be played whenever an achievement is unlocked
|
||||
|
||||
You can place a `.wav` file called `overlay_friend_notification.wav` inside either the local `steam_settings/sounds` folder of the game, or inside `GSE Settings/settings/sounds` folder, which will be played whenever a friend sends an invitation.
|
||||
You can place a `.wav` file called `overlay_friend_notification.wav` inside either the local `.\steam_settings\sounds` folder of the game, or inside `.\GSE Settings\settings\sounds` folder, which will be played whenever a friend sends an invitation
|
||||
|
||||
You can find an example in `steam_settings.EXAMPLE`
|
||||
You can find an example in `.\steam_settings.EXAMPLE`
|
||||
|
||||
---
|
||||
|
||||
## Controller:
|
||||
**Note: at the moment this feature is only enabled in the Windows experimental builds and the linux builds**
|
||||
---
|
||||
**Note: at the moment this feature is only enabled in the Windows experimental builds and the Linux builds**
|
||||
|
||||
**SteamController/SteamInput support is limited to XInput controllers**
|
||||
|
||||
SteamController/SteamInput support is limited to **XInput** controllers.
|
||||
---
|
||||
If your controller is not XInput, there are many tools (at least for windows) that you can use to make it emulate an XInput one.
|
||||
|
||||
Steam uses things called action sets for controller configuration. An action set is a group of action names.
|
||||
Action names are bound to buttons, triggers or joysticks.
|
||||
The emulator needs to know for each action set, which button is linked to which action name.
|
||||
Steam uses things called action sets for controller configuration. An action set is a group of action names
|
||||
Action names are bound to buttons, triggers or joysticks. The emulator needs to know for each action set, which button is linked to which action name
|
||||
|
||||
Create a `ACTION_SET_NAME.txt` file in the `steam_settings\controller\` folder for every action set the game uses.
|
||||
Create a `ACTION_SET_NAME.txt` file in the `.\steam_settings\controller` folder for every action set the game uses
|
||||
|
||||
To see an example for the game Crystar see: `steam_settings.EXAMPLE\controller.EXAMPLE`
|
||||
Example for the game Crystar: `.\steam_settings.EXAMPLE\controller.EXAMPLE`
|
||||
|
||||
In the action set txt files the format is:
|
||||
* For digital actions (buttons, on or off):
|
||||
@ -289,12 +287,12 @@ In the action set txt files the format is:
|
||||
Actions can be bound to more than one button by separating the buttons with, like this:
|
||||
`ACTION_NAME=A,B`
|
||||
|
||||
You can use the command line tool `generate_emu_config` to generate a config file.
|
||||
Or if you want to configure a game yourself, find the `vdf` file for `xbox360` or `xbox one` controller of the game and use the tool `parse_controller_vdf`, you should be able to figure things out.
|
||||
You can use the command line tool `generate_emu_config` to generate a config file
|
||||
Or if you want to configure a game yourself, find the `vdf` file for `xbox360` or `xbox one` controller of the game and use the tool `parse_controller_vdf`, you should be able to figure things out
|
||||
|
||||
For example to get the vdf file for the game Crystar: https://steamdb.info/app/981750/config/
|
||||
If you look at: `steamcontrollerconfigdetails`, you will see something like: `1779660455/controller_type: controller_xbox360`
|
||||
`1779660455` refers to a file id that you can dl using your favorite steam workshop downloader site.
|
||||
`1779660455` refers to a file id that you can download using your favourite steam workshop downloader site
|
||||
The url would be: https://steamcommunity.com/sharedfiles/filedetails/?id=1779660455
|
||||
|
||||
The glyphs directory contains some glyphs for the controller buttons for the games that use the `GetGlyphForActionOrigin()` function.
|
||||
@ -342,7 +340,7 @@ By default the emu will send the old token format for various APIs, like:
|
||||
* `Steam_User::GetAuthSessionTicket()`
|
||||
* `Steam_User::GetAuthTicketForWebApi()`
|
||||
|
||||
You can make the emu generate new ticket data, and additionally the GC token.
|
||||
You can make the emu generate new ticket data, and additionally the GC token
|
||||
Modify `configs.main.ini` and set `new_app_ticket=1` and additionally `gc_token=1`
|
||||
|
||||
---
|
||||
@ -350,10 +348,10 @@ Modify `configs.main.ini` and set `new_app_ticket=1` and additionally `gc_token=
|
||||
## Fake Windows dll/exe certificate and antivirus software:
|
||||
|
||||
The Windows build is signed with a fake self-signed certificate, this helps in bypassing some basic checks by apps,
|
||||
but it also triggers some antivirus software.
|
||||
but it also triggers some antivirus software
|
||||
|
||||
First of all, **never** install these certificates to your certificate store, they are randomly generated.
|
||||
Second, the project is not a malware, if your antivirus software complains, be sure it's a false-positive.
|
||||
First of all, **never** install these certificates to your certificate store, they are randomly generated
|
||||
Second, the project is not a malware, if your antivirus software complains, be sure it's a false-positive
|
||||
|
||||
---
|
||||
|
||||
@ -395,26 +393,29 @@ Look for the column `API language code`
|
||||
|
||||
## Bypass overlay and auto accept game/lobby invites:
|
||||
**Note: at the moment this feature is only enabled in the experimental builds**
|
||||
|
||||
---
|
||||
|
||||
When the overlay is enabled and working, you can bypass it and auto-accept invites (lobby or game) from a list of Steam IDs (SteamID64 format).
|
||||
When the overlay is enabled and working, you can bypass it and auto-accept invites (lobby or game) from a list of Steam IDs (SteamID64 format)
|
||||
The configuration file `auto_accept_invite.txt` allows you to do that, it works like this:
|
||||
|
||||
* Adding an empty file: will accept invites from anyone (same behavior as if the overlay was disabled)
|
||||
* Adding a file with some friends IDs (each on a separate line):
|
||||
* If the friend ID is found in this file, the invitation will be accepted automatically
|
||||
* If the friend ID is not found, you'll get the regular overlay invitation
|
||||
|
||||
Check the example file in the `steam_settings` folder
|
||||
Check the example file in the `.\steam_settings` folder
|
||||
|
||||
---
|
||||
|
||||
## Enable non-LAN behavior in `steam_matchmaking_servers`:
|
||||
|
||||
By default, match making servers (which handles browsing for matches) will always return LAN servers list whenever the game inquires about the available servers with a specific type (Internet, Friends, LAN, etc...).
|
||||
You can make the emu return the proper/actual servers list for the given type, by modifying `configs.main.ini` and setting `matchmaking_server_list_actual_type-1`.
|
||||
**This is currently broken**.
|
||||
By default, match making servers (which handles browsing for matches) will always return LAN servers list whenever the game inquires about the available servers with a specific type (Internet, Friends, LAN, etc...)
|
||||
|
||||
You can make the emu return the proper/actual servers list for the given type, by modifying `configs.main.ini` and setting `matchmaking_server_list_actual_type-1`
|
||||
**This is currently broken**
|
||||
|
||||
Also, match making servers will return the info of the server from the incoming local packets, you can make the emu retrieve the actual server info by performing a source server query, this is enabled by setting `matchmaking_server_details_via_source_query-1` inside `configs.main.ini`.
|
||||
**This is currently broken**.
|
||||
**This is currently broken**
|
||||
|
||||
---
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
@ -1,27 +1,26 @@
|
||||
# ############################################################################## #
|
||||
# you do not have to specify everything, pick and choose the options you need only
|
||||
# ############################################################################## #
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[app::general]
|
||||
# by default the emu will report a `non-beta` branch when the game calls `Steam_Apps::GetCurrentBetaName()`
|
||||
# make the game/app think we're playing on a beta branch
|
||||
# by default the emu will report a 'non-beta' branch when the game calls 'Steam_Apps::GetCurrentBetaName()'
|
||||
# if 1, makes the game/app think we're playing on a beta branch
|
||||
is_beta_branch=0
|
||||
# the name of the current branch, this must also exist in branches.json
|
||||
# otherwise will be ignored by the emu and the default 'public' branch will be used
|
||||
# the name of the current branch - this must also exist in 'branches.json'
|
||||
# otherwise it'll be ignored and the default 'public' branch will be used
|
||||
branch_name=public
|
||||
|
||||
[app::dlcs]
|
||||
# should the emu report all DLCs as unlocked
|
||||
# some games check for "hidden" DLCs, hence this should be set to 1 in that case
|
||||
# but other games detect emus by querying for a fake/bad DLC, hence this should be set to 0 in that case
|
||||
# default=1
|
||||
# report all DLCs as unlocked; some games check for 'hidden' DLCs, hence this should be set to 1 in that case
|
||||
# however, other games detect emus by querying for a fake/bad DLC, hence this should be set to 0 in that case
|
||||
unlock_all=0
|
||||
# format: ID=name
|
||||
1234=DLCNAME
|
||||
56789=This is another example DLC name
|
||||
# 1234=DLCNAME
|
||||
# 56789=This is another example DLC name
|
||||
|
||||
[app::paths]
|
||||
556760=../DLCRoot0
|
||||
1234=./folder_where_steam_api_is
|
||||
3456=../folder_one_level_above_where_steam_api_is
|
||||
5678=../../folder_two_levels_above_where_steam_api_is
|
||||
# format: ID=path
|
||||
# 556760=../DLCRoot0
|
||||
# 1234=./folder_where_steam_api_is
|
||||
# 3456=../folder_one_level_above_where_steam_api_is
|
||||
# 5678=../../folder_two_levels_above_where_steam_api_is
|
||||
|
@ -1,59 +1,54 @@
|
||||
# ############################################################################## #
|
||||
# you do not have to specify everything, pick and choose the options you need only
|
||||
# ############################################################################## #
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[main::general]
|
||||
# generate new app auth ticket
|
||||
new_app_ticket=1
|
||||
# generate/embed GC token inside new App Ticket
|
||||
# generate/embed GC token inside new app ticket
|
||||
gc_token=1
|
||||
# pretend the app is running on a steam deck
|
||||
steam_deck=0
|
||||
# enable avatar functionality
|
||||
enable_account_avatar=0
|
||||
# prevent Steam_User_Stats::FindLeaderboard() from always succeeding and creating the unknown leaderboard
|
||||
# not recommended to disable this
|
||||
# default=0, not recommended to change it
|
||||
disable_leaderboards_create_unknown=0
|
||||
# the emu will only save/update stats defined by the user, unknown stats requested or updated by the game will be rejected
|
||||
# by default, the emu will only save/update stats defined in 'stats.txt', unknown stats requested or updated by the game will be rejected
|
||||
# set this to 1 to allow unknown stats
|
||||
# default=0
|
||||
allow_unknown_stats=0
|
||||
# whenever a game updates a stat which is tied to an achievement progress, the emu will save that progress immediately
|
||||
# but some games will update the stat very frequently (with lower & higher values) resulting in a spam of disk writes or overlay notifications
|
||||
# set this to 0 to save any stat achievement progress value (higher or lower)
|
||||
# this has no impact on the stat itself, only the achievement progress of a stat which is tied to an achievement
|
||||
# also has no impact on the functions which directly change stats, achievements, or achievements progress
|
||||
# default=1
|
||||
# if 0, whenever a game updates a stat which is tied to an achievement progress, the emu will save that stat progress immediately
|
||||
# some games will update the stat very frequently (with lower & higher values) resulting in a spam of disk writes or overlay notifications
|
||||
# set this to 1 to save stat progress only on higher progress value, thus avoiding spam of disk writes or overlay notifications
|
||||
# this has no impact on the stat itself, only the achievement progress of a stat tied to an achievement progress
|
||||
# also, this has no impact on the functions which directly change stats, achievements, or achievements progress
|
||||
save_only_higher_stat_achievement_progress=1
|
||||
# synchronize user stats/achievements with game servers as soon as possible instead of caching them until the next call to `Steam_RunCallbacks()`
|
||||
# not recommended
|
||||
# default=0, not recommended to change it
|
||||
immediate_gameserver_stats=0
|
||||
# use the proper type of the server list (internet, friends, etc...) when requested by the game
|
||||
# otherwise, the emu will always return the type "LAN server"
|
||||
# not recommended
|
||||
# otherwise, the emu will always return the type 'LAN server'
|
||||
# default=0, not recommended to change it
|
||||
matchmaking_server_list_actual_type=0
|
||||
# grab the server details for match making using an actual server query
|
||||
# not recommended
|
||||
# default=0, not recommended to change it
|
||||
matchmaking_server_details_via_source_query=0
|
||||
# very basic crash logger/printer
|
||||
# this is intended to debug some annoying scenarios, and best used with the debug build of the emu
|
||||
crash_printer_location=./path/relative/to/dll/crashes.txt
|
||||
crash_printer_location=./EMU_CRASHES.txt
|
||||
|
||||
[main::connectivity]
|
||||
# prevent hooking OS networking APIs and allow any external requests
|
||||
# only used by the experimental builds on Windows
|
||||
disable_lan_only=0
|
||||
# disable all steam networking interface functionality
|
||||
# this won't prevent games/apps from making external requests
|
||||
disable_lan_only=1
|
||||
# disable all steam networking interface functionality - this won't prevent games/apps from making external requests
|
||||
# networking related functionality like lobbies or those that launch a server in the background will not work
|
||||
disable_networking=0
|
||||
# change the UDP/TCP port the emulator listens on, you should probably not change this because everyone needs to use the same port or you won't find yourselves on the network
|
||||
listen_port=47584
|
||||
# pretend steam is running in offline mode
|
||||
# Some games that connect to online servers might only work if the steam emu behaves like steam is in offline mode
|
||||
# pretend steam is running in offline mode; some games that connect to online servers might only work if the steam emu behaves like steam is in offline mode
|
||||
offline=0
|
||||
# prevent sharing stats and achievements with any game server,
|
||||
# this also disables the interface ISteamGameServerStats
|
||||
# prevent sharing stats and achievements with any game server, also disables the interface ISteamGameServerStats
|
||||
disable_sharing_stats_with_gameserver=0
|
||||
# do not send server details to the server browser, only works for game servers
|
||||
disable_source_query=0
|
||||
@ -66,19 +61,20 @@ disable_lobby_creation=0
|
||||
# * set disable_lan_only=1
|
||||
# * set disable_networking=0
|
||||
# this will **not** work if the app is using native/OS web APIs
|
||||
download_steamhttp_requests=0
|
||||
download_steamhttp_requests=1
|
||||
|
||||
############################################
|
||||
# mostly workarounds for specific problems #
|
||||
############################################
|
||||
|
||||
# mostly workarounds for specific problems
|
||||
[main::misc]
|
||||
# force SetAchievement() to always return true
|
||||
achievements_bypass=0
|
||||
# force the function Steam_HTTP::SendHTTPRequest() to always succeed
|
||||
force_steamhttp_success=0
|
||||
# env var SteamOverlayGameId breaks Steam Input when the game is added to Steam as a non-steam game
|
||||
disable_steamoverlaygameid_env_var=0
|
||||
# add many Steam apps to the list of owned DLCs and the emu's list of installed app IDs
|
||||
# useful for many Source-based games
|
||||
disable_steamoverlaygameid_env_var=1
|
||||
# add many Steam apps to the list of owned DLCs and the emu's list of installed app IDs, useful for many Source-based games
|
||||
# https://developer.valvesoftware.com/wiki/Steam_Application_IDs
|
||||
# https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
|
||||
# default=0
|
||||
enable_steam_preowned_ids=0
|
||||
|
@ -1,19 +1,14 @@
|
||||
# ----------------------------
|
||||
# XXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
# XXX USE AT YOUR OWN RISK XXX
|
||||
# XXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
# ----------------------------
|
||||
#
|
||||
# This feature might cause crashes or other problems
|
||||
#
|
||||
# ############################################################################## #
|
||||
# you do not have to specify everything, pick and choose the options you need only
|
||||
# ############################################################################## #
|
||||
# #
|
||||
# USE AT YOUR OWN RISK :: This feature might cause crashes or other problems #
|
||||
# #
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[overlay::general]
|
||||
# enable the experimental overlay, might cause crashes
|
||||
enable_experimental_overlay=0
|
||||
# amount of time to wait before attempting to detect and hook the renderer (DirectX, OpenGL, etc...)
|
||||
enable_experimental_overlay=1
|
||||
# amount of time to wait before attempting to detect and hook the renderer (DirectX, OpenGL, Vulkan, etc...)
|
||||
# default=0
|
||||
hook_delay_sec=0
|
||||
# timeout for the renderer detector
|
||||
@ -33,13 +28,12 @@ disable_warning_bad_appid=0
|
||||
disable_warning_local_save=0
|
||||
|
||||
[overlay::appearance]
|
||||
# load custom TrueType font from a path, it could be absolute, or relative
|
||||
# relative paths will be looked up inside the local folder "steam_settings/fonts" first,
|
||||
# if that wasn't found, it will be looked up inside the global folder "GSE Settings/settings/fonts"
|
||||
Font_Override=Roboto-Medium.ttf
|
||||
# global font size
|
||||
# for built-in font, multiple of 16 is recommended. e.g. 16 32...
|
||||
Font_Size=20.0
|
||||
# load custom TrueType font from an absolute or relative path
|
||||
# relative paths will be looked up inside the local folder 'steam_settings/fonts' first,
|
||||
# if not found, it will be looked up inside the global folder 'GSE Settings/settings/fonts'
|
||||
#Font_Override=Roboto-Medium.ttf
|
||||
# global font size - for built-in font, multiple of 16 is recommended, e.g. 16, 32, etc
|
||||
Font_Size=16.0
|
||||
|
||||
# achievement icon size
|
||||
Icon_Size=64.0
|
||||
@ -56,24 +50,25 @@ Notification_A=1.0
|
||||
|
||||
# notifications corners roundness
|
||||
Notification_Rounding=10.0
|
||||
|
||||
# horizontal (x) and vertical (y) margins for the notifications
|
||||
Notification_Margin_x=5.0
|
||||
Notification_Margin_y=5.0
|
||||
|
||||
# duration/timing for various notification types (in seconds)
|
||||
# duration of notification animation in seconds. Set to 0 to disable
|
||||
# duration of notification animation in seconds - set to 0 to disable
|
||||
Notification_Animation=0.35
|
||||
|
||||
# duration of achievement progress indication
|
||||
Notification_Duration_Progress=6.0
|
||||
# duration of achievement unlocked
|
||||
Notification_Duration_Achievement=7.0
|
||||
Notification_Duration_Achievement=6.0
|
||||
# duration of friend invitation
|
||||
Notification_Duration_Invitation=8.0
|
||||
# duration of chat message
|
||||
Notification_Duration_Chat=4.0
|
||||
|
||||
# format for the achievement unlock date/time, limited to 79 characters
|
||||
# if the output formatted string exceeded this limit, the builtin format will be used
|
||||
# if the output formatted string exceeded this limit, the built-in format will be used
|
||||
# look for the format here: https://en.cppreference.com/w/cpp/chrono/c/strftime
|
||||
Achievement_Unlock_Datetime_Format=%Y/%m/%d - %H:%M:%S
|
||||
|
||||
|
@ -1,15 +1,14 @@
|
||||
# ############################################################################## #
|
||||
# you do not have to specify everything, pick and choose the options you need only
|
||||
# ############################################################################## #
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[user::general]
|
||||
# user account name
|
||||
account_name=gse orca
|
||||
account_name=goldberg
|
||||
# Steam64 format
|
||||
account_steamid=76561197960287930
|
||||
# the language reported to the app/game
|
||||
# look for the column 'API language code' here: https://partner.steamgames.com/doc/store/localization/languages
|
||||
# this must also exist in 'supported_languages.txt', otherwise it will be ignored by the emu
|
||||
# default=english
|
||||
language=english
|
||||
# report a country IP if the game queries it
|
||||
@ -19,11 +18,10 @@ ip_country=US
|
||||
|
||||
[user::saves]
|
||||
# when this is set, it will force the emu to use the specified location instead of the default global location
|
||||
# path could be absolute, or relative to the location of the .dll/.so
|
||||
# leading and trailing whitespaces are trimmed
|
||||
# path could be absolute, or relative to the location of the .dll/.so, leading and trailing whitespaces are trimmed
|
||||
# when this option is used, the global settings folder is completely ignored, allowing a full portable behavior
|
||||
local_save_path=./path/relative/to/dll
|
||||
# name of the base folder used to store save data, leading and trailing whitespaces are trimmed
|
||||
# only useful if 'local_save_path' isn't used
|
||||
#local_save_path=GSE Saves
|
||||
# name of the default global folder used to store save data, leading and trailing whitespaces are trimmed
|
||||
# default=GSE Saves
|
||||
saves_folder_name=GSE Saves
|
||||
|
||||
|
@ -1 +1,2 @@
|
||||
Place your overlay fonts here, then modify `overlay_appearance` and point at the desired one.
|
||||
Place your overlay fonts here, then modify `Font_Override` in `configs.overlay.ini` and point at the desired one
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
{
|
||||
"9422": {
|
||||
"12345": {
|
||||
"title": "Some Workshop Item",
|
||||
"description": "This is the prefered way of specifying mod details, primary file must exist in steam_settings/mods/9422 (along with any other mod files), and preview file must exist in steam_settings/mod_images/9422",
|
||||
"description": "This is the prefered way of specifying mod details, primary file must exist in steam_settings/mods/12345 (along with any other mod files), and preview file must exist in steam_settings/mods_img/12345",
|
||||
"primary_filename": "metadata.json",
|
||||
"preview_filename": "thumbnail.png"
|
||||
"preview_filename": "my_preview_image.jpg"
|
||||
},
|
||||
|
||||
"111111111": {
|
||||
"title": "Example Workshop Item",
|
||||
"description": "Example Workshop Item with all Details",
|
||||
"description": "Example Workshop Item with all details",
|
||||
"steam_id_owner": 11111111111111111,
|
||||
"time_created": 1554997000,
|
||||
"time_updated": 1554997000,
|
||||
"time_added": 1554997000,
|
||||
"tags": "Maps, exampleTag, exampleTag2",
|
||||
"tags": "Maps, exampleTag1, exampleTag2",
|
||||
"primary_filename": "test.sav",
|
||||
"primary_filesize": 1000000,
|
||||
"preview_filename": "test.png",
|
||||
@ -25,14 +25,14 @@
|
||||
"upvotes": 10,
|
||||
"downvotes": 1,
|
||||
"num_children": 0,
|
||||
"path": "C:\\games\\my_game\\steam_settings\\mods_data\\mod_111111111_data_folder",
|
||||
"preview_url": "file://C:/games/my_game/steam_settings/mod_images/my_preview.jpg",
|
||||
"path": "C:\\games\\my_game\\steam_settings\\mods\\111111111",
|
||||
"preview_url": "file://C:/games/my_game/steam_settings/mods_img/111111111/preview.jpg",
|
||||
"score": 0.7
|
||||
},
|
||||
|
||||
"222222222": {
|
||||
"title": "Example Workshop Item",
|
||||
"description": "Example Workshop Item with some Details",
|
||||
"description": "Example Workshop Item with some details",
|
||||
"preview_url": "https://commons.wikimedia.org/wiki/File:Tree_in_Mississippi.jpg",
|
||||
"score": 1.0
|
||||
},
|
||||
|
@ -0,0 +1,2 @@
|
||||
Put here the file whose name is specified by the JSON key `preview_filename` inside `mods.json`
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
@ -1,5 +1,7 @@
|
||||
**This is currently available for Windows only**
|
||||
|
||||
Place your overlay audio files here.
|
||||
Place your overlay audio files here:
|
||||
* `overlay_achievement_notification.wav`: will be played when an achievement is unlocked
|
||||
* `overlay_friend_notification.wav`: will be played when a friend sends an invitation
|
||||
|
||||
* `overlay_friend_notification.wav`: will be played when a friend sends an invitation
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
Don't forget to modify the file `ColdClientLoader.ini` to point at the folder `extra_dlls`.
|
||||
`load_order.txt` will force the order in which the dlls are injected into the app
|
||||
The file`load_order.txt` will force the order in which the dlls are injected into the app.
|
||||
|
@ -1,18 +1,18 @@
|
||||
This directory contains additional resources used during build.
|
||||
|
||||
* The folder [win](./win/) contains the resources added to the .dll/.exe binaries,
|
||||
these include version info and an immitation of any extra resources found in the original .dll/.exe.
|
||||
these include version info and an imitation of any extra resources found in the original .dll/.exe.
|
||||
|
||||
These resources are built using Microsoft's resourec compiler `rc.exe` during the build process,
|
||||
These resources are built using Microsoft's resource compiler `rc.exe` during the build process,
|
||||
and the output files are stored in `build\tmp\win\rsrc` as `*.res`.
|
||||
|
||||
These resources are later passed to the compiler `cl.exe` as any normal `.cpp` or `.c` file:
|
||||
```bash
|
||||
cl.exe myfile.cpp myres.res -o myout.exe
|
||||
```
|
||||
* [api](./win/api/): contains an immitation of the resources found in `steam_api(64).dll`
|
||||
* [client](./win/client/): contains an immitation of the resources found in `steamclient(64).dll`
|
||||
* [launcher](./win/launcher/): contains an immitation of the resources found in `steam.exe`
|
||||
* [game_overlay_renderer](./win/game_overlay_renderer/): contains an immitation of the resources found in `GameOverlayRenderer(64).dll`
|
||||
* [file_dos_stub](./win/file_dos_stub/): contains an immitation of how the DOS stub is manipulated after build
|
||||
* [api](./win/api/): contains an imitation of the resources found in `steam_api(64).dll`
|
||||
* [client](./win/client/): contains an imitation of the resources found in `steamclient(64).dll`
|
||||
* [launcher](./win/launcher/): contains an imitation of the resources found in `steam.exe`
|
||||
* [game_overlay_renderer](./win/game_overlay_renderer/): contains an imitation of the resources found in `GameOverlayRenderer(64).dll`
|
||||
* [file_dos_stub](./win/file_dos_stub/): contains an imitation of how the DOS stub is manipulated after build
|
||||
|
||||
|
@ -1,29 +1,24 @@
|
||||
## What is this ?
|
||||
This is a command line tool to generate the `steam_settings` folder for the emu,
|
||||
you need a Steam account to grab most info, but you can use an anonymous account with limited access to Steam data.
|
||||
|
||||
<br/>
|
||||
This is a command line tool to generate complete custom configs, including the `steam_settings` folder for the emu.
|
||||
You need a Steam account to grab most info, but you can use an anonymous account with limited access to Steam data.
|
||||
|
||||
## Usage
|
||||
```bash
|
||||
generate_emu_config [options] <app id 1> [app id 2] [app id 3] ...
|
||||
```
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Available **\[options\]**
|
||||
To get all available options, run the tool without any arguments.
|
||||
|
||||
---
|
||||
|
||||
### Login:
|
||||
## Using *my_login.txt*
|
||||
You'll be asked each time to enter your username and password, but you can automate this prompt.
|
||||
|
||||
* You can create a file called `my_login.txt` beside this tool with the following data:
|
||||
- Your **username** on the **first** line
|
||||
- Your **password** on the **second** line
|
||||
|
||||
**But beware though of accidentally distributing your login data when using this file**.
|
||||
Beware of accidentally distributing your login data when using this file !
|
||||
---
|
||||
* You can define these environment variables, note that these environment variables will override the file `my_login.txt`:
|
||||
- `GSE_CFG_USERNAME`
|
||||
@ -31,34 +26,37 @@ You'll be asked each time to enter your username and password, but you can autom
|
||||
|
||||
When defining these environment variables in a script, take care of special characters.
|
||||
|
||||
Example for Windows:
|
||||
Example for Windows:
|
||||
```shell
|
||||
set GSE_CFG_USERNAME=my_username
|
||||
set GSE_CFG_PASSWORD=123 abc
|
||||
set GSE_CFG_PASSWORD=123abc
|
||||
generate_emu_config.exe 480
|
||||
```
|
||||
|
||||
Example for Linux:
|
||||
Example for Linux:
|
||||
```shell
|
||||
export GSE_CFG_USERNAME=my_username
|
||||
export GSE_CFG_PASSWORD=123 abc
|
||||
export GSE_CFG_PASSWORD=123abc
|
||||
./generate_emu_config 480
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Downloading data for new apps/games and defining extra account IDs:
|
||||
## Using *top_owners_ids.txt*
|
||||
The script uses public Steam IDs (in Steam64 format) of apps/games owners in order to query the required info, such as achievement data.
|
||||
By default, it has a built-in list of public users IDs, and you can extend this list by creating a file called `top_owners_ids.txt` beside the script, then add each new ID in Steam64 format on a separate line.
|
||||
By default, it has a built-in list of public users IDs, which can be extended by creating a file called `top_owners_ids.txt` beside the script, then adding each new ID in Steam64 format on a separate line. When you login with a non-anonymous account, its ID will be added to the top of the list.
|
||||
|
||||
When you login with a non-anonymous account, its ID will be added to the top of the list.
|
||||
Steam IDs with public profiles that own a lot of games --- https://steamladder.com/ladder/games/
|
||||
How to generate/update `top_owners_ids.txt` upon running generate_emu_config:
|
||||
|
||||
<br/>
|
||||
- copy and paste the above address in your web browser
|
||||
- right click and save web page, html only with the name top_owners_ids.html
|
||||
- copy and paste `top_owners_ids.html` next to generate_emu_config exe or py
|
||||
|
||||
---
|
||||
|
||||
## Attributions and credits
|
||||
|
||||
* Windows icon by: [FroyoShark](https://www.iconarchive.com/artist/froyoshark.html)
|
||||
license: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/)
|
||||
Source: [icon archive: Steam Icon](https://www.iconarchive.com/show/enkel-icons-by-froyoshark/Steam-icon.html)
|
||||
License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/)
|
||||
Source: [icon archive: Steam Icon](https://www.iconarchive.com/show/enkel-icons-by-froyoshark/Steam-icon.html)
|
||||
|
BIN
tools/generate_emu_config/_DEFAULT/0/steam_api.7z
Normal file
BIN
tools/generate_emu_config/_DEFAULT/0/steam_api.dll
Normal file
BIN
tools/generate_emu_config/_DEFAULT/0/steam_api64.7z
Normal file
BIN
tools/generate_emu_config/_DEFAULT/0/steam_api64.dll
Normal file
167
tools/generate_emu_config/_DEFAULT/1/gse_acw_helper.cfg
Normal file
@ -0,0 +1,167 @@
|
||||
[General]
|
||||
|
||||
# 0 - Show Advanced Run window
|
||||
# 1 - Skip Advanced Run window
|
||||
AutoRun=1
|
||||
|
||||
#
|
||||
|
||||
# 1 - Run .EXE File
|
||||
# 2 - ShellExecute - Open the specified file, folder or URL with the default program
|
||||
# 3 - Command Prompt - Execute command or batch file of Windows Command Prompt (.BAT, .CMD)
|
||||
# 4 - PowerShell Command - Execute the specified PowerShell command
|
||||
# 5 - PowerShell Script File - Run the specified PowerShell script (.PS1)
|
||||
RunMode=3
|
||||
|
||||
# open, edit, explore, print - only for RunMode 2
|
||||
ShellExecuteAction=open
|
||||
|
||||
# Program to Run - only for RunMode 1. For RunMode 2, 3, 4, 5 use CommandLine
|
||||
EXEFilename=
|
||||
|
||||
# Command-line arguments, file to ShellExecute, Command Prompt / PowerShell file to run or Command Prompt / PowerShell command string to execute
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandLine=.\steam_misc\tools\bat\acw_helper.bat
|
||||
|
||||
# Start Directory - make sure any paths in CommandLine are relative to the start directory
|
||||
StartDirectory=.\
|
||||
|
||||
# AdvancedRun process will wait in the background until the process executed by AdvancedRun is terminated, 0 - disabled, 1 -enabled
|
||||
WaitProcess=1
|
||||
|
||||
# Process Priority Class:
|
||||
# 64 - low, 32 - normal, 128 - high, 256 - realtime, 16384 - below normal, 32768 - above normal
|
||||
PriorityClass=32
|
||||
|
||||
# Command Window Mode - only for RunMode 3, 4, 5
|
||||
# 1 - Leave window opened after executing commands (same as 'CMD /K'), 2 - Close window after executing commands (same as 'CMD /C') - only for RunMode 3, 4, 5
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandWindowMode=2
|
||||
|
||||
# Main window state
|
||||
# 0 - hidden, 1 - normal, 2 - minimized, 3 - maximized
|
||||
WindowState=0
|
||||
|
||||
# Main window position
|
||||
UseWindowPosition=0
|
||||
WindowPosition=20,20
|
||||
|
||||
# Main window size
|
||||
UseWindowSize=0
|
||||
WindowSize=640,400
|
||||
|
||||
#
|
||||
|
||||
# 1 - Current User - Allow UAC Elevation
|
||||
# 2 - Current User - Without UAC Elevation
|
||||
# 3 - Administrator (Force UAC Elevation)
|
||||
# 4 - SYSTEM User
|
||||
# 5 - User of the selected process
|
||||
# 6 - Child of the selected process (Using code injection)
|
||||
# 7 - Specified username and password
|
||||
# 8 - TrustedInstaller
|
||||
# 9 - Another logged-in user
|
||||
# 10 - Network Service
|
||||
# 11 - Local Service
|
||||
RunAs=1
|
||||
|
||||
# Selected process name - only for RunAs 5, 6
|
||||
RunAsProcessName=
|
||||
|
||||
# Specified username - only for RunAs 7, 9 (password can't be set in this .CFG file, so it's better to run with /RunAsUserName "username" /RunAsPassword "password" parameters instead)
|
||||
RunAsUserName=
|
||||
|
||||
# Specified domain - only for RunAs 7
|
||||
RunAsDomain=
|
||||
|
||||
#
|
||||
|
||||
# Run on remote computer with temporary Windows service, 0 - disabled, 1 - enabled
|
||||
RunFromService=0
|
||||
|
||||
# Remote computer name - only for RunFromService 1
|
||||
ComputerName=
|
||||
|
||||
#
|
||||
|
||||
# Use search path to find the program location if the full path is not specified, 0 - disabled, 1 - enabled
|
||||
UseSearchPath=0
|
||||
|
||||
# Parse the environment variables inside the command-line string before passing it to the program
|
||||
ParseVarCommandLine=0
|
||||
|
||||
#
|
||||
|
||||
# Use process affinity mask, 0 - disabled, 1 - enabled
|
||||
UseAffinityMask=0
|
||||
|
||||
# Set process affinity mask (space-delimited list) - e.g. '0 1 2 3' process runs only on first 4 cores
|
||||
AffinityMask=0 1
|
||||
|
||||
#
|
||||
|
||||
# 0 - Compatibility mode disabled
|
||||
# 1 - Windows 95
|
||||
# 2 - Windows 98
|
||||
# 3 - Windows NT 4.0 SP5
|
||||
# 4 - Windows 2000
|
||||
# 5 - Windows XP SP2
|
||||
# 6 - Windows XP SP3
|
||||
# 7 - Server 2003 SP1
|
||||
# 8 - Server 2008 SP1
|
||||
# 9 - Vista
|
||||
# 10 - Vista SP1
|
||||
# 11 - Vista SP2
|
||||
# 12 - Windows 7
|
||||
# 13 - Windows 8
|
||||
OSCompatMode=0
|
||||
|
||||
# Use 1 to disable visual themes
|
||||
CompatDisableVisualThemes=0
|
||||
|
||||
# Use 1 to disable desktop composition
|
||||
CompatDisableDesktopComp=0
|
||||
|
||||
# Use 1 to run in 640 x 480 resolution
|
||||
Compat640480=0
|
||||
|
||||
# Use 1 to disable full screen optimizations
|
||||
CompatDisableFullScreenOpt=0
|
||||
|
||||
# 0 - Reduced colors disabled
|
||||
# 1 - 8-bit, 256 colors
|
||||
# 2 - 16-bit, 65536 colors
|
||||
CompatColors=0
|
||||
|
||||
# 0 - High DPI scaling override disabled
|
||||
# 1 - Application
|
||||
# 2 - System
|
||||
# 3 - System Enhanced
|
||||
CompatHighDPI=0
|
||||
|
||||
# 1 - Use current system environment variables without any change
|
||||
# 2 - Merge the following environment variables with the system variables
|
||||
# 3 - Use only the following environment variables (ignore the system variables)
|
||||
EnvironmentVariablesMode=1
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D5 03 00 00 4B 04 00 00 A2 08 00 00 FC 07 00 00
|
||||
|
||||
[EnvironmentVariables]
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 78 03 00 00 FC 02 00 00 45 08 00 00 AD 06 00 00
|
||||
|
||||
# Number of environment variables to merge - only for EnvironmentVariablesMode 2, 3
|
||||
Lines=0
|
||||
|
||||
# Merge the following environment variables, one by one on each line
|
||||
Line1=
|
||||
Line2=
|
||||
Line3=
|
||||
Line4=
|
||||
Line5=
|
||||
Line6=
|
||||
Line7=
|
||||
Line8=
|
||||
Line9=
|
BIN
tools/generate_emu_config/_DEFAULT/1/gse_acw_helper.exe
Normal file
167
tools/generate_emu_config/_DEFAULT/1/gse_debug_switch.cfg
Normal file
@ -0,0 +1,167 @@
|
||||
[General]
|
||||
|
||||
# 0 - Show Advanced Run window
|
||||
# 1 - Skip Advanced Run window
|
||||
AutoRun=1
|
||||
|
||||
#
|
||||
|
||||
# 1 - Run .EXE File
|
||||
# 2 - ShellExecute - Open the specified file, folder or URL with the default program
|
||||
# 3 - Command Prompt - Execute command or batch file of Windows Command Prompt (.BAT, .CMD)
|
||||
# 4 - PowerShell Command - Execute the specified PowerShell command
|
||||
# 5 - PowerShell Script File - Run the specified PowerShell script (.PS1)
|
||||
RunMode=3
|
||||
|
||||
# open, edit, explore, print - only for RunMode 2
|
||||
ShellExecuteAction=open
|
||||
|
||||
# Program to Run - only for RunMode 1. For RunMode 2, 3, 4, 5 use CommandLine
|
||||
EXEFilename=
|
||||
|
||||
# Command-line arguments, file to ShellExecute, Command Prompt / PowerShell file to run or Command Prompt / PowerShell command string to execute
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandLine=.\steam_misc\tools\bat\debug_switch.bat
|
||||
|
||||
# Start Directory - make sure any paths in CommandLine are relative to the start directory
|
||||
StartDirectory=.\
|
||||
|
||||
# AdvancedRun process will wait in the background until the process executed by AdvancedRun is terminated, 0 - disabled, 1 -enabled
|
||||
WaitProcess=1
|
||||
|
||||
# Process Priority Class:
|
||||
# 64 - low, 32 - normal, 128 - high, 256 - realtime, 16384 - below normal, 32768 - above normal
|
||||
PriorityClass=32
|
||||
|
||||
# Command Window Mode - only for RunMode 3, 4, 5
|
||||
# 1 - Leave window opened after executing commands (same as 'CMD /K'), 2 - Close window after executing commands (same as 'CMD /C') - only for RunMode 3, 4, 5
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandWindowMode=2
|
||||
|
||||
# Main window state
|
||||
# 0 - hidden, 1 - normal, 2 - minimized, 3 - maximized
|
||||
WindowState=0
|
||||
|
||||
# Main window position
|
||||
UseWindowPosition=0
|
||||
WindowPosition=20,20
|
||||
|
||||
# Main window size
|
||||
UseWindowSize=0
|
||||
WindowSize=640,400
|
||||
|
||||
#
|
||||
|
||||
# 1 - Current User - Allow UAC Elevation
|
||||
# 2 - Current User - Without UAC Elevation
|
||||
# 3 - Administrator (Force UAC Elevation)
|
||||
# 4 - SYSTEM User
|
||||
# 5 - User of the selected process
|
||||
# 6 - Child of the selected process (Using code injection)
|
||||
# 7 - Specified username and password
|
||||
# 8 - TrustedInstaller
|
||||
# 9 - Another logged-in user
|
||||
# 10 - Network Service
|
||||
# 11 - Local Service
|
||||
RunAs=1
|
||||
|
||||
# Selected process name - only for RunAs 5, 6
|
||||
RunAsProcessName=
|
||||
|
||||
# Specified username - only for RunAs 7, 9 (password can't be set in this .CFG file, so it's better to run with /RunAsUserName "username" /RunAsPassword "password" parameters instead)
|
||||
RunAsUserName=
|
||||
|
||||
# Specified domain - only for RunAs 7
|
||||
RunAsDomain=
|
||||
|
||||
#
|
||||
|
||||
# Run on remote computer with temporary Windows service, 0 - disabled, 1 - enabled
|
||||
RunFromService=0
|
||||
|
||||
# Remote computer name - only for RunFromService 1
|
||||
ComputerName=
|
||||
|
||||
#
|
||||
|
||||
# Use search path to find the program location if the full path is not specified, 0 - disabled, 1 - enabled
|
||||
UseSearchPath=0
|
||||
|
||||
# Parse the environment variables inside the command-line string before passing it to the program
|
||||
ParseVarCommandLine=0
|
||||
|
||||
#
|
||||
|
||||
# Use process affinity mask, 0 - disabled, 1 - enabled
|
||||
UseAffinityMask=0
|
||||
|
||||
# Set process affinity mask (space-delimited list) - e.g. '0 1 2 3' process runs only on first 4 cores
|
||||
AffinityMask=0 1
|
||||
|
||||
#
|
||||
|
||||
# 0 - Compatibility mode disabled
|
||||
# 1 - Windows 95
|
||||
# 2 - Windows 98
|
||||
# 3 - Windows NT 4.0 SP5
|
||||
# 4 - Windows 2000
|
||||
# 5 - Windows XP SP2
|
||||
# 6 - Windows XP SP3
|
||||
# 7 - Server 2003 SP1
|
||||
# 8 - Server 2008 SP1
|
||||
# 9 - Vista
|
||||
# 10 - Vista SP1
|
||||
# 11 - Vista SP2
|
||||
# 12 - Windows 7
|
||||
# 13 - Windows 8
|
||||
OSCompatMode=0
|
||||
|
||||
# Use 1 to disable visual themes
|
||||
CompatDisableVisualThemes=0
|
||||
|
||||
# Use 1 to disable desktop composition
|
||||
CompatDisableDesktopComp=0
|
||||
|
||||
# Use 1 to run in 640 x 480 resolution
|
||||
Compat640480=0
|
||||
|
||||
# Use 1 to disable full screen optimizations
|
||||
CompatDisableFullScreenOpt=0
|
||||
|
||||
# 0 - Reduced colors disabled
|
||||
# 1 - 8-bit, 256 colors
|
||||
# 2 - 16-bit, 65536 colors
|
||||
CompatColors=0
|
||||
|
||||
# 0 - High DPI scaling override disabled
|
||||
# 1 - Application
|
||||
# 2 - System
|
||||
# 3 - System Enhanced
|
||||
CompatHighDPI=0
|
||||
|
||||
# 1 - Use current system environment variables without any change
|
||||
# 2 - Merge the following environment variables with the system variables
|
||||
# 3 - Use only the following environment variables (ignore the system variables)
|
||||
EnvironmentVariablesMode=1
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D5 03 00 00 4B 04 00 00 A2 08 00 00 FC 07 00 00
|
||||
|
||||
[EnvironmentVariables]
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 78 03 00 00 FC 02 00 00 45 08 00 00 AD 06 00 00
|
||||
|
||||
# Number of environment variables to merge - only for EnvironmentVariablesMode 2, 3
|
||||
Lines=0
|
||||
|
||||
# Merge the following environment variables, one by one on each line
|
||||
Line1=
|
||||
Line2=
|
||||
Line3=
|
||||
Line4=
|
||||
Line5=
|
||||
Line6=
|
||||
Line7=
|
||||
Line8=
|
||||
Line9=
|
BIN
tools/generate_emu_config/_DEFAULT/1/gse_debug_switch.exe
Normal file
167
tools/generate_emu_config/_DEFAULT/1/gse_generate_interfaces.cfg
Normal file
@ -0,0 +1,167 @@
|
||||
[General]
|
||||
|
||||
# 0 - Show Advanced Run window
|
||||
# 1 - Skip Advanced Run window
|
||||
AutoRun=1
|
||||
|
||||
#
|
||||
|
||||
# 1 - Run .EXE File
|
||||
# 2 - ShellExecute - Open the specified file, folder or URL with the default program
|
||||
# 3 - Command Prompt - Execute command or batch file of Windows Command Prompt (.BAT, .CMD)
|
||||
# 4 - PowerShell Command - Execute the specified PowerShell command
|
||||
# 5 - PowerShell Script File - Run the specified PowerShell script (.PS1)
|
||||
RunMode=3
|
||||
|
||||
# open, edit, explore, print - only for RunMode 2
|
||||
ShellExecuteAction=open
|
||||
|
||||
# Program to Run - only for RunMode 1. For RunMode 2, 3, 4, 5 use CommandLine
|
||||
EXEFilename=
|
||||
|
||||
# Command-line arguments, file to ShellExecute, Command Prompt / PowerShell file to run or Command Prompt / PowerShell command string to execute
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandLine=.\steam_misc\tools\bat\generate_interfaces.bat
|
||||
|
||||
# Start Directory - make sure any paths in CommandLine are relative to the start directory
|
||||
StartDirectory=.\
|
||||
|
||||
# AdvancedRun process will wait in the background until the process executed by AdvancedRun is terminated, 0 - disabled, 1 -enabled
|
||||
WaitProcess=1
|
||||
|
||||
# Process Priority Class:
|
||||
# 64 - low, 32 - normal, 128 - high, 256 - realtime, 16384 - below normal, 32768 - above normal
|
||||
PriorityClass=32
|
||||
|
||||
# Command Window Mode - only for RunMode 3, 4, 5
|
||||
# 1 - Leave window opened after executing commands (same as 'CMD /K'), 2 - Close window after executing commands (same as 'CMD /C') - only for RunMode 3, 4, 5
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandWindowMode=2
|
||||
|
||||
# Main window state
|
||||
# 0 - hidden, 1 - normal, 2 - minimized, 3 - maximized
|
||||
WindowState=0
|
||||
|
||||
# Main window position
|
||||
UseWindowPosition=0
|
||||
WindowPosition=20,20
|
||||
|
||||
# Main window size
|
||||
UseWindowSize=0
|
||||
WindowSize=640,400
|
||||
|
||||
#
|
||||
|
||||
# 1 - Current User - Allow UAC Elevation
|
||||
# 2 - Current User - Without UAC Elevation
|
||||
# 3 - Administrator (Force UAC Elevation)
|
||||
# 4 - SYSTEM User
|
||||
# 5 - User of the selected process
|
||||
# 6 - Child of the selected process (Using code injection)
|
||||
# 7 - Specified username and password
|
||||
# 8 - TrustedInstaller
|
||||
# 9 - Another logged-in user
|
||||
# 10 - Network Service
|
||||
# 11 - Local Service
|
||||
RunAs=1
|
||||
|
||||
# Selected process name - only for RunAs 5, 6
|
||||
RunAsProcessName=
|
||||
|
||||
# Specified username - only for RunAs 7, 9 (password can't be set in this .CFG file, so it's better to run with /RunAsUserName "username" /RunAsPassword "password" parameters instead)
|
||||
RunAsUserName=
|
||||
|
||||
# Specified domain - only for RunAs 7
|
||||
RunAsDomain=
|
||||
|
||||
#
|
||||
|
||||
# Run on remote computer with temporary Windows service, 0 - disabled, 1 - enabled
|
||||
RunFromService=0
|
||||
|
||||
# Remote computer name - only for RunFromService 1
|
||||
ComputerName=
|
||||
|
||||
#
|
||||
|
||||
# Use search path to find the program location if the full path is not specified, 0 - disabled, 1 - enabled
|
||||
UseSearchPath=0
|
||||
|
||||
# Parse the environment variables inside the command-line string before passing it to the program
|
||||
ParseVarCommandLine=0
|
||||
|
||||
#
|
||||
|
||||
# Use process affinity mask, 0 - disabled, 1 - enabled
|
||||
UseAffinityMask=0
|
||||
|
||||
# Set process affinity mask (space-delimited list) - e.g. '0 1 2 3' process runs only on first 4 cores
|
||||
AffinityMask=0 1
|
||||
|
||||
#
|
||||
|
||||
# 0 - Compatibility mode disabled
|
||||
# 1 - Windows 95
|
||||
# 2 - Windows 98
|
||||
# 3 - Windows NT 4.0 SP5
|
||||
# 4 - Windows 2000
|
||||
# 5 - Windows XP SP2
|
||||
# 6 - Windows XP SP3
|
||||
# 7 - Server 2003 SP1
|
||||
# 8 - Server 2008 SP1
|
||||
# 9 - Vista
|
||||
# 10 - Vista SP1
|
||||
# 11 - Vista SP2
|
||||
# 12 - Windows 7
|
||||
# 13 - Windows 8
|
||||
OSCompatMode=0
|
||||
|
||||
# Use 1 to disable visual themes
|
||||
CompatDisableVisualThemes=0
|
||||
|
||||
# Use 1 to disable desktop composition
|
||||
CompatDisableDesktopComp=0
|
||||
|
||||
# Use 1 to run in 640 x 480 resolution
|
||||
Compat640480=0
|
||||
|
||||
# Use 1 to disable full screen optimizations
|
||||
CompatDisableFullScreenOpt=0
|
||||
|
||||
# 0 - Reduced colors disabled
|
||||
# 1 - 8-bit, 256 colors
|
||||
# 2 - 16-bit, 65536 colors
|
||||
CompatColors=0
|
||||
|
||||
# 0 - High DPI scaling override disabled
|
||||
# 1 - Application
|
||||
# 2 - System
|
||||
# 3 - System Enhanced
|
||||
CompatHighDPI=0
|
||||
|
||||
# 1 - Use current system environment variables without any change
|
||||
# 2 - Merge the following environment variables with the system variables
|
||||
# 3 - Use only the following environment variables (ignore the system variables)
|
||||
EnvironmentVariablesMode=1
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D5 03 00 00 4B 04 00 00 A2 08 00 00 FC 07 00 00
|
||||
|
||||
[EnvironmentVariables]
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 78 03 00 00 FC 02 00 00 45 08 00 00 AD 06 00 00
|
||||
|
||||
# Number of environment variables to merge - only for EnvironmentVariablesMode 2, 3
|
||||
Lines=0
|
||||
|
||||
# Merge the following environment variables, one by one on each line
|
||||
Line1=
|
||||
Line2=
|
||||
Line3=
|
||||
Line4=
|
||||
Line5=
|
||||
Line6=
|
||||
Line7=
|
||||
Line8=
|
||||
Line9=
|
BIN
tools/generate_emu_config/_DEFAULT/1/gse_generate_interfaces.exe
Normal file
167
tools/generate_emu_config/_DEFAULT/1/gse_lobby_connect.cfg
Normal file
@ -0,0 +1,167 @@
|
||||
[General]
|
||||
|
||||
# 0 - Show Advanced Run window
|
||||
# 1 - Skip Advanced Run window
|
||||
AutoRun=1
|
||||
|
||||
#
|
||||
|
||||
# 1 - Run .EXE File
|
||||
# 2 - ShellExecute - Open the specified file, folder or URL with the default program
|
||||
# 3 - Command Prompt - Execute command or batch file of Windows Command Prompt (.BAT, .CMD)
|
||||
# 4 - PowerShell Command - Execute the specified PowerShell command
|
||||
# 5 - PowerShell Script File - Run the specified PowerShell script (.PS1)
|
||||
RunMode=3
|
||||
|
||||
# open, edit, explore, print - only for RunMode 2
|
||||
ShellExecuteAction=open
|
||||
|
||||
# Program to Run - only for RunMode 1. For RunMode 2, 3, 4, 5 use CommandLine
|
||||
EXEFilename=
|
||||
|
||||
# Command-line arguments, file to ShellExecute, Command Prompt / PowerShell file to run or Command Prompt / PowerShell command string to execute
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandLine=.\steam_misc\tools\bat\lobby_connect.bat
|
||||
|
||||
# Start Directory - make sure any paths in CommandLine are relative to the start directory
|
||||
StartDirectory=.\
|
||||
|
||||
# AdvancedRun process will wait in the background until the process executed by AdvancedRun is terminated, 0 - disabled, 1 -enabled
|
||||
WaitProcess=1
|
||||
|
||||
# Process Priority Class:
|
||||
# 64 - low, 32 - normal, 128 - high, 256 - realtime, 16384 - below normal, 32768 - above normal
|
||||
PriorityClass=32
|
||||
|
||||
# Command Window Mode - only for RunMode 3, 4, 5
|
||||
# 1 - Leave window opened after executing commands (same as 'CMD /K'), 2 - Close window after executing commands (same as 'CMD /C') - only for RunMode 3, 4, 5
|
||||
# For RunMode 3, DO NOTE that if your .BAT file ends with 'pause' or you add '& pause' at the end of CommandLine, CommandWindowMode 2 will have no effect - CMD window will show 'Press any key to continue . . .'
|
||||
CommandWindowMode=2
|
||||
|
||||
# Main window state
|
||||
# 0 - hidden, 1 - normal, 2 - minimized, 3 - maximized
|
||||
WindowState=0
|
||||
|
||||
# Main window position
|
||||
UseWindowPosition=0
|
||||
WindowPosition=20,20
|
||||
|
||||
# Main window size
|
||||
UseWindowSize=0
|
||||
WindowSize=640,400
|
||||
|
||||
#
|
||||
|
||||
# 1 - Current User - Allow UAC Elevation
|
||||
# 2 - Current User - Without UAC Elevation
|
||||
# 3 - Administrator (Force UAC Elevation)
|
||||
# 4 - SYSTEM User
|
||||
# 5 - User of the selected process
|
||||
# 6 - Child of the selected process (Using code injection)
|
||||
# 7 - Specified username and password
|
||||
# 8 - TrustedInstaller
|
||||
# 9 - Another logged-in user
|
||||
# 10 - Network Service
|
||||
# 11 - Local Service
|
||||
RunAs=1
|
||||
|
||||
# Selected process name - only for RunAs 5, 6
|
||||
RunAsProcessName=
|
||||
|
||||
# Specified username - only for RunAs 7, 9 (password can't be set in this .CFG file, so it's better to run with /RunAsUserName "username" /RunAsPassword "password" parameters instead)
|
||||
RunAsUserName=
|
||||
|
||||
# Specified domain - only for RunAs 7
|
||||
RunAsDomain=
|
||||
|
||||
#
|
||||
|
||||
# Run on remote computer with temporary Windows service, 0 - disabled, 1 - enabled
|
||||
RunFromService=0
|
||||
|
||||
# Remote computer name - only for RunFromService 1
|
||||
ComputerName=
|
||||
|
||||
#
|
||||
|
||||
# Use search path to find the program location if the full path is not specified, 0 - disabled, 1 - enabled
|
||||
UseSearchPath=0
|
||||
|
||||
# Parse the environment variables inside the command-line string before passing it to the program
|
||||
ParseVarCommandLine=0
|
||||
|
||||
#
|
||||
|
||||
# Use process affinity mask, 0 - disabled, 1 - enabled
|
||||
UseAffinityMask=0
|
||||
|
||||
# Set process affinity mask (space-delimited list) - e.g. '0 1 2 3' process runs only on first 4 cores
|
||||
AffinityMask=0 1
|
||||
|
||||
#
|
||||
|
||||
# 0 - Compatibility mode disabled
|
||||
# 1 - Windows 95
|
||||
# 2 - Windows 98
|
||||
# 3 - Windows NT 4.0 SP5
|
||||
# 4 - Windows 2000
|
||||
# 5 - Windows XP SP2
|
||||
# 6 - Windows XP SP3
|
||||
# 7 - Server 2003 SP1
|
||||
# 8 - Server 2008 SP1
|
||||
# 9 - Vista
|
||||
# 10 - Vista SP1
|
||||
# 11 - Vista SP2
|
||||
# 12 - Windows 7
|
||||
# 13 - Windows 8
|
||||
OSCompatMode=0
|
||||
|
||||
# Use 1 to disable visual themes
|
||||
CompatDisableVisualThemes=0
|
||||
|
||||
# Use 1 to disable desktop composition
|
||||
CompatDisableDesktopComp=0
|
||||
|
||||
# Use 1 to run in 640 x 480 resolution
|
||||
Compat640480=0
|
||||
|
||||
# Use 1 to disable full screen optimizations
|
||||
CompatDisableFullScreenOpt=0
|
||||
|
||||
# 0 - Reduced colors disabled
|
||||
# 1 - 8-bit, 256 colors
|
||||
# 2 - 16-bit, 65536 colors
|
||||
CompatColors=0
|
||||
|
||||
# 0 - High DPI scaling override disabled
|
||||
# 1 - Application
|
||||
# 2 - System
|
||||
# 3 - System Enhanced
|
||||
CompatHighDPI=0
|
||||
|
||||
# 1 - Use current system environment variables without any change
|
||||
# 2 - Merge the following environment variables with the system variables
|
||||
# 3 - Use only the following environment variables (ignore the system variables)
|
||||
EnvironmentVariablesMode=1
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D5 03 00 00 4B 04 00 00 A2 08 00 00 FC 07 00 00
|
||||
|
||||
[EnvironmentVariables]
|
||||
|
||||
# Advanced Run window position - only for AutoRun 0
|
||||
WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 78 03 00 00 FC 02 00 00 45 08 00 00 AD 06 00 00
|
||||
|
||||
# Number of environment variables to merge - only for EnvironmentVariablesMode 2, 3
|
||||
Lines=0
|
||||
|
||||
# Merge the following environment variables, one by one on each line
|
||||
Line1=
|
||||
Line2=
|
||||
Line3=
|
||||
Line4=
|
||||
Line5=
|
||||
Line6=
|
||||
Line7=
|
||||
Line8=
|
||||
Line9=
|
BIN
tools/generate_emu_config/_DEFAULT/1/gse_lobby_connect.exe
Normal file
@ -0,0 +1,125 @@
|
||||
7-Zip Extra
|
||||
~~~~~~~~~~~
|
||||
License for use and distribution
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Copyright (C) 1999-2024 Igor Pavlov.
|
||||
|
||||
7-Zip Copyright (C) 1999-2024 Igor Pavlov.
|
||||
|
||||
The licenses for files are:
|
||||
|
||||
- 7za.exe:
|
||||
- The "GNU LGPL" as main license for most of the code
|
||||
- The "BSD 3-clause License" for some code
|
||||
- The "BSD 2-clause License" for some code
|
||||
- All other files: the "GNU LGPL".
|
||||
|
||||
Redistributions in binary form must reproduce related license information from this file.
|
||||
|
||||
Note:
|
||||
You can use 7-Zip Extra on any computer, including a computer in a commercial
|
||||
organization. You don't need to register or pay for 7-Zip.
|
||||
|
||||
It is allowed to digitally sign DLL and EXE files included into this package
|
||||
with arbitrary signatures of third parties.
|
||||
|
||||
|
||||
GNU LGPL information
|
||||
--------------------
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You can receive a copy of the GNU Lesser General Public License from
|
||||
http://www.gnu.org/
|
||||
|
||||
|
||||
|
||||
BSD 3-clause License in 7-Zip code
|
||||
----------------------------------
|
||||
|
||||
The "BSD 3-clause License" is used for the following code in 7za.exe
|
||||
- ZSTD data decompression.
|
||||
that code was developed using original zstd decoder code as reference code.
|
||||
The original zstd decoder code was developed by Facebook Inc,
|
||||
that also uses the "BSD 3-clause License".
|
||||
|
||||
Copyright (c) Facebook, Inc. All rights reserved.
|
||||
Copyright (c) 2023-2024 Igor Pavlov.
|
||||
|
||||
Text of the "BSD 3-clause License"
|
||||
----------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may
|
||||
be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
BSD 2-clause License in 7-Zip code
|
||||
----------------------------------
|
||||
|
||||
The "BSD 2-clause License" is used for the XXH64 code in 7za.exe.
|
||||
|
||||
XXH64 code in 7-Zip was derived from the original XXH64 code developed by Yann Collet.
|
||||
|
||||
Copyright (c) 2012-2021 Yann Collet.
|
||||
Copyright (c) 2023-2024 Igor Pavlov.
|
||||
|
||||
Text of the "BSD 2-clause License"
|
||||
----------------------------------
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
---
|
@ -0,0 +1,58 @@
|
||||
Software License
|
||||
|
||||
AutoIt
|
||||
|
||||
Author : Jonathan Bennett and the AutoIt Team
|
||||
WWW : https://www.autoitscript.com/site/autoit/
|
||||
Email : support at autoitscript dot com
|
||||
________________________________________________________
|
||||
|
||||
END-USER LICENSE AGREEMENT FOR THIS SOFTWARE
|
||||
|
||||
|
||||
This End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and the mentioned author of this Software for the software product identified above, which includes computer software and may include associated media, printed materials, and "online" or electronic documentation ("SOFTWARE PRODUCT"). By installing, copying, or otherwise using the SOFTWARE PRODUCT, you agree to be bound by the terms of this EULA. If you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT.
|
||||
|
||||
|
||||
|
||||
SOFTWARE PRODUCT LICENSE
|
||||
|
||||
The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
|
||||
|
||||
The definition of SOFTWARE PRODUCT does not includes any files generated by the SOFTWARE PRODUCT, such as compiled script files in the form of standalone executables.
|
||||
|
||||
|
||||
1. GRANT OF LICENSE
|
||||
|
||||
This EULA grants you the following rights:
|
||||
|
||||
Installation and Use. You may install and use an unlimited number of copies of the SOFTWARE PRODUCT.
|
||||
|
||||
Reproduction and Distribution. You may reproduce and distribute an unlimited number of copies of the SOFTWARE PRODUCT either in whole or in part; each copy should include all copyright and trademark notices, and shall be accompanied by a copy of this EULA. Copies of the SOFTWARE PRODUCT may be distributed as a standalone product or included with your own product.
|
||||
|
||||
Commercial Use. You may use the SOFTWARE PRODUCT for commercial purposes. You may sell for profit and freely distribute scripts and/or compiled scripts that were created with the SOFTWARE PRODUCT.
|
||||
|
||||
Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT.
|
||||
|
||||
2. COPYRIGHT
|
||||
|
||||
All title and copyrights in and to the SOFTWARE PRODUCT (including but not limited to any images, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT), the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by the Author of this Software. The SOFTWARE PRODUCT is protected by copyright laws and international treaty provisions. Therefore, you must treat the SOFTWARE PRODUCT like any other copyrighted material.
|
||||
|
||||
|
||||
|
||||
MISCELLANEOUS
|
||||
|
||||
If you acquired this product in the United Kingdom, this EULA is governed by the laws of the United Kingdom. If this product was acquired outside the United Kingdom, then local law may apply.
|
||||
|
||||
Should you have any questions concerning this EULA, or if you desire to contact the author of this Software for any reason, please contact him/her at the email address mentioned at the top of this EULA.
|
||||
|
||||
|
||||
|
||||
LIMITED WARRANTY
|
||||
|
||||
1. NO WARRANTIES
|
||||
|
||||
The Author of this Software expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the SOFTWARE PRODUCT remains with you.
|
||||
|
||||
2. NO LIABILITY FOR DAMAGES
|
||||
|
||||
In no event shall the author of this Software be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if the Author of this Software has been advised of the possibility of such damages. Because some states/jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.
|
@ -0,0 +1,184 @@
|
||||
#NoTrayIcon
|
||||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Outfile_type=a3x
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include <File.au3>
|
||||
#include <Array.au3>
|
||||
|
||||
; ARC_NAME
|
||||
|
||||
$arc_extra_acw = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "extra_acw", "extra_acw.zip")
|
||||
|
||||
$ach_watcher_arc = @ScriptDir & "\steam_misc\extra_acw\" & $arc_extra_acw
|
||||
$ach_watcher_dst = @AppDataDir & "\Achievement Watcher"
|
||||
|
||||
If FileExists($ach_watcher_arc) Then
|
||||
|
||||
$gse_saves = IniRead(@ScriptDir & "\steam_settings\configs.user.ini", "user::saves", "saves_folder_name", "GSE Saves")
|
||||
$local_save = IniRead(@ScriptDir & "\steam_settings\configs.user.ini", "user::saves", "local_save_path", "")
|
||||
$local_save = StringReplace($local_save, "./", "")
|
||||
$local_save = StringReplace($local_save, ".\", "")
|
||||
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $ach_watcher_arc & '" -o"' & $ach_watcher_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
|
||||
If $local_save <> "" Then
|
||||
|
||||
$userdir_line1 = ' {'
|
||||
$userdir_line2 = ' "path": "' & StringReplace(@ScriptDir & "\" & $gse_saves, "\", "\\") & '",'
|
||||
$userdir_line3 = ' "notify": true'
|
||||
$userdir_line4 = ' }'
|
||||
|
||||
$file = @AppDataDir & "\Achievement Watcher\cfg\userdir.db"
|
||||
$temp = @AppDataDir & "\Achievement Watcher\cfg\userdir_temp.db"
|
||||
|
||||
If Not FileExists($file) Then
|
||||
;FileCopy(@ScriptDir & "\steam_settings\ach\cfg\userdir.db", $file, 1)
|
||||
FileWriteLine($file, "[")
|
||||
FileWriteLine($file, "]")
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Local $aLines
|
||||
_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
Else
|
||||
Local $aLines, $hMatch
|
||||
_FileReadToArray($file, $aLines)
|
||||
For $i = 1 To $aLines[0]
|
||||
If StringInStr($aLines[$i], $userdir_line2) Then $hMatch = 1
|
||||
Next
|
||||
If $hMatch == 1 Then
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Else
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
;Local $aLines
|
||||
;_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
_ReplaceStringInFile($file, " }" & @CRLF & " {", " }," & @CRLF & " {")
|
||||
|
||||
; ---
|
||||
|
||||
$userdir_line1 = ' {'
|
||||
$userdir_line2 = ' "path": "' & StringReplace(@ScriptDir & "\" & $local_save, "\", "\\") & '",'
|
||||
$userdir_line3 = ' "notify": true'
|
||||
$userdir_line4 = ' }'
|
||||
|
||||
$file = @AppDataDir & "\Achievement Watcher\cfg\userdir.db"
|
||||
$temp = @AppDataDir & "\Achievement Watcher\cfg\userdir_temp.db"
|
||||
|
||||
If Not FileExists($file) Then
|
||||
;FileCopy(@ScriptDir & "\steam_settings\ach\cfg\userdir.db", $file, 1)
|
||||
FileWriteLine($file, "[")
|
||||
FileWriteLine($file, "]")
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Local $aLines
|
||||
_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
Else
|
||||
Local $aLines, $hMatch
|
||||
_FileReadToArray($file, $aLines)
|
||||
For $i = 1 To $aLines[0]
|
||||
If StringInStr($aLines[$i], $userdir_line2) Then $hMatch = 1
|
||||
Next
|
||||
If $hMatch == 1 Then
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Else
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
;Local $aLines
|
||||
;_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
_ReplaceStringInFile($file, " }" & @CRLF & " {", " }," & @CRLF & " {")
|
||||
|
||||
Else
|
||||
|
||||
$userdir_line1 = ' {'
|
||||
$userdir_line2 = ' "path": "' & StringReplace(@AppDataDir & "\" & $gse_saves, "\", "\\") & '",'
|
||||
$userdir_line3 = ' "notify": true'
|
||||
$userdir_line4 = ' }'
|
||||
|
||||
$file = @AppDataDir & "\Achievement Watcher\cfg\userdir.db"
|
||||
$temp = @AppDataDir & "\Achievement Watcher\cfg\userdir_temp.db"
|
||||
|
||||
If Not FileExists($file) Then
|
||||
;FileCopy(@ScriptDir & "\steam_settings\ach\cfg\userdir.db", $file, 1)
|
||||
FileWriteLine($file, "[")
|
||||
FileWriteLine($file, "]")
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Local $aLines
|
||||
_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
Else
|
||||
Local $aLines, $hMatch
|
||||
_FileReadToArray($file, $aLines)
|
||||
For $i = 1 To $aLines[0]
|
||||
If StringInStr($aLines[$i], $userdir_line2) Then $hMatch = 1
|
||||
Next
|
||||
If $hMatch == 1 Then
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
Else
|
||||
If FileExists($temp) Then FileDelete($temp)
|
||||
;Local $aLines
|
||||
;_FileReadToArray($file, $aLines)
|
||||
Local $lastline = _ArrayPop($aLines)
|
||||
_FileWriteFromArray($temp, $aLines)
|
||||
FileWriteLine($temp, $userdir_line1)
|
||||
FileWriteLine($temp, $userdir_line2)
|
||||
FileWriteLine($temp, $userdir_line3)
|
||||
FileWriteLine($temp, $userdir_line4)
|
||||
FileWriteLine($temp, $lastline)
|
||||
_ReplaceStringInFile($temp, $aLines[0] & @CRLF, "")
|
||||
FileMove($temp, $file, 1)
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
_ReplaceStringInFile($file, " }" & @CRLF & " {", " }," & @CRLF & " {")
|
||||
|
||||
EndIf
|
||||
|
||||
EndIf
|
@ -0,0 +1,3 @@
|
||||
[ARC_NAME]
|
||||
|
||||
extra_acw = extra_acw.7z
|
@ -0,0 +1,81 @@
|
||||
#NoTrayIcon
|
||||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Outfile_type=a3x
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
; ARC_NAME
|
||||
|
||||
$arc_steam_api = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "steam_api", "steam_api.7z")
|
||||
$arc_steam_api64 = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "steam_api64", "steam_api64.7z")
|
||||
|
||||
$arc_steamclient = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "steamclient", "steamclient.7z")
|
||||
$arc_steamclient64 = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "steamclient64", "steamclient64.7z")
|
||||
|
||||
; DLL_PATH
|
||||
|
||||
$steam_api_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steam_api_release", "release\steam_api.dll")
|
||||
$steam_api64_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steam_api64_release", "release\steam_api64.dll")
|
||||
|
||||
$steam_api_debug = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steam_api_debug", "debug\steam_api.dll")
|
||||
$steam_api64_debug = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steam_api64_debug", "debug\steam_api64.dll")
|
||||
|
||||
$steamclient_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steamclient_release", "release\steamclient.dll")
|
||||
$steamclient64_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steamclient64_release", "release\steamclient64.dll")
|
||||
|
||||
$steamclient_debug = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steamclient_debug", "debug\steamclient.dll")
|
||||
$steamclient64_debug = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "DLL_PATH", "steamclient64_debug", "debug\steamclient64.dll")
|
||||
|
||||
If FileReadLine(@ScriptDir & "\steam_settings\emu_version.txt", 1) == "release" Then
|
||||
If FileExists(@ScriptDir & "\" & $arc_steam_api) Then
|
||||
$7za_exit = ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & @ScriptDir & "\" & $arc_steam_api & '" -o"' & @ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3) & '" -aoa', "", "", @SW_HIDE)
|
||||
$steam_api_dst = StringTrimLeft($steam_api_release, StringInStr($steam_api_release, "\", 0, -1))
|
||||
$steam_api_debug_src = StringReplace(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3) & "\" & $steam_api_debug, "\\", "\")
|
||||
If FileExists($steam_api_dst) Then
|
||||
FileMove($steam_api_debug_src, $steam_api_dst, 1)
|
||||
EndIf
|
||||
DirRemove(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3), 1)
|
||||
$hFileOpen = FileOpen(@ScriptDir & "\steam_settings\emu_version.txt", 2+8)
|
||||
FileWrite($hFileOpen, "debug" & @CRLF & @CRLF & "you are currently using the 'debug' version of the emulator" & @CRLF & "run 'gse_debug_switch.exe' if you want to use the 'release' version")
|
||||
FileClose($hFileOpen)
|
||||
EndIf
|
||||
If FileExists(@ScriptDir & "\" & $arc_steamclient) Then
|
||||
$7za_exit = ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & @ScriptDir & "\" & $arc_steamclient & '" -o"' & @ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3) & '" -aoa', "", "", @SW_HIDE)
|
||||
$steamclient_dst = StringTrimLeft($steamclient_release, StringInStr($steamclient_release, "\", 0, -1))
|
||||
$steamclient_debug_src = StringReplace(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3) & "\" & $steamclient_debug, "\\", "\")
|
||||
If FileExists($steamclient_dst) Then
|
||||
FileMove($steamclient_debug_src, $steamclient_dst, 1)
|
||||
EndIf
|
||||
DirRemove(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3), 1)
|
||||
$hFileOpen = FileOpen(@ScriptDir & "\steam_settings\emu_version.txt", 2+8)
|
||||
FileWrite($hFileOpen, "debug" & @CRLF & @CRLF & "you are currently using the 'debug' version of the emulator" & @CRLF & "run 'gse_debug_switch.exe' if you want to use the 'release' version")
|
||||
FileClose($hFileOpen)
|
||||
EndIf
|
||||
ElseIf FileReadLine(@ScriptDir & "\steam_settings\emu_version.txt", 1) == "debug" Then
|
||||
If FileExists(@ScriptDir & "\" & $arc_steam_api) Then
|
||||
$7za_exit = ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & @ScriptDir & "\" & $arc_steam_api & '" -o"' & @ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3) & '" -aoa', "", "", @SW_HIDE)
|
||||
$steam_api_dst = StringTrimLeft($steam_api_debug, StringInStr($steam_api_debug, "\", 0, -1))
|
||||
$steam_api_release_src = StringReplace(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3) & "\" & $steam_api_release, "\\", "\")
|
||||
If FileExists($steam_api_dst) Then
|
||||
FileMove($steam_api_release_src, $steam_api_dst, 1)
|
||||
EndIf
|
||||
DirRemove(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steam_api, 3), 1)
|
||||
$hFileOpen = FileOpen(@ScriptDir & "\steam_settings\emu_version.txt", 2+8)
|
||||
FileWrite($hFileOpen, "release" & @CRLF & @CRLF & "you are currently using the 'release' version of the emulator" & @CRLF & "run 'gse_debug_switch.exe' if you want to use the 'debug' version")
|
||||
FileClose($hFileOpen)
|
||||
EndIf
|
||||
If FileExists(@ScriptDir & "\" & $arc_steamclient) Then
|
||||
$7za_exit = ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & @ScriptDir & "\" & $arc_steamclient & '" -o"' & @ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3) & '" -aoa', "", "", @SW_HIDE)
|
||||
$steamclient_dst = StringTrimLeft($steamclient_debug, StringInStr($steamclient_debug, "\", 0, -1))
|
||||
$steamclient_release_src = StringReplace(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3) & "\" & $steamclient_release, "\\", "\")
|
||||
If FileExists($steamclient_dst) Then
|
||||
FileMove($steamclient_release_src, $steamclient_dst, 1)
|
||||
EndIf
|
||||
DirRemove(@ScriptDir & "\steam_misc\" & StringTrimRight($arc_steamclient, 3), 1)
|
||||
$hFileOpen = FileOpen(@ScriptDir & "\steam_settings\emu_version.txt", 2+8)
|
||||
FileWrite($hFileOpen, "release" & @CRLF & @CRLF & "you are currently using the 'release' version of the emulator" & @CRLF & "run 'gse_debug_switch.exe' if you want to use the 'debug' version")
|
||||
FileClose($hFileOpen)
|
||||
EndIf
|
||||
EndIf
|
||||
|
||||
|
@ -0,0 +1,22 @@
|
||||
[ARC_NAME]
|
||||
|
||||
steam_api = steam_api.7z
|
||||
steam_api64 = steam_api64.7z
|
||||
|
||||
steamclient = steamclient.7z
|
||||
steamclient64 = steamclient64.7z
|
||||
|
||||
|
||||
[DLL_PATH]
|
||||
|
||||
steam_api_release = release\steam_api.dll
|
||||
steam_api64_release = release\steam_api64.dll
|
||||
|
||||
steam_api_debug = debug\steam_api.dll
|
||||
steam_api64_debug = debug\steam_api64.dll
|
||||
|
||||
steamclient_release = release\steamclient.dll
|
||||
steamclient64_release = release\steamclient64.dll
|
||||
|
||||
steamclient_debug = debug\steamclient.dll
|
||||
steamclient64_debug = debug\steamclient64.dll
|
@ -0,0 +1,200 @@
|
||||
#NoTrayIcon
|
||||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Outfile_type=a3x
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include <File.au3>
|
||||
|
||||
; ARC_NAME
|
||||
|
||||
$arc_generate_interfaces = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "generate_interfaces", "generate_interfaces.7z")
|
||||
|
||||
; EXE_PATH
|
||||
|
||||
$generate_interfaces_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "EXE_PATH", "generate_interfaces_release", "generate_interfaces.exe")
|
||||
$generate_interfaces64_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "EXE_PATH", "generate_interfaces64_release", "generate_interfaces64.exe")
|
||||
|
||||
$generate_interfaces_7z = @ScriptDir & '\steam_misc\tools\generate_interfaces\' & $arc_generate_interfaces
|
||||
$generate_interfaces_dst = @ScriptDir & '\steam_misc\tools\generate_interfaces'
|
||||
$generate_interfaces_exe = ''
|
||||
Switch @OSArch
|
||||
Case 'X64'
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1)) ; generate_interfaces64.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $generate_interfaces_7z & '" -o"' & $generate_interfaces_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
Case 'X86'
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1)) ; generate_interfaces.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $generate_interfaces_7z & '" -o"' & $generate_interfaces_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
Case Else
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1)) ; generate_interfaces64.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $generate_interfaces_7z & '" -o"' & $generate_interfaces_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
EndSwitch
|
||||
|
||||
If Not FileExists(@ScriptDir & '\steam_api.dll') Then FileDelete(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1)))
|
||||
If Not FileExists(@ScriptDir & '\steam_api64.dll') Then FileDelete(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1)))
|
||||
|
||||
Switch @OSArch
|
||||
Case 'X64'
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1))) Then
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1))
|
||||
EndIf
|
||||
Case 'X86'
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1))) Then
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1))
|
||||
EndIf
|
||||
Case Else
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\generate_interfaces\' & StringTrimLeft($generate_interfaces64_release, StringInStr($generate_interfaces64_release, "\", 0, -1))) Then
|
||||
$generate_interfaces_exe = StringTrimLeft($generate_interfaces_release, StringInStr($generate_interfaces_release, "\", 0, -1))
|
||||
EndIf
|
||||
EndSwitch
|
||||
|
||||
If FileExists(@ScriptDir & '\valve_api.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\valve_api.dll.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
EndIf
|
||||
|
||||
If FileExists(@ScriptDir & '\steam_api.dll.bak') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api.dll.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api.dll.org') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api.dll.org' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api.bak') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api.org') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api.org' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api_orig.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api_orig.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api_legit.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api_legit.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
#ElseIf FileExists(@ScriptDir & '\steam_api.dll') Then
|
||||
#RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
EndIf
|
||||
|
||||
If FileExists(@ScriptDir & '\valve_api64.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\valve_api64.dll.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
EndIf
|
||||
|
||||
If FileExists(@ScriptDir & '\steam_api64.dll.bak') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api64.dll.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api64.dll.org') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api64.dll.org' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api64.bak') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api64.bak' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api64.org') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api64.org' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api64_orig.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe &' ' & '"' & @ScriptDir & '\steam_api64_orig.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
ElseIf FileExists(@ScriptDir & '\steam_api64_legit.dll') Then
|
||||
RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe &' ' & '"' & @ScriptDir & '\steam_api64_legit.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
#ElseIf FileExists(@ScriptDir & '\steam_api64.dll') Then
|
||||
#RunWait($generate_interfaces_dst & '\' & $generate_interfaces_exe & ' ' & '"' & @ScriptDir & '\steam_api64.dll' & '"', @ScriptDir, @SW_HIDE)
|
||||
EndIf
|
||||
|
||||
FileMove(@ScriptDir & '\steam_interfaces.txt', @ScriptDir & '\steam_settings\steam_interfaces.txt', 9)
|
||||
FileCopy(@ScriptDir & '\steam_settings\steam_interfaces.txt', @ScriptDir & '\steam_settings\steam_interfaces.ini', 9)
|
||||
|
||||
$hFile=FileOpen(@ScriptDir & '\steam_settings\steam_interfaces.ini',0)
|
||||
$sOld=FileRead($hFile)
|
||||
FileClose($hFile)
|
||||
$hFile=FileOpen(@ScriptDir & '\steam_settings\steam_interfaces.ini',2)
|
||||
$sNew='[steam_interfaces]' & @CRLF & $sOld
|
||||
FileWrite($hFile,$sNew)
|
||||
FileClose($hFile)
|
||||
|
||||
$interfaces_ini = @ScriptDir & '\steam_settings\steam_interfaces.ini'
|
||||
$codex_ini = @ScriptDir & '\steam_misc\extra_cdx\steam_emu.ini'
|
||||
|
||||
If FileExists($codex_ini) Then
|
||||
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPLIST_', 'SteamAppList=STEAMAPPLIST_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPS_', 'SteamApps=STEAMAPPS_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMAPPTICKET_', 'SteamAppTicket=STEAMAPPTICKET_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamClient', 'SteamClient=SteamClient', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamController', 'SteamController=SteamController', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamFriends', 'SteamFriends=SteamFriends', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameCoordinator', 'SteamGameCoordinator=SteamGameCoordinator', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameServerStats', 'Steam_Game_Server_Stats=Steam_Game_Server_Stats', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameServer', 'SteamGameServer=SteamGameServer', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Game_Server_Stats', 'SteamGameServerStats', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamGameStats', 'SteamGameStats=SteamGameStats', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMHTMLSURFACE_', 'SteamHTMLSurface=STEAMHTMLSURFACE_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMHTTP_', 'SteamHTTP=STEAMHTTP_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamInput', 'SteamInput=SteamInput', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMINVENTORY_', 'SteamInventory=STEAMINVENTORY_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamMasterServerUpdater', 'SteamMasterServerUpdater=SteamMasterServerUpdater', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchGameSearch', 'SteamMatchGameSearch=SteamMatchGameSearch', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMakingServers', 'Steam_Match_Making_Servers=Steam_Match_Making_Servers', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamMatchMaking', 'SteamMatchMaking=SteamMatchMaking', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Match_Making_Servers', 'SteamMatchMakingServers', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSIC_', 'SteamMusic=STEAMMUSIC_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMMUSICREMOTE_', 'SteamMusicRemote=STEAMMUSICREMOTE_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingMessages', 'Steam_Networking_Messages=Steam_Networking_Messages', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSocketsSerialized', 'Steam_Networking_Sockets_Serialized=Steam_Networking_Sockets_Serialized', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingSockets', 'Steam_Networking_Sockets=Steam_Networking_Sockets', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworkingUtils', 'Steam_Networking_Utils=Steam_Networking_Utils', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamNetworking', 'SteamNetworking=SteamNetworking', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Messages', 'SteamNetworkingMessages', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets_Serialized', 'SteamNetworkingSocketsSerialized', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Sockets', 'SteamNetworkingSockets', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_Networking_Utils', 'SteamNetworkingUtils', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMPARENTALSETTINGS_', 'SteamParentalSettings=STEAMPARENTALSETTINGS_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamParties', 'SteamParties=SteamParties', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTEPLAY_', 'SteamRemotePlay=STEAMREMOTEPLAY_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMREMOTESTORAGE_', 'SteamRemoteStorage=STEAMREMOTESTORAGE_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMSCREENSHOTS_', 'SteamScreenshots=STEAMSCREENSHOTS_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMTIMELINE_', 'SteamTimeline=STEAMTIMELINE_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMTV_', 'SteamTV=STEAMTV_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUGC_', 'SteamUGC=STEAMUGC_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUNIFIEDMESSAGES_', 'SteamUnifiedMessages=STEAMUNIFIEDMESSAGES_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMUSERSTATS_', 'Steam_User_Stats=STEAMUSERSTATS_', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamUser', 'SteamUser=SteamUser', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'Steam_User_Stats', 'SteamUserStats', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'SteamUtils', 'SteamUtils=SteamUtils', 1, 1)
|
||||
_ReplaceStringInFile($interfaces_ini, 'STEAMVIDEO_', 'SteamVideo=STEAMVIDEO_', 1, 1)
|
||||
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamAppList', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppList', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamApps', IniRead($interfaces_ini, 'steam_interfaces', 'SteamApps', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamAppTicket', IniRead($interfaces_ini, 'steam_interfaces', 'SteamAppTicket', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamClient', IniRead($interfaces_ini, 'steam_interfaces', 'SteamClient', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamController', IniRead($interfaces_ini, 'steam_interfaces', 'SteamController', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamFriends', IniRead($interfaces_ini, 'steam_interfaces', 'SteamFriends', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameCoordinator', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameCoordinator', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameServerStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServerStats', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameServer', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameServer', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamGameStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamGameStats', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamHTMLSurface', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTMLSurface', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamHTTP', IniRead($interfaces_ini, 'steam_interfaces', 'SteamHTTP', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamInput', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInput', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamInventory', IniRead($interfaces_ini, 'steam_interfaces', 'SteamInventory', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMasterServerUpdater', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMasterServerUpdater', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchGameSearch', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchGameSearch', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchMakingServers', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMakingServers', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMatchMaking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMatchMaking', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMusic', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusic', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamMusicRemote', IniRead($interfaces_ini, 'steam_interfaces', 'SteamMusicRemote', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingMessages', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingSocketsSerialized', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSocketsSerialized', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingSockets', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingSockets', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworkingUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworkingUtils', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamNetworking', IniRead($interfaces_ini, 'steam_interfaces', 'SteamNetworking', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamParentalSettings', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParentalSettings', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamParties', IniRead($interfaces_ini, 'steam_interfaces', 'SteamParties', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamRemotePlay', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemotePlay', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamRemoteStorage', IniRead($interfaces_ini, 'steam_interfaces', 'SteamRemoteStorage', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamScreenshots', IniRead($interfaces_ini, 'steam_interfaces', 'SteamScreenshots', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamTimeline', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTimeline', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamTV', IniRead($interfaces_ini, 'steam_interfaces', 'SteamTV', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamUGC', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUGC', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamUnifiedMessages', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUnifiedMessages', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamUserStats', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUserStats', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamUser', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUser', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamUtils', IniRead($interfaces_ini, 'steam_interfaces', 'SteamUtils', ''))
|
||||
IniWrite($codex_ini, 'Interfaces', 'SteamVideo', IniRead($interfaces_ini, 'steam_interfaces', 'SteamVideo', ''))
|
||||
|
||||
EndIf
|
||||
|
||||
FileDelete($interfaces_ini)
|
@ -0,0 +1,9 @@
|
||||
[ARC_NAME]
|
||||
|
||||
generate_interfaces = generate_interfaces.7z
|
||||
|
||||
|
||||
[EXE_PATH]
|
||||
|
||||
generate_interfaces_release = generate_interfaces.exe
|
||||
generate_interfaces64_release = generate_interfaces64.exe
|
@ -0,0 +1,57 @@
|
||||
#NoTrayIcon
|
||||
|
||||
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
#AutoIt3Wrapper_Outfile_type=a3x
|
||||
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
|
||||
|
||||
#include <File.au3>
|
||||
|
||||
; ARC_NAME
|
||||
|
||||
$arc_lobby_connect = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "ARC_NAME", "lobby_connect", "lobby_connect.7z")
|
||||
|
||||
; EXE_PATH
|
||||
|
||||
$lobby_connect_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "EXE_PATH", "lobby_connect_release", "lobby_connect.exe")
|
||||
$lobby_connect64_release = IniRead(@ScriptDir & "\" & StringTrimRight(@ScriptName, 4) & ".ini", "EXE_PATH", "lobby_connect64_release", "lobby_connect64.exe")
|
||||
|
||||
$lobby_connect_7z = @ScriptDir & '\steam_misc\tools\lobby_connect\' & $arc_lobby_connect
|
||||
$lobby_connect_dst = @ScriptDir & '\steam_misc\tools\lobby_connect'
|
||||
$lobby_connect_exe = ''
|
||||
Switch @OSArch
|
||||
Case 'X64'
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1)) ; lobby_connect64.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $lobby_connect_7z & '" -o"' & $lobby_connect_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
Case 'X86'
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1)) ; lobby_connect.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $lobby_connect_7z & '" -o"' & $lobby_connect_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
Case Else
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1)) ; lobby_connect64.exe
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1))) Then
|
||||
ShellExecuteWait(@ScriptDir & "\steam_misc\tools\7za\7za.exe", 'x "' & $lobby_connect_7z & '" -o"' & $lobby_connect_dst & '" -aoa', "", "", @SW_HIDE)
|
||||
EndIf
|
||||
EndSwitch
|
||||
|
||||
If Not FileExists(@ScriptDir & '\steam_api.dll') Then FileDelete(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1)))
|
||||
If Not FileExists(@ScriptDir & '\steam_api64.dll') Then FileDelete(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1)))
|
||||
|
||||
Switch @OSArch
|
||||
Case 'X64'
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1))) Then
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1))
|
||||
EndIf
|
||||
Case 'X86'
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1))) Then
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1))
|
||||
EndIf
|
||||
Case Else
|
||||
If Not FileExists(@ScriptDir & '\steam_misc\tools\lobby_connect\' & StringTrimLeft($lobby_connect64_release, StringInStr($lobby_connect64_release, "\", 0, -1))) Then
|
||||
$lobby_connect_exe = StringTrimLeft($lobby_connect_release, StringInStr($lobby_connect_release, "\", 0, -1))
|
||||
EndIf
|
||||
EndSwitch
|
||||
|
||||
RunWait($lobby_connect_dst & '\' & $lobby_connect_exe, @ScriptDir, @SW_SHOW)
|
@ -0,0 +1,9 @@
|
||||
[ARC_NAME]
|
||||
|
||||
generate_interfaces = lobby_connect.7z
|
||||
|
||||
|
||||
[EXE_PATH]
|
||||
|
||||
lobby_connect_release = lobby_connect.exe
|
||||
lobby_connect64_release = lobby_connect64.exe
|
@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
copy .\steam_misc\tools\au3\scripts\acw_helper.a3x .\
|
||||
copy .\steam_misc\tools\au3\scripts\acw_helper.ini .\
|
||||
ren .\acw_helper.a3x gse_acw_helper.a3x
|
||||
ren .\acw_helper.ini gse_acw_helper.ini
|
||||
.\steam_misc\tools\au3\au3.exe /AutoIt3ExecuteScript .\gse_acw_helper.a3x
|
||||
del .\gse_acw_helper.a3x
|
||||
del .\gse_acw_helper.ini
|
@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
copy .\steam_misc\tools\au3\scripts\debug_switch.a3x .\
|
||||
copy .\steam_misc\tools\au3\scripts\debug_switch.ini .\
|
||||
ren .\debug_switch.a3x gse_debug_switch.a3x
|
||||
ren .\debug_switch.ini gse_debug_switch.ini
|
||||
.\steam_misc\tools\au3\au3.exe /AutoIt3ExecuteScript ".\gse_debug_switch.a3x"
|
||||
del .\gse_debug_switch.a3x
|
||||
del .\gse_debug_switch.ini
|
@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
copy .\steam_misc\tools\au3\scripts\generate_interfaces.a3x .\
|
||||
copy .\steam_misc\tools\au3\scripts\generate_interfaces.ini .\
|
||||
ren .\generate_interfaces.a3x gse_generate_interfaces.a3x
|
||||
ren .\generate_interfaces.ini gse_generate_interfaces.ini
|
||||
.\steam_misc\tools\au3\au3.exe /AutoIt3ExecuteScript .\gse_generate_interfaces.a3x
|
||||
del .\gse_generate_interfaces.a3x
|
||||
del .\gse_generate_interfaces.ini
|
@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
copy .\steam_misc\tools\au3\scripts\lobby_connect.a3x .\
|
||||
copy .\steam_misc\tools\au3\scripts\lobby_connect.ini .\
|
||||
ren .\lobby_connect.a3x gse_lobby_connect.a3x
|
||||
ren .\lobby_connect.ini gse_lobby_connect.ini
|
||||
.\steam_misc\tools\au3\au3.exe /AutoIt3ExecuteScript .\gse_lobby_connect.a3x
|
||||
del .\gse_lobby_connect.a3x
|
||||
del .\gse_lobby_connect.ini
|
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
@ -0,0 +1,26 @@
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[app::general]
|
||||
# by default the emu will report a 'non-beta' branch when the game calls 'Steam_Apps::GetCurrentBetaName()'
|
||||
# if 1, makes the game/app think we're playing on a beta branch
|
||||
is_beta_branch=0
|
||||
# the name of the current branch - this must also exist in 'branches.json'
|
||||
# otherwise it'll be ignored and the default 'public' branch will be used
|
||||
branch_name=public
|
||||
|
||||
[app::dlcs]
|
||||
# report all DLCs as unlocked; some games check for 'hidden' DLCs, hence this should be set to 1 in that case
|
||||
# however, other games detect emus by querying for a fake/bad DLC, hence this should be set to 0 in that case
|
||||
unlock_all=0
|
||||
# format: ID=name
|
||||
# 1234=DLCNAME
|
||||
# 56789=This is another example DLC name
|
||||
|
||||
[app::paths]
|
||||
# format: ID=path
|
||||
# 556760=../DLCRoot0
|
||||
# 1234=./folder_where_steam_api_is
|
||||
# 3456=../folder_one_level_above_where_steam_api_is
|
||||
# 5678=../../folder_two_levels_above_where_steam_api_is
|
@ -0,0 +1,80 @@
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[main::general]
|
||||
# generate new app auth ticket
|
||||
new_app_ticket=1
|
||||
# generate/embed GC token inside new app ticket
|
||||
gc_token=1
|
||||
# pretend the app is running on a steam deck
|
||||
steam_deck=0
|
||||
# enable avatar functionality
|
||||
enable_account_avatar=0
|
||||
# prevent Steam_User_Stats::FindLeaderboard() from always succeeding and creating the unknown leaderboard
|
||||
# default=0, not recommended to change it
|
||||
disable_leaderboards_create_unknown=0
|
||||
# by default, the emu will only save/update stats defined in 'stats.txt', unknown stats requested or updated by the game will be rejected
|
||||
# set this to 1 to allow unknown stats
|
||||
allow_unknown_stats=0
|
||||
# if 0, whenever a game updates a stat which is tied to an achievement progress, the emu will save that stat progress immediately
|
||||
# some games will update the stat very frequently (with lower & higher values) resulting in a spam of disk writes or overlay notifications
|
||||
# set this to 1 to save stat progress only on higher progress value, thus avoiding spam of disk writes or overlay notifications
|
||||
# this has no impact on the stat itself, only the achievement progress of a stat tied to an achievement progress
|
||||
# also, this has no impact on the functions which directly change stats, achievements, or achievements progress
|
||||
save_only_higher_stat_achievement_progress=1
|
||||
# synchronize user stats/achievements with game servers as soon as possible instead of caching them until the next call to `Steam_RunCallbacks()`
|
||||
# default=0, not recommended to change it
|
||||
immediate_gameserver_stats=0
|
||||
# use the proper type of the server list (internet, friends, etc...) when requested by the game
|
||||
# otherwise, the emu will always return the type 'LAN server'
|
||||
# default=0, not recommended to change it
|
||||
matchmaking_server_list_actual_type=0
|
||||
# grab the server details for match making using an actual server query
|
||||
# default=0, not recommended to change it
|
||||
matchmaking_server_details_via_source_query=0
|
||||
# very basic crash logger/printer
|
||||
# this is intended to debug some annoying scenarios, and best used with the debug build of the emu
|
||||
crash_printer_location=./EMU_CRASHES.txt
|
||||
|
||||
[main::connectivity]
|
||||
# prevent hooking OS networking APIs and allow any external requests
|
||||
# only used by the experimental builds on Windows
|
||||
disable_lan_only=1
|
||||
# disable all steam networking interface functionality - this won't prevent games/apps from making external requests
|
||||
# networking related functionality like lobbies or those that launch a server in the background will not work
|
||||
disable_networking=0
|
||||
# change the UDP/TCP port the emulator listens on, you should probably not change this because everyone needs to use the same port or you won't find yourselves on the network
|
||||
listen_port=47584
|
||||
# pretend steam is running in offline mode; some games that connect to online servers might only work if the steam emu behaves like steam is in offline mode
|
||||
offline=0
|
||||
# prevent sharing stats and achievements with any game server, also disables the interface ISteamGameServerStats
|
||||
disable_sharing_stats_with_gameserver=0
|
||||
# do not send server details to the server browser, only works for game servers
|
||||
disable_source_query=0
|
||||
# enable sharing leaderboards scores with people playing the same game on the same network
|
||||
share_leaderboards_over_network=0
|
||||
# prevent lobby creation in steam matchmaking interface
|
||||
disable_lobby_creation=0
|
||||
# attempt to download external HTTP(S) requests made via Steam_HTTP::SendHTTPRequest() inside "steam_settings/http/"
|
||||
# make sure to:
|
||||
# * set disable_lan_only=1
|
||||
# * set disable_networking=0
|
||||
# this will **not** work if the app is using native/OS web APIs
|
||||
download_steamhttp_requests=1
|
||||
|
||||
############################################
|
||||
# mostly workarounds for specific problems #
|
||||
############################################
|
||||
|
||||
[main::misc]
|
||||
# force SetAchievement() to always return true
|
||||
achievements_bypass=0
|
||||
# force the function Steam_HTTP::SendHTTPRequest() to always succeed
|
||||
force_steamhttp_success=0
|
||||
# env var SteamOverlayGameId breaks Steam Input when the game is added to Steam as a non-steam game
|
||||
disable_steamoverlaygameid_env_var=1
|
||||
# add many Steam apps to the list of owned DLCs and the emu's list of installed app IDs, useful for many Source-based games
|
||||
# https://developer.valvesoftware.com/wiki/Steam_Application_IDs
|
||||
# https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
|
||||
enable_steam_preowned_ids=0
|
@ -0,0 +1,112 @@
|
||||
# #
|
||||
# USE AT YOUR OWN RISK :: This feature might cause crashes or other problems #
|
||||
# #
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[overlay::general]
|
||||
# enable the experimental overlay, might cause crashes
|
||||
enable_experimental_overlay=1
|
||||
# amount of time to wait before attempting to detect and hook the renderer (DirectX, OpenGL, Vulkan, etc...)
|
||||
# default=0
|
||||
hook_delay_sec=0
|
||||
# timeout for the renderer detector
|
||||
# default=15
|
||||
renderer_detector_timeout_sec=15
|
||||
# disable the achievements notifications
|
||||
disable_achievement_notification=0
|
||||
# disable friends invitations and messages notifications
|
||||
disable_friend_notification=0
|
||||
# disable showing notifications for achievements progress
|
||||
disable_achievement_progress=0
|
||||
# disable any warning in the overlay
|
||||
disable_warning_any=0
|
||||
# disable the bad app ID warning in the overlay
|
||||
disable_warning_bad_appid=0
|
||||
# disable the local_save warning in the overlay
|
||||
disable_warning_local_save=0
|
||||
|
||||
[overlay::appearance]
|
||||
# load custom TrueType font from an absolute or relative path
|
||||
# relative paths will be looked up inside the local folder 'steam_settings/fonts' first,
|
||||
# if not found, it will be looked up inside the global folder 'GSE Settings/settings/fonts'
|
||||
#Font_Override=Roboto-Medium.ttf
|
||||
# global font size - for built-in font, multiple of 16 is recommended, e.g. 16, 32, etc
|
||||
Font_Size=16.0
|
||||
|
||||
# achievement icon size
|
||||
Icon_Size=64.0
|
||||
|
||||
# spacing between characters
|
||||
Font_Glyph_Extra_Spacing_x=1.0
|
||||
Font_Glyph_Extra_Spacing_y=0.0
|
||||
|
||||
# background for all types of notifications
|
||||
Notification_R=0.12
|
||||
Notification_G=0.14
|
||||
Notification_B=0.21
|
||||
Notification_A=1.0
|
||||
|
||||
# notifications corners roundness
|
||||
Notification_Rounding=10.0
|
||||
|
||||
# horizontal (x) and vertical (y) margins for the notifications
|
||||
Notification_Margin_x=5.0
|
||||
Notification_Margin_y=5.0
|
||||
|
||||
# duration of notification animation in seconds - set to 0 to disable
|
||||
Notification_Animation=0.35
|
||||
|
||||
# duration of achievement progress indication
|
||||
Notification_Duration_Progress=6.0
|
||||
# duration of achievement unlocked
|
||||
Notification_Duration_Achievement=6.0
|
||||
# duration of friend invitation
|
||||
Notification_Duration_Invitation=8.0
|
||||
# duration of chat message
|
||||
Notification_Duration_Chat=4.0
|
||||
|
||||
# format for the achievement unlock date/time, limited to 79 characters
|
||||
# if the output formatted string exceeded this limit, the built-in format will be used
|
||||
# look for the format here: https://en.cppreference.com/w/cpp/chrono/c/strftime
|
||||
Achievement_Unlock_Datetime_Format=%Y/%m/%d - %H:%M:%S
|
||||
|
||||
# main background when you press shift+tab
|
||||
Background_R=0.12
|
||||
Background_G=0.11
|
||||
Background_B=0.11
|
||||
Background_A=0.55
|
||||
|
||||
Element_R=0.30
|
||||
Element_G=0.32
|
||||
Element_B=0.40
|
||||
Element_A=1.0
|
||||
|
||||
ElementHovered_R=0.278
|
||||
ElementHovered_G=0.393
|
||||
ElementHovered_B=0.602
|
||||
ElementHovered_A=1.0
|
||||
|
||||
ElementActive_R=-1.0
|
||||
ElementActive_G=-1.0
|
||||
ElementActive_B=-1.0
|
||||
ElementActive_A=-1.0
|
||||
|
||||
# ############################# #
|
||||
# available options:
|
||||
# top_left
|
||||
# top_center
|
||||
# top_right
|
||||
# bot_left
|
||||
# bot_center
|
||||
# bot_right
|
||||
|
||||
# position of achievements
|
||||
PosAchievement=bot_right
|
||||
# position of invitations
|
||||
PosInvitation=top_right
|
||||
# position of chat messages
|
||||
PosChatMsg=top_center
|
||||
# ############################# #
|
||||
|
@ -0,0 +1,26 @@
|
||||
# ################################################################################ #
|
||||
# you do not have to specify everything, pick and choose the options you need only #
|
||||
# ################################################################################ #
|
||||
|
||||
[user::general]
|
||||
# user account name
|
||||
account_name=goldberg
|
||||
# Steam64 format
|
||||
account_steamid=76561197960287930
|
||||
# the language reported to the app/game
|
||||
# look for the column 'API language code' here: https://partner.steamgames.com/doc/store/localization/languages
|
||||
# default=english
|
||||
language=english
|
||||
# report a country IP if the game queries it
|
||||
# ISO 3166-1-alpha-2 format, use this link to get the 'Alpha-2' country code: https://www.iban.com/country-codes
|
||||
# default=US
|
||||
ip_country=US
|
||||
|
||||
[user::saves]
|
||||
# when this is set, it will force the emu to use the specified location instead of the default global location
|
||||
# path could be absolute, or relative to the location of the .dll/.so, leading and trailing whitespaces are trimmed
|
||||
# when this option is used, the global settings folder is completely ignored, allowing a full portable behavior
|
||||
#local_save_path=GSE Saves
|
||||
# name of the default global folder used to store save data, leading and trailing whitespaces are trimmed
|
||||
# default=GSE Saves
|
||||
saves_folder_name=GSE Saves
|
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 3.8 KiB |
@ -0,0 +1,4 @@
|
||||
release
|
||||
|
||||
you are currently using the 'release' version of the emulator
|
||||
use 'gse_debug_switch.exe' if you want to use the 'debug' version
|
@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
pip install -U steam[client]
|
||||
pip install pyinstaller
|
||||
pip install requests
|
||||
pip install certifi
|
||||
pip install configobj
|
@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
set /p arg="Generate Emu Config for Steam AppId: "
|
||||
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -acw -clr -anon %arg%
|
@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
set /p arg="Generate Emu Config for Steam AppId: "
|
||||
python -W ignore::DeprecationWarning generate_emu_config.py -img -scr -vids_low -vids_max -scx -cdx -acw -clr %arg%
|
@ -0,0 +1,3 @@
|
||||
@echo off
|
||||
set /p arg="Generate Emu Config for Steam AppId: "
|
||||
python -W ignore::DeprecationWarning generate_emu_config.py -cdx -acw -clr %arg%
|
@ -1,5 +1,6 @@
|
||||
#controller vdf script by mr_goldberg
|
||||
#generates controller config from a vdf
|
||||
|
||||
import vdf
|
||||
import sys
|
||||
import os
|
||||
@ -65,7 +66,7 @@ def add_input_bindings(group, bindings, force_binding=None, keymap=keymap_digita
|
||||
else:
|
||||
bindings[action_name] = [binding]
|
||||
else:
|
||||
print(f"[X] missing keymap for {i}")
|
||||
print(f"[X] ____ missing keymap for {i}")
|
||||
return bindings
|
||||
|
||||
|
||||
@ -128,7 +129,7 @@ def generate_controller_config(controller_vdf, config_dir):
|
||||
bindings = add_input_bindings(group, bindings, binding)
|
||||
|
||||
else:
|
||||
print("unhandled trigger mode", group["mode"])
|
||||
print("[X] ____ unhandled trigger mode", group["mode"])
|
||||
|
||||
if s[0].lower() in ["joystick", "right_joystick", "dpad"]:
|
||||
group = groups_byid[number]
|
||||
@ -144,7 +145,7 @@ def generate_controller_config(controller_vdf, config_dir):
|
||||
elif s[0].lower() == "dpad":
|
||||
binding = "DPAD"
|
||||
else:
|
||||
print("could not handle", s[0])
|
||||
print("[X] ____ could not handle", s[0])
|
||||
if action_name in bindings:
|
||||
if binding not in bindings[action_name] and (binding + "=joystick_move") not in bindings[action_name]:
|
||||
bindings[action_name].insert(0, binding)
|
||||
@ -168,7 +169,7 @@ def generate_controller_config(controller_vdf, config_dir):
|
||||
if s[0].lower() != "dpad":
|
||||
print("no pad", s[0])
|
||||
else:
|
||||
print("unhandled joy mode", group["mode"])
|
||||
print("[X] ____ unhandled joy mode", group["mode"])
|
||||
|
||||
all_bindings[name] = bindings
|
||||
|
||||
@ -200,14 +201,14 @@ if __name__ == '__main__':
|
||||
|
||||
for vdf_file in sys.argv[1:]:
|
||||
try:
|
||||
print(f"parsing controller file '{vdf_file}'")
|
||||
print(f"[ ] parsing controller file '{vdf_file}'")
|
||||
t = ''
|
||||
with open(vdf_file, 'rb') as f:
|
||||
t = f.read().decode('utf-8')
|
||||
if t:
|
||||
filename = os.path.basename(vdf_file)
|
||||
outdir = os.path.join(f"{filename}_config", "steam_settings", "controller")
|
||||
print(f"output dir: '{outdir}'")
|
||||
print(f"[ ] __ output dir: '{outdir}'")
|
||||
generate_controller_config(t, outdir)
|
||||
else:
|
||||
print("[X] couldn't load file", file=sys.stderr)
|
||||
|