This is a really weird one, because they didn't actually update the
code which updates these flags in asm, these still use ldrb/orr/strb.
But every access to these via c++ is now an atomic ldxrb/stxrb loop.
Maybe they just forgot to update the asm?
NOTE: This work is not yet fully complete; kernel is done, but
it was taking an exceedingly long time to get through libstratosphere.
Thus, I've temporarily added -Wno-error=unused-result for libstratosphere/stratosphere.
All warnings should be fixed to do the same thing Nintendo does as relevant, but this
is taking a phenomenally long time and is not actually the most important work to do,
so it can be put off for some time to prioritize other tasks for 21.0.0 support.
Apparently, at some point they started allowing maxlayers=3, which caused this code to not work.
Looking at latest FS, they always reference DataStorage instead of level+2 for the final level.
This fixes parsing update romfs for newer games, e.g. Super Mario Galaxy 2.
- Invoke Python scripts with `python3` if `python` is not available.
Despite SciresM preferring Python 2, the scripts used in the build all
worked in Python 3 already, so this is just a Makefile change.
- Export `MAKE` to work around a GNU bug.
See the comment for details.
- `rmdir --ignore-fail-on-non-empty` -> `rmdir 2>/dev/null`
macOS `rmdir` doesn't support `--ignore-fail-on-non-empty`.
This is a slight downgrade in functionality, because now we ignore all
errors from `rmdir` rather than just 'Directory not empty'. I could
have avoided this with a more complicated fix, but the benefit strikes
me as not worth the complexity. Let me know if you disagree.
- Append `$(DEVKITPRO)/tools/bin/` to `$PATH` when invoking
`build_romfs`.
This avoids the need to add devkitPro directories to `$PATH` when
building Atmosphere.
If you already have `build_romfs` in your PATH, then that will still
take precedence. (This seemed like the nicer option, though I don't
have strong opinions.)
Disable all warnings seen on devkitA64 GCC 15.1.0:
- Several false-positive `-Wmisleading-indentation` warnings (the
indentation is not actually misleading)
- One `-Wuse-after-free` warning, which looks alarming and represents
very dubious design, but is ultimately harmless (a freed pointer is
passed to a function that doesn't use it).
- Some `-Wunused-function` warnings in `simd/neon.h`
GCC warned that the output string would not be nul-terminated if the
input string was too long. Fix this by subtracting 1 from the size
argument, as is done for other `strncpy` calls in the file. (It would
probably be better to avoid `strncpy` entirely, but this is just a
simple fix.)
haze was including both `<switch.h>` and `vapours/types.hpp` which both
define `R_SUCCEEDED` and `R_FAILED`, producing compiler warnings.
The intent is that `vapours/types.hpp` only gets included when targeting
not-Switch and/or not-EL0. But the check didn't account for
Troposphère. Fix that.
Changes the formatting of the key values at `Code Type 0xC4: Begin Extended Keypress Conditional Block` in cheats.md so that it is perfectly clear that those values are 64-bit values rather than 32-bit or 28-bit like `Code Type 0x8: Begin Keypress Conditional Block`, and also for the fact that the formatting matches the rest of the document and is thus cleaner.