lazyboy: An EDSL for programming the Game Boy.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

An EDSL for programming the Nintendo Game Boy. https://github.com/ix/lazyboy#readme


[Skip to ReadMe]

Properties

Versions0.2.0.1, 0.2.1.1, 0.2.2.0, 0.2.2.0
Change logChangeLog.md
Dependenciesaeson (>=1.4.2.0 && <1.5), base (>=4.7 && <5), hspec (>=2.6.1 && <2.7), microstache (>=1.0.1.1 && <1.1), text (>=1.2.3.1 && <1.3), transformers (>=0.5.6.2 && <0.6) [details]
LicenseBSD-3-Clause
Copyright2019 Rose
AuthorRose
Maintainerrose@lain.org.uk
CategoryDSL, Compiler
Home pagehttps://github.com/ix/lazyboy#readme
Bug trackerhttps://github.com/ix/lazyboy/issues
Source repositoryhead: git clone https://github.com/ix/lazyboy
UploadedTue Jun 4 01:40:34 UTC 2019 by rose

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for lazyboy-0.2.2.0

[back to package description]

LAZYBOY Build Status Coverage Status

Hackage

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

See app/Main.hs for a full usage example.

Build a ROM (output will be named main.gb):

stack run > examples/main.asm
cd examples && make NAME=main

About issues

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.

Contributing

Please see the Contributing page on the Wiki.

Additional information about the project can also be found on the Wiki.

Special thanks

Thanks to Francesco149 and Bonzi for kindly devoting their time and knowledge to the project. The graphics functionality in particular would not be where it is without their assistance.