qbasicapps.git
2 days agofix(3d-synthezier): correct mirrored face winding in generated OBJ files master
Svjatoslav Agejenko [Sun, 27 Sep 2026 18:49:12 +0000 (21:49 +0300)]
fix(3d-synthezier): correct mirrored face winding in generated OBJ files

The parser negates Z when writing vertices but emitted faces in their original order, so every generated OBJ had globally mirrored winding - building walls pointed inward and one-sided lighting/GI in consuming renderers produced uniform gray facades. Faces are now emitted reversed to compensate, and the transform stack tracks negative-scale (mirror) parity so mirrored instances flip winding back automatically.

Sixteen include files also had faces authored inward (dome, prisms, pipe, plate, solar, police parts, car, bus, hextower, roof slabs); these are flipped at source. Roof slabs had been authored downward and only rendered correctly by accident of the parser bug.

Component and material names are now English (maja->building, krs->storey, sein->wall, blk->window/hextower, nrk->prism, katus->roof, kuppel->dome, pol->police, muld->soil, kivi->stone and so on), and the scene language gained readable command aliases (origin, use, pick, pickmtl, ifeq, if) with all scene files and documentation converted. Both cities regenerated; AGENTS.org documents layout, build, language essentials and winding rules.

3 days agofeat(3d-synthezier): run city generator on Linux via crtbasic
Svjatoslav Agejenko [Sat, 26 Sep 2026 16:52:04 +0000 (19:52 +0300)]
feat(3d-synthezier): run city generator on Linux via crtbasic

- Add bin/city1.sh and bin/city2.sh, crtbasic equivalents of the DOS
  batch files: they run 3dparse.bas headless with --command selecting
  the scene (COMMAND$ stands in for the DOS /CMD switch).
- Change the include path in 3dparse.bas from the absolute DOS path
  C:\GRAPHICS\3D\3DSYNT~1\INCLUDE\ to the relative ..\include\,
  resolved against the bin directory, so no path editing is needed.
- Commit the generated city1.obj and city2.obj example scenes.
- Document the Linux workflow in a new "Linux (crtbasic)" section in
  doc/index.org.

4 days agorefactor(truth-table): translate Estonian names and add regression harness
Svjatoslav Agejenko [Sat, 26 Sep 2026 12:38:26 +0000 (15:38 +0300)]
refactor(truth-table): translate Estonian names and add regression harness

- truth.bas: second readability pass — translate remaining Estonian
  identifiers (sist/lahend/tee/teeslg/lend/mov, tehl/nm/muu/prnp) into
  descriptive English, add per-SUB description headers, document the
  operator encoding (CHR$(1..5), t/v as tosi/vaar constants) and mark
  the dead 2002-era code (removeRedundancies, drainKeyboardBuffer,
  xlahn). Algorithm, labels and GOTOs unchanged.
- Tests/: GameDriver-based regression harness — drives the program in
  crtbasic for 19 formulas, verifies truth columns against an
  independent Python oracle and byte-diffs full 8x8-cell text dumps
  against the baselines in expected/. Validated pixel-identical
  against real QB45 in DOSBox.

4 weeks agodocs: caption all screenshots and screencasts with program context
Svjatoslav Agejenko [Sun, 30 Aug 2026 01:16:24 +0000 (04:16 +0300)]
docs: caption all screenshots and screencasts with program context

- Every gallery image and video in all 16 org files now carries a
  caption paragraph below it, written from the corresponding program
  source (algorithms, parameters, controls, exit conditions)
- Fix broken media links left by the capture renaming (old
  "screenshot, N.png" / "<name>.png" targets now point at the
  "<Program> - Screenshot N.png" / "- Screencast N.mp4" files):
  Interferogram, 3D graph, Galaxy explorer, Maze explorer,
  Game of life, Truth table, Multiplication trainer,
  Sine computation, Lottery, Windowing system, Mouse driver
- List previously unlisted captures: 3D graph screenshots 0/1 +
  screencast, Galaxy/Maze explorer screencasts, Multiplication
  trainer screencast, mousedrv native-res screenshot, school-clock
  electronics photos (v1 README + v3 tutorial)
- Add new gallery sections: Pressed key test (Misc), and a Tutorial
  category with the qsort3 quicksort visualization

4 weeks agochore: rename captures to program-name scheme, tweak two demos
Svjatoslav Agejenko [Sat, 29 Aug 2026 23:00:22 +0000 (02:00 +0300)]
chore: rename captures to program-name scheme, tweak two demos

- Replace "screenshot, N.png" / "screenshot.png" captures with
  "<Program> - Screenshot N.png" and add screencast mp4s (Game of
  life, Lottery, 3D graph, Interferogram, truth, mousedrv)
- mousedrv.bas: print button status every frame instead of only when
  pressed — useful now that held buttons report correctly
- 3D graph.bas: SOUND 0, .5 at the start of each nait3d frame

4 weeks agorefactor(mouse-driver): slim qbext TSR, ungate programs, refresh media
Svjatoslav Agejenko [Thu, 27 Aug 2026 22:19:07 +0000 (01:19 +0300)]
refactor(mouse-driver): slim qbext TSR, ungate programs, refresh media

- qbext: 506 to 234 bytes — drop the unused update counter, inline the
  startup banner into the source, add build.sh; index.org rewritten to
  document the minimal 8-byte shared-memory protocol
- Galaxy/Universe/Maze explorer and Swapping 3D engine gated all mouse
  reads on the removed counter byte (getByte(8)) and silently froze
  with the new driver — drop the gate, read-and-reset every frame
- recapture showcase media as CRT Basic screencasts/screenshots
  (mp4/png replacing webm/png); rename Windowing system.bas to
  wsystem.bas

5 weeks agodocs(site): add CUSTOM_ID anchors, fix links, refresh media
Svjatoslav Agejenko [Sat, 22 Aug 2026 16:32:56 +0000 (19:32 +0300)]
docs(site): add CUSTOM_ID anchors, fix links, refresh media

- Add kebab-case :CUSTOM_ID: slugs to headings across all index.org
  pages so exported HTML gets stable, readable anchor ids
  (index.html#fractals instead of org-generated ids)
- Replace fragile [[id:UUID]] in-page links with slug-based [[#slug]]
  links (LPT driver API table, root index overview)
- Fix "Back to BASIC applications collection" links pointing one
  directory level too shallow in category pages
- Fix Miscellaneous 3D demos link pointing to the Space page, and the
  duplicated :ID: UUID shared by the Games and Math sections
- Replace stale .png/.webm media references with recaptured
  "- Screenshot 0.png" / "- Screencast 0.mp4" files; embed videos via
  HTML5 <video> blocks
- Re-export Automated school clock v1 README.html with the current
  Org HTML exporter
- Include *.mp4 in the Tools/Update web site rsync filter
- Document the CUSTOM_ID convention in AGENTS.org

5 weeks agodocs: recapture gallery media and sync all index pages
Svjatoslav Agejenko [Sat, 22 Aug 2026 15:28:51 +0000 (18:28 +0300)]
docs: recapture gallery media and sync all index pages

- Replace legacy .webm/.png captures with '<name> - Screencast N.mp4'
  and '<name> - Screenshot N.png' files across 2D GFX, 3D GFX, Games,
  Math, Miscellaneous, Networking and Tutorial
- Point every index.org video/image reference at the new captures;
  sections whose screenshots were recaptured as screencasts now embed
  video blocks
- Fix broken source links: Bouncing cubes wrong directory prefix,
  copy-pasted '!.bas' links in Galaxy/Universe explorer, Alarm comma
  filenames, Pomppu Paavo moved into its own subdirectory
- Add 'Back to BASIC applications collection' parent link to all 13
  topic pages
- worm.bas: guard tail/head ring-buffer pointers against out-of-range
  access for dead or overgrown worms
- Stars.bas: drop spurious totalStars increment in galaxy creation
- Anaglyph.bas, Tiled room.bas: emit SOUND 0, .5 at main loop start

5 weeks agodocs(2d-gfx): recapture fractals, spirals and textures media
Svjatoslav Agejenko [Sat, 22 Aug 2026 10:59:33 +0000 (13:59 +0300)]
docs(2d-gfx): recapture fractals, spirals and textures media

- Replace old .webm/.png media in Fractals, Spirals and Textures with
  recaptured "- Screencast 0.mp4" and "- Screenshot N.png" files
- Update the three index.org pages to reference the new captures
- Merge the two-image "Sphere forming spiral" section into a single
  screenshot (only one stage was recaptured)
- Remove stale Textures/logo.png

5 weeks agodocs(animations): recapture screencasts as mp4 and update index page
Svjatoslav Agejenko [Sat, 22 Aug 2026 10:48:58 +0000 (13:48 +0300)]
docs(animations): recapture screencasts as mp4 and update index page

- Replace all .webm screencasts with recaptured "- Screencast 0.mp4"
  versions showcasing new CRT Basic capabilities
- Update index.org video references to the mp4 files and show the new
  Tree screenshot instead of a video
- Add missing sections for circular patterns, sun&eart, maze, matrix2
  and mkcircle
- Add mkcircle.bas source

5 weeks agoinitial commit
Svjatoslav Agejenko [Thu, 20 Aug 2026 21:21:24 +0000 (00:21 +0300)]
initial commit