Skip to content
shitamoPublic
forked from nakatamaho/vaeg

About

A fork of a PC-88VA emulator focused on porting it to SDL2 for macOS, Windows MinGW, and Linux.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

3,144 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

88VA Eternal Grafx

build

88VA Eternal Grafx, or vaeg, is a maintained fork developed by Shinra from the abandoned project-vaeg PC-88VA emulator lineage, itself derived from Neko Project II. This fork is an actively maintained continuation of that lineage, while the original project-vaeg repository remains a useful historical reference.

VAEG

Sections

Section Description
Features Portable platform support and major features
News Release notes and project updates
Current Frontend Portable SDL2 frontend overview
ROM Dump ROM names, checksums, and dump notes
How to Make a Utility Disk or SASI HDD Utility FDD and SASI image creation
How to Read and Write Files on FDD and SASI HDD Images Image file operations
Demos Ready-to-use demo disk images
Runtime Files and Saved State Configuration and saved-state paths
Quick Build Short build commands
PC-88VA Hardware Notes Emulated hardware summary
PC-88VA I/O Port Map I/O address blocks and port references
Text Encoding Policy Source encoding rules
Archived Reference Tier Historical source information
Documentation Map Guides and modernization notes
Status Current project status
License Status License and redistribution notes

Features

vaeg has the following features:

  • builds and runs natively on modern Windows, Linux, and macOS systems;
  • V1/V2 and N modes: PC-8801 software (N88-BASIC V1/V2, N88-DISK BASIC, uPD3301 text with semigraphics, graphics, buzzer and port sound) and N-BASIC run in the VA's compatibility modes, selected under 模擬 > 起動;
  • PC-8801 and PC-8001 machines started from user-supplied ROMs in extra/ (the VA ROM set is still needed);
  • PCG-8100/8800 user-defined characters and three-voice tones in V1/V2 mode (optional);
  • D88 files holding several disks: disk A in drive 1 and disk B in drive 2 on opening, and any disk chosen from the FDD menu;
  • separate recent folders for the FDD, HDD and tape file windows;
  • cassette tape images (.cmt, .t88, or inside ZIP/7z/LZH) loaded and recorded from the Tape menu or --tape/--tape-save, with tape sound, for V1/V2 BASIC (a vaeg extension; the VA has no cassette interface);
  • cursor keys assignable to the keypad 8/4/6/2, a joystick or the mouse (the latter two while that device is on the controller port, which is empty by default) (Key > カーソル割り当て), and F12 assignable to COPY, STOP, keypad = or ,, PC, full speed, screenshot or pause;
  • 8087 emulation, enabled by default, with its transcendental instructions on the host x87 on x86 hosts;
  • partial PC-9801-55-compatible SCSI support;
  • EMS support;
  • main-memory and BMS compatibility;
  • host text copy and paste;
  • more hardware-like sound through ymfm;
  • Kana/Romaji input support;
  • US keyboard layout support;
  • more faithful uPD9002 instruction support, tested against the SingleStepTests V20 corpus;
  • a uPD70008-compatible Z80 emulation path for BRKEM, using the pinned MIT-licensed SuzukiPlan Z80 emulator; the former Z80 core with unclear licensing is no longer part of the active tree; BRKEM2 starts the V1/V2 modes;
  • optional on-screen graphics and text-sprite diagnostics;
  • state save slots with thumbnails, a front-panel lamp bar, and a screen turned 90 degrees right;
  • CRT screen effects via librashader (disabled by default);
  • lossless FFV1/PCM MKV movie recording, from the native guest picture or the displayed client; optional background MP4 conversion through the OS on Windows/macOS (no MP4 compression in Linux public builds);
  • VA/VA2-calibrated native and compatible-mode CPU timing, H/S selection, and model-specific SGP timing and CPU/SGP contention;
  • five-generation quick saves on F12 and quick loads on Shift+F12, when that F12 assignment is selected;
  • an independently switchable machine/mode/clock information bar;
  • substantially reorganized and simplified code;
  • a greatly reduced PC-98-only codebase.

News

2026-10-25 - Rel.20261025

Rel.20261025 covers the commits since Rel.20261017 through M137: VA/VA2-calibrated CPU and SGP timing, corrected V1/V2 H/S execution and text banking, machine-specific hidden-text and reverse-display behaviour, lossless movie recording, background OS MP4 conversion on Windows/macOS, five-generation quick saves, a machine-information bar, and improved recent-boot and input controls. The controller port is now empty (なし) by default; select a joystick or mouse explicitly when needed. PR #57's forced-slice-exit I/O accounting fix is not included.

The four emulator screenshots below show the PC-8801mkIISR demonstration booted as a VA (top row) and as a PC-8801mkIISR (bottom row). The maintainer confirms that both match the respective real machines: the VA retains blank key blocks and draws black lines on white; the PC-8801mkIISR has no blank blocks and draws white lines on black.

PC-8801mkIISR demonstration title booted as a VA
VA boot: demonstration title, including the blank key blocks
PC-8801mkIISR demonstration line drawing booted as a VA
VA boot: black lines on white
PC-8801mkIISR demonstration title booted as a PC-8801mkIISR
PC-8801mkIISR boot: demonstration title, without blank blocks
PC-8801mkIISR demonstration line drawing booted as a PC-8801mkIISR
PC-8801mkIISR boot: white lines on black

See Rel.20261025 changes for the complete release notes. Public builds enable recording; Linux public builds do not include MP4 compression.

2026-10-17 - Rel.20261017

Rel.20261017 adds the V1/V2 and N modes: PC-8801 software and N-BASIC run in the VA's compatibility modes, and PC-8801 and PC-8001 machines start from user-supplied ROMs placed in extra/. It also adds the 8087 (enabled by default), the PCG-8100/8800, cassette tape images for V1/V2 BASIC (load and record, with tape sound), cursor keys assignable to the keypad 8/4/6/2, reorganized Japanese menus with state slots and thumbnails, separate recent folders for the FDD, HDD and tape windows, and a self-booting SGP demo disk. No PC-8801 or PC-8001 ROMs are included.

D88 files that hold several disks, as many PC-8801 games are distributed, are supported: open one in FDD1 and its disk A goes into drive 1 and disk B into drive 2, ready to play; FDD > FDD1 ディスク and FDD2 ディスク list every disk by the name stored in the file for the disk changes a game asks for, and the disks in use are kept over resets, restarts and save states.

PC-8801mkIISR demonstration in V2 mode
PC-8801mkIISR demonstration in V2 mode
N88-BASIC V2 in V2 mode
N88-BASIC V2 in V2 mode
N-BASIC in N mode
N-BASIC in N mode
Loading a cassette tape image in V1/V2 BASIC
Loading a cassette tape image in V1/V2 BASIC

See Rel.20261017 changes for the complete notes.

2026-09-21 - 8087 support

8087 support will be available in the upcoming release.

VA2/VA3 with 8087 Mandelbrot demo

2026-09-08 - Rel.20260908

Rel.20260908 adds optional CRT screen effects through librashader. The effect is disabled by default; enable it from the display settings when you want the CRT look. On Windows, native CRT presentation requires DirectX. A 4K display with an integer scale of x3 or larger is recommended. At lower resolutions or x1/x2 scales, the RGB mask and scanline sampling can produce visible moiré; use a larger integer scale or standard SDL presentation when necessary.

CRT effect on
CRT effect on
CRT effect off
CRT effect off
CRT effect setting
CRT effect setting

See Rel.20260908 changes for the complete notes.

2026-08-30 - Rel.20260830

Rel.20260830 focuses on VA implementation cleanup, compatibility hardening, and everyday SDL frontend usability. It consolidates the native VA and SGP paths, refines SCSI/BMS development-media workflows, and adds guest-only PNG screenshot capture, selectable F12 actions, Pause, and menu/input polish. See Rel.20260830 changes for the complete notes and the current hardware-validation boundaries.

NEON4 port running under VAEG

NEON4 port for PC-88VA. The original version ran on a higher-clocked system, so it is a little slower on PC-88VA.

2026-08-14 - Rel.20260814

Rel.20260814 adds reproducible CP/MVA/uPD70008 support, the configurable PC-88VA EMS Board, native VA BMS defaults (16MB at 01D0H with 640KB main RAM preserved), and the EMMVA/SQEMM98/RDEMS development-disk workflow. It also includes SDL keyboard and Windows JIS input fixes, host-drive selection, and 98-font and effective-clock GUI diagnostics. Windows JIS keyboard mode can enter _ from the ろ key again. Release packages include matching HOSTFAT.SYS and SQEMM98.SYS drivers with licenses, instructions, and checksums. See Rel.20260814 changes for setup notes and the current MSE /B limitation.

BMSDRV and SCSI driver running under VAEG

Actual SDL-rendered VAEG capture: BMSDRV initializes at 01D0H with 0081H usable BMS banks in the 16MB configuration, while SCHD detects the virtual SCSI drive D: at 159MB of guest-usable capacity from the 160MB image.

EMMVA and SQEMM98 running under VAEG

Actual SDL-rendered VAEG capture: EMMVA and SQEMM98 initialize successfully and report 31.0 MB of guest-usable EMS from the configured 32MB board.

2026-08-06 - M76: uPD70008-compatible Z80 emulation and CP/MVA

M76 brings the uPD70008-compatible Z80 emulation path to a working state. The pinned suzukiplan/z80 backend now runs the CP/MVA path used by the PC-88VA environment, while the compatibility layer remains separate from the uPD780C FDD CPU path. CP/MVA reaches the CP/M A> prompt and can list and exit from the generated tools disk.

See the CP/MVA setup guide for the complete procedure.

CP/MVA running under VAEG

Actual SDL-rendered VAEG capture from a headless CP/MVA run: the generated disk is mounted, DIR lists the CP/M tools, and EXIT returns to PC-Engine.

CP/MVA tools running under VAEG

2026-08-05 - Rel.260805

Rel.260805 adds the PC-9801-55-compatible SCSI workflow, two-target SCSI attachment, SCSI/SASI file lifecycle checks, and the read-only HOSTFAT.SYS host-folder drive. The release archive includes the matching HOSTFAT.SYS; the old HOSTDRV.SYS name is not used.

User setup instructions: SCSI support, HOSTFAT, and the complete Rel.260805 changes.

2026-07-15 - Z80 compatibility migration

The active PC-88VA subsystem now uses the pinned MIT-licensed suzukiplan/z80 core through vaeg's BSD-2-Clause compatibility wrapper. The shared Z80 compatibility backend serves both the uPD70008-compatible main CPU mode and the uPD780C FDD subsystem. The independently authored BSD-2-Clause disassembler is the production FDC disassembler. The former M88/cisc-derived Z80 implementation has been removed from the current tree after wrapper, conformance, state, differential, public, and private-system gates; project history remains unchanged.

2026-07-13 - Rel.260713

Rel.260713 substantially improves everyday usability. Highlights include JIS physical and US keytop keyboard modes, Roman-Kana input, host clipboard paste, relative mouse input, disk-image and ZIP/7z/LZH drag and drop, blank D88/IMG creation, SASI HDD controls, resizable display effects, and CPU/SGP speed and pacing controls. Windows is distributed as a static single-file executable, with the frontend font, startup image, and icon embedded.

Important ROM upgrade note: VA and VA2/VA3 now use separate model ROM sets. VA keeps the unsuffixed names, while VA2/VA3 requires vadic_va2.rom, vafont_va2.rom, varom00_va2.rom, varom08_va2.rom, and varom1_va2.rom. VA2/VA3 does not fall back to the VA files, and the *_va2.rom files have different contents and checksums; do not create them by merely renaming the VA ROMs. See CHANGES.20260713.md for the complete upgrade notes.

2026-07-08 - First portable release

Rel.260708 was the first release of the maintained portable fork. It established the active CMake, SDL2, and Dear ImGui build for Windows-MinGW, Linux, and macOS after completion of the phase-2 portability work.

PC-88VA demonstration running under VAEG

Current Frontend

The active frontend is the SDL2 + Dear ImGui build under sdl2/. It targets:

  • Windows via MSYS2 / MinGW-w64
  • Linux via CMake, Ninja, SDL2, gcc or clang
  • macOS release builds with pinned static SDL2, or development builds via MacPorts SDL2 under /opt/local

The executable is named vaeg.

vaeg [options]

Common user-facing command-line options are:

Area Option Purpose
Machine --model va or --model va2 Select the VA or VA2/VA3 machine model
ROMs --roms PATH Use ROM files from an explicit directory
Sound --fmbackend np2 or --fmbackend ymfm Select the FM sound backend
Sound --fmsound opn or --fmsound opna Select the VA sound hardware
Sound --samplerate RATE Select 11025, 22050, or 44100 Hz output
Sound --soundbuffer MS Set the sound buffer from 40 to 1000 ms
Sound --mute Start with sound muted
FDD --fdd1 PATH, --fdd2 PATH Mount a D88 or raw floppy image
FDD --fdd1-image N, --fdd2-image N Choose disk N (from 1) of a D88 file holding several disks
Tape --tape PATH, --tape-save PATH Load a .cmt/.t88 tape, or record to a raw tape image (V1/V2)
SASI --sasi1 PATH, --sasi2 PATH Mount a SASI HDI image
HOSTFAT --hostfat-dir PATH Attach a read-only host folder to PC-Engine
Persistence --cfg PATH or --no-cfg Select or disable the configuration file
Persistence --bkupmem PATH or --no-bkupmem Select or disable backup memory
Execution --cpumult N Set CPU execution capacity from 1 to 32
Execution --sgp VALUE Select SGP pacing: model, follow-cpu, or 1 to 16
Execution --nowait Disable host wait/pacing
Execution --frameskip VALUE Select auto, full, 2, 3, or 4 frame skip
Display --fullscreen or --windowed Select the window mode
Display --effect VALUE Select the display effect
Display --rotate none or --rotate right Show the screen unturned or turned 90 degrees right
Display --scaling VALUE Select the display scaling mode
Input --controller none, joystick or mouse What is on the controller port (default: nothing)
Input --keyboard-layout VALUE Select jis, us, or custom keyboard mapping
Information --help or --version Show usage or version information

Use none as a media value to make that slot empty for the session. Positional FDD image arguments are no longer accepted. Run vaeg --help or see the SDL2 frontend command-line reference for diagnostic and advanced options.

These overrides are session-only: they are applied after loading vaeg.cfg and do not replace saved settings unless the setting is changed through the GUI during the run. Invalid combinations such as --model va2 --fmsound opn fail before video, audio, and machine initialization. SASI options also verify that the image is recognized as a complete, usable SASI disk rather than merely checking that it exists. --smoke runs a short headless initialization check and --pacelog prints emulation pacing counters for timing diagnosis. See sdl2/README.md for details.

ROM Dump

Machine ROM images, guest font ROMs, optional mechanical sound WAV files, and operating system disks are not provided by this repository. ROMs must be extracted from hardware you own. Tools such as getromva are included in VAEGTOOL070422.LZH, available from the project-vaeg r080406 release. Use that tool or an equivalent hardware dump tool to read the ROMs; do not create a ROM set by renaming files or by copying ROM bytes from this source tree. The dump timing/read caveats and the recorded size, CRC32, SHA-1, and bank-reference checks are documented in VA ROM dump notes. The host GUI font source is under assets/ and is embedded into every active executable at build time.

Place ROMs beside vaeg or vaeg.exe:

vaeg distribution root/
  vaeg[.exe]
  vadic.rom                 VA
  vafont.rom
  varom00.rom
  varom08.rom
  varom1.rom
  vadic_va2.rom             VA2/VA3
  vafont_va2.rom
  varom00_va2.rom
  varom08_va2.rom
  varom1_va2.rom
  vasubsys.rom              extra FDD subsystem ROM

The VA2/VA3 names match MAME's pc88va2 ROM set in src/mame/nec/pc88va.cpp; VA2 never falls back to the unsuffixed VA names. vasubsys.rom remains a vaeg extra because vaeg runs the uPD780C FDD subsystem that MAME currently leaves unconnected. The frontend checks the executable directory first, then the current working directory as a development fallback.

ROMs of the PC-8801 and PC-8001 families go below the same directory, in extra/<model>/<role>.rom (for example extra/PC-8801MA/n88.rom); see Extra ROMs. vaeg --list-extra-roms lists what was found. The PC-8801 models start in the VA's V1/V2 mode with their own ROMs (PC-8801 machines); the VA ROM set is still needed. ROM files are intentionally absent from source and binary artifacts. At startup, size, CRC32, and SHA-1 are checked against the recorded VAEG ROM identities, including MAME-derived identities for the ordinary ROMs and MAME's disabled vasubsys.rom declaration. VA1 varom00.rom uses the selected local readback reference; if its full SHA-1 differs, VAEG also reports which populated banks 0 through 5 differ and points to the dump notes. Differences produce warnings but do not prevent startup.

How to Make a Utility Disk or SASI HDD

PC-88VA software and utilities such as MSE, PCEPAT, BMS, and EMS are difficult to obtain, inconvenient to update, and often have unclear licensing. Many useful tools are also not self-contained: they require entries in CONFIG.SYS to install drivers or memory managers, and some components must be compiled locally, including EMS and read-only HOSTFAT support. To make setup practical, vaeg provides scripts that assemble a local PC-88VA utility environment from verified public inputs and build the components required for local use.

Provide a commercial, bootable PC-Engine disk that you own (or its D88 image) and an internet connection. The builders download the required utility packages, verify their pinned checksums, and create an untracked utility disk or SASI HDD image. Inputs are shared through ~/.cache/vaeg/auto-generated-pc88va-utility-media/.

To make a bootable utility D88:

tools/pc88va/build-utility-disk.sh \
  --source /path/to/your-pc-engine-boot-disk.d88 \
  --output /path/to/pc88va-development.d88

To make VA and VA2 SASI HDD images:

tools/pc88va/build-sasi-utility-disks.sh \
  --source-va /path/to/your-va-pc-engine-boot-disk.d88 \
  --source-va2 /path/to/your-va2-pc-engine-boot-disk.d88 \
  --output-dir /path/to/pc88va-sasi

How to Read and Write Files on FDD and SASI HDD Images

The Python image tools read the supplied disk images and write new images; they never modify the source media in place.

To inspect and write files to a PC-Engine FDD/D88, prepare a payload directory and install it into a new data image:

mkdir -p /private/tmp/vaeg-fdd-payload/root
cp /path/to/README.TXT /private/tmp/vaeg-fdd-payload/root/README.TXT

python3 tools/pc88va/pcengine_disk.py list \
  --image /path/to/your-pc-engine-boot-disk.d88
python3 tools/pc88va/pcengine_disk.py data \
  --source /path/to/your-pc-engine-boot-disk.d88 \
  --output /private/tmp/vaeg-fdd-write-test.d88
python3 tools/pc88va/pcengine_disk.py install \
  --image /private/tmp/vaeg-fdd-write-test.d88 \
  --payload /private/tmp/vaeg-fdd-payload
python3 tools/pc88va/pcengine_disk.py list \
  --image /private/tmp/vaeg-fdd-write-test.d88

To write files to a SASI HDD/HDI, stage them under their guest DOS directories and build a new HDI from the matching PC-Engine source disk:

mkdir -p /private/tmp/vaeg-sasi-payload/BIN
cp /path/to/README.TXT /private/tmp/vaeg-sasi-payload/BIN/README.TXT

python3 tools/pc88va/build-sasi-utility-disk.py \
  --variant va2 \
  --source /path/to/your-pc-engine-1.1-boot-disk.d88 \
  --supplemental-tree /private/tmp/vaeg-sasi-payload \
  --output /private/tmp/vaeg-sasi-write-test.hdi

Read the files back by mounting the resulting image in VAEG, then use guest DOS commands. FDD1/FDD2 appear as A:/B: and SASI1/SASI2 normally appear as C:/D::

A>DIR B:
A>TYPE B:\README.TXT
A>DIR C:\BIN
A>TYPE C:\BIN\README.TXT
A>COPY C:\BIN\README.TXT B:\COPY.TXT

Compare a copied file with the original on the host. Keep source images and generated media outside Git.

See Auto-generated PC-88VA Utility Media for supported inputs and the complete media layout. The scripts do not redistribute ROMs or the source boot disk; review the terms of each package before using or sharing the generated media.

Demos

Several PC-88VA demo disks are available as non-bootable data images. The demo disk index documents the collection and the local bootable-disk workflow.

Runtime Files and Saved State

The portable frontend keeps its writable files in three places.

  • Current working directory: vaeg.cfg and the backup memory, vabkupmem.dat (PC-88VA) or va2bkupmem.dat (PC-88VA2/VA3). --cfg and --bkupmem select other paths; --no-cfg and --no-bkupmem disable them.
  • Next to the executable: states/ (state slots, one directory per software, each slot with a thumbnail), screenshots/, and vaeg-cache/ (the CRT shader cache). If that directory cannot be written, the user directory below is used instead.
  • User directory: the boot and media histories (vaeg-history.txt), the custom keyboard map (keyboard.map), and the disks extracted from dropped or opened archives (archive-drop/):
    • Linux: $XDG_CONFIG_HOME/vaeg or $HOME/.config/vaeg
    • Windows: %APPDATA%\vaeg
    • macOS: ~/Library/Application Support/vaeg

The ROMs are read from the executable's directory (or --roms): the VA ROM set, extra/<model>/<role>.rom for the PC-8801 and PC-8001 machines, and the N-BASIC ROMs for N mode (enabled in 詳細設定). For a portable setup, place vaeg.cfg and the backup-memory file beside the executable and start vaeg from that directory.

Save-state files are local runtime artifacts. They are not portable across architectures, compilers, or build families; do not move a state file between 32-bit and 64-bit builds, between legacy and portable builds, or between different host platforms and expect it to load.

The machine, its sound hardware and the CPU clock are chosen from the menus and saved in vaeg.cfg; a configuration that starts a PC-88VA looks like:

pc_model=88VA1
SNDboard=100
clk_base=3993600
clk_mult=2
CPU_Speed=100
sgp_mode=0
sgp_mult=1
BootMode=0
  • pc_model: 88VA1 (PC-88VA) or 88VA2 (PC-88VA2/VA3).
  • SNDboard: 100 for the VA's built-in YM2203/OPN, 200 for the YM2608/OPNA (built into the VA2/VA3, or Sound Board II on a VA).
  • clk_mult (1-32) and CPU_Speed (10-100 %): the CPU clock is 3.9936 MHz x clk_mult x CPU_Speed; x2 at 100 % is the standard. Machine time, sound, display, FDD and RTC timing stay at standard speed.
  • sgp_mode: Model default (0), Follow CPU (1), or Custom (2) with sgp_mult=1..16, set in 模擬 -> 詳細設定….
  • BootMode: 自動 (0), V1/V2 (1), or N (2). NDP8087=1 enables the 8087 (the default), PCG=1 the PCG-8100/8800 (also the default), and ExtraMachine names a PC-8801 or PC-8001 model under extra/.

In the GUI, 模擬 -> 起動 -> PC-88VA2/VA3 / PC-88VA selects the machine and its mode (自動, V2 H/S, V1 H/S, or N with a found N-BASIC ROM; N needs 模擬 -> 詳細設定… > N モード, enabled by default with V1V2_NModeEnable=true; a user-supplied N-BASIC ROM is still required), and the PC-8801 and PC-8001 models found under extra/ follow below. Changing the model selects its default sound hardware and ROM set and resets the guest while keeping the FDD and SASI media. 模擬 -> CPU クロック holds the clock presets, and 音 -> FM 音源ボード can add Sound Board II to a VA. PCG and VA/VA2 N-mode availability default to ON only when their configuration keys are absent; explicit PCG=false or V1V2_NModeEnable=false remain OFF. The default boot selection remains 自動 (BootMode=0), not forced N mode.

Quick Build

Detailed build instructions live in BUILD.md. The short versions are:

# Linux
cmake --preset linux-release
cmake --build --preset linux-release
# Windows, from an MSYS2 MINGW64 shell (Rust from mingw-w64-x86_64-rustup,
# not MSYS2's mingw-w64-x86_64-rust; see BUILD.md)
pacman -R mingw-w64-x86_64-rust   # only if it is installed
pacman -S --needed mingw-w64-x86_64-rustup
rustup toolchain install 1.88.0-x86_64-pc-windows-gnu --profile minimal
rustup default 1.88.0-x86_64-pc-windows-gnu
tools/release/build-mingw-static-librashader.sh
cmake --preset mingw-release
cmake --build --preset mingw-release
# macOS release (pinned static SDL2)
cmake --preset macos-release
cmake --build --preset macos-release

Linux-to-Windows cross-link checks are also available:

cmake --preset mingw-cross
cmake --build --preset mingw-cross

PC-88VA Hardware Notes

The list below summarizes the PC-88VA hardware described by the PC-88VA Technical Manual. The manual mainly describes the first PC-88VA; its Music BIOS and ADPCM BIOS sections also cover VA2/VA3 and Sound Board II behavior.

  • Main CPU: uPD9002 at 8 MHz, with a uPD70008-compatible mode for V1/V2 software. The manual describes V1/V2 compatibility timing relative to the older uPD780/Z80 software environment, but does not name a separate main CPU package.
  • Disk subsystem CPU: uPD780C-compatible 4 MHz sub CPU with 8 KB ROM and 16 KB RAM for intelligent FDD operation.
  • Interrupt control: uPD8214-equivalent 8-level mode for V1/V2 compatibility, and uPD8259-equivalent 13-level mode for V3 operation.
  • DMA: four-channel priority DMA unit; channel 2 is assigned to the FDD interface, with channels 0 and 3 exposed to the bus slots.
  • Timers: CPU internal timer/counter unit with uPD8253-compatible behavior; the counters are used for the general timer, BEEP frequency, and RS-232C baud generation. The FDD interface also has a motor-control timer, and the sound controller has its own timers.
  • FDD controller: uPD765-compatible FDC for the internal 5-inch 2HD/2D drives.
  • Serial controller: uPD8251-compatible USART for RS-232C.
  • Calendar clock: uPD4990/uPD4990AC-compatible battery-backed clock.
  • Parallel/scanner/system ports: uPD8255-compatible parallel port interface appears in the scanner and system-port descriptions.
  • Video system: SGP drawing processor, TSP/DPMC display composition, TVRAM, GVRAM, CGROM/CGRAM, 4096-color palette, sprite/text/graphics priority composition, and an optional video-board digitize path.
  • Sound: the base sound controller is YM2203/OPN-class, providing three SSG voices and three FM voices, alongside BEEP and port sound. VA2/VA3 and VA Sound Board II Music BIOS support YM2608/OPNA, adding six-FM operation, rhythm functions, and extended channel control.
  • Other I/O: intelligent keyboard interface, Centronics-compatible printer interface, mouse/joystick/tablet port, optional hard disk interface, two general PC-98-compatible expansion slots, and one dedicated video-board slot.

PC-88VA I/O Port Map

PC-88VA の I/O アドレス空間は、以下のブロックに分かれています。 アドレスはすべて16進数で、範囲の開始・終了アドレスを含みます。

I/O アドレス範囲 ブロック名 備考
0000H–00FFH システムエリア0 PC-88MH/FH互換
0100H–01FFH システムエリア1
0200H–02FFH フレームバッファー制御エリア
0300H–04FFH カラーパレット制御エリア
0500H–05FFH GVRAM制御エリア
0600H–0FFFH システムエリア2 リザーブ(予約領域)
1000H–FEFFH ユーザーエリア
FF00H–FFFFH システムエリア3 CPU内部使用

I/O解析資料の索引から、 TSPとSGPのポート・ビット・コマンドを参照できます。 SGPのLINE方向ビットは、実機確認では HD=0800H/VD=0400H で、 既存の資料・現行実装との差があります。

Text Encoding Policy

This fork has moved the source tree to modern UTF-8 text.

  • Source files and documentation are UTF-8 without BOM.
  • Line endings are LF throughout the current tree.
  • Portable configuration files are UTF-8 only. Obsolete np2.ini, np2.cfg, and vaeg.ini files are not read by the active frontend.
  • On Windows, the SDL2 frontend keeps paths as UTF-8 internally and converts them at the filesystem boundary to UTF-16.

This policy is about the repository and host frontend. It does not mean the emulated guest machine is UTF-8; the PC-88VA and PC-98 software environments keep their original character encodings and ROM behavior.

Archived Reference Tier

M57 removed the former Win9x/VS2017 reference tier from the current tree. Its exact G56 contents remain available at the annotated tag archive/frozen-win9x-i286x-g56. That archive contains the former win9x/, i286x/, hlp/, and cpuxva/memoryva.x86 paths. It remains useful for behavior archaeology, including the G9 differential FDC and V30 DMA comparisons, but it is not a current build target and has no CI compile guarantee.

Required lineage and license evidence is preserved in LICENSES/legacy-vaeg.txt, with its relationship to the archived source documented in docs/legal/legacy-source-provenance.md.

Documentation Map

Status

The phase-2 portable tree is the path forward for Windows, Linux, and macOS. The active build is CMake/C/SDL2/Dear ImGui. Historical comparison uses the immutable archive tag described above.

License Status

This is the current license map for the repository. It is a summary, not a replacement for the original notices, source headers, and license files.

  • Original emulator lineage: this fork is derived from project-vaeg and Neko Project II (NP2). The preserved LICENSES/legacy-vaeg.txt records that vaeg follows the Neko Project II terms: "Neko Project II に準じます。" It also records the source license as: "ソースコードは 修正BSDライセンスとします。"
  • Neko Project II attribution: LICENSES/legacy-vaeg.txt credits "Neko Project II (c) NP2 developer team, 1999-2001,2003,2004".
  • Historical Z80 attribution: LICENSES/legacy-vaeg.txt records the PC-8801 emulator M88 source used by the former implementation, credited as "M88 - PC8801 Series Emulator, Copyright (C) by cisc 1998, 2002." Those seven approved Z80 files are absent from current HEAD; this attribution and Git history are retained as historical evidence, not a relicensing claim.
  • New phase-2 code and documentation by Nakata Maho are licensed under the 2-clause BSD license. New files carry the full notice in their file header; the required header template is in docs/agents/CONVENTIONS.md.
  • Dear ImGui is vendored under external/imgui/ and is licensed under the MIT license. See external/imgui/LICENSE.txt and docs/agents/DECISIONS/ADR-0004-imgui-vendor.md.
  • ymfm is vendored from MAME's 3rdparty/ymfm subtree under external/ymfm/ and is licensed under the 3-clause BSD license. See external/ymfm/LICENSE and docs/agents/DECISIONS/ADR-0009-opn-backend.md.
  • suzukiplan/z80 is vendored under external/suzukiplan-z80/ and is licensed under the MIT license. Its vaeg-required IRQ extension is reproduced from the approved downstream patch. The formerly used Z80 files with unclear licensing are absent from the active tree. See external/suzukiplan-z80/LICENSE.txt, external/suzukiplan-z80/provenance.txt, and docs/agents/DECISIONS/ADR-0011-z80-migration.md.
  • The embedded host GUI font assets/NotoSansJP-Regular.ttf is licensed under the SIL Open Font License 1.1. See assets/OFL.txt and assets/NOTICE.md.
  • Linux and MacPorts development builds use system SDL2. Windows and macOS release builds statically link pinned SDL2 2.32.10, which is zlib-licensed, as recorded in docs/agents/DECISIONS/ADR-0006-sdl2-acquisition.md.
  • Recording-enabled builds can statically link FFmpeg. The pinned minimal FFV1/PCM/Matroska build uses LGPL-2.1-or-later (GPL/nonfree/version3 disabled). Distribution must include the applicable notices and provide corresponding library source and materials sufficient to modify the library and relink. This does not automatically relicense vaeg's BSD-covered source files. Other FFmpeg configurations require their own license audit; source/notices/ relinking preparation is separate from the recording human gate. See docs/recording-v1/static-linking.md.
  • Machine ROM images, guest font ROMs, optional mechanical sound WAV files, and operating system disks are not distributed by this repository. They remain governed by their own rights and licenses.

When changing existing files, keep their existing notices intact. When adding new files, use the 2-clause BSD header for Nakata Maho-authored phase-2 work unless the file is third-party code or an explicitly documented asset.

About

A fork of a PC-88VA emulator focused on porting it to SDL2 for macOS, Windows MinGW, and Linux.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages