An embedded domain-specific language + compiler written in Haskell for producing code to run on the Nintendo Game Boy.
Also features a library for manipulating constructs such as memory and graphics.
Currently, RGBASM is the only output target, but in the future native machine code generation is planned.
Syntax example (will be updated as more complex constructs are added):
main :: IO () main = rom >>= T.putStrLn where rom = compileROM $ do byte A 0xDE byte B 0xDE if' ((A == (0xDE :: Word8)) && (A == B)) $ do write (Address wram0) 0xDE freeze
app/Main.hs for a full usage example.
Build a ROM (output will be named
stack run > examples/main.asm cd examples && make NAME=main
I mostly use the issue tracker on here as a place to write about planned features and compiler development, don't take the count as an indicator of active bugs, and be sure to filter to show only issues that are bugs if you are curious on the state of the project.
Please see the Contributing page on the Wiki.
Additional information about the project can also be found on the Wiki.