• Register

More about FreeBASIC

The FreeBASIC project is a set of cross-platform development tools initially created by Andre Victor, consisting of a compiler, GNU-based assembler, linker and archiver, and supporting runtime libraries, including a software-based graphics library. The compiler, fbc, currently supports building for i386-based architectures on the DOS, Linux, Windows and Xbox platforms. The project also contains thin bindings (header files) to some popular 3rd party libraries such as the C runtime library, Allegro, SDL, OpenGL, GTK+, the Windows API and many others, as well as example programs for many of these libraries.FreeBASIC is a high-level programming language supporting procedural, object-orientated and meta-programming paradigms, with a syntax compatible to Microsoft QuickBASIC. In fact, the FreeBASIC project originally began as an attempt to create a code-compatible, free alternative to Microsoft QuickBASIC, but it has since grown into a powerful development tool. FreeBASIC can be seen to extend the capabilities of Microsoft QuickBASIC in a number of ways, supporting more data types, language constructs, programming styles, and modern platforms and APIs.

Most Important Features

BASIC compatibility

FreeBASIC is not a "new" BASIC language. You don't need to learn much new if you are familiar with any Microsoft-BASIC variant. You can use either "-lang qb" for compatibility, or (default) "-lang fb" for some of the new features, but it also brings some restrictions and some similarity with the "C" programming language. FreeBASIC is case-insensitive; explicit "main" procedure is not required; most of the graphic and console statements and procedures found in Microsoft QuickBASIC are implemented, et cetera. Only with "-lang qb": scalar variables don't need to be dimensioned and suffixes can be used; line numbers are supported; On Error and Gosub supported.

Clean syntax

Only a small number of keywords have been added. All procedures are implemented as libraries, so for the most part, there are no new intrinsic routines, and therefore there is a low chance of having name duplication with old code.

Thin bindings (header files) to existing C libraries and APIs

No wrappers or helpers are necessary, just a ported header file, making usage of external C libraries very easy. The official distribution comes with several bindings to existing C libraries already, see External Libraries TOC for a complete up-to-date list.


FreeBASIC currently runs on 32-bit Windows, Linux, and DOS (a 16-bit DOS is good enough, although FreeBASIC itself and compiler output are 32-bit) and also creates applications for the Xbox console. More platforms to come. The runtime library was written with portability in mind. All third-party tools used exist on most operating systems already as they are from the GNU binutils. The compiler is written in 100% FreeBASIC code (that is, FreeBASIC compiles itself.), which makes it simple to be bootstrapped as it doesn't depend on non-portable tools.

Unicode support

Besides ASCII files with Unicode escape sequences (\u), FreeBASIC can parse UTF-8, UTF-16LE, UTF-16BE, UTF-32LE and UTF-32BE source (.bas) or header (.bi) files, they can be freely mixed with other sources/headers in the same project (also with other ASCII files). Literal strings can be typed in the original non-Latin alphabet, just use a text-editor that supports some of the Unicode formats listed above. The Wstring type holds wide-characters, all string procedures (like Left, Trim, etc) will work with wide-strings too. Open was extended to support UTF-8, UTF-16LE and UTF-32LE files with the Encoding specifier. Input # and Line Input #, as well as Print # and Write # can be used normally, and any conversion between Unicode to ASCII is done automatically if necessary. Print also supports Unicode output (see Requirements).

A large number of built-in data types

  • Integer: Byte, Ubyte, Short, Ushort, Integer, UInteger, Long, ULong, Longint, Ulongint
  • Floating-point: Single, Double
  • String: fixed, variable-length or null-terminated (Zstring), up to 2GB long Unicode strings (Wstring), like Zstring, but with support for wide characters. Use the Windows Unicode API procedures directly, etc.

User-defined types (UDTs)

Unlimited nesting. BASIC's Type statement is supported, along with the new Union statement (including anonymous nested unions). Array fields utilizing up to eight dimensions can be used. Procedure pointer fields. Bit fields. Enumerations (enums) Easily declare a list of constants with sequential values with Enum. Arrays Fixed- and variable- length arrays are supported, up to 2 GB in size. Up to eight dimensions, including arrays with unknown dimensions. Any lower and upper boundaries. Element data can be preserved during a re-size of variable-length arrays with Redim using the new Preserve specifier. Pointers to any of the data types listed above, including string characters, array elements and UDT's. Uses the same syntax as C. Unlimited indirection levels (e.g., pointer to pointer to ...). Procedure pointers. Indexing []'s (including string indexing). Type casting. Variable, object and array initialization For static, module-level or local variables, arrays and UDT's.

Default procedure parameter values

For numeric, string and UDT parameter types. Procedure overloading Including procedures with default parameter values.

In-line assembly Intel syntax

Reference variables directly by name; no "trick code" needed.

Traditional preprocessor support

Same syntax as in C. Single-line macros supported with the #Define command, including parameters. Multi-line macros supported with the #Macro command. Type aliases Supporting forward referencing as in C, including UDT and procedure pointer types. C-like escape sequences for string literals Same as in C (except numbers are interpreted as decimal, not octal).

Debugging support

Full debugging support with GDB (the GNU debugger) or Insight (a GDB GUI frontend). Array bounds checking (only enabled by the -exx command-line option). Null pointer checking (same as above).

Create OBJ's, LIB's, DLL's, and console or GUI EXE's

You are in no way locked to an IDE or editor of any kind. You can create static and dynamic/shared libraries adding just one command-line option (-lib or -dylib/-dll). As a 32-bit application FreeBASIC can compile source code files up to 2 GB in size. The number of symbols (variables, constants, et cetera) is only limited by the total memory available during compile time. (You can, for example, include OpenGL, GTK/SDL, BASS, simultaneously in your source code.)

Optimized code generation

While FreeBASIC is not an optimizing compiler, it does many kinds of general optimizations to generate the fastest possible code on x86 CPU's, not losing to other BASIC alternatives, including the commercial ones. Completely free All third-party tools are also free. No piece of abandoned or copyrighted software is used (except GoRC on Win32). The assembler, linker, archiver, and other command-line applications come from the GNU binutils programming tools.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Related Articles

Bug fixes! Bug fixes! Bug fixes!

In prep for releasing a new demo, I've been running through the game a lot, fixing what bugs that come up. There always seems to be something to fix. That's why I don't have a demo for this month; there was much more to fix than I expected. With this update, I'll just highlight a few things I've been working on, whilst in the midst of fixing bugs.

New theme

I've been working on another theme. This one has mushroom trees and mossy walls. I still need to adjust the palette so it's not the same green/blue feel as other themes.

User Posted Image

The Farm

At the very beginning of the game, you start on a farm. I added some flowers to give the look more variety and rows of corn stalks so it looks more like a farm.

User Posted Image

User Posted Image

Finished a level

I completed one of the sky levels. Well, all levels are constantly being updated as I progress on the game. I guess I mean I have a path from the start to finish, and that it mostly feels complete. Near the end you need to fly through a gauntlet of mines and spiked balls.

User Posted Image

New! Purchase armor and suit up.

You can now buy armor from the shops for protection. I needed some more things for the player to spend money on, and this turned out to be a good investment of time. While worn, you only lose a half-heart instead of a whole-heart when hit. After enough hits, the armor will break and you'll lose it. You always have the option to purchase more armor afterwards.

User Posted Image

Ditched the palace/wizard levels

R.I.P palace levels. These were slower levels to give the player a break from all the action. Mostly it involved just going through a few rooms until you find the wizard, upon which the wizard give you a gift by casting a spell. Mainly it was just a way to level-up the player's max HP.

Why'd I get rid of it? As the game progressed, the pacing of these levels started to feel off, and they no longer felt needed since I added the shop levels (which also act as a break between the action).

The relationship between Smokey and the wizard kept getting more complex. There was a lot more to work on to get it feeling just right. I was about to add some more complexity and feature creep to it, but man, that would've been too much. I'm trying to finish a game, not keep this one going on forever. Sometimes, I think, you have to spend time finding what to remove as much as you spend time on adding things. It's a constant curation process. This was something that needed to be removed. It wasn't an easy decision, but I think it was the right one. Here's a few screenshots for keepsake.

User Posted Image

The palace entrance.

User Posted Image Earlier version of the wizard room, with him casting a spell to increase vitality.

User Posted Image Newer version of the wizard room.

That's all the updates for now. Fingers crossed for a demo in July.

Progress Update, May 2018

Progress Update, May 2018

Toad On Fire 4 comments

It's been far too long since my last update, but I have put a lot of work into the game since then. Some notable items include an additional boss, a new...

Greenlight Campaign Rebooted

Greenlight Campaign Rebooted

Toad On Fire 2 comments

The old greenlight campaign is dead in the water. I decided the best strategy at this point was to restart the campaign with a better presentation.

Progress Update, May 2017

Progress Update, May 2017

Toad On Fire 2 comments

It's been several months since my last update. I've been hard at work, trying to finish everything for the game. Though, nothing is coming easy. Each...

Toad On Fire now on Steam Greenlight!

Toad On Fire now on Steam Greenlight!

Toad On Fire 2 comments

It's been a lot of work, but I finally made it. I made the trailer.

Add game Games
Toad On Fire

Toad On Fire


Equipped with a flamethrower, progress many levels as you explore lands, torch trees to the ground, surf on lily pads, and set your enemies ablaze. Collect...

Catloaf 2600

Catloaf 2600


Catloaf 2600 is a small, minimalist, retro-style type of game. The objective is to find your way through a labyrinth/maze by finding keys to unlock doors...

The Empire of Cosmos

The Empire of Cosmos

Real Time Strategy

The Empire of Cosmos ist ein Weltraum Echtzeitstrategie Spiel das noch in den Kinderschuhen steckt...


This comment is currently awaiting admin approval, join now to view.


This comment is currently awaiting admin approval, join now to view.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Profile
Windows, Mac, Linux, XBOX
Send Message
Release date
Engine watch
Mod SDK & Community
Built a game for FreeBASIC and want to support mods? Try mod.io, a cross-platform mod SDK created by Indie DB which makes it easy to get a mod community up and running in-game. Currently seeking games to integrate and promote
Community Rating



0 votes submitted.

You Say


Ratings closed.

Embed Buttons
Link to FreeBASIC by selecting a button and using the embed code provided more...
90 of 833
Last Update
4 members
You may also like
Blender Game Engine
Blender Game Engine GPL
Unreal Engine 2
Unreal Engine 2 Commercial
MonoGame BSD
Dream Maker
Dream Maker Public Domain
Drag[en]gine L-GPL