Titan Two Downloads

Gtuner IV

Gtuner IV is the main software for programming, updating and configuring the Titan Two device, featuring an complete IDE with integrated compiler for the GPC script language. Gtuner IV also provides user friendly interfaces for easy download, configure and use gamepacks or user made scripts. Based in a modern framework, Gtuner IV supports multi-platform, high resolution monitors and localization.

Gtuner IV for Windows
Version 1.08
Release Date 29 October 2020
File Size: 75.3 MB
Device Compatibility Titan Two Device
System Compatibility Win10(x64), Win8.1(x64), Win7(x64)
Legacy Gtuner IV for Windows 32-bit (Win10, Win8.1, Win7): Gtuner IV 1.00RC-75
Gtuner IV for Mac
Version 1.08
Release Date 29 October 2020
File Size: 81.7 MB
Device Compatibility Titan Two Device
System Compatibility OS X 10.13+


2020-10-29, Ver 1.08-2
* Computer Vision: Added Python references to PADDLE_1, PADDLE_2, ..., PADDLE_4 {GitHub#393}

2020-10-23, Ver 1.08-1
* Gtuner Mac: Fixed issue with Online Resources not loading contents in some Mac computers

2020-10-19, Ver 1.08
* Qt framework updated to 5.15.1
* Gtuner IV Windows: Compiler upgraded to MSVC 2019
* Device Configuration: Option to select the quantity of connectable inputs (Bluetooth Classic)
* Device Configuration: Option to enable/disable Gtuner Air connectivity (Bluetooth Low-Energy)
* Extended the input/output data structures to accommodate 4 new entries for controller paddles
* Xbox One input labels: 'P1', 'P2', 'P3', 'P4' moved to PADDLE_1, PADDLE_2, PADDLE_3, PADDLE_4
* Xbox One input labels: Added support for Xbox 'Sync' button, mapped to BUTTON_21
* GPC Input Reference (F1): Added rows to list the controller paddles mappings for each console
* GPC Compiler: Added literals for controller paddles: PADDLE_1, PADDLE_2, PADDLE_3 and PADDLE_4
* GPC Compiler: Added support for paddles to related functions, such as remapper, remapper_swap
* Code Editor: Added highlighting for paddle literals: PADDLE_1, PADDLE_2, PADDLE_3 and PADDLE_4
* Device Monitor: Added Input and Output status fields and plotting support for paddle entries
* Device Monitor: Included recording of the paddles states to Macro Recorder command (GMK file)
* Macro Editor: Added entries to visualize and edit the temporal state of controller paddles
* Macro Editor: Moved the commands 'Check All' and 'Uncheck All' to right click context menu
* Input Translator -> Controller Remapper: Added support to remap the controller paddles
* Input Translator: Upon open, automatic convert existing GIT file to the format with paddles
* Updated some GPH headers files related with controller I/O to support the paddle entries
* Gtuner Mac: Fixed bug with StandardPaths:AppDataLocation not including the AppName {GitHub#366}
* Device Monitor (Gtuner Mac): Fix Macro Rec save file not appending .gmk extension {GitHub#365}
* Input Translator: Optimizations to improve performance for GIT with several mappings {GitHub#370}
* Input Translator: Mark Input Translator file as unsaved after paste keyboard or mouse mappings
* Input Translator: Capability to select console labels for IO identifiers {GitHub#253,#242,#252}
* Added advanced option assembly_shortcut=false (gtuner.cfg) for disable F6 shortcut {GitHub#342}
* Macro Editor: Added toolbar button for quick reload the GMK file (rudimentary undo) {GitHub#172}
* Macro Editor: Added command to reverse macro time sequence (toolbar button) {GitHub#296}
* Online Resources: Support for regular search against the title: [] {GitHub#244}
* GPC Compiler: Added preprocessor directive #import to include input translator files {GitHub#350}
* Publishing: Include input translator files referred by #import when publishing scripts {GitHub#350}
* GPC Compiler: New function get_port() to retrieve the port of an input value {GitHub#372}
* Preferences: Option description changed to 'Automatically start Capture Mode' {GitHub#374}
* KMG Capture: Active interfaces and select controller are saved before exit the sw {GitHub#374}
* Interactive Configuration: Added operation COPY FROM INDEX for one click configs {GitHub#349}
* Memory Slot: Added command to install GBC files onto the sd-card, for script_load() {GitHub#286}
* Publishing: Include bytecode files referred by script_load() when publishing scripts {GitHub#286}
* File Explorer: Added icon, enabled listing and install operation of bytecode files (*.gbc)
* Online Resources: Support for works containing GBC files to be stored in the Micro-SD Card
* Memory Slot: Accept drop of bytecode files to be stored into the Micro-SD Card of Titan Two
* Memory Slot: Support drop of works containing GBC files to be stored in the Micro-SD Card
* Code Editor: File handles are kept closed, so other apps can have write access {GitHub#375}
* GPC Compiler: Implemented garbage collection of unused variables, functions, combos {GitHub#377}
* GPC Compiler: Updated xb1.gph header file to include XB1_SYNC define (BUTTON_21)
* External Tools: When needed, save the working file before open with an external tool
* GPC Compiler: Print symbol table summary and memory usage after process garbage collection
* Preferences: Added GPC Compiler pane enable/disable garbage collection of unreferenced symbols
* Added Chinese translation, thanks for Meki and Michael for making the translation file
* Device Monitor: Show complete status of USB-D when running "KMG Capture"
* GPC Input Reference (F1): Added references to Wiimote MotionPlus Gyro inputs (X, Y, Z)
* Device Monitor: Added Input and Output status fields and plotting Wiimote MotionPlus Gyro
* GPC Compiler: Updated wii.gph header file to include defines for MotionPlus 3 Axis Gyro
* Device Monitor: Create Virtual Controller fed with I/O data (e.g. for OBS plugins) {GitHub#380}
* Preferences->Devices: Option to show/hide the Virtual Controller configuration controls
* Output Panel: Option to enable/disable auto scroll (at right click context menu) {GitHub#378}
* KMG Capture: Detect XInput devices by checking for "IG_", instead of use VID:PID {GitHub#379}
* Computer Vision: Added CAP_PRINT_WINDOW Advanced Configuration for capture UWP windows
* GPC Compiler: Added device_poweroff() function for programmatically power off the device
* Device Monitor: Show pass through mode "Direct Passthru" for Xbox Wireless Receiver
* Device Monitor: Changed visual indication of stick axis activated by half, from 20 to 10
* Device Configuration: Enabled output protocol "Bluetooth Multi Interface HID"
* Forcing GL engine via command line also sets an environment var for QtWebEngine {GitHub#386}
* Explicit use English language for TextToSpeech, instead of use the system default {GitHub#383}
* If the sub-dir "cv2" does not exists, try find the CV module at "site-packages" {GitHub#391}
* File Explorer: Added option to show all files, incompatible files are grayed out {GitHub#392}
* Computer Vision: Fixed incorrect printing of GCV script name for stop command {GitHub#389}
* F1 double-click selection now also works with console specific combo-boxes {GitHub#385}
* KMG Capture: Automatic exit from capture mode if detected device disconnection {GitHub#361}
* Interactive Configuration: Prevent automatic line breaks in html lists (ul,ol dl) {GitHub#376}
* Check the command line arguments at startup and open all compatible files found {GitHub#390}

2020-03-14, Ver 1.07
* Qt framework updated to 5.14.1
* Preferences: Added option to manually enable automatic scaling for high DPI monitors
* Session: The order of files opened in the GPC Script IDE are now correctly restored
* Memory Slot: Fixed issue with the configuration button not being displayed after script drop
* Gtuner IV: Added splash screen for early indication Gtuner IV is launching
* Computer Vision panel for view video capture, select source, run CV scripts, save frame as image
* Computer Vision: Input source configuration interface (device, stream, display, window, null)
* Computer Vision: integration with Python executable library and OpenCV-Python module
* Preferences: Added CV pane to select Python location and check if files needed were found
* Preferences (Test and Debug): Added option to automatic open the CV panel for GCV scripts
* File Explorer: Added icon, enabled listing and opening of GCV script files (*.py)
* Gtuner Menu and Toolbar: added functionalities to create and manage GCV script files (*.py)
* Code Editor: Added custom lexer, highlight, auto-completion for GCV script files (*.py)
* Computer Vision: Accept GPC script commands "GCMD:ComputerVision.[Stop|Start|Start:]"
* GPC Compiler: New functions gcv_ready() and gcv_read() to receive feedback from GCV scripts
* Publishing: Accept GCV scripts and referred supporting files for CV algorithms (images, xml)
* Online Resources: Changed category 'Macro' to 'Misc' for list GMK macros and GCV scripts
* Gtuner Update: Launch Gupdate helper application detached from Gtuner IV process
* Computer Vision: Built-in gtuner Python module to read the input, output, LED and FFB states
* Computer Vision: Use OpenGL for the frame viewport (faster frame drawing, less CPU usage)
* Computer Vision: Fixed horizontal shifting in the export frame to image operation {GitHub#359}
* Header <titanone.gph>: Fixed error in the algorithm of stickize() function {GitHub#360}
* Output Panel: Print debug messages related with Bluetooth Module connection errors
* Code Editor: Auto select corresponding file type for 'Save As' and 'Save Copy As' {GitHub#358}
* Gtuner Mac: Workaround for OSX Catalina not reporting removal of device, causing Gtuner to crash
* Gtuner Mac: Computer Vision, with default kern.sysv.shmmax viewport is 720p, increase for 1080p
* Gtuner Mac: Several GUI layout fixes and application style changed to 'Fusion' for better look
* Publishing: Added extra field for the author provide URL for donations (optional) {GitHub#364}
* Code Editor: Fixed bug with 'Save As' and 'Save Copy As' for GCV script files {GitHub#363}
* GPC Compiler: Added MOUSE_ACPAN definition to mouse.gph header file (horizontal scroll)

2019-11-20, Ver 1.06-1
* Added API to allow the scripts to send speech notifications to Gtuner via printf("SPEECH:")

2019-11-20, Ver 1.06
* GPC Compiler: Fix rounding on conversion of double/float numbers to GPC fix32
* GPC Compiler: Added push_to_talk() function for enable/disable the controller headset mic
* Find/Replace: Added option to explicit enable regular expressions {GitHub#348,#346}

2019-09-11, Ver 1.05-1
* Help Menu: Fixed broken link to Gtuner IV documentation page {GitHub#336}
* Interactive Configuration: Fixed descriptions being stretched on short configs {GitHub#335}
* Interactive Configuration: Space control can also be grouped for better layout control {GitHub#339}
* Interactive Configuration: Added operations OR and AND for one click configurations {GitHub#341}

2019-09-04, Ver 1.05
* Code Editor: Fixed issue on automatic fold with /*^ with nested folding blocks {GitHub#334}
* Code Editor: Use regex to find the correct definition value for pop-up tip with mouse over
* Added HID configuration file for Elecom MMO Gamepad (056E:200A) {Titan Two GitHub#221}
* Added HID configuration file for 8BitDo SN30 Pro+ (2DC8:6002) {Titan Two GitHub#227}
* Device Configuration: Option to set the input polling rate (1000Hz, 500Hz, 250Hz or 125Hz)

2019-08-27, Ver 1.04-3
* Code Editor: Fix on retrieving a defined value when #define is not at line beginning
* Code Editor: Improved automatic re-indentation to handle block comments within line
* Interactive Configuration: Fixed one click predefined configurations broke on 1.04

2019-08-26, Ver 1.04-2
* Online Resources: Fix bug related with 'Show more...' feature added on 1.04
* External Tools: Fix crash when running an external tool with no script opened {GitHub#333}

2019-08-26, Ver 1.04
* Fixed bug when, during main window resize, the side panels were losing geometry {GitHub#330}
* Output Panel: Added option to show precise timestamps (Preferences -> Environment) {GitHub#323}
* Interactive Configuration: Fixed, in some circumstances, truncated texts within collapsed sections
* Interactive Configuration: Added 'border' key to manually set the border of a control {GitHub#329}
* Interactive Configuration: Added context menu to restore the default value of a control {GitHub#327}
* KMG Capture: Moved the option to automatic enter in capture mode to (Preferences -> KMG Capture)
* KMG Capture: Added device selector for Gamepads and Joysticks {GitHub#303}
* KMG Capture: Fixed bug occasionally resulting in the KMG Capture window being moved off screen
* Code Editor: Fixed the reference 'author_name' being wrong placed on new GPC files {GitHub#320}
* Code Editor: Comments starting with /*^ are automatically folded when opening the file {GitHub#319}
* Code Editor: Mouse over the editor tab now shows tooltip with file info + metainfo {GitHub#232,291}
* Code Editor: Added automatic re-indentation of the script code (menu Edit -> Reindent) {GitHub#305}
* Code Editor: Added active monitoring of the definitions from included header files {GitHub#322}
* Code Editor: Added mouse over pop-up tip showing the definition value of #defines {GitHub#236}
* Find/Replace: Replace All in selection is only triggered if selected text has more than one line
* Publishing: Scripts published with bytecode (Gtuner Air) recall this option on updates {GitHub#317}
* Publishing: Configure the author as 'Private' to list the work only for who published {GitHub#331}
* Publishing: Added tag to create Online Resources search links within a work description {GitHub#276}
* Publishing: Added 'title', 'version' and 'author' info tags for publishing header files {GitHub#285}
* Online Resources: Added option to use subdir for downloads, instead of prefix with '_' {GitHub#324}
* Online Resources: Added 'Show more...' for published works with long description {GitHub#310}
* Online Resources: Clear the cache on application exit for synchronization with server changes
* Added configurable external tools with replacement variables to work beside Gtuner IV {GitHub#321}

2019-06-18, Ver 1.02
* Corrected few misspellings found by users {GitHub#306,311}
* Added HID configuration file for Thustmaster T.Flight Hotas (044F:B67B) {GitHub#313}
* Added HID configuration file for Thustmaster T.Flight Hotas One (044F:B68D) {GitHub#313}
* Added HID configuration file for Mad Catz Saitek Pro Flight X-56 Rhino Stick (0738:2221) {GitHub#312}
* Added HID configuration file for Mad Catz Saitek Pro Flight X-56 Rhino Throttle (0738:A221) {GitHub#312}
* Preferences: Added option to clear the Output Panel on Test and Debug execution {GitHub#315}
* Publishing: Added option to include the bytecode when publishing a GPC script (Gtuner Air) {GitHub#307}
* Device Configuration: Added option to disable memory slot selection using the controller

2019-04-18, Ver 1.01
* Fetch HID Descriptors command returns the first 2s of the USB data traffic if output is connected
* Gtuner IV Mac: Fixed bug where the compiler was not able to find the default library files

2019-04-07, Ver 1.00 [FIRST STABLE RELEASE]
* Improvements on the initial connection procedures aiming reduce incidence of Connection Error 2
* Device Monitor: Added connection identification for Bluetooth D (program/configure over BLE)
* Added procedures to keep data synced when the device is connected with both Gtuner IV and App
* Interactive Configuration: Prevent new lines being added in double with HR, H1-6 {GitHub#299}
* Memory Slot: Fixed issue where occasionally the memory slot is not synced with device {GitHub#302}
* Added HID configuration file for Thustmaster HOTAS Warthog Joystick and Throttle (044F:0402,0404)
* Added HID configuration file for GameSir G5 (05AC:057A) {Titan Two GitHub#184}
* Added HID configuration file for 3D Rudder (2DFA:0001) {Titan Two GitHub#188}
* Added HID configuration file for Raphnet Gamecube to USB (289B:0062)
* Added HID configuration file for Raphnet Dual N64 to USB (289B:003C)
* Gtuner IV Mac: Moved data files from MacOS dir to Resources dir (comply with Apple guidelines)
* Gtuner IV for OSX is now properly signed (not requiring user to add KeyChain exception to run)

2019-03-10, Ver 1.00RC-90
* Device Configuration: Enabled output protocol "Bluetooth PlayStation 4"
* Added SDP Attribute files for Wii U, PS4 and DS4. Device Configuration -> SD-Card -> Configure
* Interactive Configuration: controls can be placed horizontally with groupcol = true {GitHub#294}

2019-03-05, Ver 1.00RC-88
* Device Configuration: Enabled output protocol "Bluetooth Wii U / Wii"
* Added file needed by the Titan Two to connect with Wii U / Wii. Device Configuration -> SD-Card -> Configure

2019-01-24, Ver 1.00RC-87
* Input Translator: The checkboxes of "Input Port Remapper Mask" shows the port label on mouse hover
* Firmware Update: Print error code to help debug and fix errors during firmware update process
* Added HID configuration file for the Saitek X52 Flight Control System (VID:PID == 06A3:075C)

2018-12-20, Ver 1.00RC-86
* Qt framework downgraded to 5.11.3 (5.12.0 have bug with drag-and-drop)
* Updated HID configuration file for WootingOne keyboard: enabling only the left and right analog sticks

2018-12-17, Ver 1.00RC-85
* GPC Compiler: Added script_load() function load a gbc file stored on the SD-Card {GitHub#237}
* Memory Slots: Users can add a custom annotation on memory slots (i.e. for configuration hint) {GitHub#216}

2018-12-13, Ver 1.00RC-84
* Qt framework updated to 5.12.0
* Output Panel: On device connection also show the reset reason to help debug device reset issues
* Device Monitor: Scale timeline relative to cursor position when using mouse wheel {GitHub#282}
* Added HID configuration file for WootingOne keyboard: boot mode and disable redundant interface
* Added HID configuration file for PlayStation Classic controller: fix wrong button mappings

2018-12-03, Ver 1.00RC-82
* GPC Compiler: Added mxyconverter_hoffset() function for horizontal anti-recoil scripting with mouse
* Output Panel: Print debug messages related with initialization of Xbox One Wireless Adapter {GitHub#272}

2018-11-25, Ver 1.00RC-81
* Gtuner IV Mac: Force application to run in light mode even if the system is configured to dark mode

2018-11-23, Ver 1.00RC-80
* Gtuner IV Windows: Architecture changed to 64-bit, MSVC 2017, Qt framework updated to 5.11.2
* Interactive Configuration: Paste operation now reports success or error messages in Output Panel {GitHub#266}
* Device Monitor: Added input filter for Macro->Save operation (BUTTON, STICK, POINT, ACCEL, GYRO) {GitHub#172}
* Memory Slots, Macro Explorer: Delete multiple macro files at once, confirmation via dialog box {GitHub#172}
* Macro Editor: Change speed (speed-up/slow-down) of macro or selected nodes (toolbar command) {GitHub#172}
* Macro Editor: Interpolate and Uninterpolate all selected nodes (toolbar command)
* KMG Capture: Customizable key or keys combination to exit capture mode (Tools:Preferences) {GitHub#208}
* Find/Replace: Implemented Replace All in selection {GitHub#258}

2018-11-18, Ver 1.00RC-75
* KMG Capture: Required XInput changed from 1.4 to 9.1.0 to maintain compatibility with Windows 7

2018-11-18, Ver 1.00RC-74
* Device Monitor: Fixed inconsistent icon color filter (grayed) after clearing a memory slot
* Added HID configuration file for Nixeus Revel Gaming Mouse, disabling redundant mouse interface
* Corrected misspellings found by PabloScripts {GitHub#234,273}
* Memory Slots: Fixed infinite loop at function that scans the script files for CFGDESC {GitHub#274}
* Interactive Configuration: Fixed new lines being added in double inside TABLE, TR and TD {GitHub#263}
* Device Selector: Fixed issue when switching from on connected device to another {GitHub#270}
* KMG Capture: Added support for XInput API to proper read the triggers of Xbox controllers {GitHub#255}
* Device Monitor: Added option to enable/disable channels plotting via context menu {GitHub#256}
* Interactive Configuration: collapsible parameter can be set to 3 for hide items from user {GitHub#269}
* File Explorer: File renaming operation will first close the respective work {GitHub#271}
* Device Monitor: Added context menu to manually turn off input devices (controllers)
* Input Translator: Paste operation now reports success or error messages in Output Panel {GitHub#266}

2018-09-06, Ver 1.00RC-72
* Interactive Configuration: Fixed issue on configuration buttons resetting previous changes {GitHub#259}
* Device Configuration: Added output protocol "USB Logitech Steering Wheel"
* Updated HID configuration files for Logitech Driving Force GT, G25 and G27
* Added HID configuration files for Logitech Driving Force, Driving Force Pro, G29 and G29-PS4
* GPC Compiler: Added PROTOCOL_WHEEL on protocols definition list
* GPC Compiler: Added new header file <wheel.gph>
* Device Monitor: Added device identification for supported steering wheels (input and output)

2018-08-27, Ver 1.00RC-70
* Find/Replace: Escape key returns the focus to the code editor {GitHub#257}
* GPC Compiler: Check for the correct number of elements in the initialization list {GitHub#254}
* Macro Explorer: Fixed horizontal scrollbar expanding after sort of macros files by name {GitHub#260}
* Input Translator: Implemented rearranging of keyboard/mouse mappings via drag-and-drop {GitHub#252}
* Input Translator: Added copy-paste capability all input translator configuration sections {GitHub#246}
* Header <titanone.gph>: Fixed irand() function not returning the maximum value
* Test and Debug: Force focus on Device Monitor if "Automatically open Device Monitor" option is set {GitHub#262}
* Code Editor: Fixed crash with block-selections (introduced on 1.00RC-7 with word highlighting) {GitHub#249}
* GPC Compiler: Fixed crash when compiling scripts with language specific symbols in the file path {GitHub#250}
* Device Configuration: Changed BT output protocol ID indexing to allow sequential inclusion of new USB protocols

2018-07-19, Ver 1.00RC-68
* Added HID configuration file for mice from 04D9 vendor ID (multiple brands), disabling redundant mouse interface
* Input Translator: Automatic scroll to the bottom if previously opened GIT file was at the Mouse XY Converter area
* Session: Save scroll position of opened Input Translator on session state and project files
* Device Monitor: Added a discrete bar to display the current Titan Two / Dualshock 4 lightbar color {GitHub#235}
* Interactive Configuration: Fixed issue with Config Buttons grayed out when collapsible is set to 2 {GitHub#243}
* Interactive Configuration: Fixed new lines being added in double inside the tag PRE {GitHub#241}
* Gtuner IV Project files (GPJ) are now included in the Recent Files list {GitHub#245}
* KMG Capture: Added support for Generic HID devices (Gamepad and Joystick)

2018-07-07, Ver 1.00RC-65
* KM Capture renamed to KMG Capture to indicate Gaming devices will also be supported for capturing
* KMG Capture: Option to select which input devices to capture (Keyboard, Mouse, upcoming Gamepad/Joystick)
* Session: cursor, scroll position, bookmarks and foldings are now saved on session state and project files
* GPC Compiler: Added mxyconverter_voffset() function for anti-recoil scripting with mouse

2018-06-28, Ver 1.00RC-63
* Interactive Configuration: Automatic add break tag before new lines on shortdesc {GitHub#227}

2018-06-27, Ver 1.00RC-62
* Input Translator: Added mark to the conversion curve plot to suggest where the curve should end
* Interactive Configuration: explicit force HTML parsing for shortdesc {GitHub#227}
* Device Monitor: Added XY plotting for (CH1,CH2) and (CH3,CH4) {GitHub#150}
* Output Panel: Measurements to prevent Gtuner from hanging due overflow of script printf {GitHub#231}
* File Menu: Added sub-menu to install the active work on selected memory slot {GitHub#223}
* GPC Compiler: Added macro_rec() function to record the outputs on a macro file {GitHub#220}
* Code Editor: Action to Reload the file added to the context menu at sub-window title bar {GitHub#230}

2018-06-13, Ver 1.00RC-60
* GPC Compiler: Support for sizeof() on array declaration {GitHub#225}
* GPC Compiler: Fixed bug on displaying warnings related with macro redefinition {GitHub#224}
* GPC Compiler: Force fix32 literal to be represented as integer with suffix i (int16) and I (int32)
* Input Translator: Increased the height of the Default/Alternate selector
* Device Configuration: Added option to power off the device with the console
* Added HID configuration file for Thrustmaster flight devices (sticker, throttle, rudder)
* Added HID configuration file for Fragpedals (disable Joystick interface)

2018-05-06, Ver 1.00RC-59
* Device Connection: Drop packets with error (errno -4), instead of force device disconnection

2018-05-04, Ver 1.00RC-58
* Output Panel: On device disconnection also show the reason to help debug unintended disconnections
* Interactive Configuration: Added one click predefined configurations {GitHub#205}
* GPC Compiler: New function power_source() (opcode: PWSRC) {GitHub#203}

2018-04-17, Ver 1.00RC-56
* Updates of the firmware files for the Xbox Wireless Adapters (old and new). Device Configuration -> SD-Card -> Configure

2018-03-30, Ver 1.00RC-55
* Interactive Configuration: Added buttons to copy and paste the configuration in string format for easy share {GitHub#205}
* Interactive Configuration: The configuration string data can be manually crafted to change only specific configs {GitHub#205}
* Interactive Configuration: Added command "GCMD:InteractiveConfiguration.GIVICFG" for printf(), same string format {GitHub#205}
* Publishing: The HTML tag 'code' now serves to include Interactive Configurations strings in the work description
* Publishing: The HTML tag for break line is automatically added before new lines (if does not already exists)

2018-03-17, Ver 1.00RC-50
* GPC Compiler: Fix crash with uncomplete function declaration {GitHub#206}
* Device Configuration: Added option to change the output polling rate to 1000Hz, 500Hz, 250Hz or 125Hz

2018-03-08, Ver 1.00RC-40
* Macro Editor: Enable drag of the time-frame with right mouse button
* Online Resources: Fixed issue where a search for a term that exists in the searching history was not updating the results {GitHub#204}
* Input Translator: Added button to calculate the curve parameters from the existing curve points (Conversion Curve Generator)
* Input Translator: The inputs can now be individually disabled in the Controller Remapper interface
* GPC Compiler: New function remapper_disable() to disable a controller input
* Mac Version: Fix unable to resize dialog window since Qt framework update 5.10.1 {GitHub#200}
* Code Editor: Ctrl+F automatically search for the selected term from the code editor, if any {GitHub#202}

2018-02-20, Ver 1.00RC-35
* Qt framework updated to 5.10.1
* Device Configuration: Enabled output protocol "Bluetooth Nintendo Switch"
* KM Capture: Fixed incorrect calculation of HID reports sent last second
* GPC Compiler: Builtin function key_get() renamed to key_check()
* GPC Compiler: New functions key_get() and mouse_get() to retrieve the values set by key_set() and mouse_set() {GitHub#197}

2018-02-02, Ver 1.00RC-31
* Input Translator: Fix background color of Controller Remapper not being reset in subsequent opening of git files

2018-01-27, Ver 1.00RC-30
* Device Configuration: Added Mouse DPI configuration to normalize the sensitivity of Input Translators
* Device Monitor: Added references for Joy-Con controllers (right and left)

2018-01-25, Ver 1.00RC-28
* Device Configuration: Added option to disable Joystick from Multi Interface HID output
* Input Translator: Removed "lock point" from the Conversion Curve Generator
* Input Translator: Added linear transformation to the Conversion Curve Generator
* Conversion Curve Generator: Added option to transform the current curve or make new from scratch
* Output Panel: Added Ctrl-C shortcut to copy to clipboard all selected items
* Device Monitor: Added references for Steam Controller (wired and wireless)
* GPC Compiler: Added reference for the new protocol: 'PROTOCOL_STEAM'

2017-12-11, Ver 1.00RC-25
* Code Editor: Ctrl+F automatically use the text from the clipboard if some conditions are met
* Device Configuration: Enable selection of "USB Multi Interface HID" output protocol
* GPC Compiler: Added functions for "Multi Interface HID" - key_set(), key_passthru(), mouse_set() and mouse_passthru()

2017-12-01, Ver 1.00RC-20
* Qt framework updated to 5.9.3
* Titan One backward compatibility (GPC Compiler): Fixed bug with data segment containing negative values {GitHub#190}
* GPC Compiler: Fixed casting operation to and from signed and unsigned integers (new opcodes UTOB, UTOW, ITOB, ITOW)
* Macro Editor: Added several keyboard shortcuts to interact with timeline and manipulate nodes properties {GitHub#180}
* GPC Code Editor: Added shortcut Ctrl+B for jump to matching brace {GitHub#179}
* Online Resources: If the title of an published work is truncated, on mouse hover a tooltip with full title is shown {GitHub#184}
* Interactive Configuration: added button to print the Interactive Configuration contents {GitHub#181}
* Toolbar: Added button to install the active work on selected memory slot {GitHub#183}
* Added HID configuration file for Logitech G25 (Button Mapping, 900°, FFB, Hi-Res Springs, Clutch, Shifter)
* Added HID configuration file for Logitech G27 (Button Mapping, 900°, FFB, Hi-Res Springs, LED Bar, Clutch, Shifter)

2017-10-31, Ver 1.00RC-18
* Qt framework updated to 5.9.2
* Code Editor: Fix crash when opening read-only files
* Device Monitor: Added context menu to manually disconnect Bluetooth devices (controller, console)
* Device Monitor: Added references for Nintendo Wii / Wii U controllers
* GPC Quick Reference (F1): Added references for the Wii / Wii U inputs
* GPC Compiler: Added new header file <wii.gph>
* Interactive Configuration: added option to set the number of decimal digits for spinboxf
* Interactive Configuration: allow decimal numbers to be stored in 16 or 8 bits at cost of precision {GitHub#178}
* Code Editor: Fixed issue with jumping to the compiler error line when the script has folded areas {GitHub#173}

2017-09-17, Ver 1.00RC-16
* GPC Compiler: Added PROTOCOL_SWITCH on protocols definition list
* Device Monitor: Added references for Nintendo Switch Pro controller
* Device Configuration: Added Nintendo Switch as Output Protocol
* PS4 Touch-Click swapped with Share button (BUTTON_2 <> BUTTON_18) for better crossover/gaming consistency
* GPC Quick Reference (F1): Added references for the Nintendo Switch inputs
* GPC Compiler: Added new header file <switch.gph>
* Added HID configuration file for Logitech G13
* Fix issue on Mac where the update window closes itself when the device enters in programming mode {GitHub#166}

2017-08-11, Ver 1.00RC-11
* Input Translator: Fix layout alignment of the "Input Port Remapper Mask" box
* Header <titanone.gph>: Updated to comply with the new format of remapper() function

2017-08-10, Ver 1.00RC-10
* Header <titanone.gph>: Fix indexing conversion of the Xbox Elite Controller paddles
* Input Translator: Added ability to select to which input port the Button Remapper should be applied
* GPC Compiler: Added remapper_mask() to configure which input ports the Button Remapper should be applied
* GPC Compiler: New header file <remapper.gph> with definitions of port masks to be used with remapper_mask()
* Added HID configuration files for Arduino Leonardo (Joystick) and Logitech Driving Force GT (Button Mapping, 900° Wheel, FFB)
* Interactive Configuration: Script command "GCMD:InteractiveConfiguration.Refresh" now also works in preview mode {GitHub#161}

2017-07-31, Ver 1.00RC-8
* Added support for RU language (translation not yet avaliable)
* Device Monitor: Added new device identification "Xbox One Wireless Adapter"
* GPC Compiler: Added PROTOCOL_XB1_WRC on protocols definition list
* Included 'xboxacc.fw' for initialization of Xbox Wireless Adapter (command Micro-SD -> Configure)

2017-07-12, Ver 1.00RC-7
* Qt framework updated to 5.9.1
* Device Configuration: Added "Pair Controller Wirelessly" command (for Wiimote, Wii U Pro and Xbox One S controllers)
* GPC Compiler: Fixed bug on evaluating expressions containing user-defined functions with returning value {GitHub#158}
* Code Editor: Find/Replace now allows text replacing with empty string {GitHub#155}
* Code Editor: Highlight all occurrences of selected text (whole word, case sensitivity) {GitHub#156}
* Online Resources: Allow full-screen mode for embedded YouTube videos {GitHub#157}

2017-06-29, Ver 1.00RC-5
* GPC Compiler: Another fix related with array indexing, everything should be good now.

2017-06-29, Ver 1.00RC-4
* Fixed bug causing application crash when loading project files (GPJ)
* Interactive Configuration: arrow of collapsible sections is now working properly to mouse click
* GPC Compiler: Added opcodes MOD!, DIV! and SR! for correct operation with signed integers

2017-06-28, Ver 1.00RC
* Macro Explorer: Fixed bug on deleting files with exactly 8.3 characters
* Quick link to create new GIT and GMK files if no work is opened in the respective interface pane
* Mouse XY Converter: Added diagonal dampening factor {GitHub#147}
* The functions keymapping() and mousemapping() can now be called without parameter to disable the default mapping
* Input Translator: Added the ability to lock a point in the Conversion Curve Generator {GitHub#130}
* GPC Compiler: Error notification sound is now played only on the first error message for the current compilation {GitHub#144}
* Online Resources: 'Order By' and 'Sort By' are not reset when navigating to others categories {GitHub#95}
* GPC Compiler: Fixed bug causing false compiling error when an identifier is before ':' of a ternary operator
* GPC Compiler: Fixed bug when indexing an array with another array indexed by a variable
* GPC Compiler: Full backward compatibility with Titan One code by just adding #include <titanone.gph> at the beginning of the code {GitHub#94}
* GPC Compiler: Added builtin constant TRUE
* GPC Code Editor: Added shortcuts Ctrl+K and Ctrl+Shift+K to comment/uncomment a line or selected lines {GitHub#148}
* Interactive Configuration: added option to create collapsible sections, initially expanded or collapsed {GitHub#87}
* GPC Code Editor: Builtin constants NULL, FALSE and TRUE are also evaluated for block highlighting based on preprocessor directives
* GPC Code Editor: Syntax highlight for general GPC constants and user defined macro identifiers {GitHub#28}
* GPC Code Editor: Backtrack included header files for syntax highlight of defined macros
* Interactive Configuration: Fixed bug on MAC where the interactive configuration does not close if the active application changes {GitHub#149}
* Added software and firmware automatic check for newer versions. If an update is available, a message is printed in the output pane {GitHub#135}
* The current session (opened files) can be saved as project (GPJ) for later restoration or quick swap between session projects {GitHub#116}
* Memory Slots: Press and hold the Ctrl key before drop a script/gamepack into the memory slot to NOT reset the configurations {GitHub#49}
* GPC Compiler: Added inv() builtin function as alias of the '-' operation (int and fix32)
* File Explorer: Fixed bug preventing expanded directories to be restored between sessions
* Layout geometry is now preserved during resize of the main window

2017-06-14, Ver 1.00B-600
* Qt framework updated to 5.9
* Device Monitor: Fix occasional crash due concurrent data access while re-plotting the graph area
* GPC Script IDE: Stylesheet of Document Tabs configured to produce the same look and feel across Windows and Mac
* Finished implementation of Macro Editor. Complete interface to edit macros files, merging macro files, interpolation, conversion to GPC combo code (Combo Magick), recording and playback functionalities (GameREC).

2017-05-25, Ver 0.105B-560
* Fixed bug causing the "Test and Debug" command to get disabled (grayed out) under some circumstances

2017-05-24, Ver 0.105B
* Finished implementation of Macro Explorer on Device Memory Slots pane
* Finished implementation of Macro Recorder on Device Monitor pane
* GPC Compiler: Added macro_run(), macro_time() and macro_stop() builtin functions
* Initial implementation of Macro Editor pane (open gmk file, Test and Debug command)

2017-05-15, Ver 0.104B
* GPC Compiler: Fixed variable assignment with binary operations (&=, |=, ^=) {GitHub#142}
* Output Pane: Fix copied position of the first select item when its index is higher than the last select item
* Fix issues related with the use of art code on script title/name (Memory Slot and Device Monitor) {GitHub#143}
* Online Resources: Place top tabs (section selection) in the center of the available horizontal space
* Set menubar to have same background color as the toolbar for better look on Windows 10
* Online Resources: Added search history (last 16 search queries are maintained in the search history) {GitHub#140}
* Code Editor: Enable virtual space (space beyond the end of each line) for rectangle selections {GitHub#137}
* File Explorer: If working directory is set, expanded directories are restored between sessions

2017-05-03, Ver 0.103B
* Added sub-directory 'configsd' to store files for be copied to the device's SD-Card when executing the "Configure" command
* If an error occurred when updating a memory slot, re-try the operation couple times before abort and show error
* Mac Version: Fixed disabled menus containing sub-menus after QT framework update {GitHub#141}

2017-03-31, Ver 0.102B
* Device Monitor: Allow the items of device status area to further squeeze to avoid vertical scrollbar
* Device Monitor: CPU Load can now be dragged to plottable channel
* KM Capture: fixed chance of mutex deadlock when exiting capture mode
* Interactive Configuration: removed "Stay on Top" window flag of Gtuner IV Windows version
* GPC Compiler: Fix mxyconverter() compiler error with valid mxyconfig data structure
* Added interface to fetch HID descriptors from a device connected to the Titan Two (menu Tools)
* Updated dialog windows icon to reflect the dialog function
* Qt framework updated to 5.8.0-1

2017-03-17, Ver 0.101B
* Device Monitor: Queued plot refresh for better performance on processing of time sensible events
* KM Capture: refactored mouse input acquisition and threaded with flow control USB data reporting
* Disabled many debugging messages on public release builds

2017-03-13, Ver 0.100B
* Input Translator: return scroll page to top when opening a new file
* Input Translator: temporarily disable UI update while loading an file (avoid flickering)
* Published GPC and GIT can now be dragged directly to memory slots {GitHub#84}
* Online Resources: Show download options if the work already exists locally (Replace, Create Copy, Cancel) {GitHub#72}
* The memory slot number is now clickable for quick load a memory slot, also available via context menu {GitHub#110,#115}
* Online Resources: "Publish Date" changed to "Last Updated" in the "sort by" combobox {GitHub#98}
* GPC Compiler: Fix compiling error with nested jumping tables {GitHub#119}
* Added Cancel option for closing a not saved file (Code Editor and Input Translator) {GitHub#105}
* File Explorer: Added "Delete to Trash" and make it the default delete operation {GitHub#32}
* File Explorer: New directories are now created under the parent of the area where the context menu was called {GitHub#26}
* File Explorer: Keep the directories on top also when sorting by Modified Date {GitHub#66}
* Code Editor: Character encoding changed to UTF8 (previously Latin-1) to support ASCII Art on comments {GitHub#91}
* Publishing: If the published work is Bytecode, updates will be marked as Bytecode by default {GitHub#109}
* Input Translator: Make icon grayed if "No GIT file opened"
* Added "Save a Copy As..." to the file menu, after "save a copy" both files will be in the code editor {GitHub#121}
* File Explorer: Silent close the file, if opened, before execute a delete operation
* Output Panel: Select and copy multiple lines - selection modifiers keys: Ctrl and Shift {GitHub#106}
* Memory Slot: Fix duplicated output message when updating an memory slot configuration {GitHub#107}
* Added link to software and firmware changelog in the Help -> About window {GitHub#111}
* Publishing: The description field is now mandatory {GitHub#128}
* Added memory slot shortcuts: Ctrl+UP, Ctrl+DOWN, Ctrl+0 and Ctrl+<1 to 9> {GitHub#89}
* Fixed crashing on Mac when opening GIT files with Mouse XY configuration {GitHub#125}
* Set Interactive Configuration window to stay on top of Gtuner IV window - Mac {GitHub#101}
* The GPC Input Reference window automatically closes it-self if the active window changes {GitHub#112}
* Auto adjust the width of the Interactive Configuration window to fit its contents {GitHub#102}
* Several tweaks on GUI elements of Mac version to have similar look and feel as the Windows version
* Improvements on the GPC Input Reference: insert GPC designator and auto select combobox {GitHub#113,#100,#58}
* Added command "Sort Tabs by Name" in the Window menu {GitHub#122}
* Implementation of GCMD API to allow the Titan Two scripts to send commands to Gtuner IV {GitHub#114}
* File Explorer: Enable/disable the items from the context menu accordingly the current selection
* Code Editor: Inclusion of bookmarks margin (Ctrl+F2) and navigation (F2, Shift+F2) {GitHub#17}
* GPC Compiler: Added variants of pmem_load() and pmem_save() with argument (memory slot number) {GitHub#123}
* Windows version: increased the version number of assemblies to avoid side-by-side conflits {GitHub#82,#134}
* KM Capture: updated to use a dark theme, frameless window and non-modal
* KM Capture: limit the maximum output HID reports to 1000/s (to avoid overload of the USB data pipe)

2017-02-22, Ver 0.99B-1400
* GPC Compiler: Fix assigment with multi-parameter function on variable declaration
* Shortcut for "KM Capture" changed to F4 (F2 was confliting with file rename in file explorer pane)
* Added option to copy the Mouse XY conversion curve as GPC fix32 array from the data table (Alt modifier)
* The angular parameter of Exponential-Angular curve generator now goes up to 100.00
* Mouse XY Converter: Swaped position between deadzone and curve areas to reflect the new processing order

2017-02-20, Ver 0.99B
* GPC Compiler: the pre-processor directives (i.e. #line) is now processed by the lexer module
* Input Translator: Moved header bar outside the scrolling area
* Input Translator: The header bar now shows the GIT file size
* GPC Input Reference Dialog: Remember position and geometry during current session
* Added Mouse Mapping configuration to Input Translator pane
* Added Mouse XY Conversion configuration to Input Translator pane
* Memory Slots: Check for GIT file too big for internal memory slots
* Device Monitor/Slot Metainfo: Added flag for Mouse XY Conversion ('C')
* GPC Compiler: Added pow() build-in function (for int and fix32)
* GPC Compiler: Added mousemapping(), mousemapping_reset(), mxyconverter(), mxyconverter_reset() and mouse_status()
* GPC Compiler: Added new header file
* Added "Keyboard and Mouse Capture" interface for play using the computer's K&M (similar to MaxAim DI)

2017-01-28, Ver 0.98B
* Show warning message of Input Translator unsaved work when closing Gtuner IV
* Added Keyboard Mapping configuration to Input Translator pane
* Device Monitor/Slot Metainfo: Added flag for Keyboard ('K') and Mouse ('M') Mapping
* Fix bug preventing the "Test and Debug" command to log output messages for GIT files
* Added GPC Input Reference dialog (F1 shortcut), click the row number to insert the designator to the code
* GIT files now includes an flag for EOF
* GPC Compiler: Added keymapping(), keymapping_reset(), key_status() and key_get() build-in functions
* GPC Compiler: Added new header file with key code definitions

2017-01-21, Ver 0.97B
* Changed code for synchronous download (Online Resources) to work with Qt 5.7.1 (Mac)
* Also verify the revision number when checking for new updates (software and firmware)

2016-12-22, Ver 0.96B
* Fix calltips of some GPC build-in functions and commands
* GPC Compiler: pmem_read() with single argument now accepts literal expressions
* Interactive configuration: size policy changed to expanding on several controls
* Online Resources: Added "Release Date" option on "Order by" dropbox
* GPC Compiler: Fixed incorrect memory alignment of variables declared after combos
* Interactive Configuration: Enable links to open in external browser
* GPC Compiler: process pre-processor directives (ie. #line) inside initialization list
* Online Resources: prioritize focus on search box to easy make search queries
* Online Resources: added clear button for search query {GitHub#64}
* GPC Compiler: changed format string of Variables usage report to keep consistency {GitHub#90}
* Qt framework updated to 5.7.1

2016-11-16, Ver 0.95B
* GPC Compiler: Added display_overlay() function {GitHub#42}
* GPC Compiler: Fix rand execution order when placed as parameter
* GPC Compiler: Fix pointer parameter followed by a value parameter causing compiler error {GitHub#81}
* GPC Compiler: Added mslot_get(), mslot_load() and mslot_check() functions {GitHub#75}
* Menu: Added "Gtuner Documentation" and "GPC Language Reference" in the help menu {GitHub#74}
* Publishing: Added placeholder tip for "description", "keywords" and "doc url" input fields {GitHub#63}
* Preferences: Added links to "Register" and "Forgot Password" into ConsoleTuner pane {GitHub#62}
* Script/Gamepack Interactive Configuration window initial geometry increased to 500x560
* Added "Save Layout" (Ctrl+F11) and "Restore Layout" (F11) operations to View menu {GitHub#67}
* Online Resources: prevent embed YouTube to open external browser
* Added option to show Modified Date on File Explorer (Preferences -> Environment) {GitHub#66}
* Publishing: multi-byte characters are converted to HTML-entity when re-publishing a script {GitHub#47}
* Code Editor: Added backward search with Shift+F3 {GitHub#48}
* Code Editor: Fix Replace All not replacing all occurrences when there is a selected text
* The global property "last directory" is updated according the selected directory in the File Explorer {GitHub#25}
* GPC Compiler: List unreferenced variables, functions, combos and/or labels {GitHub#23}
* GPC Compiler: Added port_permit_ffb() function
* Device Configuration: Global enable/disable FFB on each input port {GitHub#77}
* Device Configuration: Force USB Prog Interface to full speed (12Mbps)

2016-10-29, Ver 0.94B
* First public beta release


This tool “IC-Bytetable” helps Titan Two script creators to keep track of the used pmem byteoffsets of their GUI, spot free space easily and does some error checking like overlapping memory space and more. It does parse a gpc script from file or clipboard, searching for Interactive Configuration declaration, showing the result in a table.

IC-Bytetable by Scachi
Device Compatibility Titan Two Device
System Compatibility Windows

Titan Two Firmware

The firmware is a set of instructions stored in the read-only memory (flash) of the device, which determines how the hardware should works. Firmware updates are intended to fix bugs, improvements of functionality and add new features to the device.

Version 1.08
Release Date 23 October 2020
Device Compatibility Titan Two device


2020-10-23, Ver 1.08-1
* GPC VM: Compensation for the delay caused by opening the macro file when calling macro_run()

2020-10-19, Ver 1.08
* Bluetooth Module: Changed page scan parameters for faster connection of a second BT controller
* Bluetooth Module: Option to select the quantity of connectable inputs (Bluetooth Classic)
* Bluetooth Module: Option to enable/disable Gtuner Air connectivity (Bluetooth Low-Energy)
* Extended the input/output data structures to accommodate 4 new entries for controller paddles
* GPC VM: Added support for paddles to related functions, such as remapper, remapper_swap
* PROG: Include input and output paddles states to report send for Gtuner IV Device Monitor
* Updated Input Translator parser to support button remapping with paddles (version 2)
* Data Normalization: Moved Xbox One Elite paddles to dedicated paddle identifiers
* Data Normalization: Moved Xbox One Sync button to BUTTON_21 identifier
* Data Normalization: Moved Steam controller paddles to dedicated paddle identifiers
* Data Normalization: Register from which port the normalized value has been originated
* GPC VM: Added get_port() (opcode GPRT) to retrieve the port from an input value {GitHub#103}
* PROG: Fix bug where the PROG port status was not being correctly restore on KMG Capture exit
* HID Driver: Increased max HID Collection from 12 to 26 (required for SideWinder) {GitHub#255}
* HID Driver: Make the paddles identifiers available for bind extra buttons of HID controllers
* Wii Driver: Added support for Wiimote Motion Plus extension (3 axis gyroscope) {GitHub#218}
* PS4 Driver: Added support for Splitfish Frag FX Piranha controller for PS4
* PS4 Driver: Parse R2 and L2 digital inputs if the analog inputs are not available
* GPC VM: Fixed bug with gcv_read(), potentially causing GCV data not being correctly read
* GPC VM: Added device_poweroff() (opcode DPOFF) for power off the device {GitHub#273}
* USB Host: Changed maximum size for bulk transfers from 512 to 2048 bytes per transaction
* USB Host: Enabled Mult transactions for bulk transfers on High Speed connections (XB1WRC)
* XB1 Emu: Fixed bug causing wired Xbox One controllers to lose pairing with Wireless Receiver
* XB1 Emu & XB1WRC Driver: New pass through mode for Xbox Wireless Receiver "Direct Passthru"
* XB1WRC Driver: Support for headsets over wireless connection when using on XB1 {GitHub#212}
* XB1WRC Driver: Included support of headsets over wireless for S and Elite S2 controllers
* GPC VM: Performance optimization: call gcv_ready() is now required before use gcv_read()
* PROG: Receive and queue all buffered OUT packets in a single iteration of main system loop
* XB1WRC Driver: Fixed bug of Xbox button stopping to register with S and Elite S2 {GitHub#267}
* XB1WRC Driver: Increased data throughput by alternating endpoints 4 and 5 for general data
* XB1WRC Driver: Increased data throughput by alternating endpoints 6 and 7 for audio data
* XB1WRC Driver: Removed wireless pairing (for pair, connect the controller using USB cable)
* XB1WRC Driver: Several optimizations and improvements (e.g. prevent poweroff false positive)
* Data Normalization: Changed sticks resting area by half, from 20 circular radius down to 10
* Bluetooth Module: Removed warning for Bluetooth device disconnection (Gtuner's Output Panel)
* Multi Interface HID: HID field size of sticks increased from 8-bit to 16-bit {GitHub#274}
* Added "Bluetooth Multi Interface HID" emulator to wireless output as KMG combo {GitHub#80}
* Bluetooth Module: Several improvements and optimizations to the Bluetooth pairing process
* Bluetooth: Improvements to the SDP services (detection of controllers and consoles types)
* Fix bug causing output connection reset when connecting new devices while in auth passthru mode

2020-03-14, Ver 1.07
* GPC VM: Added MOUSE_DPI identifier to retrieve the user's configured mouse dpi using mouse_status()
* GPC VM: Added support for Gtuner's Computer Vision interface feedback: gcv_ready() and gcv_read()
* Changed all preprocessor macros related to configure the port status flags to standard functions
* Fixed bug causing delay with mxyconverter_*offset(0) when no controller is present {GitHub#259}
* HID Driver: Improvements on mouse raw data acquisition in order to mitigate "noise" (1000Hz)
* Mouse XY Translation: Several optimizations on the conversion algorithm (less CPU demanding)
* Bluetooth Module: Catch and report to Gtuner IV connection errors, including event identification
* Bluetooth Module: Halt data transmission to Bluetooth module if CTS signal is asserted {GitHub#258}
* Bluetooth Module: Dynamic alloc memory for services when needed, instead of static allocation
* Switch Emu: Wait Nintendo Switch commit the pairing results before close USB connection {GitHub#260}
* HID Driver: Increased maximum HID usage items from 20 to 32 (required by Air Mouse) {GitHub#257}
* Multi HID Emu: Added MOUSE_ACPAN to programmatically perform horizontal scroll {GitHub#243}
* XB1 Driver: Added support to SYNC button, temporarily mapped to BUTTON_18 (final will be BUTTON_25)

2020-01-25, Ver 1.06-3
* PS4 Emulator: Normalize LEDs values only if received packet explicity has LED data (for Astro C40)

2020-01-24, Ver 1.06-2
* XB1 Driver: Fixed Xbox button not working on Xbox Adaptive controllers over Bluetooth {GitHub#253}
* USB HOST: Fix bug on preventing alternate interface settings to instantiate the same USB endpoint
* USB HOST: Avoid use same USB uFrame for both INT and ISO transactions (fix Astro C40 wired/wireless)
* PS4 Emulator: Apply the customizable output polling rate only for controller states HID interface

2020-01-18, Ver 1.06-1
* XB1 Driver: Fix bug of requests been sent to headset interface even if not present on controller
* PS4 Driver: Fix potential deadlock on the initialization procedure of third-party controllers
* PROG BLE: Fix bug where disconnection from other BT ports were being processed by PROG BLE port
* XB1 Driver: Fixed button mapping for updated Xbox Adaptive controllers over Bluetooth {GitHub#253}
* XB1 and XB1WRC Driver: Disabled support for controller LED brightness and blinking control {GitHub#252}

2019-11-20, Ver 1.06
* Bluetooth Module: Optimizations and improvements of device pairing procedures (dev type detection)
* PS4 Emulator: Added support for iOS 13 over Bluetooth, emulating a DualShock 4 controller
* XB1 Driver: Included ID 045E:0B00 to be recognized as XB1 Elite S2 controller (paddles support)
* XB1 Driver: Added detection of the Xbox Elite S2 controller for Bluetooth pairing (ID 045E:0B05)
* XB1 Driver: Fixed button mapping in Bluetooth connection for controllers with ID 045E:02FD
* XB1WRC Driver: Added support for XB1 controllers updated with the latest firmware {GitHub#241}
* XB1WRC Driver: Included ID 045E:0B00 to be recognized as XB1 Elite S2 controller (paddles support)
* XB1WRC Driver: Added support for console authentication using Elite S2 and updated S controllers
* G920 Emulator: Fixed bug where the console auth packets were being forward to wrong EP {GitHub#244}
* GPC VM: Added push_to_talk() (opcode PTT) for enable/disable the controller headset mic
* PS4 Driver: Added support for PDP Victrix Pro FS with Touch Pad for PS4 {GitHub#242}
* PS4 Driver: Added support for QANBA Drone Arcade Joystick for PS4 {GitHub#246}

2019-09-18, Ver 1.05-1
* XB1 and XB1WRC Drivers: Synchronization of FFB packets to 16ms USB frame, while keeping others at 4ms

2019-09-15, Ver 1.05
* USB Output: Synchronization of output packets with the USB frame corresponding to the USB polling rate
* USB Output: Output LED turns orange to indicate buffering (not synced) is being used for output packets
* USB Host: Removed 2ms polling cap for HID devices, mice are now polled at 1000Hz {GitHub#220}
* VM: New inputs from devices are processed all together (at 500us mark), instead of one at a time
* PS4 Driver: Send requests to correct interface as specified in the controller's descriptors {GitHub#208,210}
* XB1 Driver: Fixed bug where isochronous and bulk interfaces were being polled even if non existent
* All Drivers: Added support for customizable input polling rates: 1000Hz, 500Hz, 250Hz and 125Hz
* PS4 Emu: Check the report ID for Rumble and LED data packets (not assuming all OUT packets are)
* PS4 Driver: Removed Thrustmaster Racing Wheel (044F:B66D) to use PS4 driver, instead use HID {GitHub#230}
* VM: Improvements on the procedures executed by port_connect() {GitHub#231}
* Switch Emu: Added uuid for devices without BT Module (for multiple Titan Twos simultaneously) {GitHub#234}
* USB Output: Prevent alternate interface settings to configure the same USB endpoint multiple times
* BT Stack: Previously registered BTM address is erased if there is no BT module installed anymore
* BT Stack: Synchronization of I/O packets transmission with the protocol maximum Bluetooth polling rate
* USB Host: Synchronization of I/O packets with the USB frame corresponding to the USB polling rate

2019-08-28, Ver 1.04-1
* USB Output: Disabled hardware double buffering of output packets for even better response time

2019-08-26, Ver 1.04
* PS4 Driver: Added support for Nacon Revolution Unlimited Pro Controller (wired mode) {GitHub#226}
* Multi HID Emu: Changed the USB Configuration to self-powered, to allow usage with iOS devices {GitHub#223}
* USB Host: Ensure all scheduled USB transactions are deleted when a device is removed from the USB port
* USB Host: Added small delay before start polling USB devices for better emulate consoles behavior {GitHub#216,224}
* XB1 Driver: Corrected detection of the Xbox Adaptive Controller for Bluetooth pairing {GitHub#225}

2019-06-16, Ver 1.03
* PS4 Driver: Added support for Hori Onyx PS4 Controller {GitHub#206}
* XB1 Driver: Improved detection of the USB interfaces (HID, Audio). Fix 3P compatibility issues {GitHub#202}
* XB1WRC Driver: Added delay on the GUI ACK packet to fix issue where the GUI button becomes unresponsive {GitHub#202}
* Added configuration to disable memory slot selection using the plugged controller {GitHub#190}
* Bluetooth Module: Reverted page scan parameters made on v1.01; page scan mode changed to interlaced {GitHub#209}
* USB HOST: Prevent alternate interface settings to instantiate the same USB endpoint {GitHub#207}

2019-04-18, Ver 1.02
* PS4 Driver: Added support for Nacon Revolution Unlimited Pro Wireless Dongle

2019-04-18, Ver 1.01
* Bluetooth Module: Changed page scan parameters for faster connection of a second BT controller
* Fetch HID Descriptors command returns the first 2s of the USB data traffic if output is connected

2019-04-07, Ver 1.00 [FIRST STABLE RELEASE]
* PROG: Additional improvements on the PROG interface API for USB and BLE
* Added procedures to keep data synced when the device have both USB and BLE Prog connections
* VM: Added script reset command to optimize BLE data traffic (not requiring reload the bytecode)
* Bluetooth Module: Change link policy only for PS4 console connection (fix Joycon disconnection)
* Added support for DS4 Bluetooth connection with PlayStation TV (DS4 over BT required) {GitHub#199}
* PS4 Driver: Added support for ASTRO C40 (9886:0025)

2019-03-17, Ver 1.00RC-6
* PROG BLE: Advertising data updated for better represent the available capabilities
* USB Controller: Adjusted the REGISTERS access timing due the -O2 compiler optimization

2019-03-16, Ver 1.00RC-5
* PS4 Driver: Added support for Thrustmaster Racing Wheel FFB in PS4 mode (044F:B66D)
* PROG: Full refactoring and abstraction of the PROG interface API (support for USB and BLE)
* PROG: Implemented BLE interface layer for program/configure via Smartphones/Tablets (iOS/Android)
* USB Host: Fix the status LED of an input port occasionally staying RED after device unplugging
* USB Controller: Adjusted the data bus access timing due the -O2 compiler optimization on 0.98B-80

2019-03-11, Ver 1.00RC-1
* PS4 Emulator: Fix headset connection not being reported to console when in full-passthru mode

2019-03-10, Ver 1.00RC
* Enable Bluetooth pairing over USB also when the output protocol set to Bluetooth (SWITCH, PS3, PS4)
* PS4 Emulator: Implemented bluetooth pairing over USB (output protocol must be set to Bluetooth PS4)
* Bluetooth Sevices: Implemented SDP requests and responses needed for PlayStation 4 Bluetooth connection
* Bluetooth Module: Several configurations and optimizations needed to support connection with PlayStation 4
* Added support for Bluetooth connection with PlayStation 4 (DS4 over BT required; Speaker OK, Headset NYET)
* GPC VM: Fixed issue with led_vmset() when tring to configure permanent light {GitHub#170}
* XB1 Driver: Added Bluetooth support for Xbox Adaptive controller (auth with XB1 not possible over BT) {GitHub#191}

2019-03-05, Ver 0.98B-80
* Bluetooth Module: Bug fix and optimizations on the Bluetooth Module RX bus line
* Many improvements on the Bluetooth pairing procedures and SDP requests/responses
* Added support for Nintendo Wii U / Wii consoles (Bluetooth connection, emulating Wii U Pro controller)
* Firmware Source Code: Reverted optimization to -O2 (-Os 'Optimize for Size' was causing issues)

2019-01-24, Ver 0.98B-79
* XB1 Driver and Emu: Added support for controller LED brightness and blinking control
* XB1 Driver and Emu: Added support (handling) for some XB1 uncommon protocol packets types
* Added support for Logitech G920-XB1 output protocol (no FFB yet)

2018-12-21, Ver 0.98B-78
* HID Driver: Increased number maximum of supported HID collections from 10 to 12 (required by MS Intellimouse)

2018-12-18, Ver 0.98B-77
* PS4 Driver: Minor improvements on initialization of third-party PS4 controllers when not in passthru mode
* Bluetooth Module: Force 5ms reset. The datasheet indicates 5ms is required to reset the module {GitHub#158}
* HID Driver: Increased number maximum of supported HID interfaces from 4 to 5 (required by Wooting keyboard)
* HID Driver: Performance optimizations of processes that scans the active HID interfaces

2018-12-17, Ver 0.98B-76
* PS4 Driver: Added support for Razer Raiju Ultimate V2 (1532:1007)

2018-12-14, Ver 0.98B-75
* GPC VM: Added script_load() (opcode SCPL) to load a gbc file stored on the SD-Card /TITAN TWO/MEMSLOT/
* USB PROG: Reverted changes made on 0.98B-74 related with host mode (OTG)

2018-12-13, Ver 0.98B-74
* USB PROG: Increased transfer buffers while in host mode (OTG) for better performance
* USB PROG: Report to Gtuner IV the reason of (what caused) the last device reset
* Normalization: Battery status report now considers the battery status in addition to battery level
* USB Host: If pending USB transaction is recovered then force resync with USB IC {related GitHub#154,164}

2018-12-03, Ver 0.98B-72
* XB1WRC Driver: Implemented initialization timeout and warning/error messages to Gtuner IV
* USB HOST: Better detection of XB360 controllers to prevent HID devices to be detected as XB360 {GitHub#175}
* The display will blink the middle segment to indicate low battery level of controller(s) {GitHub#160}

2018-12-01, Ver 0.98B-70
* GPC VM: Added mxyconverter_hoffset() (opcode MXYH) for horizontal anti-recoil scripting with mouse
* GPC VM: Fixed mouse_passthru() data overwrite issue when exists more than one mouse interface {GitHub#174}

2018-11-18, Ver 0.98B-68
* PS4 Driver: Added support for Thrustmaster T.Flight Hotas 4 {GitHub#163}
* Wii Driver: Fixed inconsistent reading of battery level {GitHub#169}
* Added support for "turn off device at port x" command from Gtuner IV (Device Monitor)
* GPC VM: macro_rec() function now includes the idle time at the end of the recording {GitHub#171}
* USB HOST: Improvements on support of USB low-speed devices (1.5 Mbps) such as keyboards {GitHub#168}

2018-10-16, Ver 0.98B-66
* PS4 Driver: Added support for PS VR Aim Controller
* PS4 Driver: Added support for Hori Real Arcade Pro (RAP) M4
* PS4 Driver: Added support for Razer Raiju Ultimate
* PS4 Driver: Added support for Scuff Vantage PS4
* PS4 Driver: Fixed issue with battery level below 11% {GitHub#162}
* Switch Emu: Applied changes needed related with controller update (Nintendo Switch system ver 6.0)
* HID Driver: Calling mxyconverter_voffset() triggers reevaluation of mouse input {GitHub#166}
* USB Host: Improvements on implemented measurements to recover pending USB transactions {GitHub#154,164}

2018-09-06, Ver 0.98B-64
* HID Driver: Configuration packets can now also be send via out endpoint (in addition to control endpoint)
* HID Driver: Detection of compatible steering wheels and set the protocol designation to PROTOCOL_WHEEL
* Converted the RSA algorithm (RSP Signing) to a library to be used for multiple emulators
* Added support for Logitech G29-PS4 output protocol (wheel crossover, all features supported) {GitHub#146}

2018-08-27, Ver 0.98B-62
* XB1 Driver: Added full support for the Xbox Adaptive Controller
* Changed the Bluetooth output protocol ID indexing to allow sequential inclusion of new USB protocols

2018-08-11, Ver 0.98B-61
* Fixed use of deallocated memory during enumeration of newly pluged USB devices (potential memory corruption)
* PS4 Driver: Added support for Nacon PS4 Compact Controller
* PS4 Driver: Added support for Hori Border Break PS4 Controller

2018-07-19, Ver 0.98B-60
* GHID Driver: Added support for Generic HID devices (Gamepads and Joysticks) to Gtuner's KMG Capture

2018-07-07, Ver 0.98B-58
* GPC VM: Added mxyconverter_voffset() (opcode MXYV) for anti-recoil scripting with mouse

2018-07-06, Ver 0.98B-56
* XB1 and XB1WRC Drivers: Added support for RT and LT digital inputs {GitHub#153}
* USB Host: Added measurements to recover pending ATL or INT transactions to prevent device disconnections {GitHub#152}

2018-06-27, Ver 0.98B-55
* Switch Driver and Emu: Changes on battery level normalization to better reflect the battery state
* GPC VM: Added macro_rec() function (opcode MREC) to record the device outputs to a macro file

2018-06-20, Ver 0.98B-53
* Turn-Off: Better detection of console power-on for Xbox One to avoid false turn-on
* HID Parser: Empirical approach to fix min/max values of bad formatted HID descriptors {GitHub#145}
* HID Parser: Added support for devices with large set of Report IDs {GitHub#140}
* Fixed memory slot recall with power off the device with the console {GitHub#149}

2018-06-19, Ver 0.98B-52
* PS4 Emu: Detect computer connection to enable PS4 Remote Play without DS4 V2 plugged {GitHub#143}

2018-06-13, Ver 0.98B-50
* Performance and size optimizations on all emulators in not passthru mode (standalone)
* PS3 Driver and Emu: Removed passthru mode as it is not needed for PlayStation 3
* XB1 and XB1WRC Drivers: Improvements on how FFB data packets are handled {GitHub#137,138}
* Micro-SD: Better sd-card formatting and initialization procedures, fix all "FS Error (*)"
* PS3 Driver and Emu: Changes on battery level normalization to better reflect the battery state {GitHub#136}
* Switch Emu: Added support for Nintendo Switch Pro controller with Steam {GitHub#141}
* Implemented power off the device with the console if the corresponding setting is enabled

2018-05-04, Ver 0.98B-46
* PS4 Driver: Added support for HORI Real Arcade Pro.4 (PS4) {GitHub#139}
* GPC VM: Added support for new GPC2 builtin function: power_source()

2018-04-17, Ver 0.98B-45
* BT Stack: Fixed packet formating of Extended Inquiry Response Command
* BT Stack: Disabled Classic discoverable mode while in pairing mode
* XB1WRC Driver: Added support for the new Xbox Wireless Adapter {GitHub#92}

2018-04-03, Ver 0.98B-43
* BT Stack: Make the Titan Two discoverable while in pairing mode
* USB Output: Fix signaling of short packet on control endpoint when the size is multiple of bMaxPacketSize0 {GitHub#82}
* GPC VM: Fixed issue where the controller LEDs were not being resetted upon script unload

2018-03-22, Ver 0.98B-42
* HID Driver: Added support for keyboards with bitmask key reports (i.e. Corsair) {GitHub#125}

2018-03-21, Ver 0.98B-40
* XB1WRC Driver: Force controller disconnection if ID is different from 1 (only controller 1 can be connected) {GitHub#129}

2018-03-17, Ver 0.98B-38
* All Emulators: Added support for customizable output polling rates: 1000HZ, 500Hz, 250Hz and 125Hz

2018-03-16, Ver 0.98B-36
* Switch Emu: Added support for Bluetooth connection changes on Nintendo Switch version 5.0.0 from March 12, 2018
* HID Driver: Fix mouse wheel event in passthrought mode longer than via direct USB {GitHub#121}

2018-03-15, Ver 0.98B-35
* XB1WRC Driver: Reversed the flow control changes made in previous update (0.98B-34)
* USB Host: Reapplied standard polling on ATL pipes reversed on previous update (0.98B-26)
* USB Host: Improvements related with ATL (Bulk) transactions (aiming Xbox Wireless Adapter)
* XB1 Driver: Removed hard coded polling rate of 8 milliseconds
* PS4 Driver: Removed hard coded polling rate of 4 milliseconds

2018-03-13, Ver 0.98B-34
* XB1WRC Driver: Added flow control checking to prevent disconnection due overflow of rumble packets {GitHub#124}
* Switch Emu: Added support for the changes on Nintendo Switch version 5.0.0 from March 12, 2018
* PS4 Driver: Added support for Razer Panthera Fight Stick (PS4) {GitHub#122}

2018-03-10, Ver 0.98B-32
* HID Emu: Better approach to ensure the disable of the Joystick interface when the corresponding option is set
* Mouse XY Translation: Added filter to suppress movement in one axis if the other is more than 32 times greater
* HID Driver: Added ability to disable certain interface(s) via HID configuration file
* HID Driver: Use the default HID usage mapping if the provided HID configuration file does not contains one

2018-03-08, Ver 0.98B-30
* Controller Remapper: Added option to disable input(s) from controllers using Input Translator {GitHub#118,119}
* GPC VM: Added reampper_disable() builtin function to disable a controller input

2018-03-07, Ver 0.98B-26
* PS4 Driver: Workaround to improve connectivity with XIM4 when using with PlayStation 4
* USB Host: Reversed polling on ATL pipes to 1ms for better compatibility with Xbox Wireless Adapter

2018-03-06, Ver 0.98B-25
* BT Stack: The OUTPUT LED is now cleared after unsuccessful output connection
* HID Driver: Added ability to send LED/FFB output packets via USB control transfers (EP0)
* USB Host: Many optimizations aiming improve connection with multiple input devices

2018-03-02, Ver 0.98B-22
* USB Host: Fixed issue where, under certain circumstances, connected devices were stopping to be polled

2018-02-26, Ver 0.98B-18
* USB Host: Moved some tasks from main loop to interrupt routine (fix disconnections)
* USB Host: Improvements related to headset support (speaker and mic) under high CPU load

2018-02-23, Ver 0.98B-17
* USB Host: More improvements related with isochronous pipes (headset, audio data packets)

2018-02-21, Ver 0.98B-16
* USB Host: Fix XB1, and potentially PS4, controller disconnection when headset is plugged {GitHub#115}

2018-02-20, Ver 0.98B-15
* Switch Emu: Fixed battery level reporting
* Switch Emu: Fixed bug in the Bluetooth pairing with Nintendo Switch console
* Switch Emu: Added Bluetooth connection to Nintendo Switch console (Output Protocol: Bluetooth Nintendo Switch)
* HID Driver: Improvements in order to keep the mouse sensitivity the same independently of the polling rate
* HID Driver: Upon G25 detection, use the command suggested in the Logitech driver manual to put the G25 in native mode {GitHub#112}
* BT Stack: Bigger DMA buffer to avoid overflow on receiving data during long operations (i.e. updating/loading slots) {GitHub#114,91}
* Fixed bug where the last inputs sent by the controller remains active after controller disconnection {GitHub#113}
* HID Driver: Added support for dynamic Hat Switch values range {GitHub#110}
* PS4 Driver: Added support for Mad Catz FightPad PRO {GitHub#109}
* BT Stack: Press the Titan Two UP button for 2.5 seconds to enter in Bluetooth pairing mode for 20 seconds {GitHub#105}
* GPC VM: Added key_get() and mouse_get() builtin functions (opcode codes KSGT and MSGT); previous key_get() renamed to key_check()

2018-02-10, Ver 0.98B-12
* Mouse XY Translation: Changes to make deadzone independent of sensitivity and Y/X ratio parameters

2018-02-05, Ver 0.98B-11
* GHID Driver: KM Capture improvements related with Mouse XY Translation changes of update 0.98B-10

2018-02-02, Ver 0.98B-10
* Disabled the clock of all unused modules from the microcontroller to reduce power consumption (~10mA)
* Switch Emu: Implemented Bluetooth auto pairing with Switch console (if BT Module is present)
* The OUTPUT LED now reflects the status of the Bluetooth output connection (green == connected, red == error)
* Mouse XY Translation: Improvements on the mouse XY conversion algorithm
* Improvements on the RSA algorithm to reduce CPU load while processing the signing operation

2018-01-27, Ver 0.98B-8
* PS4 Driver: Added support for Hori MINI 4 Gamepad
* PS4 Driver: Added support for Hori Slime Controller
* PS4 Driver: Added support for ZeroPlus Emio Elite Controller
* Mouse XY Translation: Added Mouse DPI configuration to normalize the sensitivity across different mice models
* XB1 Driver (BT): Fixed overflow in the normalization of analog stick values {GitHub#102}
* Switch Driver: Added support for Joy-Cons (Left and Right) over Bluetooth {GitHub#94}

2018-01-25, Ver 0.98B-5
* USB PROG: Increased interrupt priority while in host mode (OTG) for better performance with high polling rate devices
* BT Stack: Fixed connection issue with PS3 Slim and PS3 Super Slim models (Output Protocol: Bluetooth PlayStation 3)
* PS4 Driver: Added support for Hori Real Arcade Pro (RAP) N4 {GitHub#95}
* Added support for Steam Controller (wired and wireless; fully working, including motion sensors and rumble) {GitHub#30}

2018-01-17, Ver 0.98B-2
* Added configuration to disable Joystick from Multi Interface HID output
* Bluetooth Module: bug fix and improvements for the new revision of the module (B1-Rev2, production batch)

2017-12-12, Ver 0.98B-1
* XB360 Driver: When in Full-Passthru mode, "initialization done" is flagged when the host sends "Set Configuration" {GitHub#54}

2017-12-11, Ver 0.98B
* GPC VM: Added MREPORT_UPDATED identifier to be used with mouse_status() for check if a new mouse report was received
* Added "USB Multi Interface HID" emulator to output as Keyboard, Mouse and Gamepad/Joystick {GitHub#80}
* GPC VM: New functions to support the HID output: key_set(), key_passthru(), mouse_set(), mouse_passthru()
* Finished implementation of the built-in functions port_connect() and port_disconnect()

2017-12-07, Ver 0.97B-8
* Switch Emu: Detect console turnoff/sleep and, if applicable, flag all connected controllers to also turnoff
* USB Output: Improvements on the algorithm that generates and delivers data reports to the gaming system
* BT Output: Similar improvements as above, but for Bluetooth output
* USB Host: Fix mic audio issues by requesting isochronous data earlier than to what is specified by bInterval {GitHub#74}

2017-12-04, Ver 0.97B-7
* PS4 Driver: Added support for DualShock 4 USB Wireless Adaptor

2017-12-01, Ver 0.97B-5
* Switch Driver: Added flow control checking to respect the bInterval parameter for HD rumble packets
* GPC VM: Added type casting operations between signed and unsigned integers (opcodes UTOB, UTOW, ITOB, ITOW)
* HID Driver: Set Logitech wheels to native mode only for supported models, otherwise keep the wheel in compatibility mode {GitHub#83}

2017-11-24, Ver 0.97B-4
* Switch Emu and Driver: Added support for Nintendo Switch HD Rumble
* Switch Emu: Fix motion sensor calibration parameters (horizontal offsets) {GitHub#85}
* HID Driver: Optimizations on the pooling mechanism to better handle devices with high pooling rate
* XB1 Driver: Force 8ms polling interval to not trigger XIM4 purple lights (when using with Xbox One)

2017-11-20, Ver 0.97B-2
* PS3 Emu: Added compatibility with PlayStation TV
* PS4 Driver: Added support for Nacon Revolution Pro 2
* Reverted the changes on brown-out voltage detector (internal) plus adjustments on the brown-out 3.3V (external)
* Mouse XY Translation: Improvements on the acquiring algorithm of the mouse movement value (smooth as butter now :)

2017-11-06, Ver 0.97B-1
* Adjustments on the brown-out voltage detector to improve immunity to power transients

2017-10-31, Ver 0.97B
* Improvements and optimization on the Bluetooth Module high speed bus driver
* PS4 Driver: Added Bluetooth support for PS4 controllers, including PS4 console authentication
* PS4 Emu: Implemented partial passthru mode for PS4 controllers connected wirelessly to the Titan Two
* XB1 Driver: Added Bluetooth support for Xbox One S controllers (auth with XB1 console not possible over BT)
* Switch Driver: Added Bluetooth support for Nintendo Switch Pro controllers (first time pairing via Gtuner command required)
* Wii Driver: Added support for Wiimote, Wiimote Plus, Wii U Pro, Nunchuk, Classic Controller and Classic Controller Pro
* Note: Bluetooth support for PS3 controller, Navigator and PS3 console were already implemented for evalutation of the BT Module
* Changed accel and gyro coordinate system to the same coordinate convention adopted on the others multi dimensional inputs
* XB360 Emu: Changes on "initialization done" requirements to allow operation on a wide range of systems {GitHub#75}

2017-10-19, Ver 0.96B
* Added support for "disconnect device at port x" command from Gtuner IV (Device Monitor)
* BT Stack: Bluetooth service handlers completely refactored (SDP, L2CAP)
* DS4 Driver: Automatic pair the controller over USB to be used wirelessly with the Titan Two Bluetooth Module
* PS4 Emu: Re-written to emulate all available PS4 controller features, including audio interface
* DS4 Driver: Enhancements associate with the new PS4 Emulator and operation in "Full Passthru" mode
* DS4 Driver: Added support for PS4 third-party controller: ZEROPLUS P4 Wired Gamepad
* PS4 Emu: Fixed issue where switching account on PS4 with PS4 Pro controller makes the device unresponsive {GitHub#77}
* PS3 Emu: Added support for PlayStation 2 compatibility mode on PS3 {GitHub#75}

2017-10-04, Ver 0.95B-1
* GPC VM: Fix issue with pmem_save() not storing the persistent data at the specified memory slot {GtunerIV GitHub#175}
* PS4 Emu and Driver: Fix "leak" of rumble and LED status packets to the controller when in full pass-thru mode {GitHub#70}
* Micro-SD Card: Changed formatting parameters to check if helps with formatting Micro-SD cards presenting FS Error 1 or 15

2017-09-17, Ver 0.95B
* HID Driver: optimizations on the HID Parser data structure (fix potential crash with vendor reports)
* Added support for Nintendo Switch Pro controller (wired mode; fully working, including motion sensors and rumble*)
* USB Output: Improved detection of connected console/system (USB AUTOMATIC MODE), added Nintendo Switch
* Added support for Nintendo Switch console (wired mode; TODO: decode HD Rumble packet) {GitHub#55}
* PS4 Driver and Emulator: Touch-Click swapped with Share button (BUTTON_2 <> BUTTON_18) for better crossover/gaming consistency

2017-09-03, Ver 0.94B-2
* PS3 Driver: Send LED status report using interrupt transfers, instead of control transfers (fix E4 error) {GitHub#68}

2017-08-14, Ver 0.94B-1
* USB Host: Changed timeout for CONTROL transfers from 256ms to 512ms (USB Specification determines the device must reply within 500ms)
* HID Driver: the HID configuration files can now generate output reports to set LED status of HID devices

2017-08-10, Ver 0.94B
* Input Translator: Remappings can now be configured to apply only to specific controller(s), based on the input port {GitHub#62}
* GPC VM: Added remapper_mask() builtin function (opcode RMSK) and updated remapper() to the new Button Remapper format
* HID Driver: Re-written to support per device configuration file with init script, usage map customization, vendor reports and output reports (FFB)
* FS Engine: Better handling of concurrent file access on the Micro SD-Card
* Logitech Wheels: Device initialization to operate in native mode (Driving Force Pro, G25 Racing Wheel, G27 Racing Wheel, Driving Force GT)
* USB Host: Reset error counter for the input port when new device is connected (related with enumeration of problematic devices from 0.91B)
* Several improvements and optimizations for code re-use and reduced binary code footprint
* Added support for Venom X. Remarks: set Venom X to PS mode without controller, the auth controller -if needed- must be connected on Titan Two {GitHub#52}
* Improvement on the connectivity with XIM4 were noticed since firmware 0.92B, therefore related issues on GitHub were closed {GitHub#40,50,56}

2017-08-02, Ver 0.93B-8
* Delayed memory slot recall to ensure all subsystems are initialized and running, otherwise the bytecode may not load properly

2017-07-31, Ver 0.93B
* USB Host: Fixed bug on CONTROL transfers timeout were being triggered by BULK transfers
* Added support for Xbox Wireless Adapter: Working with all XB1 controllers (Original, C, Elite and S models) {GitHub#24}
* XB1WRC Driver: Support for wireless syncing of controllers (pressing the side button on the Xbox Wireless Adapter)
* XB1 Driver: Automatic sync the controller over USB to be used wirelessly with the Xbox One Wireless Adapter
* XB1 Emu + XB1WRC Driver: Partial passthru mode for console authentication when using the Xbox Wireless Adapter

2017-07-14, Ver 0.92B
* BT Stack: Added support for LE (Low Energy) mode, required for the Xbox One S controller and future iOS App
* BT Stack: Several optimizations and removal of unnecessary services such as rfcomm, bnep, pan, etc
* BT Stack: Put the Bluetooth module in pairing mode for 20 seconds when receiving the command "Pair Controller Wirelessly" from Gtuner IV
* BT Stack: Permanent storage of the pairing link-keys on SD-Card
* Press and hold the DOWN button before power up the Titan Two to force PROG to full-speed mode (12Mbps)

2017-07-06, Ver 0.91B
* Optimizations on the bus timing between the uC and USB controller, fixing issue with some device combinations causing unresponsiveness {GitHub#53}
* USB HOST: Retry enumerate problematic devices a limited number of times, then giveup to avoid interference on the other connected devices
* XB1 Emulator: Fix bug where the Titan Two was waking up the console right after the Xbox One is turned off by the user
* HID Driver: Dynamic configuration of HID interfaces, including multiple of same kind (before it was hard coded for single of each G, K and M) {GitHub#57,58}
* HID Driver: Full parsing of the HID descriptor and HID report of keyboards, not relying anymore on the standardized boot mode format
* HID Driver: Better normalization and mapping of Generic HID inputs (gaming devices) to the GPC standardized data input structure

2017-06-29, Ver 0.90B-2
* Press and hold the DOWN button before power up the Titan Two for NOT recall the last used memory slot

2017-06-29, Ver 0.90B-1
* GPC VM: Added opcodes MOD!, DIV! and SR! for correct operation with signed integers
* GPC VM: Fix bug on converting negative values from fix32 to integer (opcode FTOI)

2017-06-28, Ver 0.90B
* Input Translator: Support to disable the default keyboard and/or mouse mapping via script
* Mouse XY Translation: Added support for diagonal dampening correction

2017-06-14, Ver 0.89B-81
* USB HOST: Ignore the device class defined on device descriptor and check for supported classes at interface level

2017-05-24, Ver 0.89B
* Macros: Implemented of SD-Card operations for binary macro files (list, store, delete)
* Macros: Implemented binary macro playback engine with support for interpolation and time drift correction
* GPC VM: Added macro_run(), macro_time() and macro_stop() builtin functions (opcodes MRUN, MRTM and MSTP)
* USB PROG API: Back-end support for Test and Debug macro files

2017-05-17, Ver 0.88B-53
* PS4 Emulator: Fix reboot loop due access to invalid pointer when having an empty sd-card inserted.

2017-05-15, Ver 0.88B-36
* Firmware source code compilation: IDE updated to the newer Atmel Studio 7
* HID Driver: Force HID input devices of type "keyboard" to operate on the boot interface {GitHub#49}
* INPUT-D: Changed b_size for USB interrupt endpoint IN to report size, instead of MaxPacketSize

2017-05-04, Ver 0.88B-16
* Fixed E4 error due missing of deallocation of used memory in the RSASSA-PSS signing algorithm
* The status of the INPUT-D port is now reflected on the device's display (waiting animation <-> mem slot number)

2017-05-03, Ver 0.88B
* Firmware source code compilation: Changed compiler optimization to -Os (Optimize for Size)
* Added support for SHA-256 hash calculation and RSASSA-PSS signing algorithm
* Fix INPUT-D, working for HID devices (keyboard, mouse, joystick, fightstick, steering wheel, etc) {GitHub#43}
* HID Driver: Added support for Keyboard/Mouse on generic HID interfaces (other than the regular Boot interface) {GitHub#48}

2017-04-07, Ver 0.87B
* USB HOST: Support for USB low-speed devices (1.5 Mbit/s), such as keyboards, mice, PS2 adapters, foot-switches, etc
* USB HOST: Fixed several communication issues with Xbox One S controller, including inconsistent FFB and headset noise {GitHub#44}
* PS4 Driver: Fixed battery charge level report of third-party wired controllers {GitHub#45}
* Fetch Device Descriptors: Retry get descriptor if the device stalls the control endpoint, or if error occurred

2017-03-31, Ver 0.86B
* Added API to provide HID descriptors of a device connected to the Titan Two

2017-03-20, Ver 0.85B-66
* Optimizations to improve the data flow of mic audio signal from controller to console
* Mouse XY Translation: Improvement of the algorithm that determines the mouse movement/speed value

2017-03-17, Ver 0.85B
* Mouse XY Translation + Normalization: Apply both axis value if any of the axis has value
* Mouse XY Translation: Calculation of mouse movement value is now based on traveled distance over time

2017-03-13, Ver 0.84B-239
* Mouse XY Translation: Fix value overflow with deadzone shape smaller than circle
* Fix32 MathLib: optimizations on pow() algorithm (used by Mouse XY Translator)
* GPC VM + HID Driver: Fix HID report ID check for key_status() and key_get() build-in functions

2017-03-13, Ver 0.84B
* Added support for "load memory slot X" command from Gtuner IV
* GPC VM: Added pmem_load() and pmem_save() with argument (opcodes PMLN and PMSN)
* Mouse XY Translation: ensure persistence of mouse wheel forward/backward events for around 64ms
* Mouse XY Translation: tweaks to improve mouse micro-movements to be registered by the console
* Mouse XY Translation: fixed indexing issue when mouse value falls outside the conversion curve range
* Keyboard Mapping: Allow single key to be mapped to multiple controller buttons, stick, sensors, etc
* HID Driver: Fix HID report ID check for keyboards and keyboard like devices (footswitch compatibility)
* USB PROG: Fix error code 2 with Gtuner IV when unplug/plug the device while still powered
* SD-CARD API: Disabled support for SDIO (not needed by the Titan Two)
* PROG Interface: Enable double-buffer for USB transfers (increase data bandwidth, required when using "KM Capture")
* PS4 Driver: Fix synchronization of lightbar color when initializing in full-passthru mode
* PS3 Emulator: Fix synchronization of Player LEDs when initializing in full-passthru mode
* USB HOST: Fixed occasional sound distortion on isochronous pipe, most noticable when using XB1 controller with stereo headsets

2017-02-22, Ver 0.83B-222
* Mouse XY Translation: Deadzone is now processed last (dM -> [Sensitivity + YXRatio] -> CC -> DZ)

2017-02-20, Ver 0.83B
* Added support for RAZER RAIJU PS4 controller
* HID Driver: Added support for HID mice
* HID Driver: Added support for user configurable mouse mapping
* Input Translator: Fix bug preventing GIT file to load in some circumstances
* HID Parser: Fix bug on HID Descriptor parsing at "Usage List" consumption for OUTPUT and FEATURE
* HID Driver: Fix issue with HID report allocation when USB device has multiple interfaces
* HID Driver: Poll only interfaces with supported HID Report
* HID Driver: Added support for user configurable mouse XY translation
* GPC VM: Added pow() function (opcodes POW and POWF)
* GPC VM: Added mousemapping() and mousemapping_reset() functions (opcodes MMAP and MRST)
* GPC VM: Added mxyconverter() and mxyconverter_reset() functions (opcodes MXYC and MXYR)
* GPC VM: Added mouse_status() function (opcode MSTS)
* Added support for "Virtual HID Devices" through PROG interface (i.e. play using computer's Keyboard and Mouse)
* Core: Eliminated chance of concurrent malloc calls -which was causing random resets- when using PROG interface

2017-01-28, Ver 0.82B
* HID Driver: Added support for Keyboard, Keypads and user configurable key mapping
* GPC VM: Added keymapping(), keymapping_reset(), key_status() and key_get() functions
* GPC VM: Clear BOTTOM_DOT, if set, after display_overlay() timeout

2017-01-21, Ver 0.81B
* Added support for Generic HID devices (Gamepads, Joysticks, Steering Wheels, Flightsticks, Fightsticks, etc)
* Added support for several PS4 controllers (HORI FIGHTING STICK 4 MINI, HORI TAC 4 PRO, HORI GRIP TAC 4, NACON REVOLUTION PRO)
* Added support for CTHULHU chip {GitHub#18}

2016-12-22, Ver 0.80B
* USB PROG: Fix Gtuner IV connection error 2 when unplug/plug the device to computer
* USB DEV: Detect PS4 turning off event to interrupt passthru mode, if any

2016-11-22, Ver 0.79B
* GPC VM: if intensity on led_set() is negative, the user defined intensity is used
* Restrict LED and FFB data reports to connected controllers to maximum of 1 per ms
* GPC VM: led_vmget() now returns 0 if led_vmset() was not previously called

2016-11-16, Ver 0.78B
* GPC VM: Added display_overlay() function {GitHub#42}
* GPC VM: Fixed combo_restart causing device reset {GitHub#78}
* GPC VM: Added mslot_get(), mslot_load() and mslot_check() functions {GitHub#75}
* GPC VM: Added port_permit_ffb() function
* Added global option to disable the FFB (vibration) of each input port {GitHub#77}
* Disable watchdog while performing potential time consuming sd-card operations {GitHub#61}
* Revert watchdog timeout back to 500ms
* Skip DS3/DS4 Bluetooth pairing if there is no BT Module present {GitHub#22}
* Added configuration to force USB Prog Interface to full speed (12Mbps)
* Fixed issue with stereo headset on Xbox One controller audio jack
* Force HID Endpoint bInterval for PS4 controllers to 4 (to simulate the PS4 console)

2016-11-06, Ver 0.77B
* First open beta release