Skip to content
Neo edited this page Jul 23, 2021 · 10 revisions

Welcome to WARP

The WARP project provides a means to access & modify a 32 bit Windows Application.

To make it as flexible as possible, the tools only provide a framework and requires the user to specify the actions they need by means of Patches or Extensions (For e.g. The rock* branches provide the Patches & Extensions for RO).

Both are implemented by means of functions written inside QJS scripts (ES7+). In addition to the standard JS, the tools also provide additional APIs extending it. Also, there are various supporting functions and constants provided as well by means of JS itself.

Due to all these additions, we refer to the language as QJS everywhere in this Wiki (a nod to how Qt refers to the underlying engine).

Almost all the inputs required for the tools are read from YAML files and there is a Warp.LoadYaml function provided to load YAML files in scripts as well.

Refer Warp object for further details.


Overview


Tools

There are 3 tools provided in the Package. Click each one for more details

  • Main GUI

    For an end-user, this is the primary tool you would be using most of the time. It provides the interface for selecting & applying patches or running a specific extension using a loaded app.

  • Console

    This is a stripped down version of the above intended for quickly patching an application. It works from the command line/terminal and requires an existing [Session File].

  • Test Bench

    This one is of interest to a person developing Patches and/or Extensions. It provides a means of testing your code across multiple applications in one go.


Terminology

Patches

A patch is a mechanism by which the WARP tool specifies changes to be done in an Exe.

Since the changes would not be same for every app, this process is automated by means of an associated function implemented in QJS scripts.

Refer the Patch guide for further details.

Extensions

An extension adds on to the Main GUI's capabilities to more than just a mere patcher. Aside from the internal extensions, these are implemented by means of an associated QJS function.

Refer the Extension guide for further details.

Sessions

A session refers to a set of patch selections & user inputs. They are saved as YAML files. Optionally it could also include Source & Target app filenames.

Refer Session File for further details.


Shortcuts

These are all the shortcuts available in the GUIs.

Sequence Available in Purpose
Alt+W Main GUI Hide/Show Script Window
Alt+C Main GUI
Test Bench
Load all changed/modified scripts
Alt+S Main GUI
Test Bench
Load all scripts from 'Support'
Alt+P Main GUI
Test Bench
Load all scripts from 'Patches'
Alt+E Main GUI
Test Bench
Load all scripts from 'Extensions'
Alt+A Main GUI
Test Bench
Load all of the 3 above
Ctrl+R Script Window
Test Bench
Evaluate text written in Script Editor.
Test Bench automatically switches tab to Results tab when invoked.
Ctrl+T Test Bench Run test using selected patches/extensions & tester apps
Ctrl+Tab Test Bench Switch to the next tab on the right cyclically
Ctrl+Shift+Tab Test Bench Switch to the next tab on the left cyclically
Ctrl+Q Main GUI
Test Bench
Interrupts loading of session files and existing test runs (for Test Bench).
If an Input dialog is open, it is automatically cancelled.

Further reading

Clone this wiki locally