Skip to content

SDK v5.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 17 Sep 19:29
· 274 commits to main since this release

Breaking changes

  • The NES MMC1 mapper target no longer needs to have its PRG-ROM size specified by including a custom linker script. Instead, the default linker script is now directly responsive to the __prg_rom_size symbol, like the other mappers, and the previous linker script fragments to set this have been removed from the SDK.
  • Removed CHR-ROM shadow accessors from the NES Action53 mappers. These are difficult to keep up-to-date in the face of NMI, and they were argued to have limited utility.

New targets

  • #191 -- nes-unrom-512 -- NES UNROM-512 mapper -- @asiekierka
  • #199 -- nes-gtrom -- NES GTROM mapper -- @asiekierka
    • Notably, this is the first time we've supported a mapper with full 32KiB banking. To allow for this, the C sections are automatically placed in a simulated fixed region; this is duplicated in every bank at the same fixed offset at the start of each bank. The fixed region can grow or shrink dynamically, and code/rodata can still be explicitly placed in a named bank to remove it from the fixed region.

New features

  • #197 -- Array of Structs library
    • This provides a C++ library that automatically lays out an array of multi-byte types in a byte-wise fashion. That is, this turns an array of structs into a structure of arrays of bytes, one for each byte of the wrapped type. This allows accessing the contents of the array elements using the absolute indexed addressing mode, rather than doing expensive pointer arithmetic. See examples/struct-of-arrays.cc and mos-platform/common/include/soa.h for details.
  • #201 -- C++ user-defined literal support for translating to Atari 8-bit and Commodore X16 character sets -- @asiekierka
  • #203 -- NES -- Added ines.h header containing C macros to easily set linker script configuration -- @asiekierka

Bug fixes