Cronus PRO v1.20 Final Released

We are happy to announce, that after several months of BETA testing by the community, Cronus PRO v1.20, a massive update in terms of further bug fixes and improvements has finally been released. There is an insane amount of changes, particularly for the power user/script writer; read on for more details……

Cronus PRO v1.20 Changes:

  • GPC Interpreter Library completely re-written in C# – some changes/fixes made:
    • get_ptime now function correctly and gives you the press or release time of the button.
    • get_ptime is no longer limited to 4000 milliseconds, it’s now limited to 32767.
    • get_pvar and set_pvar are now functioning properly, they’re however not kept between runs in X-AIM (yet).
    • Fixed a bug causing TRACE_1 to be limited to a value of -100 to 100.
    • Fixed a bug causing “unmap” to not work properly in the X-AIM interpreter.
  • GPC Compiler Library completely re-written in C# with some additional functions, and lot’s of bugfixes:
    • Added support for ++ and — for variables (variable++ and variable–, not ++variable/–variable). Example:
    • int counter, counter2;
      main {
          set_val(TRACE_1, counter++);
          // The above code is equivalent to this:
          counter2 = counter2 + 1;
          set_val(TRACE_2, counter2);
    • Added support for +=, -=, *=, /= and %= for variable assignments (basically the same as doing: variable = variable < +,-,*,/ or %> ) Example:
    • int counter, counter2;
      main {
          counter += 2;
          set_val(TRACE_1, counter);
          // The above code is equivalent to this:
          counter2 = counter2 + 2;
          set_val(TRACE_2, counter2);
    • Added support for 16-bit values in the data section (NOTE: This will issue a warning that any index coming after this will be +1 from it’s original state, that’s because it’s divided into 2 8-bit values before being added to the bytecode). This means that any value that is > 255 will be split into 2 values in the data section, all done automatically for you.
    • Added support for doing arithmetic operations for constants. This is useful when needing a positive and negative version of the same value, such as the case with anti-recoil mods where you may want to use a inverted version, with this you can thus define the anti recoil value as a positive value then make another shortcut to the negative version while not adding any additional bytecode size! You can now do something like:
    • define value = 1; define value2 = value + 2;
    • Added support for pre-computing constant arithmetics, saving space in the final output (as constant math will be computed at compile time rather than at runtime). See above for the value of this, similar thing.
    • Fixed issues with user function returns.
    • Fixed issues with empty user functions.
    • Removed support for doing “- 1” for example when wanting it to be a negative value (this is considered a syntax error, there should be no space between the minus and the number!), you can still do things like “- CONSTANT” and “-CONSTANT” etc. (and the same for variables, for variables it’s translated to the same as if you did inv();
      This was done so that the compiler can be made more stable and having you think more about what you are doing.
    • Fixed multiple issues with compiled binary data (they would sometimes cause the Virtual Machine running the GPC code to crash – unloading the script).
    • Fixed an issue where doing something like this would result in a syntax error (the idx would become part of the return despite not belonging together):
    • function func(idx) {
          if (TRUE)
           idx = idx*4;
    • Fixed a issue with how things like var[var] = !var[var]; was compiled which would result in incorrect opcode order.
    • Added a check for never ending while loops (constant trigger only) which are now treated as an error (you really shouldn’t do this as it’ll mess up the VM, it’ll get stuck in this and won’t output anything. Example:
    • main {
          while (TRUE) { // This will always run, regardless, and due to no break, it'll never leave this
              set_val(0, 100);
    • Fixed a bug causing the unused function warning to always pop up regardless of if the function was used or not.
    • Added warnings about unused function arguments and combos.
    • Fixed some issues with if, else if and else causing incorrect jumps to happen which could potentially cause the VM to crash due to a never ending loop.
    • Fixed some issues with arrays (they should now be working correctly everywhere).
    • Added support for 2 new types of loops: “for” and “do while”, they’re defined like follows:
    • int idx;
      main {
          for (idx = 0; idx < 10; idx++) {
              //do something here 10 times, always starting at 0, this is the most likely way you'll be using this
          for (; idx < 10; idx++) {
              //do something here 10 times, this one lets idx be whatever it was last
          do {
              // do something here while idx is less then 10, this block will ALWAYS run before the condition is checked, otherwise it works exactly like a "normal" while loop
              // NOTE: this saves 2 bytes if you know you always need to run the block at least once
          } while (idx < 10);
    • Added a bunch of keywords you can no longer use in your scripts; "const", "byte", "char", "sizeof", "do" and "for", the first 4 are used in constructs i'm not ready to document/explain just yet, just don't use these words as-is and you should be good (they can be used within variable names etc, just not as a specific name)
    • Fixed a bunch of issues with the bit operation functions, they weren't being handled correctly - they are now 🙂
  • Added warnings about unused variables with the following cases:
    • unused – It’s not used anywhere at all (neither assigned a value nor read) – This will be printed even if you use it as a base for array indexes which may or may not be a good thing, let me know what you guys think about that.
    • assigned but not used – It’s assigned a value but is never used anywhere (it’s value is never checked/used anywhere).
    • used but not assigned – It’s never assigned a value and will therefor always return 0 as it’s value (this is the default value any variable is given) – NOTE: giving a variable a value when you define it or in the init section counts as assigning it a value, perhaps i should change that behavior and have it tell you when a variable is given a value at startup but never changes…?
  • Corrected the precedence rules, they’re as follows: (the higher the operator, the higher its value is treated in the compiler).
    variables, constants, function calls and anything within ( )'s (this is how you clarify what you want to the compiler, if you don't these rules apply)
    !, ++, --
    *, /, %
    +, -
    < , <=, >, >=
    ==, !=
    =, +=, -=, *=, %=, /=
  • Entire HID Library completely re-written in C#.
  • Added an error line highlight to the code editor (it will now highlight the line that caused an error from the compiler) the default color is red but can be customized in the config (it supports some common names such as “red”, “blue”, “green” etc. and also ARGB annotations: #AARRGGBB (hex, similar to HTML except with the alpha aswell which is the opacity (FF for full color, 80 for semi-transparent).
  • Added support for jumping to the error when trying to compile a script that has an error in it.
  • Fixed an issue with Online Library causing titles to not be wrapped correctly.
  • Fixed an issue with the search function in Online Library – It will now search specifically for what you type in by default (unless using the new Advanced Search setting below):
  • Added “Advanced Search” to Online Library which lets you override the above fix (restore previous behavior where it does a broad search).
  • Added a “go to” command (Ctrl + G) which lets you jump to line x and column y (or just the line).
  • Fixed an issue where high contrast themes would make it very difficult (even impossible in most cases) to read what is/was displayed in Cronus PRO – it now looks the same regardless of your color settings, the window changes but nothing within Cronus PRO should now change.
  • Added some sanity checks before flashing a firmware/gamepack/GPC script to avoid further firmware corruption issues.
  • Added a option to enable/disable Accel/Gyro highlighting in the Device Monitor.
  • Fixed an issue where a corrupt X-AIM.cfg could potentially crash Cronus PRO (it is now logged and ignored – loading defaults instead).
  • Added a separate compiler instance for X-AIM and CM+ use (as they don’t support the same things, the CM+ has additional opcodes/functions not supported by X-AIM).
  • Added a visual indicator as to how many {, [ and ( you have compared to }, ] and ) (currently it’s just “OK” or “Bad” with details when you hover over it).
  • Fixed an issue where disconnecting the monitor then clicking a mouse button would make X-AIM exit capture mode.
  • Added support for downgrading to the previous firmware (Supports Standard, WE and TE modes).

  • Fixed a crash when loading some X-AIM layouts with leftover data from a previous script which was bigger then the current/latest script.
  • Improved some error handling under the hood (will provide more detailed information on certain errors).
  • Fixed some encoding errors in the Online Library – Only shown somewhat recently when someone posted a script with Chinese characters which didn’t display correctly.
  • Fixed a bug causing Visual Scripting to not load nor give a error message when IE 9 or older was installed on a system – You must have IE 10 or above installed for Visual Scripting to work – this means that this feature is NOT available to Vista users.
  • Updated info text for “Rumble Over Bluetooth” to better reflect that this setting is for Playstation and Wii only.
  • Changed Target CPU to AnyCPU rather then x86, increasing performance on 64-bit systems.
Click Here to download Cronus PRO v1.20

This is the biggest update of the Cronus PRO software to date, and none of this would be possible without your continued support and loyalty to our product. We also have some really great GamePacks in the pipeline, and our team of engineers are working on some really exciting new products for 2017.

Watch this space!



Previous Next
Test Caption
Test Description goes like this

Pin It on Pinterest

Share This