I've been putting efforts on GB BASIC for months. The previous prototype release was nothing more than a command line tool that proved the compiler worked. During the last few weeks, I've made good progress pushing this project closer to its goal: being a Fantasy Console that generates GameBoy compatible ROM. I'll show off something new since last release.
Quite a few new features were added to this version, that should make up an alpha release. The latest version is available on itch.io.
The alpha version supports both Windows and Linux for the moment.
In this alpha version, I have finished code, tiles, map and palette (was not shown in the picture) editors. The other audio, font, actor, scene editors are coming soon.
I borrowed a lot of concepts and design language from two of my other released projects: BASIC8 (a Fantasy Console) and Bitty Engine (a Fantasy Console styled Game Engine). You'll get familiar with GB BASIC soon if you have used these two pieces of software or any other fantasy consoles.
The idea behind GB BASIC is to bring the fun of programming for an old system back, with well designed and polished UX.
Integrated Environment
Compared to the prototype, the alpha version took a big step forward with a GUI-based environment to offer an integrated flow. You'll be able to get everything done without pushing and popping GB BASIC.
The first screen shows you your recent projects once you launched it.
As a feature preview, the reference manual will be also integrated.
Most of the editors support multi-page assets, say, organize code in different pages, put objects in different tiles pages, etc.
You'll get your program running very soon after one or two clicks, GB BASIC processes code pages and assets in a flash.
Code Editor
First of all, the alpha version contains a code editor with syntax highlight.
Tiles Editor
Tiles asset is the base of other graphical assets, painting tiles is as simple as using "mspaint.exe".
Map Editor
With the map editor, you can edit both map data and map attributes. Please note that big map is not supported by defining in code yet, it is for the upcoming scene editor.
Palette Editor
The palette editor is mainly used to preview visuals during developing, but it can also generate BASIC code to set palette for CGB programs.
Emulator
GB BASIC includes an emulator to keep you focused.
Fast Iterating
GB BASIC compiles code and processes assets within a fairly short time.
Exporting ROM
The alpha version could generate runnable ROMs already.
Text-based Project Format
The prototype version could handle plain source code only, this ability was reserved, and GB BASIC can work as a command line tool as well. I have invented a new "rich format" for it to support mixed source code, assets, config, etc. Everything (except for the upcoming font assets) are packed in a single project file, which is text-based and friendly to version control systems.
Using User-Created Assets
Some of the examples have been migrated to use real user-created assets instead of built-in and inline data. Now there are three major ways to define a resource.
First, it loads built-in data in ROM.
REM This is defined at the native side in C,
REM that compiles into a ROM, and referenced by its name.
fill sprite(0, 56) = "Elephant"
Second, it loads data sequence in BASIC code.
REM Read data sequence,
fill sprite(0, 56) = read
data 1, 2, 3, 4, 5, 6...
' or
REM use inline data sequence.
fill sprite(0, 56) = data 1, 2, 3, 4, 5, 6...
And third, it loads resources from editors.
REM Reference to an asset page.
fill sprite(0, 56) = #0
Importing And Exporting Assets
Editors would support various importing and exporting methods respectively.
Though the alpha 1 is pretty rough, you could get a first impression of how working with full version would be like. There are three more alpha and a beta versions on the schedule, the overall progress is estimatedly 33% complete.
[▰▰▰▰▰▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 33% - Overall progress
[▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰] 100% - Prototype progress (DONE):
- A working parser and a compiler
- A runtime that supports a number of programming interfaces
[▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰] 100% - Alpha 1 progress (DONE):
- A working assets processing pipeline flow
- Code, tiles, map, palette editors
- A built-in emulator
- A ROM exporter
- Migrated examples
- A Linux port
[▰▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 5% - Alpha 2 progress (WIP):
- Implement font, actor, scene editors
- Implement asset pipelines to process those real user made assets
[▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 0% - Alpha 3 progress (TODO):
- Implement an audio tracker and editor
- Implement an asset pipeline to process those real user made assets
- Fill in the reference manual
[▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 0% - Alpha 4 progress (TODO):
- Improve the API
- Improve the
Actor
,Controller
andScene
modules, etc. - Implement extension features
[▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 0% - Beta 1 progress (TODO):
- Improve usability of the editors
- Improve the API and modules
- Add more examples
- Finish the reference manual
- Port the project to other operating systems
[▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱] 0% - Beta 2 progress (TODO):
- Improve usability of the editors
- Improve the API and modules
- Add more customization options
- Add more exporters
More versions (TBD)?
Stick around for future updates if you are interested in GB BASIC, leave a message below if you got an idea or question. You can also support my development by getting my other projects listed on the main page of this site.
Loading content...