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

https://github.com/xythobuz/duality

GameBoy (Color) port of the GTA San Andreas arcade game Duality
https://github.com/xythobuz/duality

arcade gameboy gameboy-color gameboy-color-game gbdk gtasa

Last synced: 2 months ago
JSON representation

GameBoy (Color) port of the GTA San Andreas arcade game Duality

Awesome Lists containing this project

README

          

# Duality

![ROM](https://github.com/xythobuz/Duality/actions/workflows/build.yml/badge.svg)
![Web](https://github.com/xythobuz/Duality/actions/workflows/docs.yml/badge.svg)

My first homebrew GameBoy game.
A port of the GTA San Andreas Arcade Game Duality.

[Try it out online!](https://xythobuz.github.io/Duality)

[![Cartridge](https://xythobuz.github.io/Duality/cartridge.png)](https://xythobuz.github.io/Duality)

## Getting Started

You need the [GBDK-2020](https://gbdk.org/docs/api/docs_getting_started.html) to build the ROM and [Gearboy](https://github.com/drhelius/Gearboy), [SameBoy](https://sameboy.github.io/), [Emulicious](https://emulicious.net/) or [BGB](https://bgb.bircd.org/) to emulate it comfortably.
Then just build a debug version and run it in the emulator, with debug symbols already loaded.

make run
make sgb_run
make bgb_run

Use SameBoy to test out the SGB border feature.
Also see below for symbolic debugging with Emulicious.

For the release build, simply add `GBDK_RELEASE=1` to your make invocation after running `make clean`.

make clean
make GBDK_RELEASE=1 run

You can also directly write to a flashcart using `flashgbx` with `make flash`.

## IDE Integration

I'm using [Kate](https://kate-editor.org/) which supports VSCode-style LSP and debugging with integrated plugins.

To generate a `compile_commands.json` for LSPs using `bear` run:

make compile_commands.json

You can also debug using [Emulicious](https://emulicious.net/).
Add something like the following to your Kate Debugger user configuration:

{
"dap": {
"emulicious": {
"url": "https://emulicious.net/",
"run": {
"command": ["emulicious", "-remotedebug", "${#run.port}"],
"port": 0,
"redirectStderr": true,
"redirectStdout": true,
"supportsSourceRequest": true
},
"configurations": {
"launch (debug)": {
"request": {
"command": "launch",
"mode": "debug",
"program": "${file}",
"cwd": "${workdir}",
"stopOnEntry": true
}
}
}
}
}
}

Unfortunately you will have to edit the hard-coded paths in `.vscode/launch.json`, I haven't been able to use variables there for some reason.

For hard debugging cases the reverse stepping feature of the debugger in [GameRoy](https://github.com/Rodrigodd/gameroy) may come in handy.

## License

The source code of this Duality GameBoy clone is licensed as GPLv3.
A copy of the license can be found in `COPYING`.

It uses the [GBDK-2020](https://gbdk.org) libraries and is based on their example code.
The files `sgb_border.c` and `sgb_border.h` are copied directly from their `sgb_border` example.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

See .

The `util/cvtsample.py` script is based on a [GBDK example](https://github.com/gbdk-2020/gbdk-2020/blob/develop/gbdk-lib/examples/gb/wav_sample/utils/cvtsample.py).

The [8x8 font](https://github.com/DavidDiPaola/font_vincent) is public domain.

The included cartridge label graphic in `artwork/cart_label.xcf` is based on the ['Cartridge-Label-Templates' by Dinierto](https://github.com/Dinierto/Cartridge-Label-Templates) licensed as CC0.

The included cartridge graphic in `artwork/cartridge.xcf` is based on the ['Front-End-Assets' by Duimon](https://github.com/Duimon/Front-End-Assets).