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!
- Host: GitHub
- URL: https://github.com/qguv/undercooked
- Owner: qguv
- License: gpl-3.0
- Created: 2019-04-14T21:36:47.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-21T17:50:46.000Z (over 2 years ago)
- Last Synced: 2023-08-02T18:56:19.541Z (almost 2 years ago)
- Topics: asm, assembly, dmg, game, gameboy, gbz80, rgbds
- Language: Assembly
- Homepage: https://qguv.github.io/undercooked
- Size: 6.51 MB
- Stars: 12
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# undercooked
[](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 system1. 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