Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ix/lazyboy
An EDSL implemented in Haskell for programming the Nintendo Game Boy.
https://github.com/ix/lazyboy
dsl edsl game-boy gameboy games gaming haskell homebrew videogames
Last synced: 3 months ago
JSON representation
An EDSL implemented in Haskell for programming the Nintendo Game Boy.
- Host: GitHub
- URL: https://github.com/ix/lazyboy
- Owner: ix
- License: bsd-3-clause
- Created: 2018-10-01T14:40:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-10-06T16:14:58.000Z (over 1 year ago)
- Last Synced: 2024-10-25T04:22:20.726Z (3 months ago)
- Topics: dsl, edsl, game-boy, gameboy, games, gaming, haskell, homebrew, videogames
- Language: Haskell
- Homepage:
- Size: 150 KB
- Stars: 49
- Watchers: 5
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
![LAZYBOY](meta/logo.png)
[![Build Status](https://travis-ci.org/ix/lazyboy.svg?branch=master)](https://travis-ci.org/ix/lazyboy)
[![Coverage Status](https://coveralls.io/repos/github/ix/lazyboy/badge.svg?branch=master)](https://coveralls.io/github/ix/lazyboy?branch=master)
[![Hackage](https://img.shields.io/hackage/v/lazyboy.svg?color=mediumpurple)](https://hackage.haskell.org/package/lazyboy)
---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):
```haskell
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](https://github.com/ix/lazyboy/wiki/Contributing) page on the Wiki.Additional information about the project can also be found on the Wiki.
# Special thanks
Thanks to [Francesco149](https://github.com/Francesco149) and [Bonzi](https://github.com/bnzis) for kindly devoting their time and knowledge to the project. The graphics functionality in particular would not be where it is without their assistance.