Hey guys!
Recently I've started working on 123basic again and I think it's ready to show it to you guys.
First of all the Changelog:
0.5
Fixed: INIGET$ returns "NO_DATA" if data does not exist
Fixed: NETWEBEND redirects properly
Fixed: ALPHAMODE behaves more like GLB (but not quite the same)
Fixed: PRINT with unknown characters does not crash - ignores them
Fixed: SMOOTHSHADING works properly
Fixed: MEM2SPRITE works again on newer browsers
Fixed: SOX with libmad
Fixed: MUSIC playback & looping
Added: MUSICVOLUME
Added: PAUSEMUSIC
Fixed: ALPHAMODE 0.5; SHOWSCREEN did cause weird graphical gliches
0.4
Fixed: NOT fixed.
Fixed: ROTOSPRITE/ROTOANIM/ROTOZOOMSPRITE/ROTOZOOMANIM use correct image handle when rotating
Changed: New file structure of project
Fixed: Default Font is now loaded properly - even if its not in the /Media directory
Added: GETNUMJOYSTICKS()
Added: GETJOYX, GETJOYY, GETJOYZ
Added: GETJOXRX, GETJOYRY, GETJOYRZ
Added: GETJOYNAME$
Added: GETJOYBUTTON
Added: GETDIGIX/GETDIGIY
Fixed: "FOR i = 0 TO 0 STEP 0" had wrong behaviour
Fixed: SETSCREEN does not ignore Fullscreen parameter anymore and the width/height is set properly
Fixed: TYPE Foo; Bar; FUNCTION Asdf: Bar; RETURN Bar; ENDFUNCTION // this returned the value of self.Bar instead of the value of the parameter
Fixed: TYPE asdf; Foo; FUNCTION Bar: FOR Foo = 0 TO 10; NEXT; STDOUT Foo; ENDFUNCTION; ENDTYPE // Implicit self in For should create new local variable to maintain compatibility
Fixed: ZOOMSPRITE 0,0,0,-1,1 // position of image was not correct
Fixed: "settings.xml" with more than 1 target didnt function properly
Fixed: VIEWPORT sets origin properly
Changed: Began to work on VM - does not run yet
Fixed: Float in array access bug
Fixed: LEN("\n", TRUE) crashed
Fixed: SPLIT returned wrong array length
Fixed: POLYVECTOR with mode == 1 and no POLYNEWSTRIP crashed
Fixed: POLYVECTOR messed up VIEWPORT
Fixed: "Hugo" < "Manfred" evaluates as expected (<,>,>=,<= are overloaded properly)
Fixed: Arrays with ref that were not initialized with DIM/REDIM had wrong defaultval (caused to problems with strings for example)
I have mainly fixed a lot of bugs... I mean a _lot of_ bugs. Stuff like ddgui compiles and executes properly (but because it is not adapted to the GLB_ON_LOOP it freezes sometimes - but this is not the fault of 123basic

). Things like Joystick support are also implemented (but not yet tested enough). The only demo that is not working properly is "Scramble", because it heavily uses POLYSPRITE which can not be executed properly in HTML5 without WebGL, because it lacks proper support for drawing textured and tinted polygons.
Personally, Id say 123basic should be capable of running every GLB game that does not use POLYSPRITE with tinting and is modified to not use a mainloop (GLB_ON_LOOP instead).
Use it?The repository of 123basic is
https://github.com/metzzo/123-basic, so everyone can view the compiler and the library and maybe even contribute.
Currently there are two possibilities to code in 123basic:
Online is surely easier to use, because it is directly available with no installation. The macro is not as easy to set up, but you can compile your GLB project directly from the IDE. Compile 123basic from the IDE, than set up the macro (see "Macro.txt") and voilá you can directly compile to 123basic from the GLB IDE.
If you do so, 123basic will start a local server, because it needs it to access certain media without causing a DOM security exception.
Demos?My testing suite consists primarly of:
All samples are only tested with current Chrome version. Firefox is likely to function properly. IE/Opera/Safari not so much. EDIT: I've just tested some demos on FF - a lot of them are crashing. Im currently trying to fix this problem. EDIT2: The problem is caused by a Firefox
bug.
What's next?I would like you to use 123basic, show me bugs, maybe suggestions for improvement and so on. If you find any bug, it would make it much easier for me, if you send me some snippet so i can debug it.
I would also expand the IDE, library (NET..., X_..., GUI, other funny stuff), continue implementing VM, ... There is a lot to do!
Also in regards of tutorials, some YT videos and a proper website is also on the ToDo list.
If you have any questions, feel free to ask them
