paladin-t / paladin-t.github.io

Personal homepage. Surf via the URL https://paladin-t.github.io/.
https://paladin-t.github.io/
3 stars 0 forks source link

GB BASIC Alpha 1 #8

Open paladin-t opened 1 year ago

paladin-t commented 1 year ago

[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 two beta versions on the schedule, the overall progress is estimatedly 33% complete.

33% 33% - Overall progress

Running on different devices

100% 100% - Prototype progress (DONE):

100% 100% - Alpha 1 progress (DONE):

5% 5% - Alpha 2 progress (WIP):

0% 0% - Alpha 3 progress (TODO):

0% 0% - Alpha 4 progress (TODO):

0% 0% - Beta 1 progress (TODO):

0% 0% - Beta 2 progress (TODO):

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]