Ayn Odin is a handheld android device for gamers. This young device has enough SOC to run Yaba Sanshiro. But I found that the default setting of Yaba Sanshiro runs not well. So I want to let you know how to optimize the setting for a better game experience. With this setting you can play Virtua Fighter 2 with 60fps constantly.
Conclusion as first
- Use version 1.7.4 or above
Disable CPU affinityEnable CPU affinity- Use compute shader
- Use GPU Tessellation
- Use real-time sound sync mode
- Set L2/R2 mode "Both"
Use version 1.7.4 or above
When I use Ayn Odin for the first time, I noticed a regular freeze. I investigate the phenomenon with Android Studio. I found that it took 300msec to copy the sound buffer to the device memory, even though It takes less than 1 msec on other devices. I think it is because Yaba Sanshiro uses an old sound library called OpenSL ES.
It seems that modern devices like Ayn Odin do not support OpenSL ES anymore. So I switched the sound library from OpenSL ES to AAudio. The result is very nice. No regular freeze happened anymore. To use AAudio, You need to upgrade Yaba Sanshiro to version 1.7.3 above.
Disable CPU Affinity
This issue is fixed by version 1.7.6. You can use CPU Affinity.
Yaba Sanshiro uses four threads to increase parallelism. And with CPU affinity these four threads are on each CPU. But on Odyn CPU affinity seems to do not work. With Android Studio, I found that the CPU emulation thread and Sound emulation thread run on the same CPU core and lock each other. So I added the option to disable CPU Affinity.
Use compute shader
Some 3D games like Virtual Fighter 2, Panzer Dragoon uses RBG(Rotate Background Screen) function. emulation of this function is the heaviest operation on Yaba Sanshiro. I implement this operation to run on GPU instead of CPU. Ayn Odin has a good enough GPU to run this operation. I recommend you enable this function.
Use GPU Tessellation
Ayn Odin's GPU also supports tesselation which increases the accuracy of sprite images. Enabling this function is recommended.
Use real-time sound sync mode
Still, Ayn Odin's CPU is not fast enough to emulate SEGA Saturn. Sometimes sound glitches happen to sync emulated CPU time. you can avoid this glitch to changes sound sync mode to "real-time".
Set L2/R2 mode "Both"
I don't know why. But sometimes L2, R2 Buttons are not recognized. You can avoid this issue by setting L2/R2 mode "Both". [Android Setting app] -> [Odin setings] -> [Controller settngs] -> [L2/R2 mode].