obsolete.computer

the-maze/.

An old project originally written in QBasic, currently working on porting to QB64 and/or FreeBasic.

Directory Listing

total 128K
drwxr-xr-x 4 4.0K Jul 17 14:01 ./
drwxr-xr-x 4 4.0K Jul 17 14:02 ../
drwxr-xr-x 2 4.0K Oct 3 2022 original-code-and-data/
-rw-r--r-- 1 16K Mar 10 2025 edit.bas
-rw-r--r-- 1 766 Jul 18 2011 edit.ico
-rw-r--r-- 1 32 Oct 3 2022 editicon.rc
-rw-r--r-- 1 11 Jul 2 12:14 edit.ini
-rw-r--r-- 1 46K Jul 17 14:01 game.bas
-rw-r--r-- 1 12 Jul 18 2011 game.ini
-rw-r--r-- 1 20 Jun 25 14:27 .gitignore
-rw-r--r-- 1 248 Oct 1 2022 LICENSE
-rw-r--r-- 1 1.4K Jul 17 10:15 Makefile
-rw-r--r-- 1 766 Jul 18 2011 maze.ico
-rw-r--r-- 1 32 Oct 3 2022 mazeicon.rc
-rw-r--r-- 1 2.5K Jul 17 13:56 README.md
-rw-r--r-- 1 100 Sep 27 2022 summary.md
-rw-r--r-- 1 3.9K Jul 2 12:13 world1.dat

Download

  • Git clone URL: https://obsolete.computer/static/code/the-maze/.git
  • Download Tarball (Built 2026-07-17): the-maze.tar.bz2

Readme

the-maze

Originally a DOS Game written in QBasic, now a FreeBasic in "QB Mode" project. That's probably as far as it'll go, as there's entirely too much technical debt to make it worth working on in any serious capacity in 2025, but I just wanted to get it working again and on Linux.

AHEM. Update 2026: Thanks to coding agents (in my case Grok), the code is now compiling using -lang fb and has a revamped, somewhat modernized code base, including a more robust Makefile. From here I'm hoping to add sound and custom graphics.

Building

You should just be able to type make in the code directory (after installing FreeBasic of course). A directory called out will be created with the executables and game data... cd into it and run ./game. That's it, there's no install target. (You can also type make run in the code dir and it'll build/run everything)

Display options

The game opens a modern ScreenRes window with an 80×25 logical text grid (same layout as the original). Defaults: windowed, 2× scale (~1280×800).

```
./game [options]

--fullscreen, -f Fullscreen
--windowed, -w Windowed (default)
--scale=N, -s N Pixel scale 1–6 (default 2)
--ascii, -a ASCII playfield glyphs (default)
--tiles, -t Custom tile graphics (experimental; falls back to ASCII for now)
--help, -h Show help
```

Examples: ./game --scale=3, ./game --fullscreen, make run ARGS='--fullscreen --scale=2'.

Always run from the out/ directory (or use make run) so game.ini and world1.dat are found. make game / make run copy those assets automatically.

--scale keeps a fixed 640×400 logical framebuffer (80×25 text cells) and enlarges the window with FreeBASIC's OpenGL 2D mode (SET_GL_2D_MODE + SET_GL_SCALE) when available.

Playfield collision uses a logical tile map. --ascii / --tiles only change how those cells are drawn (custom sprites are still a stub).

Keys

In the game: Arrow keys move. E switches to the level editor. L loads a new game file (you'll be asked to provide a filename - the default game is world1.dat so don't overwrite that). Esc quits the game.

In the editor: Input is mainly mouse-driven, so you can select object modes at the bottom of the screen and place them with the left button. Erase an object of the current mode using the right mouse button. Use the arrow keys to move rooms. Click PLAY to save your world and switch to the game. Esc exits to the OS.

Recent Changes

  • [a820cae] 2026-07-17: Introduce a command line flag for selecting ASCII or custom tile graphics.
  • [afc3ddd] 2026-07-17: Reorganized char/color combos into a tile table
  • [97b1bdc] 2026-07-17: variable rename
  • [294700e] 2026-07-17: Introduce a tile map array to contain the game current data.
  • [94b227e] 2026-07-17: Replace Screen() calls with a GetChar function

License

This project is in the public domain.

Contributing changes back to this codebase and giving attribution when reusing this code are both wonderful things, but neither are necessary.

Meta