The Saturn, released in Japan on November 22, 1994 (and in North America in 1995), is notorious among preservationists and developers for its dual SH-2 CPU architecture and dedicated VDP1/VDP2 video chips, which historically complicate accurate emulation on contemporary GPUs.
Modern GPUs are optimized for triangles, while the Saturn's VDP1 draws sprites and polygons as quads. devMiyax explained that converting quads into two triangles on GPUs can create visible seams where textures that should be continuous instead become distorted across the triangle split.
Previously, emulators—including Yaba Sanshiro—worked around this by tessellating quads into many smaller triangles.
According to the developer, that tessellation approach is a workaround rather than a true emulation of VDP1's rasterization; approximating quads with triangles fails to replicate the hardware's native behavior.
To address this, devMiyax implemented a compute-shader-based pipeline that runs a compute shader per VDP1 command.
In this design, each compute thread maps to an individual screen pixel (or an upscaled output pixel), applying per-pixel logic to reconstruct VDP1 output without relying on triangle tessellation.
The developer summarized the aim of the change as striking a balance between faithful rendering accuracy and practical, real-world performance on Android devices.
Despite the added per-pixel work, devMiyax reports the new implementation sustains 60 frames per second in typical cases.
He characterized the VDP1 compute shader as a major improvement for Yaba Sanshiro's rendering quality, replacing earlier hacks such as vertex corrections and expanded drawing regions that were used to force triangle-based renderers to mimic VDP1 behavior.
The move to compute shaders aligns with wider trends in emulator development where developers leverage modern GPU features to reproduce legacy hardware behavior more precisely. devMiyax has also been transparent about using AI-assisted tools during development.
For readers interested in technical depth, devMiyax has published a detailed explanation of the implementation and its results, which is recommended reading for anyone following advances in Saturn emulation and Android-native ports.