<<< Gemix BETA 6.0 >>>

Aggiornamenti, versioni e ultime notizie sul linguaggio.

<<< Gemix BETA 6.0 >>>

Postby CicTec » Mon Jan 17, 2011 4:20 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


NOTA: 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:
    • _p_wait
    • _p_nowait
    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:
    • all_process
    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ù accurato

Graphics
-----------

  • + 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:
    • SET_DRAW_DESTINATION
    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 maiuscoli

Sound
--------

  • * 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 schermo

Scroll
-------

  • + 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:
    • ATOF, FTOA, CALCULATEF
  • ! Informazione: ottimizzate funzioni LOWER e UPPER

Text
------

  • + 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:
    • SET_TEXT_DESTINATION
    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 SOFT

Pathfind
-----------

  • + 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
User avatar
CicTec
 
Posts: 16300
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

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

Salve a tutti,

E' stata rilasciata nuovamente la beta con alcune migliorie significative di performance (delle primitive grafiche disegnate con DRAW), ed alcuni bugfix segnalati dagli utenti.
Potete riscaricare la beta dai link posti all'inizio del thread.

Grazie a tutti per i report :)

Saluti.
User avatar
CicTec
 
Posts: 16300
Joined: Thu Jul 31, 2008 10:18 pm

Re: <<< Gemix BETA 6.0 >>>

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

Ciao a tutti,

Nuovo aggiornamento della beta disponibile in cui si aggiunge il porting per Mac OS X e un fix di sicurezza importante per le password utilizzate per criptare le risorse.

La versione per Windows è stata suddivisa tra il nucleo ed i tools, adesso sono 2 file.
Come sempre, se avete problemi, domande, ecc ... siamo qui.

Saluti. :)
User avatar
CicTec
 
Posts: 16300
Joined: Thu Jul 31, 2008 10:18 pm


Return to Novità e Releases

Who is online

Users browsing this forum: No registered users and 2 guests