New CPU Emulation

Featured image for article: New CPU Emulation

Yabause has two CPU emulation options. Interpreter CPU is easy to understand but slow. Dynamic recompile CPU ( also called Dynarec) which was written by Ari64( I think he is the genius) is very fast but is very complicated and has many bugs :( So I decided to implement the new CPU emulation.

The goal is

  1. Debuggable
  2. Easy to maintenance
  3. Twice faster than Interpreter CPU emulation.

I found an old sh2 dynarec emulation code called Titan Project. Since it seems simple, I'm implementing my code based on it. I've finished basic functions targeting x86 and now many games run on this new emulator and faster than the interpreter CPU in almost cases. And it runs on Windows.

But many things I have to do remain. This interpreter CPU has the function to skip a useless loop to earn speed. I need to implement it for this new dynarec CPU. And my implementation is just for x86 CPU. Because almost Android devices have ARM CPU, It needs more work to run it on Android devices. To tell the truth, I'm not familiar with ARM... It may need much more time.

I'll share I share my code at Github. If you have a suggestion about my code and efficient emulator programming, please let me know. or donate through the android version of uoYabause. A cup of coffee makes me concentrate. cheers!

UPDATE: I've push this WIP to dynarec branch. https://github.com/devmiyax/yabause/tree/dynarec/yabause/src/sh2_dynarec2