Goals for a 1.0.0 release
- Full "stock" saturn emulation. At the very least it should be "feature complete" (most major bugs should be fixed at this point too).
- Any external carts or peripheral do not need to be fully emulated at this point.
- Switchable SH2 Dynarec/Interpreter cores.
- Full debugging support.
- Speed should be high at this point (It's too tough ironing out those bugs with Yabause running slow).
- Save States.
List of things that need to be done yet
- OpenGL core needs proofreading online texturing better and to handle some of the more obscure features of the saturn.
- Profiling of the Carbon port shows that about 8-9% is spent on texture uploads, most of this in the driver changing the pixel format. Using pixel buffer objects and using the GL_BGRA texture format with the GL_UNSIGNED_INT_8_8_8_8_REV type should reduce this to almost zero.
- SCSP emulation is still missing DSP emulation.
- CD Block emulation is still missing a few odd commands.
- SCU still needs better DSP timing. Some registers might need better support.
- SH2 still needs SCI emulation.
- Eventually we're going to have to add support for multiple languages.
- And much more.
Mac-specific goals (not specific to any release)
- SDL is used only for sound. Talking to CoreAudio ourselves lets us get rid of it. There should not be any noticeable performance increase, but the size of the binary would shrink.
- Joypad support via HID Manager.
- Rewrite UI using Cocoa. Compiling Yabause as a 64-bit application should give a speed increase on 64-bit capable Intel Macs, but the Carbon UI libraries are not available for 64-bit applications. Cocoa should also make it easier to add the missing developer features.
Windows-specific goals (not specific to any release)
- Add support for 64-bit windows.
- UI handling should be rewritten so the UI and emulation are on two separate threads.
- SPTI cd core needs some reworked so it doesn't dead-lock emulation while it's waiting on a command.
Dreamcast-specific goals (not specific to any release)
- Execute SH-2 Instructions directly using a virtualization-like approach (think a very thin dynarec).
- Utilize AICA directly, rather than emulating the SCSP. This will mostly work without problems, as AICA was based on SCSP in a way, but there are a few issues that could possibly occur. Hopefully those issues don't happen too often, eh?
- Investigate utilizing an assembly 68k core, such as FAME, or writing one specifically for Yabause (I really doubt that the ARM core in AICA is fast enough to emulate the 68k properly in SCSP).
- Attempt further optimization of the VDP code (especially VDP2).
- Lots and lots more assembly code...