{"id":30432243,"url":"https://github.com/paladin-t/gbb","last_synced_at":"2026-01-26T16:02:25.838Z","repository":{"id":310772046,"uuid":"560756129","full_name":"paladin-t/gbb","owner":"paladin-t","description":"A retro Fantasy Console that generates ROMs compatible with the popular handheld game console.","archived":false,"fork":false,"pushed_at":"2026-01-22T10:59:05.000Z","size":64830,"stargazers_count":66,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-23T01:11:21.876Z","etag":null,"topics":["basic","fantasy-computer","fantasy-console","game-development","game-engine","gameboy","gb-basic","gbdk","gbdk-2020","sdcc"],"latest_commit_sha":null,"homepage":"https://paladin-t.github.io/kits/gbb/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paladin-t.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-02T07:37:03.000Z","updated_at":"2026-01-21T03:59:31.000Z","dependencies_parsed_at":"2025-10-31T11:13:05.610Z","dependency_job_id":null,"html_url":"https://github.com/paladin-t/gbb","commit_stats":null,"previous_names":["paladin-t/gbb"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/paladin-t/gbb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgbb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgbb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgbb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgbb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paladin-t","download_url":"https://codeload.github.com/paladin-t/gbb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paladin-t%2Fgbb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28782090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basic","fantasy-computer","fantasy-console","game-development","game-engine","gameboy","gb-basic","gbdk","gbdk-2020","sdcc"],"created_at":"2025-08-22T20:41:14.112Z","updated_at":"2026-01-26T16:02:25.832Z","avatar_url":"https://github.com/paladin-t.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](docs/logo.png)\r\n\r\n[Home](https://paladin-t.github.io/kits/gbb/) | [Steam](https://store.steampowered.com/app/2308700/) | [Itch.io](https://tonywang.itch.io/gbbasic) | [Documents](https://paladin-t.github.io/kits/gbb/manual.html) | [About](https://paladin-t.github.io/kits/gbb/about.html)\r\n\r\n## Table of Content\r\n\r\n- [About GB BASIC](#about-gb-basic)\r\n  - [About This Repository](#about-this-repository)\r\n  - [Why GB BASIC?](#why-gb-basic)\r\n  - [Programming Paradigms](#programming-paradigms)\r\n  - [Features](#features)\r\n  - [Specs](#specs)\r\n- [Glance](#glance)\r\n- [Installation](#installation)\r\n  - [Using Prebuilt](#using-prebuilt)\r\n  - [Compiling from Source](#compiling-from-source)\r\n    - [Windows](#windows)\r\n    - [Linux](#linux)\r\n    - [MacOS](#macos)\r\n    - [Other platforms](#other-platforms)\r\n- [Learning](#learning)\r\n  - [Documentation](#documentation)\r\n\r\n# About GB BASIC\r\n\r\n**GameBuilder BASIC** (**GB BASIC**) is a retro Fantasy Console that generates ROMs compatible with the popular handheld game console. It has everything ready-to-use for writting code, making assets, compiling projects, running with the built-in emulator, exporting to runnable ROM, etc.\r\n\r\n## About This Repository\r\n\r\nThis repository contains the full source code of GB BASIC, including the [kernel](src/vm) (runtime virtual machine), the [compiler](src/compiler) (for BASIC), and all the [editors](src/app).\r\n\r\n## Why GB BASIC?\r\n\r\nGB BASIC is programmable in a brand new BASIC dialect. The integrated assets editors are intuitive to use. You can generate real ROMs and play on any GB emulator or hardware.\r\n\r\n## Programming Paradigms\r\n\r\n- Imperative paradigm\r\n  - Non-structured programming\r\n  - Concurrent processing approach\r\n- Declarative paradigm\r\n  - Data driven approach\r\n\r\n## Features\r\n\r\n- Programmable in BASIC, an easy to learn and fun to use programming language\r\n- Easy to use API for graphics, input, audio, and other facilities\r\n- Built-in libraries for scene, actor, controllers, GUI\r\n- Built-in libraries for collision detection, persistence, RTC, etc.\r\n- **Extension** feature including mouse \u0026 touch, shell command, debugging, etc.\r\n- Handy tools for editing tiles, map, scene, actor, font, sound, etc.\r\n- Project can be exported into real ROM\r\n- Dozens of example projects\r\n\r\n## Specs\r\n\r\n- **CPU**: 4.19MHz/8.38MHz for classic/colored respectively\r\n- **Threads**: up to 16 concurrent execution contexts\r\n- **Display**: 160x144px\r\n- **Code**: BASIC, supports multiple source pages\r\n- **Gamepad**: 8 buttons (D-Pad + A/B + Select/Start)\r\n- **Mouse and touch**: supported by **extension**\r\n- **Tiles**: up to 256 units per page\r\n- **Map**: up to 255 tiles in one dimension per page; two layers (graphics, attributes)\r\n- **Sprite**: supports 8x8 and 8x16 sprites\r\n- **Scene**: up to 255 tiles in one dimension per page; four layers (map, attributes, properties, actors)\r\n- **Actor**: up to 8x8 tiles per frame; up to 1024 frames per page\r\n- **Font**: supports TrueType (.ttf) and bitmap-based (.png .jpg .bmp .tga); up to 16px; 1bpp or 2bpp\r\n- **Audio**: 4 channels; supports importing from JSON, VGM, WAV, FxHammer\r\n- **Palette**: 2bit (4 colors) per tile, palette of map and actor is configurable for colored device\r\n- **GUI**: supports label, progress bar, menu, etc.\r\n- **Persistence**: supported\r\n- **RTC**: supported\r\n- **Serial port**: supported\r\n\r\n# Glance\r\n\r\n![](docs/screenshots/screenshot1.png)\r\n\r\n![](docs/screenshots/screenshot2.png)\r\n\r\n![](docs/screenshots/screenshot3.png)\r\n\r\n![](docs/screenshots/screenshot4.png)\r\n\r\n![](docs/screenshots/screenshot5.png)\r\n\r\n![](docs/screenshots/screenshot6.png)\r\n\r\n![](docs/screenshots/screenshot7.png)\r\n\r\n![](docs/screenshots/screenshot8.png)\r\n\r\n![](docs/screenshots/screenshot9.png)\r\n\r\n![](docs/screenshots/screenshot10.png)\r\n\r\n![](docs/screenshots/screenshot11.png)\r\n\r\n![](docs/screenshots/screenshot12.png)\r\n\r\n![](docs/screenshots/screenshot13.png)\r\n\r\n![](docs/screenshots/screenshot14.png)\r\n\r\n![](docs/screenshots/screenshot15.png)\r\n\r\n![](docs/screenshots/screenshot16.png)\r\n\r\n![](docs/screenshots/screenshot17.png)\r\n\r\n![](docs/screenshots/screenshot18.png)\r\n\r\n![](docs/screenshots/screenshot19.png)\r\n\r\n![](docs/screenshots/screenshot20.png)\r\n\r\n# Installation\r\n\r\n## Using Prebuilt\r\n\r\n- [Steam](https://store.steampowered.com/app/2308700/)\r\n- [Itch.io](https://tonywang.itch.io/gbbasic)\r\n\r\n## Compiling from Source\r\n\r\nA C++14 capable compiler is required, any compiler came after 2014 should be ok. You need to get this repository before build:\r\n\r\n```sh\r\ngit clone https://github.com/paladin-t/gbb.git\r\ncd gbb\r\n```\r\n\r\n### Windows\r\n\r\nDependencies: Visual Studio (with C++ development tools installed).\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build SDL2\r\n\t1. Compile from \"lib/sdl/VisualC/SDL.sln\"\r\n\t2. Execute `lib/sdl/copy_win.cmd`\r\n2. Build GB BASIC\r\n\t1. Compile from \"gbbasic.sln\"\r\n3. Build GBBVM\r\n\t1. Execute `gbbvm.cmd`\r\n\r\n\u003c/details\u003e\r\n\r\n### Linux\r\n\r\nDependencies: CMake, GCC.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build SDL2\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd lib/sdl\r\n\t\t./configure\r\n\t\tmake\r\n\t\tsudo make install\r\n\t\tcd ../..\r\n\t\t```\r\n\t2. Execute `lib/sdl/copy_linux.sh`\r\n2. Build GB BASIC\r\n\t1. Execute:\r\n\t\t```sh\r\n\t\tcd gbbasic.linux\r\n\t\tcmake . \u0026\u0026 make\r\n\t\tcd ..\r\n\t\t```\r\n3. Build GBBVM\r\n\t1. Execute `gbbvm.sh`\r\n\r\nNote: If you want to link to the system libraries instead of the local libraries in this repo, refer to the instructions below.\r\n\r\n```sh\r\ncd gbbasic.linux\r\ncmake . -DGBBASIC_LIB_SDL_USE_LOCAL=FALSE \u0026\u0026 make\r\ncd ..\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n### MacOS\r\n\r\nDependencies: Xcode.\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eSteps\u003c/summary\u003e\r\n\r\n1. Build SDL2\r\n\t1. Compile dylib from \"lib/sdl/Xcode/SDL/SDL.xcodeproj\"\r\n\t2. Reveal \"libSDL2.dylib\" in Finder\r\n\t3. Copy \"libSDL2.dylib\" to \"lib/sdl/lib/mac/\"\r\n2. Build GB BASIC\r\n\t1. Compile from \"gbbasic.xcodeproj\"\r\n3. Build GBBVM\r\n\t1. Execute `gbbvm.sh`\r\n\r\n\u003c/details\u003e\r\n\r\n### Other platforms\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eDetails\u003c/summary\u003e\r\n\r\nYou can also setup your own build pipeline for other platforms. The \"lib\" and \"src\" directories are almost what you need.\r\n\r\nThe \"platform_*\" files contain most platform dependent code, you'll probably make a specific port.\r\n\r\n\u003c/details\u003e\r\n\r\n# Learning\r\n\r\n## Documentation\r\n\r\n- [Tutorials](https://paladin-t.github.io/kits/gbb/learn/index.html)\r\n- [Manual](https://paladin-t.github.io/kits/gbb/manual.html)\r\n- [Extensions](https://paladin-t.github.io/kits/gbb/extensions.html)\r\n- [Launching](https://paladin-t.github.io/kits/gbb/launching.html)\r\n- [Troubleshooting](https://paladin-t.github.io/kits/gbb/troubleshooting.html)\r\n- [Changelog](https://paladin-t.github.io/kits/gbb/changelog.html)\r\n- [About](https://paladin-t.github.io/kits/gbb/about.html)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fgbb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaladin-t%2Fgbb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaladin-t%2Fgbb/lists"}