An open API service indexing awesome lists of open source software.

https://github.com/qguv/undercooked

Cooking game for the gameboy dmg, written in assembly. Art by rech!
https://github.com/qguv/undercooked

asm assembly dmg game gameboy gbz80 rgbds

Last synced: 3 months ago
JSON representation

Cooking game for the gameboy dmg, written in assembly. Art by rech!

Awesome Lists containing this project

README

        

# undercooked

[![build status](https://github.com/qguv/undercooked/workflows/build/badge.svg?branch=master)](https://github.com/qguv/undercooked/actions?query=workflow%3Abuild+branch%3Amaster)

A cooking game for the 1989 Nintendo Game Boy (DMG-01). Should run on later models, too. Forever free and open source.

[Play undercooked now in your browser](https://qguv.github.io/undercooked), or [download the ROM](https://qguv.github.io/undercooked) to play in an emulator or burn onto a Gameboy cartridge!

## credits

[Rachel](https://retchdots.carrd.co/) did the amazing pixel art

[Quint](https://github.com/qguv) wrote the code and music

## building

prerequisite packages:

package | purpose
------------- | -------
rgbds | toolchain for cross-compiling for the gameboy architecture
imagemagick | image correction tasks for sprites and tiles
ninja | build system
python3 | build system

1. run `./configure` to prepare build system (you only have to do this once)
2. run `ninja` to compile
3. run gameboy ROM at `obj/main.gb`

## playing

- you can run on real hardware with a flash cart like the GB USB 64M
- you can run on your regular emulator of choice, `zboy` is fine
- you can run on `bgb`, a very good emulator with a debugger, using wine (see [this AUR package](https://aur.archlinux.org/packages/bgb))

## developing

- if you run with `bgb -nobatt -watch obj/main.gb`, bgb will reload the newly built ROM whenever you run `ninja` to compile
- if you add (or remove) a source file and want to link it into the built ROM (or remove the link), edit the `build obj/main.gb` line in `meta/build.ninja.j2`
- run `./configure` again if you ever need to rebuild the build system

## naming conventions

addresses:

```asm
.jump_label ; jump labels within subroutines
;convenience_label ; label for a section of code that's currently entered by fallthrough
.label_in_macro\@ ; jump labels within macros
SomeFunction: ; a non-exported subroutine
SomeFunction__abcdehl: ; a non-exported subroutine reading registers a, b, c, d, e, h, and l as arguments
SomeData ; exported data, probably array/string
_GBHW_ADDR or _GBHWADDR ; gameboy hardware address defined in gbhw.inc
some_value ; ram address or compiler variable
```

values:

```asm
as3_freq ; music frequency (16-bit)
as3 ; music note (8-bit index into NoteFreqs)
SOME_CONSTANT ; equ-defined constant
```

## releasing

1. create and push a new tag `vX.Y.Z`
2. edit and publish the [draft github release](https://github.com/qguv/undercooked/releases) that was just created for you