# Table of Contents

<div align="left"><figure><img src="/files/DF2BwswDz01FPknxJcUJ" alt="" width="450"><figcaption></figcaption></figure></div>

Here you’ll find everything you need.\
Click any one to get started.

* Table of Contents for the Cronus Zen Guide
  * <i class="fa-file-pdf">:file-pdf:</i> [**Cronus Zen Quick Start Guides (Multilingual)**](/zen/cronus-zen-quick-start-guides)
  * <i class="fa-download">:download:</i> [**Downloads**](/zen/downloads)
  * <i class="fa-file-pen">:file-pen:</i> [**Changelog**](/zen/changelog-26)
* <i class="fa-book-open-reader">:book-open-reader:</i> [**Setup Guides**](/setup-guides/quick-start-guide)
* <i class="fa-discord">:discord:</i> [**Discord Server**](/official-discord-server/discord-server)
* <i class="fa-link">:link:</i> [**Zen Link™**](/zen-link-tm)
* <i class="fa-gamepad-modern">:gamepad-modern:</i> [**Supported Devices**](/supported-devices/ps5)
* <i class="fa-desktop">:desktop:</i> [**Zen Studio**](/zen-studio/overview)
* <i class="fa-computer-mouse">:computer-mouse:</i> [**Mouse & Keyboard**](/mouse-and-keyboard/overview)
* <i class="fa-steering-wheel">:steering-wheel:</i> [**Wheel Mode**](/wheel-mode/ps5setup)
* <i class="fa-question">:question:</i> [**Frequently Asked Questions (FAQ)**](/frequently-asked-questions/zen-studio-wont-open)
* <i class="fa-code">:code:</i> [**GPC Script Guide**](/gpcscripting)


# Cronus Zen Quick Start Guides

These are the official printed Quick Start Guides included with Cronus Zen, available in multiple languages for your convenience.

**All files are in PDF format:**

{% file src="/files/1YOByT3js7U3Nm2oCQPO" %}
:flag\_gb: **English**
{% endfile %}

***

{% file src="/files/9PxQAu7KrvhEUlkzeWee" %}
:flag\_fr: **French**
{% endfile %}

***

{% file src="/files/476pAjvr2MzAVP3qmXQs" %}
:flag\_de: **German**
{% endfile %}

***

{% file src="/files/qrenVenoEcPtzV69PKav" %}
:flag\_it: **Italian**
{% endfile %}

***

{% file src="/files/Dy7tTpmU5cyrC1Fq1lyr" %}
:flag\_br: **Brazilian Portugese**
{% endfile %}

***

{% file src="/files/dcVaF918wP11w70lOR9b" %}
:flag\_es: **Spanish**
{% endfile %}

***


# Downloads

## Zen Studio Live

***

Zen Studio Live (ZSL) is the new web browser-based (Chrome browser recommended); everything included; no download required. Most platforms are supported but iOS is not supported. You can visit Zen Studio Live below:

{% embed url="<https://zenstudio.collectivemindsstore.com/>" %}

<https://zenstudio.collectivemindsstore.com/>

{% hint style="danger" %}
Redistribution of this software, in whole or in part, is strictly prohibited.\
Unauthorized copying, sharing, or distribution may result in legal action.
{% endhint %}

## Zen Studio Legacy

***

Legacy version of Zen Studio, maintenance build for older Zen firmware versions; includes the 2.2.12 firmware update tool:

{% file src="/files/dzrUjLV9rlABegg9RutD" %}

{% hint style="danger" %}
Redistribution of this software, in whole or in part, is strictly prohibited.\
Unauthorized copying, sharing, or distribution may result in legal action.
{% endhint %}

## Collective Minds Cronus Zen Web Update Tool

***

Online Firmware Update Tool for Chrome and Edge Browsers

* Compatible with Windows®, macOS®, and Android® (USB OTG required).

<a href="https://firmware.modcentral.ca/" class="button primary">Cronus Web Update Tool</a>

<figure><img src="/files/zVpeifTDptTUTN9NoZLa" alt=""><figcaption><p>Collective Minds Cronus Zen Web Updaet Tool</p></figcaption></figure>

## Cronus Pro *(Discontinued)*

***

Final software release for CronusMAX (discontinued in 2019).

* No further updates will be provided

{% file src="/files/kOkwj2454VvHmEbRStMt" %}

{% hint style="danger" %}
Redistribution of this software, in whole or in part, is strictly prohibited.\
Unauthorized copying, sharing, or distribution may result in legal action.
{% endhint %}


# Changelog (26)

## <mark style="color:$primary;">**Cronus Zen Firmware**</mark>

{% hint style="info" %}

### **v2.3.1 - July 9th** 2026

<mark style="color:purple;">**Fixed**</mark>

Slot 8 readback issue
{% endhint %}

{% hint style="info" %}

### **v2.3.0 - July 2nd** 2026

<mark style="color:blue;">**Added**</mark>

GameSir G7 Pro controller support.

BVARS, giving each slot **1024 extra 16-bit persistent values** for scripts.

High-resolution Mouse Ballistics Curve.

<mark style="color:purple;">**Fixed**</mark>

Improved audio handling.\
Improved Elite Series 2 controller detection.

<mark style="color:green;">**Improved**</mark>

General optimizations and minor bug fixes.
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Updates</mark>

{% hint style="info" %}

## v1.0.6 - July 17th 2026

<mark style="color:blue;">**Added**</mark>

Ternary conditional operator (condition ? a : b) in scripts

GPC2117 error for a ternary missing its :

GPC4032 error when a ternary is used as a standalone Statement

Fix and Fix All buttons in the compiler output panel apply available quick fixes directly

Hovering an enum member or define now shows its resolved value\\

<mark style="color:purple;">**Fixed**</mark>

Saved M\&K profiles now store and restore ballistic curves correctly

Device Settings no longer shifts layout while values load from the Cronus ZEN

Restarting the Cronus ZEN no longer loses settings applied just before the Restart

Incorrect parameter-limit errors on some built-in functions

Fallthrough warning no longer appears on empty switch cases

Find References and symbol highlighting now respect scope and symbol type

Stray text cursor no longer appears over icons and read-only text

<mark style="color:green;">**Improved**</mark>

Firmware update wizard retries a failed update automatically, with the option to cancel while it waits to retry

Device settings changes apply without restarting the Cronus ZEN

Cronus ZEN commands now retry automatically on recoverable communication Errors

Sending a Library script directly to a slot no longer leaves its tab behind after a reload (editing the script keeps it)

Device Management moved into the sidebar Tools Group

General diagnostics, error handling, stability, and reliability
{% endhint %}

{% hint style="info" %}

## v1.0.5 - July 12th 2026

<mark style="color:blue;">**Added**</mark>

Every successful compile now shows slot, stack, and bytecode usage against your Cronus ZEN's maximum limits.

Lightbulb fixes are now driven by the real parser, allowing edits to land precisely without overlaps or duplicate suggestions.

New fixes cover unused declarations, switch fallthrough, assignments inside conditions, unconsumed return values, and single or multi-variable for declarations.

Hover, rename, references, cursor targeting, quickfixes, and the Problems panel now align correctly in scripts containing accents, symbols, or other non-ASCII text.

The bug report dialog can now capture detailed Cronus ZEN traffic for the current session, helping us investigate device-related reports.

<mark style="color:purple;">**Fixed**</mark>

Momentary device-state races no longer cause false "connection lost" disconnects.

The Build button can no longer remain stuck after a failed compile.

Tab menus now target the correct tab, Git files restore using the correct language, close buttons remain visible, and dialogs correctly handle Escape and Enter.

Keyboard shortcuts no longer trigger while typing outside the editor.

Invalid switch-case values no longer disrupt the remaining case labels.

Multiline strings no longer shift diagnostic line numbers.

Outline and analytics panels clear correctly when switching to an empty tab.

Long usernames no longer break profile layouts on the Library page.

<mark style="color:green;">**Improved**</mark>

Script flashing and device reads are now much more reliable when the Cronus ZEN streams live data during an operation, preventing silent timeouts and corrupted reads.

Ctrl+S now detects files changed outside the editor and handles them safely.

Unsaved work is preserved when moving tabs between editor panes.

Workspace saving now recovers gracefully when browser storage fails and flushes when switching away from the tab.

Changes to the auto-save setting now apply immediately without requiring a reload.

Messages for REMAP\_NULL, switch-case traps, memory limits, and other diagnostics are now clearer and more actionable.

Failed compiles now show an accurate summary that resets correctly before the next build.

When a new update becomes available, Zen Studio Live now prompts you to reload instead of failing on stale application files.

Broad reliability improvements across diagnostics, error handling, saving, tabs, and Cronus ZEN communication.
{% endhint %}

{% hint style="info" %}

## v1.0.4 - July 9th 2026

<mark style="color:purple;">**Fixed**</mark>

Fixed Firmware updater getting stuck after downloading the firmware
{% endhint %}

{% hint style="info" %}

## v1.0.3 - July 9th 2026

<mark style="color:purple;">**Fixed**</mark>

Fixed duplicate tabs, cancelled-save tab closing, clipped hover tooltips and suggestions in split view, and a startup crash caused by duplicated tabs.

Compile results now stay with the tab that compiled them, and stale compiles can no longer overwrite another tab’s results.

Diagnostic positions are now correct in scripts containing non-ASCII characters, including accents and emoji.

The upload dialog now shows the correct active file name.

Fixed incorrect slot names in empty-readback errors, Flash All confirmation with no pending changes, and header wrapping.

Fixed live BALC dots, button-label length caps, device-tile layout issues, and label caption clipping.

The PS5 ADT column font size now matches the rest of the monitor.

The downvote tally is now hidden while vote buttons remain available.

Fixed a Script Library upload issue that could occur in Brave.

Improved startup behavior and library loading.

<mark style="color:green;">**Improved**</mark>

GPC3012–GPC3017: const-array narrowing warnings.

2D const-array index, address bounds, and single-bracket access are now validated.

Data-section address arguments are now checked against section size.

Built-in argument limits now error instead of slipping through.

Stray ; expressions now error with Expected expression instead of compiling as 0.

New warnings for zero-folding division/modulo and “glued” negative numbers such as x -1.

Zero-size array aliasing now warns with GPC6031; zero-size arrays without an alias target now error.

Failed addr() and 2D const-array lookups now report diagnostics instead of returning wrong values.

sizeof(image) now returns the element size, 1.

Deeply nested scripts are now caught instead of silently overflowing.

On 16-bit devices, constant math now truncates correctly to match device behavior.

Uppercase 0X hexadecimal notation is now accepted.

Restart your ZEN directly from the app. Zen Studio Live also restarts the device automatically after writing output, PS4, or Remote Play settings.

Flashing and firmware update communication has been reworked to reduce write failures and stalls.

Program is now always available when a connected, supported device is ready.

Capture bindings by pressing a key, mouse button, or controller button on your connected device.

Name mapped buttons inline. Labels save with your profile and .zmk exports.

Exclude specific devices from capture, with quick-add options from the device tiles.

Save, export, download, and profile actions now show confirmation toasts.

Top Scripts on the Home page are now votable, with confirmation before each vote is submitted.

Free-draw strokes are faster and no longer drop pixels during quick movements.

The server status indicator now reflects real request outcomes, reducing false offline or online states.
{% endhint %}

{% hint style="info" %}

## v1.0.2 - July 4th 2026

<mark style="color:blue;">**Added**</mark>

Work with two side-by-side editor panes for easier comparison, editing, and script navigation.

Move tabs freely between editor panes or use the drag-to-dock overlay to split or move a tab.

Tab context menus and editor strip buttons now include split options.

Dropping a file that is already open in the other pane now jumps to that tab instead of opening a duplicate.

Pane layout and split ratio now persist across reloads.

If the built-in firmware updater gives you trouble, a clearly labeled link now takes you to the official online updater after handing your Zen over cleanly.

The connected-device area now shows when newer firmware is available, plus a once-per-session heads-up.

Your M\&K profile and ballistic curves now survive device disconnects. Unsaved changes now trigger a Save / Discard prompt.

**I**f your Zen is already being used by another tab or app, Zen Studio Live now shows a clear **in use elsewhere** state.

<mark style="color:purple;">**Fixed**</mark>

Constants now resolve correctly inside `data()` section values.

Const-array usage is no longer incorrectly reported as unused.

`addr()` on jagged const arrays now resolves element addresses correctly.

Hex escapes from `\x80` to `\xFF` now emit as single bytes.

Enum members and variables now use the correct symbol icons.

<mark style="color:green;">**Improved**</mark>

general editor stability.

workspace-restore reliability.

Cursor detection inside comments and strings is now more accurate.

The updater now handles busy devices, device handoff, disconnects during update, and **Try Again** recovery more reliably.

The success screen now shows the installed version, outdated firmware states show the available update, and rejected updates show the correct reconnect fix.

GitHub sign-in now completes inside its popup instead of reloading the whole app.

Flashing a new script to a slot no longer inherits leftover values from the previous script.

Broad reliability and error-handling improvements across device connections, the Script and GamePack Library, and uploads.

`get_mk` and `set_mk` have been removed and are no longer supported.
{% endhint %}

{% hint style="info" %}

## v1.0.0 - July 2nd 2026

<mark style="color:blue;">**Added**</mark>

Truly cross-platform: Works anywhere a Chromium-based browser runs, including Windows, macOS, Linux, and ChromeOS.

Full Zen device support in the browser: Connect your Zen directly from the page, program slots, use live Device Monitor, configure GamePacks, adjust MK settings, run guided firmware updates, and reconnect automatically.

Fast, modern editor: Snappy code editing and compiling directly in the browser, with built-in Git version control for your scripts.

Built-in OLED Studio: Design 128x64 OLED screens with layers, shapes, text from any font, image import with dithering, and one-click GPC export. This is not available in the desktop app.
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Legacy Updates</mark>

{% hint style="info" %}

## v1.7.0 Build 7 - July 2nd 2026

<mark style="color:blue;">**Added**</mark>

Launcher for Zen Studio Live

<mark style="color:green;">**Improved**</mark>

Disables Programmer and M\&K Tab for firmwares higher than 2.2.14&#x20;
{% endhint %}


# Changelog (25)

## <mark style="color:$primary;">**Cronus Zen Firmware**</mark>

{% hint style="info" %}

### **v2.2.14 - November 5th 2025**

<mark style="color:blue;">**Added**</mark>

ZenLink PS5 Native Mode.

<mark style="color:purple;">**Fixed**</mark>

XB1 haptics functionality.\
XB1 WiFi dongle connectivity issues.

<mark style="color:green;">**Improved**</mark>

PS5 system support.\
General stability and performance.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.12 - June 17th 2025**

<mark style="color:blue;">**Added**</mark>

DS5 haptics translation to rumbles.

WiFi channel support for Zenlink UDP Statistics.

<mark style="color:purple;">**Fixed**</mark>

Factory erase at startup.

DS5 touchpad issues over Bluetooth.

DS5 compatibility with A3 Output Protocol on PS4.

Gamepack flash race condition.

DS5 audio issues in forced PS4 emulation on PC.

DS5 crossover audio on Xbox.

DS4 BT conflict when DS5 in A1.

<mark style="color:green;">**Improved**</mark>

DS5 handling and stability.

Consistent haptics-to-rumbles translation in GPC & Device Monitor.

Haptics to rumbles sent only to cross-gaming pads (XB1/DS4).
{% endhint %}

***

{% hint style="info" %}

## v2.2.11 - April 3rd 2025

<mark style="color:blue;">**Added**</mark>

Zenlink HTTP server support.

<mark style="color:purple;">**Fixed**</mark>

Block haptics when using mouse & keyboard.

Redirect haptics to secondary DualSense/Edge.

<mark style="color:green;">**Improved**</mark>

Various bug fixes and stability improvements.
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Updates</mark>

{% hint style="info" %}

## v1.6.1 Build 82 - November 5th 2025

<mark style="color:blue;">**Added**</mark>

Missing combo\_\* function names as prohibited function names.

<mark style="color:purple;">**Fixed**</mark>

ps5adt list sizeof in compiler.\
Function fall-through issue.\
Find/Replace textboxes.

<mark style="color:green;">**Improved**</mark>

"No device found" dialog now opens online web updater.\
ZenlinkConfigurator now supports dual firmware (Remote Play and PS5 Native Auth) with redesigned wizard.
{% endhint %}

***

{% hint style="info" %}

## v1.6.1 Build 77 - June 17th 2025

<mark style="color:blue;">**Added**</mark>

Zenlink Online Manual link.

sizeof support for uint16, int32, ps5adt, image, string.

DS5 haptics display in Device Monitor.

<mark style="color:purple;">**Fixed**</mark>

Missing DS5 icon in Device Monitor.

combo\_step\_time\_left syntax highlight.

Offsets table for images and strings.

Binary operator precedence.

<mark style="color:green;">**Improved**</mark>

Online Library UI and API.

General UI responsiveness.
{% endhint %}

***

{% hint style="info" %}

## v1.6.1 Build 20 - April 3rd 2025

<mark style="color:purple;">**Fixed**</mark>

Race condition when an outdated gamepack is on flash and no cached data is available.

Loading gamepack PVARs.

Race condition when resetting script PVARs.

Minor bugs.

<mark style="color:green;">**Improved**</mark>

Set default file type to `.zmk` when importing a mouse & keyboard profile.

Removed CmUpdateTool from Tools menu (no longer supported).
{% endhint %}

***

## <mark style="color:$primary;">ZenLink Updates</mark>

{% hint style="info" %}

## v0.9.9.14  - November 5th 2025

<mark style="color:blue;">**Added**</mark>

PS5 Native Mode support.

<mark style="color:green;">**Improved**</mark>

PS5 connectivity and firmware selection handling.\
General bug fixes and performance.\
Fixed issue with incorrect WiFi settings after firmware change.
{% endhint %}


# Changelog (24)

## <mark style="color:$primary;">**Cronus Zen Firmware**</mark>

***

{% hint style="info" %}

### **v2.2.10 - December 19th 2024**

<mark style="color:purple;">**Fixed**</mark>

Minor bugs.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.9 - December 18th 2024**

<mark style="color:blue;">**Added**</mark>

Haptics detection (on/off) in get\_rumble. Use identifier 26 and 27 for left / right.

<mark style="color:purple;">**Fixed**</mark>

Issue with DS4 Output protocol.

XB1 Wireless Dongle issue.

Factory reset issue.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.8 - December 4th 2024**

<mark style="color:blue;">**Added**</mark>

Support for Gamesir G7 SE.

<mark style="color:purple;">**Fixed**</mark>

Touchpad issue.

Touchpad fingers issue.

Output protocol cycle 16ms issue.

Rumble not resetting to 0.

Zenlink remote play connection starting without connected devices.

Issue with Xbox One polars.

Issue with PS5 legacy rumbles.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.7 - October 22nd 2024**

<mark style="color:blue;">**Added**</mark>

ZENLINK\_STATUS constant to GET\_INFO (returns 1 if connected, 3 if connected and linked to PS5) get\_info(ZENLINK\_STATUS);

<mark style="color:purple;">**Fixed**</mark>

PS5\_MUTE event\_press / event\_release.

Legacy rumbles when Zenet is connected.

<mark style="color:green;">**Improved**</mark>

Faster flash content synchronization.

PS5 driver CPU usage.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.6 - September 26th 2024**

<mark style="color:green;">**Improved**</mark>

Device synchronization.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.5 - September 18th 2024**

<mark style="color:blue;">**Added**</mark>

Upcoming Cronus Zen Marketplace integration.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.4 - September 5th 2024**

<mark style="color:blue;">**Added**</mark>

Zenlink Support

<mark style="color:purple;">**Fixed**</mark>

Minor issues.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.3 - April 22nd 2024**

<mark style="color:purple;">**Fixed**</mark>

set\_ps4\_lbar now order is BRG as per cronus player led order and the manual.

DS4 BT set lightbar.

Various bug Remote Play, BT, Audio, haptics, RGB, and rumbles related.

Various M\&K related bugs.

Various DS5 Edge related bugs.

Various Device Monitor related bugs.

Crossover over legacy rumbles and light bar to DS5 from console other than PS5.

Xbox Share button spamming from DS5 and DS4 gyros.

Issue with Xbox share button always presses on connection for series X and Adaptive controller.

<mark style="color:green;">**Improved**</mark>

Sony to Xbox audio crossover process on headphone plugging.
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Updates</mark>

***

{% hint style="info" %}

## v1.6.1 Build 7 - December 19th 2024

<mark style="color:purple;">**Fixed**</mark>

Minor bugs.
{% endhint %}

***

{% hint style="info" %}

## v1.6.1 Build 1 - December 4th 2024

<mark style="color:blue;">**Added**</mark>

ALT or CTRL UP/DOWN gesture to move highlighted code blocks.

CTRL-SHIFT-Z as an alternate redo shortcut.

CTRL-/ to (un)comment lines or selections.

CTRL-Q to copy a line or selection.

CTRL-' (quote) for commenting gesture.

Bitwise Assignment Operators.

Combos and Functions navigation in GPC editor.

Mandatory internet connection.

Beta team in About section.

License agreement on setup and Zen Studio startup.

<mark style="color:purple;">**Fixed**</mark>

Focus issue in GPC script Find/Replace dialog.

Issue with Device Monitor labels. Selection copy issue.

Date being cut off in Online Library.

Left/right arrow issue when selecting text.

Block comment `/* */` functionality.

Script hyperlink color in Online Library.

Programming tab hanging after factory erase.

JavaScript error in YouTube videos via setup.

Issue where Zen Studio closed after PC wake from sleep.

B\&R closing unexpectedly the first time.

Small bug in Combos navigation.

WebHID issue by resetting the device when exiting due to Marketplace detection.

Issue with DS4 Output protocol.

<mark style="color:green;">**Improved**</mark>

Compiler by removing deprecated 16-bit option.

Code movement to allow moving single lines.

Cursor positioning when using left/right arrow keys on selections.

Cursor positioning when using up/down arrow keys on selections.

Scrolling to cursor when using arrow keys on selections.

Folding marker colors.

Foreground color for strings.

Device reset behavior after changing output protocol.

GOTO window in editor.

Device handling upon output protocol change (no reset needed).

Sorting of Combos and Functions lists by name.

License information in About section.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 90 - October 22nd 2024

<mark style="color:purple;">**Fixed**</mark>

Various UI issues.

<mark style="color:green;">**Improved**</mark>

Synchronization is now always executed to ensure content has not been tampered.

Hitting the return key when searching for a text in gpc editor will show the next occurrence.

Zen Studio will now close if PC is coming back from sleep mode due to USB communication re-sync.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 63 - September 30th 2024

<mark style="color:purple;">**Fixed**</mark>

\-- operation issue.

MaxRec and MaxMapper not being able to read inputs after first run.

UI for Programmer Tab readback.

++ / -- with var index.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 56 - September 26th 2024

<mark style="color:blue;">**Added**</mark>

Synchronization message when reading back slots.

<mark style="color:purple;">**Fixed**</mark>

A race condition when an old version of a gamepack is on flash and Zen Studio starts the synchronization due to no cached data available.

Check cached slot integrity. Reload from device if integrity fails.

Missing plugin folder in %appadata%\ZenStudio.

Do not open script upload page if script has errors.

Issue with sub++ and add++

<mark style="color:green;">**Improved**</mark>

Mainwindow MinHeight to 650.

User stats font size.

Message window display on warning or errors.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 37/38 - September 18th 2024

<mark style="color:blue;">**Added**</mark>

Upcoming Cronus Zen Marketplace integration.

<mark style="color:purple;">**Fixed**</mark>

Online library reloading issue upon device arrival.

Minor UI issues.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 16/19 - September 9th 2024

<mark style="color:purple;">**Fixed**</mark>

Minor issues.
{% endhint %}

***

{% hint style="info" %}

## v1.6.0 Build 13 - September 5th 2024

<mark style="color:blue;">**Added**</mark>

Loading of pre-compiled script as .bin or .gbc

Zenlink support.

Zenlink Configurator in installer.

Marketplace support.

<mark style="color:purple;">**Fixed**</mark>

Flash size display issue.

Issue when saving config not setting the gamepack flag properly.

Various UI and behind the scene issues.
{% endhint %}

***

{% hint style="info" %}

## v1.5.0 Build 76 - April 22nd 2024

<mark style="color:blue;">**Added**</mark>

ADT\_SETX opcode.

Copy to clipboard buttons for PS5 Adaptive Triggers in device monitor.

Changed XB1\_SHARE to be enum 27 Selected text in GPC editor is pasted into the find text when search popup is invoked.

XB1\_SHARE/XB1\_SYNC to Max Combo capture.

GPC code will show button XB1\_SHARE when captured.

DS5 Adaptive trigger packet out to device monitor.

Relabeled PS5 Adaptive triggers constants.

Top menu Tools option to open the Online Web Update Tool.

<mark style="color:purple;">**Fixed**</mark>

Code folding not working when the script ends with } and not a newline, space or tab.

A crash that would happen when attempting to open a file which doesn't exist from for example recent files.

Online Library ExpandButton when only 3 lines are used.

OutputComboBox value when PS5 is selected.

Adaptive triggers being inverted on dev monitor.

<mark style="color:green;">**Improved**</mark>

Communication optimizatons.

General stability improved.

Device Tab text clean up and rephrase.

Cronus Zen is required to run Zen Studio.

Adjusted HighLight property for inputs and outputs in DeviceMonitor.

Many visual fixes.
{% endhint %}

***


# Changelog (23)

## <mark style="color:$primary;">**Cronus Zen Firmware**</mark>

***

{% hint style="info" %}

### **v2.2.2 - December 11th 2023**

<mark style="color:purple;">**Fixed**</mark>

DualShock 4 Bluetooth.
{% endhint %}

***

{% hint style="info" %}

### **v2.2.1 - December 1th 2023**

<mark style="color:purple;">**Fixed**</mark>

PS5 controller built-in mic & headset mic (USB only).
{% endhint %}

***

{% hint style="info" %}

### **v2.2.0 - November 30th 2023**

<mark style="color:blue;">**Added**</mark>

Upgraded support for the PlayStation 5 console.

Upgraded USB support for DualSense controllers.

New Bluetooth support for DualSense controllers.

Support for Zen Studio v1.5.0 and above.
{% endhint %}

***

{% hint style="info" %}

### **v2.1.0 Beta.68 - May 12th 2023**

<mark style="color:purple;">**Fixed**</mark>

Support for the PS5 console.

Support for DualSense controllers (USB).

Various optimizations.
{% endhint %}

***

{% hint style="info" %}

### **v2.1.0 Beta.50 - March 20th 2023**

<mark style="color:blue;">**Added**</mark>

Support for Hori OCTA

<mark style="color:purple;">**Fixed**</mark>

PS4 and PS5 mirror passing through input in error.

PS5 gyros in remote.
{% endhint %}

***

{% hint style="info" %}

## v2.1.0 Beta.47 - February 3rd 2023

<mark style="color:blue;">**Added**</mark>

DualSense Edge Controller support added (USB only).
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Updates</mark>

***

{% hint style="info" %}

## v1.5.0 Build 24 - November 30th 2023

<mark style="color:blue;">**Added**</mark>

zenstudio:// url hook (check manual for more details).

Analog Sim for MK (HIP Movement Control).

PS5 output protocol.

Support for PS5\_MUTE button get\_val(PS5\_MUTE) / set\_val(PS5\_MUTE, 100)

Splash screen at startup.

<mark style="color:purple;">**Fixed**</mark>

Issue when saving slot due to device being disconnected.

Issue with slot syncronization

Race condition when opening a gpc script.

Performance issues with the code folding feature.

Issue causing the device to be considered unresponsive.

An issue that would potentially lead to endless loops while using a do while loop.

Issues with compiling 32-bit multi-dimensional arrays.

Issue with settings.

Various GUI improvements.

<mark style="color:green;">**Improved**</mark>

Updated to .Net Framework 4.8.1

Updated to TLS 1.3
{% endhint %}

***

{% hint style="info" %}

## v1.3.1 Beta 46 - May 12th 2023

<mark style="color:blue;">**Added**</mark>

Flyout for DualSense Adaptive triggers in device monitor.

PS5 Input/Output labels.

New Communication Library.

<mark style="color:purple;">**Fixed**</mark>

'Device not responding' issues.

Issue with Zen Studio device synchronization.

Various visual bugs.

Dozens of code optimizations.

GPC Compiler: Issue with const int32 multi array.

GPC Compiler: various typos and optimizations.
{% endhint %}

***

{% hint style="info" %}

## v1.3.1 Beta 11 - March 20th 2023

<mark style="color:green;">**Improved**</mark>

Removed CronusMax Plus gamepacks.

<mark style="color:purple;">**Fixed**</mark>

Win11 GUI inconsistencies.

Wrong timestamp playback issue in MaxRec.

Importing CFG when gamepack update is available.

Missing PS5 case when setting the remote slot option.

Favorite's gamepack list not populating.

Gamepack update notify issue.

Nested switch statements.

A bad warning when using a return statement in a switch case instead of a break.

An issue causing a crash in certain cases.

An issue when using a switch inside of a for loop.

Get\_Ledx issue.

No error for bad combo\_\* usage in assignment conditions.

Crash when if, else if or else was last statement in a switch case.

Typo in redefinition error message.
{% endhint %}

***


# Changelog (22)

## <mark style="color:$primary;">**Cronus Zen Firmware**</mark>

***

{% hint style="info" %}

### v2.1.0 Beta.43 - November 10th 2022

<mark style="color:purple;">**Fixed**</mark>

Xbox Wireless Adapter bug fixed.
{% endhint %}

***

{% hint style="info" %}

### v2.1.0 Beta.41 - November 2nd 2022

<mark style="color:purple;">**Fixed**</mark>

Back Button issue.
{% endhint %}

***

{% hint style="info" %}

### **v2.1.0 Beta.35 -** July 12th 2022

<mark style="color:blue;">**Added**</mark>

get\_ipolar (POLAR, RADIUS/ANGLE)

Various minor fixes.

<mark style="color:purple;">**Fixed**</mark>

get\_polar

Bug police lights.

Bug in stickize for analog indexes.
{% endhint %}

***

{% hint style="info" %}

### **v2.1.0** Beta.22 - May 2nd 2022

<mark style="color:blue;">**Added**</mark>

Support for PS5 DualSense volume control.

GPC\_OP\_SWITCH to interpreter.

Bluetooth Clear function (see Device Tab in Zen Studio).

<mark style="color:purple;">**Fixed**</mark>

Elites S2 Paddles mapped with the Xbox are now working with the new controller firmware (Note: You can longer use GPC script to independently control the paddles. If you still wish to use GPC scripting for the paddles, you need to revert the Elite S2 controller firmware back to 4.8.1908.0).

Issue with PS5 DualSense Mic in crossover.

Issue where PS5 DualSense controller in A2/A3 with no headset would not pull audio from a DualShock 4 v2 in A1 with headset.

DualShock 4 (Bluetooth) always switching Switch Emulator to audio mode even with no headset.

Issue with Build & Run GPC\_OP\_GPOLAR is now working correctly.

GPC\_OP\_GRUMBLE is now working correctly.

<mark style="color:green;">**Improved**</mark>

Boosted Xbox One audio volume to DualShock 4 and DualSense controllers.
{% endhint %}

***

{% hint style="info" %}

## v2.1.0 Beta.16 - Feb 25th 2022

<mark style="color:blue;">**Added**</mark>

GPC errors will no longer display E2XXX error codes. You will now be returned to slot 0 where it will display the error message. Your Zen will not crash and you will be able to continue playing without having to reset.

<mark style="color:purple;">**Fixed**</mark>

XB1 Share button spamming when using MK.\
General stability improvements.
{% endhint %}

***

***

{% hint style="info" %}

### **v**2.1.0 Beta.6 - Feb 11th 2022

<mark style="color:blue;">**Added**</mark>

random(min,max) will now work also in case of random(max,min)\
ResetDevice command.

Navcon and Joycon left to MK cfg activation.

<mark style="color:purple;">**Fixed**</mark>

Issue with Joycon left not working with MK on Bluetooth.

brtime being capped to INT16\_MAX

<mark style="color:green;">**Improved**</mark>

Stability improvements.
{% endhint %}

***

{% hint style="info" %}

### **v**2.1.0 Beta.1 - Feb 7th 2022

<mark style="color:blue;">**Added**</mark>

Official PS Remote Play Support (PS5 & PS4).

New 32bit GPC interpreter!

Support for PowerA Fusion Pro 2 Xbox Series X/S controller.

Support for PowerA Spectra Xbox Series X/S controller.

Support for Razer Wolverine v2 Xbox Series X/S controller.

Path to rumble on Switch controllers from the interpreter.

Toggle to activate MK profiles.

PS5 DualSense Adaptive Triggers support with official PS Remote Play.

Block XB1 share for a non 1914 controller.

<mark style="color:purple;">**Fixed**</mark>

Several Xbox One controller issues.

DualShock 4 Audio now supported over Bluetooth.

Xbox One Audio on Nintendo Switch.

<mark style="color:green;">**Improved**</mark>

Support for 2 channel mics on the PS4.

Mouse & Keyboard detection.
{% endhint %}

***

## <mark style="color:$primary;">Zen Studio Updates</mark>

***

{% hint style="info" %}

## v1.2.1 Beta 119 - November 2nd 2022

<mark style="color:blue;">**Added**</mark>

A check to allow paste into the currently opened Compiler Tab via SendMessage by prepending a "#" to the pasted code.

ASCII\_OPEN\_BRACKET constant.

SET\_POLAR2(POLAR, ANGLE, RADIUS), anticlockwise Angle, Radius max 15000

POLAR\_GHOST, ANALOG\_GHOSTX, ANALOG\_GHOSTY a virtual stick to help in math/trigonometry functions.

Tools->Restart ZenStudio.

Tools->Reset ZenStudio (deletes all files in AppdData\Roaming\CronusZenBeta).

<mark style="color:purple;">**Fixed**</mark>

Multidimensional array issue.

GPC Guide link.

Windows 11 GUI issue.

<mark style="color:green;">**Improved**</mark>

Changed app exit cmd from SendMessage moved to value 99

SET\_POLAR restored to its original behaviour alth0 GET\_POLAR now follows the new SET\_POLAR2 logic.
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 105 - July 12th 2022

<mark style="color:blue;">**Added**</mark>

A check to allow paste into the currently opened Compiler Tab via SendMessage by prepending a "#" to the pasted code

SET\_POLAR2(POLAR, ANGLE, RADIUS), anticlockwise Angle, Radius max 15000

POLAR\_GHOST, ANALOG\_GHOSTX, ANALOG\_GHOSTY a virtual stick to help in math/trigonometry functions.

Downloaded script will show their name in the Compiler Tab.

Tooltip on downloaded script to read the full name in the Programmer Tab.

A better error message when failing to add a script to the slots.

Various GUI fixes

<mark style="color:purple;">**Fixed**</mark>

ASCII\_OPEN\_BRACKET constant.

Device Monitor long text labels animation overlapping index and value.

INV opcode.

An issue with nested if statement.

<mark style="color:green;">**Improved**</mark>

Some UI text to reflect new forum layout.
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 85 - May 2nd 2022

<mark style="color:blue;">**Added**</mark>

Support for the continue keyword in loops.

Zen server status is now shown on status bar. Clicking the status bar label will perform the check again.

Button to copy current device/software details to clipboard (Help > About Zen Studio...).

Scrollable layout for low resolution monitors.

Append InGameSettingsFlyoutText when exporting M\&K .bin layout.

Switch Case statement - Check GPC sample below.

Enum data definition - Check GPC sample below.

Bluetooth clear button - Check instructions below.

Support for any keyword as an identifier.

<mark style="color:purple;">**Fixed**</mark>

Issue when GamePack/Scripts sync occurs.

Issue with GamePacks cached list.

Cached YouTube links not showing when clicking PRO Gamepacks.

The compiler will now track possible overflow or underflow errors.

Issue with inc/dec issue in if statement.

Issue with binary operators.

SPVARS not loading after GamePack sync occurs (on APPDATA delete or PC change).

GPC editor GOTO logic (finally).

Issue with flashing some GPC scripts.

MAX MAPPER not exiting API MODE on close causing no output to be sent.

<mark style="color:green;">**Improved**</mark>

Replaced Find Device Icon with a better one.

Multiple GUI fixes, enhancements and stability improvements.

Various compiler optimizations.

Ballistic Curve buttons order.

Updated the parser to treat : and ; as separate characters while maintaining the old syntax support for ending with : or ;
{% endhint %}

{% hint style="success" %}
**Special Thanks**

:thumbsup: :first\_place: :heart:  We'd like to give a special mention to ***Swizzy*** for his invaluable assistance with this release.
{% endhint %}

<figure><img src="/files/uiYGL5Euoxnf1He3UsQS" alt=""><figcaption></figcaption></figure>

**Switch Case Statement Sample:**

{% file src="/files/BWO6A425g2A8Mj6oI7Kq" %}

```
int var = 1;

define FIVE = 5;

define SIX = FIVE + 1;

main {
	switch(var) {
		case 1 {
			set_val(TRACE_1, 1); // THIS HAS NO BREAK SO IT WILL EVALUATE NEXT CASE!
		}
		case 2 : {
			set_val(TRACE_1, 2);
			set_val(TRACE_2, 2);
			break;
		}
		case 0x3 {
			break;
		}
		case 0x4 : {
			break;
		}
		case FIVE {
			break;
	 	}
	 	case SIX : {
	 	
	 	}
		default {
			set_val(TRACE_3, 1);
		}
	}
	switch(get_rumble(RUMBLE_RT)) {
		case 0x10 {
			break;
		}
		case 40 : {
			break;
		}		
		case 60 {
			break;
		}
		case 80 : {
			break;
		}
	}
}
```

**Switch Case Statement Sample:**

{% file src="/files/i6nBtj2mDnF0lqg4HeGS" %}

```
enum {
  MYENUM_0 = 50,
  MYENUM_1,
  MYENUM_3,
  MYENUM_4
}

enum {
  MYENUM2_0,
  MYENUM2_1,
  MYENUM2_3,
  MYENUM2_4
}

main {

	set_val(TRACE_1, MYENUM_1); 	// THIS WILL OUTPUT 51 AS OUR ENUM STARTED FROM 50
	set_val(TRACE_1, MYENUM2_1);	// THIS WILL OUTPUT 1 AS DEFAULT ENUM START IS ALWAYS 0

}

```

***

{% hint style="info" %}

## v1.2.1 Beta 40 - Feb 26th 2022

<mark style="color:blue;">**Added**</mark>

Support for the continue keyword in loops.

<mark style="color:purple;">**Fixed**</mark>

Bug that may occur when flashing some scripts.

GO TO Gpc Editor when selecting start of line option.
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 37 - Feb 25th 2022

<mark style="color:blue;">**Added**</mark>

Search device will now invoke FindDevice even if device is unresponsive.

Now you need to click the Refresh icon if you plug/unplug a device from Zen in order to update the connected devices tree.

<mark style="color:purple;">**Fixed**</mark>

Gpc compiler issue.

GpcScript GO TO column.

GpcScript GO TO window size not showing all options.

Connected BT devices not showing in DeviceMonitor.

General stability improvements.
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 25 - Feb 15th 2022

<mark style="color:blue;">**Added**</mark>

Find Device button in Device Tab.

Zen Studio will now check for new beta updates. It'll prompt you to download from the Beta #resources channel.

<mark style="color:purple;">**Fixed**</mark>

Changed device status check method.

Changed logic for ResetDevice.

Various GUI and stability fixes.
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 13 - Feb 11th 2022

<mark style="color:blue;">**Added**</mark>

Support for ResetDevice command.

ResetDevice icon in Device Tab.

Now when setting PS4 Speciality or PS Remote the device will be reset automatically.

<mark style="color:purple;">**Fixed**</mark>

Missing case for GENERIC label load when loading a profile. (This fixed the empty MOUSEKEY assignment when opening the M\&K Tab or loading a profile)

32bit SPVARS causing slot not to be loaded correctly

Issue when swapping slots

Missing keyboard buttons 1 to 0 not showing as assigned when viewing Keyboard Layout

Available flash size after synchronizing missing local scripts

Text overflow when listening to assignment

<mark style="color:green;">**Improved**</mark>

Communication retries in case of bad device response
{% endhint %}

***

{% hint style="info" %}

## v1.2.1 Beta 12 - Feb 7th 2022

<mark style="color:blue;">**Added**</mark>

New Mouse & Keyboard Settings Tab with a huge range of new & powerful features including Ballistic Curves, HIP & ADS profiles and 4 AUX profiles each with their own settings and keybinds.

Memory slots are now measured by memory space up to a massive 64k per script or GamePack - double the size that was previously available.

Added PIO\_SWITCH (Enum 6).

PS Remote Feature - Now supports the Sony PS Remote Play PC Software.

Added comand (CTRL / + and CTRL / -) to increase/decrease GPC editor font size (must be in an opened GPC script).

Added support to switch to a 16bit compiler with optimizations. All scripts must be closed to switch\
MK Settings ADS profile now accepts Deactivation Buttons. Example: Set Fire button to activate AUX1 which has a lower mouse sensitivity, set ADS deactivate button to Fire button. Now when you ADS and Fire, AUX1 will activate.

Recover unsaved GPC in case of Windows restart/crash.

Gamepack size displayed in GamePack details.

Device Monitor Shortcut (F3).

GPC Clean - Correctly format GPC layout with the touch of a button. Shortcut (F6) Undo (Ctrl+F6).

<mark style="color:purple;">**Fixed**</mark>

Disable Output Protocol when PS Remote Play is checked.

Multiple GUI fixes and tweaks.

<mark style="color:green;">**Improved**</mark>

Compiler font size is now 7 to 20.

Memory slot programming speed is now over 3x faster.
{% endhint %}

***


# All-in-One — Easy Setup

Everything from opening the box to playing on your console, in order. No prior knowledge needed.

This page takes you all the way from an unopened box, over flashing a GamePack/Script to playing on your console.\
Do the steps in order and do not skip ahead — each one assumes the last one is finished.

It takes about 20 minutes the first time.

***

### What this All-in-One step by step guide covers

1. [What you need before you start](#what-you-need-before-you-start)
2. [Open the setup software](#step-1-open-the-setup-software)
3. [Plug the Zen into your computer](#step-2-plug-the-zen-into-your-computer)
4. [Update the firmware](#step-3-update-the-firmware)
5. Find out how your controller connects
6. Set the output protocol
7. Flash a GamePack/Script
8. Connect the Zen to your console
9. Connect your controller
10. Test it

***

### What you need before you start

* **A computer with the** [**Chrome browser**](https://www.google.com/chrome/)**.** Zen Studio Live runs inside the browser, so Windows, macOS, and Linux all work. You only need the computer for setup — once the Zen is configured, it works on its own.
* **Two USB-C cables.** One short and one long cable are in the box.
* **Your controller**, charged.
* **Your console.**

You do not need to install drivers, or pay for anything to complete this guide.

{% hint style="info" %}
**Lost the cables that came in the box?**

Any USB-C cable works — but it has to be a **data cable**, not a charge-only cable.

The difference is inside: a charge-only cable has just the two power wires. A data cable has those plus two more that carry the actual communication. Without them the Zen lights up but your computer never sees it.

**The quick test:** use the cable to connect your phone to your computer. If the phone's files show up, it is a data cable. If it only charges, it is not.
{% endhint %}

***

### Step 1 — Open the setup software

The software is called **Zen Studio Live**. It is what you use to tell the Zen what to do.\
It runs inside the [Chrome browser](https://www.google.com/chrome/) — nothing to download, nothing to install.\
\
You just open a web page: [zenstudio.collectivemindsstore.com](https://zenstudio.collectivemindsstore.com/)

Open that link in [Chrome](https://www.google.com/chrome/) now and leave the tab open.\
You will come back to it in almost every step from here on.

***

### Step 2 — Plug the Zen into your computer

Your Cronus Zen has two USB-C ports.\
They are not interchangeable — each step in this guide tells you which one to use, so read carefully.

For this step you need the port labelled **PROG USB**.

{% stepper %}
{% step %}
Take a USB-C cable
{% endstep %}

{% step %}
Plug one end into the **PROG USB** port on the Zen
{% endstep %}

{% step %}
Plug the other end into your computer
{% endstep %}

{% step %}
Go back to the Zen Studio Live tab in Chrome and click Connect Device
{% endstep %}

{% step %}
A small window opens listing the devices Chrome can see
{% endstep %}

{% step %}
Choose Cronus Bridge
{% endstep %}

{% step %}
Click Connect
{% endstep %}

{% step %}

### **Prefer to watch someone do it?**

We have a short video that walks through connecting your Zen to Zen Studio Live.
{% endstep %}
{% endstepper %}

{% embed url="<https://www.youtube.com/watch?v=zgAmRHzDXn4>" %}
Connecting your Cronus Zen to Zen Studio Live
{% endembed %}

{% hint style="info" %}
**Why does the browser ask for permission?**

Chrome does not let a web page reach hardware on its own — you have to point at the device and allow it, once per browser. That is what the small window is doing.&#x20;
{% endhint %}

{% hint style="danger" %}
**Cronus Bridge does not appear in the list?**

Almost always the **cable**. Many USB-C cables only carry power, and the Zen will light up on one of those while staying completely invisible to your computer.\
\
Try a different cable before you change anything else.\
If the cable is definitely a data cable, unplug the Zen, plug it back in, and click **Connect Device** again.
{% endhint %}

***

### Step 3 — Update the firmware

Your Zen came from the factory it may have a older firmware on it.\
Update it now, before you connect anything to a console.

{% stepper %}
{% step %}
**Unplug every cable from the Zen**

<sub>All of them, the next steps only work if the Zen starts out with nothing attached</sub>
{% endstep %}

{% step %}
Turn the Zen around so you can see the back, find the small blue button
{% endstep %}

{% step %}
**Press and hold** that button, keep holding
{% endstep %}

{% step %}
While still holding, plug the USB data cable into the **top port** of the Zen
{% endstep %}

{% step %}
In Zen Studio Live, click **Update Firmware** in the bottom-left corner
{% endstep %}

{% step %}
Click **Connect Device**.
{% endstep %}

{% step %}
**Choose Cronus Zen from the list, then click Connect**
{% endstep %}

{% step %}
Click **Update to latest**
{% endstep %}

{% step %}
**The firmware now writes to your Zen.**

<sup>This takes a while., do not unplug the cable and do not close the page while it runs</sup>
{% endstep %}

{% step %}
When it is finished you get a success message that says Firmware updated
{% endstep %}

{% step %}
Click **Close**
{% endstep %}

{% step %}

### **Prefer to watch someone do it?**

We have a short video that walks through connecting your Zen to Zen Studio Live.
{% endstep %}
{% endstepper %}

{% embed url="<https://www.youtube.com/watch?v=rocT6KLMA20>" %}
Updating the Cronus Zen firmware
{% endembed %}

{% hint style="danger" %}
**Do not interrupt the update.**

Unplugging the cable or closing the page part-way through can leave the Zen with half-written firmware. Let it finish, however long it takes.
{% endhint %}

{% hint style="info" %}
**Cronus Zen does not appear in the list?**

Then it is not in the right mode. Unplug the cable, press and hold the blue button again, and plug the cable in while you are still holding it. The order is what matters: hold first, then plug in.

If that does not help, try a different cable — a charge-only cable will not work here either.
{% endhint %}

***


# Quick Start Guide

Get your Cronus Zen game-ready with your favorite console in just three easy steps:

1. [**Install Zen Studio**](/setup-guides/quick-start-guide/step-1-install-zen-studio)
2. [**Update Firmware**](/setup-guides/quick-start-guide/step-2-update-firmware)
3. [**Controller Setup**](/setup-guides/quick-start-guide/step-3-controller-setup)


# STEP 1: Install Zen Studio

Zen Studio is our exclusive Windows software. Use it to combine controllers, configure mouse and keyboard setups, and access advanced features available to registered Cronus Zen owners.

## Step-By-Step

***

{% stepper %}
{% step %}
If you are using the new Zen Studio Live (ZSL) web browser-based app, no installation is required. Simply use the Chrome browser to visit Zen Studio Live below:

<https://zenstudio.collectivemindsstore.com/>

Note: If you wish to engage with the older Zen firmware instead, you can find Zen Studio Legacy here:<a href="https://app.box.com/s/845urveyz8ophn108kt5a8n3mggv40ni" class="button primary">Download Zen Studio Legacy</a>
{% endstep %}

{% step %}
Plug your Cronus Zen into a computer using the **PROG USB** port.

<figure><img src="/files/9MhesG6Op6GCvISM1qVM" alt=""><figcaption><p>PC Connection via PROG USB Port</p></figcaption></figure>
{% endstep %}

{% step %}
Open Zen Studio. When Cronus Zen is detected, the GPC Library appears on the left.

The **serial number** appears in the bottom-right corner.&#x20;

<figure><img src="/files/HKv90n2EQb7G8ayOLEGi" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}

## **DEVICE DISCONNECTED**

If the Zen Studio status bar shows “Device Not Connected” or another error, the issue is typically a faulty USB cable.
{% endhint %}
{% endstep %}

{% step %}
**Important:** After installing a new version of Zen Studio, select **Tools > Reset Zen Studio** and confirm with **Yes** to prevent conflicts from older files.

**Warning:** This action deletes all backups, settings, and stored files.

<figure><img src="/files/Dd69rw1QnaCBvMJfSrtO" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Disconnect the PROG USB cable from the Cronus Zen.\
Keep it connected to the PC for **Step 2: Update Firmware**.
{% endstep %}
{% endstepper %}


# STEP 2: Update Firmware

This page explains how to update the Cronus Zen firmware to the latest available version.

## Step-By-Step

***

{% stepper %}
{% step %}
**Press** and **hold** the Cronus Zen’s blue **reset button**.

<div align="left"><figure><img src="/files/5E1gIfXW0JsmAGEiJihc" alt=""><figcaption><p>PC Connection via CONSOLE/PC USB Port</p></figcaption></figure></div>
{% endstep %}

{% step %}
Plug your Cronus Zen into a computer using the **CONSOLE/PC USB** port.
{% endstep %}

{% step %}
The OLED screen displays **Zen Bootloader.**
{% endstep %}

{% step %}
In Zen Studio, navigate to **Tools > Online Firmware Update**,\
or visit **firmware.modcentral.ca** directly.
{% endstep %}

{% step %}
Click **Connect**, select **Cronus ZEN**, then click **Connect** again.

<div align="left"><figure><img src="/files/rwp3zy6xVmkuSQro0uAS" alt=""><figcaption></figcaption></figure></div>

If the Cronus Zen does not appear as shown above, make sure it is in **Bootloader Mode** and connected to the top USB port.
{% endstep %}

{% step %}
Click **Latest.**\
The firmware update will begin automatically and complete in approximately 20 seconds.
{% endstep %}
{% endstepper %}


# STEP 3: Controller Setup

Identify whether your controller is USB-only, Bluetooth-compatible, or requires a wireless adapter (e.g., some Xbox® controllers or the Astro® C40).

<table><thead><tr><th></th><th>USB</th><th width="187">BT</th><th>ADAPTER</th></tr></thead><tbody><tr><td>DualSense™</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:orange;"><strong>YES*</strong></mark></td><td>N/A</td></tr><tr><td>DualSense Edge™</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:orange;"><strong>YES*</strong></mark></td><td>N/A</td></tr><tr><td>DualShock®4</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td><td>N/A</td></tr><tr><td>Xbox® (All models)</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:purple;"><strong>YES**</strong></mark></td></tr><tr><td>Nintendo Switch® (All models)</td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><strong>N/A</strong></td></tr><tr><td>Astro® C40</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr></tbody></table>

*<mark style="color:orange;">**\*Bluetooth does not support Adaptive Triggers, Rumbles, Gyroscope, or Mic**</mark>*&#x20;

*<mark style="color:purple;">**\*\*Wireless Xbox Series X|S® & Xbox One® controllers require the**</mark>* [***Xbox® Wireless Adapter***](https://cronus.shop/products/xbox-one-wireless-adapter)*<mark style="color:purple;">**.**</mark>*

## Supported Devices

***

Cronus Zen supports all major consoles, official controllers, and most licensed third-party controllers.

{% columns %}
{% column %}
**PlayStation®5**\
**PlayStation®4**\
**PlayStation®3**\
**Nintendo Switch®**\
**Nintendo Wii®**\
**Windows® PC**
{% endcolumn %}

{% column %}
**Xbox Series X|S®**\
**Xbox One®**\
**Xbox 360®**\
**Racing Wheels**\
**Mouse & Keyboard**\
**PS Remote Play**
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}

## WIRED HEADSETS:

Due to the wide variety of headsets, controllers, and consoles, full audio compatibility cannot be guaranteed for every configuration. Many USB-connected setups are supported.

**Note:** Wired headsets are not supported over Bluetooth. The controller must be connected to the Zen via USB. For PlayStation 5, connect the headset to the device running the PS Remote Play app.
{% endhint %}

{% hint style="success" %}

## NINTENDO SWITCH®:

When using a Switch TV Dock, ensure the 15V power supply is connected. Otherwise, the Zen will not power on.

In Handheld Mode, a USB-C OTG adapter is required.

Enable the following setting on the console:\
**System Settings > Controllers and Sensors > Pro Controller Wired Communication: On**
{% endhint %}


# USB

Follow the steps below to set up your console and controller via USB.

Matched (USB)

***

MATCHED (USB) is the simplest setup method and supports PlayStation®4, Xbox®, and Nintendo Switch® consoles and controllers.

<div align="left"><figure><img src="/files/f2HaS14cyaWnKgfAoYgx" alt=""><figcaption><p>Xbox Series X|S® Controller to an Xbox Series X®</p></figcaption></figure></div>

{% stepper %}
{% step %}
Connect Cronus Zen to a Windows PC using the **PROG USB port**.

**PS5:** Follow the dedicated PS5 setup guide.

**PS4:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **PlayStation 4/5**.

**Xbox:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **Xbox One X/S**.

**Switch:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **Nintendo Switch**. Refer to the Nintendo Switch page for additional required settings.
{% endstep %}

{% step %}
Connect your Cronus Zen to the console using the **CONSOLE/PC USB cable** (the short USB cable is recommended).
{% endstep %}

{% step %}
Plug the controller into the Zen’s **A1 USB port**. After a few seconds, the controller will power on and sync with the Cronus Zen.
{% endstep %}

{% step %}
Test the controller in-game to confirm that all buttons function correctly.
{% endstep %}
{% endstepper %}

## Crossover (USB)

***

\
The CROSSOVER setup supports PlayStation®, Xbox®, and Nintendo® Switch consoles.

In a CROSSOVER configuration:\
• The controller that matches the console (authentication controller) connects to **A1**.\
• The controller you want to use connects to **A3**.

<div align="left"><figure><img src="/files/YGKJGqec9eUMPpga0my3" alt=""><figcaption><p>PS5® DualSense™ to Xbox Series X|S®</p></figcaption></figure></div>

{% stepper %}
{% step %}
Connect Cronus Zen to a Windows PC using the **PROG USB port**.

**PS5:** Follow the dedicated PS5 setup guide.

**PS4:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **PlayStation 4/5**.

**Xbox:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **Xbox One X/S**.

**Switch:** Open **Zen Studio > Device Panel** and set the **Output Protocol** to **Nintendo Switch**. Refer to the Nintendo Switch page for additional required settings.
{% endstep %}

{% step %}
Connect the Cronus Zen to the console using the **CONSOLE/PC USB port**.

This CROSSOVER example uses an Xbox Series X console and a PS5 DualSense controller.
{% endstep %}

{% step %}
Connect the Xbox® controller to the Zen’s **A1 USB port**.\
It must remain connected while using a CROSSOVER controller.\
This is referred to as the **authentication (AUTH) controller**.
{% endstep %}

{% step %}
Connect the CROSSOVER controller to the **A3 USB port**.
{% endstep %}

{% step %}
Test the controller in-game to confirm that all buttons function correctly.
{% endstep %}
{% endstepper %}


# Wireless

Follow the steps below to set up your console and controller via Bluetooth or a wireless adapter.

Wireless Support

***

The chart indicates which controllers support Bluetooth and which do not.\
Xbox® controllers do not support Bluetooth with Cronus Zen, but they are compatible using the Xbox® Wireless Adapter.

<table><thead><tr><th></th><th>USB</th><th width="187">BT</th><th>ADAPTER</th></tr></thead><tbody><tr><td>DualSense™</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:orange;"><strong>YES*</strong></mark></td><td>N/A</td></tr><tr><td>DualSense Edge™</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:orange;"><strong>YES*</strong></mark></td><td>N/A</td></tr><tr><td>DualShock®4</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td><td>N/A</td></tr><tr><td>Xbox® (All models)</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:purple;"><strong>YES**</strong></mark></td></tr><tr><td>Nintendo Switch® (All models)</td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><strong>N/A</strong></td></tr><tr><td>Astro® C40</td><td><mark style="color:green;"><strong>YES</strong></mark></td><td><mark style="color:red;"><strong>NO</strong></mark></td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr></tbody></table>

*<mark style="color:orange;">**\*Bluetooth does not support Adaptive Triggers, Rumbles, Gyroscope, or Mic**</mark>*&#x20;

*<mark style="color:purple;">**\*\*Wireless Xbox Series X|S® & Xbox One® controllers require the**</mark>* [***Xbox® Wireless Adapter***](https://cronus.shop/products/xbox-one-wireless-adapter)*<mark style="color:purple;">**.**</mark>*

## Xbox® (Wireless Adapter)

***

Any Xbox® controller can be used wirelessly on an Xbox Series X|S® or Xbox One® console (MATCHED), or on another supported console such as PS5® (CROSSOVER).

#### MATCHED Setup

1. Connect the **Xbox® Wireless Adapter** to **A3**.
2. Connect the Xbox® controller to **A2** using a USB cable.
3. Wait a few seconds, then disconnect the USB cable from **A2**.

The wireless adapter LED will begin blinking. When it turns solid white, the controller is successfully paired with the Zen.

#### CROSSOVER Setup

Follow the same steps as MATCHED, with one additional requirement:

• Connect the **authentication (AUTH) controller** that matches the console to **A1**.

**Example:**\
When gaming on a PS5® using an Xbox Elite Series 2 controller:\
• Connect a PS5 DualSense controller to **A1** (AUTH).\
• Pair the Xbox controller to the Xbox Wireless Adapter connected to **A3**.

## PlayStation® (Bluetooth)

***

#### MATCHED Setup

1. Press the **P2 Bluetooth pairing button** on the Zen.\
   The RGB LEDs will flash blue, indicating pairing mode.
2. On the DualSense® or DualShock®4 controller, hold **SHARE + PS** (DualShock 4) or **Create + PS** (DualSense) until the light bar begins flashing.

When pairing is successful, both the controller light bar and the Zen RGB LEDs will turn solid blue.

#### CROSSOVER Setup

Follow the same steps as MATCHED, with one additional requirement:

• Connect the **authentication (AUTH) controller** that matches the console to **A1**.

**Example:**\
When gaming on a PS5® using an Xbox Elite Series 2 controller:\
• Connect a PS5 DualSense® controller to **A1** (AUTH).\
• Pair the Xbox controller to the Xbox® Wireless Adapter connected to **A3**.

## Switch Wireless Pro (Bluetooth)

***

Any Nintendo Switch Pro Controller can be used wirelessly on a Nintendo Switch console (MATCHED), or on another supported console such as PS5® (CROSSOVER).

#### Bluetooth Pairing

1. Press the **P2 Bluetooth pairing button** on the Zen.\
   The RGB LEDs will flash blue, indicating pairing mode.
2. On the Switch Pro Controller, press and hold the **SYNC button** until the player LEDs begin flashing.

When pairing is successful, the player LEDs and the Zen RGB LEDs will stop flashing and remain solid.

## Switch Joy-Cons (Bluetooth)

***

Nintendo Switch Joy-Con controllers can be used wirelessly on a Nintendo Switch console (MATCHED), or on another supported console such as PS5® (CROSSOVER).

{% stepper %}
{% step %}
Connect Cronus Zen to a computer using the **PROG USB port**.
{% endstep %}

{% step %}
In **Zen Studio**, go to **Device Panel** and set **Emulator Output Protocol** to **Nintendo Switch**.

Pair the Left and Right Joy-Con controllers individually.

{% endstep %}

{% step %}
Connect the Cronus Zen to the Switch TV Dock using the **CONSOLE/PC USB port**.

**Note:** Handheld mode (without TV Dock) requires a USB-C OTG adapter.
{% endstep %}

{% step %}
Press the Zen’s **P2 Bluetooth pairing button** until the RGB LEDs flash blue.
{% endstep %}

{% step %}
Press and hold the **Left Joy-Con SYNC button** until the player LEDs begin flashing.\
After a few seconds, the Zen RGB LEDs will turn red and the Joy-Con will vibrate.
{% endstep %}

{% step %}
Press and hold the **Right Joy-Con SYNC button**. After a few seconds, the Joy-Con will vibrate.

<div align="left"><figure><img src="/files/pVAdhPfnTIs7CPAwNOzd" alt=""><figcaption></figcaption></figure> <figure><img src="/files/grgiOnOJPNknDSEJCwk1" alt=""><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

{% hint style="info" %}
A powered USB hub with a 5V auxiliary power input is recommended. Connect the hub to your PC or Mac, then connect the Zen to the hub.

This configuration helps prevent PS5® disconnections, pairing failures, input lag, loss of vibration, and adaptive trigger issues.
{% endhint %}


# PlayStation®5 Bypass

This guide provides step-by-step instructions for setting up the PlayStation®5 bypass with Cronus Zen and DualSense™ or DualSense Edge™ controllers.

{% hint style="success" %}
Verified and tested with DualSense™ and DualSense Edge™ controllers for stable operation with Cronus Zen firmware.
{% endhint %}

## Step-By-Step

***

{% stepper %}
{% step %}

## Enable Bluetooth

* Go to **Settings → Accessories → General → Advanced Settings**.
* If Bluetooth is already set to **On**, as shown below, proceed to **Step 2**.

<div align="left"><figure><img src="/files/uacpCXY7CdpXjccsVvwT" alt=""><figcaption></figcaption></figure></div>

* If Bluetooth is set to **Off**, select **“Turn On Bluetooth”** and press **✕ (Cross)**.\
  The PS5® console will restart automatically.
  {% endstep %}

{% step %}

## Connect the Controller via Bluetooth

* Use the **Bluetooth Accessories** screen to connect your DualSense™ or DualSense Edge™ controller wirelessly.
  {% endstep %}

{% step %}

## Selecting “Use USB Cable” Communication

* Go to **Settings → Accessories → Controller (General) → Communication Method**.
* Choose **“Use USB Cable”** and press **✕ (Cross)** to confirm.

<div align="left"><figure><img src="/files/Z7Osr1FYi8PSmUtC5Fzu" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

## Put the Cronus Zen in Gearhead (Idle) Mode

* Connect the Zen to the PS5® front USB port.
* If Zen's display shows a Gamepack or script icon, tap Zen's right blue button until the Gearhead logo appears.

{% hint style="info" %}
To verify that the Gearhead logo is the default screen, unplug the **rear USB port cable**, then reconnect it once.\
Confirm that the Gearhead logo remains displayed.

After verification, unplug the cable again so the Cronus Zen is no longer connected to the PS5®.
{% endhint %}
{% endstep %}

{% step %}

## Connect your Controller to the Cronus Zen

* Connect the controller to the Zen’s **A1 USB port** (left-side USB).
  {% endstep %}

{% step %}

## Hover over “Turn Off Accessories”

* Go to **Settings → Accessories → General → Turn Off Accessories**.
* Highlight the **DualSense™ or DualSense Edge™ controller** using the D-Pad.\
  Do not press **✕ (Cross)**.
  {% endstep %}

{% step %}

## Execute the Bypass

* While holding **Right on the D-Pad**, reconnect the USB cable to the Zen’s **rear USB port**.
* Continue holding for approximately five seconds until the Zen display flashes and returns to the **Gearhead logo**.
* Release **Right on the D-Pad**.
* Press **○ (Circle)** to exit the menu and launch your game.
* The bypass is now active.
  {% endstep %}
  {% endstepper %}

## Disclaimers

***

By using this product, you acknowledge and agree to the following:

{% hint style="info" %}
⚠️ Trademark Notice

“PlayStation®,” “PlayStation®5,” “PS5®,” “PSN®,” and “DualSense™” are trademarks of Sony Interactive Entertainment Inc.
{% endhint %}


# Running Zen Studio on Linux

Follow this guide to set up a Windows VM on Ubuntu, Debian, or Arch Linux to install Zen Studio and connect your Cronus Zen.

## Step-By-Step

***

{% stepper %}
{% step %}

### Create the Windows VM <a href="#sc6aw" id="sc6aw"></a>

* **Open VirtualBox and click New**
  * Name: ZenWindowsVM
  * Type: Microsoft Windows
  * Version: Windows 10 (64-bit)
* **Mount the Windows ISO**
  * Select VM → Settings → Storage
  * Under IDE controller, click the empty disk
  * Choose a disk file → select your ISO
* Start the VM and complete the Windows installation wizard
  {% endstep %}

{% step %}

### Configure the VM Post-Install

* **Windows Update**
  * Open Settings → Update & Security → Check for updates.
  * Install all updates and reboot.
* **Guest Additions**
  * In the VirtualBox VM menu: Devices → Insert Guest Additions CD image.
  * In Windows Explorer, run *VBoxWindowsAdditions.exe*
  * Reboot.
* **USB Passthrough**
  * Power off the VM.
  * **Settings** → **USB** → enable **USB 2.0** or **USB 3.0** controller, Click + → select **Cronus Zen** → **OK**.
    {% endstep %}

{% step %}

### Install Zen Studio

* Power on the Windows VM.

* Inside Windows, open your browser and go to:
  * ﻿[**collectiveminds.gitbook.io/cronuszen/mainhub/downloads**](https://collectiveminds.gitbook.io/cronuszen/mainhub/downloads)﻿

* Download **Zen Studio**.

* Run the installer: **Next** → **Accept License** → **Install** → **Finish**.

* If the installer fails while downloading .NET Framework 4.8.1:
  * Download the offline installer from Microsoft
    * ﻿[**dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-offline-installer**](https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-offline-installer)

* Run the .NET installer and reboot Windows.

* Rerun the Zen Studio installer.
  {% endstep %}

{% step %}

### Connect your Cronus Zen

* Hold both blue Cronus Zen buttons.
* Plug in the Cronus Zen into your PC/Laptop.
* LEDs will flash.
* Now release both blue buttons.
* In VirtualBox menu: **Devices** → **USB** → select **Cronus Zen**.
* In Windows, launch ZEN Studio and confirm device detection.
  {% endstep %}

{% step %}

### Tips & Troubleshooting

* Add your Linux user to the vboxusers group:
  * *sudo usermod -aG vboxusers $USER*
  * Then log out and back in.
* On Arch, ensure VirtualBox kernel modules are loaded:
  * *sudo modprobe vboxdrv vboxnetflt vboxnetadp*
* If USB passthrough fails:
  * Toggle between USB 2.0 and USB 3.0 in VM settings.
* Enable nested paging and I/O APIC:
  * Under **System** → **Acceleration** for better performance.
* For automation or headless use:
  * Explore **VBoxManage** to script VM creation and USB filters.
    {% endstep %}
    {% endstepper %}


# Discord server

Collective Minds has an official Discord server where you can get support and stay up to date with the latest news and releases.

**Join here:** <https://discord.gg/KuwFMtgVzP>


# Zen Link™

Browse the topics below:

* [What is Zen Link™](/zen-link-tm/what-is-zen-link-tm)
* [ Zen Link™ V1 Model Setup](/zen-link-tm/v1-setup)
* [ Zen Link™ V2 Model Setup](/zen-link-tm/v2-setup)


# What is Zen Link™

## ZenLink™ | PS5 Native Mode

PS5 NATIVE MODE IS HERE!

We’re excited to announce a major new update bringing full PS5 Native Mode support to Cronus Zen – no Remote Play required!

> #### ⚠️ Important
>
> Note: ZenLink is required to enable PS5 Native Mode.

***

#### ❓ What is ZenLink?

ZenLink is a specialized hardware bridge that enables the Cronus Zen to communicate directly with the PlayStation 5 console.

#### 🚀 Key Features

* No Remote Play Required Play all PS5 games natively without the need for a secondary PC or complex Remote Play setups.
* Ultra-Low Latency Direct connection ensures the fastest possible response times for competitive gaming.
* Full Game Compatibility Works with all PS5 titles, including those that previously required a specialized controller or Remote Play.
* Plug and Play Once configured via Zen Studio, the connection is handled automatically by the ZenLink hardware.


# V1 Setup

<h2 id="b-md3" align="center"> <img src="/files/b0Cwvu8NTC9Li2GudAjH" alt="" data-size="original"></h2>

<figure><img src="/files/CEGJ5Uiy8ptVTqxNINcU" alt="" width="250"><figcaption></figcaption></figure>

This page explains setup for the original Zen Link™ model via a Windows® 11 or 10 PC. After this initial setup on PC, you can use the new iOS® & Android® smartphone app for flashing GAMEPACKs and configuration.

{% hint style="info" %}
Zen Link™ is a Wi-Fi Expansion Module for use with Cronus Zen™ which is sold separately.

***

Zen Link™ is required for NATIVE PS5® play support. It also adds value across other gaming platforms (such as Xbox®) by enabling GAMEPACK flashing and configuration via your smartphone, while serving as a foundation for future feature expansion.
{% endhint %}

## Zen Link™ Model Check <a href="#b-md3" id="b-md3"></a>

***

{% hint style="danger" %}
**Note:** Please VERIFY that you own the original Zen Link™ device.
{% endhint %}

You can identify the model on the label underneath the device. The label below is from the new V2 device. If you have the original device, there will be ***NO*** mention of V2 on the label whatsoever...

<div align="left"><figure><img src="/files/5ZcT3BE7KcDqyvaRaX1F" alt="" width="319"><figcaption></figcaption></figure></div>

Upon confirmation that your device is indeed the original device (*no V2*), please proceed to the steps below. If, however, you ***DO*** see the "V2" moniker, you can find the V2 app-exclusive setup [**here**](/zen-link-tm/v2-setup).

## Zen Link™ V1 Setup Steps <a href="#b-md3" id="b-md3"></a>

***

After completing the initial **Windows® 11 or 10 PC** setup, your **Zen Link™** will provide both **PS5® NATIVE SUPPORT** and Wi-Fi <i class="fa-wifi">:wifi:</i> support for flashing and configuring **GAMEPACKS** using your smartphone.

### Part 1 - Windows® PC Setup

{% embed url="<https://youtu.be/i6EvQWueUWM>" %}

{% stepper %}
{% step %}
When you install Zen Studio﻿ on your Windows® PC, it includes the latest **ZenLinkConfigurator** (a shortcut is created on the desktop).

{% endstep %}

{% step %}
For the setup process, make sure your Windows® PC is connected to the **SAME** Wi-Fi <i class="fa-wifi">:wifi:</i> NETWORK that your Zen Link™ will be on. This network must be **2.4GHz** compatible. These are necessary REQUIREMENTS for Zen Link™ usage.

* Most modems/routers default to grouping the bands (2.4GHz﻿**,** 5GHz﻿, 6Ghz, etc) into a single network, which is usually fine.

{% endstep %}

{% step %}
Put the Zen Link™﻿ into <mark style="color:violet;">**Config Mode**</mark> by plugging it into your Windows® PC while holding the blue Config button for 5 seconds until the LEDs turn <mark style="color:violet;">**PURPLE**</mark>.
{% endstep %}

{% step %}
Open the **ZenLinkConfigurator** *(Right click on the shortcut and select **Run as Administrator**)*.

{% endstep %}

{% step %}
If you're going to be playing on a PlayStation®5 console, make sure you select Native PS5®.

{% endstep %}

{% step %}
Enter Wi-Fi details manually or **Read Settings From Windows®**. **NOTE:** If this step doesn't work, check to see if you have both 2.4GHz﻿ and 5GHz﻿ Wi-Fi options on your network and make sure you're connected to 2.4GHz﻿ (see troubleshooting below regarding 2.4GHz﻿ modem support).

{% endstep %}

{% step %}
Click **Save And Continue**. Wait for **Saving Configuration** and **Flashing Firmware** to complete. ***DO NOT*** disconnect the device during this process!

{% endstep %}

{% step %}
When **Configuration Complete** is shown, click **Close Application** and confirm **Yes** to close the app. You can also revert your PC to a 5GHz﻿ or wired LAN connection if that's what you were previously using. **Your Zen Link™﻿ is now ready to hook up to your Cronus Zen™﻿ and for use with the SMARTPHONE app!**
{% endstep %}
{% endstepper %}

### Part 2 - Smartphone App Setup

{% stepper %}
{% step %}
Plug your Zen Link™ device into your plugged in Cronus Zen™. We recommend plugging it into the **A1** (left side) port as that is where it will reside for native PS5® play.

<div align="left"><figure><img src="/files/IhG2C1OcdK3byWkql2g7" alt="" width="188"><figcaption></figcaption></figure></div>

* Once **CONNECTED**, your Zen Link™'s LED will turn **WHITE**.

<div align="left"><figure><img src="/files/JH8UtAQal9skckfJofqW" alt="" width="125"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
Download the Zenlink App from the <i class="fa-app-store-ios">:app-store-ios:</i> iOS® App Store or <i class="fa-google-play">:google-play:</i> Google® Play Store.

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><a href="https://apps.apple.com/ca/app/cronus-zenlink/id6764543287"><strong>Link Here</strong></a></td><td data-object-fit="contain"><a href="/files/Rmm36MbfGIMvI51aittL">/files/Rmm36MbfGIMvI51aittL</a></td></tr><tr><td align="center"><a href="https://play.google.com/store/apps/details?id=com.collectiveminds.zenlink&#x26;pcampaignid=web_share"><strong>Link Here</strong></a></td><td data-object-fit="contain" data-alt="Google Play Store"><a href="/files/FRcSkbCPUbYrAdUt8BZG">/files/FRcSkbCPUbYrAdUt8BZG</a></td></tr><tr><td align="center"></td><td></td></tr></tbody></table>

{% endstep %}

{% step %}
Make sure your SMARTPHONE's Bluetooth® is turned on, and it is connected to the **SAME** Wi-Fi <i class="fa-wifi">:wifi:</i> NETWORK that your Zen Link™ is on, then launch the Zenlink App on your smartphone.

<div align="left"><figure><img src="/files/8Guv1kVQsRsI2UAXgHlu" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
The app will automatically find your Zen Link™ via Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>.

<div align="left"><figure><img src="/files/mdYGp0EjAqcpXJ2ZIDSq" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
The main "**CRONUS ZenLink**" screen will appear. You can now use your Zen Link™ for NATIVE PS5® play, or simply for installing and configuring GAMEPACKS on your Cronus Zen™.

<div align="left"><figure><img src="/files/BMf1uRJlwYrVd2RDhxQN" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
To set up your PS5® settings for PS5® Native Play, see PS5® Console Settings below:
{% endstep %}
{% endstepper %}

## PS5® Console Settings <a href="#upe7g" id="upe7g"></a>

***

The following **Settings** must be applied on your PlayStation®5 console before using Cronus Zen™ with Zen Link™ V2 for PS5® Native Play.

### Power Saving <a href="#id-9-egu" id="id-9-egu"></a>

**System** → **Power Saving** → **Set Time Until PS5® Enters Rest Mode**\
• While Playing Games → Don’t Put in Rest Mode

**System** → **Power Saving** → **Features Available in Rest Mode**\
• Supply Power to USB Ports → Always\
• Stay Connected to the Internet → Enable\
• Enable Turning On PS5® from Network → Enable

**System** → **Power Saving** → **Set Time Until Controllers Turn Off**\
• Don’t Turn Off

### Controller Settings <a href="#id-8h1uf" id="id-8h1uf"></a>

**Accessories** → **Controller (General)**\
• Vibration Intensity → Strong (Standard)\
• Trigger Effect Intensity → Strong (Standard)\
• Communication Method → Use USB Cable

**Accessories** → **Advanced Settings**\
• Bluetooth → Off

<div align="left"><figure><img src="/files/6ZrCewuzmpjJUJkBG6jk" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
That last one "**Communication Method → Use USB Cable**" is especially important for the PS5® to be able to connect through the Cronus Zen™ and Zen Link™ at all.
{% endhint %}

**Note:** If you are using a DualSense Edge™ controller, its settings are located under **Profile 1**. See below for setup:

### DualSense Edge™ Curve <a href="#loryk" id="loryk"></a>

If you are using a DualSense Edge™ controller, you must change the built-in Right Stick Sensitivity/Deadzone settings to default or it will break the functionality of many M.O.D.﻿s including Silent Aim v2﻿.

* Go to Settings > **Accessories**.
* Select DualSense Edge™ Wireless Controller > **Custom Profiles**.
* Select **Create Custom Profile**, name it something like **BEAM**, then select **OK**.
* Select the profile you created and...
* Right Stick Sensitivity Curve: **Default**
* Curve Adjustment: **0**
* Deadzone Adjustment: **0%**

## <i class="fa-seal-exclamation">:seal-exclamation:</i> Troubleshooting <a href="#dqbbz" id="dqbbz"></a>

***

### <i class="fa-mobile">:mobile:</i> App - Connection Failed <a href="#rlr_z" id="rlr_z"></a>

If you see the "Connection Failed" message, your smartphone is likely *not* on the same network as your Zen Link™.

* Make sure your smartphone is connected to Wi-Fi <i class="fa-wifi">:wifi:</i> on the **SAME** network that is 2.4Ghz compatible, and **PRESS** the "**Try Again**" button.

<div align="left"><figure><img src="/files/X8cVAMvneVbXe6kU2FmT" alt="" width="188"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
If you still have no luck, it may even be worth temporarily disabling Mobile Data on your smartphone to be sure. And in the event that it is something more problematic, like the 2.4Ghz band on your network has been disabled, you will have to consult your modem/router's guide or internet provider to resolve it.
{% endhint %}

### <i class="fa-mobile">:mobile:</i> App - Zen Link™ Not Found <a href="#rlr_z" id="rlr_z"></a>

If you have previously setup the Zen Link™ on Windows® PC and the app is *not* connecting to it, make sure your smartphone is connected to the **SAME** network and **PRESS** the "**Retry**" button.

* Make sure your Zen Link™ is powered on and reachable via Wi-Fi <i class="fa-wifi">:wifi:</i> or Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>.
* Make sure your network is still allowing for 2.4Ghz connections, because the Zen Link™ is a 2.4Ghz device.

<div align="left"><figure><img src="/files/FaBpOG9WmUxkca1B1Lqy" alt="" width="188"><figcaption></figcaption></figure></div>

### <i class="fa-headset">:headset:</i> No Headset Audio on PS5® <a href="#rlr_z" id="rlr_z"></a>

A 3.5mm wired headset is *unsupported* when your DualSense™ is paired wirelessly to the Cronus Zen™﻿ via Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>. It will work if your controller is wired to one of the Cronus Zen's front ports (A2 or A3). If you'd prefer to use your controller wirelessly with headset audio, you'll need a USB or wireless headset that connects directly to your PS5® console.

### <i class="fa-gamepad-modern">:gamepad-modern:</i> No Connection to PS5® <a href="#rlr_z" id="rlr_z"></a>

The PS5® console setting "**Communication Method → Use USB Cable**" is especially important for the PS5® to be able to connect through the Cronus Zen™ and Zen Link™ at all.

### <i class="fa-arrows-rotate-reverse">:arrows-rotate-reverse:</i> Factory Reset <a href="#rlr_z" id="rlr_z"></a>

If your Zen Link™ is not behaving correctly and you need to reset it to factory settings, follow the steps below.

{% hint style="warning" %}
A factory reset will erase all custom settings on your Zen Link™
{% endhint %}

1. Unplug all cables from the Zen Link™.
2. Turn the Zen Link™ around so the back is facing you.
3. Locate the small hole on the back and insert a needle into it.
4. While holding the needle in place, plug the cables back in.
5. Wait 3 seconds, then remove the needle.

Your Zen Link™ is now factory reset and ready to use.


# V2 Setup

<h2 id="b-md3" align="center"> <img src="/files/b0Cwvu8NTC9Li2GudAjH" alt="" data-size="original"><mark style="color:blue;"><strong>V2</strong></mark></h2>

<figure><img src="/files/CEGJ5Uiy8ptVTqxNINcU" alt="" width="250"><figcaption></figcaption></figure>

This page explains full setup for the Zen Link™ V2 model, exclusively via the new iOS® & Android® smartphone app.

{% hint style="info" %}
Zen Link™ V2 is a Wi-Fi Expansion Module for use with Cronus Zen™ which is [**Sold Separately**](https://collectivemindsstore.myshopify.com/collections/cronus-zen/products/cronus-zen).

***

Zen Link™ V2 is required for NATIVE PS5® play support. It also adds value across other gaming platforms (such as Xbox®) by enabling GAMEPACK flashing and configuration via your smartphone, while serving as a foundation for future feature expansion.
{% endhint %}

## Zen Link™ Model Check <a href="#b-md3" id="b-md3"></a>

***

{% hint style="danger" %}
**Note:** Please VERIFY that you own a Zen Link™ V2 or higher device.
{% endhint %}

You can identify the model on the label underneath the device.

<div align="left"><figure><img src="/files/5ZcT3BE7KcDqyvaRaX1F" alt="" width="319"><figcaption></figcaption></figure></div>

Upon confirmation that your device is indeed "V2", please proceed to the steps below. If you *do not* see the "V2" moniker, you can find V1 setup [**here**](broken://pages/l6kW3oicpxrilh4MJqY0).

## Zen Link™ V2 Setup Steps <a href="#b-md3" id="b-md3"></a>

***

After completing this setup, your **Zen Link™ V2** will provide both **PS5® NATIVE SUPPORT** and Wi-Fi <i class="fa-wifi">:wifi:</i> support for flashing and configuring **GAMEPACKS** using your smartphone.

{% stepper %}
{% step %}
Make sure your SMARTPHONE is connected to the **SAME** Wi-Fi <i class="fa-wifi">:wifi:</i> NETWORK that your Zen Link™ V2 will be on. This network must be **2.4GHz** compatible. These are necessary REQUIREMENTS for Zen Link™ V2 usage.

* Most modems/routers default to grouping the bands (2.4GHz﻿**,** 5GHz﻿, 6Ghz, etc) into a single network, which is usually fine.

{% endstep %}

{% step %}
Make sure your smartphone's Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i> setting is turned **ON**.

{% endstep %}

{% step %}
Plug in your Zen Link™ V2 device, so that it powers up. We recommend plugging it into the **A1** (left side) port of a plugged in Cronus Zen™ as that is where it will reside for native PS5® play.

<div align="left"><figure><img src="/files/IhG2C1OcdK3byWkql2g7" alt="" width="188"><figcaption></figcaption></figure></div>

* The Zen Link™ V2 device's LED will turn <mark style="color:$success;">**GREEN**</mark>, then <mark style="color:blue;">**BLUE**</mark>.

<div align="left"><figure><img src="/files/0oTCPKxwFuZWHqyVeHwA" alt="" width="125"><figcaption></figcaption></figure></div>

* When it is <mark style="color:blue;">**BLUE**</mark>, it is READY for setup.
* It will only turn **WHITE** when setup is complete.

{% endstep %}

{% step %}
Download the Zenlink App from the <i class="fa-app-store-ios">:app-store-ios:</i> iOS® App Store or <i class="fa-google-play">:google-play:</i> Google® Play Store.

<table data-view="cards"><thead><tr><th align="center"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><a href="https://apps.apple.com/ca/app/cronus-zenlink/id6764543287"><strong>Link Here</strong></a></td><td data-object-fit="contain"><a href="/files/Rmm36MbfGIMvI51aittL">/files/Rmm36MbfGIMvI51aittL</a></td></tr><tr><td align="center"><a href="https://play.google.com/store/apps/details?id=com.collectiveminds.zenlink&#x26;pcampaignid=web_share"><strong>Link Here</strong></a></td><td data-object-fit="contain" data-alt="Google Play Store"><a href="/files/FRcSkbCPUbYrAdUt8BZG">/files/FRcSkbCPUbYrAdUt8BZG</a></td></tr><tr><td align="center"></td><td></td></tr></tbody></table>

{% endstep %}

{% step %}
Launch the Zenlink App on your smartphone.

<div align="left"><figure><img src="/files/8Guv1kVQsRsI2UAXgHlu" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
The app will automatically find your Zen Link™ V2 via Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>.

<div align="left"><figure><img src="/files/mdYGp0EjAqcpXJ2ZIDSq" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
You are now on the main setup screen. You will need to manually type in the **NETWORK ID** and **PASSWORD** for your Wi-Fi <i class="fa-wifi">:wifi:</i> credentials. Once correctly entered, **PRESS** the "**Connect to WiFi**" button.

<div align="left"><figure><img src="/files/yX8PPJJ8msrqtb92wevW" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
Your Zen Link™ V2 should connect via the 2.4Ghz band on your Wi-Fi <i class="fa-wifi">:wifi:</i> network.

<div align="left"><figure><img src="/files/NkRu9rdS3DRSU6aISQoT" alt="" width="188"><figcaption></figcaption></figure></div>

{% hint style="danger" %}
If your Zen Link™ V2 fails to connect, see [**Troubleshooting**](#rlr_z).
{% endhint %}

{% endstep %}

{% step %}
Once **CONNECTED**, your Zen Link™ V2's LED will turn **WHITE**.

<div align="left"><figure><img src="/files/JH8UtAQal9skckfJofqW" alt="" width="125"><figcaption></figcaption></figure></div>

The main "**CRONUS ZenLink**" screen will appear. You can now use your Zen Link™ V2 for NATIVE PS5® play, or simply for installing and configuring GAMEPACKS on your Cronus Zen™.

<div align="left"><figure><img src="/files/BMf1uRJlwYrVd2RDhxQN" alt="" width="188"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}
To set up your PS5® settings for PS5® Native Play, see PS5® Console Settings below:
{% endstep %}
{% endstepper %}

## PS5® Console Settings <a href="#upe7g" id="upe7g"></a>

***

The following **Settings** must be applied on your PlayStation®5 console before using Cronus Zen™ with Zen Link™ V2 for PS5® Native Play.

### Power Saving <a href="#id-9-egu" id="id-9-egu"></a>

**System** → **Power Saving** → **Set Time Until PS5® Enters Rest Mode**\
• While Playing Games → Don’t Put in Rest Mode

**System** → **Power Saving** → **Features Available in Rest Mode**\
• Supply Power to USB Ports → Always\
• Stay Connected to the Internet → Enable\
• Enable Turning On PS5® from Network → Enable

**System** → **Power Saving** → **Set Time Until Controllers Turn Off**\
• Don’t Turn Off

### Controller Settings <a href="#id-8h1uf" id="id-8h1uf"></a>

**Accessories** → **Controller (General)**\
• Vibration Intensity → Strong (Standard)\
• Trigger Effect Intensity → Strong (Standard)\
• Communication Method → Use USB Cable\
\
**Accessories** → **Advanced Settings**\
• Bluetooth → Off

<div align="left"><figure><img src="/files/6ZrCewuzmpjJUJkBG6jk" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
That last one "**Communication Method → Use USB Cable**" is especially important for the PS5® to be able to connect through the Cronus Zen™ and Zen Link™ V2 at all.
{% endhint %}

**Note:** If you are using a DualSense Edge™ controller, its settings are located under **Profile 1**. See below for setup:

### DualSense Edge™ Curve <a href="#loryk" id="loryk"></a>

If you are using a DualSense Edge™ controller, you must change the built-in Right Stick Sensitivity/Deadzone settings to default or it will break the functionality of many M.O.D.﻿s including Silent Aim v2﻿.

* Go to Settings > **Accessories**.
* Select DualSense Edge™ Wireless Controller > **Custom Profiles**.
* Select **Create Custom Profile**, name it something like **BEAM**, then select **OK**.
* Select the profile you created and...
* Right Stick Sensitivity Curve: **Default**
* Curve Adjustment: **0**
* Deadzone Adjustment: **0%**

## <i class="fa-seal-exclamation">:seal-exclamation:</i> Troubleshooting <a href="#dqbbz" id="dqbbz"></a>

***

### <i class="fa-mobile">:mobile:</i> App - Connection Failed <a href="#rlr_z" id="rlr_z"></a>

If you see the "Connection Failed" message, your smartphone is likely *not* on the same network as your Zen Link™ V2.

* Make sure your smartphone is connected to Wi-Fi <i class="fa-wifi">:wifi:</i> on the **SAME** network that is 2.4Ghz compatible, and **PRESS** the "**Try Again**" button.

<div align="left"><figure><img src="/files/X8cVAMvneVbXe6kU2FmT" alt="" width="188"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
If you still have no luck, it may even be worth temporarily disabling Mobile Data on your smartphone to be sure. And in the event that it is something more problematic, like the 2.4Ghz band on your network has been disabled, you will have to consult your modem/router's guide or internet provider to resolve it.
{% endhint %}

### <i class="fa-mobile">:mobile:</i> App - Zen Link™ V2 Not Found <a href="#rlr_z" id="rlr_z"></a>

If you have previously setup the Zen Link™ V2 and the app is *not* connecting to it, make sure your smartphone is connected to the **SAME** network and **PRESS** the "**Retry**" button.

* Make sure your Zen Link™ V2 is powered on and reachable via Wi-Fi <i class="fa-wifi">:wifi:</i> or Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>.
* Make sure your network is still allowing for 2.4Ghz connections, because the Zen Link™ V2 is a 2.4Ghz device.

<div align="left"><figure><img src="/files/FaBpOG9WmUxkca1B1Lqy" alt="" width="188"><figcaption></figcaption></figure></div>

### <i class="fa-mobile">:mobile:</i> App - Wi-Fi Configuration Retry <a href="#rlr_z" id="rlr_z"></a>

In the event that your Zen Link™ V2 *cannot* connect to Wi-Fi, it will return to Setup Mode (solid <mark style="color:blue;">**BLUE**</mark> LED), and the app will automatically detect that Wi-Fi needs to be configured again.

<div align="left"><figure><img src="/files/yX8PPJJ8msrqtb92wevW" alt="" width="188"><figcaption></figcaption></figure></div>

### <i class="fa-headset">:headset:</i> No Headset Audio on PS5® <a href="#rlr_z" id="rlr_z"></a>

A 3.5mm wired headset is *unsupported* when your DualSense™ is paired wirelessly to the Cronus Zen™﻿ via Bluetooth® <i class="fa-bluetooth-b">:bluetooth-b:</i>. It will work if your controller is wired to one of the Cronus Zen's front ports (A2 or A3). If you'd prefer to use your controller wirelessly with headset audio, you'll need a USB or wireless headset that connects directly to your PS5® console.

### <i class="fa-gamepad-modern">:gamepad-modern:</i> No Connection to PS5® <a href="#rlr_z" id="rlr_z"></a>

The PS5® console setting "**Communication Method → Use USB Cable**" is especially important for the PS5® to be able to connect through the Cronus Zen™ and Zen Link™ V2 at all.

### <i class="fa-arrows-rotate-reverse">:arrows-rotate-reverse:</i> Factory Reset <a href="#rlr_z" id="rlr_z"></a>

If your Zen Link™ is not behaving correctly and you need to reset it to factory settings, follow the steps below.

{% hint style="warning" %}
A factory reset will erase all custom settings on your Zen Link™
{% endhint %}

1. Unplug all cables from the Zen Link™.
2. Turn the Zen Link™ around so the back is facing you.
3. Locate the small hole on the back and insert a needle into it.
4. While holding the needle in place, plug the cables back in.
5. Wait 3 seconds, then remove the needle.

Your Zen Link™ is now factory reset and ready to use.


# PlayStation®5

﻿Cronus Zen™﻿ is fully compatible with all PlayStation® 5 console models, including both DualSense™ and DualSense Edge™ controllers, either when paired with the new **Cronus** Zen Link™﻿**Wi-Fi Expansion Module**, or through the [**Bypass**](/setup-guides/ps5bypass) method.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your PlayStation® 5 console!&#x20;

## PlayStation®5 Consoles

***

| PS5® Model            | Supported                                 |
| --------------------- | ----------------------------------------- |
| PlayStation®5         | <mark style="color:green;">**YES**</mark> |
| PlayStation®5 Digital | <mark style="color:green;">**YES**</mark> |
| PlayStation®5 Slim    | <mark style="color:green;">**YES**</mark> |
| PlayStation®5 Pro     | <mark style="color:green;">**YES**</mark> |

| DualSense™ Model | Supported                                 |
| ---------------- | ----------------------------------------- |
| DualSense™       | <mark style="color:green;">**YES**</mark> |
| DualSense Edge™  | <mark style="color:green;">**YES**</mark> |

<table><thead><tr><th width="430">DualSense™ Functions Require Cronus Zen Link™ or Bypass</th><th>Supported</th></tr></thead><tbody><tr><td>Rumbles &#x26; Haptic Feedback</td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr><tr><td>Adaptive Triggers</td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr><tr><td>Two Finger/Swipe Touchpad</td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr><tr><td>Gyroscope</td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr><tr><td>Wired Headset <em>(USB Only)</em></td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr><tr><td>Cronus BEAM® Gamepacks</td><td><mark style="color:green;"><strong>YES</strong></mark></td></tr></tbody></table>

{% hint style="danger" %}

## Wired Headset Support

If you are using a wired headset connected to the DualSense™ controller, it will only function when the controller is connected to the Cronus Zen™ via **USB**.\
3.5mm audio and microphone support are not available over a Bluetooth® controller connection.

If you are using a USB or wireless headset connected directly to the console, you may connect the DualSense™ to the Cronus Zen™ via Bluetooth®.

**Note:** The DualSense™ controller microphone and built-in speaker are not supported.
{% endhint %}

{% hint style="success" %}

## Cronus Zen Link™ Wi-Fi Expansion Module

Cronus Zen Link™ introduces Wi-Fi support to Cronus Zen™, enabling new features and expanded functionality, including PlayStation®5 compatibility.

This update allows ongoing feature development and system improvements.
{% endhint %}

## Disclaimers

***

By using this product, you acknowledge and agree to the following:

{% hint style="info" %}
⚠️ **Usage Agreement**

Zen Link™ is an expansion product and requires a separate Cronus Zen™ device.

A Windows™ 10 or Windows™ 11 PC is required for initial setup and firmware updates of Zen Link™. Cronus Zen™ also requires periodic access to a Windows™ 10/11 PC for configuration using Zen Studio™.

Zen Link™ operates using PS Remote Play and requires an active PSN® account.
{% endhint %}

{% hint style="info" %}
⚠️ Trademark Notice

Zen Link™ is a trademark of Collective Minds Gaming Co. Ltd.

All product names, logos, brands, trademarks, images, and videos referenced in this manual or on the website are used for identification purposes only and remain the property of their respective owners. These trademark owners are not affiliated with Collective Minds Gaming Co. Ltd. and do not sponsor or endorse its products, services, or websites.

“PlayStation®,” “PlayStation®5,” “PS5®,” “PSN®,” and “DualSense®” are trademarks of Sony Interactive Entertainment Inc.
{% endhint %}


# Xbox Series X|S®

Cronus Zen supports all versions of the Xbox® Series X|S console, and all official Xbox® Series X|S controllers.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your Xbox Series® X|S console!

## **Xbox**® Series **X|S Consoles**

***

| Xbox® Model            | Supported                                   |
| ---------------------- | ------------------------------------------- |
| Xbox® Series X         | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Xbox® Series S Digital | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## **Xbox**® Series **X|S Controllers**

***

Cronus Zen supports all variants of the Xbox® Series X|S controllers *(USB & Xbox Wireless Adapter - Bluetooth is not supported)*.

| Controller Model               | USB                                         | Adapter                                     | Bluetooth                                |
| ------------------------------ | ------------------------------------------- | ------------------------------------------- | ---------------------------------------- |
| Xbox® X\|S (1914)              | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |
| Xbox® X\|S Elite Series 2 Core | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |

## **Licensed Controllers**

***

The following are third-party licensed Xbox® Series X|S & Elite Core controllers that have been verified to work with Cronus Zen either by USB or Xbox Wireless Adapter.

**Note:** Some Xbox® Series X|S and Xbox® One controllers share identical names, but one may be supported by Zen and the other may not, so it's a good idea to know which model you have. They're easy to identify by the extra 'Capture' button *(see image below)*.

Xbox One & Xbox Series X|S Controllers﻿

<table><thead><tr><th>Xbox® Series X|S Controller</th><th width="249">USB</th><th>Adapter</th></tr></thead><tbody><tr><td>Gamesir G7 SE</td><td>﻿<mark style="color:green;"><strong>YES*</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Nacon RIG Pro Compact</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PDP Afterglow</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Fusion Pro 2</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Fusion Pro 3</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Spectra Infinity</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Enhanced</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Star Wars (Boba Fett)</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr><tr><td>Razer Star Wars (Mandalorian)</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr><tr><td>Razer Star Wars (Rebel)</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr><tr><td>Razer Wolverine v2</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Wolverine v2 Chroma</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Scuf Instinct</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr><tr><td>Scuf Instinct Pro</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr><tr><td>Turtle Beach Recon</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Turtle Beach REACT-R</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Victrix Gambit Dual Core</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr></tbody></table>

﻿**GAMESIR G7 SE CONTROLLER\***﻿

For Cronus Zen compatibility, you must do the following:

1. Download the [Gamesir Nexus app](https://www.gamesir.hk/pages/gamesir-nexus)﻿
2. Select the **Update** button and program to the latest version.
3. Once completed, select the **Profiles** button.
4. Profile 1 should be highlighted, select the **Configure** button.
5. Select the Sticks button at the top of the screen.
6. Set the Left Stick Range '**Initial**' value to 0. Enable **RAW**.
7. Set the Right Stick Range '**Initial**' value to 0. Enable **RAW**.
8. Move the sticks around until both X\&Y reads 0.00%
9. Press **A** to confirm.
10. Connect Zen to your console from the CONSOLE/PC USB port.
11. **Wait 5 seconds** then connect the Gamesir controller to A1. **Note:** If you don't wait the controller will not power on *(look for the White LED)*.
12. Tap Zen's reset button and after a few seconds the RGBs will change to **GREEN**.
13. You're now ready to play with peak precision!

Gamesir Nexus App﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/NbvarTFIK1tmvMI9_9PWY_image.png?format=webp" alt=""><figcaption></figcaption></figure>


# Connection Issues Fix

Xbox Controller Not Connecting — Troubleshooting

If your Xbox® controller does not connect through the Cronus Zen, follow the steps below. This process performs a full power cycle of the Zen while keeping the controller attached, which resolves most connection issues.

### Before You Start

* Keep your **Xbox**® **controller connected** to the Zen throughout the entire process.
* You will only be disconnecting and reconnecting the **USB cables** — never the controller itself.

### Step 1 — Power Cycle the Zen

1. Leave your Xbox® controller plugged into the Zen.
2. Disconnect all cables from the Zen, including:
   * The cable from the **top port** (PC/Console)
   * The cable from the **right port** (PROG)
3. Wait a few seconds so the Zen is fully powered off.

### Step 2 — Reconnect the Cables

1. Plug the cables back into the same ports they were connected to before.
2. Your Zen should now power on and detect the Xbox® controller.
3. In most cases, everything will work at this point.

### Step 3 — If the Controller Still Doesn't Respond

If the controller does not react after the power cycle:

* Press and hold the **Xbox**® **Guide button** on the controller to turn it on.
* The controller should now connect through the Zen.

### Step 4 — If the Problem Persists

If the controller still refuses to connect after all the steps above:

1. Perform a **Factory Reset** on the Cronus Zen (see the *Cronus Zen Factory Reset* guide).
2. After the reset is complete, repeat Steps 1 through 3 of this troubleshooting guide.

Once you've done a Factory Reset and repeated the connection process, the Xbox® controller should reliably connect through the Zen again.


# Nintendo Switch®

Cronus Zen supports the Nintendo® Switch console, and all official Nintendo controllers.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your Nintendo® Switch console!

## Nintendo® Switch **Consoles**

***

| Console Version          | Supported                                   |
| ------------------------ | ------------------------------------------- |
| Nintendo® Switch         | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Nintendo® Switch OLED    | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Nintendo® Switch Lite    | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Nintendo® Switch TV Dock | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## Nintendo® Switch **Controllers**

***

| Controller Model                | USB                                      | Bluetooth                                   |
| ------------------------------- | ---------------------------------------- | ------------------------------------------- |
| Nintendo® Switch Joy-Cons (L+R) | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Nintendo® Switch Wireless Pro   | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## **Licensed Controllers**

***

| Controller Model            | USB                                         | Bluetooth                                   |
| --------------------------- | ------------------------------------------- | ------------------------------------------- |
| Hori D-Pad Controller (L+R) | ﻿<mark style="color:red;">**NO**</mark>﻿    | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Hori Switch Horipad         | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    |
| Gulikit ZEN Pro             | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## **Enable Wired Comms**

***

You must enable Pro Controller Wired Communication for Cronus Zen to correctly pair with the Nintendo Switch.

* System Settings > Controllers and Sensors > Pro Controller Wired Communication: **On**

Nintendo Switch - System Settings﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/tmnWQ3EFTLdYceRFvXwUV_switchsettings.png?format=webp" alt=""><figcaption></figcaption></figure>

## Controller Setup

***

This guide will show you how to connect any controller to a Nintendo® Switch console.

Game with any device on your Nintendo® Switch﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/dnvQxKv1DPFAUluRBaW5R_switchcrossoversetup.png?format=webp" alt=""><figcaption></figcaption></figure>

## **Nintendo® Switch TV Dock**

***

When using a Switch TV Dock, make sure the 15v power supply is connected or the Zen will not power on.

If you are using the Switch in Handheld mode, you'll also need an OTG USB-C Adapter for the Cronus Zen to connect successfully.

* **Nintendo® Switch Wireless Pro (Bluetooth):**
  * Tap Zen's Bluetooth pairing button (P2) for pairing mode.
  * Hold down the sync button and after a few seconds it will pair with the Zen.
* **Nintendo® Switch Joy-Cons (Bluetooth):**
  * The Nintendo Switch Left & Right Joy-Con Controllers have to be paired separately to the Cronus Zen.
  * Tap Zen's Bluetooth pairing button (P2) for pairing mode, then hold down the **Joy-Con (Left) sync button** and after a few seconds it will vibrate.
  * Tap Zen's Bluetooth pairing button again, then hold down the **Joy-Con (Right) sync button** and it will also vibrate.

Nintendo® Switch Joy-Con Left Sync﻿Nintendo® Switch Joy-Con Right Sync﻿

<figure><img src="/files/grgiOnOJPNknDSEJCwk1" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/pVAdhPfnTIs7CPAwNOzd" alt=""><figcaption></figcaption></figure>

* **Crossover Gameplay:**
  * Non-Nintendo® Switch USB controllers connect to Zen's A3 USB port.
  * **Note:** An AUTH controller connected to A1 is not required.
* **Bluetooth Pairing:**
  * Tap Zen's Bluetooth pairing button (P2) for pairing mode, then...
  * ﻿**DualSense**﻿**®** **Controllers:** There is currently no Bluetooth support. Use USB.
  * ﻿**Xbox**® **Controllers:** There is currently no Bluetooth support. Requires adapter.
  * ﻿**Nintendo**® **Switch Controllers:** Hold down Sync buttons for pairing mode.
  * ﻿**DualShock® Controllers:** Hold down SHARE + PS for pairing mode.
* **Wireless Adapters:**
  * To achieve wireless support for Xbox® controllers, the Xbox Wireless Adapter is required. Plug it into A3, connect the Xbox® controller to A2 for a few seconds, then unplug. Soon, the LED on the Adapter and controller will turn solid white, indicating successful pairing.
  * The Astro® C40 adapter can also be connected to A3.

**IMPORTANT**

Your controller might not charge when connected via Zen. Ensure its fully charged or equipped with fresh batteries to prevent disconnections.

## Switch Headset Support

***

While the Switch itself doesn’t offer a direct wired headset connection via the Joy-Con or Wireless Pro controllers, we've engineered a sweet workaround for when it's docked.

When your Switch is nestled into a **Nintendo Switch TV Dock**, our added technical wizardry allows you to game using a DualSense, DualShock4, or Xbox Series X|S controller, all while enjoying full wired headset support.

Here’s your guide to popular controllers that enable headset support while gaming on the docked Nintendo Switch. Just ensure all controllers are connected to A3.

| PS4 DualShock4 v1 (CUH-ZCT1X) | ﻿<mark style="color:red;">**NO**</mark>﻿    | ﻿<mark style="color:red;">**NO**</mark>﻿    |
| ----------------------------- | ------------------------------------------- | ------------------------------------------- |
| PS4 DualShock4 v2 (CUH-ZCT2X) | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| PS5 DualSense                 | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    |
| Xbox Series X\|S              | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    |
| Xbox One                      | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    |

## **Check Zen Connection**

***

Navigate to 'Controllers' from the Switch menu and observe the icon:

* If it displays 'USB', the Switch is correctly synced to the Zen.
* If the 'USB' is not displayed, tap Zen's reset button to resynchronize.

Cronus Zen is connected.﻿Cronus Zen is disconnected.﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/YzuIL7fPe8kXK12VmzKMr_image.png?format=webp" alt=""><figcaption></figcaption></figure>

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/sMsB0orHoQUjPgjo8q48C_image.png?format=webp" alt=""><figcaption></figcaption></figure>

﻿


# PlayStation®4

Cronus Zen supports all versions of the PlayStation® 4 console, including all variations of DualShock4® controllers *(USB & Bluetooth)*.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your PlayStation® 4 console!

## **PlayStation**® **4 Consoles**

***

| Console Version     | Supported                                     |
| ------------------- | --------------------------------------------- |
| PlayStation® 4      | ﻿<mark style="color:green;">**YES**</mark>﻿   |
| PlayStation® 4 Slim | ﻿<mark style="color:green;">**YES**</mark>﻿   |
| PlayStation® 4 Pro  | ﻿<mark style="color:green;">**YES\***</mark>﻿ |

﻿*\*The Cronus Zen CONSOLE/PC USB cable must be connected to the **REAR USB PORT** of the PlayStation 4 Pro. The front USB ports do not have enough power for the Cronus Zen.*﻿

## **DualShock4**® **Controllers**

***

| Controller Model           | USB                                         | Bluetooth                                   | Audio (USB)                                 | Auth                                        |
| -------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- |
| DualShock4® v1 (CUH-ZCT1X) | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    | ﻿<mark style="color:red;">**NO**</mark>﻿    |
| DualShock4® v2 (CUH-ZCT2X) | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |

﻿*X: U=USA, E=Europe, J=Japan*﻿

**DUALSHOCK4® V2 SUPPORT**

There are two DualShock4® models DS4v1 and DS4v2. While v1 does great for basic gaming, it does not support audio *(no headsets and no DS4 speaker)* and will not work as an AUTH controller for PS4 crossover setups.

Meanwhile, the DS4v2 has your back, fully supporting all gaming, audio, and crossover setup needs. Spot a blue lightbar on the touchpad? That's a DS4v2!

The sticker found on a DualShock4® v2 (DS4 v2)﻿

<figure><img src="/files/cN1A28Ioilv7No8qmjkx" alt=""><figcaption></figcaption></figure>

## **PlayStation**® **Move Controllers**

***

The original, and most third-party versions of PlayStation® Move (L + R) controllers can easily pair to the Zen by Bluetooth - Left Bluetooth channel, & Right Bluetooth channel.

## **Licensed Controllers**

***

For Bluetooth support on a PlayStation® 4 console, some third-party licensed controllers require a DualShock4® v2 AUTH controller connected to A1.

| PS4 Controller Model                      | USB                                           | Wireless                                                                                                                                |
| ----------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Astro C40 TR                              | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:green;">**YES**</mark><mark style="color:green;">**&#x20;**</mark>*<mark style="color:green;">**(Adapter)**</mark>* |
| Hori PS4 Mini-Pad                         | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Horipad 4 FPS                             | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Horipad FPS Plus                          | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Mad Catz Street Fighter V FightStick TE2+ | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Nacon Compact Wired Controller            | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Nacon Revolution Pro v1                   | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Nacon Revolution Pro v2                   | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Nacon Revolution Pro v3                   | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Nacon Revolution Unlimited Pro            | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:green;">**YES**</mark><mark style="color:green;">**&#x20;**</mark>*<mark style="color:green;">**(Adapter)**</mark>* |
| PowerA Fusion Pro                         | ﻿<mark style="color:green;">**YES\***</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Razer Raiju Tournament Edition            | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Razer Raiju Ultimate                      | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Scuf Infinity4PS Pro (DS4 v1 Model)       | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:green;">**YES**</mark><mark style="color:green;">**&#x20;**</mark>*<mark style="color:green;">**(BT)**</mark>*      |
| Scuf Infinity4PS Pro (DS4 v2 Model)       | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:green;">**YES**</mark><mark style="color:green;">**&#x20;**</mark>*<mark style="color:green;">**(BT)**</mark>*      |
| Scuf Impact                               | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:green;">**YES**</mark><mark style="color:green;">**&#x20;**</mark>*<mark style="color:green;">**(BT)**</mark>*      |
| Scuf Vantage                              | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |
| Scuf Vantage 2                            | ﻿<mark style="color:green;">**YES**</mark>﻿   | ﻿<mark style="color:red;">**NO**</mark>﻿                                                                                                |

﻿*\*Requires PC mode which will output as an Xbox controller.*﻿


# Xbox® One

Cronus Zen supports all versions of the Xbox® One console, and all official Xbox® One controllers.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your Xbox® One console!

## **Xbox**® One **Consoles**

***

| Console Version                   | Supported                                   |
| --------------------------------- | ------------------------------------------- |
| Xbox® One                         | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Xbox® One S                       | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Xbox® One S (All Digital Edition) | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| Xbox® One X                       | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## **Xbox**® One **Controllers**

***

| Controller Model       | USB                                         | Adapter                                     | Bluetooth                                |
| ---------------------- | ------------------------------------------- | ------------------------------------------- | ---------------------------------------- |
| Xbox® One (1537, 1697) | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |
| Xbox® One S (1708)     | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |
| Xbox® Elite (1698)     | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |
| Xbox® Elite Series 2   | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |

## **Licensed Controllers**

***

<table><thead><tr><th>Bluetooth</th><th width="249">USB</th><th>Bluetooth</th></tr></thead><tbody><tr><td>GameStop Wired</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>GameStop Metallic Limited Edition</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Hori Horipad</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Enhanced</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Mini</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Fusion 2</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Fusion Pro</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Pro Ex</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Spectra</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PowerA Star Wars Stormtrooper</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>PDP Afterglow Prismatic</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Atrox Arcade Stick</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Atrox Dragon Ball Fighter Z</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Wildcat</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Wolverine Tournament Ed.</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Razer Wolverine Ultimate</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>Scuf Prestige</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr></tbody></table>


# PlayStation®3

Cronus Zen supports all versions of the PlayStation® 3 console, including all variations of DualShock3® & PlayStation® 3 Move controllers *(USB & Bluetooth)*.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your PlayStation® 3 console!&#x20;

## **PlayStation**® **3 Consoles**

***

| Console Version                       | Supported                                   |
| ------------------------------------- | ------------------------------------------- |
| PlayStation® 3 (CECH-L00)             | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| PlayStation® 3 Slim (CECH-2000)       | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| PlayStation® 3 Slim (CECH-3000)       | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| PlayStation® 3 Super Slim (CECH-4000) | ﻿<mark style="color:green;">**YES**</mark>﻿ |

## **DualShock3**® **Controllers**

***

| Controller Model          | USB                                         | Bluetooth                                   | Audio                                    |
| ------------------------- | ------------------------------------------- | ------------------------------------------- | ---------------------------------------- |
| DualShock3® (SCPH-98050 ) | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |
| DualShock3® (CECH-ZC2)    | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿ |

## **PlayStation**® 3 **Move Controllers**

***

| PlayStation® Move Motion (CECH-ZCM1X)     | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| ----------------------------------------- | ---------------------------------------- | ------------------------------------------- |
| PlayStation® Move Navigation (CECH-ZCS1X) | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |

﻿*X: U=USA, E=Europe, J=Japan*﻿


# Xbox 360®

Cronus Zen supports all versions of the Xbox® 360 console, and all official Xbox® 360 controllers.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your Xbox® 360 console!

## **Xbox**® 360 **Controllers**

***

| Controller Model     | Audio                                    | Supported                                   |
| -------------------- | ---------------------------------------- | ------------------------------------------- |
| Xbox 360 Wired       | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿ |
| ﻿Xbox 360 Wireless\* | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:red;">**NO**</mark>﻿    |

<br>


# Nintendo® Wii

﻿Cronus Zen supports all versions of the Nintendo® Wii console, and all official Nintendo® Wii controllers.

Remember, when using Cronus Zen, any supported device *(controllers, mice, keyboards)* will work with your Nintendo® Wii console!

## Nintendo® Wii **Controllers**

***

| Controller Model      | USB                                      | Bluetooth                                       |
| --------------------- | ---------------------------------------- | ----------------------------------------------- |
| Nintendo Wii U Pro    | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES**</mark>﻿     |
| Nintendo Wiimote      | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES\***</mark>﻿   |
| Nintendo Wiimote Plus | ﻿<mark style="color:red;">**NO**</mark>﻿ | ﻿<mark style="color:green;">**YES\*\***</mark>﻿ |

﻿*\*Does not support Gyroscope (requires the Nintendo MotionPlus adapter or use a Nintendo Wiimote Plus).*\
*\*\*Expansion port supports Nintendo Wii Nunchucks*﻿

## **Wii Sensor Bar**

***

﻿﻿A Wii USB Sensor Bar can be used with a Wii Remote Plus and Cronus Zen™.\
Connect the sensor bar to any USB power source and position it within clear view of your play area.

The sensor bar provides infrared reference points for the Wii Remote Plus.\
The controller’s front-facing IR camera detects these infrared LEDs to determine its position.


# Windows® PC

Cronus Zen™ can be used on PC; however, official support is not provided for PC use.

## What You Need to Know

***

﻿Do not leave the **PROG USB port** connected when starting a game. Disconnect it first.


# Android®

Cronus Zen™ allows you to play games across supported Android devices using a compatible controller. It can be used on phones, tablets, and laptops.

## Step-By-Step

***

{% stepper %}
{% step %}
Connect Cronus Zen™ to a Windows® PC using the **PROG USB port**.
{% endstep %}

{% step %}
Open **Zen Studio → Device Panel** and enable **PS Remote Play**.\
You may then disconnect the **PROG USB cable**.

Note: PS Remote Play is enabled to ensure controllers connected to Android are detected correctly.
{% endstep %}

{% step %}
Connect Cronus Zen™ to the Android USB-C device using the **CONSOLE/PC USB port**.\
A **USB-C OTG adapter** is required.
{% endstep %}

{% step %}
Ensure the Zen is powered on. Wait approximately 10 seconds before connecting a controller.
{% endstep %}

{% step %}
After 10 seconds, connect a supported controller to the Zen’s A3 USB port.

**Note:** Wireless controllers must be fully charged. They do not charge from the Android device.
{% endstep %}
{% endstepper %}


# Apple®

Cronus Zen™ supports compatible Apple devices, including iPad®, iPhone®, and Mac®. It allows the use of supported controllers across these platforms.

## Step-By-Step

***

{% stepper %}
{% step %}
Connect Cronus Zen™ to a Windows® PC using the **PROG USB port**.

{% endstep %}

{% step %}
Open **Zen Studio → Device Panel** and enable **PS Remote Play**.\
You may then disconnect the **PROG USB cable**.

**Note:** This setting ensures controllers connected to the Apple device are detected correctly.
{% endstep %}

{% step %}
Connect Cronus Zen™ to the supported Apple device using the **CONSOLE/PC USB port**.\
A compatible **Lightning adapter** (or USB-C adapter, depending on the device) is required.
{% endstep %}

{% step %}
Ensure the Zen is powered on. Wait approximately 10 seconds before connecting a controller.
{% endstep %}

{% step %}
After 10 seconds, connect a supported controller to the Zen’s A3 USB port.

**Note:** Wireless controllers must be fully charged. They do not charge from the Apple device.
{% endstep %}
{% endstepper %}


# Mouse & Keyboard

While we aim to support as many popular gaming mice and keyboards as possible, some models may not function correctly or may not be supported.

The following list includes devices that have been confirmed as compatible.

## Supported Mice & Keyboards

***

Cronus Zen™ is designed to detect most mice and keyboards that conform to the standard USB interface.

If a device is not listed, it does not necessarily mean it is unsupported — it may not have been tested. If your device functions correctly and is not listed, please report it so the compatibility list can be updated.

<table><thead><tr><th width="243">Model (Mice)</th><th width="117">Connect</th><th width="123">Sensor</th><th>Max Poll</th><th>Max DPI</th></tr></thead><tbody><tr><td>Cooler Master MM710</td><td>USB</td><td>PMW3389</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Cooler Master MM711</td><td>USB</td><td>PMW3389</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Corsair Harpoon RGB Pro</td><td>USB</td><td>PMW3327</td><td>1000Hz</td><td>12,000</td></tr><tr><td>Corsair IRONCLAW RGB</td><td>Wireless</td><td>PMW3391</td><td>1000Hz</td><td>18,000</td></tr><tr><td>Corsair M65 Pro<strong>*</strong></td><td>USB</td><td>PMW3360</td><td>1000Hz</td><td>12,000</td></tr><tr><td>Corsair M65 RGB Elite</td><td>USB</td><td>PMW3391</td><td>1000Hz</td><td>18,000</td></tr><tr><td>Glorious Race Model O</td><td>USB</td><td>PMW3360</td><td>1000Hz</td><td>12,000</td></tr><tr><td>Logitech G Pro</td><td>USB</td><td>HERO 25K</td><td>1000Hz</td><td>25,600</td></tr><tr><td>Logitech G Pro Ultralight</td><td>USB</td><td>HERO 25K</td><td>1000Hz</td><td>25,600</td></tr><tr><td>Logitech G403<strong>*</strong> <strong>**</strong></td><td>Wireless</td><td>HERO 25K</td><td>1000Hz</td><td>25,600</td></tr><tr><td>Logitech G502 Proteus<strong>**</strong></td><td>USB</td><td>PMW3366</td><td>1000Hz</td><td>12,000</td></tr><tr><td>Logitech G502 Lightspeed<strong>**</strong></td><td>USB</td><td>HERO 16K</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Logitech G502 Hero<strong>**</strong></td><td>USB</td><td>HERO 16K</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Logitech G703 Lightspeed*</td><td>USB</td><td>HERO 25K</td><td>1000Hz</td><td>25,600</td></tr><tr><td>Razer Deathadder Chroma</td><td>USB</td><td>ADNS-3988</td><td>1000Hz</td><td>10,000</td></tr><tr><td>Razer Deathadder Elite<strong>²</strong></td><td>USB</td><td>PMW3390</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Razer Deathadder Essential<strong>²</strong></td><td>USB</td><td>PMW3327</td><td>1000Hz</td><td>6,400</td></tr><tr><td>Razer Mamba</td><td>USB</td><td>PMW3389</td><td>1000Hz</td><td>5,600</td></tr><tr><td>Razer Naga Pro<strong>***</strong></td><td>USB</td><td>Focus+</td><td>1000Hz</td><td>20,000</td></tr><tr><td>Razer Naga Pro<strong>***</strong></td><td>Wireless</td><td>Focus+</td><td>1000Hz</td><td>20,000</td></tr><tr><td>Razer Naga Trinity<strong>³</strong></td><td>USB</td><td>PMW3389</td><td>1000Hz</td><td>16,000</td></tr><tr><td>Razer Viper Ultimate</td><td>USB</td><td>Focus+</td><td>8000Hz</td><td>20,000</td></tr><tr><td>Redragon M612</td><td>USB</td><td>PAW 3104</td><td>1000Hz</td><td>8,000</td></tr><tr><td>SteelSeries Rival 500<strong>³</strong></td><td>USB</td><td>PMW3360</td><td>1000Hz</td><td>16,000</td></tr><tr><td>SteelSeries Rival 600</td><td>USB</td><td>TruMove 3</td><td>1000Hz</td><td>12,000</td></tr><tr><td>UTechSmart Venus Pro RGB</td><td>USB</td><td>PWM3335</td><td>1000Hz</td><td>16,000</td></tr></tbody></table>

**\*** Requires the supplied USB wireless dongle. Bluetooth is not supported.\
**\*\*** All additional mouse buttons must be mapped to keyboard keys using Logitech G HUB software.\
**\*\*\*** All additional mouse buttons must be mapped to keyboard keys using Razer Synapse software.\
**²** No onboard memory profile.\
**³** Supports the 2-button configuration. The 7-button and 12-button configurations require key binding using Razer Synapse 3.

| Model (Keyboard)                 | Note         |
| -------------------------------- | ------------ |
| Corsair K3&#x30;**\***           | 🍊           |
| Corsair K4&#x30;**\***           | 🍊           |
| Corsair K5&#x30;**\***           | 🍊           |
| Corsair K5&#x35;**\***           | 🍊           |
| Corsair K6&#x30;**\***           | 🍊           |
| Corsair Hyper &#x58;**\***       | 🍊           |
| Corsair K6&#x35;**\*²**          | 🍊⛔          |
| Corsair K6&#x38;**\*²**          | 🍊⛔          |
| Corsair K7&#x30;**\*²**          | 🍊⛔          |
| Corsair K9&#x30;**\*²**          | 🍊⛔          |
| Corsair K9&#x35;**\*²**          | 🍊⛔          |
| Corsair K10&#x30;**\*²**         | 🍊⛔          |
| Corsair Straf&#x65;**\*\***      | 🍎           |
| FNATIC STREAK65 RG&#x42;**\***   | 🍊           |
| HyperX Alloy Core RGB            | <p>﻿<br></p> |
| Logitech G213                    | <p>﻿<br></p> |
| Logitech G413                    | <p>﻿<br></p> |
| Logitech G512**³**               | 🍉           |
| Logitech G713                    | <p>﻿<br></p> |
| Logitech G815**³**               | 🍉           |
| Logitech G915**²**               | ⛔            |
| Logitech G Pro**²**              | ⛔            |
| Razer Orbweaver                  | <p>﻿<br></p> |
| Razer Ornata Chroma              | <p>﻿<br></p> |
| Razer Tartarus V2                | <p>﻿<br></p> |
| Redragon K5 Rang&#x65;**\*\*\*** | 🍒           |
| Redragon K6 Rang&#x65;**\*\*\*** | 🍒           |
| Steelseries Apex Pro             | <p>﻿<br></p> |

**\*** The keyboard must be set to **BIOS mode** or it will not be detected.\
**\*\*** The keyboard must be set to **BIOS mode on every startup**.\
**\*\*\*** This keyboard also enumerates as a mouse. It must be added to the **ignore list**.\
**²** Certain firmware versions may not be recognized correctly.\
**³** This keyboard has two USB cables. If not using the MK Switch, connect the cable labeled with the **keyboard icon**.


# Racing Wheels

Cronus Zen™ provides support for select legacy Logitech® and Fanatec® racing wheels on PlayStation®4, including Force Feedback, pedals, brake, clutch, and shifter functionality.

## Supported Racing Wheels﻿

***

* Fanatec® ClubSport Wheel Base v1
* Fanatec® ClubSport Wheel Base v1.5
* Fanatec® ClubSport Wheel Base v2
* Fanatec® CSR
* Fanatec® CSR Elite
* Fanatec® Porsche 911 GT2
* Fanatec® Porsche 911 GT3
* Fanatec® Porsche 911 GT3 R
* Fanatec® Porsche 911 GT3 RS v2
* Fanatec® Porsche 911 Turbo
* Fanatec® Porsche 911 Turbo S
* Logitech® Driving Force GT
* Logitech® G25
* Logitech® G27

## Step-By-Step

***

{% stepper %}
{% step %}
﻿Connect Cronus Zen™ to a PC using the **PROG USB port** and open **Zen Studio**.
{% endstep %}

{% step %}
Go to **Tools → Zen Operational Mode** and select **Wheel Mode**.

Disconnect the Zen from the PC. Do not connect it to the PlayStation® yet.
{% endstep %}

{% step %}
Connect the authentication (AUTH) controller to the Zen’s **A1 USB port**:

* DualSense® (PS5®)
* DualShock®4 (PS4®)

This controller must remain connected while the racing wheel is in use.
{% endstep %}

{% step %}
Connect the racing wheel to the Zen’s **A3 USB port**.

If the wheel has an external power supply (e.g., Logitech® G27), connect it. Attach all required peripherals (pedals, shifter, etc.).
{% endstep %}

{% step %}
Connect Cronus Zen™ to the PS5® or PS4® using the CONSOLE/PC USB port.

**Warning:** Keep clear of the wheel during calibration. The wheel may rotate unexpectedly and cause injury or equipment damage.
{% endstep %}

{% step %}
Ensure both the AUTH controller and racing wheel are powered on.

Press the Zen’s **blue reset button** once.\
If synchronization fails, disconnect the AUTH controller from **A1**, then reconnect it.
{% endstep %}

{% step %}
Launch a supported racing title.
{% endstep %}
{% endstepper %}


# Zen DS4 Back Button

The Cronus Zen™ DS4 Back Button attachment adds additional programmable inputs to the DualShock®4 controller, including Bluetooth® support when used with Cronus Zen™.

When paired with Cronus Zen™, the modified DualShock®4 can be used across supported PlayStation®, Xbox®, and Nintendo Switch® consoles.

﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/VYz9Ct45FrwfMdsa1Tzx6_backbutton.png?format=webp" alt=""><figcaption><p>Cronus Zen™ DS4 Back Button</p></figcaption></figure>

The DS4 Back Button attachment provides:

• Four programmable action buttons\
• Ergonomic rear-mounted design\
• Bluetooth® support when used with Cronus Zen™

Button Mapping Features:

• Map up to 17 controller functions\
• Compatible with Cronus Zen™ features for action button configuration\
• No PC required, adjustments can be made directly using the Cronus Zen™ OLED screen

## Step-By-Step

***

﻿

{% stepper %}
{% step %}
Attach the Zen Back Button to the DualShock®4 controller.
{% endstep %}

{% step %}
Pair the DualShock®4 to Cronus Zen™ via Bluetooth®:

* Press the Zen **P2 button**, then hold **SHARE + PS** on the controller.
* The LEDs will flash, then turn solid when pairing is complete.
  {% endstep %}

{% step %}
Press the left Mapping button on the Back Button until the mapping menu appears on the Zen OLED screen.
{% endstep %}

{% step %}
To assign a function:

Hold the Back Button you want to map, then press the desired controller input (up to 17 available functions).

* The selection will be displayed on the OLED screen.
* The selection will be displayed on the OLED screen.
  {% endstep %}

{% step %}
Press B / CIRCLE to save and exit.
{% endstep %}

{% step %}
Connect Cronus Zen™ to the target console (PlayStation®, Xbox®, or Nintendo Switch®).\
Ensure the correct **authentication (AUTH) controller** is connected to **A1**.

**Note:**

* For PS4® Bluetooth® setups, a second DualShock®4 must be connected to **A1** for authentication.
* For PS4® USB setups, connect the DualShock®4 with Back Button directly to **A1**.
  {% endstep %}
  {% endstepper %}


# Zen Studio Overview

Zen Studio is the configuration software for Cronus Zen™.

It provides:

• Device configuration and maintenance tools\
• GPC script development and compilation\
• Mouse & Keyboard configuration\
• Input capture and remapping plugins

## Library Panel

***

Provides access to downloadable GPC scripts from the online database.

When logged in, your Community Account information appears on the right side of the panel.

## Compiler Panel

***

Integrated development environment (IDE) for GPC scripting.

Features:

• Source code editor\
• Syntax highlighting\
• Find / Replace\
• Integrated compiler\
• Debug output window

## Programmer Panel

***

Used to assign content to the Zen’s memory slots.

Provides access to:

• GamePacks\
• Library Scripts\
• Remapper Profiles\
• Local GPC files

## Device Panel

***

Contains device configuration and maintenance tools, including:

• Output Protocol selection\
• PS4 Speciality and Remote Play options\
• Legacy 16-bit compiler toggle\
• Reset Device\
• Factory Reset\
• Erase Memory Slots\
• Device Monitor access\
• Connected device information

## M\&K Settings Panel

***

Mouse & Keyboard configuration interface.

Allows:

• Sensitivity adjustments\
• Deadzone configuration\
• Ballistic curve tuning\
• Button and key remapping\
• Profile management


# Main Interface

This page explains the layout and core functionality of Zen Studio™.

## Menu Bar

***

The Menu Bar provides access to all major functions through drop-down menus.

Includes:

• File management\
• Script editing tools\
• Device tools\
• Plugins\
• Support resources

### File, Edit & Compiler

These menus are used for:

• Creating and saving GPC scripts\
• Managing GPJ project files\
• Editing and navigating code\
• Compiling scripts

## Tools

***

Provides access to device management and system tools.

#### Device Monitor

Opens the Device Monitor window.\
Requires Cronus Zen™ to be connected via the PROG USB port.

#### Zen Studio Update

Checks for available software updates.\
Requires internet connection.

#### Zen Operational Mode

Select the device’s operating mode:

• **Normal Mode** – Full functionality enabled\
• **Tournament Mode** – Scripts and GamePacks disabled\
• **Wheel Mode** – Enables supported racing wheel functionality

## Plugins

***

Plugins extend functionality and can be accessed via menu or shortcuts.

• **MAX Combo (Alt + F1)** – Records controller input and converts it to GPC code\
• **MAX Mapper (Alt + F2)** – Visual remapping tool with GPC export\
• **MAX Rec (Alt + F3)** – Records and replays input sequences

## Help

***

Provides access to:

• Online documentation\
• Community resources\
• User Manual\
• About Zen Studio (F1) – Displays software and firmware version information

## Working Panels

***

Navigation tabs switch between five main panels:

• **Library** – Download and browse GPC scripts\
• **Compiler** – Create and edit GPC scripts\
• **Programmer** – Assign GamePacks, scripts, and profiles to memory slots\
• **Device** – Configure device settings and maintenance tools\
• **M\&K Settings** – Mouse & Keyboard configuration

For detailed explanations, see:\
**Working Panels**

## Community Panel

***

Displays:

• Community account status\
• GPC Library statistics\
• Registered device information\
• Zen serial number

The serial number links the device to the registered account and stores configuration data per device.

## Status Bar

***

Located at the bottom of the interface. Divided into three sections:

#### Left Section

Displays device connection status and firmware version.

#### Middle Section

Displays the active Operational Mode.\
Clickable to reopen the Operational Mode interface.

#### Right Section

Displays compiler information:

• Script status (OK / BAD)\
• Current line and column\
• Insert (INS) or Overtype (OVR) mode


# File Management

Zen Studio provides standard file management tools for handling **GPC scripts** and **GPJ project files**.

### File Types

***

**.GPC**\
GPC scripting language file used by Cronus devices.

**.GPJ**\
Project file containing a collection of GPC scripts.

## Creating Files

***

Navigate to **File → New** to access the following options:

#### Empty File

Creates a blank file in a new compiler tab.

#### GPC Script

Creates a new GPC script template including the `main` function.

#### Remap Sample

Creates a sample remapping script template.

#### Combo Rapid Fire

Creates a sample rapid-fire combo script template.

## Opening Files

***

#### Open…

**File → Open (Ctrl + O)**

Open one or multiple GPC or GPJ files.\
Each file opens in a separate compiler tab.\
If already open, the existing tab is selected.

## Project Management

***

### Add File to Project

Adds a `.gpc` file to the currently open project (.GPJ).

Requirements:\
• A project must already be open.

Use:\
**File → Add File to Project**

### Save Project

Saves all currently included scripts into a single GPJ project file.

Before saving:\
• Ensure all individual scripts are saved.

### Save Project As…

Save the current project under a new name or location.

### Close Project

Closes the currently open project file.

## Saving Files

***

#### Save (Ctrl + S)

Saves the active script.

If the file is new, a destination prompt appears.\
If it exists, it will be overwritten.

**Important:**\
The script tab must be selected (focused), otherwise Save and Compile options are unavailable.

Unsaved changes are indicated by an **asterisk (\*)** in the tab name.

#### Save As…

Save the active script or project under a new name or location.

#### Save All

Saves all open scripts.

## Closing Files

***

#### Close

Closes the selected tab.\
Unsaved changes will trigger a confirmation prompt.

#### Close All

Closes all open compiler tabs.

***

## Recent Files

Zen Studio stores the 10 most recently opened files under:

**File → Recent Files**

***

## Relaunch as Admin

Zen Studio requires full Windows Administrator privileges.

If permissions are restricted:

**File → Relaunch as Admin**

If successful, **\[ADMIN]** will appear in the title bar.

Note:\
Open tabs must be closed before relaunching.

***

## Exit

Closes Zen Studio.


# Edit, Search, Replacement

The Zen Studio Compiler supports standard editor operations including:

• Undo / Redo\
• Cut / Copy / Paste\
• Select All\
• Find / Replace\
• Go to Line / Column

All functions are available via the **Edit Menu**, keyboard shortcuts, or right-click context menu.

## Indentation

***

Indentation improves code readability by organizing logic into structured blocks.

• **Tab** – Indent current line or selected block\
• **Shift + Tab** – Remove indentation

Multiple lines can be indented simultaneously by selecting them before pressing Tab.

## Overtype Mode

***

Press the **Insert** key to toggle between:

• **INS** – Insert mode (default)\
• **OVR** – Overwrite mode

The current mode is displayed in the status bar.\
The cursor shape changes to reflect the active mode.

## Selecting Text

***

Text can be selected using:

• Click and drag\
• Double-click (select word)\
• Triple-click (select line)\
• Click line number margin (select full line)

Extend selection with:

• **Shift + Click**\
• **Shift + Arrow Keys**

Rectangle (block) selection:

• Hold **Alt** while selecting with the mouse.

## Edit Menu Commands

***

### Undo (Ctrl + Z)

Reverses the last action.\
Can be repeated until returning to the original state.

### Redo (Ctrl + Y)

Reapplies the last undone action.

### Cut (Ctrl + X)

Removes selected text and copies it to the clipboard.

### Copy (Ctrl + C)

Copies selected text without removing it.

### Paste (Ctrl + V)

Inserts copied or cut text at the cursor location.

### Select All (Ctrl + A)

Selects all text in the current document.

## Find / Replace (Ctrl + F)

***

Search for specific text or replace matching entries.

Useful for:

• Variable renaming\
• Refactoring\
• Large script adjustments

## Go to Line / Column (Ctrl + G)

***

Jump directly to a specific line or column number.

Recommended for large scripts (4000+ lines).


# Working Panels

Zen Studio is organized into five main working panels.\
Use the navigation tabs to switch between them.

### 1. Library

***

Provides access to downloadable GPC scripts from the online database.

Intended for:

• Users who want ready-made scripts\
• Learning GPC through community examples

### 2. Compiler

***

Integrated development environment (IDE) for GPC scripting.

Includes:

• Source code editor\
• Syntax highlighting\
• Integrated compiler\
• Debug and testing tools

Used for creating and modifying custom scripts.

### 3. Programmer

***

Used to manage and assign content to the Zen’s memory slots.

Provides access to:

• GPC Scripts\
• Remapper Profiles\
• Local GPC files

Cronus Zen™ includes **8 × 32KB memory slots**.\
Any combination of supported content can be assigned.

### 4. Device

***

Contains configuration and maintenance options, including:

• Device settings\
• Output protocol selection\
• PS4 Speciality and Remote Play options\
• Memory slot management\
• Factory Reset and Erase Memory Slots\
• Device Monitor access\
• Connected device display

Used for device configuration and troubleshooting.

### 5. M\&K Settings

***

Mouse & Keyboard configuration interface.

Allows:

• Mouse sensitivity tuning\
• Deadzone configuration\
• Ballistic curve adjustment\
• Button and key remapping\
• Loading premade game profiles

Used to optimize mouse translation within console input limits.


# Library

The GPC Library provides access to community-created GPC scripts.

Access requires:\
• A registered Cronus Zen™ device

The library contains a large collection of downloadable scripts for various supported games and controllers.

## Script Information Panel

***

When selecting a script, the information panel displays:

• Script title\
• Version number\
• Author name\
• Author notes

This section provides important usage details and compatibility information before downloading or compiling a script.


# Compiler

The Compiler is an integrated development environment (IDE) for creating, editing, and compiling GPC scripts.

Features include:

• Syntax highlighting\
• Find / Replace\
• Real-time error reporting\
• Bytecode size and memory usage analysis\
• Debug output window

### 16-Bit vs 32-Bit Scripts

***

Legacy 16-bit scripts must be compiled using the **Legacy 16-Bit Compiler**.

Enable this option in:

**Device Panel → Use Legacy 16-Bit Compiler**

Use this only for older scripts that require compatibility.

## Compiler Interface

***

### Tab Bar

Displays all open GPC scripts.

• Drag and drop to reorder tabs\
• An asterisk (\*) indicates unsaved changes

### Editor Window

Used to edit GPC source code.

Includes:

• Real-time syntax highlighting\
• Text formatting\
• Search functionality

Syntax highlighting improves readability and reduces coding errors.

### Compiler Output

Displays compilation results for the active script.

Output includes:

• Errors\
• Warnings\
• Bytecode size\
• Stack memory usage\
• Percentage of memory used

Cronus Zen provides **8 × 32KB memory slots**.

#### Important

Warnings should be treated as errors.

Even if compilation succeeds, warnings may indicate:

• Deprecated functions\
• Out-of-range values\
• Potential instability

Unresolved warnings can cause runtime issues or device error codes.

## Compiler Menu

***

### Font Size

Adjust editor font size via:

**Compiler → Font Size**

Default: 10

### Compile (F7)

Compiles the active script without running it.

Used to verify:

• Errors\
• Warnings\
• Memory usage

### Build and Run (F5)

Compiles the active script and loads it directly into device RAM.

The script runs immediately without programming a memory slot.

Commonly used for live testing with the **Device Monitor**.

### Publish Script

Allows submission of a GPC script to the public GPC Library.

Requirements:

• Registered device\
• Internet connection

Access via:

**Compiler → Publish Script**

This opens the publishing portal in your default web browser.


# Programmer

The **Programmer** panel provides access to:\
• GPC Scripts\
• Remapper Profiles\
• Local GPC files

Cronus Zen™ includes **8 memory slots (32KB each)**.\
Any combination of scripts, or profiles can be assigned to these slots.

## Panel Sections

***

### File Directory

Browse local folders and GPC files.

Features:

• Set a favorite folder\
• Reset favorite to default (Desktop)\
• Refresh local directory

Right-click the Favorites bar to reset it.

### GPC Scripts

***

Any script currently open in the Compiler appears here.

Drag and drop to a memory slot to assign.

### Remapper Profiles

***

Displays profiles created using the **MAX Mapper** plugin.

Drag and drop to assign to a memory slot.

## Memory Slot Management

***

### Program Device

Click **Program Device** to write all configured memory slots to the Cronus Zen.

### Reload Memory Slots

If changes are made via the GamePack Configuration Interface (GCI), use **Reload Memory Slots** to sync Zen Studio with the device.

### Delete Memory Slot

Drag a slot to the **trash icon** to clear it.\
Click **Program Device** to confirm deletion.


# Device

The **Device** tab allows you to:

• View connected devices\
• Configure device options\
• Manage output protocols\
• Run maintenance tools\
• Access diagnostics

## Device Options

***

### DualShock®4 Light Bar Brightness

Adjust DS4 light bar brightness in real time.

### Open Device Monitor with Build and Run

Automatically opens **Device Monitor** when using **Build and Run (F5)**.

### Unload Script When Closing Device Monitor

Scripts launched with **Build and Run (F5)** will unload when Device Monitor is closed.

### Disable Screen Saver When Device Monitor Is Open

Temporarily disables the Windows screensaver while Device Monitor is active.

### Open GamePack Configuration After Drag and Drop

Automatically opens the GamePack configuration interface after assigning it to a memory slot.

### Enable Autosave in Compiler

Automatically saves open files to prevent data loss.

### Use Legacy 16-Bit Compiler

Enables compatibility with older 16-bit scripts.\
Select this only when required for legacy scripts.

## PS4 Speciality (PS5 Support)

***

PS5 usage may require a licensed third-party PS4 controller as an authentication device (“PS4 Speciality Controller”).

When enabled, this allows supported controllers to function on PS5/PS4 titles without periodic disconnection.

To enable:

1. Select **Enable PS4 Speciality (For PS5 Console)**.
2. The device will reset automatically.
3. If not detected afterward, click **Find Device**.

## Enable PS Remote Play

***

Select **Enable PS Remote Play®** to configure the device for Remote Play usage.

The device will reset after activation.

## Emulator Output Protocol

***

Select the console output type:

• PlayStation 4 / 5\
• Xbox One / Series X|S\
• Nintendo Switch\
• PS3\
• Xbox 360\
• PC / Mobile

Default: **Auto** (recommended)

If experiencing PC detection issues, manually select **Xbox 360** or **PC/Mobile**.

### Mirror Function

The Output Protocol mirrors the controller connected to **A1**.

Any controller connected to A2, A3, or Bluetooth will appear to the console as the A1 device type.

Not applicable to PS5 authentication methods.

## Remote Slot Change

***

Allows memory slot switching directly from the connected controller.\
Available button combinations vary by controller type.

## Maintenance Tools

***

### Factory Reset

Restores all settings to default and erases memory slots.

### Erase Memory Slots

Clears all memory slots without changing other device settings.

### Reset Device

Reboots the Zen without manual power cycling.

### Find Device

Reinitializes device detection in Zen Studio.

## Bluetooth Management

***

### Clear BT Devices

Clears all stored Bluetooth pairings.

Steps:

1. Power off the device you want to unpair.
2. Open Zen Studio → Device Tab → **Clear BT Devices**.
3. Confirm until completion message appears.
4. Disconnect all USB cables from the Zen.
5. Pair the controller to another device before reconnecting to Zen.

## Diagnostics

***

### Device Monitor

Displays real-time:

• I/O data\
• CPU load\
• VM speed\
• Battery status\
• USB / Bluetooth inputs\
• Rumble and LED states

## Connected Devices

***

Displays logos of registered consoles and input devices currently detected.

## Zen Flash

***

Shows flash memory usage for loaded scripts and GamePacks.

## Zen Serial Number

***

Displays the device’s unique serial number.\
Used for product registration and access to restricted community areas.


# M\&K Settings

The M\&K Settings plugin allows configuration of mouse translation and keyboard mapping for console gameplay.

It provides detailed control over:

• Mouse sensitivity\
• Boost\
• Inverted Y-axis\
• Ballistic curves\
• Deadzone compensation\
• Deadzone shape\
• Analog Stickize\
• Button and key mapping

The goal is to optimize mouse-to-reticle translation within console limitations.

## Layout System

***

M\&K Settings includes **six independent layouts**.

Each layout contains:

• Dedicated Aim Settings\
• Independent Button Mappings

Layouts allow different configurations for various gameplay styles or scenarios.

## Aim Settings

***

Aim Settings provide advanced mouse tuning options, including:

• Sensitivity adjustments\
• Boost control\
• Six selectable ballistic curves\
• Deadzone configuration

Ballistic curves modify input response behavior to fine-tune acceleration and precision.

## Button Mapping

***

Button mapping is divided into:

• Primary mappings\
• Secondary mappings\
• Movement mappings

Mappings are not restricted to a single input device.\
Controller inputs can be combined with mouse and/or keyboard input.

Copy and Paste tools allow entire sections of Aim Settings or Mappings to be duplicated without affecting other sections.

***

For more detailed technical guidance, refer to the [**Mouse & Keyboard**](/mouse-and-keyboard/overview) section.


# Zen Studio Update

Zen Studio requires an active internet connection to check for and install updates.

### Automatic Update

***

If a mandatory or critical update is available, a notification will appear on launch.

To update:

1. Click **OK** on the update prompt.
2. Zen Studio will open the **Software Update** interface automatically.
3. Follow the on-screen instructions to complete the update.

### Manual Update (Recommended for Older Versions)

***

Some older versions may not support automatic updates.

If Zen Studio has not been updated recently:

1. Uninstall the current version.
2. Download the latest version from the official website.
3. Install the new version.


# Zen Operational Mode

Easily switch between Normal Mode, Tournament Mode & Wheel Mode.

﻿

<figure><img src="https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/-Qr9_KGD2Zvmk5dQ5Zpyv_2022-03-2912-03-21.jpg?format=webp" alt=""><figcaption></figcaption></figure>

Zen Operational Mode allows you to easily switch between **Normal Mode** (Default functionality), **Tournament Mode** (compiler is disabled, blocking access to scripts and GamePacks while optimizing data throughput), and **Wheel Mode** where you can connect any Logitech DFGT/G25/G27 or compatible PS3 Fanatec Wheel directly to a PS4 with full Force Feedback Support by emulating a Logitech G29 (which is also compatible with Cronus Zen). Support includes all pedals, brakes, and gear shifters that also connect to these wheels.

**🔎Find more detailed information for the three available Modes 👉 here:**

﻿[Normal Mode](https://guide.cronus.support/normal-mode)﻿

﻿[Tournament Mode](https://guide.cronus.support/tournament-mode)﻿

﻿[Wheel Mode](https://guide.cronus.support/P7ae-wheel-mode)﻿


# Normal Mode

Normal Mode enables all primary Cronus Zen™ features, including:

• GPC Script Compiler\
• GamePacks\
• GPC Library\
• Mouse & Keyboard support\
• Device Monitor and Plugins

### How to Enable Normal Mode

***

1. Connect Cronus Zen™ to a Windows® PC using a **mini-USB cable** via the **PROG USB port**.
2. Open **Zen Studio**.
3. Navigate to **Tools → Zen Operational Mode**.
4. Select **Normal Mode** and click **Finish**.

### Confirm Active Mode

***

The currently active Operational Mode is displayed in the **status bar** at the bottom of Zen Studio.

Clicking the status bar will reopen the **Zen Operational Mode** interface.


# Tournament Mode

Tournament Mode disables features that may provide gameplay automation, including:

• Scripts\
• Macros\
• GamePacks

The following features remain available:

• Cross-Over Controller support\
• Automatic Button Remapping

### How to Enable Tournament Mode

***

1. Connect Cronus Zen™ to a Windows® PC using a **mini-USB cable** via the **PROG USB port**.
2. Open **Zen Studio**.
3. Navigate to **Tools → Zen Operational Mode**.
4. Select **Tournament Mode**, then click **Finish**.

### Confirm Tournament Mode

***

When Tournament Mode is active:

• The status bar will display **Tournament Mode**.\
• The firmware label will show **TE** next to the firmware version.\
• The Zen OLED screen will display the Tournament Mode graphic.

You can click the status bar at any time to reopen the **Zen Operational Mode** interface.


# Wheel Mode

Wheel Mode enables compatibility for supported Logitech® and Fanatec® racing wheels on PlayStation®4 and PlayStation®5.

Supported wheels can operate with:

• Force Feedback (FFB)\
• Pedals\
• Brakes\
• Clutch\
• Shifter

Compatibility depends on the game supporting native racing wheel input.

For more detailed technical guidance, refer to the [**Wheel Mode**](/wheel-mode/ps5setup) section.


# Device Monitor

The Device Monitor provides real-time diagnostic data from the Cronus Zen™.

It displays:

• Controller input and output data\
• CPU load\
• VM speed\
• Battery status\
• USB and Bluetooth device information (VID/PID)\
• Memory slot control\
• LED and rumble status\
• Debug trace fields

This tool is primarily used for controller testing and GPC script debugging.

### Requirement

Device Monitor is only accessible when the Zen is connected to a PC via the **PROG USB port**.

## Interface Overview

***

### Input Area

Displays real-time controller input data, including:

• Buttons\
• Analog sticks\
• Triggers\
• Sensors (accelerometer / gyro)

If no controller is connected, a prompt will appear.

Click any input field to plot its live value in the Plot Area.\
Up to **4 fields** can be plotted simultaneously.

### Output Area

Displays processed output after GPC script or GamePack execution.

If no console is connected, you can manually select the **Emulator Output Protocol**:

• PlayStation 4 / 5\
• Xbox One / Series X|S\
• Switch\
• PS3\
• Xbox 360\
• PC / Mobile

#### TRACE Debug Fields

Six TRACE fields are available for GPC debugging:

• Flow validation\
• Variable monitoring\
• Script state feedback

Output and TRACE values can also be plotted (up to 4 at once).

## Status & Controls

***

### CPU Load

Indicates processing load.

• Below 80% = normal\
• Sustained high values may indicate inefficient scripts

### VM Speed

Adjusts Virtual Machine execution speed (1ms–40ms).\
Default: **10ms**

Lower values = faster execution\
Higher values = slower execution

Recommended for advanced script testing only.

### Active Slot

Displays:

• Active memory slot number\
• Loaded GamePack or script name

Controls:

• **+** – Cycle slots\
• **Unload** – Revert to Slot 0\
• **CFG** – Open GamePack configuration\
• **Build and Run (F5)** – Temporarily uses Slot 10

## Device Information

***

### USB / Bluetooth Inputs

Supports:

• 3 × USB inputs\
• 2 × Bluetooth inputs

Click the info icon to view:

• VID / PID\
• Extended device data

Use the refresh icon to rescan devices.

### Controller Battery

Displays battery level for wireless controllers.\
Not applicable to wired controllers.

### Input Labels

Identifies the active controller type.\
Selecting it updates the Output Area layout accordingly.

## Feedback Indicators

***

### LED Status

Displays Player LED state:

• ON\
• OFF\
• Slow Blink\
• Fast Blink

Note: GPC scripts and GamePacks can override LED behavior.

### Rumble Status

Displays rumble motor intensity:

• 0% = Off\
• 100% = Full power

Rumble A = Strong motor\
Rumble B = Weak motor\
RT/LT = Xbox trigger motors

Rumble output can also be controlled by GPC scripts.

## Plot Area

***

Used for real-time data analysis and debugging.

• Click any field to begin plotting\
• Click again to stop\
• Maximum 4 fields at once

### Plot Controls

• **Pause Plot** – Freeze graph for inspection\
• **Highlight Accel/Gyros** – Emphasize sensor data\
• **Deselect All** – Clear all selected fields\
• **Capture** – Save a screenshot of the plot area with labels


# Plugins

Add-ons expand and enhance the functionality of Zen Studio by providing advanced tools and extended configuration features.<br>

Available Add-Ons

﻿[MAX Combo](https://guide.cronus.support/max-combo)﻿

﻿[MAX Mapper](https://guide.cronus.support/max-mapper)﻿

﻿[MAX Rec](https://guide.cronus.support/max-rec)﻿


# MAX Combo

MAX Combo is a Zen Studio add-on that automates the creation of combo sequences by recording controller inputs and converting them into GPC code.

The plugin:

• Records controller input data\
• Converts recorded input into structured GPC code\
• Optimizes generated code for minimal size\
• Preserves event timing and execution accuracy\
• Automatically detects the start and end of input sequences\
• Allows optional inclusion or exclusion of accelerometer data and DS4 touchpad input\
• Supports recordings up to 300 seconds per session

Once recorded, the generated GPC script can be edited, refined, and recompiled inside Zen Studio.

## ﻿Capture Options

***

• **Combo Name** – Enter the name for the generated combo.\
• **Include Accelerometer Data** – Optional.\
• **Include DS4 Touchpad Data** – Optional.\
• **Stick Deadzone Adjustment** – Configure if required.

These settings determine what input data will be recorded and converted into GPC code.

## Start Capture

***

Click **Start Capture** to begin a 3-second countdown.

• The capture buffer records up to **30 seconds** of input.\
• Perform the desired controller actions within this time.\
• Click **Stop** to manually end the recording, or allow the buffer to complete.

The code generation algorithm automatically detects the beginning and end of the input sequence and converts it into optimized GPC code.

## GPC Code

***

This area displays the generated GPC code after capture.

The optimization process minimizes code size while preserving accurate event timing and transitions.

If the generated result is satisfactory:

1. Select all code.
2. Copy and paste it into your GPC script for further editing or use.

## Status Bar

***

The Status Bar provides real-time information during and after capture, including:

• Buffer usage during recording\
• Number of transitions detected\
• Number of commands generated

This helps evaluate recording completeness and code complexity.

## Device Monitor

***

Opens the **Device Monitor**, which displays live input and output activity from the connected device.

<br>


# MAX Mapper

MAX Mapper is a Zen Studio add-on that allows you to remap controller inputs and adjust sensitivity settings without writing code.

It supports:

• Button remapping\
• Analog stick configuration\
• Trigger sensitivity adjustment\
• Profile creation and management\
• Automatic GPC script generation

Profiles can be generated as GPC scripts or programmed directly to a Cronus Zen memory slot.

## Managing Profiles

***

A **Profile** is a saved configuration containing remaps and sensitivity adjustments.

The MAX Mapper plugin supports:

• Unlimited profiles\
• Import / Export for backup or sharing\
• Real-time testing while editing

While MAX Mapper is open, changes apply instantly. You can test adjustments live using gameplay or the Device Monitor.

## Profile Menu

***

• **Create** – Create a new profile with default settings.\
• **Import** – Load a previously exported profile file.\
• **Export** – Save the active profile for backup or sharing.\
• **Rename** – Rename the active profile.\
• **Delete** – Permanently delete the active profile.

## Active Remap

***

Displays all created profiles.\
The selected profile becomes the active configuration for editing, exporting, generating GPC, or deletion.

## Input & Output Selection

***

### Input

Select the controller type:

• PlayStation 4\
• Xbox One\
• PlayStation 3\
• Xbox 360\
• Switch Joy-Con

**Note:**\
If using PS5®, select *PlayStation 4*.\
If using Xbox Series X|S®, select *Xbox One*.

### Output

Select the console type:

• PlayStation 4\
• Xbox One\
• PlayStation 3\
• Xbox 360\
• Switch

## Profile Operations

***

• **Generate GPC Script** – Creates a GPC script based on the active profile and opens it in the code editor.\
• **Export Profile** – Save profile to file.\
• **Rename Profile** – Change profile name.\
• **Delete Profile** – Remove profile permanently.

## Mapping

***

Click the **Mapping** icon to assign any input button to any output button.

**Note:**\
Xbox Elite v1 paddles can be remapped independently.\
Xbox Elite Series 2 paddles cannot be remapped independently.

Other paddle-based controllers (e.g., Scuf) require GPC scripting for paddle remapping.

## Sticks

***

The **Sticks** section allows configuration of:

• Stick Size\
• X / Y Sensitivity\
• X / Y Deadzone\
• X / Y Midpoint\
• Axis Inversion

#### Sensitivity

Controls how responsive horizontal (X) and vertical (Y) movement is.

#### Deadzone

Defines the non-responsive area near the center of the stick to eliminate jitter.

#### Invert Axis

Reverses X or Y axis direction.

#### Midpoint

Default: 50%.\
Adjusting midpoint creates dual sensitivity zones:

* Lower values: Higher sensitivity near center
* Higher values: Lower sensitivity near center, higher sensitivity at extremes

#### Stick Size

Adjusts how input values map to analog stick range.

Xbox consoles allow full square axis values.\
PlayStation consoles restrict movement to circular limits.

Default value: **142**\
Some PlayStation titles may respond better at **115–120**.

Leave at default unless adjustment is required.

## Triggers

***

The **Triggers** section allows adjustment of:

• Left Trigger sensitivity\
• Right Trigger sensitivity

## Profile Configuration Area

***

Select **Input Protocol** and **Output Protocol** first.

The controller graphic represents the **Output Protocol (console)**.\
The surrounding selections represent the **Input (controller type)**.

## Storing Profiles to Cronus Zen

***

1. Open the **Programmer Panel** in Zen Studio.
2. Select the **Remapper Profiles** icon.
3. Drag and drop a profile into any Cronus Zen memory slot.


# MAX Rec

MAX Rec is a Zen Studio add-on that records controller input sequences and replays them with 1:1 timing accuracy.

It captures all controller inputs and stores them in a temporary memory buffer for playback or export.

### Requirements

Cronus Zen™ must be connected:

• To your console\
• To your Windows PC via the **PROG USB port**

## Plugin Interface

***

### Information Area

Displays details about the recorded sequence, including:

• Whether the sequence was loaded from file or recorded live\
• Total length (in seconds)\
• Playback progress bar

The progress bar represents the full sequence and playback position.

## Load File

***

Loads a previously saved recording file into the memory buffer.

## Play / Pause

***

Starts or pauses playback of the loaded sequence.

## Loop

***

When enabled, playback automatically restarts at the end of the sequence.

## Record / Stop

***

• **Record** – Begins capturing controller inputs into the memory buffer.\
• **Stop** – Ends recording or stops playback.

## Save File

***

Saves the current memory buffer to a file for later use or sharing.

## Device Monitor

***

Opens the Device Monitor to display live input and output activity.


# URL Hooks

URL Hooks allow you to open Zen Studio and automatically load scripts into the compiler using a custom protocol link.

This feature enables direct integration of web-hosted GPC scripts with Zen Studio.

### How It Works

***

URL Hooks use the `zenstudio://` protocol to trigger specific actions inside Zen Studio.

After the script loads into the compiler, you can compile and program the device as usual.

### Available URL Commands

***

#### 1. Open Zen Studio

```
zenstudio://
```

Launches Zen Studio.

#### 2. Add GPC Library Script to Compiler

```
zenstudio://lib/script/?scripts=12345
```

Loads the specified GPC Library script (by ID) directly into the compiler.

Replace `12345` with the desired script ID.

#### 3. Add Any Web-Hosted GPC Script

```
zenstudio://www.example.com/myscript.gpc
```

Loads a publicly hosted `.gpc` file directly into the compiler.

The script must be accessible via direct URL.

### Example

```
zenstudio://www.mywebsite.com/myscript.gpc
```


# M\&K Overview

This guide will help you **setup, fine-tune** and **understand** Mouse and Keyboard with the Cronus Zen.

## Guide Sections

***

This guide is split into clear sections. Click any one to get started.

* [﻿Native vs Emulation difference﻿](/mouse-and-keyboard/native-vs-emulation)
* [﻿Supported Platforms and Devices﻿](/mouse-and-keyboard/supported-platforms-and-devices)
* [﻿Connect & Configure Mouse & Keyboard﻿](/mouse-and-keyboard/connect-and-configure)
* [Import Game Specific Profiles﻿﻿](broken://pages/sAOeJzCJRgMxHmuvjeb3)


# Native vs Emulation

## Native vs Emulation

***

Understanding the difference between **Native Mouse & Keyboard support** and **Mouse & Keyboard Emulation** is essential for knowing how your inputs are handled in-game.

## Difference between Native and Emulation?

***

**Native MK support** means the game accepts mouse and keyboard input **directly. MK Emulation** means your mouse and keyboard are translated into **controller inputs**.

**Native:** Mouse and Keyboard goes **directly** into the **PC/Console** **Emulation:** Mouse and Keyboard goes into the **Cronus ZEN** first then into the **PC/Console**

## &#x20;Why do we need MK Emulation?

***

Most console games **do not support native mouse and keyboard input.** Mouse & Keyboard emulation is necessary because it **tricks the console into thinking your mouse & keyboard are a standard controller**.

## &#x20;Native Pros & Cons

***

**✔️ Pros**

* **Direct Input** – No emulation or conversion needed
* **Plug & Play** – No additional software or setup

**❌ Cons**

* **No Aim Assist** – Games treat you like a PC player, so aim assist is removed
* **Limited Game Support** – Only available in select titles
* **No M.O.D Support** – You can’t use Scripts with native input

## Emulation Pros & Cons

***

**✔️ Pros**

* **Controller Aim Assist** – Take advantage of **aim assist** in shooters
* **Works in Any Game** – Even those with no native MK support
* **Full M.O.D. Support** – Use Scripts
* **Advanced Tuning** – Adjust sensitivity, smoothing, deadzones, aim assist behavior
* **Custom Mapping** – Remap every key/button to fit your style

**❌ Cons**

* **Input Translation** – Inputs are converted to controller signals, not raw MK
* ⚙**Initial Setup Required** – Needs Zen Studio, profile import, and tuning

﻿


# Supported Platforms and Devices

**F**ollowing platforms are supported:

* **PC**
* **Xbox Series X|S**®
* **Xbox One**®
* **PlayStation 5**® *(requires* Bypass ﻿*or* Cronus Zen Link™*)*
* **PlayStation 4**®
* **Nintendo Switch**®

## 🖱️ Supported Keyboards & Mice

***

You can find the list of **officially supported keyboards and mice** here: 👉 View Supported Devices﻿﻿

If your mouse or keyboard isn’t listed, don’t worry. Most standard USB devices are still supported.

## Disclaimers

***

By using this product, you acknowledge and agree to the following:

{% hint style="info" %}
⚠️ Trademark Notice

“PlayStation®,” “PlayStation®5,” “PS5®,” “PSN®,” and “DualSense®” are trademarks of Sony Interactive Entertainment Inc.

“Nintendo® Switch,” “Joy-Con®,” and “Nintendo® eShop” are trademarks of Nintendo Co., Ltd.

“Xbox®,” “Xbox® Series X,” “Xbox® Series S,” “Xbox® One,” “Xbox® Live,” and “Xbox® Game Pass” are trademarks of Microsoft Corporation.
{% endhint %}


# Connect & Configure

Here's how to get your mouse and keyboard working smoothly with Cronus Zen.

## Setup Overview

***

Follow these four simple steps to get your mouse and keyboard working with Cronus Zen:

* **Step 1:** Turn OFF Scripts
* **Step 2:** Connect the Devices *(MK Switch recommended)*
* 🖥**Step 3:** Open Zen Studio & Check Device Detection
* **Step 4:** Test Input Detection

## Step 1

﻿Before connecting anything, turn OFF Scripts.

Here’s how:

* Press the right blue **Memory Slot button** on the Cronus Zen
* Cycle through until the **Collective Minds Alien logo** appears on the OLED screen
* This means **no GamePacks or Scripts** are active

## Step 2﻿

Connect the Devices (MK Switch Recommended) to your Cronus Zen.

Connection Order

* Plug your **controller** into **Zen USB Port A1**
* Connect your **keyboard** to **Zen USB Port A2**
* Connect your **mouse** to **Zen USB Port A3**
* Connect the **PROG USB cable** from Cronus ZEN to your **PC**

⚠️ Once your main mouse and keyboard are connected to the **Cronus Zen**, they’ll function as a **controller**. You won’t be able to control your PC with them anymore, unless you **switch them back manually**.

That’s why you’ll need either a **second set** of mouse and keyboard, or a **MK Switch** to toggle between PC and Zen.

If you don’t have a second keyboard/mouse for your PC, a **USB powered MK Switch** is a huge help. ﻿

## Step 3

﻿Now that everything is connected, it’s time to check if Cronus Zen detects your mouse and keyboard correctly.

**Launch Zen Studio**

* Open **Zen Studio** on your PC
* Click on the **“Device”** tab

**Check Detected Devices**

* Look under the **Connected Devices** section
* Your mouse and keyboard should appear

💡If your device shows up with a question mark, don’t worry, it still works. That just means Zen Studio doesn’t have an icon for it.

﻿

## 🎮Step 4

Time to test if the Cronus Zen is picking up the inputs from the Mouse and Keyboard.

**Open the Device Monitor**

* In **Zen Studio**, press **TOOLS** --> **Device Monitor**

**Test Your Mouse**

* Move your mouse, you should see **RX/RY values changing** in real time
* This confirms your mouse input is being read as right stick movement

**Test Your Keyboard**

* Press **W, A, S, D**, you should see **LX/LY values changing** in real time
* This confirms your keyboard input is being read as left stick movement
* Try other keys like **spacebar** to test additional mappings


# PlayStation®5 Setup

Cronus Zen™ provides compatibility for select legacy Logitech® and Fanatec® racing wheels on PlayStation®5, including support for Force Feedback, pedals, brakes, clutch, and shifter in compatible racing titles.

Wheel Mode development concluded in January 2020.\
Further expansion is not feasible due to device memory and compatibility constraints across multiple hardware brands and platforms.

﻿For expanded racing wheel compatibility, consider Drive Hub™, a dedicated wheel adapter solution.

## Supported Racing Wheels﻿

***

* Fanatec® ClubSport Wheel Base v1
* Fanatec® ClubSport Wheel Base v1.5
* Fanatec® ClubSport Wheel Base v2
* Fanatec® CSR
* Fanatec® CSR Elite
* Fanatec® Porsche 911 GT2
* Fanatec® Porsche 911 GT3
* Fanatec® Porsche 911 GT3 R
* Fanatec® Porsche 911 GT3 RS v2
* Fanatec® Porsche 911 Turbo
* Fanatec® Porsche 911 Turbo S
* Logitech® Driving Force GT
* Logitech® G25
* Logitech® G27

#### Fanatec® Notes

• The wheel must be set to **PS3 Mode** with the **DC power supply connected**.\
• Refer to the **Fanatec PS3 Mode** page for detailed instructions.

#### Logitech® G25 Notes

• Set the wheel to **PS3 Mode** with the **DC power supply connected**.\
• To switch between **Six-Speed** and **Sequential Mode**:

* Push down on the shift knob and rotate the **Mode Selection Dial** until the red arrow points to the desired symbol.
* In Sequential Mode, the status light is **on**.
* In Six-Speed Mode, the status light is **off**.

#### Logitech® G27 Notes

• Set the wheel to **PS3 Mode** with the **DC power supply connected**.

#### Logitech® G29 Notes

• Works directly on PS4® / PS5® without Cronus Zen™.\
• Set the wheel to **PS4 Mode** with the **DC power supply connected**.<br>

## PS5® Console Settings

***

Before setting up Wheel Mode, complete the following:

• Confirm the game supports PS5® wheel input (see compatibility list).\
• Ensure no PlayStation® controllers are paired to the console. Remove them from **Bluetooth Accessories**.\
• Disable all scripts and GamePacks during wheel setup.

**Important:**\
When a DualSense® or DualShock®4 is connected directly to a PS5® via USB, it also pairs over Bluetooth®.\
To properly unpair a controller:

1. Connect Cronus Zen™ to the PS5® using any controller.
2. Go to **Settings → Accessories → Bluetooth Accessories**.
3. Select the controller and choose **Delete**.

This prevents automatic Bluetooth re-pairing.

## Required PS5® Settings

***

Navigate to:

**Settings → System → Power Saving → Set Time Until Controllers Turn Off**\
• **Don’t Turn Off**

**Settings → System → Power Saving → Features Available in Rest Mode**\
• **Supply Power to USB Ports → Always**

**Settings → Accessories → Controllers → Communication Method**\
• **Use USB Cable**

![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/D6c_3uqcp-K2Tw95SgUwA_image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/ooVgQ72KmKXeZ-tLOM8_E_image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/Hsgn0LU_RnBBMu5yKPWIJ_image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/TjtNpGpuGDcByPI-QsQvr_image.png?format=webp)﻿

﻿<br>

## **SETUP PS5 WHEEL MODE**

***

In PS5® Wheel Mode, supported racing wheels are automatically mapped to emulate a Logitech® G29 profile with full Force Feedback (FFB) support.

No manual button remapping is required.

## **IMPORTANT**

***

If your wheel requires an external power supply (e.g., Logitech® G25, G27, G29 — DC 24V 2A / 48W), it **must** be connected.\
All included peripherals (pedals, brake, clutch, shifter, etc.) must also be properly connected.

Operating the wheel without the required power supply may result in abnormal behavior, including:

• No Force Feedback\
• Continuous button inputs (e.g., D-Pad registering repeatedly)\
• Clutch or pedal input not detected

Example: A Logitech® G27 used in Gran Turismo® 7 without its power supply may exhibit these issues.

## **RACING WHEEL (USB)**

***

#### Requirements

• PlayStation®5 console\
• Compatible racing wheel\
• PS4® Speciality authentication controller (e.g., HORI® PS4 Mini-Pad)\
• Zen Studio installed on a Windows® PC

#### Configure Wheel Mode

**1.** Connect Cronus Zen™ to a PC using the **PROG USB port**.

**2.** Open **Zen Studio → Tools → Zen Operational Mode**.\
Select **Wheel Mode**, then click **Finish**.

The **Wheel Mode logo** should appear on the Zen OLED screen.

**3.** Press the Zen **reset button** once to confirm Wheel Mode is active.\
If “Device Disconnected” appears, reconnect the PROG USB cable.

**4.** In **Zen Studio → Device Panel**, enable **PS4 Speciality**.

Allow the Zen to restart.\
To confirm it remains enabled, disconnect and reconnect the **PROG USB cable** and verify the setting is still active.

#### Connect Hardware

**5.** Disconnect all cables from the Zen (no power).

**6.** Connect the **PS4 Speciality authentication controller** to **A1**.

**7.** Connect the **racing wheel** to **A3**.\
Ensure the wheel’s **external power supply** is connected.

**8.** Connect Cronus Zen™ to the PS5® using the **CONSOLE/PC USB port**.

**9.** Press the Zen **reset button** to complete synchronization.

## **Warning**

***

During Force Feedback (FFB) initialization and auto-calibration, do not touch the wheel.\
Unexpected movement may cause injury or result in incorrect calibration.

For additional methods and troubleshooting related to Fanatec® PS3 Mode, refer to the relevant topic in the Cronus forums.


# PlayStation®4 Setup

Cronus Zen™ provides compatibility for select legacy Logitech® and Fanatec® racing wheels on PlayStation®4, including support for Force Feedback, pedals, brakes, clutch, and shifter in compatible racing titles.

Wheel Mode development concluded in January 2020.\
Further expansion is not feasible due to device memory and compatibility constraints across multiple hardware brands and platforms.

﻿For expanded racing wheel compatibility, consider Drive Hub™, a dedicated wheel adapter solution.

## Supported Racing Wheels﻿

***

* Fanatec® ClubSport Wheel Base v1
* Fanatec® ClubSport Wheel Base v1.5
* Fanatec® ClubSport Wheel Base v2
* Fanatec® CSR
* Fanatec® CSR Elite
* Fanatec® Porsche 911 GT2
* Fanatec® Porsche 911 GT3
* Fanatec® Porsche 911 GT3 R
* Fanatec® Porsche 911 GT3 RS v2
* Fanatec® Porsche 911 Turbo
* Fanatec® Porsche 911 Turbo S
* Logitech® Driving Force GT
* Logitech® G25
* Logitech® G27

#### Fanatec® Notes

• The wheel must be set to **PS3 Mode** with the **DC power supply connected**.\
• Refer to the **Fanatec PS3 Mode** page for detailed instructions.

#### Logitech® G25 Notes

• Set the wheel to **PS3 Mode** with the **DC power supply connected**.\
• To switch between **Six-Speed** and **Sequential Mode**:

* Push down on the shift knob and rotate the **Mode Selection Dial** until the red arrow points to the desired symbol.
* In Sequential Mode, the status light is **on**.
* In Six-Speed Mode, the status light is **off**.

#### Logitech® G27 Notes

• Set the wheel to **PS3 Mode** with the **DC power supply connected**.

#### Logitech® G29 Notes

• Works directly on PS4® / PS5® without Cronus Zen™.\
• Set the wheel to **PS4 Mode** with the **DC power supply connected**.<br>

## PS4® Console Settings

***

Before setting up Wheel Mode, complete the following:

• Confirm the game supports PS4® wheel input (see compatibility list).\
• Ensure no PlayStation® controllers are paired to the console. Remove them from **Bluetooth Devices**.<br>

**Important:**\
When a DualShock®4 is connected directly to a PS4® via USB, it also pairs over Bluetooth®.\
To properly unpair a DS4 controller:

1. Connect Cronus Zen™ to the PS4® using any controller.
2. Go to **Settings → Devices → Bluetooth Devices**.
3. Select the controller and choose **Forget Device**.\
   This prevents automatic Bluetooth re-pairing.

## Required PS4® Settings

***

Navigate to:

**Settings → Devices → Controllers**\
• Select controller → Press **OPTIONS** → **Forget Device**\
• Communication Method → **Use USB Cable**

**Settings → Power Save Settings**\
• Set Time Until Controllers Turn Off → **Do Not Turn Off**

![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/wrd9Td_LmOlcJbswS6zmV_image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/GF9a0xX4zPyr09y6cj7q__image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/sXbTOYQlH3UwrTT_j5u2u_image.png?format=webp)﻿![Document image](https://images.archbee.com/IwUlH55FdaPsVELSqm1Fc/SGN4ZdNNc3ahylfVr9YvB_image.png?format=webp)﻿

## Setup PS4® Wheel Mode

***

Supported racing wheels are automatically mapped to emulate a Logitech® G29 profile with Force Feedback (FFB) support.\
No manual button remapping is required.

## **IMPORTANT**

***

&#x20;If your wheel requires an external power supply (e.g., Logitech® G25, G27, G29 – DC 24V 2A / 48W), it **must** be connected.\
All peripherals supplied with the wheel (pedals, brake, clutch, shifter, etc.) must also be connected.

Operating the wheel without the required power supply may result in abnormal behavior, including:

• No Force Feedback\
• Continuous button inputs (e.g., D-Pad registering repeatedly)\
• Clutch or pedal input not detected

Example: A Logitech® G27 used without its power supply in Gran Turismo® 7 may exhibit these issues.

A licensed PS4® authentication controller must be connected to **A1** to prevent periodic disconnection (approximately every 8–10 minutes).

The DualShock®4 CUH-ZCT2 (DS4 v2) is recommended for PS4® authentication and crossover setups.

<table><thead><tr><th>DS4 Model</th><th width="101">License Donor</th><th width="116">Audio USB</th><th width="113">Audio Bluetooth</th><th width="134">DS4 Speaker</th><th>Switch Audio</th></tr></thead><tbody><tr><td>CUH-ZCT1X﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td><td>﻿<mark style="color:red;"><strong>NO</strong></mark>﻿</td></tr><tr><td>CUH-ZCT2X﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td><td>﻿<mark style="color:green;"><strong>YES</strong></mark>﻿</td></tr></tbody></table>

﻿*X: U=USA, E=Europe, J=Japan*﻿

## **RACING WHEEL (USB)**

***

#### Requirements

• PlayStation®4 console\
• DualShock®4 v2 (CUH-ZCT2) authentication controller\
• Zen Studio installed on a Windows® PC

#### Configure Wheel Mode

**1.** Connect Cronus Zen™ to a PC using the **PROG USB port**.

**2.** Open **Zen Studio → Tools → Zen Operational Mode**.\
Select **Wheel Mode**, then click **Finish**.

The **Wheel Mode logo** should appear on the Zen OLED screen.

**3.** In **Zen Studio → Device Panel**:\
• Set **Emulator Output Protocol → AUTO**\
• Ensure **PS4 Speciality** is disabled\
• Ensure **PS Remote Play** is disabled

**4.** Press the Zen **reset button** once.\
Confirm that Wheel Mode is active in the status bar.

If “Device Disconnected” appears, unplug and reconnect the **PROG USB cable**.

#### Connect Hardware

**5.** Disconnect all cables from the Zen (no power).

**6.** Connect the **DualShock®4 v2** to **A1** (authentication controller).

**7.** Connect a compatible **racing wheel** to **A3**.\
Ensure the wheel’s **external power supply** is connected.

**8.** Connect Cronus Zen™ to the PS4® using the **CONSOLE/PC USB port**.

**9.** Press the Zen **reset button** to complete synchronization.

**Important:**\
If using a **PS4 Pro**, connect the Zen to a **rear USB port** on the console.

## **Warning**

***

During Force Feedback (FFB) initialization and auto-calibration, do not touch the wheel.\
Unexpected movement may cause injury or result in incorrect calibration.

For additional methods and troubleshooting related to Fanatec® PS3 Mode, refer to the relevant topic in the Cronus forums.


# Compatible Racing Games

Zen’s Wheel Mode is compatible with the majority of PS4® and PS5® titles that natively support racing wheels.

## PS5® Support

***

Wheel Mode was originally developed for PlayStation®4.\
On PlayStation®5, it operates using the **PS4 Speciality Mode** method and supports full Force Feedback in compatible titles.

Below is a list of known compatible racing titles for PS4® and PS5®:

* **PS4:** Wheel Mode works with the PS4 version of the game using the PS4 Speciality Mode method.
* **PS5 TBC:** The PS5 version has not yet been confirmed.

## Information

***

Wheel Mode is intended only for racing titles that natively support Force Feedback, clutch, brakes, shifter, and pedals.

Arcade-style racers that rely on standard controller input are not supported.&#x20;


# Fanatec PS3 Mode

Set the Fanatec® wheel to **PS3 Mode** before enabling Zen’s **Wheel Mode**.\
PS3 Mode is required for full Force Feedback functionality.

## ﻿Setting CSR / CSR Elite Wheels to PS3 Mode

***

{% stepper %}
{% step %}
Connect Cronus Zen™ to the PS4® or PS5®.
{% endstep %}

{% step %}
Connect a USB cable from the Cronus Zen™ to the left-side USB port on the wheel base.
{% endstep %}

{% step %}
After the wheel completes self-calibration, enter PC Mode by pressing the Back Button for approximately one second.

The “– – –” indicator will disappear from the display.
{% endstep %}

{% step %}
**Press the Connect Button and Back Button simultaneously.**

A dot appearing on the display indicates **PS3 Mode** is active.
{% endstep %}

{% step %}
Once PS3 Mode is confirmed, disconnect the wheel from the Cronus Zen™.

Ensure the wheel base remains powered on.
{% endstep %}
{% endstepper %}

## Setting 911 Turbo S Wheels to PS3 Mode

***

﻿*(No RF Dongle – Latest Fanatec® Firmware)*

{% stepper %}
{% step %}
Connect Cronus Zen™ to the PS4® or PS5®.
{% endstep %}

{% step %}
**Connect a USB cable from the Cronus Zen™ to the left-side USB port on the wheel.**
{% endstep %}

{% step %}
**After self-calibration completes, enter PC Mode by pressing the Back Button for approximately one second.**

There will be **no wheel button illumination**.
{% endstep %}

{% step %}
**Press the Connect Button and Back Button simultaneously.**

The wheel button illumination will display the **PlayStation® symbol**, indicating PS3 Mode is active.
{% endstep %}

{% step %}
Once PS3 Mode is confirmed, disconnect the wheel from the Cronus Zen™.

Ensure the wheel remains powered on.
{% endstep %}
{% endstepper %}

## Setting 911 GT2 Wheels to PS3 Mode

***

{% stepper %}
{% step %}
Connect Cronus Zen™ to the PS4® or PS5®.

{% endstep %}

{% step %}
**Connect a USB cable from the Cronus Zen™ to the left-side USB port on the wheel.**

{% endstep %}

{% step %}
**After self-calibration completes, enter PC Mode by pressing the Back Button for approximately one second.**

The “– – –” indicator will disappear from the display.
{% endstep %}

{% step %}
**Press the Connect Button and Back Button simultaneously.**

The wheel button illumination will display the **PlayStation® symbols**, indicating PS3 Mode is active.
{% endstep %}

{% step %}
Once PS3 Mode is confirmed, disconnect the wheel from the Cronus Zen™.

Ensure the wheel remains powered on.
{% endstep %}
{% endstepper %}

## Setting 911 GT3 RS / RS V2 Wheels to PS3 Mode

***

{% stepper %}
{% step %}
Connect Cronus Zen™ to the PS4® or PS5®.
{% endstep %}

{% step %}
Connect the wheel’s USB cable to the Cronus Zen™.
{% endstep %}

{% step %}
**After self-calibration completes, press the Base Button and Select Button simultaneously.**
{% endstep %}

{% step %}
**The wheel is now in PS3 Mode.**&#x20;

**Disconnect it from the Cronus Zen™, ensuring the wheel remains powered on.**
{% endstep %}
{% endstepper %}

## Setting a ClubSport Wheel Base to PS3 Mode

***

{% stepper %}
{% step %}
﻿Connect all components as instructed while the PS4® or PS5® is powered off.
{% endstep %}

{% step %}
Power on the ClubSport Wheel Base (CSW).
{% endstep %}

{% step %}
Power on the PS4® or PS5®.

Wait until the console reaches the main menu and the wheel completes calibration.
{% endstep %}

{% step %}
**On the Universal Hub, press the Select Button and Circle Button simultaneously immediately after auto-calibration completes.**

The tuning display will show a **red dot**, indicating that **PS3 Mode** is active.
{% endstep %}
{% endstepper %}

## ﻿**Information**

***

With Cronus Zen™, you can navigate game menus using your Fanatec® wheel, including titles that previously did not support menu navigation via wheel input.

**Button Functions (PS4®):**\
• **Home Button:** L3 + R3\
• **Share Button:** Bottom-left black button on the rim

#### Additional Requirement for Certain Fanatec® Rims

For rims such as:\
• BMW M3 GT2\
• Formula Black\
• Formula Carbon\
• Porsche 918 RSR

Immediately after the ClubSport Wheel Base completes auto-calibration, press one of the following combinations:

• **Select (9) + Horn (22)**\
or\
• **Select (9) + Circle (3)**

Press the buttons simultaneously to activate the required mode.

## **Warning**

***

During Force Feedback (FFB) initialization and auto-calibration, do not touch the wheel.\
Unexpected movement may cause injury or result in incorrect calibration.

For additional methods and troubleshooting related to Fanatec® PS3 Mode, refer to the relevant topic in the Cronus forums.


# Zen Studio Won’t Open

#### Question:

***

Zen Studio does not open.

#### Answer:

***

• **Check Internet Connection** – Ensure your internet connection is active. Zen Studio requires server access during startup.

• **Network Restriction** – A firewall, antivirus, or ISP filter may be blocking access. Temporarily disable security software or test with a VPN.

• **Manual Launch** – Navigate to\
`C:\Program Files (x86)\Zen Studio\`\
and run **ZenStudio.exe** directly.

• **Run as Administrator** – Right-click **ZenStudio.exe** → *Run as Administrator*.

• **Reinstall Zen Studio** – Uninstall completely, restart the PC, then install the latest version.

### Advanced Troubleshooting – Zen Studio Launch Failures

***

If Zen Studio still does not open after basic checks, try the following:

#### 1. Environment & Permissions

• **Run as Administrator**\
Right-click Zen Studio → *Run as Administrator*

• **Compatibility Mode**\
Right-click → Properties → Compatibility tab → Ensure nothing is selected

• **Antivirus / Firewall**\
Temporarily disable or whitelist Zen Studio.\
Some security suites block startup silently.

#### 2. Software Conflicts

• **Check Task Manager**\
Press **Ctrl + Shift + Esc**

If Zen Studio shows as *Suspended* or *Not Responding*:\
Right-click → **End Task**, then relaunch.

#### 3. Reinstallation & Recovery

• **Clear Configuration Cache**\
Delete the config folder located in:\
`%AppData%\Cronus`

• **Fresh Install**\
Uninstall Zen Studio → Reboot PC → Install the latest version from the official site.

#### 4. System-Level Repair (Last Resort)

• **Windows Updates**\
Fully update your operating system.

• **Install Runtime Libraries**\
Reinstall .NET Framework and Visual C++ Redistributables.

• **System File Checker (Admin Command Prompt)**

```
sfc /scannow
```

• **DISM Repair (Admin Command Prompt)**

```
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
```


# Error E3001

#### Question:

***

What is Error E3001 and how do I fix it?

#### Answer:

***

Error E3001 occurs when the Cronus Zen has corrupted firmware or no firmware installed.

#### **Enter Bootloader Mode**

1. Locate the **blue reset button** underneath the Cronus Zen.
2. Press and hold the reset button firmly.
3. While holding the button, connect the Cronus Zen to your PC using the **CONSOLE/PC USB port**.
4. The screen should display **“Zen Bootloader”**, confirming recovery mode.

#### **Update the Firmware**

• Go to: **firmware.modcentral.ca**\
• Use **Google Chrome** or **Microsoft Edge** only.\
• Follow the on-screen instructions to reinstall the firmware.

#### **If the Update Fails**

• The issue may be caused by insufficient USB power.\
• Connect the **PROG USB** port (right side of the Cronus Zen) to provide additional power.\
• Retry the update with both USB ports connected.


# Zen Studio Freezes

#### Question:

***

Why does Zen Studio freeze or become unresponsive after clicking “Program”?

#### Answer:

***

This issue is commonly caused by a Windows user profile conflict or permission-related problem.

#### **Recommended Fix – Create a New Local Windows User Account**

1. Open Settings → Accounts → Family & other users.
2. Click Add someone else to this PC.
3. Select “I don’t have this person’s sign-in information”, then choose “Add a user without a Microsoft account.”
4. Create a simple local account (e.g., *ZenFix*) with a password.
5. Log into the new account.

#### **Test Zen Studio**

• Launch Zen Studio from the new account.\
• Connect your Cronus Zen.\
• Attempt to program the device again.

Programming should now complete without freezing.


# Firmware Incompatible

#### Question:

***

What does “Firmware Version Incompatible” mean?

#### Answer:

***

This message appears when:

• Your Cronus Zen firmware is outdated.\
• Your Zen Studio version is outdated.

#### **How to Fix**

1\. Update Firmware

2\. Update Zen Studio

After updating both firmware and Zen Studio, reconnect your device and restart Zen Studio.


# Error 300X (E3 / E3001 / E3002)

#### Question:

***

What do E3, E3001, or E3002 errors mean?

#### Answer:

***

These error codes indicate firmware corruption or a system crash.

They typically occur when:

• Firmware installation was interrupted\
• The device lost power during an update\
• Firmware files became corrupted

#### How to Fix

Perform a **Factory Reset / Firmware Recovery**:

1. Enter **Bootloader Mode** (hold the blue reset button while connecting to PC).
2. Go to **firmware.modcentral.ca** using Chrome or Edge.
3. Reinstall the latest firmware.

If the update fails, connect both the **CONSOLE/PC** and **PROG** USB ports to ensure sufficient power.


# Hard Reset

#### Question:

***

How do I perform a Hard Reset?

#### Answer:

***

A Hard Reset restores the Zen to factory condition.\
Use this if the device is freezing, behaving abnormally, or showing error codes.

### ⚠️ Before You Start

• This process will erase all Scripts stored on the Zen.

### Step 1 – Hardware Reset

1. Disconnect all cables from the Zen (no power).
2. Press and hold **P1 + P2** (the two large blue buttons beside the OLED).
3. While holding both buttons, connect the Zen using the **CONSOLE/PC USB port**.
4. Continue holding for at least 4 seconds.
5. The RGB LEDs will flash **Red → Green → Blue** in sequence.
6. When the logo appears on the OLED screen, release the buttons.

### Step 2 – Factory Reset in Zen Studio

1. Connect the Zen to your PC using the **PROG USB port**.
2. Open **Zen Studio → Device Tab**.
3. Click **Factory Reset** (bottom-right).
4. Confirm the reset. The Zen will reboot to default state.

### Step 3 – After the Reset

After a Factory Reset, the Zen is empty.

You must:

• Open Zen Studio\
• Go to **Tools → Online Firmware Update** and reinstall the latest firmware\
• Reinstall your Scripts


# Stack / Bytecode Error

#### Question:

***

How do I fix a Stack or Bytecode error?

#### Answer:

***

A Stack or Bytecode error indicates corrupted memory, an invalid script, or a failed programming process.

This is typically caused by:

• Interrupting programming\
• Power loss during flashing\
• A corrupted GamePack or script

### Fix – Perform a Factory Reset

1. Disconnect all cables from the Zen.
2. Press and hold **P1 + P2**.
3. While holding both buttons, connect the Zen using the **CONSOLE/PC USB port**.
4. Hold for at least 4 seconds until the RGB LEDs flash **Red → Green → Blue**.
5. Release when the logo appears.

### Reinstall Firmware

1. Connect to PC via the **PROG USB port**.
2. Open **Zen Studio → Tools → Online Firmware Update**.
3. Install the latest firmware.

### Important

After resetting, reinstall your scripts.\
If the error returns immediately after installing a specific script, that script is likely corrupted or incompatible.


# GPC Script Guide

Your complete companion for writing scripts on the Cronus Zen.

<figure><img src="/files/lVWB9ZpKxNjneCrrG3WA" alt=""><figcaption></figcaption></figure>

No matter your experience level, this guide takes you from your first script to advanced techniques. Everything here is written specifically for **Zen Studio Live** and the current **32-bit Zen target**.

***

### Where do you want to go?

<table data-view="cards"><thead><tr><th align="center"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td align="center"><a href="/pages/NGLiMyb5qiLUxNU2wNCU"><strong>Start Coding</strong></a></td><td>A guided first-script path. Compile, program, and test your Zen safely — step by step.</td><td></td><td><a href="/files/OBksp43o6ZTu9ERw3akf">/files/OBksp43o6ZTu9ERw3akf</a></td></tr><tr><td align="center"><a href="/pages/yIOWjIL79fFXkNml2qnu"><strong>Learn GPC</strong></a></td><td>Variables, conditions, functions, arrays, combos, input layers, and output order — the full toolkit.</td><td></td><td><a href="/files/2X3zCdiRtbK44GpvwMNB">/files/2X3zCdiRtbK44GpvwMNB</a></td></tr><tr><td align="center"><a href="/pages/Rw1vve2tcQCR2CObNI5A"><strong>Examples and Recipes</strong></a></td><td>Real, working scripts from beginner-friendly to expert-level. Copy, modify, learn.</td><td></td><td><a href="/files/kKW0pPBehKZ6T2V9eAmA">/files/kKW0pPBehKZ6T2V9eAmA</a></td></tr><tr><td align="center"><a href="/pages/oUYCshX6pAoZh288Yq4Y"><strong>Reference</strong></a></td><td>Every built-in, every constant, every diagnostic. Debugging workflows included.</td><td></td><td><a href="/files/uLAP8EDy1FjjrkHs2sYN">/files/uLAP8EDy1FjjrkHs2sYN</a></td></tr><tr><td align="center"><a href="/pages/33sVhYf1cqoUKTH3qI0d">Troubleshooting</a></td><td>Compiler errors, warnings, tracing, and bisection. Find the real cause, not the first symptom.</td><td></td><td><a href="/files/wM0CbT3CXQ7LapnleqGL">/files/wM0CbT3CXQ7LapnleqGL</a></td></tr></tbody></table>

{% hint style="info" %}
**Never coded before?**

Start with [What is GPC?](/gpcscripting/gpc-script-guide/what-is-gpc) to understand the language, then [Start Here](/gpcscripting/gpc-script-guide/start-here) to write your first script.
{% endhint %}


# What is GPC?

The language behind every Cronus Zen script, and the three ideas that matter   most in a real-time report loop.

GPC is the scripting language used to read controller input, maintain state, transform values, schedule timed sequences, control device feedback, and write the outgoing controller report on Cronus Zen.

A GPC script is not a desktop program. Its `main` section runs repeatedly as part of the real-time report loop. That makes three ideas especially important:

{% stepper %}
{% step %}

#### Read the input layer you actually mean.

{% endstep %}

{% step %}

#### Keep one clear final writer for each output.

{% endstep %}

{% step %}

#### Perform expensive display or persistence work only when something changes.

{% endstep %}
{% endstepper %}

This guide begins with those ideas before introducing advanced storage, architecture, and VM details.


# Start Here

A guided first-script path. Compile, program, and test your Zen safely — step by step.

<figure><img src="/files/CR8TsQSsF30onEO6UM8R" alt=""><figcaption></figcaption></figure>

Build, compile, program, and observe a small script while learning the report-cycle mental model that every larger GPC project depends on.

***

Work through these pages in order the first time. Return directly to any page later as a reference.

* [The smallest useful script](/gpcscripting/gpc-script-guide/start-here/the-smallest-useful-script)
* [Your first stateful script](/gpcscripting/gpc-script-guide/start-here/your-first-stateful-script)
* [Use Zen Studio Live as a tight feedback loop](/gpcscripting/gpc-script-guide/start-here/use-zen-studio-live-as-a-tight-feedback-loop)
* [The report pipeline](/gpcscripting/gpc-script-guide/start-here/the-report-pipeline)
* [Input values are not all the same layer](/gpcscripting/gpc-script-guide/start-here/input-values-are-not-all-the-same-layer)
* [Buttons, triggers, sticks, and sensors](/gpcscripting/gpc-script-guide/start-here/buttons-triggers-sticks-and-sensors)
* [Add a one-time setup phase](/gpcscripting/gpc-script-guide/start-here/add-a-one-time-setup-phase)
* [A clean script skeleton](/gpcscripting/gpc-script-guide/start-here/a-clean-script-skeleton)
* [First mistakes to recognize](/gpcscripting/gpc-script-guide/start-here/first-mistakes-to-recognize)
* [Checkpoint exercise](/gpcscripting/gpc-script-guide/start-here/checkpoint-exercise)


# The smallest useful script

Every GPC script needs `main` logic. Zen runs it repeatedly from top to bottom, once per VM cycle.

{% code title="smallest-useful-script.gpc" lineNumbers="true" %}

```cpp
main {
    if(get_val(PS5_L2)) {
        set_val(PS5_R1, 100);
    }
}
```

{% endcode %}

***

### What each part does

| Function               | Purpose                                           |
| ---------------------- | ------------------------------------------------- |
| `get_val(PS5_L2)`      | Reads the current L2 value.                       |
| `set_val(PS5_R1, 100)` | Writes a fully pressed R1 to the outgoing report. |

***

### How it runs

{% stepper %}
{% step %}

#### Read

`get_val(PS5_L2)` reads the current L2 value.
{% endstep %}

{% step %}

#### Evaluate

Any nonzero value is true in an `if` condition.
{% endstep %}

{% step %}

#### Write

While L2 is active, `set_val(PS5_R1, 100)` makes the outgoing R1 value fully pressed.
{% endstep %}

{% step %}

#### Send

At the end of `main`, Zen finalizes and sends the output report.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
This does not create a permanent state. The condition is evaluated again on the next VM cycle.
{% endhint %}

<details>

<summary>Can I use more than one <code>main</code> section?</summary>

Zen Studio Live accepts more than one `main` section and merges them into one combined section. Use a single `main` section in new scripts unless splitting generated source is genuinely useful.

</details>


# Your first stateful script

{% code title="smallest-useful-script.gpc" lineNumbers="true" %}

```cpp
int enabled;

main {
    if(event_press(PS5_CROSS)) {
        enabled = !enabled;
    }

    if(enabled) {
        set_val(PS5_R1, 100);
    }
}
```

{% endcode %}

This introduces the four ideas used by almost every real script:

| Element        | Description                                                                                           |
| -------------- | ----------------------------------------------------------------------------------------------------- |
| `int enabled;` | Declares a global signed 32-bit runtime variable. It starts at `0`.                                   |
| `event_press`  | Is true for the cycle in which the input transitions from released to pressed.                        |
| `!enabled`     | Changes zero to one and any nonzero value to zero.                                                    |
| State          | State set in one cycle remains available in later cycles until the script reloads or code changes it. |


# Use Zen Studio Live as a tight feedback loop

For each example:

{% stepper %}
{% step %}
Create or open a `.gpc` file in Zen Studio Live.
{% endstep %}

{% step %}
Paste the complete example, not only the body of `main`.
{% endstep %}

{% step %}
Connect Zen through its PROG USB port, then use **Compiler → Build and Run** or press **F5**. Build and Run compiles the script and sends the temporary test build directly to the connected Zen, so it is faster than repeatedly programming memory slots while developing.
{% endstep %}

{% step %}
If the build fails, read and fix the first compiler message from the top before chasing later messages.
{% endstep %}

{% step %}
Use Device Monitor to verify physical input, outgoing values, traces, controller type, and VM behavior while the test build is running.
{% endstep %}

{% step %}
Test with the intended console and controller; a successful compile proves syntax, not device behavior.
{% endstep %}

{% step %}
Program a memory slot only when you want to keep the tested script on Zen after the development session.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Use a harmless test profile before adding automation to an existing large script. Large scripts can contain later output writers, remaps, menus, or gates that hide otherwise correct code.
{% endhint %}


# The report pipeline

Think of each cycle as five layers:

<div align="left"><figure><img src="/files/F6XzNBlsGAvVy03Qjt7W" alt=""><figcaption></figcaption></figure></div>

Active combos execute after the written `main` sections and before `remap` / `unmap` finalization. The compiler makes each active combo step part of the cycle's combined `main` behavior, even though the combo is declared in a separate top-level block. This means a combo can become a later writer than ordinary `main` code for the same identifier.

***

The key consequence is **order**. If two lines write the same output during a cycle, the later write wins:

{% code title="report-pipeline.gpc" %}

```cpp
main {
    set_val(PS5_RX, 25);
    set_val(PS5_RX, -40);  // final outgoing RX is -40
}
```

{% endcode %}

Conditionally writing an output can also leave another system as the final writer. Include active combos when reviewing output ownership instead of looking only at the visible order inside `main`.


# Input values are not all the same layer

{% code title="input-value-layers.gpc" lineNumbers="true" %}

```cpp
int raw_cross;
int current_cross;
int previous_cross;

main {
    raw_cross = get_ival(PS5_CROSS);
    current_cross = get_val(PS5_CROSS);
    previous_cross = get_lval(PS5_CROSS);

    set_val(TRACE_1, raw_cross);
    set_val(TRACE_2, current_cross);
    set_val(TRACE_3, previous_cross);
}
```

{% endcode %}

| Read           | Layer                                               | Typical use                                           |
| -------------- | --------------------------------------------------- | ----------------------------------------------------- |
| `get_ival(id)` | physical/unmodified input                           | features that must not feed on earlier script changes |
| `get_val(id)`  | current value after earlier changes this cycle      | composing deliberate transformations                  |
| `get_lval(id)` | final outgoing value from the previous VM iteration | output-history comparison                             |

Use `event_press` / `event_release` for ordinary button edges. Use explicit current-versus-previous comparisons when the exact input layer matters.


# Buttons, triggers, sticks, and sensors

The same integer API covers controls with different ranges:

| Control              | Range                                                                      |
| -------------------- | -------------------------------------------------------------------------- |
| Digital buttons      | normally `0` or `100`                                                      |
| Triggers             | normally `0..100`                                                          |
| Stick axes           | normally `-100..100`                                                       |
| Sensors/touch values | identifier-specific                                                        |
| Trace outputs        | debug integers, with `TRACE_1..TRACE_3` supporting full Live 32-bit values |

{% hint style="info" %}
Do not assume every identifier accepts the same range. The function and constant appendices record the compiler limits.
{% endhint %}


# Add a one-time setup phase

`init` runs once before the first `main` cycle:

{% code title="one-time-setup-phase.gpc" lineNumbers="true" %}

```cpp
int fire_button;

init {
    if(get_console() == PIO_PS5) {
        fire_button = PS5_R2;
    } else {
        fire_button = XB1_RT;
    }
}

main {
    if(get_ival(fire_button)) {
        set_val(fire_button, 100);
    }
}
```

{% endcode %}

Good `init` work includes selecting platform identifiers, loading persistent settings, initializing cached values, and choosing a start mode. Do not repeatedly perform one-time work in `main`.


# A clean script skeleton

{% code title="clean-script-skeleton.gpc" lineNumbers="true" %}

```cpp
// Compile-time names
define DEFAULT_STRENGTH = 20;

// Immutable data
const int8 RESPONSE_TABLE[] = { 0, 5, 10, 20, 35, 55, 80, 100 };

// Runtime state: global only
int enabled;
int strength = DEFAULT_STRENGTH;
int fire_button;

// One-time setup
init {
    fire_button = PS5_R2;
}

// Real-time loop
main {
    if(event_press(PS5_CROSS)) {
        enabled = !enabled;
    }

    if(enabled && get_ival(fire_button)) {
        set_val(TRACE_1, strength);
    }
}

// User functions conventionally follow main
function bounded_add(value, amount, low, high) {
    value = value + amount;
    if(value < low) return low;
    if(value > high) return high;
    return value;
}
```

{% endcode %}

The compiler does not require every optional section or this exact order, but consistent structure makes ownership and execution order reviewable.


# First mistakes to recognize

### Declaring inside a block

```cpp
main {
    int value;  // invalid: runtime variables must be top-level
}
```

Move `int value;` above `init` / `main`.

***

### Confusing assignment and comparison

```cpp
if(mode = 2) { }   // assigns 2; the condition is then true
if(mode == 2) { }  // compares; usually what was intended
```

Zen Studio Live warns about assignment in a condition, but write the intended operator.

***

### Using the wrong letter case

`PS5_CROSS`, `ps5_cross`, and `PS5_Cross` are different names. Only the defined constant is valid.

***

### Assuming a function changes its caller's variable

Function arguments are values held in local parameters:

```cpp
int amount = 10;

main {
    amount = add_five(amount);  // store the returned value
}

function add_five(value) {
    value = value + 5;
    return value;
}
```

***

### Writing forever in an inner loop

```cpp
while(TRUE) { }  // do not do this in live real-time code
```

`main` is already the repeating loop. Inner loops should complete quickly and have an obvious bound.


# Checkpoint exercise

Write a script that:

1. Toggles `enabled` on a Cross press.
2. While enabled, copies raw L2 to R2.
3. Writes `enabled` to `TRACE_1` and raw L2 to `TRACE_2`.
4. Suppresses Cross from the output only on the toggle cycle.

***

One solution:

{% code title="checkpoint-exercise.gpc" lineNumbers="true" %}

```cpp
int enabled;
int raw_l2;

main {
    raw_l2 = get_ival(PS5_L2);

    if(event_press(PS5_CROSS)) {
        enabled = !enabled;
        set_val(PS5_CROSS, 0);
    }

    if(enabled) {
        set_val(PS5_R2, raw_l2);
    }

    set_val(TRACE_1, enabled);
    set_val(TRACE_2, raw_l2);
}
```

{% endcode %}

**Next:** [Language fundamentals](/gpcscripting/gpc-script-guide/learn-gpc)


# Learn GPC

Variables, conditions, functions, arrays, combos, input layers, and output order — the full toolkit.

<figure><img src="/files/aLmdojnP0pgGFLab9XTt" alt=""><figcaption></figcaption></figure>

Learn the complete source language a piece at a time, from declarations and operators to functions, remaps, and combos.

***

Work through these pages in order the first time. Return directly to any page later as a reference.

* [Source layout and global namespace](/gpcscripting/gpc-script-guide/learn-gpc/source-layout-and-global-namespace)
* [Statements, blocks, and comments](/gpcscripting/gpc-script-guide/learn-gpc/statements-blocks-and-comments)
* [Runtime variables](/gpcscripting/gpc-script-guide/learn-gpc/runtime-variables)
* [Definitions](/gpcscripting/gpc-script-guide/learn-gpc/definitions)
* [Enumerations](/gpcscripting/gpc-script-guide/learn-gpc/enumerations)
* [Immutable const data](/gpcscripting/gpc-script-guide/learn-gpc/immutable-const-data)
* [Raw data section](/gpcscripting/gpc-script-guide/learn-gpc/raw-data-section)
* [`sizeof` and `addr`](/gpcscripting/gpc-script-guide/learn-gpc/sizeof-and-addr)
* [Boolean truth](/gpcscripting/gpc-script-guide/learn-gpc/boolean-truth)
* [Operators](/gpcscripting/gpc-script-guide/reference/language-and-operators)
* [Flow control](/gpcscripting/gpc-script-guide/learn-gpc/flow-control)
* [User-created functions](/gpcscripting/gpc-script-guide-old/gpc-developer-guide/user-created-functions)
* [`init` and `main`](/gpcscripting/gpc-script-guide/learn-gpc/init-and-main)
* [Remap and unmap](/gpcscripting/gpc-script-guide/learn-gpc/remap-and-unmap)
* [Combos and `fcombo`](/gpcscripting/gpc-script-guide/learn-gpc/combos-and-fcombo)
* [Compile-time versus runtime checklist](/gpcscripting/gpc-script-guide/learn-gpc/compile-time-versus-runtime-checklist)


# Source layout and global namespace

A Live GPC file can contain these top-level forms:

* `define`
* `enum`
* `data(...)`
* typed `const` arrays, strings, images, and adaptive-trigger data
* `remap` and `unmap`
* global `int` variables and runtime arrays
* optional `init` section or sections
* one or more `main` sections
* `combo` / `fcombo` declarations
* user-created `function` declarations

Zen Studio Live accepts multiple `init` and `main` sections. The compiler merges all `init` sections into the one-time initialization phase and all `main` sections into the repeating main phase. Keeping one of each is normally clearer, but split sections in generated or assembled source are valid.

***

### Name spaces

GPC does not place every declared name in one namespace:

| Namespace/scope | Names in it                                                                   |
| --------------- | ----------------------------------------------------------------------------- |
| Data symbols    | Runtime variables and arrays, definitions, enum members, and const-data names |
| Functions       | User-created function names                                                   |
| Combos          | `combo` and `fcombo` names                                                    |
| Function-local  | The parameters declared by that function                                      |

Names must be unique within the namespace that owns them. A variable cannot reuse a definition, enum-member, or const-data name, but function names, combo names, and function parameters are resolved separately from that data-symbol namespace.

Language keywords and built-in names are reserved. Do not use names such as `main`, `if`, `set_val`, or a built-in constant as your own declaration.

***

Names are case-sensitive and follow this shape:

```
[A-Za-z_][A-Za-z0-9_]*
```

Prefer descriptive uppercase names for compile-time constants and lowercase snake case for runtime variables/functions. Even where separate namespaces technically allow the same spelling, distinct names make searches and compiler messages easier to understand.


# Statements, blocks, and comments

Braces group statements:

{% code title="statements-and-blocks.gpc" %}

```cpp
main {
    if(get_val(PS5_L2)) {
        set_val(PS5_R2, 100);
    }
}
```

{% endcode %}

The compiler accepts omitted semicolons in many places, but use them consistently. Semicolons are mandatory as separators in a `for` header. A missing semicolon after `return` can also make the next line look like its expression.

```cpp
// One-line comment

/*
    Block comment.
    Block comments cannot be nested.
*/
```

Use `//` when disabling a region that already contains block comments.


# Runtime variables

GPC has one runtime variable type: the signed 32-bit integer, written as `int`. You can declare one value at a time or reserve a consecutive group of values as an array.

***

### Scalar integers

Use a scalar integer when a name needs to hold one value:

```cpp
int count;
int strength = 25;
int x, y, enabled;
```

Rules:

* Declarations are global and top-level only.
* Uninitialized variables start at zero.
* There is no runtime `bool`, float, string, object, struct, or local block variable type.
* Function parameters are local integer values.
* Arithmetic overflow wraps according to the VM's integer behavior; design ranges to avoid relying on overflow.
* Runtime division truncates: `10 / 3` is `3`, `3 / 4` is `0`.

***

Scaled-integer pattern:

{% code title="scaled-integer-pattern.gpc" %}

```cpp
// 125 means 1.25x; calculate percentage before dividing away precision.
int base = 40;
int scale_percent = 125;
int result;

main {
    result = (base * scale_percent) / 100;
}
```

{% endcode %}

Check that the multiplication cannot exceed the 32-bit range.

***

### Runtime arrays

Use an array when you need several related runtime values under one name:

{% code title="runtime-arrays.gpc" %}

```cpp
int samples[16];
int index;

main {
    if(event_press(PS5_CROSS)) {
        samples[index] = get_ival(PS5_RX);
        index = index + 1;
        if(index >= 16) index = 0;
    }
}
```

{% endcode %}

Runtime arrays:

* occupy one variable slot per element;
* start filled with zero;
* cannot have initializers;
* require an index in range `0..size-1`;
* can use constant or runtime indexes;
* are mutable.

The compiler catches constant out-of-range indexes on ordinary declared arrays. You must validate dynamic indexes yourself.

***

### Sequential variable storage and aliases

Runtime variables are allocated sequentially after any variable slots generated by the compiler. GPC's indexing syntax operates on those sequential slots, so any runtime variable can technically be used as the base of an indexed access—not only a name declared with `[size]`.

{% code title="sequential-alias.gpc" %}

```cpp
int first;
int second;

main {
    first[1] = 25; // accesses the next sequential slot: second
}
```

{% endcode %}

This is an advanced aliasing behavior, not a substitute for a properly declared array. It can silently reach an unrelated variable when declarations change, so use it only when the storage layout is intentional and documented.

***

A zero-sized array occupies no slots and aliases the next declared variable:

{% code title="zero-sized-alias.gpc" %}

```cpp
int alias[0];
int value;

main {
    alias[0] = 50; // writes value
}
```

{% endcode %}

The compiler warns about this accepted quirk. A zero-sized array with no eligible variable after it is an error because it would point beyond the allocated variable table.


# Definitions

`define` replaces a readable name with a compile-time integer expression and uses no runtime variable slot:

```cpp
define MAX_MODES = 4;
define HALF_SCALE = 100 / 2;
define MENU_CHORD = PS5_L2;
```

Use definitions for immutable scalar values. A definition cannot depend on runtime state or a runtime function.


# Enumerations

Enums create related compile-time integer names. Use them for state machines, modes, pages, or schema versions:

{% code title="enum-modes.gpc" %}

```cpp
enum {
    MODE_OFF,       // 0: the first implicit value starts at zero
    MODE_STANDARD,  // 1: implicit values increment by one
    MODE_ALTERNATE, // 2
    MODE_COUNT      // 3
};

int mode;

main {
    if(event_press(PS5_TRIANGLE)) {
        mode = mode + 1;
        if(mode >= MODE_COUNT) mode = MODE_OFF;
    }
}
```

{% endcode %}

An explicit value restarts the sequence from that point:

```cpp
enum {
    PAGE_HOME,       // 0
    PAGE_STATUS,     // 1
    PAGE_EDIT = 10,  // 10: explicitly restart here
    PAGE_SAVE,       // 11
    PAGE_ADMIN = 20, // 20: restart again
    PAGE_DIAGNOSTIC  // 21
};
```

Enum members share the data-symbol namespace with variables, definitions, and const-data names. Do not reuse an enum-member name for one of those declarations.


# Immutable const data

### Numeric arrays

Choose the smallest type that holds every value:

| Type     | Bytes/value |                           Range |
| -------- | ----------: | ------------------------------: |
| `int8`   |           1 |                     `-128..127` |
| `uint8`  |           1 |                        `0..255` |
| `int16`  |           2 |               `-32,768..32,767` |
| `uint16` |           2 |                     `0..65,535` |
| `int32`  |           4 | `-2,147,483,648..2,147,483,647` |

```cpp
const int8 CURVE[] = { 0, 5, 12, 22, 35, 51, 72, 100 };

const int16 POINTS[][] = {
    { -100, -50, 0, 50, 100 },
    { -100, -25, 0, 25, 100 }
};
```

Every row of a two-dimensional const array must have the same number of columns. Const data is immutable and consumes compiled data/bytecode space even when never used.

Access:

{% code title="const-data-access.gpc" %}

```cpp
int a, b;

main {
    a = CURVE[3];
    b = POINTS[1][4];
}
```

{% endcode %}

***

### Strings

Strings live in the const/data area, not runtime variables:

```cpp
const string STATUS = "READY"; // one string

const string LABELS[] = { "OFF", "ON", "EDIT" };
```

When an API expects an address, pass a const item or `addr(...)` as required by its signature. Bare string literals are not general runtime expression values.

***

### Images

An `image` begins with width and height, followed by exactly `ceil(width * height / 8)` packed pixel bytes:

```cpp
const image BOX_8 = {
    8, 8,
    0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF
};
```

Pixels are packed left-to-right, top-to-bottom. Validate the byte count; invalid image data is a compiler error.

An array of image records needs a nested record for each image:

```cpp
const image ICONS[] = {
    { 8, 8, 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF },
    { 8, 8, 0x00, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x00 }
};
```

***

### PS5 adaptive-trigger data

`ps5adt` records contain exactly 11 byte values in this order:

<table data-search="false"><thead><tr><th align="right">Index</th><th>Field selector</th><th>Meaning</th></tr></thead><tbody><tr><td align="right">0</td><td><code>PS5_ADT_MODE</code></td><td>Effect mode</td></tr><tr><td align="right">1</td><td><code>PS5_ADT_START</code></td><td>Start position</td></tr><tr><td align="right">2</td><td><code>PS5_ADT_FORCE1</code></td><td>First force parameter</td></tr><tr><td align="right">3</td><td><code>PS5_ADT_FORCE2</code></td><td>Second force parameter</td></tr><tr><td align="right">4</td><td><code>PS5_ADT_STRENGTH_LOW</code></td><td>Low-zone strength</td></tr><tr><td align="right">5</td><td><code>PS5_ADT_STRENGTH_MID</code></td><td>Mid-zone strength</td></tr><tr><td align="right">6</td><td><code>PS5_ADT_STRENGTH_HIGH</code></td><td>High-zone strength</td></tr><tr><td align="right">7</td><td><code>PS5_ADT_UNK1</code></td><td>Unknown/reserved byte 1</td></tr><tr><td align="right">8</td><td><code>PS5_ADT_UNK2</code></td><td>Unknown/reserved byte 2</td></tr><tr><td align="right">9</td><td><code>PS5_ADT_FREQ</code></td><td>Effect frequency</td></tr><tr><td align="right">10</td><td><code>PS5_ADT_UNK3</code></td><td>Unknown/reserved byte 3</td></tr></tbody></table>

{% code title="trigger-profile.gpc" %}

```cpp
const ps5adt TRIGGER_PROFILE = {
    PS5_ADT_CR, // 0: mode
    0,          // 1: start
    128,        // 2: force 1
    128,        // 3: force 2
    64,         // 4: low strength
    128,        // 5: mid strength
    192,        // 6: high strength
    0,          // 7: unknown/reserved 1
    0,          // 8: unknown/reserved 2
    100,        // 9: frequency
    0           // 10: unknown/reserved 3
};
```

{% endcode %}

Use a named mode and comment every positional field. Do not invent meanings for the three unknown/reserved bytes; preserve them from a known-good profile.


# Raw data section

`data(...)` stores immutable bytes at the start of the compiled virtual data space:

{% code title="raw-data-section.gpc" %}

```cpp
data(20, 42, 35, 255, 1, 100, 0, 86);

int signed_value;
int unsigned_value;

main {
    signed_value = dint8(3);    // -1 from byte 0xFF
    unsigned_value = duint8(3); // 255
}
```

{% endcode %}

`data(...)` also accepts values wider than one byte. The compiler splits a wider value into multiple bytes and warns because every later byte offset moves:

| Source value range                         | Storage on the current Zen target | Warning                  |
| ------------------------------------------ | --------------------------------: | ------------------------ |
| `-128..255`                                |                            1 byte | None for width           |
| `-32768..65535` outside the one-byte range |                           2 bytes | Later indexes shift by 1 |
| Values outside the two-byte range          |                           4 bytes | Later indexes shift by 3 |

{% code title="raw-data-widths.gpc" %}

```cpp
data(0x12, 0x1234, 0x12345678);

int byte_value;
int word_value;
int dword_value;

main {
    byte_value = duint8(0);
    word_value = duint16(1);
    dword_value = dint32(3);
}
```

{% endcode %}

If exact packed bytes matter, spelling out each byte is easier to audit and avoids accidental offset changes.

Live readers:

| Reader           | Bytes | Interpretation  |
| ---------------- | ----: | --------------- |
| `dint8(index)`   |     1 | signed 8-bit    |
| `duint8(index)`  |     1 | unsigned 8-bit  |
| `dint16(index)`  |     2 | signed 16-bit   |
| `duint16(index)` |     2 | unsigned 16-bit |
| `dint32(index)`  |     4 | signed 32-bit   |

Indexes are **byte offsets**. A wider entry shifts every following offset. Prefer compiler-managed const arrays for ordinary tables; use raw data when exact packed layout is the point.


# sizeof and addr

`sizeof(CONST_OR_ARRAY)` is evaluated at compile time and returns the declared element/row size understood by the compiler. It is useful for bounded loops:

{% code title="sizeof-bounded-loop.gpc" %}

```cpp
const uint8 BUTTONS[] = { PS5_CROSS, PS5_CIRCLE, PS5_SQUARE };
int i;

main {
    for(i = 0; i < sizeof(BUTTONS); i++) {
        if(get_ival(BUTTONS[i])) {
            set_val(TRACE_1, i);
        }
    }
}
```

{% endcode %}

Zen Studio Live also accepts supported type keywords in `sizeof(type)`. For the fixed-width numeric types, the result is their storage width in bytes:

| Type expression                    | Result |
| ---------------------------------- | -----: |
| `sizeof(int8)` / `sizeof(uint8)`   |    `1` |
| `sizeof(int16)` / `sizeof(uint16)` |    `2` |
| `sizeof(int32)`                    |    `4` |

```cpp
define PROFILE_VALUE_BYTES = sizeof(int16);
define SERIAL_VALUE_BYTES = sizeof(int32);
```

Type support is target-specific. If a keyword has no fixed supported size on the selected target, the compiler reports that `sizeof(keyword)` is not supported.

`addr(CONST_ITEM)` produces a const-data address for APIs that consume strings, images, or adaptive-trigger records. It is not a pointer to a runtime variable and cannot be used on arbitrary expressions.


# Boolean truth

* `0` is false.
* Any nonzero integer is true.
* `TRUE` is `1`; `FALSE` is `0`.
* Logical operators normalize results to false/true.

{% code title="boolean-truth.gpc" %}

```cpp
int enabled;

main {
    if(event_press(PS5_CROSS)) {
        enabled = !enabled;
    }
}
```

{% endcode %}


# Arithmetic

<table data-search="false"><thead><tr><th>Operator</th><th>Meaning</th><th>Example</th></tr></thead><tbody><tr><td><code>+</code></td><td>Add two values</td><td><code>total = a + b;</code></td></tr><tr><td><code>-</code></td><td>Subtract the right value from the left; unary <code>-</code> negates one value</td><td><code>difference = a - b;</code></td></tr><tr><td><code>*</code></td><td>Multiply</td><td><code>scaled = value * 125;</code></td></tr><tr><td><code>/</code></td><td>Integer division; any fractional remainder is discarded</td><td><code>10 / 3</code> produces <code>3</code></td></tr><tr><td><code>%</code></td><td>Remainder after integer division</td><td><code>10 % 3</code> produces <code>1</code></td></tr><tr><td><code>++</code></td><td>Add one</td><td><code>index++;</code></td></tr><tr><td><code>--</code></td><td>Subtract one</td><td><code>index--;</code></td></tr></tbody></table>

Prefix changes the variable before the expression result is used; postfix returns the old value and then changes the variable:

```cpp
b = ++a; // increment a first, then assign the new value to b
b = a++; // assign the old value to b, then increment a
```

***

### Comparison

Comparison operators return true (`1`) or false (`0`):

| Operator | Meaning                  |
| -------- | ------------------------ |
| `==`     | Equal to                 |
| `!=`     | Not equal to             |
| `<`      | Less than                |
| `<=`     | Less than or equal to    |
| `>`      | Greater than             |
| `>=`     | Greater than or equal to |

***

### Logical

Logical operators treat zero as false and every nonzero value as true:

| Operator   | Meaning                                    |
| ---------- | ------------------------------------------ |
| `!a`       | Logical NOT: true when `a` is false        |
| `a && b`   | Logical AND: true when both are true       |
| `a \|\| b` | Logical OR: true when either is true       |
| `a ^^ b`   | Logical XOR: true when exactly one is true |
|            |                                            |

***

### Bitwise

Bitwise operators work on the individual bits of an integer:

| Operator | Meaning                                         |
| -------- | ----------------------------------------------- |
| `~a`     | Invert every bit                                |
| `a & b`  | Bitwise AND; keep bits set in both values       |
| `a \| b` | Bitwise OR; keep bits set in either value       |
| `a ^ b`  | Bitwise XOR; keep bits set in exactly one value |
| `a << n` | Shift bits left by `n` positions                |
| `a >> n` | Shift bits right by `n` positions               |

```cpp
flags = flags | 4;  // set bit 2
flags = flags & ~4; // clear bit 2
```

***

### Conditional

Zen Studio Live supports the ternary conditional operator. It chooses one of two expression values:

```cpp
result = condition ? value_if_true : value_if_false;
```

GPC evaluates `condition` first. A nonzero condition selects `value_if_true`; zero selects `value_if_false`.

{% hint style="info" %}
**Important:** only the selected branch is evaluated. If the condition is true, GPC evaluates `value_if_true` and does not evaluate `value_if_false`. If the condition is false, it evaluates `value_if_false` and does not evaluate `value_if_true`.
{% endhint %}

#### Choose a value

{% code title="ternary-choose-a-value.gpc" %}

```cpp
int enabled;
int output;

main {
    output = enabled ? 100 : 0;
    set_val(PS5_CROSS, output);
}
```

{% endcode %}

This is the expression form of a small `if` / `else` choice. The same logic written longhand is:

```cpp
if(enabled) {
    output = 100;
} else {
    output = 0;
}
```

#### The unused branch does not run

Short-circuit branch evaluation makes guarded expressions safe:

{% code title="guarded-division.gpc" %}

```cpp
int numerator = 100;
int divisor;
int result;

main {
    // When divisor is 0, only the : 0 branch runs.
    // numerator / divisor is not evaluated.
    result = divisor != 0 ? numerator / divisor : 0;
}
```

{% endcode %}

The rule also applies to function calls and other side effects:

{% code title="branch-side-effects.gpc" %}

```cpp
int use_a;
int a_calls;
int b_calls;
int output;

main {
    use_a = get_val(PS5_L2) > 0;
    output = use_a ? make_a() : make_b();

    // Only one counter increases during each main iteration.
    set_val(TRACE_1, a_calls);
    set_val(TRACE_2, b_calls);
}

function make_a() {
    a_calls++;
    return 100;
}

function make_b() {
    b_calls++;
    return 0;
}
```

{% endcode %}

When `use_a` is true, only `make_a()` runs. When it is false, only `make_b()` runs. Parenthesize nested conditional expressions and keep side effects obvious so the code remains easy to review.

***

### Assignment

Assignment stores the right-hand result in the writable variable or array element on the left. `=` means "gets the value," not "is equal to." Use `==` for comparison.

Compound assignment reads the current left-hand value, applies an operation, and writes the result back:

| Operator    | Equivalent form | Meaning                |
| ----------- | --------------- | ---------------------- |
| `a = b`     | —               | Assign `b` to `a`      |
| `a += b`    | `a = a + b`     | Add and assign         |
| `a -= b`    | `a = a - b`     | Subtract and assign    |
| `a *= b`    | `a = a * b`     | Multiply and assign    |
| `a /= b`    | `a = a / b`     | Divide and assign      |
| `a %= b`    | `a = a % b`     | Remainder and assign   |
| `a &= b`    | `a = a & b`     | Bitwise AND and assign |
| `a \|= b`   | `a = a \| b`    | Bitwise OR and assign  |
| `a ^= b`    | `a = a ^ b`     | Bitwise XOR and assign |
| `a <<= b`   | `a = a << b`    | Shift left and assign  |
| `a >>= b`   | `a = a >> b`    | Shift right and assign |
| `a &&= b`   | `a = a && b`    | Logical AND and assign |
| `a \|\|= b` | `a = a \|\| b`  | Logical OR and assign  |
| `a ^^= b`   | `a = a ^^ b`    | Logical XOR and assign |

Assignment associates from right to left, so `a = b = 5;` assigns `5` to `b` and then assigns that result to `a`. Prefer one assignment per line when the chained form would hide intent.

Parenthesize mixed bitwise/comparison expressions:

```cpp
if((flags & MASK) == MASK) { }
```

Without parentheses, equality binds more tightly than bitwise AND.

See the exact precedence table in the language reference.


# Flow control

### `if`, `else if`, `else`

```cpp
if(mode == 0) {
    // first path
} else if(mode == 1) {
    // second path
} else {
    // fallback
}
```

***

### `switch`, `case`, `default`

```cpp
switch(mode) {
    case 0: {
        set_val(TRACE_1, 10);
        break;
    }
    case 1: {
        set_val(TRACE_1, 20);
        break;
    }
    default: {
        mode = 0;
        break;
    }
}
```

Case values must be compile-time constants and unique. Braces are required around case bodies. Omit `break` only when fallthrough is deliberate and documented.

### `for`

```cpp
for(i = 0; i < sizeof(BUTTONS); i++) {
    // bounded work
}
```

### `while`

```cpp
while(i < 8) {
    i++;
}
```

### `do ... while`

```cpp
do {
    i++;
} while(i < 8);
```

***

### `break` and `continue`

`break` exits the nearest loop or switch. `continue` skips to the next iteration of the nearest loop. Neither is valid outside its allowed context.

***

### `return`

`return;` immediately exits the current user-created function. `return expression;` also supplies the function's result:

{% code title="return-value.gpc" %}

```cpp
function absolute(value) {
    if(value < 0) {
        return -value;
    }
    return value;
}
```

{% endcode %}

A bare `return;` exits without a value. Do not mix bare and valued returns in the same function. If execution reaches the end of a user function without returning a value, its result is `0`; callers may also ignore a user function's result.

{% hint style="info" %}
All real-time loops must have a provable quick exit. A loop that waits for a future physical event will lock the current VM cycle; use persistent state evaluated across `main` cycles instead.
{% endhint %}


# User-created functions

{% code title="scale-percent-function.gpc" %}

```cpp
int output;

main {
    output = scale_percent(get_ival(PS5_RX), 125);
    set_val(PS5_RX, output);
}

function scale_percent(value, percent) {
    return (value * percent) / 100;
}
```

{% endcode %}

Rules:

* Declare with `function name(parameter, ...) { ... }`.
* Parameters are optional: `function reset_mode() { ... }` is valid.
* Parameters are local integer values.
* Global runtime variables remain accessible.
* A reached `return expression;` immediately exits.
* If no return is reached, the result is `0`.
* Do not mix valued returns and bare returns.
* Recursion compiles with a warning because worst-case stack use cannot be proven; avoid it in real-time scripts.
* A user-created function's return value may be ignored. The unused-return compiler error applies to built-ins whose return value is marked as required, not to user functions.

A parameterless function used only for its side effect can be called as a statement:

{% code title="reset-mode-function.gpc" %}

```cpp
int mode;

main {
    if(event_press(PS5_CIRCLE)) {
        reset_mode();
    }
}

function reset_mode() {
    mode = 0;
}
```

{% endcode %}

Functions make repeated logic readable, but deep call chains and large expressions increase stack pressure.


# init and main

`init` runs once. `main` runs continuously. Both operate on the same globals.

Zen Studio Live accepts multiple `init` and multiple `main` sections. The compiler merges each set into a single initialization phase and a single repeating main phase. This is useful for generated or combined source, although one `init` and one `main` are easier to read in hand-written scripts.

Use `init` for:

* loading persistent values;
* platform selection;
* one-time cache initialization;
* setting initial state.

Use `main` for:

* reading current input;
* detecting events;
* advancing state machines;
* calculating the current output report;
* drawing only when a dirty flag says the display changed.




---

[Next Page](/llms-full.txt/1)

