Repository navigation
Releases: Igloo-Garage/Model-3-Vulkan
Release list
Model 3-Vulkan v0.9.8.3b
Model 3-Vulkan Release Notes
v0.9.8.3b Maintenance Release (2026-10-28)
Model 3-Vulkan v0.9.8.3b is a maintenance update for the v0.9.8.3a milestone. It fixes a regression that silenced sound effects in every title and completes the native DDS path for HD texture packs.
🔧 Fixes
- Sound effects restored in every game. A misplaced
elseinCSoundBoard::RunFrame()cleared the SCSP output buffers immediately after the sound board filled them, so only the MPEG music survived. Engine, tyre, collision and menu effects were silent on fresh boots and on loaded saves alike; they are back now. Music playback, the quad-to-stereo fold and existing save states are unaffected.
🖼️ HD Texture Packs
.dds/.dds.zstsupport — BC1, BC2, BC3, BC5 and BC7 images go straight into VRAM with the mip chain from the file (no blit pass). Files are uploaded in resumable chunks, so a 4096×4096 BC7 chain no longer starves the staging ring.- Pack order is
.dds.zst>.dds>.webp>.pngwhen several files carry the same hash. - F4 toggles replacements and F3 rescans the folder, so a pack can be compared against the original artwork without opening the in-game panel.
🛠️ Under the hood
SM3D_AUDIO_LEVEL=1now reports the source peak split into front and rear channels, which makes "the machine is playing but one channel is missing" visible in the log.- The 3D scene targets are handed to the 2D compositor on every exit path (including the white-flash frame), and new targets are transitioned before the first composite, so
VUID-vkCmdDraw-imageLayout-00344no longer appears after a flash frame. - A same-layout write-after-write barrier was added for attachments cleared at the start of a scene pass, closing a cross-submit hazard visible to synchronisation validation.
Compatibility: save states written by v0.9.8.3a (and by the Supermodel-VK fork) load unchanged; SUPERMODEL_VERSION is untouched.
v0.9.8.3a Milestone Release (2026-10-28)
Model 3-Vulkan v0.9.8.3a represents a historic architectural milestone in Sega Model 3 emulation. This release officially graduates the project from Supermodel-VK into Model 3-Vulkan, decoupling the modern rendering pipeline from legacy OpenGL into a dedicated, high-performance Vulkan 1.3 architecture.
🌟 Executive Summary
- Project Graduation: Transitioned to an independent, standalone Vulkan 1.3 and SDL3 architecture. Legacy OpenGL is cleanly preserved as a standalone fallback binary (
Supermodel-LegacyOG.exe). - Real3D Hardware Simulation: Completely resolved long-standing graphics artifacts, including Real3D hardware-accurate checkerboard transparency (Mode 2) and Quad pull-model SSBOs.
- Native HD Texture Pack Engine: Unlocked the first-ever native texture replacement pipeline for Sega Model 3 arcade games with automatic hardware Mipmaps and
textureGradbypass. - Audio Overhaul: Decoupled the sound emulation into a dedicated real-time thread, permanently retiring the 6-year-old
LegacySoundDSPworkaround by correcting SCSP memory mapping. - Modern Storage & State Management: Introduced visual 16-slot save state management with Zstandard (
.zst) compression, slashing save state file sizes by ~83% (crucial for handhelds like the Steam Deck). - Display Pacing & Low-Latency Input: Native 57.524 Hz arcade refresh rate with 120Hz/144Hz+ motion interpolation via
CDisplayPacer, backed by an ultra-low latency SDL3 Raw Input and HIDAPI input foundation.
🎨 Visuals & Real3D Emulation Accuracy
1. 100% Hardware Quad Pull-Model (SSBO)
- Completely eliminated geometry shaders. Quads are now pulled directly from shader storage buffer objects (SSBOs).
- Implemented an inverse-bilinear solver directly within the fragment shader to recover perspective-correct
(s, t)coordinates and native quad interpolation. - Preserves GPU Early-Z depth culling across all modern graphics pipelines, significantly boosting fill-rate efficiency on integrated and discrete GPUs alike.
2. 4x EWA Anisotropic Filtering
- Engineered an elliptical weighted average (EWA) anisotropic filtering pipeline using a 2×2 Gram matrix eigenvalue extraction with dynamic tap calculation.
- Eliminates oblique texture shimmering and cross-seam edge bleeding along track boundaries and distant geometry.
3. Groundbreaking 3-Tier Transparency Architecture
- Mode 0: Bit-Exact Two-Pass (
AlphaSortMode = 0):- Utilizes on-chip
subpassLoadwithVK_ATTACHMENT_STORE_OP_DONT_CAREtile memory access for optimal bandwidth efficiency on low-power and integrated GPUs.
- Utilizes on-chip
- Mode 1: Per-Pixel Sorted A-Buffer OIT (
AlphaSortMode = 1):- Employs a 4-slot structure-of-arrays (SoA) A-Buffer backed by a 5-step constant-time sorting network (<0.75ms resolve at 4K MSAA).
- Mode 2: Arcade Hardware Checkerboard (
AlphaSortMode = 2— World First):- Faithfully revives Real3D’s 1996 single-pass 50% stipple dither mask and transparent Z-write depth competition.
- Fixes Blinding Exhaust & Tire Burnout Smoke: Multi-layered smoke particles in Daytona USA 2 and Scud Race no longer stack exponentially into solid, blinding white walls of milk; they now render with authentic arcade depth, proper particle layering, and natural falloff.
- Fixes Sega Rally 2 Blizzard Blowout: Permanently resolves the 20-year-old snow/fog overexposure bug where player cars were swallowed into solid white voids.
- Eliminates Dirty Foliage Halos: Cleans up black outlines and alpha blending seams on 3D trees and leaves in The Lost World: Jurassic Park.
- Note: This is an experimental mode intended for dense snow, dust and fog; it cannot reproduce LOD cross-fades. Use Mode 0 or Mode 1 for scenes such as Daytona 2's waterfall.
4. CRT Filter Refinement & Evolution Roadmap
- Beam-profile scanline integration eliminates moiré banding and brightness unevenness at 4K without requiring point-sampling approximations.
- Roadmap Goal: The internal CRT shader pipeline will continue to be optimized, aiming to rival leading heavyweight modern retro shaders out of the box with near-zero performance cost.
🖼️ Native HD Texture Pack Engine
- Clean Sub-Texture Identification: Real3D sub-textures are cleanly identified and dumped using a 64-bit coordinate and format hash
(page, x, y, w, h, format). - Zero Seam Bleeding: Automatic hardware Mipmap generation combined with
textureGradbypass prevents edge bleeding and mipmap shimmer across multi-quad models. - Format Support:
- Native
.png(lossless masters) - Native
.webp(ultra-compact distribution sizes with full alpha channel support) - Hardware-direct
.dds(BC7 direct VRAM streaming) is actively in development.
- Native
- Modder-Centric Architecture: Designed to be extensible for community upscalers and artists. Support for custom PBR material maps (normals, roughness, metallic) and emissive layers is planned based on community creator requests.
🔊 Audio Modernization & Sound Board Decoupling
- Dedicated Real-Time Audio Threading:
- Decoupled Motorola 68000 CPU and SCSP/DSB sound emulation into an independent real-time audio thread.
- Window movements, resizing, asset streaming, or background GPU frame pacing fluctuations will no longer cause audio stutter, crackle, or dropouts.
- The "LegacySoundDSP" Mystery Solved:
- Fixed an architectural flaw dating back to 2020 where address range
0x7C0–0x7FF(a reserved hardware hole) was incorrectly mapped as a mirror ofMADRS. - Because Fighting Vipers 2 uploads its DSP image sequentially with 32 zeros filling this hole, the emulator was inadvertently zeroing out the game's newly uploaded delay/offset table, causing an acoustic positive feedback runaway loop (cutting victory speech to "you wi…" followed by a 0dB screech).
- Discarded writes to the reserved hole, corrected effect return volume to
EFSDL << 13, patched an unsigned underflow inSCSP_w32, and officially retired theLegacySoundDSPswitch. - Restores pristine, authentic audio to Fighting Vipers 2, Virtua Fighter 3, and Sega Rally 2 out of the box with zero configuration hacks.
- Fixed an architectural flaw dating back to 2020 where address range
💾 Modern Save State Management (.zst)
- 16 Visual Slots per Game:
- Fully accessible via right-click on the game list or directly through the in-game overlay menu (
Tab). - Each slot captures a high-resolution screenshot thumbnail for effortless visual identification.
- Fully accessible via right-click on the game list or directly through the in-game overlay menu (
- Zstandard (
.zst) Compression:- Upgraded state serialization to use modern Zstd compression.
- Slashes save file size to roughly 1/6th of legacy uncompressed
.stfiles (reducing 30–50MB+ dumps down to 4–7MB). Eliminates storage bloat and flash-memory write wear on handheld devices like the Steam Deck.
- Usage Pro-Tip: For select titles with complex mid-stage memory transitions, restoring save states via the in-game quick menu (
Tab) is recommended over desktop launcher cold-booting.
🖥️ UI, Multi-Monitor & Display Pacing
- Intelligent Window Lifecycle & Dynamic DPI:
- Window dimensions are preserved seamlessly between sessions.
- Moving the emulator window between primary and secondary monitors with differing screen resolutions or OS scaling factors (e.g., 4K 150% to 1080p 100%) dynamically updates without blurry text or cropped controls.
- Warm Eye-Care Themes:
- Introduced three built-in visual styles (warm light, warm dark, and the original interface), with a custom Warm Eye-Care Theme active by default to filter blue-white glare during extended sessions.
- Public community theming API planned for future releases.
- Arcade-Exact 57.524 Hz Pacing (
CDisplayPacer):- Delivers exact 57.524 Hz arcade refresh rate on VRR/G-Sync monitors.
- Provides smooth, motion-interpolated presentation on 120Hz, 144Hz, and 240Hz high-refresh displays.
- **SDL3 Ultra-Low Latency Input Foun...
Model 3-Vulkan v0.9.8.3a (superseded by v0.9.8.3b - sound effects muted)
⚠️ Superseded — do not download.This build silences sound effects in every game: MPEG music still plays, but all SCSP
sound effects are muted. It has been replaced by
v0.9.8.3b,
which fixes the problem.Save states written by this build load unchanged in v0.9.8.3b.
Model 3-Vulkan Release Notes
v0.9.8.3a Milestone Release (2026-10-28)
Model 3-Vulkan v0.9.8.3a represents a historic architectural milestone in Sega Model 3 emulation. This release officially graduates the project from Supermodel-VK into Model 3-Vulkan, decoupling the modern rendering pipeline from legacy OpenGL into a dedicated, high-performance Vulkan 1.3 architecture.
🌟 Executive Summary
- Project Graduation: Transitioned to an independent, standalone Vulkan 1.3 and SDL3 architecture. Legacy OpenGL is cleanly preserved as a standalone fallback binary (
Supermodel-LegacyOG.exe). - Real3D Hardware Simulation: Completely resolved long-standing graphics artifacts, including Real3D hardware-accurate checkerboard transparency (Mode 2) and Quad pull-model SSBOs.
- Native HD Texture Pack Engine: Unlocked the first-ever native texture replacement pipeline for Sega Model 3 arcade games with automatic hardware Mipmaps and
textureGradbypass. - Audio Overhaul: Decoupled the sound emulation into a dedicated real-time thread, permanently retiring the 6-year-old
LegacySoundDSPworkaround by correcting SCSP memory mapping. - Modern Storage & State Management: Introduced visual 16-slot save state management with Zstandard (
.zst) compression, slashing save state file sizes by ~83% (crucial for handhelds like the Steam Deck). - Display Pacing & Low-Latency Input: Native 57.524 Hz arcade refresh rate with 120Hz/144Hz+ motion interpolation via
CDisplayPacer, backed by an ultra-low latency SDL3 Raw Input and HIDAPI input foundation.
🎨 Visuals & Real3D Emulation Accuracy
1. 100% Hardware Quad Pull-Model (SSBO)
- Completely eliminated geometry shaders. Quads are now pulled directly from shader storage buffer objects (SSBOs).
- Implemented an inverse-bilinear solver directly within the fragment shader to recover perspective-correct
(s, t)coordinates and native quad interpolation. - Preserves GPU Early-Z depth culling across all modern graphics pipelines, significantly boosting fill-rate efficiency on integrated and discrete GPUs alike.
2. 4x EWA Anisotropic Filtering
- Engineered an elliptical weighted average (EWA) anisotropic filtering pipeline using a 2×2 Gram matrix eigenvalue extraction with dynamic tap calculation.
- Eliminates oblique texture shimmering and cross-seam edge bleeding along track boundaries and distant geometry.
3. Groundbreaking 3-Tier Transparency Architecture
- Mode 0: Bit-Exact Two-Pass (
AlphaSortMode = 0):- Utilizes on-chip
subpassLoadwithVK_ATTACHMENT_STORE_OP_DONT_CAREtile memory access for optimal bandwidth efficiency on low-power and integrated GPUs.
- Utilizes on-chip
- Mode 1: Per-Pixel Sorted A-Buffer OIT (
AlphaSortMode = 1):- Employs a 4-slot structure-of-arrays (SoA) A-Buffer backed by a 5-step constant-time sorting network (<0.75ms resolve at 4K MSAA).
- Mode 2: Arcade Hardware Checkerboard (
AlphaSortMode = 2— World First):- Faithfully revives Real3D’s 1996 single-pass 50% stipple dither mask and transparent Z-write depth competition.
- Fixes Blinding Exhaust & Tire Burnout Smoke: Multi-layered smoke particles in Daytona USA 2 and Scud Race no longer stack exponentially into solid, blinding white walls of milk; they now render with authentic arcade depth, proper particle layering, and natural falloff.
- Fixes Sega Rally 2 Blizzard Blowout: Permanently resolves the 20-year-old snow/fog overexposure bug where player cars were swallowed into solid white voids.
- Eliminates Dirty Foliage Halos: Cleans up black outlines and alpha blending seams on 3D trees and leaves in The Lost World: Jurassic Park.
- Note: This is an experimental mode intended for dense snow, dust and fog; it cannot reproduce LOD cross-fades. Use Mode 0 or Mode 1 for scenes such as Daytona 2's waterfall.
4. CRT Filter Refinement & Evolution Roadmap
- Beam-profile scanline integration eliminates moiré banding and brightness unevenness at 4K without requiring point-sampling approximations.
- Roadmap Goal: The internal CRT shader pipeline will continue to be optimized, aiming to rival leading heavyweight modern retro shaders out of the box with near-zero performance cost.
🖼️ Native HD Texture Pack Engine
- Clean Sub-Texture Identification: Real3D sub-textures are cleanly identified and dumped using a 64-bit coordinate and format hash
(page, x, y, w, h, format). - Zero Seam Bleeding: Automatic hardware Mipmap generation combined with
textureGradbypass prevents edge bleeding and mipmap shimmer across multi-quad models. - Format Support:
- Native
.png(lossless masters) - Native
.webp(ultra-compact distribution sizes with full alpha channel support) - Hardware-direct
.dds(BC7 direct VRAM streaming) is actively in development.
- Native
- Modder-Centric Architecture: Designed to be extensible for community upscalers and artists. Support for custom PBR material maps (normals, roughness, metallic) and emissive layers is planned based on community creator requests.
🔊 Audio Modernization & Sound Board Decoupling
- Dedicated Real-Time Audio Threading:
- Decoupled Motorola 68000 CPU and SCSP/DSB sound emulation into an independent real-time audio thread.
- Window movements, resizing, asset streaming, or background GPU frame pacing fluctuations will no longer cause audio stutter, crackle, or dropouts.
- The "LegacySoundDSP" Mystery Solved:
- Fixed an architectural flaw dating back to 2020 where address range
0x7C0–0x7FF(a reserved hardware hole) was incorrectly mapped as a mirror ofMADRS. - Because Fighting Vipers 2 uploads its DSP image sequentially with 32 zeros filling this hole, the emulator was inadvertently zeroing out the game's newly uploaded delay/offset table, causing an acoustic positive feedback runaway loop (cutting victory speech to "you wi…" followed by a 0dB screech).
- Discarded writes to the reserved hole, corrected effect return volume to
EFSDL << 13, patched an unsigned underflow inSCSP_w32, and officially retired theLegacySoundDSPswitch. - Restores pristine, authentic audio to Fighting Vipers 2, Virtua Fighter 3, and Sega Rally 2 out of the box with zero configuration hacks.
- Fixed an architectural flaw dating back to 2020 where address range
💾 Modern Save State Management (.zst)
- 16 Visual Slots per Game:
- Fully accessible via right-click on the game list or directly through the in-game overlay menu (
Tab). - Each slot captures a high-resolution screenshot thumbnail for effortless visual identification.
- Fully accessible via right-click on the game list or directly through the in-game overlay menu (
- Zstandard (
.zst) Compression:- Upgraded state serialization to use modern Zstd compression.
- Slashes save file size to roughly 1/6th of legacy uncompressed
.stfiles (reducing 30–50MB+ dumps down to 4–7MB). Eliminates storage bloat and flash-memory write wear on handheld devices like the Steam Deck.
- Usage Pro-Tip: For select titles with complex mid-stage memory transitions, restoring save states via the in-game quick menu (
Tab) is recommended over desktop launcher cold-booting.
🖥️ UI, Multi-Monitor & Display Pacing
- Intelligent Window Lifecycle & Dynamic DPI:
- Window dimensions are preserved seamlessly between sessions.
- Moving the emulator window between primary and secondary monitors with differing screen resolutions or OS scaling factors (e.g., 4K 150% to 1080p 100%) dynamically updates without blurry text or cropped controls.
- Warm Eye-Care Themes:
- Introduced three built-in visual styles (warm light, warm dark, and the original interface), with a custom Warm Eye-Care Theme active by default to filter blue-white glare during extended sessions.
- Public community theming API planned for future releases.
- Arcade-Exact 57.524 Hz Pacing (
CDisplayPacer):- Delivers exact 57.524 Hz arcade refresh rate on VRR/G-Sync monitors.
- Provides smooth, motion-interpolated presentation on 120Hz, 144Hz, and 240Hz high-refresh displays.
- SDL3 Ultra-Low Latency Input Foundation:
- Fully migrated the Vulkan build to SDL3 input handling, retiring the legacy DirectInput and XInput backend split.
- SDL3 gamepad handling uses HIDAPI polling, and a dedicated RawInput path provides isolated per-device mouse tracking for dual light guns. Hot-plugging is automatic.
🛠️ Additional Fixes in This Build
- Scud Race save states (
scudplus.zst1): Loading a car-select save no longer hangs. The saved MPEG window is validated (the0x80008000"no track" sentinel is rejected), a stalled decoder exits with silence instead of spinning, and the sound board re-drives its interrupt line on load, so effects work after restoring a state. New saves also carry a companion MPEG block, so background music resumes from the saved position; states written by older builds return the music when the game issues its next track command. - Quad-cabinet audio on stereo endpoints: The mixer now reads the output device's real channel count. On a two-channel device the rear pair is folded into the front pair by the mixer itself, instead of SDL applying a different downmix while the statistics panel still reported four channels. This restores Scud Race's car-select effects and rear-channel sound effects on normal desktop speakers.
- Input system default: The Vulkan build now defaults to SDL Gamepad (
sdlgamepad); legacyxinputvalues are migrated in memory, and controller detection only s...
Supermodel-VK v0.9.2.4a
Supermodel-VK v0.9.2.4a
A bug-fix release for the settings window on macOS and for cover art on macOS and Linux.
Fixed
macOS: oversized interface on Retina displays
The display DPI was applied on top of the framebuffer scale, so every control was about 1.5×
too large and the right-hand settings column was clipped. macOS windows are measured in points
and the Retina factor already applies to the drawable, so the DPI multiplier is no longer added
there. The interface is now the same size as on any other platform, and still renders at native
Retina resolution.
Layout collapsed in small windows
The settings window now enforces a 1280×720 logical minimum, scaled by the display DPI and
capped to the desktop work area, so it can no longer be dragged into a size the layout cannot
render. Below roughly 1100 logical pixels it switches to a compact arrangement:
- the game list takes a narrower column and the settings panel gets the rest;
- the footer uses two rows;
- the settings tab bar scrolls instead of truncating its labels.
The cover art / description preview is not dropped when the window gets small — it stays
visible at every size, the divider can shrink it but never past half of the left column, and the
ROM column is now measured from the longest ROM set name instead of a fixed pixel width, leaving
the remaining width to the game title.
No cover art on macOS or Linux
The game list preview showed no artwork outside Windows: the only decoder in the code was WIC,
and both the decode call and the texture upload were inside #ifdef _WIN32, so the preview simply
received an empty texture. Each platform now has its own decoder:
| Platform | Decoder |
|---|---|
| Windows | WIC |
| macOS | ImageIO + CoreGraphics |
| Linux | libwebp |
The RGBA upload is shared, so all three platforms produce identical textures.
Minor
- The last settings tab is labelled FFB, so the tab bar stops shrinking and truncating every
other label.
Platform notes
- Windows x64 — self-contained, no VC++ redistributable or external DLLs.
- Linux — the release now links
libwebp(installed by default on most desktops). Building
from source requireslibwebp-dev;Scripts/install-linux-deps.shand the README were updated. - macOS — no new dependency: ImageIO reads WebP natively on macOS 11 and later. Builds are
universal (arm64 + x86_64).
As always, no ROMs are included or linked — please dump your own games.
Thanks to everyone who reported the macOS scaling problem and helped test the macOS build.
Full Changelog: v0.9.2.3a...v0.9.2.4a
Supermodel-VK v0.9.2.3a
Windows x64, Linux and macOS builds. The Windows build is self-contained: no VC++
redistributable and no external DLLs. ROMs are not included.
2026-10-20
Display
- "Exclusive fullscreen - G-SYNC/VRR" now paces at the arcade 57.5 Hz automatically when
the display's timing range includes it, instead of running 4.3% fast at 60 Hz. Switching
back to borderless restores the stored refresh rate. - The Video page shows Refresh rate as 57.5 Hz and greys it out in that mode;
"60 Hz (recommended)" is now "60 Hz (non-VRR / 60 Hz panel)". - The Video page no longer lists raw
ExclusiveRefreshRate/ExclusiveFullscreen
values; the three-way refresh mode on the Common page owns them. - Fixed a false "borderless frame cadence" notice under exclusive G-SYNC.
Fixed
- The Quit confirmation dialog clipped its button labels (
Save and Quit,Don't Save) in the
English UI at high DPI. Button widths are now derived from the translated labels, so the
auto-sized dialog grows to fit them.
2026-10-19
Fixed
- "Custom" in the Resolution dropdown did nothing.
- Blue bars after disabling Widescreen, and a blue line along the top in widescreen mode.
The late-loaded cabinet backdrop never updated composite descriptor slot 3, and the widescreen
picture rectangle ignored the integer-scale letterbox. - Controls tab stutter: the input system was rebuilt on every visit. It is now cached across tabs
and released before a game starts. - First-run window stayed on the taskbar after allowing the app through SmartScreen.
- Release archives kept
Assets/beside the executable while the Windows build readsData\Assets\,
so downloaded cover art and crosshair bitmaps were never found. The first run now copies the folder
(includingBoxarts/) into place, and existing installations are repaired on the next start.
UI
- The built-in cabinet backdrop is enabled by default for new installs.
- In-game panel:
- collapsible CRT Filter section;
- reworked save-state table with absolute
YYYYMMDD-HH:MMtimestamps; - removed the Use for F5/F7 button (Save/Load also make that slot current);
- mouse-wheel scrolling;
- default height is now 75% of the work area;
- removed redundant help paragraphs and their reserved footer space;
- tooltips stay inside the panel and no longer cover the scrollbar.
- Settings window:
- Controls tab moved after Sound;
- controller explanations moved into the corresponding (?) tooltips;
- tab bar shrinks to fit instead of leaving a partially clipped tab;
- the vertical scrollbar is always reserved, so the tab scrolling arrows no longer move;
- the output-display selector is back in the Video section and no longer hidden when Fullscreen is off;
- a preview panel above the game list shows the hovered or selected game's WebP cover, title,
version and a short English description, with the scrolling list below it; - the divider between the preview and the list can be dragged, and both parts scale with the
window; the position is remembered inGuiPreviewSplitacross launches; - the ROM count moved from inside the list to the footer status line, giving the table that
extra row of height.
Build
- MSVC Release x64 build passes.
- Boxarts now cover all 63 ROM sets in
Games.xml:- 55 from the libretro MAME set (unchanged);
von2/von2a/von254g/von2o: US Dreamcast cover (Cyber Troopers Virtual-On Oratorio Tangram);fvipers2/fvipers2o: JP Dreamcast cover (Sega Retro);lamachin: arcade flyer (Arcade Flyer Archive);skichamp: arcade cabinet photo (Sega Retro, no standalone boxart exists).
- Added
Scripts/install_missing_boxarts.pyto fetch these eight sets and convert them to WebP;
SOURCES.txtrecords the sources. - Named by ROM set and copied into
Data/Assets/Boxartsbybuild.bat. - The release package now ships the artwork and the built-in backdrop:
Assets/(including
Boxarts/) is packaged, andSupermodel3Bezel.pngis added toPKG_FILESand moved into
Assets/while staging.
Supermodel-VK v0.9.0.3a-20261017
Automated Supermodel-VK build for Windows, Linux and macOS.