Cocoa frontend todo

From DeSmuME
Revision as of 02:57, 16 May 2013 by Rogerman (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Overview of Release History

The First Cocoa Front End

The first release of the Cocoa front end was v0.7.3, released on August 12, 2007.

The Temporary Move to the GTK Front End

Due to lack of developer support, the Cocoa code base was shelved after the release of v0.9.4. On November 27, 2009, v0.9.5 was released for OS X using the GTK front end. The last release using the GTK front end was v0.9.6, released on May 19, 2010.

The Return to the Cocoa Front End

On February 1, 2011, v0.9.7 was released for Windows, and also for Linux using the GTK. However, there were issues that were specific to the OS X GTK build which prevented its release for months. At this time, the Cocoa code base from v0.9.4 was updated to work with v0.9.7, and was finally released for OS X on April 30, 2011.


v0.9.7 (Released on April 30, 2011)

Major issues from the previous version

  • The GTK front end had a UI that was not Mac-friendly.
  • The application was unstable and frequently suffered application-level crashes, especially when the UI was manipulated.
  • Performance was poor all around. Emulation performance was especially poor.
  • Universal binaries are not possible for the GTK front end.


Main goals for this version

  • Make the Cocoa front end the primary Mac front end.
  • Make the Cocoa code base the main code base for the OS X port.
  • Greatly improve application stability.
  • Bring back universal binaries.
  • Get this version released as quickly as possible, since the OS X port is already months behind the others.


Implementation TODO and notes

  • Unshelve the code base from v0.9.4 and update it to v0.9.7 standards. (DONE!)


Final results

  • All goals were met for this version. The OS X port no longer suffers from application-level crashes, the UI is now Mac-native, and the application bundle now has a universal binary.
  • Overall performance has improved significantly since v0.9.6. UI performance is greatly improved, but emulation performance is still at least 20%-40% slower than the Windows port for most games.


Post-release issues and notes

  • Even though v0.9.7 has binary compatibility with OS X v10.4, there are many issues when running on v10.4, especially with missing 3D graphics.
  • The Cocoa code base is extremely messy and uses many older coding conventions. This makes it difficult to maintain and even more difficult to add new features. Due to these reasons, a total rewrite of the Cocoa code base is necessary in order to move the OS X port forward.
  • There was an uncaught bug in this release where touch coordinates didn't map correctly on rotated screens. This bug will need to be fixed.


v0.9.8 (Released on April 9, 2012)

Major issues from the previous version

  • Emulation performance is still poor.
  • The UI is very clunky, and certain parts of the UI are broken.


Main goals for this version

  • Completely rewrite the Cocoa code base from the ground up, using Objective-C 2.0, modern coding conventions, and Cocoa-bindings.
  • Transition the legacy Cocoa code base out of the current code base.
  • Expose as many settings in the user interface as possible.
  • Improve emulation performance.
  • Improve the user interface.


Implementation TODO and notes

  • Update the project files to be compatible with both Xcode 3 and Xcode 4. (DONE!)
  • Update build targets to prefer the latest version of LLVM/Clang. (DONE!)
  • Transition all legacy files out of the main project files, and rename legacy files with a legacy suffix. (DONE!)


  • Add finder icons for readable files. (DONE!)
  • Expose all emulation, firmware, SPU, and SoftRasterizer options in the UI. (DONE!)
  • Add mouseover tooltips for all settings. (DONE!)
  • Add a toolbar to the main emulation window. (DONE!)
  • Add more user feedback messages to the status bar. (DONE!)
  • Add a volume slider to the status bar, and remove the Sound menu. (DONE!)
  • Completely revamp the DeSmuME Preferences window. (DONE!)
  • Make external save state files behave like normal document files. (DONE!)
  • Expose all available ROM information in the ROM Info panel. (DONE!)
  • Make ROM title strings Unicode aware. (DONE!)
  • Change the behavior of the close window control, where clicking on it while a ROM is loaded will close the ROM. (DONE!)


  • Add the ability to change the window display mode. (DONE!)
  • Add Bilinear Filtering option for the display window. (DONE!)
  • Add video filter support for the display window. (DONE!)
  • Add the ability to rotate the display to any arbitrary rotation angle. (DONE!)
  • Add the ability to take screenshots using Edit > Copy. (DONE!)
  • Add the ability to save screenshot files in several different image file formats. (DONE!)
  • Add support for using an ADVANsCEne database for checking ROM properties. (DONE!)
  • Add the Cheat Manager, allowing for Action Replay codes and an internal value search tool. (DONE!)
  • Add the ability to import Action Replay codes from an R4 Cheat Database. (DONE!)
  • Add the ability to import and export ROM save files in RAW and No$GBA formats. (DONE!)
  • Add the File Migration Assistant to help users migrate files from previous versions. (DONE!)


  • Add support for mapping Lid and Debug controls. (DONE!)
  • Add fake mic support. (WORKING)
  • Allow for all non-modifier keys on a keyboard to be used as an input mapping. (DONE!)
  • Allow all HID devices to be used for input mappings. (DONE!)


  • Add automatic frameskip. (DONE!)
  • Make ROM cartridge files load on a separate thread. (DONE!)
  • Rework the main emulation loop to be as lightweight as possible. (DONE!)
  • Rework the multithreading code to work with SoftRasterizer. (DONE!)
  • Remove all Objective-C code from the sound code and optimize it. (DONE!)


Final results

  • All goals were met for this version, with the exception of fake mic support.
  • Fake mic support only works with internal noise samples and white noise samples. External audio files didn't make it into the final release.
  • Performance is greatly improved in this version. UI performance is now "snappy". A combination of Cocoa-bindings, code design choices, and UI optimizations have made for an extremely responsive and usable UI. Emulation performance is also dramatically improved, now being only 5% slower than the Windows port.


Post-release issues and notes

  • This release has been considered a very large success for the OS X port.
  • Users running OS X v10.8 Mountain Lion are having issues with blank/white screens. This is most likely an OpenGL bug that needs to be fixed as soon as possible.
  • Physical microphone support seems to be an important feature to include in the next version.

v0.9.8b (Released on August 6, 2012)

TBD

v0.9.9 (Released on April 30, 2013)

TBD

v0.9.10 (Working)

TBD

Personal tools