A downloadable tool for Windows and Linux

Download NowName your own price

ORBIS BASIC 32X / ORBIS BUILDER

ORBIS BASIC 32X is a retro-future development toolkit for creating real bootable Sega 32X / Mega 32X ROMs, native desktop builds, and retro-style game projects.

It started as a BASIC compiler. It still is one. You can write approachable BASIC code, compile it, and produce a playable .32x ROM.

But with the newer Builder Edition, the idea has grown.

Orbis Basic is no longer only BASIC as a programming language. It is also “basic” as in the essential tools for making retro games.

That means BASIC, C, real string support, automatic asset integration, desktop builds, GPU-accelerated desktop presentation, 32X ROM building, and the Orbis Pixel Pipeline all working together as one creative workflow.


From BASIC Language to Basic Game-Making Tools

The original idea remains simple:

Write code. Build a real Sega 32X ROM.

The new Builder workflow expands that idea:

Write in BASIC. Build in C. Prepare pixels. Build ROMs. Build desktop apps.

BASIC is still the fastest way to start. It gives you simple commands for graphics, sprites, audio, input, text, data, and game logic.

But Orbis Builder also gives developers a stronger C workflow. The package includes generated Orbis C examples and real string support, making C much more practical for menus, text handling, file paths, tools, UI logic, save/load helpers, generated code, and larger desktop-oriented projects.

So you can choose your level:

Write games in BASIC.
Write games in C.
Use both workflows inside the Orbis ecosystem.
Build for Sega 32X.
Build for desktop.
Prepare assets with the Pixel Pipeline.

That is the new meaning of Orbis Basic: the BASIC language, and the basic tools for building retro games.


Real Sega 32X ROMs and Native Desktop Builds

Unlike a traditional runtime, fantasy console, emulator scripting layer, or generic game engine, ORBIS BASIC 32X generates real 32X ROMs around a custom SH-2 runtime and a direct-color framebuffer graphics model.

It produces bootable .32x ROMs that can run in compatible emulators, on suitable handheld setups using PicoDrive, and in appropriate flash-cartridge or homebrew workflows.

A project made with ORBIS BASIC 32X is not only something that runs on a PC. It can become a real Sega 32X ROM that can be shared with emulator users, tested on suitable hardware, published as homebrew, or prepared for possible physical cartridge production.

The desktop target is a companion workflow. It makes testing, iteration, experiments, and presentation much faster on modern systems while keeping the Sega 32X ROM target as the soul of the project.


GPU-Accelerated Desktop Presentation

The desktop version is now a much stronger part of the workflow.

Native desktop builds use GPU-accelerated OpenGL presentation. The game still draws into an Orbis-style RGB555 framebuffer, so the retro pixel model stays intact, but the window presentation and scaling are handled through a GPU-backed path.

This makes desktop builds smoother and more comfortable while preserving the same retro-style framebuffer thinking used by the 32X target.

Desktop builds can also use larger logical screen modes with SCREEN(width,height), including common desktop resolutions such as 1280x720 and 1920x1080.

This is useful for desktop tools, menus, visual experiments, large images, high-resolution previews, mouse-driven projects, and native app versions of Orbis projects.


BASIC for Games, Demos and Visual Experiments

ORBIS BASIC 32X supports a practical BASIC-style command set for building visual and interactive projects, including:

TYPE and SUB support
CALL structure
drawing commands
image drawing
scaled drawing
sprites
scrolling commands
alpha blending
multi-level parallax
audio commands
mouse input
controller input
DATA handling
SAVE and LOAD support
automatic asset baking
desktop builds
GUI and world helpers

The project is built for creators who want to make original Sega 32X software with the immediacy of BASIC, the visual identity of retro hardware, and the freedom of a modern portable toolchain.


Orbis C with Real String Support

Orbis Builder also includes a stronger C path.

This is important because not every project needs to stay purely in .bas form. Some creators may want to use BASIC for fast prototyping and C for larger systems, desktop tools, generated examples, or more structured projects.

The included Orbis C workflow gives that path a real foundation.

Real string support as language extension makes the C side much more useful.

It enables practical text handling for menus, messages, names, file paths, UI logic, generated content, save/load helpers, and tool-like desktop projects.

This turns Orbis Builder into more than a BASIC compiler. It becomes a small retro development environment where BASIC and C both have a place.

BASIC for immediacy.
C for control.
Strings for real tools and real game structure.
ROM output for the 32X.
Desktop output for modern systems.


Automatic Asset Integration

One of the defining features of ORBIS BASIC 32X is immediate asset integration.

Images and audio can be baked into the ROM during compilation. The compiler automatically converts, integrates, and prepares assets as part of the build process, removing the need for a large external toolchain or complicated manual conversion steps.

Write BASIC code, reference your assets, compile, and the compiler prepares the ROM for you.

For larger Full Edition projects, the newer 32 MB ROM workflow allows much larger image-heavy projects. Mapper-backed image data can be stored in ROM banks and accessed by the runtime when needed.

This is useful for large backgrounds, panoramas, scrolling scenes, visual novels, image-heavy demos, animated intros, and bigger game worlds.


Dynamic Desktop Assets

Desktop builds can also use dynamic runtime assets.

DYNIMAGE(path$)
DYNAUDIO(path$)
FREEIMAGE handle
FREEAUDIO handle

These commands are desktop-only. They are designed for cases where a native desktop build should load images or audio from disk instead of embedding everything into the executable.

This is useful for large 1080p images, external music, galleries, mod folders, menu assets, animation tests, and desktop-first tools.

The classic portable commands keep their original role:

LOADIMAGE
LOADSOUND

Those remain the static compile-time asset path for shared Sega 32X and desktop projects.


Orbis Pixel Pipeline Companion Tool

Orbis Pixel Pipeline is the advanced standalone evolution of the original Orbis Scaler companion tool.

It is designed for preparing artwork, rendered images, screenshots, AI-generated images, concept art, scanned artwork, and other source graphics for retro-style game development workflows.

It can downscale images to fixed or custom resolutions, apply adjustable pixelation, limit colours with k-means, map output to external GPL palettes, process complete folders in batch mode, and upscale previews with nearest-neighbor scaling.

For ORBIS BASIC 32X projects, Orbis Pixel Pipeline can be used to prepare cleaner low-resolution image material, references, backgrounds, sprites, and pixel-art-style base images before further editing, palette work, or integration into a Sega 32X project.

This is another part of the Builder idea: Orbis is not only about code. It is also about preparing the pixels that the code will use.


Mouse Support

Recent builds include shared mouse support for Sega 32X and desktop targets.

The mouse commands make it possible to build mouse-driven programs using a Sega/Mega Mouse or compatible setup, while keeping the same source code usable in the desktop build.

MOUSEINIT("mousepointer.png", port[, protocol])
MOUSEUPDATE
MOUSEX()
MOUSEY()
MOUSEBUTTON()

On 32X, the port argument selects controller port 1 or 2. On desktop, the same commands map to the host window mouse.

This makes ORBIS BASIC 32X useful not only for games, but also for menus, editors, visual tools, GUI experiments, and desktop companion projects.


Portable and Self-Contained

The compiler and companion tools are intentionally minimal, portable, and self-contained.

The release package is designed around bundled executables and included documentation. Users can work from the release folder without needing a source-tree build system.

The goal is to keep the workflow direct:

Write source.
Run the bundled compiler.
Build ROMs or desktop apps.
Test and iterate.


Free Edition vs Full Edition

ORBIS BASIC 32X is available in Free Edition and Full Edition.

The Free Edition is intended for trying the compiler, learning the workflow, and building smaller Sega 32X projects. It can produce real bootable Sega 32X ROMs up to 512 KB.

The Full Edition is intended for larger projects, asset-heavy demos, desktop workflows, and creators who want the complete ORBIS BASIC 32X / Orbis Builder experience.

The Full Edition can produce Sega 32X ROMs up to 32 MB and includes the larger desktop build workflow for creating native desktop versions of compatible projects.

Both editions use the same core idea:

Write code, integrate assets automatically, and build real Sega 32X ROMs.


Download Options

The free download includes the Free Edition of ORBIS BASIC 32X.

The full bundle includes the Full Edition of ORBIS BASIC 32X with the complete ROM size limit and desktop build workflow.

Orbis Pixel Pipeline is available separately as an advanced companion tool for pixel-art-style asset preparation and batch image processing.


What This Page Contains

This page contains ORBIS BASIC 32X builds, Orbis Builder updates, demos, documentation, examples, and ongoing development progress.

You can use it for arcade games, platformers, puzzle games, visual novels, scrolling scenes, sprite tests, audio demos, mouse experiments, desktop tools, generated C projects, pixel-art workflows, and Sega 32X homebrew.


Simple. Powerful. Retro. Future.

Write in BASIC. Build in C. Prepare the pixels. Build the ROM. Build the app.

From BASIC to metal.

Download

Download NowName your own price

Click download now to get access to the following files:

Orbis_Basic 32x v6.0.17 (Release Version - Free) 5.2 MB
Orbis Builder v7 Handbooks (Free Sample) 634 kB
Orbis Basic 32x v6.0.17 (Release Version - Full) 8.7 MB
if you pay $29.99 USD or more
Orbis Basic 32x v7.0.03 (Release Version - Full) 9.6 MB
if you pay $29.99 USD or more
Orbis Builder v6.1.22 33 MB
if you pay $49.99 USD or more
Orbis Builder v7.0.03 13 MB
if you pay $49.99 USD or more

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

This is neat. You're darned tootin' I bought a copy, even though the 32X was my arch enemy in the 1990s. You want me to buy ANOTHER add-on? And for HOW much?

So I assume this is JUST for 32X and not the core Genesis? Also, do you have access to all the fun Mode 7-y effects of the 32X? Mode 7 effects are fun to screw around with.

(4 edits)

Thank you! Yep, for now it’s 32X only. Genesis support is something I’ve thought about, but I haven’t had time to implement it yet. One of the main reasons I focused on the 32X is its RGB555 framebuffer, since it gives Orbis BASIC a much more straightforward direct-pixel graphics model.

As for the Mode 7-ish stuff, I’ve thought about that too! There’s already scaling support, but I haven’t implemented the more advanced rotation, affine, or perspective effects yet. Definitely the sort of thing I’d like to add down the road.

(1 edit)

Orbis Basic v7.0.3 is now available!

This release introduces proper typed functions and automatic local variables, including INTEGER, FLOAT, STRING, recursion, parameters, return values, and local fixed arrays.

The old text manuals have also been replaced with two comprehensive, professionally designed retro handbooks inspired by classic Commodore-era documentation. They include diagrams, reference material, and complete runnable examples for Sega 32X, Linux, Windows, and Orbis C development.

v7.0.3 also includes improved math and runtime-string compatibility, unified demo building, and a fully validated 260-example library.

Happy coding - and have fun creating for the Sega 32X!

v6.0.17 – World Scrolling Commands

This update adds a new high-level world system for creating scrolling maps, RPGs, adventure games, and Zelda/Pokémon-style scenes.

New commands:

W = LOADWORLD("world.png", "world_colormap.png") 
SHOWWORLD W, XW, YW 
HIT = CALLWORLD(W, X, Y, XW, YW) 
ADDSPRITE W, SPRITEID, COLORCODE 

LOADWORLD works like the GUI system: it loads a visible world image and a color-coded logic map. The colormap is converted at build time, so the original overlay image does not need to be stored in ROM.

SHOWWORLD draws a 320×200 scrolling viewport from the world image. If the camera reaches the edge of the map, the outside area is automatically drawn black.

CALLWORLD returns the color code at a screen/world position, making it useful for walls, doors, triggers, water, NPC zones, and other interaction areas.

ADDSPRITE connects sprites with world color codes, opening the door for simple collision and object interaction systems.

This keeps the BASIC code very small while allowing much larger scrolling game worlds.

v6.0.15 update

New GUI commands added:

GUI = LOADGUI("menu.png", "menu_colormap.png") 
SHOWGUI(GUI) 
HIT = CALLGUI(GUI, X, Y) 

LOADGUI loads a visible menu image plus a color-coded hitmap. The hitmap is converted at build time, so the full overlay image is not stored in ROM.

SHOWGUI draws the GUI at 0,0.

CALLGUI returns the color code under a position, useful for buttons and menu areas.

Also fixed 32X mouse rendering: the cursor is now drawn safely at frame end, preventing trails, flicker, and broken text output.

(2 edits)

v6.0.0 - Release Candidate 1 is available.

This preview adds mouse support for Sega 32X and desktop builds.

New mouse commands:

MOUSEINIT("mousepointer.png", port[, protocol]) 
MOUSEUPDATE 
MOUSEX() 
MOUSEY() 
MOUSEDX() 
MOUSEDY() 
MOUSEBUTTON() 

MOUSEINIT loads the PNG cursor. On 32X, port selects controller port 1 or 2. On desktop, the command is accepted for source compatibility and uses the host window mouse.

Call MOUSEUPDATE once per frame before FLIP. MOUSEX/Y return the position, MOUSEDX/Y return movement since the last update, and MOUSEBUTTON() returns button bits.

This preview also fixes the Windows/Wine desktop audio problems. The Win64 audio path now uses a callback/pull-mixer model, fixing the previous stutter, noise, and slowdowns.

(1 edit)

Desktop cross-build concept

The v6.0.0 experimental preview explores a new direction for Orbis Basic 32x: the same BASIC projects that target the Sega 32X can now also be cross-built as native desktop programs.

The idea is not to create a separate “desktop edition” of the language. Instead, the desktop target follows the same Orbis/32X-style programming model: a fixed SEGA 32x-framebuffer, FLIP/FRAMERATE-driven rendering, RGB555 image data with alpha planes, sprite commands, PCM16/ADPCM audio assets, controller-style PAD() input, and simple save/load persistence.

For end users, the release package is meant to stay simple: you use the included ob32x compiler for Sega 32X ROMs, or obdesktop together with the bundled TCC toolchains to generate Linux and Windows desktop builds. This makes it easier to test, share, and preserve projects outside an emulator while keeping the 32X version as the main reference platform.

This is still experimental and should be understood as a possible outlook toward a future v6 direction, but the goal is clear: one BASIC codebase, multiple playable targets.

(2 edits)

New mainline update for Orbis BASIC 32X: v5.0.30 adds structured SUB / CALL support.

This is intentionally simple and close to classic BASIC / machine-code-style control flow. CALL Name maps directly onto the existing GOSUB mechanism, and END SUB maps to RETURN

New supported forms:

SUB DrawHud
   LOCATE 1,1
   PRINT "HUD"
END SUB  
CALL DrawHud 

Also supported in this version:

IF condition THEN CALL Name 
ON expr CALL Name1, Name2, Name3 

So you can now organize larger programs into named routines while keeping the direct BASIC-to-Metal mapping philosophy intact.

(1 edit)

New in Orbis BASIC 32X: experimental TYPE records in v5.0.27.

This adds record-style data organization to help build larger programs more cleanly, for example grouping player or enemy data into fields like Player.X, Player.Y, or Enemy(I).Speed.

The compiler translates these records into Orbis BASIC’s existing fast variable and array system, so the code stays organized without adding a new runtime object layer or intended performance cost compared to writing the equivalent variables manually.

This feature is currently marked as experimental and needs further testing, especially in larger projects and more complex record-array use cases.

A small TYPE records demo is included in the package.

By any chance are you planning on implementing `TYPE` or similar? I think it might be challenging for a modern programmer to write nontrivial programs without some concept of a struct.

(5 edits) (+1)

Yes - actually, we just added TYPE records to the current Orbis BASIC 32X experimental build.

The idea is to give programs a struct/record-like way to organize data, for example:

TYPE Actor
     X AS INTEGER
     Y AS INTEGER
     SPEED AS INTEGER
END TYPE 
 
DIM Player AS Actor 
DIM Enemy(8) AS Actor
  
Player.X = 100 
Enemy(I).Y = Enemy(I).Y + Enemy(I).SPEED 

The compiler translates these records into Orbis BASIC’s existing fast variable and array system, so it should help organize nontrivial programs without adding a new runtime object layer or intended performance cost.

It is still marked experimental and needs more testing, especially in larger projects, but a small demo is already included in the experimental package. 

(+1)

Amazing. Thank you.

You are welcome! And thank you again for testing and giving useful feedback.

New in ORBIS BASIC 32X v5.0.22: PUTSCALESUB

PUTSCALESUB adds cropped and scaled image rendering directly from ROM-backed assets. It lets a program select a source rectangle from a larger image, scale it to a destination area, and draw it in one command.

This is especially useful for zoomed scrolling backgrounds, camera-style effects, panorama demos and game scenes that need to move across large images without manually preparing many separate assets.

(1 edit)

Sprite and image scaling

Orbis Basic v5.0.16 now includes easy scaling commands for both images and sprites.

  • PUTSCALE draws and zooms full images or image sections.
  • SPRITESCALE brings the same idea to sprite-sheet based animation.

This makes it simple to create classic 32X-style effects directly from BASIC, such as:

  • zooming characters
  • large bosses
  • pseudo-depth movement
  • intro logos
  • arcade-style sprite scaling

No low-level 32X rendering code required.

(1 edit)

Orbis Basic 32X has reached the v5.0.6 sprite milestone.

Since v5.0.0, the compiler now includes a complete sprite workflow for real Sega 32X game development: MAPSPRITE() for mapping sprite sheets, PUTSPRITE for centered transparent sprite drawing, and SPRITEOVERLAP() for simple rectangle-based collision checks.

Sprite sheets now support runtime animation frames, 8-frame run cycles, alpha/transparent pixels, safe screen-edge clipping, and compact runtime sprite-run drawing for better performance. The new wizard demo shows LOADIMAGE, MAPSPRITE, PUTSPRITE, and FRAMERATE working together in a stable animated game loop.

(1 edit)

The SEGA 32X Finally Speaks BASIC

Orbis Basic 32x v5.0.0 is now available as the first stable release.

This is a major milestone for the project. Orbis Basic 32x is no longer just an experiment or a small demo compiler - it is now a complete BASIC-based workflow for creating real Sega 32X homebrew games and demos.

The core feature set is now included: realtime graphics, image drawing, scrolling, character animation, audio playback, looping sound/music, controller input, save/load support, timing helpers, and automatic ROM generation.

The release package also includes a universal build-all-demos helper, so all examples can be compiled with one command. It automatically detects the Free or Full Edition compiler and builds the included BASIC examples into Sega 32X ROMs.

The Free Edition is available so everyone can test the workflow first, build demos, and check compatibility before deciding whether the Full Edition is right for them.

Thank you very much to everyone following the project and supporting Orbis Basic 32x.

You can now create Sega 32X games with simple BASIC.

Hey! I'm really excited to try this!

Question: given that your downloads are marked as supporting Linux and MacOS, are you planning on supporting non-windows platforms at release? It didn't immediately work for me when running under wine in Ubuntu. (`wine ob32x_free.exe examples/hello.bas` hangs forever). 

Safety Stoat develops on *nix Operating systems, so if you do support those I'd be interested in purchasing the non-free version in the future.

(1 edit) (+1)

Hey, thank you! Yes, Linux and macOS are intended to be supported at release.

The .exe name is a little misleading here: ORBIS BASIC 32X is built as a Cosmopolitan / actually portable executable, so it should run directly on Linux without Wine. Wine is not needed and may actually cause problems.

I am developing and testing the executable on Linux Mint myself.

On Linux, please try:

chmod +x ob32x_free.exe 
./ob32x_free.exe examples/hello.bas 

The .exe extension is kept so the same file can also be used on Windows.

If it still gives you trouble when run directly, please let me know your distro and system details. I definitely want the tool to work well for *nix users too.

(+1)

Sweet. That worked. Thank you!

(+1)

Great, happy to hear it worked! Thank you for testing it on Linux.

(1 edit)

Orbis Basic 32x v5.0.0 - Release Candidate 2

A new release candidate is now available.

This build mainly focuses on polishing the release workflow before the final version. The separate demo build scripts have been replaced by a single universal build-all-demos helper, which automatically detects the Full or Free Edition compiler and builds all BASIC examples into Sega 32X ROMs.

This should make first testing much easier on Windows, Linux, and macOS.

The core feature set is now complete: realtime graphics, scrolling, character animation, audio, controller input, save/load support, timing helpers, and simple BASIC-based 32X ROM creation.

Unless a final issue appears during testing, this RC2 build is expected to become the final v5.0.0 release very soon.

Orbis Basic 32x v4.60.51 is getting much closer to a full Sega 32X game/demoscene BASIC environment.

This version adds the new unified sound system: 

LOADSOUND, PLAYSOUND, LOOPSOUND, STOPSOUND, and SETVOLUME. 

Audio can now use high-quality PCM16 or compressed 4-bit IMA ADPCM, with automatic premastering to make music and sound effects work better with the 32X PWM audio hardware.

Together with the existing graphics, PNG/JPG image loading, PUTIMAGE/PUTSUB, controller input, double buffering, math, strings, arrays, and ROM generation, Orbis Basic 32x can now be used to create complete Sega 32X homebrew games, demos, intro screens, and audio/visual experiments in BASIC.