summaryrefslogtreecommitdiff
path: root/src/input_common/tas/tas_input.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-11-24input_common: Rewrite tas inputGravatar german771-455/+0
2021-09-18UI: Relocate tas menu and add brief descriptionGravatar german771-32/+56
2021-09-18input_common/tas: Document the main classGravatar german771-1/+2
2021-09-18input_common/tas: Add swap controllerGravatar german771-7/+56
2021-09-18input_common/tas: overwrite file dialogGravatar german771-16/+3
2021-09-18input_common/tas: Fallback to simple updateGravatar MonsterDruide11-23/+24
2021-09-18config: Move TAS options to it's own menuGravatar german771-84/+105
2021-09-18core: Hacky TAS syncing & load pausingGravatar MonsterDruide11-55/+87
To keep the TAS inputs synced to the game speed even through lag spikes and loading zones, deeper access is required. First, the `TAS::UpdateThread` has to be executed exactly once per frame. This is done by connecting it to the service method the game calls to pass parameters to the GPU: `Service::VI::QueueBuffer`. Second, the loading time of new subareas and/or kingdoms (SMO) can vary. To counteract that, the `CPU_BOOST_MODE` can be detected: In the `APM`-interface, the call to enabling/disabling the boost mode can be caught and forwarded to the TASing system, which can pause the script execution if neccessary and enabled in the settings.
2021-09-18input_common/tas: Base playback & recording systemGravatar MonsterDruide11-0/+340
The base playback system supports up to 8 controllers (specified by `PLAYER_NUMBER` in `tas_input.h`), which all change their inputs simulataneously when `TAS::UpdateThread` is called. The recording system uses the controller debugger to read the state of the first controller and forwards that data to the TASing system for recording. Currently, this process sadly is not frame-perfect and pixel-accurate. Co-authored-by: Naii-the-Baf <sfabian200@gmail.com> Co-authored-by: Narr-the-Reg <juangerman-13@hotmail.com>