├── .gitignore ├── README.md └── Syntaxes ├── snes.JSON-tmLanguage └── snes.tmLanguage /.gitignore: -------------------------------------------------------------------------------- 1 | .*~ 2 | *~ 3 | *.swp 4 | *.cache 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## SNES assembly for sublime text ## 2 | 3 | Syntax highlighting for 65816, SuperFX and SPC700 assembly. 4 | 5 | by ARM9 2014 6 | 7 | -------------------------------------------------------------------------------- /Syntaxes/snes.JSON-tmLanguage: -------------------------------------------------------------------------------- 1 | // [PackageDev] target_format: plist, ext: tmLanguage 2 | { "name": "SNES Assembly", 3 | "scopeName": "source.snes", 4 | "fileTypes": ["asm", "s"], 5 | 6 | "patterns": [ 7 | { "name": "comment.line.snes", 8 | "match": ";.*$" 9 | }, 10 | { "name": "storage.type", 11 | "match": "\\.[a-zA-Z_]+\\b", 12 | "comment": "directives" 13 | }, 14 | { "name": "support.function.mnemonic.snes", //"keyword.control.snes", 15 | "match": "\\b(adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|bra|brk|brl|bvc|bvs|clc|cld|cli|clv|cmp|cop|cpx|cpy|dea|dec|dex|dey|eor|ina|inc|inx|iny|jml|jmp|jsl|jsr|lda|ldx|ldy|lsr|mvn|mvp|nop|ora|pea|pei|per|pha|phb|phd|phk|php|phx|phy|pla|plb|pld|plp|plx|ply|rep|rol|ror|rti|rtl|rts|sbc|sec|sed|sei|sep|sta|stp|stx|sty|stz|tax|tay|tcd|tcs|tdc|trb|tsb|tsc|tsx|txa|txs|txy|tya|tyx|wai|wdm|xba|xce|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRA|BRK|BRL|BVC|BVS|CLC|CLD|CLI|CLV|CMP|COP|CPX|CPY|DEA|DEC|DEX|DEY|EOR|INA|INC|INX|INY|JML|JMP|JSL|JSR|LDA|LDX|LDY|LSR|MVN|MVP|NOP|ORA|PEA|PEI|PER|PHA|PHB|PHD|PHK|PHP|PHX|PHY|PLA|PLB|PLD|PLP|PLX|PLY|REP|ROL|ROR|RTI|RTL|RTS|SBC|SEC|SED|SEI|SEP|STA|STP|STX|STY|STZ|TAX|TAY|TCD|TCS|TDC|TRB|TSB|TSC|TSX|TXA|TXS|TXY|TYA|TYX|WAI|WDM|XBA|XCE)\\b", 16 | "comment": "65816 opcodes" 17 | }, 18 | { "name": "support.function.mnemonic.gsu", 19 | "match": "\\b(add|adc|alt1|alt2|alt3|and|asr|bcc|bcs|beq|bge|bic|blt|bmi|bne|bpl|bra|bvc|bvs|cache|cmode|cmp|color|dec|div2|fmult|from|getb|getbh|getbl|getbs|getc|hib|ibt|inc|iwt|jal|jmp|ldb|ldw|lea|link|ljmp|lm|lms|lmult|lob|loop|lsr|merge|move|moveb|moves|movew|mult|nop|not|or|plot|pop|push|ramb|ret|rol|romb|ror|rpix|sbc|sbk|sex|sm|sms|stb|stop|stw|sub|swap|to|umult|with|xor|ADD|ADC|ALT1|ALT2|ALT3|AND|ASR|BCC|BCS|BEQ|BGE|BIC|BLT|BMI|BNE|BPL|BRA|BVC|BVS|CACHE|CMODE|CMP|COLOR|DEC|DIV2|FMULT|FROM|GETB|GETBH|GETBL|GETBS|GETC|HIB|IBT|INC|IWT|JAL|JMP|LDB|LDW|LEA|LINK|LJMP|LM|LMS|LMULT|LOB|LOOP|LSR|MERGE|MOVE|MOVEB|MOVES|MOVEW|MULT|NOP|NOT|OR|PLOT|POP|PUSH|RAMB|RET|ROL|ROMB|ROR|RPIX|SBC|SBK|SEX|SM|SMS|STB|STOP|STW|SUB|SWAP|TO|UMULT|WITH|XOR)\\b", 20 | "comment": "superfx opcodes" 21 | }, 22 | { "name": "support.function.mnemonic.spc700", 23 | "match": "\\b(adc|addw|and|and1|asl|bbc|bbs|bcc|bcs|beq|bmi|bne|bpl|bvc|bvs|bra|brk|call|cbne|clr1|clrc|clrp|clrv|cmp|cmpw|daa|das|dbnz|dec|decw|di|div|ei|eor|eor1|inc|incw|jmp|lsr|mov|mov1|movw|mul|nop|not1|notc|or|or1|pcall|pop|push|ret|reti|rol|ror|sbc|set1|setc|setp|sleep|stop|subw|tcall|tclr1|tset1|xcn|ADC|ADDW|AND|AND1|ASL|BBC|BBS|BCC|BCS|BEQ|BMI|BNE|BPL|BVC|BVS|BRA|BRK|CALL|CBNE|CLR1|CLRC|CLRP|CLRV|CMP|CMPW|DAA|DAS|DBNZ|DEC|DECW|DI|DIV|EI|EOR|EOR1|INC|INCW|JMP|LSR|MOV|MOV1|MOVW|MUL|NOP|NOT1|NOTC|OR|OR1|PCALL|POP|PUSH|RET|RETI|ROL|ROR|SBC|SET1|SETC|SETP|SLEEP|STOP|SUBW|TCALL|TCLR1|TSET1|XCN)\\b", 24 | "comment": "spc700 opcodes" 25 | }, 26 | { "name": "entity.name.function", 27 | "match": "\\b(x|y|a|s|r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|sp|lr|pc|ya|psw|X|Y|A|S|R0|R1|R2|R3|R4|R5|R6|R7|R8|R9|R10|R11|R12|R13|R14|R15|SP|LR|PC|YA|PSW)\\b" 28 | }, 29 | { "name": "constant.other.snes", 30 | "match": "#?[<>^|!]?([$][0-9a-fA-F]+|[0-9]+|%[01]+|[0-9][0-9a-fA-F]*h)\\b", 31 | "comment": "numbers with or without # prefix and ca65/wdc816 size prefix: 1239 $FEEDBACC 0FEEDBACCh %1101" 32 | }, 33 | { "name": "string.quoted.other", 34 | "match": "\\b(@|[~_]{0,2})[a-zA-Z_][0-9a-zA-Z_]*:?", 35 | "comment": "directives" 36 | }, 37 | { "name": "string.quoted.double.snes", 38 | "begin": "\"", 39 | "end": "\"|$" 40 | }, 41 | { "name": "string.quoted.single.snes", 42 | "begin": "'", 43 | "end": "'|$" 44 | } 45 | ], 46 | "uuid": "f8250fd4-9960-445a-aa91-eb4c87050eee" 47 | } 48 | -------------------------------------------------------------------------------- /Syntaxes/snes.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fileTypes 6 | 7 | asm 8 | s 9 | 10 | name 11 | SNES Assembly 12 | patterns 13 | 14 | 15 | match 16 | ;.*$ 17 | name 18 | comment.line.snes 19 | 20 | 21 | comment 22 | directives 23 | match 24 | \.[a-zA-Z_]+\b 25 | name 26 | storage.type 27 | 28 | 29 | comment 30 | 65816 opcodes 31 | match 32 | \b(adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|bra|brk|brl|bvc|bvs|clc|cld|cli|clv|cmp|cop|cpx|cpy|dea|dec|dex|dey|eor|ina|inc|inx|iny|jml|jmp|jsl|jsr|lda|ldx|ldy|lsr|mvn|mvp|nop|ora|pea|pei|per|pha|phb|phd|phk|php|phx|phy|pla|plb|pld|plp|plx|ply|rep|rol|ror|rti|rtl|rts|sbc|sec|sed|sei|sep|sta|stp|stx|sty|stz|tax|tay|tcd|tcs|tdc|trb|tsb|tsc|tsx|txa|txs|txy|tya|tyx|wai|wdm|xba|xce|ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRA|BRK|BRL|BVC|BVS|CLC|CLD|CLI|CLV|CMP|COP|CPX|CPY|DEA|DEC|DEX|DEY|EOR|INA|INC|INX|INY|JML|JMP|JSL|JSR|LDA|LDX|LDY|LSR|MVN|MVP|NOP|ORA|PEA|PEI|PER|PHA|PHB|PHD|PHK|PHP|PHX|PHY|PLA|PLB|PLD|PLP|PLX|PLY|REP|ROL|ROR|RTI|RTL|RTS|SBC|SEC|SED|SEI|SEP|STA|STP|STX|STY|STZ|TAX|TAY|TCD|TCS|TDC|TRB|TSB|TSC|TSX|TXA|TXS|TXY|TYA|TYX|WAI|WDM|XBA|XCE)\b 33 | name 34 | support.function.mnemonic.snes 35 | 36 | 37 | comment 38 | superfx opcodes 39 | match 40 | \b(add|adc|alt1|alt2|alt3|and|asr|bcc|bcs|beq|bge|bic|blt|bmi|bne|bpl|bra|bvc|bvs|cache|cmode|cmp|color|dec|div2|fmult|from|getb|getbh|getbl|getbs|getc|hib|ibt|inc|iwt|jal|jmp|ldb|ldw|lea|link|ljmp|lm|lms|lmult|lob|loop|lsr|merge|move|moveb|moves|movew|mult|nop|not|or|plot|pop|push|ramb|ret|rol|romb|ror|rpix|sbc|sbk|sex|sm|sms|stb|stop|stw|sub|swap|to|umult|with|xor|ADD|ADC|ALT1|ALT2|ALT3|AND|ASR|BCC|BCS|BEQ|BGE|BIC|BLT|BMI|BNE|BPL|BRA|BVC|BVS|CACHE|CMODE|CMP|COLOR|DEC|DIV2|FMULT|FROM|GETB|GETBH|GETBL|GETBS|GETC|HIB|IBT|INC|IWT|JAL|JMP|LDB|LDW|LEA|LINK|LJMP|LM|LMS|LMULT|LOB|LOOP|LSR|MERGE|MOVE|MOVEB|MOVES|MOVEW|MULT|NOP|NOT|OR|PLOT|POP|PUSH|RAMB|RET|ROL|ROMB|ROR|RPIX|SBC|SBK|SEX|SM|SMS|STB|STOP|STW|SUB|SWAP|TO|UMULT|WITH|XOR)\b 41 | name 42 | support.function.mnemonic.gsu 43 | 44 | 45 | comment 46 | spc700 opcodes 47 | match 48 | \b(adc|addw|and|and1|asl|bbc|bbs|bcc|bcs|beq|bmi|bne|bpl|bvc|bvs|bra|brk|call|cbne|clr1|clrc|clrp|clrv|cmp|cmpw|daa|das|dbnz|dec|decw|di|div|ei|eor|eor1|inc|incw|jmp|lsr|mov|mov1|movw|mul|nop|not1|notc|or|or1|pcall|pop|push|ret|reti|rol|ror|sbc|set1|setc|setp|sleep|stop|subw|tcall|tclr1|tset1|xcn|ADC|ADDW|AND|AND1|ASL|BBC|BBS|BCC|BCS|BEQ|BMI|BNE|BPL|BVC|BVS|BRA|BRK|CALL|CBNE|CLR1|CLRC|CLRP|CLRV|CMP|CMPW|DAA|DAS|DBNZ|DEC|DECW|DI|DIV|EI|EOR|EOR1|INC|INCW|JMP|LSR|MOV|MOV1|MOVW|MUL|NOP|NOT1|NOTC|OR|OR1|PCALL|POP|PUSH|RET|RETI|ROL|ROR|SBC|SET1|SETC|SETP|SLEEP|STOP|SUBW|TCALL|TCLR1|TSET1|XCN)\b 49 | name 50 | support.function.mnemonic.spc700 51 | 52 | 53 | match 54 | \b(x|y|a|s|r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|sp|lr|pc|ya|psw|X|Y|A|S|R0|R1|R2|R3|R4|R5|R6|R7|R8|R9|R10|R11|R12|R13|R14|R15|SP|LR|PC|YA|PSW)\b 55 | name 56 | entity.name.function 57 | 58 | 59 | comment 60 | numbers with or without # prefix and ca65/wdc816 size prefix: 1239 $FEEDBACC 0FEEDBACCh %1101 61 | match 62 | #?[<>^|!]?([$][0-9a-fA-F]+|[0-9]+|%[01]+|[0-9][0-9a-fA-F]*h)\b 63 | name 64 | constant.other.snes 65 | 66 | 67 | comment 68 | directives 69 | match 70 | \b(@|[~_]{0,2})[a-zA-Z_][0-9a-zA-Z_]*:? 71 | name 72 | string.quoted.other 73 | 74 | 75 | begin 76 | " 77 | end 78 | "|$ 79 | name 80 | string.quoted.double.snes 81 | 82 | 83 | begin 84 | ' 85 | end 86 | '|$ 87 | name 88 | string.quoted.single.snes 89 | 90 | 91 | scopeName 92 | source.snes 93 | uuid 94 | f8250fd4-9960-445a-aa91-eb4c87050eee 95 | 96 | 97 | --------------------------------------------------------------------------------