Skip to content

Releases: xahmol/vdcmaniac

v1.0.1 - Real-hardware fixes, credited to Tokra

Choose a tag to compare

@xahmol xahmol released this 26 Aug 11:03

A real-hardware feedback pass on v1.0.0.

Thanks to Tokra

Every fix in this release was prompted by Tokra (Akronyme Analogiker)
live-testing v1.0.0 on his own C128 and RGBtoHDMI setup after release,
and reporting back in real detail -- VICE-monitor register-dump
comparisons against his own working "VDC Mode Mania" build, a direct
screenshot review of a raster-timing routine, and real-monitor
observations from years of his own VDC demo work. Thank you for the time
spent testing and the precision of the reports -- this release exists
because of that feedback.

Fixes

  • VSYNC (register 7) off-by-one on VDC-IMONO/VDC-IM800/VDC-ITFLI.
    Tokra reported RGBtoHDMI interlace fields swapped for the mono modes; a
    live VICE-monitor io d600 comparison against his own build (his own
    idea) found this project's VTOTAL - VADJUST derivation undershooting
    his real literal values by exactly 1 for three of the four interlaced
    modes he checked (VDC-IHFLI's own value already matched). Fixed to his
    own constants -- the ITFLI fix was missed in this tag's first pass and
    folded in shortly after; see "Amendment" below.
  • REFRESH (register 36) boot-baseline leak on the same two modes,
    found in the same comparison pass -- a recurrence of this project's
    own known "boot-baseline register leak" bug class on a register that
    hadn't been added to the capture/restore set yet.
  • raster_calibrate()'s CIA-timer sync-point bug. Tokra reviewed a
    screenshot of the calibration loop directly and identified that the
    CIA timer started counting before any known VBlank-aligned reference
    point, letting the first sample land anywhere in a frame -- fixed by
    establishing that reference point before the timer starts. Cross-
    validated afterward against an independent real-hardware measurement
    ("Risen from Oblivion VDC v2", Crest/Oxyron 2006) landing on the exact
    same value on the same machine.
  • Title screen raster bar retuned for the small timing shift the
    calibration fix introduced.

New

  • Live VSYNC nudge (cursor up/down) on the four interlaced-colour/
    mono showcases, added directly on Tokra's own observation that
    "interlace is super fiddly -- some displays may actually need the +1
    value," and that his own original demo already offers exactly this
    live adjustment. On-screen key hints now show it (and the existing
    +/- colour cycle) on the relevant info screens.
  • Genuine diagonal panning in VDC-PANORAMA 2D's scripted tour -- two
    of its four legs are now real simultaneous-axis diagonal glides across
    the full image, not just alternating vertical/horizontal edge traces.
  • Build version + timestamp now shown on the system diagnostics
    screen.

Credits

Full, dedicated thanks to Tokra added to include/defines.h's own
credit block, this changelog, and the in-demo end-credits scroller --
alongside newly added credits for VDC SpectruMania and Colour
Spectrum
(both C128 VDC takes on ZX Spectrum graphics that inspired
VDC Spectrum mode) and Risen from Oblivion VDC v2 (whose own
VDC-timing "system analysis" screen inspired raster_calibrate()),
which were missing from the v1.0.0 credit block.

Amendment (same tag)

A re-audit of the full Messenger thread with Tokra found his VDC-ITFLI
report ("you use 99 while I use 98 for reg 7, decimal") hadn't actually
been applied in the first fix pass, despite being recorded as done.
Fixed and folded into this same v1.0.1 tag/release rather than cut as a
separate patch version, since the original hadn't been widely distributed
yet. If you already downloaded v1.0.1 before this note, re-download --
VDCR_VSYNC for VDC-ITFLI changed from 0x63 (99) to 0x62 (98).

Getting started

  1. Download vdcmaniac_v1.0.1.zip below.
  2. Extract it -- it contains vdcmaniac.d81 (the disk image) and
    README.pdf.
  3. Write the D81 to a real 1581 (or equivalent, e.g. an Ultimate II+), or
    mount it directly on an Ultimate II+ / in VICE
    (x128 -drive8truedrive vdcmaniac.d81).
  4. Boot with only that drive active on the IEC bus, at device 8.

Full requirements, known issues, and build-from-source instructions are
in the README.

v1.0.0 - Initial public release

Choose a tag to compare

@xahmol xahmol released this 22 Aug 11:25

A from-scratch Commodore 128 VDC (8563/8568, 80-column chip) demo, written
in C with the Oscar64
cross-compiler -- showcasing the VDC's rare 64KB-VDC-RAM bitmap modes
(480x252 colour up to 800x600 monochrome) with real sourced artwork,
procedural effects, and a fastloader-backed asset pipeline.

This is the first public release. Every mode/section has been verified on
real Commodore 128D/128DCR hardware with an Ultimate II+, not just in
emulation.

vdcmaniac

Showcase modes

  • VDC-FLI (480x252, colour, non-interlace) + VDC-HFLI (640x400,
    colour, non-interlace) -- 3 Van Gogh paintings, 3 Hokusai woodblock prints.
  • VDC-IFLI: VDC-IHFLI (640x480, colour, interlace) + VDC-ITFLI
    (640x576, colour, interlace) -- 6 CC-licensed photographs.
  • VDC-mono: VDC-IMONO (720x700, interlace) + VDC-IM800 (800x600,
    interlace) -- 6 more photographs, one the author's own cat.
  • VDC Spectrum (256x192, doubled to 512x192) -- 3 real ZX Spectrum
    demoscene graphics-competition entries, decoded from genuine .scr screen
    dumps.

See the README's own Screenshots section
for every picture with full attribution.

Procedural effects

  • Plasma -- classic sine-table interference pattern, rendered directly
    into VDC bitmap memory.
  • Colour rotation -- palette/attribute cycling over a fixed bitmap.

VDC-SCROLL family

Three scripted-scroll sections sharing one menu row, built on a
real-hardware-verified technique for VDC register 27 (ROWINC) that
required root-causing an undocumented chip-level addressing quirk:

  • VDC-VSCROLL -- vertical scroll through a 640x798 tall bitmap.
  • VDC-PANORAMA -- horizontal pan through a bitmap wider than the
    display, via R27 + hardware HSCROLL.
  • VDC-PANORAMA 2D -- both combined into a diagonal 4-corner tour of a
    bitmap both wider and taller than the display.

Engine

  • Custom raster-IRQ trampoline on the CPU's hardware interrupt vector,
    driving every raster-bar effect and, via a foreground fallback, SID
    music playback.
  • Krill's fastloader with on-the-fly TSCrunch decompression for every
    asset load -- no raw picture files ship on the disk.
  • From-scratch VDC mode/register library (include/vdc_core.c) and its
    own picture converter (tools/vdc_convert.py).

Documentation

  • ARCHITECTURE.md, vdc_reference_manual.md, raster_lib_manual.md,
    krill_manual.md -- full internal design and VDC-register reference.
  • A PDF build of the README (make docs, requires pandoc) is included in
    this release's ZIP.

Requirements

  • Krill's fastloader needs exclusive use of the IEC bus (only the drive
    holding the demo disk, at device 8).
  • Only a D81 disk image is supported (SD2IEC is not -- cycle-exact IEC
    timing is required). See the README's own Requirements/Known issues
    sections for full detail, including monitor-compatibility notes per VDC
    mode.

Getting started

  1. Download vdcmaniac_v1.0.0.zip below.
  2. Extract it -- it contains vdcmaniac.d81 (the disk image) and
    README.pdf.
  3. Write the D81 to a real 1581 (or equivalent, e.g. an Ultimate II+), or
    mount it directly on an Ultimate II+ / in VICE
    (x128 -drive8truedrive vdcmaniac.d81).
  4. Boot with only that drive active on the IEC bus, at device 8.

Full requirements, known issues, and build-from-source instructions are in
the README.