Features Removed/Added in the Wamsoft Fork¶
This page summarizes the removed legacy features and newly added features in the fork maintained by Wamsoft Ltd. Partnership (wamsoft/krkrz_dev), relative to upstream Kirikiri Z / Kirikiri 2.
For removals of individual TJS APIs, also see Features Removed in Kirikiri Z.
Removed legacy features¶
Implementations that depended on legacy Windows APIs or stood in the way of cross-platform support have mainly been replaced or removed.
| Removed | Replacement / current status |
|---|---|
| DirectSound (audio output) | miniaudio (the audio engine shared by all builds; WASAPI shared mode, multichannel support) |
DirectShow / EVR-based movie playback (dsmovie / dslayerd, etc.) |
Unified to CPU decoding (webm=movie-player / MPEG-1=pl_mpeg / others=Media Foundation SourceReader) + Direct3D 11 compositing |
| The krmovie plugin boundary (tp_stub / V2Link DLL boundary) | krmovie is built directly into the exe (calls engine symbols directly) |
krflash / .swf (Flash movies) |
Removed |
| Display via Direct3D 9 / DirectDraw (exclusive fullscreen, etc.) | Direct3D 11 / DXGI (flip-model swap chain, borderless fullscreen) |
| DirectInput (gamepad / mouse) | XInput for gamepads, WM_MOUSEWHEEL for the mouse wheel (multi-pad support via the shared tTVPPadManager) |
| NASM assembly optimizations for TLG6 | C reference implementation (tvpgl.c). SSE2/AVX2/NEON SIMD implementations exist separately |
JPEG XR (.jxr) loader |
Removed (no replacement) |
timeBeginPeriod / timeGetTime timers |
QueryPerformanceCounter + high-resolution waitable timer |
| Various legacy Win32 compatibility shims (XP/Vista/7/8 fallbacks) | Linked directly with Windows 10 or later as the minimum target |
Various Perl generators (makestub.pl / gentext*.pl, etc.) |
Python generators (byte-identical output) |
Main TJS classes / APIs removed from the core¶
The following were removed from the engine core and are supplemented by the bundled Krkr2Compat or individual plugins (details in Removed Features).
KAGParserclass → link and use theKAGParser.dllpluginMenuclass →menu.dllConsoleclass / debug console window (Debug.console) → Krkr2CompatFont.doUserSelect(font selection dialog) /System.inputString(single-line input) → Krkr2CompatLayer.hint, and obsolete methods such asaffineBlend/affinePile/blendRect/pileRect/stretchBlend/stretchPile→ can be reimplemented in TJS withoperateAffine/operateRect/operateStretch
Newly added features¶
These center on cross-platform support (SDL3) and extensions to GPU rendering, development support, and sound features.
| Added feature | Summary |
|---|---|
| SDL3 cross-platform build | Generic build supporting Windows / Linux / macOS / Android / Emscripten (web), plus the LIB build in static-library form |
| OpenGL ES rendering path | The lazily initialized GPU draw device OGLDrawDevice and GL classes such as Canvas / Texture / ShaderProgram / Offscreen / VertexBuffer / Matrix32 / Matrix44 |
| GLCompositor | A class that performs offscreen OpenGL ES compositing behind the scenes even under non-GL draw devices and writes the result back to a Layer (GLCompositor) |
| Canvas transition drawing | GPU-based screen transition drawing with Canvas.drawTransition |
| Elements-based general-purpose dialogs | Cross-platform UI defined in JSON / Dictionary (the ElementsDialog class; details in Dialog) |
| REPL (interactive TJS shell) | Script evaluation and verification via -repl / -replfile (REPL) |
| WebServer | Built-in HTTP + SSE server (-replweb). Endpoints can be registered from TJS (WebServer) |
| Agent | Automation API for input injection, screen capture and dialog operation (Agent) |
| FreeType color emoji fonts | Rasterization of CBDT/COLR color emoji (Font.emojiMode) |
| Font metadata and lazy loading | Declared in fonts.json; the actual file is loaded on first use (reduces executable size) |
| Gamepad multi-pad redesign | Multiple pad support (logical pad 0 = the most recently used pad), shared tTVPPadManager |
| 3D sound positioning (spatializer) | miniaudio-based position/distance/Doppler/directivity (the use3D family of WaveSoundBuffer, SoundListener) |
| Lip-sync / sound analysis API | getSoundLevel / getSoundSpectrum / getVowel / getVisBuffer |
| 3D / effect plugins | threepp (a three.js port) / Effekseer / Live2D / GLES helpers |
| Media Foundation HW movies | Hardware decoding via IMFMediaEngine (default for mp4/wmv; disable with -mediaengine=no) |
| On-screen debug displays | Gamepad state (PadOverlay), memory monitoring, render thread utilization (DrawStats) |
| DPI awareness / borderless fullscreen / long paths | PerMonitorV2 DPI awareness (when moving to a monitor with a different scale factor, the pixel size of the drawing area is kept and only the frame is redrawn), \\?\ extended path support |
| Controlling the game screen's display area (viewport) | Places the inner game screen inside the outer window with fit / zoom / align / offset and fills the margin with a background color or wallpaper (Viewport) |
| Selecting the startup display | -display picks the monitor shown first in a multi-display environment by number / name (Command-Line Options) |
| Selecting the DrawDevice at startup | -drawdevice selects the draw device at startup (the SDL3 default is the OpenGL ES-based SDLOGLDrawDevice). -forceegl can also force EGL for the GLES context |
| Localized messages / settings UI | Engine messages and option descriptions (-userconf) follow the OS language (ja / en / chs / cht). Specify explicitly with -language (Command-Line Options) |