Skip to content

UltimateBasic 64 1.5.2

Choose a tag to compare

@zstarczali zstarczali released this 15 Aug 20:04
· 122 commits to main since this release
8390576

Ultimate Basic v1.5.2 – Release Notes

2026-08-15 – Readable assembly codegen listings

  • Added the --asm build option:
    ub build demo.ub --asm
    A successful build writes demo.asm next to the selected .prg output.
  • The listing is generated from compiler metadata rather than being only a bare
    disassembly of the completed PRG.
  • UB statement boundaries are retained as comments alongside their emitted code.
  • Zero-page variables, arrays, subroutines, BASIC labels, relative branches, and
    in-program JMP/JSR targets receive readable symbols or generated labels.
  • Each instruction includes its final C64 address and exact machine-code bytes.
  • Compiler-generated helpers are included in final memory order, while unknown
    opcodes are preserved as .byte directives.
  • Helper entry points now use descriptive ub_helper_* labels.
  • Known data regions (DATA, maps, sprite/character definitions, lookup tables,
    incbins, SID and Koala payloads) are emitted as named .byte blocks instead of
    being disassembled as instructions; long zero gaps use .fill.
  • Output uses reassemblable KickAssembler syntax, including .label constants and
    a valid * = origin program counter directive.
  • Added automated listing tests and full README.md, MANUAL.md, CLI-help, and
    developer-guide documentation.

Ultimate Basic v1.5.1 – Release Notes

2026-08-15 – Koala Painter image import

  • Added compile-time loading of standard and raw Koala Painter images:
    koala load "picture.kla"
    koala show
    koala hide
  • Added file, memory-layout, and SID-conflict diagnostics plus emulation-backed
    tests and full manual documentation.

2026-08-15 – Character tile maps

  • Added compile-time loading and validation of self-describing .ubmap files:
    map load "level.ubmap"
    VisualAssembler me-map .bin exports are also accepted directly, without an
    .ubmap conversion step.
  • Added 40x25 viewport rendering from arbitrary map origins:
    map draw map_x, map_y
    Character codes go to $0400 and optional per-cell colors go to $D800.
  • Added writable runtime access with map_tile(), map_color(), map set, and
    map color, allowing game logic and destructible maps without reloading data.
  • Added normal and multicolor character-map modes. Multicolor maps configure
    $D016 MCM and the three shared colors in $D021-$D023.
  • Documented the byte-exact UBMP v1 format, flags, row-major arrays, viewport
    constraints, and charset relationship in MANUAL.md and CLAUDE.md.
  • Added emulation-backed tests for normal/multicolor setup, screen and color-RAM
    rendering, tile/color mutation and queries, and invalid-file diagnostics.

2026-08-12 – Debug symbol exports

  • Added side-effect-free software bounding-box collision detection:
    var hit = box_hit(l1, t1, r1, b1, l2, t2, r2, b2)
    It returns 1 for overlapping or edge-touching inclusive AABBs and 0 otherwise,
    without reading or clearing the VIC-II $D01E/$D01F collision registers.
  • Extended sprite_frame with an optional animation frame expression:
    sprite_frame id, base_addr, frame
    Consecutive frames occupy 64-byte slots; the original two-argument syntax is
    unchanged and remains backward compatible.
  • Added emulation-backed integration tests for overlap, separation, touching edges,
    and runtime animation-frame pointer selection.
  • Added the --debug build option:
    ub build demo.ub --debug
    A successful build now writes three debugger files next to the .prg, using
    the output file's stem.
  • Added KickAssembler-compatible .sym export. It can be imported by assembler
    source and contains resolved symbols in .label name = $address form.
  • Added C64Debugger/RetroDebugger .dbg export in KickAssembler debug-dump XML
    format. It contains the UltimateBasic program segment, source filename, and
    resolved address labels.
  • Added VICE .vs monitor-command export. It contains al C:address .label
    commands and can be loaded with VICE's -moncommands option or ll command.
  • Debug exports include program_start, program_end, zero-page variables,
    arrays, subroutines, and BASIC labels.
  • BASIC labels are now retained with their final machine-code addresses in the
    compiler memory map, making them available to all debug exporters.
  • Symbol names are sanitized for debugger compatibility, and source paths are
    XML-escaped in .dbg output.
  • Added unit coverage for all three symbol syntaxes and documented the new CLI
    option and file formats in README.md, MANUAL.md, and CLAUDE.md.
  • Current limitation: .dbg provides segments and address symbols, but does not
    yet contain instruction-to-source-line mappings for source-level stepping.