BETA download:
Gemix Studio BETA 6.0 Tools Win32BETA download:
Gemix Studio BETA 6.0 Win32BETA download:
Gemix Studio BETA 6.0 LinuxBETA download:
Gemix Studio BETA 6.0 Mac OS XNOTE: 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
ex:
FUNCTION INT my_max(INT v1, INT v2)
FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE 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
ex:
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
Main
------- + Added: new EXEC function and constants:
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:
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 nowGraphics
------------ + 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+ Added: new DRAW_DESTINATION_FILE and DRAW_DESTINATION_GRAPH GLOBAL variables
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...)Input
-------- + 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 accentsSound
--------- * Fixed: bug in the audio system that may crash sometimes carrying the program to successfully download the resources allocated
File
------ + 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
Mode7
--------- + 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 screenScroll
-------- + 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%Math
------- + Added: new overloads of the following functions with floating-point support:
- ABS, ACOS, ASIN, ATAN, ATAN2, POW, SQRT, RAND, COS, SIN, TAN, COPYSIGN, MILTODEG, DEGTOMIL, MIN, MID, MAX
and new functions:
- EXP, FREXP, LDEXP, LOG, LOG2, LOG10, MODF, COSH, SINH, TANH, CEIL, FLOOR, HYPOT, ISFINITE, ISINFINITE, ISNAN, IMOD, FMOD, FTOFIX, FIXTOF, DTOFIX, FIXTOD, DEGTORAD, RADTODEG
#Modified: math functions with more common names:
- GET_MIN -> MIN
- GET_MID -> MID
- GET_MAX -> MAX
- DEGREETOMIL -> DEGTOMIL
- MILTODEGREE -> MILTODEG
* Fixed: bug in SIN function to return the exact sine of 90° (90000)String
--------- + Added: new string functions for floating-point:
! Information: optimized LOWER and UPPER functionsText
------- + Added: new functions to print floating-point numeric text:
- WRITE_FLOAT, WRITE_DOUBLE
- + Added: new function WRITE_DWORD to print text numerical unsigned
- + Added: new TEXT_DESTINATION_FILE and TEXT_DESTINATION_GRAPH GLOBAL variables
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
- DRAW_TEXT, MAP_PUT_TEXT, PUT_TEXT
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 functionsPathfind
------------ + 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%Modules
----------- + Added: tween module to create simple transitions
Platforms
------------- + Added: new Linux platform
- + Added: new Mac OS X platform