SDK v6.1.0
New features
- llvm-mos/llvm-mos#357 -- SCP700 (SNES sound coprocessor) support -- @asiekierka
Bug fixes
-
llvm-mos/llvm-mos#369 -- Fix various issues with zero page pointers (e.g., llvm-mos/llvm-mos#366, llvm-mos/llvm-mos#363) -- @asiekierka
-
Use
__builtin_bit_cast
to allowconstexpr
initialization of struct of array arrays.- This was thought to work, but the previous implementation invoked
reinterpret_cast
, which isn't legal in constexpr. The new version works so long as the types don't contain pointers. For those that do, there's intrinsically no way to statically initialize them in C++; this has to instead be done in an assembly file using#<ptr
and#>ptr
.
- This was thought to work, but the previous implementation invoked
Optimization
-
Loop induction variable canonicalization now prefers narrower types instead of wider ones. This can replace 16-bit loop counters with zero-extensions of 8-bit ones. Doesn't come up tremendously often, but when it does, the previous behavior absolutely killed performance.
-
#222 - Make
neslib
/nesdoug
buffers weak so they can be moved by the user; move PAL_BUF out of hardware stack by default -- @cogwheel -
Fix C++-invalid cast in
nes.h