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 XNOTA: la versione BETA ed il suo utilizzo è GRATIS fino all'uscita della versione FINALE (vedere = README =.TXT per maggiori info sulla licenza d'uso)03/01/2011 BETA 6.0---------------------------
Language & Core
---------------------- + Aggiunto: nuovi tipi di dati al linguaggio:
- FLOAT (floating-point single precision 32bits)
- DOUBLE (floating-point double precision 64bits)
- + Aggiunto: supporto di tipo di ritorno dei blocchi FUNCTION
es: FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2) - + Aggiunto: supporto di overloading per i blocchi FUNCTION
es:
FUNCTION INT my_max(INT v1, INT v2)
FUNCTION FLOAT my_max(FLOAT v1, FLOAT v2)
FUNCTION DOUBLE my_max(DOUBLE v1, DOUBLE v2) - + Aggiunto: nuove parole chiave al linguaggio: BAND, BOR, BXOR, alias degli operatori &, |, ^
- + Aggiunto: operatore bitwise NOT (~) e parola chiave alias BNOT
- + Aggiunto: operatore condizionale (?:) al linguaggio, permette di utilizzare condizioni stile IF(condition) ... ELSE ... END nelle espressioni
- + Aggiunto: opzione di compilazione _USE_CSTYLE_OPERATORS la quale permette di utilizzare gli operatori stile C, secondo la loro priorità e semantica.
Con questa opzione gli operatori AND, XOR y OR (&&, ^^, ||) funzioneranno come operatori logici reali, inoltre verrà attivato in automatico il sistema di condizioni stile C
NOTA: questa opzione di compilazione rompe la compatibilità con i programmi DIV2 - + Aggiunto: opzione di compilazione _USE_CSTYLE_SIZEOF la quale permette all'operatore SIZEOF di restituire la dimensione in bytes invece di elementi
NOTA: questa opzione di compilazione rompe la compatibilità con i programmi DIV2 - + Aggiunto: opzione di compilazione _USE_CSTYLE la quale permette di attivare una serie di opzioni stile C (matrici, operatori, sizeof, condizioni, etc...)
NOTA: questa opzione di compilazione rompe la compatibilità con i programmi DIV2 - + Aggiunto: operatore (cast)al linguaggio, permette di convertire expressioni di un tipo in un altro
- + Aggiunto: supporto cross-platform-compilation al compilatore, permette di compilare per tutte le piattaforme disponibili in Gemix dal Sistema Operativo utilizzato
- + Aggiunto: supporto di numeri in notazione esponenziale (es: value = 1.33e-7)
- + Aggiunto: supporto di argomenti di default per PROCESS e FUNCTION
es:
PROCESS wolf(x, y, graph, size = 50, alpha = 128)
FUNCTION calculate_speed(double start = 300.1234567) - + Aggiunto: supporto di puntatori a puntatori (es: int **ptr, ***ptr2, etc...)
- * Corretto: bug nella dichiarazione e uso dei puntatori multidimensione
- * Corretto: bug nell'utilizzare puntatori nella forma ptr[<expr>]..., con la opzione di compilazione _USE_CSTYLE_MATRIX
- * Corretto: bug di errore di compilazione nel dichiarare strutture contenenti come primo campo un dato con un tipo esplicito (es: INT val, STRING text, etc...) usando l'opzione di compilazione _USE_CSTYLE_MATRIX
- * Corretto: bug nel controllo degli indici di array senza dimensione esplicita (es: int array [] = 1, 2, 3, 4, 5,) quando veniva utilizzata l'opzione di compilazione _USE_CSTYLE_MATRIX
- * Corretto: bug il quale impediva l'utilizzo di costanti dichiarate come CONST da utilizzate come dimensione di array dichiarati come campi di una struttura
- * Corretto: bug nell'uso interno di stringhe temporanee
- * Corretto: bug in SIZEOF nel calcolo di stringhe, puntatori a stringhe e puntatori a strutture
- * Corretto: bug nelle espressioni di stringhe usando valori di ritorno delle funzioni
Main
------- + Aggiunto: nuova funzione EXEC e costanti:
Esegue un comando esterno permettendo di scegliere di bloccare il programma o no durante l'esecuzione
dello stesso
+ Aggiunto: nuova funzione GETENV, permette di recuperare il valore di
una variable d'ambiente+ Aggiunto: nuova funzione GET_OS e costanti:
- os_windows
- os_linux
- os_macos
Restituisce un valore corrispondente ad una delle costanti per sapere in quale sistema operativo viene
eseguito il programma
+ Aggiunto: nuovo tipo utilizzabile per la funzioner SIGNAL e costante:
Permette di inviare un segnale a tutti i processi del programma ad esclusione di quello che
richiama la funzione* Corretto: bug nella funzione EXISTS nel restituire correttamente i
processi esistenti usando la forma TYPE process! Informazióne: migliorato controllo FPS, adesso più accuratoGraphics
------------ + Aggiunto: nuovo overload per le funzioni ADVANCE e XADVANCE:
- INT ADVANCE(INT process_id, INT distance)
- INT XADVANCE(INT process_id, INT angle, INT distance)
Il quale permette di muovere un determinato processo da un'altro punto del programma
(process/function)+ Aggiunto: nuovo overload per le funzioni GET_ANGLE e GET_DIST:
- INT GET_ANGLE(INT process_id1, INT process_id2)
- INT GET_DIST(INT process_id1, INT process_id2)
Le quali permettono di ottenere angolo e distanza tra due processi da un'altro punto del programma
(process/function)+ Aggiunto: nuove variabili LOCAL DESTINATION_FILE e DESTINATION_GRAPH che permettono di specificare un grafico come framebuffer di rendering per il processo+ Aggiunto: nuove variabili GLOBAL DRAW_DESTINATION_FILE e DRAW_DESTINATION_GRAPH
nuove funzioni:
nuove costanti per DRAW_INFO:
- drawing_destination_file
- drawing_destination_graph
Permettono di specificare ed ottenere il grafico utilizzato come framebuffer di rendering per le primitive grafiche
+ Aggiunto: supporto di FPG e MAP compresse e criptate, vengono aggiunti i seguenti nuovi 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: adesso SAVE_FPG e SAVE_MAP salvano in forma compressa automaticamente+ Aggiunto: supporto per qualunque tipo di risoluzione non-standard (es: 301x255)+ Aggiunto: nuova funzione SET_VIRTUAL_RESOLUTION che permette di stabilire una risoluzione virtuale con dimensioni differenti rispetto a quella stabilita con SET_MODE. Il contenuto della risoluzione fisica verrà adattato, stirandolo o restringendolo secondo il caso.
Viene aggiunto inoltre la funzione VIRTUALRESOLUTION_INFO e costanti:
- virtualres_isvirtual
- virtualres_aspectratio
- virtualres_width
- virtualres_height
- virtualres_ratiowidth
- virtualres_ratioheight
- virtualres_xoffset
- virtualres_yoffset
Per ottenere info sulla risoluzione virtuale stabilita
+ Aggiunto: parametro per supporto di Z nella funzione DRAW_TILE+ Aggiunto: supporto per regioni senza limiti di dimensione+ Aggiunto: nuovo overload per la funzione OUT_REGION:
- INT OUT_REGION(INT process_id, INT x, INT y, INT width, INT height)
Verifica se un grafico si trova all'interno della regione rettangolare indicata dai parametri
+ Aggiunto: nuova funzione XOUT_REGION, verifica se un processo si trova all'interno, parzialmente fuori o totalmente fuori da una regione, restituendo un valore di tipo float indicante la percentuale del grafico che si trova all'esterno della regione, dove 0.0 è totalmente dentro e 100.0 totalmente fuori.+ Aggiunto: nuovi overloads per le funzioni COLLISION e OVERLAP:
- 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)
che verificano se un punto collide con un processo
- Rimosso: variabile GLOBAL DRAW_REGION non necessaria# Modificato: costante fps_exists -> fpg_loaded* Corretto: bug nella signature dell'overload della funzione GET_REAL_POINT dove il parametro process_id era dichiarato per ultimo invece di primo* Corretto: bug in GET_PIXEL/MAP_GET_PIXEL nell'ottenere il valore corretto del pixel (in 32bits) in alcuni casi* Corretto: bug di sincronizzazione del puntatore del mouse pointer quando veniva utilizzato un filtro grafico 2x (normal2x, scale2x)* Corretto: bug nelle primitive grafiche (DRAW) nell'utilizzare regioni differenti dallo schermo (0)* Corretto: bug in UNLOAD_FPG_MAP il quale non permetteva di scaricare un grafico con codice 999, provocando un errore di runtime* Corretto: bug nell'uso di commenti multilinea il quale portava al crash del programma in alcuni casi* Corretto: bug usando la funzione XXPUT il quale portava al crash del programma * Corretto: bug in CLONE_MAP nel duplicare grafici con canale alpha* Corretto: bug in CLONE_MAP nel duplicare correttamente il punto di controllo 0 in alcuni casi* Corretto: bug nel sistema partial_restore/dump il quale causava il crash del programma in alcuni casi* Corretto: bug nelle funzioni PUT_CSRECT, PUT_RECT, PUT_SRECT, MAP_PUT_CSRECT, MAP_PUT_RECT and MAP_PUT_SRECT nel disegnare correttamente le primitive in alcuni casi* Corretto: bug nella funzione DRAW_TILE nell'utilizzare una regione differente dalla 0* Corretto: bug nel sistema interno di blitting il quale causava il crash del programma quando si tentava di disegnare in una regione inesistente* Corretto: bug nel restaurare il rendering del programma quando veniva cambiata la risoluzione o profondità di colori del sistema* Corretto: bug in alcune rutines FX + ALPHA quando venivano applicate ad operazioni di grafici con canale alpha! Informazione: ottimizzato rendering SOFT dei grafici, più rapido del 2 ~ 6%! Informazione: ottimizzati alcuni FX SOFT, più rapidi del 10 ~ 40%! Informazione: ottimizzati filtri scanline 25-50-75%, più rapidi del 30 ~ 40%! Informazione: ottimizzato filtro normal2x, più rapido del 5 ~ 10%! Informazione: ottimizzata funzione CLONE_MAP, più rapida del 30%! Informazione: ottimizzato SIZE e SIZE_X/Y, più rapido del 40 ~ 110%! Informazione: ottimizzata funzione OUT_REGION! Informazione: ottimizzato ALPHA 16bits, più rapido del 5 ~ 50%! Informazione: ottimizzato b]FADING[/b] a 16bits e 32bits! Informazione: ottimizzate funzioni MAP_SET_COLOR y MAP_SET_PIXEL, versioni SOFT! Informazione: ottimizzate funzioni di primitive grafiche (DRAW, PUT_PIXEL, GET_PIXEL, MAP_PUT_LINE, etc...)Input
-------- + Aggiunto: miglior supporto per i valori HAT dei joysticks e nuove costanti:
- 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
# Modificato: intervallo dei valori restituito dai joysticks analogici, adesso tra -32768..32767* Corretto: bug il quale impediva di utilizzare i campi TFMORDER, SHEAR_X e SHEAR_X della struttura MOUSE* Corretto: bug nella variabile ASCII nel restituire correttamente il codice dei caratteri accentati e maiuscoliSound
--------- * Corretto: bug nel sistema audio il quale portava a volte al crash del programma nel tentativo di scaricare correttamente le risorse allocate
File
------ + Aggiunto: nuove modalità per FOPEN: "wz", "rz", "az", "w+z", "r+z", "a+z" permettono di leggere/scrivere files compressi (solo file binari e con funzioni FREAD/FWRITE).
nuovo overload della funzione:
- INT FOPEN(STRING fname, STRING mode, STRING openmode, STRING password)
permette di creare/aprire file criptati per la lettura/scrittura
Mode7
--------- + Aggiunto: nuova funzione SET_MODE7_DESTINATION, permette di specificare un grafico come framebuffer di rendering per la finestra di mode7
- + Aggiunto: supporto di SIZE_X, SIZE_Y, SHEAR_X, SHEAR_Y e TFMORDER per i processi di mode7
- + Aggiunto: campo VISIBLE nella struttura M7, permettendo in questo modo di poter occultare o rendere visibile la finestra di mode7
- + Aggiunto: supporto di fogging per mezzo dei nuovi campi FOG, FOGCOLOR e FOGDENSITY della struttura [b]M7
Vengono supportati i seguenti tipi di fogging per mezzo delle costanti per il campo FOG
- m7fog_none
- m7fog_linear
- m7fog_quad
- m7fog_cubic
- m7fog_quart
- m7fog_quint
- m7fog_sine
- m7fog_exp
- m7fog_circ
Viene aggiunta inoltre la variabile
LOCAL M7_FOG che permette di indicare se il processo di mode7 verrà influenzato automaticamente dal fogging o no
+ Aggiunto: nuova funzione MODE7_TO_SCREEN, la quale proietta un punto dello spazio di coordinate mode7 (x, y, height) sul piano dello schermo+ Aggiunto: nuova funzione SCREEN_TO_MODE7, la quale proietta le coordinate dello schermo al piano mode7 indicato restituendo le nuove coordinate+ Aggiunto: nuova variabile LOCAL M7_ANGLE, permette di ruotare i grafici dei processi di mode7+ Aggiunto: valore -1 al parametro REGION della funzione START_MODE7 per indicare di utilizzare automaticamente la dimensione del framebuffer di destinazione (mappa o schermo) per il rendering* Corretto: bug nel visualizzare correttamente un grafico della finestra di mode7 quando veniva sostituito con un'altro di dimensione differente* Corretto: bug il quale provocava un crash del programma nell'utilizzare un numero di regione non definita nella funzione START_MODE7, adesso provoca un errore di runtime di regione non valida* Corretto: bug di posizione dei processi di mode7 nell'utilizzare una regione di dimensione inferiore allo schermoScroll
-------- + Aggiunto: nuove funzionalità per lo scroll per il parametro SCROLL_MODE, con le seguenti costanti:
- scroll_normal_key
- scroll_layers_key
permettono impostare lo scroll in modo da poter visualizzare quello che si trova dietro le zone trasparenti dei piani
+ Aggiunto: nuovi campi GRAPH1 e GRAPH2 per la struttura SCROLL, permettono di poter cambiare dinamicamente i grafici dei piani utilizzati per lo scroll+ Aggiunto: nuova funzione SET_SCROLL_DESTINATION, permette di specificare un grafico come framebuffer di rendering per la finestra di scroll+ Aggiunto: campo VISIBLE alla struttura SCROLL, permettendo in questo modo di poter occultare o rendere visibile la finestra di scroll+ Aggiunto: valore -1 al parametro REGION della funzione START_SCROLL per indicare di utilizzare automaticamente la dimensione del framebuffer di destinazione (mappa o schermo) per il rendering* Corretto: bug il quale provocava un crash del programma nell'utilizzare un numero di regione non definita nella funzione START_SCROLL, adesso provoca un errore di runtime di regione non valida! Informazione: ottimizzato ALPHA 16bits, più rapido del 5 ~ 10%Math
------- + Aggiunto: nuovi overloads delle seguenti funzioni con supporto floating-point:
- ABS, ACOS, ASIN, ATAN, ATAN2, POW, SQRT, RAND, COS, SIN, TAN, COPYSIGN, MILTODEG, DEGTOMIL, MIN, MID, MAX
e nuove funzioni:
- EXP, FREXP, LDEXP, LOG, LOG2, LOG10, MODF, COSH, SINH, TANH, CEIL, FLOOR, HYPOT, ISFINITE, ISINFINITE, ISNAN, IMOD, FMOD, FTOFIX, FIXTOF, DTOFIX, FIXTOD, DEGTORAD, RADTODEG
#Modificato: funzioni matematiche con nomi più comuni:
- GET_MIN -> MIN
- GET_MID -> MID
- GET_MAX -> MAX
- DEGREETOMIL -> DEGTOMIL
- MILTODEGREE -> MILTODEG
* Corretto: bug nella funzione SIN nel restituire il seno esatto di un angolo di 90° (90000)String
--------- + Aggiunto: nuove funzioni di stringhe per floating-point:
! Informazione: ottimizzate funzioni LOWER e UPPERText
------- + Aggiunto: nuove funzioni per stampare testi numerici floating-point:
- WRITE_FLOAT, WRITE_DOUBLE
- + Aggiunto: nuova funzione WRITE_DWORD per stampare testi numerici senza segno
- + Aggiunto: nuove variabili GLOBAL TEXT_DESTINATION_FILE e TEXT_DESTINATION_GRAPH
nuove funzioni:
nuove costanti per
TEXT_INFO:
- txt_destination_file
- txt_destination_graph
permettono di specificare e ottenere il grafico usato come framebuffer di rendering per i testi
+ Aggiunto: nuovi overloads per le funzioni WRITE e WRITE_INT:
- 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)
I quali permettono di creare testi fissi o dinamici, vengono aggiunte inoltre le seguenti nuove funzioni:
- DRAW_TEXT, MAP_PUT_TEXT, PUT_TEXT
Le quali permettono di disegnare un testo in un MAP, schermo o nel suo fondo
* Corretto: bug in WRITE nel visualizzare correttamente i testi di variabili STRING (bug introdotto nella 5.7)* Corretto: bug nel visualizzare correttamente caratteri accentati delle FNT di DIV! Informazione: ottimizzare funzioni FNT_SET_COLOR, FNT_SET_PIXEL, TEXT_SET_COLOR e TEXT_SET_PIXEL versioni SOFTPathfind
------------ + Aggiunto: nuovi modi di ricerca nel sistema PATHFINDING per PATH_FIND senza l'utilizzo di diagonali, vengono aggiunte inoltre le nuove costanti per i modi disponibili:
- pf_fast
- pf_accurate
- pf_fast_nodiag
- pf_accurate_nodiag
! Informazione: ottimizzari metodi PATHFINDING, più rapidi del 5 ~ 20%Modules
----------- + Aggiunto: modulo tween per creare animazioni in modo semplice
Platforms
------------- + Aggiunto: nuova piattaforma Linux
- + Aggiunto: nuova piattaforma Mac OS X