Shameless plug: My Rust 6502 emulator used macros for opcode decoding as well. CPU emulation is an ideal use case for Lispy macros: the addressing mode and opcode combinations have a lot of closely related code that's amenable to macro factoring, and having the interpreter, JIT (if present), and disassembler share code is a nice application as well.