Skip to content

bubio/M88M

Repository files navigation

M88M - PC-8801 Series Emulator

M88M

M88M is a modern, cross-platform port of the classic PC-8801 emulator M88, originally developed by cisc.

Latest Release License Downloads

While the original M88 was tightly coupled with the Win32 API and DirectX, M88M leverages raylib and raygui for its frontend, making it natively compatible with macOS (Intel/Apple Silicon), Linux, FreeBSD, and Windows via a single CMake-based build system.

Phantasie on M88M

Phantasie II on M88M

Phantasie II on M88M Settings

Wizardry 4 on M88M Settings

Key Features

  • Cross-Platform: Native support for macOS, Linux, FreeBSD, and Windows.
  • Raylib Frontend: Modern, lightweight hardware-accelerated rendering and audio.
  • Core Integrity: Retains the highly accurate emulation core of the original M88 while replacing the platform-dependent layers.
  • Modern Build System: Uses CMake for easy compilation with modern compilers (Clang, GCC, MSVC).
  • Dual-Threaded Architecture: Separate threads for emulation and UI/rendering ensure smooth performance.
  • Enhanced UI: Includes a built-in overlay for disk management, state management, and system configuration.

Status

M88M is fully functional and supports a wide range of PC-8801 software.

Working Features:

  • N88-BASIC (V1/V2) and compatible modes.
  • Soundboard II (OPNA) emulation (FM, PSG, Rhythm, ADPCM) with a built-in volume mixer.
  • D88 Disk Support: Mount/Unmount disks, disk image management, and "Recent Disks" history.
  • Playlist Support: Supports m3u / m3u8 playlists for disk image workflows.
  • State Management: 10 save state slots with visual previews.
  • High-DPI Scaling: Adjustable window scaling (1x, 2x, 3x) and fullscreen support.
  • Input: Keyboard matrix emulation, Mouse, and Gamepad support.

Download

Prebuilt binaries are available on the Releases page. Assets are named m88m-<version>-<platform>-<arch>.<ext>:

Platform <platform> token Format Architectures
Windows windows .zip x64, x86, arm64
macOS macos .dmg universal (Intel + Apple Silicon)
Linux (portable) linux .AppImage x86_64, aarch64
Linux (Debian / Ubuntu) linux .deb amd64, arm64
Linux (Fedora / RHEL / openSUSE) linux .rpm x86_64, aarch64
Raspberry Pi OS raspios .deb arm64, armhf
FreeBSD freebsd .pkg amd64

Before running, you must supply the required ROM files — see Prerequisites. To build from source instead, see Building.

Raspberry Pi: use the raspios build — install it with sudo apt install ./m88m-<version>-raspios-<arch>.deb. The armhf (32-bit) variant targets ARMv7 with NEON, so it requires a Raspberry Pi 2 / Zero 2 W or later.

Windows on ARM: the OS ships no desktop OpenGL driver, which M88M (via raylib) requires. If M88M launches but no window appears, install the "OpenCL, OpenGL, and Vulkan Compatibility Pack" from the Microsoft Store and start it again.

Prerequisites

To run the emulator, you must provide the necessary PC-8801 ROM files. Place the following files in the roms directory:

  • N88.ROM (or N88.ROM + N88_0.ROM, etc.)
  • DISK.ROM
  • FONT.ROM
  • (Optional) KANJI1.ROM, KANJI2.ROM

ROM Directory Locations

The emulator looks for ROMs in the following locations (in order):

  1. Environment variable M88M_ROM_DIR
  2. roms/ subfolder in the same directory as the executable.
  3. Linux (including Raspberry Pi OS): ~/.local/share/M88M/roms
  4. macOS: ~/Library/Application Support/M88M/roms
  5. FreeBSD: ~/.config/m88m/roms
  6. Windows: %APPDATA%\M88M\roms

Note: You must own the original hardware to legally use these ROM files.

Building

macOS

Dependencies

Homebrew and Xcode Command Line Tools are required.

xcode-select --install

Install cmake via Homebrew:

brew install cmake

Build

git clone https://github.com/bubio/M88M.git
cd M88M
bash scripts/build_macos.sh

To build a Universal Binary (Intel + Apple Silicon):

MACOS_UNIVERSAL=1 bash scripts/build_macos.sh

The app bundle will be generated at ./build/M88M.app.


Linux

Dependencies

Arch-based (CachyOS, Manjaro, etc. / pacman):

sudo pacman -S --needed base-devel cmake git libx11 libxcursor libxinerama libxrandr libxi mesa alsa-lib gtk3

Fedora / RHEL-based (dnf):

sudo dnf install -y gcc-c++ make cmake git libX11-devel libXcursor-devel libXinerama-devel libXrandr-devel libXi-devel mesa-libGL-devel alsa-lib-devel gtk3-devel

openSUSE (zypper):

sudo zypper install -t pattern devel_basis
sudo zypper install cmake git libX11-devel libXcursor-devel libXinerama-devel libXrandr-devel libXi-devel Mesa-libGL-devel alsa-devel gtk3-devel

Debian-based (Ubuntu, etc. / apt):

sudo apt-get install build-essential cmake git libasound2-dev libx11-dev libxcursor-dev libxinerama-dev libxrandr-dev libxi-dev libgl1-mesa-dev libgtk-3-dev

Build

git clone https://github.com/bubio/M88M.git
cd M88M
bash scripts/build_linux.sh

The executable will be generated at ./build/m88m.


Raspberry Pi OS

Raspberry Pi OS is Debian-based, so you can build natively on the Pi. The Pi's GPU only supports OpenGL ES, so pass -DM88M_RASPIOS=ON to build raylib for GLES 2.0 (otherwise the window fails to open with GLXBadFBConfig).

Dependencies

sudo apt-get install build-essential cmake git libasound2-dev libx11-dev libxcursor-dev libxinerama-dev libxrandr-dev libxi-dev libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libgtk-3-dev

Build

git clone https://github.com/bubio/M88M.git
cd M88M
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DM88M_RASPIOS=ON
cmake --build build -j"$(nproc)"

The executable will be generated at ./build/m88m. On a 32-bit OS, -DM88M_RASPIOS=ON produces an ARMv7 + NEON build, which requires a Raspberry Pi 2 / Zero 2 W or later.


FreeBSD

Dependencies

sudo pkg install cmake git pkgconf ca_root_nss libiconv libX11 libXcursor libXinerama libXrandr libXi mesa-libs gtk3

Build

git clone https://github.com/bubio/M88M.git
cd M88M
sh scripts/build_freebsd.sh

The executable will be generated at ./build/m88m.

To build a FreeBSD pkg:

sh scripts/build_freebsd_pkg.sh

Windows

Dependencies

Visual Studio 2022 (or later) with the C++ desktop workload, and CMake, are required.

Build

Run the PowerShell build script (CMake auto-detects the installed Visual Studio generator):

git clone https://github.com/bubio/M88M.git
cd M88M
./scripts/build_win.ps1 -Architecture x64

-Architecture accepts x64 (default), Win32 (32-bit x86), or ARM64. The executable will be generated at .\build\RelWithDebInfo\m88m.exe.

Usage

  • F11 / Right Click: Toggle the Main Menu / Settings overlay.
  • ESC: Close sub-menus or the main overlay.
  • Drag & Drop: Drop a .d88 disk image or m3u / m3u8 playlist onto the window to mount it to Drive 1&2.

License

  • The original M88 core is copyright (C) cisc. Please refer to docs/README.md for the original license terms.
  • New code, porting layers, and Raylib integration are provided under the 2-Clause BSD License.
  • c86ctl.h is provided under the 2-Clause BSD License.
  • The bundled fonts (assets/NotoSansJP-Regular.ttf, assets/ChicagoKare-Regular.ttf) are licensed under the SIL Open Font License 1.1. See assets/NOTICE.md and assets/OFL.txt for details.

This project is a fan-made port and is not affiliated with the original author cisc.

Packages

 
 
 

Contributors

Languages