GameBoy (Color) port of the GTA San Andreas arcade game Duality
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
Thomas B 082923aca8 more multiplayer preparations, packet tx rx 2 månader sedan
.github/workflows dont add debug build to actual releases 3 månader sedan
.vscode add emulicious and debugging support for kate 3 månader sedan
artwork add some sprites to cart artwork 2 månader sedan
data add a simple 8x8 font (for gbc mode only) 2 månader sedan
docs add some sprites to cart artwork 2 månader sedan
src more multiplayer preparations, packet tx rx 2 månader sedan
util add wav file conversion and playback 3 månader sedan
.gitignore start adding gb printer support 2 månader sedan
COPYING add licensing stuff 3 månader sedan
Makefile more multiplayer preparations, packet tx rx 2 månader sedan
README.md add a simple 8x8 font (for gbc mode only) 2 månader sedan

README.md

Duality

ROM Web

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

Try it out online!

Cartridge

Getting Started

You need the GBDK-2020 to build the ROM and Gearboy, SameBoy, Emulicious or BGB 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 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. 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.

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 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 <http://www.gnu.org/licenses/>.

The util/cvtsample.py script is based on a GBDK example.

The 8x8 font is public domain.

The included cartridge label graphic in artwork/cart_label.xcf is based on the ‘Cartridge-Label-Templates’ by Dinierto licensed as CC0.

The included cartridge graphic in artwork/cartridge.xcf is based on the ‘Front-End-Assets’ by Duimon.