Skip to content

VPA-Linux 3.67.5

Choose a tag to compare

@promano7 promano7 released this 22 Aug 18:18
· 144 commits to main since this release
Immutable release. Only release title and notes can be modified.

VPA-Linux 3.67.5 — the settings-menu crash, centred fullscreen and a turn you no longer lose

🇬🇧 English. A maintenance release of the native GNU/Linux build of VGA
Planets Assistant (VPA) 3.67
, the classic client for the play-by-email
strategy game VGA Planets 3. Built from the original Turbo/Borland Pascal DOS
source with Free Pascal — no DOSBox, no dosemu. Star map, ships, planets,
StarBases, messages, and a native, bit-exact PHost combat viewer (replacing
the old DOS-only PVCR.EXE), all running natively on X11/Wayland.

This release is again almost entirely the result of detailed bug reports from
one player — see Acknowledgements below. Its headline fix is a memory
corruption that had been triggered every single time the settings menu was
opened.

Downloads

  • vpa-linux-3.67.5-x86_64.tar.gz — pre-built binary for 64-bit x86 +
    everything you need to run it (VPA.HLP, VPA_RUS.HLP, VPA.MSG,
    DISTTABL.DAT, LITT_VPA.CHR). Start here if you're on a regular PC and
    just want to play. See HOWTO.en.md / HOWTO.es.md for
    setup instructions, including which files from your own VGA Planets
    installation and host you'll still need.
  • vpa-linux-3.67.5-aarch64.tar.gz — pre-built binary for 64-bit ARM
    (Raspberry Pi 3/4/5 and other aarch64 boards), same contents as the x86_64
    package.
  • vpa-linux-3.67.5-src.tar.gz — full source tree for this release,
    cleaned of DOS-era build artifacts. See BUILD.en.md /
    BUILD.es.md to compile it yourself.

Requirements

64-bit Linux (x86_64 or aarch64), X11 or Wayland (via XWayland), and the usual
desktop X11 libraries (libX11, libXext, libXfixes, libXi, libXrandr,
libXxf86vm) — no libXxf86dga needed. Full details in the HOWTO.

Quick start

tar xzf vpa-linux-3.67.5-<arch>.tar.gz      # x86_64 or aarch64
cd vpa-linux-3.67.5-<arch>
chmod +x VPA
./VPA <race> [game-directory]

VPA.HLP must be present in the directory you run VPA from — it's
required to start.

What's new in 3.67.5

  • Opening the settings menus no longer corrupts memory (Ctrl-O / Ctrl-U).
    This is the important one. VPA saves the piece of screen hidden behind a menu
    so it can paint it back afterwards, and it kept the size of that save in a
    16-bit word. In 256 colours the settings menu needs 104204 bytes, which wraps
    around to 38668 in a word: VPA reserved 38 KB and then wrote 104 KB into it,
    overrunning the block by exactly 65536 bytes every time the menu opened.
    The damage surfaced later and anywhere — a crash on the second Enter, a crash
    while saving on the way out, a program that simply died — which is why it took
    a week of heap tracing and a bisection to corner. Under DOS the 16-colour BGI
    packed four bits per pixel and the same save took about 26 KB, comfortably
    inside a word, so the assumption held there and the bug never showed.
  • A crash inside a menu no longer costs you the turn. Separate bug, found
    while chasing the one above. The emergency save that runs when VPA dies needs
    the reserved memory block as its I/O buffer, but menus release that block
    while they are open, so the rescue attempt died too and nothing was written.
    It now re-acquires the block first. Your turn survives even when VPA doesn't.
  • Edit file in the settings menus opens a real editor. It was still
    trying to run edit.com, the MS-DOS editor, and after failing it left the
    program with no window, waiting forever for a keystroke that could never
    arrive — a freeze, not a crash. It now uses your own editor ($VISUAL, then
    $EDITOR), falling back to nano and then vi, and the menu line shows
    which one it will use. Note it needs VPA to have been started from a terminal.
    Editing also reloads the file you actually edited; before, it always reloaded
    VPAHELP.INI instead.
  • Fullscreen is centred. With VPA_SCALE=fullscreen the picture sat in the
    top-left corner with all the leftover space in one black band on the right,
    which is uncomfortable on a large or curved screen. It is now centred, with a
    narrower band on each side. VPA is a 4:3 program, so on a widescreen monitor
    those bands are unavoidable without distorting the image. Mouse coordinates
    follow the picture, so clicks land where you point.
  • Ctrl-+ and Ctrl-- work again (jump to last / first turn). 3.67.4 fixed
    one of the four ways of pressing them; the other three still did nothing. They
    are now handled by looking at the character rather than the key code, so they
    work from the numeric keypad and from the main row alike, on any keyboard
    layout.
  • The right panel is no longer drawn 32 pixels low after the fleet report
    (Ctrl-F11).
    Leaving the report skipped restoring a drawing setting, and the
    panel was painted below its place until the next full redraw. Invisible under
    DOS, where a video-mode call at the end reset that setting by accident — a
    call that does nothing in this port.
  • The statistics graph is readable (Ctrl-F10). The first series was drawn
    in dark blue on a black background, and so were its name in the legend and its
    value in the table above. All three now use light, mutually distinguishable
    colours.
  • Numeric settings step sensibly. Pressing Enter on StickyMouseRange in
    the Ctrl-O menu added 1000 at a time — a step that only makes sense for
    MaxMoney — so a pixel radius of 2 jumped to 1002, a value that leaves the
    mouse stuck all over the screen and the program looking dead. Each numeric
    entry now has its own range and step; StickyMouseRange goes up one at a time
    to 20, and the .INI file still accepts up to 100.
  • Video-mode restoration is honest. Seven leftover calls asked to restore a
    DOS 16-colour mode this port can never grant, so they silently did nothing.
    They now restore the mode actually in use, and only when the program really
    left graphics mode.
  • New example launch script. Added an example launch script in
    EXAMPLES/game_launch.sh.
  • For developers: a heaptrc build target (make heaptrc) that links Free
    Pascal's heap checker.
  • Version bumped to 3.67.5 in the console banner and the graphical intro
    screen.

Acknowledgements

Once again nearly every fix in this release came from Alexander Alexandrovich
Bezborodov
(Александр Александрович Безбородов), AKA "at0mix".
He reported each problem with enough detail to reproduce it, sent screenshots,
terminal traces and full heap-checker logs, patiently ran a series of instrumented
builds that each answered one question and nothing else, and tested every candidate
fix across three different machines. The memory corruption at the heart of this release
had been in VPA for as long as the Linux port has existed and would still be
there without him. Спасибо, Александр!

Known limitations

A thorough side-by-side comparison against the DOS version under DOSBox is
still pending. One cosmetic, by-design difference remains, documented in the
README: the combat viewer's first decimal digit can differ by ±0.5 from
PVCR.EXE due to a fractional-accumulation difference between the classic host
and PCC2ng's algorithm — the integer part and the final result always match.

Under Wayland the mouse cursor is grabbed but not released, because all the
cursor handling is X11 code running through XWayland, and Wayland deliberately
does not let a client grab and release the pointer that way. Selecting an X11
session works correctly in the meantime. The proper fix — separate X11 and
native Wayland graphics backends behind a common internal API — is planned but
is a substantial piece of work.

Credits & license

Original VPA by Alex V. Ivlev (1993–96) and later maintainers. Native PHost
combat viewer derived from PCC2ng by Stefan Reuther. Cyrillic console
font from the Linux kbd/console-setup fonts (public domain). This Linux
port © 2026 Pablo Romano Gómez. Multi-license breakdown and full texts in
LICENSE.md.


🇪🇸 Español. Versión de mantenimiento de la compilación nativa para
GNU/Linux de VGA Planets Assistant (VPA) 3.67, el cliente clásico del juego
de estrategia por correo VGA Planets 3. Reconstruido a partir del código
original en Turbo/Borland Pascal para DOS con Free Pascal — sin DOSBox, sin
dosemu. Mapa estelar, naves, planetas, StarBases, mensajes, y un visor de
combate PHost
nativo y bit-exacto (sustituyendo al antiguo PVCR.EXE, solo
para DOS), todo funcionando de forma nativa sobre X11/Wayland.

Esta versión es de nuevo casi en su totalidad fruto de los reportes detallados
de un jugador — ver Agradecimientos más abajo. Su corrección principal es
una corrupción de memoria que se producía cada vez que se abría el menú de
configuración.

Descargas

  • vpa-linux-3.67.5-x86_64.tar.gz — binario ya compilado para x86 de 64
    bits + todo lo necesario para ejecutarlo (VPA.HLP, VPA_RUS.HLP, VPA.MSG,
    DISTTABL.DAT, LITT_VPA.CHR). Empieza por aquí si estás en un PC normal
    y solo quieres jugar. Instrucciones en HOWTO.es.md /
    HOWTO.en.md, incluyendo qué ficheros de tu propia
    instalación de VGA Planets y de tu host seguirás necesitando.
  • vpa-linux-3.67.5-aarch64.tar.gz — binario ya compilado para ARM de 64
    bits (Raspberry Pi 3/4/5 y otras placas aarch64), con el mismo contenido que el
    paquete x86_64.
  • vpa-linux-3.67.5-src.tar.gz — árbol de código fuente completo de esta
    versión, ya limpio de artefactos de compilación de la era DOS. Instrucciones
    para compilarlo en BUILD.es.md / BUILD.en.md.

Requisitos

Linux de 64 bits (x86_64 o aarch64), X11 o Wayland (vía XWayland), y las
librerías X11 habituales de cualquier escritorio (libX11, libXext, libXfixes,
libXi, libXrandr, libXxf86vm) — no hace falta libXxf86dga. Detalle completo en
el HOWTO.

Arranque rápido

tar xzf vpa-linux-3.67.5-<arch>.tar.gz      # x86_64 o aarch64
cd vpa-linux-3.67.5-<arch>
chmod +x VPA
./VPA <raza> [directorio-de-partida]

VPA.HLP tiene que estar en el directorio desde el que ejecutas VPA — es
obligatorio para arrancar.

Novedades de la 3.67.5

  • Abrir los menús de configuración ya no corrompe la memoria (Ctrl-O /
    Ctrl-U).
    Esta es la importante. VPA guarda el trozo de pantalla que queda
    tapado por un menú para poder repintarlo después, y llevaba la cuenta del
    tamaño de ese guardado en un entero de 16 bits. En 256 colores el menú de
    configuración necesita 104204 bytes, que en un word se dan la vuelta y quedan
    en 38668: VPA reservaba 38 KB y escribía 104 KB dentro, saliéndose del bloque
    exactamente 65536 bytes cada vez que se abría el menú. El destrozo salía a
    la luz más tarde y en cualquier sitio — un fallo al segundo Intro, un fallo al
    guardar la partida al salir, o el programa muriéndose sin más — y por eso costó
    una semana de rastreo del montón y una bisección acorralarlo. En DOS el BGI de
    16 colores empaquetaba cuatro bits por píxel y ese mismo guardado ocupaba unos
    26 KB, holgado dentro del word, así que allí la suposición se cumplía y el
    fallo nunca se manifestó.
  • Que VPA se caiga dentro de un menú ya no cuesta el turno. Fallo distinto,
    encontrado persiguiendo el anterior. El guardado de emergencia que se ejecuta
    cuando VPA se muere necesita el bloque de memoria reservado como búfer de
    entrada/salida, pero los menús lo sueltan mientras están abiertos, así que el
    intento de rescate también moría y no se escribía nada. Ahora vuelve a pedir
    el bloque antes de empezar. Tu turno sobrevive aunque VPA no.
  • Edit file en los menús de configuración abre un editor de verdad.
    Seguía intentando lanzar edit.com, el editor de MS-DOS, y tras fallar dejaba
    el programa sin ventana esperando eternamente una tecla que ya no podía
    llegar: un cuelgue, no un fallo. Ahora usa tu propio editor ($VISUAL, luego
    $EDITOR), y si no hay ninguno recurre a nano y después a vi, indicando en
    la línea del menú cuál va a usar. Necesita que VPA se haya arrancado desde una
    terminal. Además recarga el fichero que realmente has editado; antes recargaba
    siempre VPAHELP.INI.
  • La pantalla completa está centrada. Con VPA_SCALE=fullscreen la imagen
    quedaba pegada arriba a la izquierda y todo el espacio sobrante se acumulaba en
    una franja negra a la derecha, incómodo en pantallas grandes o curvas. Ahora va
    centrada, con una franja más estrecha a cada lado. VPA es un programa 4:3, así
    que en un monitor panorámico esas franjas son inevitables sin deformar la
    imagen. Las coordenadas del ratón acompañan a la imagen, así que los clics caen
    donde apuntas.
  • Ctrl-+ y Ctrl-- vuelven a funcionar (ir al último / primer turno). La
    3.67.4 arregló una de las cuatro formas de pulsarlas; las otras tres seguían
    sin hacer nada. Ahora se resuelven mirando el carácter en lugar del código de
    tecla, así que funcionan igual desde el teclado numérico que desde la fila
    principal, y en cualquier distribución de teclado.
  • El panel derecho ya no se dibuja 32 píxeles más abajo tras el informe de
    flota (Ctrl-F11).
    Al salir del informe se saltaba la restauración de un
    ajuste de dibujo, y el panel se pintaba fuera de su sitio hasta el siguiente
    repintado completo. En DOS no se veía, porque una llamada de cambio de modo de
    vídeo al final reajustaba ese valor por casualidad — una llamada que en este
    port no hace nada.
  • La gráfica de estadísticas se lee (Ctrl-F10). La primera serie se
    dibujaba en azul oscuro sobre fondo negro, y con ella su nombre en la leyenda y
    su valor en la tabla de arriba. Las tres usan ahora colores claros y
    distinguibles entre sí.
  • Los ajustes numéricos avanzan con sentido. Pulsar Intro sobre
    StickyMouseRange en el menú de Ctrl-O sumaba de 1000 en 1000 — un salto que
    solo tiene sentido para MaxMoney —, así que un radio de 2 píxeles pasaba a
    1002, un valor con el que el ratón queda pegado por toda la pantalla y el
    programa parece muerto. Cada entrada numérica tiene ahora su propio rango y su
    propio paso; StickyMouseRange sube de uno en uno hasta 20, y el fichero
    .INI sigue admitiendo hasta 100.
  • La restauración del modo de vídeo es honesta. Siete llamadas heredadas
    pedían volver a un modo DOS de 16 colores que este port no puede dar nunca, de
    modo que no hacían nada en silencio. Ahora restauran el modo realmente en uso, y
    solo cuando el programa ha salido de verdad del modo gráfico.
  • Nuevo script de lanzamiento de ejemplo. Añadido un script de lanzamiento del
    juego a modo de ejemplo en EXAMPLES/game_launch.sh.
  • Para quien compila: un objetivo heaptrc (make heaptrc) que enlaza el
    comprobador de heap de Free Pascal.
  • Número de versión actualizado a 3.67.5 en el banner de consola y en la
    pantalla de bienvenida gráfica.

Agradecimientos

Una vez más, casi todas las correcciones de esta versión vienen de Alexander
Alexandrovich Bezborodov
(Александр Александрович Безбородов), AKA "at0mix".
Reportó cada problema con el detalle suficiente para reproducirlo, mandó capturas, trazas
de terminal y registros completos del comprobador de montón, ejecutó con paciencia
una serie de compilaciones instrumentadas en las que cada una respondía a una
sola pregunta, y probó cada arreglo candidato en tres máquinas distintas. La
corrupción de memoria que centra esta versión llevaba en VPA desde que existe el
port a Linux y seguiría ahí sin él. ¡Спасибо, Александр!

Limitaciones conocidas

Queda pendiente una comparación exhaustiva contra la versión DOS bajo DOSBox. Se
mantiene una diferencia cosmética y por diseño ya documentada en el README: el
primer decimal del visor de combate puede diferir en ~±0.5 respecto a
PVCR.EXE, por cómo cada uno acumula la fracción sub-unidad de forma distinta
(host clásico vs. algoritmo de PCC2ng) — la parte entera y el resultado final
siempre coinciden.

Bajo Wayland, el cursor del ratón se captura pero no se libera, porque toda
la gestión del cursor es código X11 funcionando a través de XWayland, y Wayland
no permite deliberadamente que un cliente capture y suelte el puntero de esa
manera. Mientras tanto, elegir una sesión X11 funciona correctamente. La
solución de fondo — backends gráficos separados para X11 y Wayland nativo tras
una API interna común — está prevista, pero es un trabajo de envergadura.

Créditos y licencia

VPA original de Alex V. Ivlev (1993–96) y mantenedores posteriores. Visor de
combate PHost nativo derivado de PCC2ng de Stefan Reuther. Fuente
cirílica de consola procedente de las fuentes kbd/console-setup de Linux
(dominio público). Este port a Linux © 2026 Pablo Romano Gómez. Desglose de
licencias y textos completos en LICENSE.md.