flat assembler
Message board for the users of flat assembler.

Index > Tutorials and Examples > Hobby BASIC, a simple yet powerful BASIC interpreter

Goto page Previous  1, 2, 3, 4, 5, 6, 7
Author
Thread Post new topic Reply to topic
Picnic



Joined: 05 May 2007
Posts: 1463
Location: Piraeus, Greece
Picnic 25 Apr 2026, 00:34
► New Game in Version 2.5.6 -- Ελληνικά

Gobble Rush! is a faithful Hobby BASIC port of a PuzzleScript game, featuring ANSI graphics for the Windows 11 console.

Your goal in this puzzle is to guide your character to the exit, while avoiding or trapping the yellow crab-like creatures.
The creatures become alert as soon as they spot you and keep charging until they crash into a wall — or into you!
Remember: the enemies always get the final move.

It's a simple yet surprisingly entertaining puzzle that demands strategic thinking.

The game also features:

Holes: Only enemies can cross over them
Chickens: Enemies prioritize chasing them — use them as bait
Lettuces: Enemies will devour them if they get in the way

Features:
• Tile‑based ANSI graphics with 16‑color palette
• Turn‑based movement on a 9x9 grid
• Optimized drawing (only changed tiles)
• Enemy AI with line‑of‑sight detection
• Alert state system: enemies charge until blocked
• Smart simultaneous enemy movement
• Chickens and lettuces as distractions / lures
• Holes that remain intact under moving entities
• Multi‑step undo system (30‑move history)
• Persistent progress: solved levels are saved

All of this runs directly inside the Windows 11 CMD.EXE console.

Image Image Image



[updated 1/5/2026]

Fixed bug with ++ (post-increment) and += (addition assignment) operators on TYPE members

Due to oversight, a logical jump was missing in the assembly code, causing certain games (such as Pacman) to crash.
The operation of these operators on TYPE members has now been fully restored.

Example
Code:
type T
    x=0
    y=0
endt 10

for i = 0 to 9
    T:[i].x ++
    T:[i].x += i * 10
    debug(T:[i].x)
next
    
The code now runs without errors.



▶ New game in Version 2.5.7 -- Ελληνικά

Sticky Candy is a faithful port to Hobby BASIC of a PuzzleScript game, featuring ANSI graphics designed for the Windows 11 console.

Your goal: Move the candies to the collection areas.
Caution! Don't let different candies stick together!

A sweet, simple, but... tricky puzzle!

Features:
• Tile-based graphics with ANSI/16-color palette
• Smooth redraw (only changed tiles are updated)
• Candy sticking mechanics (adjacent candies merge into sticky groups)
• Push any candy: single or entire connected sticky group
• Color‑matching targets: YTG, RTG, BTG
• Victory when every sticky candy sits on its matching target
• Full undo system with unlimited stack (uses dynamic arrays)
• Save game progress (solved levels are remembered)
• Sound effects for sticky conversion and level win
• Wall edge highlighting (3D visual effect)

All of this runs directly inside the Windows 11 CMD.EXE console.

Image Image Image



[updated 13/5/2026]

► New Game in Version 2.5.8 -- Ελληνικά

A simple yet deceptively challenging puzzle.
In Magnetic, your goal is to bring together blocks of the same colour and form one unified group for each colour.
Inspired by Magnetic Blocks by Andrea Gilbert, featuring 13 redesigned levels with a gradually increasing difficulty curve.

Features:
• Tile-based graphics with 16-color palette
• Smooth redraw (only changed tiles are updated)
• Magnetic grouping (mergeable colors) and non‑merge spheres (individual blocks)
• Tilt mechanics: all bodies move simultaneously step by step (left/right/up/down)
• Step‑by‑step animation with adjustable speed (WAIT DELAY)
• Victory condition: each color forms exactly one connected cluster
• Full undo system with unlimited stack (dynamic arrays)
• Save game progress (solved levels are remembered)
• Wall edge highlighting (3D visual effect)

All of this runs directly inside the Windows 11 CMD.EXE console.

Image Image



Hobby BASIC – Internal improvements at the heart of the console.

This new release 2.5.8 introduces no new features, but focuses on fixing and optimizing important parts of the core.
Most changes affect console routines, memory management, and the overall responsiveness of the system.

Console Core
Several internal routines were cleaned up and optimized, with fewer redundant checks,
better register utilization, and safer memory access.

Memory Management
Resource cleanup was improved in several parts of the core, eliminating rare leaks and edge-case memory faults.

The code now spans thousands of lines of assembly, and every optimization takes time, testing, and patience.
Step by step, piece by piece. The fact that a BASIC runs reliably inside CMD.EXE on Windows 7, 10, and 11 is already a small victory.
We keep moving forward.


Useful links:
Online Guide — learn Hobby BASIC the easy way
Full Feature Overview — all capabilities in one page
YouTube Video Tour — see it in action
Chrome blocking? — fix here
Download — the latest version

_________________
Hobby BASIC Interpreter
Post 25 Apr 2026, 00:34
View user's profile Send private message Visit poster's website Reply with quote
Picnic



Joined: 05 May 2007
Posts: 1463
Location: Piraeus, Greece
Picnic 21 May 2026, 10:46
Hello everyone,

Enhancements in Hobby BASIC Version 2.5.9 -- Ελληνικά
───────────────────────────────────────────

A bug in comment preprocessing was fixed where the ! character could be incorrectly recognized as a comment marker when used inside string literals after empty string literals ("" or '').

The comment stripping mechanism was redesigned. The new implementation correctly handles escaped quotes, empty strings, Unicode text, and preserves comment characters inside string literals.

This fix also improves preprocessing reliability and performance, eliminating several edge-case parsing inconsistencies in complex string expressions.

Example:
Code:
! ------------------------------------------------------------
! STRING / QUOTE / COMMENT STRESS TEST
! ------------------------------------------------------------

DEBUG("")                                  ! Output:
DEBUG(" ")                                 ! Output: [space]
DEBUG("Hello")                             ! Output: Hello
DEBUG('Hello')                             ! Output: Hello
DEBUG("Africa!")                           ! Output: Africa!
DEBUG('Africa!')                           ! Output: Africa!
DEBUG("Hello ! world")                     ! Output: Hello ! world
DEBUG('! ! !')                             ! Output: ! ! !
DEBUG("""")                                ! Output: "
DEBUG('''')                                ! Output: '
DEBUG("Hello ""world""")                   ! Output: Hello "world"
DEBUG('Hello ''world''')                   ! Output: Hello 'world'
DEBUG("""Africa!""")                       ! Output: "Africa!"
DEBUG('''Africa!''')                       ! Output: 'Africa!'
DEBUG("a ""b"" c ""d"" e!")                ! Output: a "b" c "d" e!
DEBUG('a ''b'' c ''d'' e!')                ! Output: a 'b' c 'd' e!
DEBUG("", "", "")                          ! Output: [empty][empty][empty]
DEBUG("Hello", "", "Africa!")              ! Output: Hello Africa!
DEBUG("Hello", " ", "Africa!")             ! Output: Hello   Africa!
DEBUG("This is not ! a comment")           ! Output: This is not ! a comment
DEBUG("Hello")                             ! this IS a real comment
DEBUG("γειά σου!")                         ! Output: γειά σου!
DEBUG("こんにちは!")                        ! Output: こんにちは!
DEBUG("""")                                ! Output: "
DEBUG("''''")                              ! Output: ''''
DEBUG('""""')                              ! Output: """"
DEBUG("abc""""def")                        ! Output: abc""def
DEBUG('abc''''def')                        ! Output: abc''def
DEBUG("one","two","three")                 ! Output: one two three
DEBUG("","Africa!")                        ! Output: Africa!
DEBUG("",\
      "Africa!")                           ! Output: Africa!
DEBUG("Hello ""amazing"" world!")          ! Output: Hello "amazing" world!
DEBUG('Hello ''amazing'' world!')          ! Output: Hello 'amazing' world!
    


In short: The tokenizer is now significantly more robust when handling string literals, passing difficult edge-case tests without breaking on comments, whitespace, or continued lines.



Enhancements in Hobby BASIC Version 2.6.0
──────────────────────────────────

A large part of the ANSI module was rewritten from scratch. It is now much closer to what one would expect from a compact VT100/ANSI terminal emulator,
especially regarding CUP, ED, EL, SGR, SU, SD, save/restore cursor handling, and more.

The ANSI parser is written entirely in x86 assembly and implements a substantial portion of the ANSI X3.64 / ECMA-48 standard (roughly 75–80% of the sequences commonly used in ANSI art). It was designed to open and render ANSI images and support colored console applications across Windows XP through Windows 11. ANSI files can be loaded from either local disk or URLs.

Supported features:

Colors: 16 foreground/background colors (8 standard + 8 bright)
Graphic attributes (SGR): bold, underline, blink, reverse video, conceal, reset
Cursor movement: CUP, HVP, CUU, CUD, CUF, CUB, CNL, CPL, HOM
Screen scrolling: full-screen scroll up (SU) and scroll down (SD)
Erase operations: screen (ED) and line (EL) with parameters 0/1/2
Cursor management: save/restore (SCOSC/SCORC), cursor position reporting (CPR/DSR)
Input/Output: load ANSI from file or URL, export screen regions to .ans files (capture/export)
Flow control: ignores control characters, optional delay support for animated ANSI art

In short: A major portion of the Hobby BASIC ANSI/VT100 engine was redesigned, introducing new scrolling functionality (SU/SD), improved SGR/color handling, optimized screen buffering, and significantly better compatibility with the ANSI X3.64 / ECMA-48 ecosystem.



► New Game in Version 2.6.0

Puzzle Adventure is a clever tile-based puzzle game with simple rules but challenging puzzles.
The game is a faithful Hobby BASIC port of a PuzzleScript title, featuring ANSI graphics designed specifically for the Windows 11 console.
Explore a maze-like world, move objects, and overcome obstacles to progress.
Solve the puzzles. Escape the temple.


Features:
• Tile-based ANSI graphics with a 16-color palette
• Turn-based movement on dynamically sized grids
• Optimized rendering (only changed tiles are redrawn)
• Pushable objects: Crates, Keys, Rocks, LTurns, RTurns
• Chain pushing: multiple objects move together in a line
• LTurns (left-turn) and RTurns (right-turn) with special redirection behavior
• Pull mechanic: LTN/RTN pull the object behind them while moving
• Key + Door interaction (both standalone and inside push chains)
• Skull trigger: unlocks all doors in the level simultaneously
• Flag: level completion condition (reached by player)
• Player/Grass and Flag/Grass variants for additional visual variety
• Level progress saving across 22 levels
• Level-specific story messages shown at startup
• Unlimited undo system with stack-based history
• Sound effects: victory, skull trigger, door opening
• Window title displays current level and solved status
• Automatic console window resizing based on level dimensions

All of this runs directly inside the Windows 11 CMD.EXE console.

Image Image Image


Useful links:
Online Guide — learn Hobby BASIC the easy way
Full Feature Overview — all capabilities in one page
YouTube Video Tour — see it in action
Chrome blocking? — fix here
Download — the latest version

_________________
Hobby BASIC Interpreter
Post 21 May 2026, 10:46
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page Previous  1, 2, 3, 4, 5, 6, 7

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2026, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.