- Throttle execution speed using mach_wait_until() instead of usleep(). This improves execution timing, and reduces screen tearing when running the video at >= 60FPS.
- Improve thread safety when changing the execution speed.
- Do some miscellaneous minor optimizations to the execution loop and frame skip.
- Reverse locking mechanics for the core emulation loop's producer/consumer threads. (Instead of the producer telling consumers to lock, now consumers check if the producer is locked.)
- Add additional error check for the execution state within the core emulation loop.
- Reduce spin lock time when setting the GPU state flags.
- Improve thread safety when changing the execution state.
- Lower the Xcode and Interface Builder version requirements from v3.2 to v3.1 in the Legacy project.
- Clean up build settings in the Xcode 3 project.
- Ensure that the OpenEmu data directory exists before ROM loading.
- Add future support for changing the DS display mode. (Not yet implemented.)
- A lot of general code cleanup.
- Integrate OpenEmu's audio system with the OpenEmu Plug-in. (Special thanks to jweinberg, clobber, and Psy from the OpenEmu team!)
- Make input handling asynchronous through the Distributed Object system.
- Rename OpenEmuSoundInterface.mm/.h to OESoundInterface.mm/.h.
- Some minor cleanup to global defines.
- Update method names to match the newest revision of the OEGameCore API.
- Return audioBufferCount==0 since we're using DeSmuME's sound handling code for now.
- Change the 3D rendering core to the null core on dealloc.
- Refactor audio playback code for better code modularity.
- Improve overall performance of audio playback.
- Fix compile issue with the legacy build.
- Add a method for setting the emulator core's file paths directly by using a dictionary. This method can be used as an alternative to reading FileTypeInfo.plist.
- Add file handling support for the upcoming OpenEmu Plug-in build target.
- Significant improvements to auto frame skip! It now uses less CPU, and timing is much smoother and more accurate.
- Some minor code cleanup for the emulation core object.
- Reimplement Objective-C memory management by using the standard patterns for retain/release mechanics. This fixes several real and potential memory leaks.
- Additional miscellaneous code cleanup and fixes.
- When detecting an analog input's on state, use the upper/lower third of the range instead of the upper/lower quarter of the range. This helps improve compatibility with certain joysticks.
- Perform an integer length bounds check before calling IOHIDValueGetIntegerValue(), since this function will cause a crash if the returned integer value is very large. This prevents crashing when using certain controllers, such as the PS3 controller.
- When mapping inputs in Input Preferences, require the user to hold the input in its on state for at least 0.1 seconds. In addition, the user must also perform a full on-off state transition with the input. This helps stabilize jittery inputs, and also helps ignore unintentional inputs from devices that constantly throw a large number of signals, such as the PS3 controller's accelerometer.
- When mapping inputs in Input Preferences, remove all previous mappings for the particular control before mapping the input. Since the UI doesn't yet support multiple bindings per control, the previous behavior was confusing for users.
- Add an XCode 4 project with a Mac OS X v10.7 build target.
- Update build settings for XCode projects: Disable symbol strip, enable dead code strip, enable prebinding.
- Include OpenGL gl.h header to fix compiling with Mac OS X v10.7.
libfat:
- Don't define strnlen() on Mac OS X v10.7.
- There is a bug where if the user changes cheat items using the cheat list directly, the changes will not save to file. (However, any applied changes using Cheat Settings are saved to file as intended.) Workaround behavior: Save the cheat file upon ROM unloading.
- Fix UI element sizing/positioning in the File Migration window.
- Rewrite text in ROM save file migration sheet so that the reading flows better.
- Update tooltip info to better reflect current knowledge from testing.
- Misc. grammatical fixes to UI elements.