You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These were originally shortenings of bank_helpers.h from nesdoug, but as they gained more mapper-related functionality they were increasingly inaccurately named. Backwards incompatible changes like this are better to happen earlier, before too many NES projects depend on the API in the wild.
Variables can now be annotated with __zeropage or __zp to change their address space, e.g., char __zeropage value. These variables are automatically placed in .zp.noinit, .zp.data, or .zp.bss, as appropariate. What separates this from regular explicit section annotations is that pointers can also be annotated as pointing to zero page variables, e.g., char __zeropage *ptr. These pointers only take 8 bits, and arbitrary constant offsets backwards and forwards from them can be referenced using the zp,x or zp,y addressing modes. For example, if x is a zero page pointer stored in X, a read from x[2] can be done using lda 2,x, and a load from x[-2] can be done using lda 254,x. This should be the preferred way of manually placing values in the zero page going forward.
#211 -- NES MMC3 -- Add macros to set four-screen nametables -- @cogwheel
#207 -- Commander X16 -- Add VERA FX register to cx16.h -- @ToboterXP
#212 -- NES -- Improve NMI performnace for multi_vram_buffer operations -- @cogwheel
#218 -- NES -- Add .ram output section to explicitly place input sections in NES RAM -- @cogwheel
Optimizations
#217, #221 -- Split neslib and nesdoug components out so they are only linked in as used.
These libraries were previously fairly monolithic, so using any of them tended to link in a large amount of data and NMI handlers. These have now been broken up, so largely only NMI handlers for the used portion of the library are brought into the program.
Bug fixes
#209 -- Fix MMC3 bug when where C sections would remain uninitialized if placed in PRG-RAM -- @cogwheel