obsolete.computer

the-maze/README.md

File Type: text/plain


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.

Meta