I removed the C(selector) function that the C code exposes to Lua.
Instead there is now a Map object that has a method Map.cell(r,c) that returns a CellObj instance.
The CellObj is also no longer a collection of cells, but rather encapsulates a single cell.
I've added methods getID() and getClass() to the CellObj to obtain the id and class.
The idea is that the C(selector) now be implemented completely in Lua.
The editor now indicates cells by row,col instead of x,y
There's a new gdb_has() API for the game database.
I now expose the Game Database to Musl scripts
I now expose the Game Database to the Lua scripts.
The Game.createParticle() works a bit differently now.
Added a Sound object to Lua, which has functions like play(), pause(), halt() and so on.
I changed the SndObj's API a bit as well - there's no SndObj:play() method anymore.
There is now a Sound.volume() API function in Lua
The update of the luastate no longer renders the map layers.
Rather, the Lua script now has a Map.render() function so that the script can render the map layers at its convenience.
The idea is that the rendering of the map and the sprites can now all be controlled from inside the Lua scripts.

The CellObj now exposes an isBarrier() method to the Lua script to be used in collision detection.

There are new BmpObj:width() and BmpObj:height()functions in the API.

Also, functions rendered with onUpdate() are now executed in the order in which they were registered.