<<< Gemix BETA 6.0 >>>

Updates, releases and the last news about the programming language.

<<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 03, 2011 3:13 pm

BETA download: Gemix Studio BETA 6.0 Tools Win32
BETA download: Gemix Studio BETA 6.0 Win32
BETA download: Gemix Studio BETA 6.0 Linux
BETA download: Gemix Studio BETA 6.0 Mac OS X

NOTE: the BETA version usage is FREE and valid until the FINAL version (see = README =.TXT for license info)

01/03/2011 BETA 6.0

Language & Core

  • + Added: new data types added to language:
    • FLOAT (floating-point single precision 32bits)
    • DOUBLE (floating-point double precision 64bits)
  • + Added: support for return type for FUNCTION blocks
    ex: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
  • + Added: support for overloading FUNCTION blocks
    FUNCTION INT my_max(INT v1, INT v2)
  • + Added: new keywords added to the language: BAND, BOR, BXOR, alias operators &, |, ^
  • + Added: bitwise NOT (~) operator and alias keyword BNOT
  • + Added: conditional operator (?:) to language, allows the use of style condition IF(condition) ... ELSE ... END on expressions
  • + Added: _USE_CSTYLE_OPERATORS compile option which allows use C-style operators, according to their priority and semantics.
    With this option, operators AND, XOR and OR (&&, ^^, ||) real works as logical operators, also the system automatically activated on C-style conditions
    NOTE: this option breaks DIV2 compatibility
  • + Added: _USE_CSTYLE_SIZEOF compile option which allows SIZEOF operator to return the size in bytes instead elements
    NOTE: this option breaks the DIV2 compatibility
  • + Added: _USE_CSTYLE compile option which allows to activate a number of options C style (matrices, operators, sizeof, conditions, etc ...)
    NOTE: this option breaks DIV2 compatibility
  • + Added: operator (cast) to language, to convert expressions from one type to another type
  • + Added: support cross-platform-compilation to compiler, can compile for all platforms available from Gemix from the OS used
  • + Added: support for numbers in exponential notation (ex: value = 1.33e-7)
  • + Added: support for default arguments on PROCESS and FUNCTION blocks
    PROCESS wolf(x, y, graph, size = 50, alpha = 128)
    FUNCTION calculate_speed(double start = 300.1234567)
  • + Added: support for pointers to pointers (ex: int **ptr, ***ptr2, etc...)
  • * Fixed: bug in the declaration and use of pointers multidimension
  • * Fixed: bug when using pointers as ptr[<expr>]..., using _USE_CSTYLE_MATRIX compile option
  • * Fixed: bug compilation error to declare structures as the first field had a figure with an explicit type (ex: INT val, STRING text, etc...) by using the compiler option _USE_CSTYLE_MATRIX
  • * Fixed: bug in the control of indices for array without size specified (ex: int array [] = 1, 2, 3, 4, 5,) when used the compile option _USE_CSTYLE_MATRIX
  • * Fixed: bug that prevented use of constants declared with CONST for size arrays declared as fields of a structure
  • * Fixed: bug in the internal use of temporary strings
  • * Fixed: bug in SIZEOF in the calculation of strings, pointers strings and pointers to structures
  • * Fixed: bug in string expressions using values functions return


  • + Added: new EXEC function and constants:
    • _p_wait
    • _p_nowait
    run an external command allows to choose whether to block the application or not whether the execution of
  • + Added: new GETENV function, to retrieve the value of an environment variable
  • + Added: new GET_OS function and constants:
    • os_windows
    • os_linux
    • os_macos
    Returns a value corresponding to a constant to let you know which operating system is running the program
  • + Added: new type usable for SIGNAL function and constant:
    • all_process
    This sends a signal to all processes of the program except for the current one that called the function
  • * Fixed: bug in EXISTS function to report correctly existing processes when use TYPE process form
  • ! Information: FPS control improved, more accurate now


  • + Added: new overload for ADVANCE and XADVANCE functions:
    • INT ADVANCE(INT process_id, INT distance)
    • INT XADVANCE(INT process_id, INT angle, INT distance)
    which allows you to move a particular process from other point of the program (process/function)
  • + Added: new overload for GET_ANGLE and GET_DIST functions:
    • INT GET_ANGLE(INT process_id1, INT process_id2)
    • INT GET_DIST(INT process_id1, INT process_id2)
    which allow you to obtain an angle and distance between two processes from another part of the program (process/function)
  • + Added: new DESTINATION_FILE and DESTINATION_GRAPH LOCAL variables that let you specify a graphic framebuffer for rendering the process
    new functions:
    new constants for DRAW_INFO:
    • drawing_destination_file
    • drawing_destination_graph
    allow you to specify and obtain the graph used as framebuffer for rendering graphics primitives
  • + Added: support for FPG and MAP compressed and encrypted, it adds the following new overloads:
    • INT LOAD_FPG(STRING fname, STRING password)
    • INT LOAD_FPG_MAP(STRING fname, STRING password, INT fpg_id, INT graph)
    • INT LOAD_MAP(STRING fname, STRING password)
    • INT SAVE_FPG(INT fpg_id, STRING fname, STRING password)
    • INT SAVE_MAP(INT fpg_id, INT graph, STRING fname, STRING password)
    NOTA: now SAVE_FPG and SAVE_MAP stored in compressed form in automatic
  • + Added: support for any non-standard resolution (ex: 301x255)
  • + Added: new SET_VIRTUAL_RESOLUTION function that lets you set virtual resolution with a different size about physics SET_MODE established. The contents of the physical resolution will be adapted to virtual, stretching or shrinking as appropriate.
    It also adds VIRTUALRESOLUTION_INFO function and constants:
    • virtualres_isvirtual
    • virtualres_aspectratio
    • virtualres_width
    • virtualres_height
    • virtualres_ratiowidth
    • virtualres_ratioheight
    • virtualres_xoffset
    • virtualres_yoffset
    For info on the established virtual resolution
  • + Added: support Z parameter for DRAW_TILE function
  • + Added: support for unlimited size regions
  • + Added: new overload for the OUT_REGION function:
    • INT OUT_REGION(INT process_id, INT x, INT y, INT width, INT height)
    Checks whether a graph is within a rectangular region indicated by parameters
  • + Added: new function XOUT_REGIONcheck if a process is inside, partially or completely outside a region returning a float value indicating what percentage of the graph located outside the region, being completely within 0.0 and 100.0 totally out.
  • + Added: new overloads for COLLISION and OVERLAP functions:
    • INT COLLISION(INT x, INT y, INT process_id)
    • INT COLLISION(INT x, INT y, TYPE process)
    • INT OVERLAP(INT x, INT y, INT process_id)
    • INT OVERLAP(INT x, INT y, TYPE process)
    that checks whether a point collides with a process
  • - Removed: unnecessary DRAW_REGION GLOBAL variable
  • # Modified: constant fpg_exists -> fpg_loaded
  • * Fixed: bug in the signature of the role overload GET_REAL_POINT where process_id parameter was declared finally in first place
  • * Fixed: bug in GET_PIXEL/MAP_GET_PIXELto obtain the correct pixel value (in 32bits) sometimes
  • * Fixed: bug synchronization of the mouse pointer when using filter 2x (normal2x, scale2x)
  • * Fixed: bug in the primitive graphics (DRAW) using regions different of screen (0)
  • * Fixed: bug in UNLOAD_FPG_MAP no you can download a graphic with code 999, giving runtime error
  • * Fixed: bug in using multiline comments that caused the program to crash in some cases
  • * Fixed: bug using XXPUT that cause a program crash
  • * Fixed: bug in CLONE_MAP doubling graphics with alpha channel
  • * Fixed: bug in CLONE_MAP to successfully duplicate the control point 0 in some cases
  • * Fixed: bug in the system partial_restore/dump that caused the program to crash in some cases
  • * Fixed: bug in PUT_CSRECT, PUT_RECT, PUT_SRECT, MAP_PUT_CSRECT, MAP_PUT_RECT and MAP_PUT_SRECT functions, drawing properly primitive in many cases
  • * Fixed: bug in function DRAW_TILE to use a different region from 0
  • * Fixed: bug in the internal system that caused the blitting program to crash when attempting to draw on a absent region
  • * Fixed: bug in the rendering restore the program when changed the following resolutions and depth of system
  • * Fixed: bug in FX + ALPHA routines when applied to operations graphics with alpha channel
  • ! Information: optimized SOFT graphics rendering, faster 2 ~ 6%
  • ! Information: optimized some FX SOFT, faster than 10 ~ 40%
  • ! Information: scanline 25-50-75% filters, optimized, faster 30 ~ 40%
  • ! Information: normal2x filter optimized, faster than 5 ~ 10%
  • ! Information: CLONE_MAP function optimized, 30% faster
  • ! Information: optimized SIZE and SIZE_X/Y, faster than 40 ~ 110%
  • ! Information: OUT_REGION function optimized
  • ! Information: optimized 16bits ALPHA, faster than 5 ~ 50%
  • ! Information: optimized FADING for 16bits and 32bits
  • ! Information: optimized functions MAP_SET_COLOR y MAP_SET_PIXEL, SOFT versions
  • ! Information: optimized graphics primitive functions (DRAW, PUT_PIXEL, GET_PIXEL, MAP_PUT_LINE, etc...)


  • + Added: support for the HAT values of joysticks and new constants:
    • joy_hat_notavailable
    • joy_hat_centered
    • joy_hat_up
    • joy_hat_right
    • joy_hat_down
    • joy_hat_left
    • joy_hat_rightup
    • joy_hat_rightdown
    • joy_hat_leftdown
    • joy_hat_leftup
  • # Modified: range of values returned that gives the analog joysticks, now the range is -32768..32767
  • * Fixed: bug that prevented using TFMORDER, SHEAR_X and SHEAR_X fields MOUSE structure
  • * Fixed: bug in ASCII variable to return the correct code uppercase characters and accents


  • * Fixed: bug in the audio system that may crash sometimes carrying the program to successfully download the resources allocated


  • + Added: new modalities for FOPEN: "wz", "rz", "az", "w+z", "r+z", "a+z" allow to read/write compressed files (only binary files with FREAD/FWRITE functions).
    new overload of the function:
    • INT FOPEN(STRING fname, STRING mode, STRING openmode, STRING password)
    to create/open encrypted files for read/write


  • + Added: new function SET_MODE7_DESTINATION, to specify a graphic rendering to framebuffer window mode7
  • + Added: support SIZE_X, SIZE_Y, SHEAR_X, SHEAR_Y and TFMORDER for mode7 processes
  • + Added: field VISIBLE to M7 structure, allowing to hide or to show a window mode7
  • + Added: support for fogging, using new fields FOG, FOGCOLOR and FOGDENSITY [b]M7 structure
    Following types are supported by fogging FOG constant for the field:
    • m7fog_none
    • m7fog_linear
    • m7fog_quad
    • m7fog_cubic
    • m7fog_quart
    • m7fog_quint
    • m7fog_sine
    • m7fog_exp
    • m7fog_circ
    It also adds a LOCAL M7_FOG to describe if the mode7 process will be automatically affected by fogging or not
  • + Added: new function MODE7_TO_SCREEN, which projects a point in space mode7 coordinate (x, y, height) to the plane of the screen
  • + Added: new function SCREEN_TO_MODE7, projecting coordinates of screen when returning the coordinates indicated mode7
  • + Added: new LOCAL M7_ANGLE variable allows graphics rotate mode7 processes
  • + Added: REGION parameter value of -1 to START_MODE7 function for automatically indicating the size of framebuffer destination (screen or map) for rendering
  • * Fixed: bug in the graph that incorrectly displays a window when switching to another size
  • * Fixed: bug that can crash the program when using a number of an undefined region of the function START_MODE7, now causes a runtime error invalid region.
  • * Fixed: bug position mode7 processes of using a region smaller than the screen


  • + Added: new functions for the scroll to the parameter SCROLL_MODE, with the following constants:
    • scroll_normal_key
    • scroll_layers_key
    allows you to set the scroll so you can see what is behind the transparent areas of the planes
  • + Added: new GRAPH1 and GRAPH2 fields to structure SCROLL, allow to dynamically change the graphics of the planes used by the scroll
  • + Added: new function SET_SCROLL_DESTINATION, to specify a graphic rendering to framebuffer window scroll
  • + Added: field VISIBLE to SCROLL structure, allows you to hide or show a window scroll
  • + Added: REGION parameter value of -1 to START_SCROLL function for automatically taking the size of framebuffer destination (screen or map) for rendering
  • * Fixed: bug that triggers a program crash when using an undefined region of the function START_SCROLL, now causes a runtime error, invalid region
  • ! Information: optimized 16bits ALPHA, faster than 5 ~ 10%


  • + Added: new overloads of the following functions with floating-point support:
    and new functions:
  • #Modified: math functions with more common names:
    • GET_MIN -> MIN
    • GET_MID -> MID
    • GET_MAX -> MAX
  • * Fixed: bug in SIN function to return the exact sine of 90° (90000)


  • + Added: new string functions for floating-point:
  • ! Information: optimized LOWER and UPPER functions


  • + Added: new functions to print floating-point numeric text:
  • + Added: new function WRITE_DWORD to print text numerical unsigned
    new functions:
    new constants for TEXT_INFO:
    • txt_destination_file
    • txt_destination_graph
    allows you to specify and obtain the graph used as framebuffer rendering for text
  • + Added: new overloads for WRITE and WRITE_INT functions:
    • INT WRITE(INT fnt_id, INT x, INT y, INT align, STRING text, INT update_text)
    • INT WRITE_INT(INT fnt_id, INT x, INT y, INT align, INT POINTER value, INT update_text)
    Which can create static or dynamic text also added the following new functions
    Which allow non-text objects to paint on a MAP, screen or background
  • * Fixed: bug in WRITE function incorectly displaying texts using STRING variables (bug introduced in 5.7)
  • * Fixed: bug when displaying DIV FNT accents, characters
  • ! Information: optimized FNT_SET_COLOR, FNT_SET_PIXEL, TEXT_SET_COLOR and TEXT_SET_PIXEL SOFT versions functions


  • + Added: new ways to search PATHFINDING system for PATH_FIND without the use of diagonals, also added new constant for modes available:
    • pf_fast
    • pf_accurate
    • pf_fast_nodiag
    • pf_accurate_nodiag
  • ! Information: optimized PATHFINDING methods, faster than 5 ~ 20%


  • + Added: tween module to create simple transitions


  • + Added: new Linux platform
  • + Added: new Mac OS X platform
User avatar
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby caanbago » Mon Jan 03, 2011 3:19 pm

Que bueno Cictec,
felicitaciones, una gran cantidad de mejoras! 8-)
:claphands: :y: :y: :y: :y:
User avatar
Posts: 144
Joined: Mon Apr 13, 2009 7:03 am

Re: <<< Gemix BETA 6.0 >>>

Postby Geca » Mon Jan 03, 2011 3:59 pm

Congratulations :)
Good luck with MAC version and tools.
User avatar
Posts: 637
Joined: Fri Feb 20, 2009 1:35 pm
Location: Madrid

Re: <<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 17, 2011 12:42 pm

Thank you all. :)

We have corrected some bugs and improved some new things, re-download the beta again.

User avatar
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby CicTec » Sat Jan 29, 2011 2:13 pm


It was re-released the beta with some significant improvements in performance (the graphics primitives to draw with the function DRAW) and some bug fixes reported by users in the last 2 weeks.
You can re-download the beta from the start of the thread link.

Thank you all for your reports :)

User avatar
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby CicTec » Sat Feb 12, 2011 8:11 pm

Hello everyone,

New beta update available when you add the port to Mac OS X and an important security fix for the password used to encrypt the resources.

The Windows version has been divided between the core and the tools, now are 2 files.
As always, if you have any problems, questions, etc. ... we're here.

Regards. :)
User avatar
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

Postby Dluk » Sun Oct 09, 2011 3:17 pm

Hola, Leuman, he movido el tema a Mesa de Ayuda, el enlace es este: http://www.gemixstudio.com/forums/viewtopic.php?f=73&t=3059. Así de esa manera lo ponemos a la vista de todos los usuarios como un problema. Saludos
"El destino es como un juego... ¿No? Y ahora, esperas mi último movimiento"

Kain - Legacy of Kain: Soul Reaver
User avatar
Posts: 2422
Joined: Sun Jan 04, 2009 3:51 pm
Location: En el campo de batalla

Return to News and Releases

Who is online

Users browsing this forum: No registered users and 3 guests