NESFab 0.8
Overview
This release is a mix of bug fixes, features, and performance enhancements.
Mapper addition: MMC3 and UNROM
Experimentally, MMC3 and UNROM are now supported. These mappers involve a fixed bank, which requires the use of the +static
modifier.
Language addition: read
and write
The keywords read
and write
allow data of arbitrary types to be read/written using pointers.
Language addition: nesfab-dir
The --nesfab-dir
option is used to specify the directory of the NESFab installation. This should be used instead of specifying lib
files using complicated relative paths.
nesfab-dir = ../../
input = lib/nes.fab
input = lib/palette.fab
Likewise, the NESFAB
environment variable can be used to set --nesfab-dir
globally.
Language addition: sloppy
The --sloppy
compiler flag, and +sloppy
/ -sloppy
modifiers can be used to speed up compilation times at the cost of optimization.
Language addition: SRAM
NESFab now supports mappers with 8KiB of additional cartridge RAM (SRAM), which can be enabled using the option --sram
. Variables can be forced to use SRAM using the modifiers +sram
and -sram
.
Language addition: Private identifiers
Global identifiers prefixed with _
are now private to the file they're in.
fn foo() // not private
fn _bar() // private
Breaking language change: PP
and PPP
pointers.
CC
and CCC
pointers now point to ROM data only. To point to either ROM data, or RAM data, new PP
and PPP
types were introduced.
Breaking library change: pbz.fab
and rlz.fab
The decompression functions in these files were changed to return a pointer to the end of their data.
PBZ decompression interface was redesigned to better match the rest of the library. This will break existing code.