UTTORI ASM ยท IN DEVELOPMENT
SNES compatibility
Use snes compatibility in SNES projects, with syntax and behavior notes.
On this page
The SNES plugin targets practical Asar and ca65 compatibility, including 65816, SPC700/inline SPC, Super FX, mapper and checksum behavior, freespace/RATS allocation, and selected compatibility no-ops. Not every Asar feature is implemented. Check the distinctions below before moving an existing project.
SNES behavior
Implemented families
- 65C816 instructions, size suffixes, M/X immediate tracking, branches, and major addressing modes.
- SPC700 instructions, explicit NSPC blocks, raw SPC output, and inline SPC compatibility.
- Super FX instructions and explicit hardware-versus-Asar short-address policy.
- LoROM, HiROM, ExLoROM, ExHiROM, Super FX ROM, SA-1, full SA-1, and flat
noromtranslation. org,base, address stacks, mapper-aware PC stepping, and bank-cross checks.- Labels, local/relative/macro labels, namespaces, structs, defines, macros, functions, conditionals, and loops.
- Data directives, strings, character tables, include guards, binary ranges, fill, pad, selected read helpers, and diagnostics.
- Deterministic RATS allocation and
protrecords. - Mapper-aware checksum finalization and non-power-of-two Asar checksum behavior.
Accepted Compatibility no-ops
| Keyword | What acceptance means today |
|---|---|
fastrom |
Does not alter mapping, speed, or header bytes |
dpbase |
Does not change direct-page calculation |
warnings |
Does not push, pull, enable, or disable warning state |
print |
Produces no output |
warn |
Produces no warning |
autoclean, autoclear |
Do not locate or erase old freespace |
includefrom |
Does not validate the include parent |
asar |
Does not enforce a version |
reset |
Does not reset assembler or mapper state |
{, } |
Visual grouping only |
Unknown commands report an error. An accepted no-op does not reproduce the corresponding Asar behavior.
Known Unsupported or Partial Families
Major unsupported or partial areas include:
- full
autocleanlifecycle, repeated cleanup, freespace shrinking, alignment, and large multi-block allocation. segment,freespace_settings, SA-1/Super FX specialized freespace, andprotedge cases.- custom
spcblockmacros, SPC opcode synonyms, anddbdirectly in raw/alternate SPC compatibility modes not covered by the supported aliases. - pseudo-opcodes and optimizer/warning behavior beyond
optimize dp. - standard include/define discovery (
std, built-in defines) and table-file variants beyond the documentedtableloader. - complete Asar warning controls, warning immediates, warning catalogs, and compatibility error wording.
xkasemulation, protection directives, and several malformed variadic/macro edge cases.