Cocoa frontend todo

From DeSmuME
(Difference between revisions)
Jump to: navigation, search
Line 216: Line 216:
  
  
== v0.9.10 (Working) ==
+
== v0.9.10 (November 28, 2013) ==
 +
TBD
 +
 
 +
=== Major issues from the previous version ===
 +
TBD
 +
 
 +
=== Main goals for this version ===
 +
TBD
 +
 
 +
=== Implementation TODO and notes ===
 +
TBD
 +
 
 +
=== Final results ===
 +
TBD
 +
 
 +
=== Post-release issues and notes ===
 +
TBD
 +
 
 +
== v0.9.10b (December 18, 2013) ==
 +
TBD
 +
 
 +
=== Major issues from the previous version ===
 +
TBD
 +
 
 +
=== Main goals for this version ===
 +
TBD
 +
 
 +
=== Implementation TODO and notes ===
 +
TBD
 +
 
 +
=== Final results ===
 +
TBD
 +
 
 +
=== Post-release issues and notes ===
 +
TBD
 +
 
 +
== v0.9.11 (April ???, 2015) ==
 +
TBD
 +
 
 +
=== Major issues from the previous version ===
 +
TBD
 +
 
 +
=== Main goals for this version ===
 +
TBD
 +
 
 +
=== Implementation TODO and notes ===
 +
TBD
 +
 
 +
=== Final results ===
 +
TBD
 +
 
 +
=== Post-release issues and notes ===
 
TBD
 
TBD

Revision as of 18:43, 4 April 2015

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)

This version returns the OS X port back to its Cocoa roots. Returning the OS X port to a Cocoa codebase is extremely important for improving the UI, optimizing performance, and improving stability.


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)

This version is all about building a better future for the OS X port. Although this means having to rebuild the Cocoa code base from scratch, this is a necessary first step in providing a stable foundation for future enhancements.


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)
  • Add the ability to map input to user-defined touch coordinates. (DROPPED)
  • 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.
  • Fake mic support only works with internal noise samples and white noise samples. External audio files didn't make it into the final release.
  • The feature to map inputs to user-defined touch coordinates was dropped due to release time constraints.
  • 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

  • Users running OS X v10.8 Mountain Lion are having issues with blank/white screens. This is most likely a bug related to the OpenGL blitter, and is considered critical.
  • A new bug was introduced where using Dual SPU Synch/Asynch mode would cause an application-level crash. This is a critical bug that is related to the sound threading code.
  • Physical microphone support seems to be an important feature to include in the next version.
  • Input handling was rewritten for this release and is an improvement compared to the last version, but the code is already showing its limitations. The input handling code will need to be rewritten once again in the next release.
  • This release has been considered a very large success for the OS X port.


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

This version is different from all other versions in that this version is purely a bug-fix release. This version is being released in response to Apple's release of OS X v10.8 Mountain Lion.


Major issues from the previous version

  • Users running OS X v10.8 Mountain Lion experience blank/white screens when running the emulator.
  • Users are experiencing intermittent application-level crashes when using Dual SPU Synch/Asynch.


Main goals for this version

  • Fix the critical bugs.
  • Get this version released as quickly as possible, in response to the Mountain Lion release.


Implementation TODO and notes

  • Fix the critical bugs. (DONE!)


Final results

  • All goals were met for this version. The display window now works with Mountain Lion, and using Dual SPU Synch/Asynch no longer crashes the application.
  • Besides the bug fixes, this version is identical to v0.9.8.


Post-release issues and notes

  • None.


v0.9.9 (Released on April 30, 2013)

Initially, this version was meant to be an optimization and maintenance release. It was also meant to further modernize the code base in response to the further obsolescence of Xcode 3 in Mountain Lion. However, due to the length of time since the last release, this version also added several new features.


Major issues from the previous version

  • Users running OS X v10.8 Mountain Lion experience blank/white screens when running the emulator.
  • Users are experiencing intermittent application-level crashes when using Dual SPU Synch/Asynch.


Main goals for this version

  • Transition the code base from using the 10.5 SDK and being forward compatible to using the latest SDK and being backwards compatible to OS X v10.5.
  • Integrate the new JIT CPU emulation engine.
  • Update the OpenGL blitter to use modern OpenGL functions, and then optimize it.
  • Add support for the OpenGL 3D renderer.
  • Refactor the input handling code so that it's all gathered in one place, and also sits at the UI level.


Implementation TODO and notes

  • Update the Xcode project files to use the latest installed SDK, then add new build targets specifically for OS X v10.5 releases. (DONE!)
  • Add support for the JIT CPU emulation engine. (DONE!)
  • Add support for the OpenGL 3D renderer. (DONE!)
  • Completely eliminate the usage of fixed-function pipeline OpenGL code from the OpenGL blitter. (DONE!)
  • Refactor and rewrite the input handling code. (DONE!)


  • Add Rigorous 3D Rendering Timing option. (DONE!)
  • Add the SLOT-1 Manager, allowing the configuration of SLOT-1 properties. (DONE!)


  • Add the ability to use multiple display windows, each with individual display settings. (DONE!)
  • Show the ROM name and ROM icon of the currently loaded ROM in the display window title bar. (DONE!)
  • Add support for the HUD. (DROPPED)
  • Add Vertical Sync option for display windows. (DONE!)
  • Add Display Orientation option for display windows. (DONE!)
  • Add Display Order option for display windows. (DONE!)
  • Add Display Separation option for display windows. (DONE!)
  • Add HQ4xS video filter. (DONE!)


  • Add the ability to map multiple input devices to the same command. (DONE!)
  • Add the ability to map mice and other pointer-type devices to commands other than Touch. (DONE!)
  • Add the ability to map an input device to any command. (DONE!)
  • Add the ability to map an input device to user-defined touch coordinates. (DONE!)
  • Add the ability to save and load input profiles. (DONE!)
  • Complete microphone support. (WORKING)
  • Revamp the Input Preferences UI to accommodate all the new input handling features. (DONE!)


  • Make the items in the File Migration Window properly sorted by version. (DONE!)
  • Add Select All and Select None commands in the File Migration Window. (DONE!)
  • Add some user-friendly forms for users to receive technical support and submit bug reports. (DONE!)
  • Add more system information to the About box. (DONE!)
  • Add Help documentation. (DROPPED)


Final results

  • All goals were met for this version.
  • The input handling code is now where it needs to be. No more rewrites are necessary anymore.
  • External audio files may now be used for the fake mic, but physical mic support still isn't there. This will have to be a top priority for the next release.


Post-release issues and notes

  • A bug was introduced where setting the display mode to Main or Touch as default would create display windows that draw incorrectly.
  • A bug was introduced where the R4 path in the SLOT-1 Manager wouldn't properly set.


v0.9.10 (November 28, 2013)

TBD

Major issues from the previous version

TBD

Main goals for this version

TBD

Implementation TODO and notes

TBD

Final results

TBD

Post-release issues and notes

TBD

v0.9.10b (December 18, 2013)

TBD

Major issues from the previous version

TBD

Main goals for this version

TBD

Implementation TODO and notes

TBD

Final results

TBD

Post-release issues and notes

TBD

v0.9.11 (April ???, 2015)

TBD

Major issues from the previous version

TBD

Main goals for this version

TBD

Implementation TODO and notes

TBD

Final results

TBD

Post-release issues and notes

TBD

Personal tools