Skip to content

NESFab 0.8

Compare
Choose a tag to compare
@pubby pubby released this 27 Jun 18:30
· 193 commits to master since this release

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.