An open-source reimplementation of the engine behind a family of Japanese visual novels (the "Mware" engine), written in C++20. It runs the original game data and Squirrel scripts: the engine only needs a legitimately owned copy of the game.
The current target is the Steam Chinese release of 君与彼女与彼女之恋 (You and Me and Her).
This repository contains no game data and no assets. You supply your own copy of the game. The NPK archive keys of the supported game are in keys.local.txt (private repository; remove the file before making it public).
Work in progress. The engine boots the game and plays the title, the prologue, the story after the first choice and the second-playthrough "dark" route (including its separate UI), with text, sprites, transitions, effects, sound, WMV cutscenes, save/load (a snapshot of the script VM), quick save, skip and auto mode. Native launchers (library of games, play/stop) exist for every platform.
Known gaps:
- Large parts of the story have not been played through; expect missing natives and glitches.
- Only Windows (Direct3D 12) is regularly run on real hardware. The Vulkan/Metal shaders and the Linux, macOS, Android and iOS builds compile in CI but are only lightly tested at runtime.
- NPK3 archive reader (AES-256 + zstd), Squirrel 2.2.4 VM (32/64-bit bytecode) with the game's native API reimplemented
- SDL3 GPU renderer (Vulkan, Direct3D 12, Metal) with HLSL shaders shipped pre-compiled as SPIR-V, DXIL and MSL
- Text layout and markup, bezier paths, blur/colour/warp effects, WMV3/VC-1 video via a minimal FFmpeg
- Byte-budgeted caches for textures and decoded sound; reboot-into-another-route support
All dependencies (SDL3, zstd, libwebp, stb, FFmpeg) are fetched as source and compiled by CMake; no package manager is needed.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build buildSee docs/building.md for per-platform notes (MSYS2 for FFmpeg on Windows, Android NDK, Xcode) and for regenerating the shaders.
OpenMware.exe "D:\Games\<game folder>" --keys keys.txtSee docs/running.md and, for phones, docs/mobile.md.
| Path | Contents |
|---|---|
src/, apps/ |
engine libraries and the openmware-player executable |
third_party/squirrel2 |
Squirrel 2.2.4 fork |
shaders/ |
HLSL sources and pre-compiled prebuilt/{spv,dxil,msl} |
include/mware/ |
libmware C API for the launchers |
launcher/ |
native launchers: Qt (Windows, Linux), SwiftUI (macOS, iOS) and Jetpack Compose (Android), see docs/launchers.md |
tools/, scripts/ |
developer tools (archive extractor, script disassembler, reverse-engineering helpers) |
docs/ |
engine, format and script notes |
.github/workflows |
CI for Windows, Linux, macOS, Android, iOS |
OpenMware is an independent project, not affiliated with or endorsed by the original developers or publishers. Do not use it with data you do not own.
The source code is licensed under the GNU General Public License v3.0 or later, see LICENSE. Third-party components keep their own licences (SDL3: zlib, Squirrel: MIT, FFmpeg and Qt: LGPL as shared libraries, ...), see docs/third-party.md. The licence covers only this repository: the game's data, scripts, art and sound belong to their rights holders and are not included.