Roadmap

From Yabause
Jump to: navigation, search

Goals

0.9.12

  • [Qt] Implement missing command line options
  • [Qt] DirectX cores (they can be used, but not configured...)
  • Remove glut dependency and add a proper OSD system (something like what was done in the wiibrew port)

0.9.13

  • Finish stuff that was left over in 0.9.12 :)
  • Documentation reworking. May possibly delay to 0.9.14
  • [Guill] Fix regressions introduced by 0.9.12
  • [Guill] Implement Vdp1 manual draw

0.9.14

  • Clean up strings and translations
  • Clean up init/reset code to not require quit and restart for settings to take effect
  • Finish stuff that was left over in 0.9.13 :)
  • Fix regressions introduced by 0.9.13
  • Possibly switch over to SDL2
  • Stunner emulation

0.9.15

  • Finish stuff that was left over in 0.9.14 :)
  • Fix regressions introduced by 0.9.14
  • Documentation reworking.
  • Switch Qt port over fully to Qt5. This will largely depend on Digia and whether they'll finally get their act together and provide proper 64-bit builds for mingw64.
  • Basic SCSP DSP emulation
  • Modify Software Renderer to support High Resolution

0.9.16

  • Finish stuff that was left over in 0.9.15 :)
  • Fix regressions introduced by 0.9.15
  • [Theo] Japanese Modem support. May be further out.
  • [Guill] Release Android port

1.0.0

  • 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 rewriting to handle 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:
    • Scan Disc(0x12)
    • Execute FAD Search(0x55)
    • Get FAD Search Results(0x56)
    • Copy Sector Data(0x65)
    • Move Sector Data(0x66)
  • CD Audio isn't as noise free as it should be.
  • 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.
  • Better user documentation. A lot of aspects like the debug functions are very poorly documented. Primary location should be on the wiki, then converted to an offline format for the specific ports.
  • 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.
  • 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.
  • Update Joypad support to the current version included with CrabEmu, and include it with the Cocoa GUI.
  • Figure out why the hardware OpenGL core no longer works.
  • Port over some of the developer features from the Qt port.

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 reworking 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...

Qt-specific goals (not specific to any release)

  • Relook the settings dialog
  • action replay search own code
  • Create Qt wrapper around all yabause api and use it in all the qt code (forbid direct yabause lib call)