Tony Wang

Steam | Itch | Twitter | GitHub


[Home|All articles|Permalink]

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.

Linux port

The alpha version supports both Windows and Linux for the moment.

Editor tabs

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.

Development experience

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.

Recent

The first screen shows you your recent projects once you launched it.

Manual

As a feature preview, the reference manual will be also integrated.

Multi-page editors

Most of the editors support multi-page assets, say, organize code in different pages, put objects in different tiles pages, etc.

One-click compile and run

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

Code editor

First of all, the alpha version contains a code editor with syntax highlight.


Tiles Editor

Tiles editor

Tiles asset is the base of other graphical assets, painting tiles is as simple as using "mspaint.exe".


Map Editor

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

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

Emulator

GB BASIC includes an emulator to keep you focused.


Fast Iterating

Fast iterating

GB BASIC compiles code and processes assets within a fairly short time.


Exporting ROM

Exporting ROM

The alpha version could generate runnable ROMs already.


Text-based Project Format

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.

Built-in data

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"

Data sequence

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...

Tiles editor

And third, it loads resources from editors.

REM Reference to an asset page.
          fill sprite(0, 56) = #0

Importing And Exporting Assets

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

Running on different devices

[▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰] 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 and Scene 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.

[Home|All articles|Permalink]



Loading content...


(C) 2018-2024 Tony Wang RSS