Sider 6 for Pro Evolution Soccer 2020

version 6.4.3 from July 2, 2023

history.txt

INTRODUCTION

Sider is a companion program for PES 2020 and PES 2020 Lite. It allows for small tweaks - such as "free side-select" (which is where sider gets its name from), and time expander for the demo version. It also facilitates game mods, created by the modding community. The two main features are LiveCPK and the scripting engine, where you can write your own mods in Lua programming language.

LiveCPK makes it possible to replace game content at run-time with content from files stored on disk, instead of having to pack everything into CPK-archives. (This feature is similar to Kitserver's AFS2FS and to FileLoader for earler versions of PES). Depending on how and when exactly the game reads the replaced files, you can even live-edit some things, like textures or 3D models, without exiting the game.

If you know a little bit how to program, you can write your own game logic using Sider's scripting engine. This requires some reading and understanding of how the game works, but it's really not that hard ;-) See scripting.html - for detailed documentation on that.

HOW TO INSTALL

Move the folder that you just unpacked from the ZIP archive into a place, where your Windows user account has full permissions. I very strongly recommend to use one of these standard locations: Desktop, Documents, or your home directory.

Starting with version 6.3, sider has no external dependences, meaning that everything that sider requires is included in its folder. You do not need to install any additional software to be able to run sider. You must have at least Windows 7 64-bit or newer (Sider will not work on XP/Vista).

People sometimes take sider files and stuff them into Steam's directory for PES 2020. I am not entirely sure where that idea originated. One possibilty is a "carry-over knowledge" of how Kitserver worked for old-gen PES games. However, in the case of sider, this is not a good way to organize things. In fact, it is a pretty bad idea, because:

  1. you mix sider files with game files, and it can be tricky to remember which files belong to sider and which ones - to the game. Uninstalling sider then becomes more difficult.
  2. sider needs to create sider.log file and create and update various *.cache and *.ini files. If it has trouble doing so, due to folder permissions, it can lead to errors and crashes.
  3. Steam may need/choose to "verify" game files, which can result in some of the sider files being deleted or corrupted in some way.
So, in other words, don't do it. There is absolutely no need for it.

HOW TO UNINSTALL

Before uninstalling, remember that you can always run the game without sider, for whatever reason. To do that, simply start the game via Steam or Steam desktop shortcut. (Like you normally would, if you didn't have sider)

If you want to completely remove sider from your computer, simply delete its folder, and that is it - uninstallation complete.

HOW TO USE

Sider itself does not require Administrator privileges, you should run it under your regular account - the same one as you would use to start the game without Sider.

The new method (preferred)

The new one-click way is enabled by default now and it is super easy: just run sider.exe, it will open a small window, then it will automatically launch the game itself, then Sider application will exit, but the game will continue running with the sider.dll loaded into it.

The very first time (or after Steam downloads a new, updated PES2020.exe), there will be a small delay between the launch of sider and the game starting - maybe 5-10 seconds, as sider needs to analyze the process and find hook places in memory. However, next time you do it, the game should start quickly (normally).

The old method

The "old" way is still supported too and if you prefer that, the sequence is the same as before. Make sure you comment out the "start.game" line in sider.ini, and then:

  1. Run sider.exe, it will open a small window, which you can minimize if you want, but do not close it.
  2. Run the game. Sider should automatically attach to the game process.

If you don't see the effects of Sider in the game, check the sider.log file (in the same folder where sider.exe is) - it should contain some helpful information on what went wrong.

SETTINGS (SIDER.INI)

There are several settings you can set in sider.ini:

start.game = "steam://rungameid/996470"

- optional setting. If it is specified, then Sider will operate in a new "one-click launch" mode: first, Sider will launch the game, using the provided steam url, then wait for the game to start and for sider.dll to be loaded into the game process. After that, sider application will exit, but the game will continue with Sider activated - via sider.dll.

exe.name = "\PES2020.exe"

- this sets the pattern(s) that the Sider program will use to identify which of the running processes is the game. You can have multiple "exe.name" lines in your sider.ini, which is useful, for example, if you have several exe files with slightly different names that you use for online/offline play.

free.side.select = 1

- enables free movement of controllers. Normally, it is only possible in Exhibition modes, but with this setting set to 1, you will be able to move the controllers in the competition modes too.

The 1st controller can also be moved into the middle, disabling it effectively. Use this carefully in the matches: if you move 1st controller into the middle, make sure that you have at least one other controller on the left or on the right. Otherwise, you will lose the control of the match. (default is: 0 - free movement disabled)

livecpk.enabled = 1

- Turns on the LiveCPK functionality of Sider. See below for a more detailed explanation in cpk.root option section.

debug = 0

- Setting this to values > 0 will make Sider output some additional information into the log file (sider.log). This is useful primarily for troubleshooting. Extra logging may slow the game down, so normally you would want to keep this setting set to 0. (Defaults to 0: some info, but no extra output)

close.on.exit = 0

- If this setting is set to 1, then Sider will close itself, when the game exits. This can be handy, if you use a batch file to start sider automatically right before the game is launched. (Defaults to 0: do not close)

start.minimized = 0

- If you set this to 1, then Sider will start with a minimized window. Again, like the previous option, this setting can be helpful, if you use a batch file to auto-start sider, just before the game launches. (Defaults to 0: normal window)

cpk.root = "c:\cpk-roots\balls-root"
cpk.root = "c:\cpk-roots\kits-root"
cpk.root = ".\another-root\stadiums"
cpk.root = ".\livecpk\example-root"

- Specifies root folder (or folders), where the game files are stored that will be used for content replacing at run-time. It works like this: For example, the game wants to load a file that is stored in some CPK, with the relative path of common/render/thumbnail/ball/ball_001.dds. Sider will intercept that action and check if one of the root folders have this file. If so, Sider will make the game read the content from that file instead of using game's original content. If multiple roots are specified, then they are checked in order that they are listed in sider.ini. As soon as there is a filename match, the lookup stops. (So, higher cpk.root wins, if several of them have the same file). You can use either absolute paths or relative. Relative paths will be calculated relative to the folder where sider.exe is located.

lua.enabled = 1

- This turns on/off the scripting support. Extension modules can be written in Lua 5.1 (LuaJIT), using a subset of standard libraries and also objects and events provides by sider. See scripting.html for a programmer's guide to writing lua modules for sider.

lua.module = "camera.lua"
lua.module = "kitrewrite.lua"

- Specifies the order in which the extension modules are loaded. These modules must be in "modules" folder inside the sider root directory.

jit.enabled = 1

- Allows to enable/disable JIT (Just-In-Time compiler) for Lua. By default, JIT is enabled - to provide performance boost for Lua modules. To turn it off, set to 0.

lua.gc.opt = "step"
- This option allows to tweak Lua garbage collector (GC) behaviour. Two supported values are: "step" - for incremental collection, and "collect" - for full collection. Default is "step", and typically, you do not need to modify this, unless you see Lua memory errors in the log. In which case, try "collect".
overlay.enabled = 1

- This option enables an interactive overlay. The overlay can display text that is provided by Lua modules, with one module having control of the overlay at any given time. By pressing hotkeys (set by overlay.vkey.next-module and overlay.vkey.prev-module options) the control of the overlay can be switched to the next or to the previous module, and so on. The overlay is toggled on/off with another hotkey, set by overlay.vkey.toggle option. When the overlay is on, the key presses are passed on to the module that is currently in control of the overlay. The module can handle those key events in whatever way it needs to, or ignore them altogether. For more information, see scripting.html

overlay.on-from-start = 1

- If set to 1, the overlay will appear as soon as possible, after the start of the game. (default is 0, meaning that overlay starts hidden, until toggled on)

overlay.location = "bottom"

- two possible locations: "top" and "bottom" of the screen

overlay.font-size = 0
overlay.font = "Consolas"

- these two options control the font of overlay. Size 0 means that the font-size will be calculated automatically, based on height of the screen in pixels. Any TTF font installed on the system can be used, but monospaced fonts are recommended for easier formatting.

overlay.vkey.toggle = 0x20
overlay.vkey.next-module = 0x31
overlay.vkey.prev-module = 0xc0

- hot keys for toggling overlay on/off, and for switching control of the overlay among the modules. Values must be specified in hexadecimal format. The default ones are:

Full list of codes for all keys can be found here: https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes

overlay.background-color = "102010c0"
overlay.text-color = "80ff80c0"

- colors are specified in RRGGBBAA format (similar to how it is done in HTML, except that you do not put '#' character in front)

overlay.image-alpha-max = 0.8

- max value for alpha channel for the image displayed in the overlay (if there is one). This is useful, if you want the image to be slightly translucent, as a visual hint that it is part of overlay. A value around 0.7 or 0.8 would give such effect. Defaults to 1.0. The accepted range of values are: [0.0 - 1.0]

overlay.block-input-when-on = 0

- if set to 1, this option will block all input from keyboard and game controllers to the game, when overlay is on. (Defaults to 0 - no blocking)

vkey.reload-1 = 0x10
vkey.reload-2 = 0x52

- These two settings define a hot-key combination that can be used to reload Lua modules, without restarting the game. This is not a feature that you would normally use during regular gameplay, but if you are writing a module, very often you need to make a small fix or change. Restarting the game every time can be time consuming, so this feature allows to reload all modules that were modified since the last time they were loaded. Default is: Shift-R (0x10 and 0x52).

game.priority.class = "above_normal"

- This option allows to change the priority of the game process. Sometimes this is useful, and reportedly can help to combat FPS drops. Supported values are: "above_normal", "below_normal", "high", "idle", "normal" and "realtime". By default, the game sets its priority to "above_normal".

CREDITS

Game research: nesa24, juce, digitalfoxx, zlac
Programming: juce
Testing: zlac, nesa24, Chuny, Hawke, sonofsam69, Cesc Fabregas, Paul LFC, mota10, predator002
Blue Champions League ball: Hawke, digitalfoxx
Trophies: MJTS-140914, juce

Sider license is a BSD-style license: license.txt

Sider uses the following 3rd-party software:

LuaJIT by Mike Pall (license-luajit.txt)
Knuth-Morris-Pratt string matcher from Project Nayuki (license-kmp.txt)
FW1FontWrapper library by Erik Rufelt
zlib by Jean-loup Gailly (compression) and Mark Adler (decompression) (license-zlib.txt)
miniaudio by David Reid (license-ma.txt)