Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
AWB is a theme that attempts to mimic some aspect of modern desktop environments, with a few twists and turns of its own. The screenshot below illustrates some of the more basic features.
Worth noting is that ctrl enables / disables mouse grabbing, necessary if you're running AWB in a windowed mode. Among the unusual features you will find Gather/Scatter, Fling and BlockFocus.
Gather/Scatter is similar to the "reveal desktop" feature in Mac OS X in that it temporarily moves existing windows out of the way in order to allow quick access to the desktop.
Fling works by shift-clicking a titlebar and dragging the "rubber band" that appears in the direction / distance you'd like to throw the window.
BlockFocus dims all windows not currently focused and prevents other windows from grabbing focus or receiving input events.
The first thing to get accustomed with is the input configuration. This can be found in the 'Tools' group in the 'InputConf'. From here you can chose to switch to create a new input configuration or to edit an existing one. Using the screenshot below, the window in the upper-left side is an example on editing an existing layout. By double-clicking a label (e.g. PLAYER1_UP) you get a dialog where you can select an analog device (for specifying axes) or push a key you want to have assigned to the label.
![annotated screenshot of some of the input editor controls] (https://raw.github.com/letoram/awb/master/doc/awb_analog.png)
Analog devices typically need more fine-tuning. In the Input Editor there may be an entry called Analog Options... (if not, your controller wasn't detected or supported. Try re-plugging it in and selecting Re-Scan Analog). These options are global, and thus aren't connected to any specific layout.
You will get a list of devices, axes and (possibly identifier) in a new list window (upper right-hand side of the screenshot). Double-clicking will pop-up a window where the configuration for the specific device/axis combination can be tuned.
There are three key properties to tune for any analog axis.
Dead-zone - Some devices never rest but constantly emit sampling noise even when the device is at rest. This can introduce a lot of unnecessary calculations. By specifying a dead-zone interval, these values can be dropped at an early stage.
Upper/Lower bounds - Some devices will not yield sample values within the full 16-bit range. Specifying upper/lower bounds that match your device will allow the internal remapping to better distribute the values coming in.
Filter mode/kernel - Some devices emit samples at a higher frequency than a target may be able to take advantage of. This can introduce a lot of unnecessary calculations. By adding a filter (average, min, max, drop) a specific axis can be disabled at an early stage or have samples being forwarded at a lower factor (kernel size).
The meat of the matter is, of course, playing games. As with any other theme, there is a distinction between internal launch (where Arcan maintain have control over input/output) and external launch (where Arcan will suspend, free resources, wait for another program to complete running, then restore and resume). The external launch feature is rather useless with this theme (instead, use Gridle).
Games can be launched by opening the system group, selecting a target, and then selecting a game. This will bring up a window that looks something like the screenshot below.
The actual selection of buttons will vary with the capabilities of the game that is running. For instance, not all games support save-states and in such cases, the save and load buttons will be missing.
Note the sharing button at the far right, which will be present in other kinds of media- enabled windows as well. It can be used to copy and forward the current display to another tool, or to create a shortcut.
When adding a shortcut to the desktop by pressing the sharing button, then clicking the desktop background and selecting shortcut, as much of the currently active configuration (display filters, input layout, last active save-state, core options, windows size / position) will be embedded in the shortcut and restored when activated.
For games that require mouse input, double-click the canvas to lock mouse actions. The lock can be released by pressing Escape.
Walking through the advanced options:
Graph Debug - This will (for targets that support it) turn on a realtime graphing of frame, input and other timing data to help troubleshoot and optimize.
Pre- Audio - Some audio cards with buffering issues may suffer from artifacts such as clicking noises. Setting this feature populates audio-buffers with data from a number of emulation frames, with the drawback of decreasing synchronization between between Audio and (Video/Input).
Skip- Mode - Change the rules for how the emulation engine should handle drift in synch between game-time and real-world (due to temporary stalls or natural slowdown when running on a system with too little available resources for real-time emulation).
- Automatic A conservative frame-dropping strategy that skips transferring video frames that won't be able to match the upcoming frame deadline.
- None Make sure to transfer every frame, even if clocks start to drift.
- Skip Will only present every n frames regardless of the situation.
- Rollback Is a special mode that attempts to compensate for input and display latencies. This requires working save-state support in the target. For every button/axis input, the emulation engine will roll-back internal state n frames, apply the input, then forward n frames again (discarding A/V output).
Frame Prealign - Determines the amount of milliseconds the engine will sleep before feeding input and generating an emulation frame. Setting this to a finely tuned value can reduce input latencies somewhat.
Mouse Accel... - When mouse input is grabbed and forwarded to the emulation core, the values will be amplified by the specified factor.
Reset Opposing - Some systems can present bugs in situations where a player presses opposing directions simultaneously (e.g. LEFT and RIGHT at the same time). With this option enabled, whenever a direction input is pressed, the engine assures that the opposing direction will be released in beforehand.
Among the other tools, there is the video recorder. This tool can be used to record or stream videos, with any number of mixed video and audio input sources.
At first launch, the recorder canvas is empty. It can be populated by adding media sources using the share button. These can then be resized/rotated/blended. The currently selected item on the canvas has an inverted color and can be removed using the delete key on the keyboard.
The bar icons contain fine-tuned parameters for selecting codecs, frame rates etc. but also for adding audio sources. Audio sources are represented by movable icons and their position on the canvas control panning/mixing weights.
When the canvas is configured to your liking, select an output destination (the floppy icon). In order to stream, a streaming destination key file must exist in the themes/awb/stream.key filesystem location and will force h264/mp3/rtmp as a codec combination for now.
A red recording button will appear at the upper right-hand corner and pressing it will start recording. This will remove the button bar and disable canvas editing.
Recorded videos will appear in the 'Recordings' group (filesystem location at themes/awb/recordings). Note that only one recording session can use the global audio monitor at the same time.
Closing the window will disable recording, but it will continue to work if minimized.
Compare / HeightMap / Models
For more advanced or corner-case scenarios we have the two tools 'Compare' and 'HeightMap' along with the option of mapping displays unto 3D models.
By toggling global input in an internal launch window, you can keep on playing even if the window isn't being focused. This allows you to map the display to a 3d model through the share button, have the model in full-screen and still get input forwarded to the game.
The Compare tool is used for more detailed analysis and only works with 2 or more input sources. The filter determines how the comparison should be done, and the display on the canvas is the output of the comparison function. An example of a use case would be to launch two games with different emulation cores, adding their output to the compare tool, setting up global input and then see how their outputs differ in real-time while playing.
The Video Capture tool only covers connecting to video capture devices currently and the support is fairly rudimentary. It relies on the integration provided by the ffmpeg (and thus, the decode frameserver) toolsuite.
This tool is still incomplete and disabled in currently tagged releases. The initial planned features covers remote control / remote joystick for other AWB or Gridle sessions, Voice/Webcam Chat, Networked Multiplayer, and meeting place for connecting with other arcan users.