
Orbis Basic - SEGA 32x
A downloadable tool for Windows, macOS, and Linux
ORBIS BASIC 32X
ORBIS BASIC 32X is a retro-future BASIC compiler for creating real bootable Sega 32X and Mega 32X ROMs.
It is a lightweight, self-contained compiler designed for games, demos, visual experiments and creative coding projects that run directly on 32X hardware, compatible emulators, or the included desktop build target. Write BASIC code, compile it, and produce a playable .32x ROM or desktop demo build.
Real Sega 32X ROMs and Desktop Builds
Unlike a traditional runtime, framework or modern game engine, ORBIS BASIC 32X generates compact 32X ROMs around a custom SH-2 runtime and a direct color framebuffer graphics model.
It is not a fantasy console, not an emulator scripting layer and not a generic game engine. It is a real BASIC compiler targeting the Sega 32X directly, with built-in ROM generation, automatic asset baking and a complete retro-future development workflow.
Desktop builds make it easier to test, iterate and present projects quickly on modern systems. They are especially useful for graphics, audio and mouse experiments while developing.
A project made with ORBIS BASIC 32X is not only something that runs on a PC. The same creative workflow can produce a real Sega 32X ROM that can be shared with emulator users, tested on suitable flash-cartridge hardware, published as homebrew, or prepared for possible physical cartridge production.
The desktop target is a companion workflow: fast iteration on modern platforms, real ROM output for the Sega 32X.
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 drawing commands image and scrolling commands alpha blending and multi-level parallax audio commands mouse input automatic asset baking desktop builds GUI
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 compiler.
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.
Mouse Support
Recent preview builds add shared mouse support for Sega 32X and desktop targets.
The new 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.
Portable and Self-Contained
The compiler is intentionally minimal, portable and dependency free.
It is distributed as a standalone executable, allowing the tool to run directly across major desktop platforms without installation, package managers or platform-specific setup.
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 and creators who want the complete ORBIS BASIC 32X workflow. It can produce Sega 32X ROMs up to 32 MB and includes desktop build support for creating native desktop versions of compatible projects.
Both editions use the same core idea: write BASIC code, integrate assets automatically, and build real Sega 32X ROMs.
What This Page Contains
This page contains ORBIS BASIC 32X builds, demos, documentation and ongoing development progress.
Simple. Powerful. Retro. Future.
Write once. Build both. Play forever.
| Updated | 1 day ago |
| Status | Released |
| Category | Tool |
| Platforms | Windows, macOS, Linux |
| Author | Maximus |
| Tags | 16-bit, compiler, Emulator, fantasy-console, Game engine, Mega Drive, programming, Retro, Sega Genesis, windows |
| AI Disclosure | AI Assisted, Graphics |
Download
Click download now to get access to the following files:
Development log
- BASIC to Metal: Orbis Basic 32X v6 Preview3 days ago
- The SEGA 32X Finally Speaks BASIC6 days ago
- Orbis Basic 32x — Release Candidate 18 days ago
- Introducing Orbis Basic - SEGA 32x11 days ago


Comments
Log in with itch.io to leave a comment.
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, COLORCODELOADWORLDworks 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.SHOWWORLDdraws 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.CALLWORLDreturns the color code at a screen/world position, making it useful for walls, doors, triggers, water, NPC zones, and other interaction areas.ADDSPRITEconnects 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)LOADGUIloads 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.SHOWGUIdraws the GUI at0,0.CALLGUIreturns 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.
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()MOUSEINITloads the PNG cursor. On 32X,portselects controller port 1 or 2. On desktop, the command is accepted for source compatibility and uses the host window mouse.Call
MOUSEUPDATEonce per frame beforeFLIP.MOUSEX/Yreturn the position,MOUSEDX/Yreturn movement since the last update, andMOUSEBUTTON()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.
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-stylePAD()input, and simple save/load persistence.For end users, the release package is meant to stay simple: you use the included
ob32xcompiler for Sega 32X ROMs, orobdesktoptogether 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.
New mainline update for Orbis BASIC 32X: v5.0.30 adds structured
SUB/CALLsupport.This is intentionally simple and close to classic BASIC / machine-code-style control flow.
CALL Namemaps directly onto the existingGOSUBmechanism, andEND SUBmaps toRETURN.New supported forms:
Also supported in this version:
So you can now organize larger programs into named routines while keeping the direct BASIC-to-Metal mapping philosophy intact.
New in Orbis BASIC 32X: experimental
TYPErecords 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, orEnemy(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.
Yes - actually, we just added
TYPErecords 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).SPEEDThe 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.
Amazing. Thank you.
You are welcome! And thank you again for testing and giving useful feedback.
New in ORBIS BASIC 32X v5.0.22:
PUTSCALESUBPUTSCALESUBadds 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.
Sprite and image scaling
Orbis Basic v5.0.16 now includes easy scaling commands for both images and sprites.
PUTSCALEdraws and zooms full images or image sections.SPRITESCALEbrings the same idea to sprite-sheet based animation.This makes it simple to create classic 32X-style effects directly from BASIC, such as:
No low-level 32X rendering code required.
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,PUTSPRITEfor centered transparent sprite drawing, andSPRITEOVERLAP()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, andFRAMERATEworking together in a stable animated game loop.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-demoshelper, 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.
Hey, thank you! Yes, Linux and macOS are intended to be supported at release.
The
.exename 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:
The
.exeextension 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.
Sweet. That worked. Thank you!
Great, happy to hear it worked! Thank you for testing it on Linux.
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-demoshelper, 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.