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.
| 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 |
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;BRKEM2starts 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.
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.
![]() VA boot: demonstration title, including the blank key blocks |
![]() VA boot: black lines on white |
![]() PC-8801mkIISR boot: demonstration title, without blank blocks |
![]() 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.
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 |
![]() N88-BASIC V2 in V2 mode |
![]() N-BASIC in N mode |
![]() Loading a cassette tape image in V1/V2 BASIC |
See Rel.20261017 changes for the complete notes.
8087 support will be available in the upcoming release.
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.
See Rel.20260908 changes for the complete notes.
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 for PC-88VA. The original version ran on a higher-clocked system, so it is a little slower on PC-88VA.
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.
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.
Actual SDL-rendered VAEG capture: EMMVA and SQEMM98 initialize successfully and report 31.0 MB of guest-usable EMS from the configured 32MB board.
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.
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.
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.
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.
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.
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.
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.
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.
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.d88To 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-sasiThe 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.d88To 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.hdiRead 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.
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.
- All demos
- Glass Orbit
- NEON3
- NEON4
- SGP pseudo-sprite
- SGP wireframe
- Zundamon Orbit
- Self-booting SGP demos and display tests (boots with no operating system; details)
The portable frontend keeps its writable files in three places.
- Current working directory:
vaeg.cfgand the backup memory,vabkupmem.dat(PC-88VA) orva2bkupmem.dat(PC-88VA2/VA3).--cfgand--bkupmemselect other paths;--no-cfgand--no-bkupmemdisable them. - Next to the executable:
states/(state slots, one directory per software, each slot with a thumbnail),screenshots/, andvaeg-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/vaegor$HOME/.config/vaeg - Windows:
%APPDATA%\vaeg - macOS:
~/Library/Application Support/vaeg
- Linux:
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=0pc_model:88VA1(PC-88VA) or88VA2(PC-88VA2/VA3).SNDboard:100for the VA's built-in YM2203/OPN,200for the YM2608/OPNA (built into the VA2/VA3, or Sound Board II on a VA).clk_mult(1-32) andCPU_Speed(10-100 %): the CPU clock is 3.9936 MHz xclk_multxCPU_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) withsgp_mult=1..16, set in 模擬 -> 詳細設定….BootMode: 自動 (0), V1/V2 (1), or N (2).NDP8087=1enables the 8087 (the default),PCG=1the PCG-8100/8800 (also the default), andExtraMachinenames a PC-8801 or PC-8001 model underextra/.
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.
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-releaseLinux-to-Windows cross-link checks are also available:
cmake --preset mingw-cross
cmake --build --preset mingw-crossThe 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 アドレス空間は、以下のブロックに分かれています。 アドレスはすべて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 で、
既存の資料・現行実装との差があります。
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, andvaeg.inifiles 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.
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.
- BUILD.md: current Windows, Linux, macOS build recipes.
- sdl2/README.md: SDL2 frontend runtime behavior.
- docs/agents/ROADMAP.md: modernization milestones and gate history.
- docs/agents/CONVENTIONS.md: repository invariants for contributors and agents.
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.
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.txtrecords 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.txtcredits "Neko Project II (c) NP2 developer team, 1999-2001,2003,2004". - Historical Z80 attribution:
LICENSES/legacy-vaeg.txtrecords 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. Seeexternal/imgui/LICENSE.txtanddocs/agents/DECISIONS/ADR-0004-imgui-vendor.md. - ymfm is vendored from MAME's
3rdparty/ymfmsubtree underexternal/ymfm/and is licensed under the 3-clause BSD license. Seeexternal/ymfm/LICENSEanddocs/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. Seeexternal/suzukiplan-z80/LICENSE.txt,external/suzukiplan-z80/provenance.txt, anddocs/agents/DECISIONS/ADR-0011-z80-migration.md. - The embedded host GUI font
assets/NotoSansJP-Regular.ttfis licensed under the SIL Open Font License 1.1. Seeassets/OFL.txtandassets/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.


















