Tony Wang

Steam | Itch | Twitter | GitHub


[Home|All articles|Permalink]

Previously on the project:


It's been five months since the last alpha update. During this period of time, GB BASIC got significant progress which constitute as this alpha 3. As of the time of this writing, the latest alpha 3 is available on itch.io.

Linux port

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

Editor tabs

Compared to the previous alpha, I have added two music and SFX editors in the new version, henceforward all the editors are complete, I have also updated the pipeline and compiler to process and make use of assets made by the new editors; updated the runtime to support new features and make improvements; updated the syntax for intuitive coding experience; added a reference manual; and upgraded the examples.

For next step in the alpha 4, the runtime and syntax will be further more enhanced. That alpha 4 will be the last alpha version before a beta release.


What's New

The following highlight features and modifications were made in the alpha 3.

  • Editors
    • Added a music editor
    • Added an SFX editor
    • Added a pre-made SFX library for importing
    • Added definition edit to the scene editor
    • Added global search to the code editor
    • Added a "Ctrl+/" shortcut to toggle code comment
    • Added "Alt+PgUp"/"Alt+PgDn" shortcuts to move code lines up and down
    • Updated the compiler and pipeline to support sound assets production
  • Runtime
    • Added an SFX player
    • Added an ASC(...) statement
    • Updated the font initialization routine to support customized font for PRINT
  • Syntax
    • Added an ELSE IF as alias of the ELSEIF
    • Added an END IF as alias of the ENDIF
    • Added an END WHILE as alias of the WEND
  • Documents
    • Added a reference manual

Music Playback and Editor

Music editor (tracker view)
Music editor (piano view)

The music playback feature is supported by the hUGEDriver lib, which parses note sequences in ROM and drives the audio chip to generate sound. There are two views to compose a hUGEDriver compatible song in GB BASIC. The first one is the tracker view that represents four channels at a time, the second one is the piano view that shows one of the four channels on it. As a composer, you can use keyboard and mouse to edit channels, notes, waveforms, etc. It also supports previewing key strokes and a song itself instantly. Like using other editors, you can import and export with external files to simplify music reusing and producing.


SFX Playback and Editor

SFX editor

The SFX playback feature is supported by the sfxplayer lib, which parses sound elements in ROM and drives the audio chip to generate short sounds. You can import existing VGM, WAV, and FxHammer files into GB BASIC as SFX. As a matter of convenience, GB BASIC offers a number of pre-made SFXs that are ready for importing.


Touch

Touch statement
Touch preview

Besides generating GB compatible ROMs, GB BASIC also implements a number of extension features that extends its capability boundary. Imagine that if the GB were invented nowadays, touch screen would be an essential component. GB BASIC makes this dream come true with the TOUCH statement.

let x = 0
          let y = 0
          let p = 0

          loop:
            p = touch x, y
            if p then
              print "%d, %d", x, y
            end if
            update
            goto loop

It uses particular unused bus address to store and transfer the statuses of touch/mouse events, thus technically it is totally possible to make a real hardware that supports this extension.


Shell Command

Shell command

With the shell command extension, it tears a small gap between inside and outside an emulator that let BASIC code escape from the emulator delicately.

shell "https://paladin-t.github.io/"

This would be helpful to open external websites, execute external commands with an HTML or native build in future, that would be very interesting, so why not.


Debugging

Debug command
Debug preview

To simplify inspecting in-game values, GB BASIC offers a specialized format of SHELL statement that outputs values onto the application window.


Reference Manual

Reference manual

I have finished the first version of the reference manual eventually, which has already covered all the implemented features.


We are getting closer to this project's formal launch. There are only one more alpha and a beta versions on the schedule, the overall progress is estimatedly 67% complete.

67% 67% - Overall progress

Running on different devices

100% 100% - Prototype progress (DONE):

  • A working parser and a compiler
  • A runtime that supports a number of programming interfaces

100% 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

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

  • Implement font, actor, scene editors
  • Implement asset pipelines to process those real user made assets

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

  • Implement an audio tracker and editor
  • Implement an asset pipeline to process those real user made assets
  • Fill in the reference manual

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

  • Improve the syntax
  • Improve the API
  • Improve the Actor, Controller and Scene modules, etc.
  • Implement extension features

0% 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% 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