Previously on the project:
This update introduces several key features, including auto-update mode, an emote module, GUI components (progress bars and menus), and Point&Click controllers, while optimizing triggers, resource loading, controllers, touch/mouse handling, and thread handling. On the syntax side, new memory operations, data streaming, and macro scopes were added, along with improved label lookup. The editor significantly enhances functionality and usability, with improved map and trigger editing, code binding, resource sorting, and bitmap font support, refining the editing experience for maps, scenes, and other assets. Performance optimizations notably improve collision detection and camera tracking, while numerous bugs were fixed, memory mapping adjusted, and syntax refined for greater stability and efficiency.
This update includes several breaking changes, primarily aimed at refining and optimizing the syntax and design from the Alpha phase. These modifications address earlier inconsistencies, bringing greater internal cohesion to the runtime, syntax rules, and editor components. Starting with this release, the API will enter a more stable phase, with future updates prioritizing backward compatibility.
This marks a major milestone release for the project, with over 5,000 code commits since its inception - approximately 45% of which were submitted during this v1.1 iteration alone. For brevity, I won't delve into every change here, but the full changelog is provided below.
As of the time of this writing, the latest version is available on Steam (Windows/Linux/MacOS), itch.io (Browser), and GitHub (Source Code)
This software supports Windows, Linux and MacOS natively.
Changelog
See the full changelog below of the release for new features and modifications.
- Runtime
- Added a
MUSIC_POSITION
option for setting the position of music playback - Added an
ENABLED_PROP
property to actor structure - Added an
IS_16x16_GRID
property to the scene structure - Added an auto update mode
- Added an
AUTO_UPDATE_ENABLED
option to toggle update mode - Added an
INSTANTIATED_ACTORS
query key - Added an emote module
- Added an
OBJECT_SPRITE_BASE
option to specify the start sprite index for actors, emotes, projectiles, etc. - Added trigger loading when loads a scene
- Added a progress bar GUI widget
- Added a menu GUI widget
- Added a max size property to the font structure
- Added touch interaction for label paging
- Added a
POINTNCLICK_PLAYER_WITH_MOUSE_BEHAVIOUR
controller - Added a
POINTNCLICK_PLAYER_WITH_TOUCH_BEHAVIOUR
controller - Added a third parameter to the callback of
ON TOUCH(...)
statement for mouse button type - Added an extension slot at the memory bus for platform flags
- Added a
PLATFORM_FLAGS
query key - Added a
wait_until_confirm
native function to wait until the A/Start button has been pressed or anywhere of the screen has been tapped - Updated the top-down actor controller for better behaviour and performance
- Added running support to the platformer controller
- Added builtin resources
- (Breaking) Updated the start address of
PEEK
andPOKE
- Updated the
LOAD SCENE
operation to clear all objects including projectiles and widgets if theclear_objects
parameter is "true" - Updated the scene loading operation to reset any effects
- Updated the actor behaving to ignore controlling if a thread is locking
- Updated the builtin elephant resource
- (Breaking) Changed the unit of the start and end parameters of parallax effect from pixel to tile
- (Breaking) Changed the RAM map of the extension area
- (Breaking) Changed the native function
wait_frames
towait_for
- Optimized the trigger collision calculation
- Optimized the camera following calculation with an actor
- Optimized touch handling
- Optimized the parallax effect
- Optimized signature calculation of the persistence module
- Optimized performance of the actor module and the associated controllers
- Improved thread handling of input callback
- Improved actor activeness refreshing when scroll scenes
- Improved image initialization with map assets to avoid glitches due to non-zero offset
- Improved thread handling by disabling some actor behaviours and input retrieval when a thread is locked
- Improved accuracy of touch position calculation for GUI
- Improved space handling when it's at the beginning of a line for label widget
- Improved computation of actor visibility
- Improved interaction and jump input handling for the platformer controller
- Improved handling of actor overlap for the platformer and top-down controllers
- Improved handling of actor's hidden property by ensuring motion processing is always applied
- Improved actor's interaction against a ladder
- Improved movement during player jump of the platformer controller
- Improved animation initialization when load an actor
- Improved direction refreshing when a top-down controller is blocked in scene
- Improved actor collision handling of the top-down controller
- Improved projectile collision calculation with specific actors' collision group
- Improved a top-down actor's movement when it's blocked by a tile, now it aligns to the nearest passable position
- (Breaking) Removed the
AUTO_ACTOR_SPRITE_ENABLED
option - (Breaking) Removed the
LABEL_NEXT_BTN
option - Fixed an actor animation index initialization issue
- Fixed an actor animation pause issue of the controllers
- Fixed a projectile rendering glitch
- Fixed a camera positioning issue
- Fixed a touch down and touch up detection issue
- Fixed a top-blocking bug of the platformer controller
- Fixed a word wrap issue
- Fixed a callback issue of the
ON TOUCH(...)
family statements - Fixed a font module initialization issue when SRAM is enabled
- Fixed a base tile calculation issue with the GUI statements
- Fixed a base sprite calculation bug after specifying with
OPTION
statement - Fixed a paging bug of text-based widgets when the rest space is still enough
- Fixed an indexed palette setting bug with classic device
- Fixed an offset calculation bug of the window layer for GUI widgets
- Fixed a hardware sprite hiding bug after deleting actor
- Fixed a loading issue of scrolling scene at edges
- Fixed a pinned actor drawing issue
- Fixed a ranging bug when load scene from right or bottom borders instantly
- Fixed an actor thread termination issue where the thread had already finished
- Fixed an argument passing bug with actor's stopping movement operation
- Fixed a calculation bug when move an actor relatively
- Fixed an emote loading bug with tiles asset
- Fixed an actor traversal bug with specific start object
- Fixed a camera positioning bug when load a scene
- Fixed a movement clamping bug of the top-down controller
- Fixed a definition reading bug of the projectile module
- Fixed a loading bug of attributes in the scene module
- Fixed an aligning to tile bug of the top-down controller
- Fixed a hanging bug when execute
SHELL
command on a non-extension device - Upgraded the compiler of the runtime ROM from GBDK-2020 v4.2.0 to v4.4.0
- Added a
- Syntax
- Added an
IMAGE(...) = WITH MAP ...
function to draw map-based image with its corresponding tiles - Added a
DEF SCENE() = NOTHING
statement to reset scene states - Added
AUTO UPDATE ON
andAUTO UPDATE ON
to toggle update mode - Added
DEF PROGRESSBAR(...) = ...
andPROGRESSBAR ...
- Added
DEF MENU(...) = ...
,MENU ...
andMENU NOTHING
- Added
ON MENU() START ...
andOFF MENU
- Added
DEF WIDGET() = NOTHING
to reset GUI states - Added
BEGIN DEF
/END DEF
to make macro scopes - Added
DEF ... = STACKN
to make stack reference aliases - Added a
MEMSET(...)
statement to set the value of a range of memory space - Added a
MEMCPY(...)
statement to copy arbitrary data from an address in memory into another place - Added a
MEMADD(...)
statement to add the specific value to the values of a range of space - Added
LOAD SCENE() = NOTHING
to unload scene and all objects - Added
=WIDTH #pg|name, txt
,=HEIGHT #pg|name, txt
to measure text width and height for GUI widgets - Added support for specify the address of the data sequence by builtin names as
RESTORE "MAGIC"
- Added support for
READ
bytes into an array which was declared byDIM
- Added support for
READ n
to skipn
bytes, wheren
is a number constant - Added support for
RESTORE array
to set the reading position of inline data sequence to the start address of the specific array - Added
BANKOF(...)
andADDRESSOF(...)
operators to get the bank and address of variable/array identifiers or builtin entries - Added a
STREAM
statement to stream transfer data - Added a
DO NOTHING
statement which emits anop
instruction and do nothing - Added an
x_offset
parameter to theDEF LABEL
statement to specify the x offset of the label blit cursor - Added
DEF ... = n
to define macro of numeric constant - Added an
SRAM_ADDRESS
constant that points to the start address of SRAM - Added a
FILE_ADDRESS
constant that points to the start address of each file - Added support to
EXIT
fromWHILE
andREPEAT
loops - Added syntax highlight for jump destinitions
- Added
BEGIN DO
/END DO
to mark the beginning and end of a code block - Added
DEF ... = var
to make variable alias - Added
PACK
/UNPACK
statements to pack/unpack Bytes or Nibbles with Word - Added an
ACTOR_HIT_WITH_DETAILS_ENABLED
constant for device option - Added a new optional collision group parameter to the actor's hit callback
- Added a pair of
PEEK INT
/POKE INT
statements to peek and poke wordwise - Added a parameter for actor handle to the actor's behave routine
- Added a
RESERVE ...
statement to reserve a number of slots on VM stack - Added support for assigning value to
STACK
slots and their aliases - Added
STOP ACTOR(...)
to stop an actor from moving - Added a special animation value (8) for
PLAY ACTOR ...
to turn the actor's animation to idle - Added
DEF ... = MACRO
to define macro alias - Added a
flags
parameter to theMOVE ACTOR(...) WITH ...
andMOVE ACTOR(...) TO ...
statements to support specifying the rule of movement checking - Added
MOVE ACTOR()
and orSTOP ACTOR()
to stop all actors from moving - Added a
SCROLL
statement to scroll tiles on the screen - Added support of
=RGB("{hex}")
to specify color in web hexadecimal format - Added support of
PALETTE ..., #pg:n|name
to specify palette from palette name or index - Added an
=HSV(h, s, v)
statement to create RGB color value from HSV components - Updated
DEF FN ...
to supportBEGIN DEF
/END DEF
- (Breaking) Changed the tiles-based
IMAGE(...) = ...
function toIMAGE(...) = WITH TILE ...
- (Breaking) Changed the
TICKS
variable toTIME
- (Breaking) Changed the
GRAPHICS_MODE
toOBJECTS_MODE
, andDRAW_MODE
toGRAPHICS_MODE
- (Breaking) Changed the
PALETTE ...
parameters to support setting colors for the sprite layer for classic devices - (Breaking) Changed the parameter of the
MOVE ACTOR(...) WITH ...
statement to support specifying the relative movement duration - (Breaking) Changed the
DEBUG
statement toDBGINFO
- Improved jump destination (for
GOTO
/GOSUB
/START
) lookup if a label is globally unique - (Breaking) Removed the
ON SCENE MOVE GOTO/GOSUB ...
andOFF SCENE MOVE
statements - (Breaking) Removed the
POLL()
statement - (Breaking) Removed the
LABEL_BLIT_INTERVAL
option - (Breaking) Removed the
ACTOR_HIT_WITH_DIRECTION_ENABLED
constant (considerACTOR_HIT_WITH_DETAILS_ENABLED
instead) - (Breaking) Removed non-constant reference support for the
STACK(n)
statement - (Breaking) Removed the
FRAME_PROP
actor property - Fixed a case-insensitive bug of the
NOTHING
,FALSE
,TRUE
andTIME
keywords
- Added an
- Compiler
- Added support for bitmap-based font
- Added a new set of escape rules starting with
\
- Added a new escape rule as
\uXXXX
for embedded characters, i.e.\u266B
- Added warning for unknown glyphs
- Added escape support to the
ASC(...)
function - Added a
base
tile parameter to theDEF MAP
andDEF WINDOW
functions - Added a
pitch
parameter to theDEF MAP
andDEF WINDOW
functions - Added an
ENABLED_PROP
property to actor - Added support for compiling custom icon to ROM
- Added support for
JOIN START ...
- Added an
offset
parameter to theDEF MAP ...
/DEF WINDOW ...
statements - Added palette pipeline to compile palette data into final ROM
- Added
SIZE_WIDTH_PROP
andSIZE_HEIGHT_PROP
properties to scene - Added
CAMERA_DEADZONE_PROP
,CAMERA_DEADZONE_X_PROP
andCAMERA_DEADZONE_Y_PROP
properties to scene - Added detail size breakdown for code and all asset types to the compiler/pipeline
- Added accessing to tiles/map assets by their names
- Added warning when using file feature in code but cartridge does not have this function enabled
- Added warning when using RTC feature in code but cartridge does not have this function enabled
- Added static analyzing and highlight of macros
- Added builtin macros
- Updated the structure of font assets to support arbitrary data per font
- (Breaking) Changed the escape for stack pointer from
%#
to\#
- (Breaking) Changed the parameter order of the
DEF LABEL(...)
statement - Changed native symbol lookup to be case-insensitive
- (Breaking) Changed the default value of the
wait
parameter inMOVE ACTOR ...
statements to "true" - Optimized the
GOTO
statement to use near jump if possible - Optimized the
FOR
loop when the condition and step are constants - Improved glyph generation to use substitution font if the origin asset does not contain a glyph
- (Breaking) Improved the behaviour of the code optimization launching option, it defaults to "true" instead of "false"
- Improved parameter checking
- Improved unexpected token checking
- Improved positive/negative sign parsing of numbers
- Improved the asset finding algorithm to recommend asset with similar name
- Improved error raising for potential heap overflow
- Improved error raising for undeclared ID usage
- Improved AST serialization
- Improved unsolved native symbol error raising with possible correction suggestion
- Improved the
LET
declaration statement to support reusing variables that already have been declared byFOR
loops - Improved
FOR
loop step determination if it's not provided and guessable - Improved location indicating of error report
- Improved compatibility when extension features are not enabled in project properties
- Improved compilation of actor from scene assets
- Improved compilation of
=GET ??? WIDTH(...)
and=GET ??? HEIGHT(...)
to measure assets by their names - Improved parsing of short single-line if statement, i.e.
IF ... THEN n ELSE ...
orIF ... GOTO n ELSE ...
- (Breaking) Removed the
FLIPX_PROP
,FLIPY_PROP
properties of sprite flip, reused theHFLIP_PROP
,VFLIP_PROP
instead - (Breaking) Removed the
VISIBILITY_PROP
property of sprite visibility, reused theHIDDEN_PROP
instead - (Breaking) Removed the
ANIMATION_AUTO_PROP
property of actor - (Breaking) Removed the
DETACH_OBSOLETE_THREAD_PROP
property of actor - (Breaking) Removed the
DEACTIVE_DISTANCE_PROP
property of actor - (Breaking) Removed the
HFLIP_PROP
,VFLIP_PROP
properties of actor - (Breaking) Removed the
BASE_SPRITE_PROP
property of actor - (Breaking) Removed the
base_sprite
parameter ofDEF ACTOR
- (Breaking) Removed the
sprite_base_id
parameter ofLOAD SCENE
- Fixed a stack pollution bug of
FN
macro generation - Fixed some comment parsing issues
- Fixed a jump target resolving bug for threads in non-first code page
- Fixed a non-saved code compilation issue with minor editor
- Fixed a no-parameter macro function evaluation issue
- Fixed a crash bug when compile music
- Fixed a potential operand emitting bug caused by wrong value capture of lambda
- Fixed a compilation with wrong source code revision bug when "undo" to a saved state
- Fixed a music lookup bug when get by name
- Fixed an SFX lookup bug when get by name
- Fixed a scene lookup bug when get by name
- Fixed a parsing bug when some statements end with comment
- Fixed a Unicode detection bug with the
ASC(...)
function - Fixed a compilation bug when bank overflows
- Fixed a data sequence cursor restoring bug
- Fixed a crash bug of the compile-only mode
- Fixed a loading bug with Unicode path of the compile-only mode
- Fixed a project properties injection bug of the compile-only mode
- Fixed a states resetting bug after an AST node overflows at the emitting phase
- Fixed an image drawing bug on the window layer
- Fixed a VM crash bug caused by incorrect memory allocation of music resources
- Fixed a base tile calculation bug when using
IMAGE(...) = WITH MAP ...
with attributes layer - Fixed a stack popping bug with the
PALETTE ...
statement - Fixed a line wrap bug of end word for label widget
- Fixed a minus operator parsing bug after an array reading operation
- Fixed a stack popping issue when
RETURN
out ofFOR
loops - Fixed a compilation bug in for loops with expressions as initial condition, termination condition, or step
- Fixed a parsing bug with
MOVE ACTOR(...) TO ...
/MOVE ACTOR(...) WITH ...
statements - Fixed a projectile loading issue from an actor asset
- Emulator
- Added a graph indicator of CPU load
- Added a specialized shell command to pause emulation
- Added a specialized shell command to stop emulation
- Added a view menu to the emulator screen
- Added an option to toggle onscreen debug layer
- Added a mute button to the emulator
- Added a specialized shell command to set cursor type
- Added a fast forward option
- Added two
KEYM
andKEYC
registers to support keyboard input for extension - Updated the layout of the Select/Start buttons
- Improved input handling for the emulator when there's any opened popup
- Fixed an SRAM persistence bug when close a running project
- Fixed an emulation stopping bug when drag&drop a project file into the window
- Fixed a potential crash bug when memory reading is out of bounds
- Editor
- Added more export options
- Added warning to report duplicate assets
- Added a sticky-line-number feature to the code editor
- Added support for loading an image directly into map and its ref tiles
- Added a pair of undo/redo buttons on the top buttons area
- Added support of trigger editing in the scene editor
- Added a max size property to the font editor
- Added code binding feature to the actor editor
- Added code binding feature to the scene editor for triggers
- Added cursor recording when capture GIF
- Added jump-to-object when double click an actor in the scene editor
- Added jump-to-code when double click a trigger in the scene editor
- Added an object list to the scene editor
- Added preview scale support to the font editor
- Added frame switching to the actor properties editor
- Added tooltips for map attributes and scene properties
- Added context menu items to quickly edit map attributes and scene properties
- Added support for custom project icon
- Added a notepad mode (in which can open and edit a project file directly)
- Added an actor selector popup to the scene editor
- Added source code ejection feature
- Added import/export feature to the code editor
- Added a menu entry heading to the palette editor
- Added sub menu items to the category tab to switch music/SFX mode
- Added an inplace import button for music when there's no asset
- Added tooltips for the music editor
- Added a view layer selecting menu to the scene editor
- Added property layer and other layer preview when edit a map in the scene editor
- Added a layer menu item to toggle grids for the tiles, map, scene and actor editors
- Added a layer menu item to toggle grids for the font editor
- Added a menu item to duplicate a font asset
- Added a name field to tiles asset
- Added a name field to map asset
- Added a name field to font asset
- Added a menu entry to insert snippets to code editor
- Added the first label as a code page's name
- Added names of assets as their pages' names
- Added "Find" and "Goto" menu items to the code editor
- Added an info icon with tooltips for the actor editor
- Added an info icon with tooltips for the code editor
- Added an info icon with tooltips for the font editor
- Added an info icon with tooltips for the tiles editor
- Added an info icon with tooltips for the map editor
- Added an info icon with tooltips for the scene editor
- Added importing from image feature to the map editor
- Added support of importing from clipboard to the tiles/map editor
- Added possible suggestion when an identifier were not found
- Added a palette bits preview feature to the map, scene and actor editors
- Added a trim paremeter to the font asset to indicate whether to trim font height when bake glyphs
- Added a launch option to let the application upgrade project only
- Added a map selection popup for scene ref selection
- Added a menu item to export map to image
- Added tooltips for animations to the actor editor
- Added Ctrl+Mouse Wheel or Cmd+Mouse Wheel to zoom in/out with editors
- Added Ctrl+Lasso or Cmd+Lasso to perform tilewise selection with tiles and actor editors
- Added automatic anchor computing of new actor frames
- Added a "Use gravity" option to the scene creation popup box
- Added "Copy" and "Paste" buttons to manipulate actor and scene definitions
- Added tooltips of the buttons for actor frame creation
- Added warning prompting for overlapped triggers
- Added builtin music library
- Added support for importing music from library
- Added routine overriding of actors for the scene editor
- Added an option to apply an actor's properties to all frames
- Added bitwise operations including SET, AND, OR and XOR
- Added a cartridge config dialog before building to ROM
- Added activity stat.
- Updated the font editor to embed .ttf files into project instead of referencing them
- Updated the font editor to support bitmap-based font
- Updated the music editor to start preview from active order
- Updated the exporter to prompt for browsing after exporting
- Updated the scene editor to support the new
IS_16x16_GRID
property - Updated the map and scene editors to support flip preview
- Updated the default palette for tiles assets
- Updated code error prompting when there were multiple errors
- Updated actor editing in the scene editor for better UX
- Updated the scene editor to allow direct map editing
- Updated the font editor to support split area resizing
- Updated the apply button's color when there's modification
- Updated the editors to require non-empty name for assets
- Updated error handling, now switch to the page where the first error occurs
- (Breaking) Changed the max size limit of map/scene assets from 256 to 255
- Changed grids' visibility to "true" for the graphics editors
- Changed anchor setting to set for all frames by default
- Changed the persistent value of actor to "false" by default
- Optimized glyph generation if ' ' (space) is not represented in a .ttf file
- Optimized actor compacting by executing it in threaded work queue
- Optimized processing of actor definition with the pipeline
- Improved naming for the ROM exporter
- Improved the hierarchy of the top menu
- Improved UX of the scene editor
- Improved importing and exporting with data sequence of the scene editor
- Improved file drag&drop
- Improved code font rendering with cyrillic letters
- Improved the UI/UX of ref
- Improved sizing of tool bar
- Improved support for Windows' dark mode
- Improved code highlight for binary number
- Improved input behaviour of paired characters like
"..."
,(...)
and[...]
- Improved asset naming to forbid blank name
- Improved the right side of the dual code editors opening behaviour to remember its last opened code page
- Improved experience with undo/redo with appliable operations
- Improved instrument length editing of music
- Improved view switching of the piano view when edit music
- Improved tile grid drawing of the tiles editor
- Improved the font editor to preview word wrap
- Improved scroll position handling for the code editor
- Improved continuous input of newline with indent for the code editor
- Improved shortcut handling when an input field is active
- Improved warning tips on the console icon
- Improved warning tips for the pipeline
- Improved key navigation of the projects
- Improved project filtering
- Improved the asset editing to support sorting
- Improved the header text of the map/scene layer selection box
- Improved actor behaviour persistence
- Improved the pipeline to optimize space allocation for assets
- Improved mouse scroll handling when the application window is at background
- Improved the default font baking
- Improved font importing to calculate the best fit font size and offset automatically
- Improved wordwise forward/backward navigation of the code editor
- Improved map importing to remember the "has attributes" property
- Improved palette determination of actor importing from image
- Improved sprite sheet importing for the actor editor by trimming blank frames
- Improved bounds computing when importing sprite sheets to actor
- Imporved sprite sheet importing for the actor editor by supporting automatic computation of frame count
- Improved sprite sheet importing for the actor editor by reserving routines
- Improved actor selection and deletion in the scene editor
- Improved Backspace/Delete handling of the text-based editors
- Improved animation interval editing for the actor editor
- Improved playable state refreshing for the music and SFX editors when a project is running
- Improved preview of music stroke
- Improved music name handling when import music from files
- Improved bitwise editing
- Improved the bitwise mask tool for the map and scene editors
- Moved the project closing menu item to the top menu
- Removed code copying when double-click the head of a code line
- Fixed a crash bug when drag&drop an invalid file
- Fixed an example projects reloading issue
- Fixed a size calculation issue in the font editor
- Fixed a word selection bug of global search when using the dual code view
- Fixed a cross-page lookup bug of global search
- Fixed a crash bug after clearing recent projects
- Fixed a crash bug if export project when it's running
- Fixed a true-color to paletted conversion bug when load external images
- Fixed a palette pre-filling issue for actor assets
- Fixed some layer switching bugs of actor edit
- Fixed a font arbitrary saving issue
- Fixed a code page removing bug when minor code editor is active
- Fixed a project loading issue when it's transmitting
- Fixed a code text sync issue when major editor were not opened yet
- Fixed a crash bug when delete SFX
- Fixed a selection issue in the music editor
- Fixed crash bug of music editor
- Fixed an actor position and sizing issue after moved in the scene editor
- Fixed a crash bug when open property editor after resizing an actor
- Fixed a crash bug when selected the stamp tool for unsupported layers
- Fixed a glitch after painting on tiles and actor assets
- Fixed a saving issue when minor code editor is active
- Fixed a duplicated action issue for SFX shape generation
- Fixed a misdeclared warning of camera-out-of-bounds of the scene editor
- Fixed a preview camera size calculation issue under different scale in the scene editor
- Fixed a crash bug when decode paletted image from bytes
- Fixed a refreshing bug after changing palette of an actor
- Fixed an actor filling bug after resolving map ref of a scene asset which has resized
- Fixed a definition refreshing issue after importing an actor
- Fixed a C code serialization issue of actor frames
- Fixed a crash bug with the eyedropper tool in the map editor
- Document, Examples, Starter Kits and Help
- Added starter kits
- Updated the examples according to the modifications
- Updated the reference manual according to the new features and modifications
- Fixed an invalid explanation for
WAIT n
Project Icon
With the stabilization of the API in this version, the built-in example programs have been further enhanced. Each example focuses on illustrating a specific engine feature, and each has its own exclusive icon.
Starter Kits
To help developers get started quickly, I provide multiple starter kits covering common genres like Platformer, Top-Down, Point and Click, and others:
BASIC Flavour
With GB BASIC, it becomes possible to write code in the distinctive style of BASIC.
GUI
Beyond the common game-specific features showcased in the starter kits, the GUI system has been further enhanced to empower developers in interface design.
Colored
Of course, the engine supports the colored palette feature.
Editors
Finally, the features and user experience of various editors have been stabilized, optimized, and enhanced.
The functionality and API of GB BASIC are now complete and stable. You can use it to create your own GameBoy games! In future versions, GB BASIC will continue to receive improvements and updates. See the following for progress detail.
100% - Prototype progress (DONE):
- A working parser and a compiler
- A runtime that supports a number of programming interfaces
100% - Alpha 1 progress (DONE):
- A working assets processing pipeline flow
- Code, tiles, map, palette editors
- A built-in emulator
- A ROM exporter
- Migrated examples
- A Linux port
100% - Alpha 2 progress (DONE):
- Implement font, actor, scene editors
- Implement asset pipelines to process those real user made assets
100% - Alpha 3 progress (DONE):
- Implement an audio tracker and editor
- Implement an asset pipeline to process those real user made assets
- Fill in the reference manual
100% - Alpha 4 progress (DONE):
- Add
select case/case*/else/end select
statement for multi-conditional selection - Improve the stack operation functions
- Add trigger and projectile modules
- Add a point&click controller
- Improve the actor module
- Improve the API and modules
- Add a global search view to the code editor
- Add support for dual code editors as side by side
- Improve usability of the editors
- A lot of bugfix
- Update the examples
- Update the reference manual
100% - First release v1.1 progress (DONE):
- Improve usability of the editors
- Improve the API and modules
- Optimize performance of the VM
- Add more examples
- Add starter kits
- Update the reference manual to its stable version
- Port the project to other operating systems
5% - v1.2 progress (WIP):
- Add support for custom kernel
- Add support for importing external ROM into library
- Add support for direct image drawing for map assets
- Add a debugger
- Improve the analyser
- Improve usability of the editors
- Improve the API and modules
- Add more customization options
- Add more exporters
More versions (TBD)?
Stick around for future updates about GB BASIC, leave a message below if you got an idea or question. You can also support my development by getting my other projects listed on the main page of this site.
Loading content...