uoYabause is a unofficial port of Yabause SEGA Saturn Emulator.This project is focused on the Android version of yabause using OpenGL ES 3.x.
They say CHEAT function violates the Device and Network Abuse policy and sections 4.8 and 4.9 of the Developer Distribution Agreement. ( Who cares about 20 years old games cheating???). So we were forced to release Yaba Sanshiro as a new app.
These are changes on Yaba Sanshiro 2
Cheat function is removed
Due to Scoped Storage specification. There are changes on Android 10 or above devices
In the investigation for issues like #679 and #664, I found strange behaviors in SEGA Saturn emulation of Yaba Sanshiro. DMAC(Direct Memory Access Controller) starts memory copy despite CD-ROM data is not read yet. The master CPU start copy to VRAM before the slave CPU finishes copying data to the source region. I write code that reproduces these behaviors and runs it on the real SEGA Saturn. it shows that memory access timing is the cause of this matter.
SEGA Saturn has three buses. CPU bus,...
I've been implementing the new dynamic recompile CPU emulator for ARM64v8a. It means Yaba Snashiro will run on 64bit CPU natively. The result is 64bit code is faster than 32bit code slightly, not so much. But I'm happy. Slow progress is still progress.
Recently I'm trying to develop the new graphics emulation core using Vulkan. Vulkan is the latest graphics API which can access GPU more directly than OpenGL . Today I successes to render NBG0! it's need much more time to make it playable. since speed is the biggest problem of SEGA Saturn emulation, my effort will be worth wile.
I rewrite almost of the shader code. The concept of this change is 'Move'em to GPU'. it means that moving code running on CPU to GPU. In general speaking, GPU is fast because of their parallel processing. CPU has just 2-4 cores, on one hand, GPU has hundreds or thousands cores. Yeah, That's great indeed. There is one more thing GPU is superior than CPU. That is GPU can compile and load program dynamically. You can run the minimum code when you need. That's very important...