NESFab 1.0
Overview
This is a milestone. If you're an optimist, you can think of NESFab as going from beta to gold. If you're a pessimist, you can think of it as going from alpha to beta. Either way, 1.0 is a major version bump.
There's a decent amount of bugfixes in this release, along with a few features.
Breaking change: Library reorganization
I've moved various files in thelib/
folder to sub-folders such as lib/math/
and lib/audio/
. Also, I've renamed a few files and functions (such as base10
-> base_10
to better match NESFab's naming scheme. My apologies for this, but the 1.0 release seemed like a good time to make these changes.
file
Expressions
Previously, the file
keyword could only be used in byte blocks. Now, it can be used as an expression to produce values of type U{}
.
Function pointers
I've added experimental support for function pointers, but this support is somewhat gimped. Function pointers require functions to be partitioned into sets, and function pointers can only be called from a single thread of execution. Also, for the time being, asm
support doesn't exist for function pointers. But there is some support in 1.0
.
To see this feature being used, check out examples/fn_ptr/
.
--multicart
compiler option
The --multicart action53
compiler flag can be used to ensure compatibility with the Action 53 multicart mapper. This is intended to be used for the yearly NESDev competition.
JSON mapfab imports
The mapfab
keyword can now import .JSON files exported by MapFab.
32x32 Meta-meta-tiles
The mapfab
keyword now supports the mmt_32
target, which generates 32x32 metametatiles.
To see this feature being used, check out examples/meta_meta_tiles/
.
More examples
examples/platformer/
shows the basics of a platforming gameexamples/scrolling_8_way/
shows how to achieve 8-way scrollingexamples/rope/
shows some interesting rope physicsexamples/billiards/
shows bouncing ball physics