Version 1.16.5 of ugBASIC and UGBASIC-IDE has just been released.
In addition to containing strong optimizations on the generated code, and numerous fixes and corrections for all targets (especially for the Amstrad CPC 664 and TRS-80 Color Computer 1/2/3 targets), 32-bit division has finally been implemented for the 6809 processor and the code generation for the MOS 6502/6510/8502 has been improved, with a reduced memory footprint. Even more, the MSPRITE
command under vic2 supports the duplication of graphic definition, in order to reduce the memory requirements. The MIDI to IMF converter has been improved, with support for volume changing and specific percussion handling and automatic instrument calculation that composition software takes for granted, and improvements have also been made to multitasking interleaving capabilities, which can now also handle "busy" waits, making it even easier to write algorithms. Threads can, among other things, be suspended and resumed with the SUSPEND
and RESUME
commands.
From this release of ugBASIC, the additional data type IMAGEREF
is now available, which allows you to represent an IMAGE
, an ATLAS
or an entire SEQUENCE
parametrically, that is, as a reference to one of the same graphic elements previously loaded. This tool allows you to modify the graphic resources at run time, thus allowing you to create games with great aesthetic variability. A whole set of instructions has been added, to manage (automatically) the animations and movements of graphic elements, taking advantage of the improved multitasking. In particular, the ANIMATE
command allows you to activate and drive animations while the program is running, and so does the MOVE
command, which allows you to move objects in parallel, even synchronized with the animation. This is a fairly recent feature, which will be improved and extended in future versions. The new PATH
data type, together with the TRAVEL
instruction, allows you to calculate all the intermediate points of a path between two points, thus allowing you to easily create "programmed paths", such as those associated with graphic adventure animations. These paths are also available on the MOVE
statement, to allow you to move elements on defined paths.
Finally, an additional OPTION FINAL RETURN
directive has been added, which allows you to generate a subprogram, callable, if the target allows it, from embedded BASIC or in general from the host operating system. Additional pragma DEFINE RESIDENT DETECTION
allows to optimize the usage of resident memory, when banking is active. The PRINT RAW
is now available, to print characters without escape sequence parsing. It is now possible to indicate whether an array can receive data from expansion memories, with the FOR BANK READ
and FOR BANK WRITE
options. The conditional compilation has been extended, to support compilation conditional on the presence or absence of hardware sprites (ON SPRITE AVAILABLE
/ ON SPRITE NOT AVAILABLE
). The audio and music assets are now READ ONLY
by default, as well as graphical assets on "console" type targets. The "retro compatible hacks" have been updated which ensure that previously written games can run without any issues, although there have been some small changes in the specifications.
For more information:
https://ugbasic.iwashere.eu/install
https://spotlessmind1975.itch.io/ugbasic-ide
https://sandbox.ugbasic.iwashere.eu