* Remove some dangerous uses of pxAssume -- pxAssume should only be used for simple in-place operations, and should never call functions (my fault too, I was the one who was using it wrong).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3410 96395faa-99c1-11dd-bbfe-3dabce05a288
- Fixed some logic for flag propagation. Its a 3% speedup in the titlescreen of GoW (68fps vs 66fps).
- Added a new mVU speedhack which should be very safe. Its a 7% speedup over the new code (73fps vs 68fps), so a 10% speedup over the last revision (73fps vs 66fps).
What the speedhack does:
The VUs have 3 separate flags: Status, Mac, and Clip flags.
Due to the VU's pipeline, there can be up to 4 live instances of these flags during emulation.
The tricky part arises when you're recompiling the end of a block (after a branch), then you must predict if another block will need older flag instances.
These can be accurately predicted in all cases except for indirect jumps, because the destination block is unknown at recompile time.
In this case mVU assumes the worst-case scenario, that all flag instances will be needed, so it performs some flag shuffling to prep the flag instances in such a way that the next block can read them nicely.
What the new "Block Hack" does, is it assumes that the old flag instances won't be needed, which eliminates a lot of flag shuffling causing a speedup.
Currently the Block Hack plays it very safe, in the case of the current block ending with an indirect jump, it still assumes the flag instances will be needed for the subsequent block, so it does nothing different there;
The times the speedhack actually does something is when your current block ends with a branch, and then the following block ends with an indirect jump (or similar cases). In these cases it would be very odd for future blocks to care about old flag instances from 2-blocks ago, which is why this speed hack should be very safe.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3298 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added 3-state checkbox support to pxCheckBox.
* Fixed some buggy behavior when closing PCSX2 with either main window or console window minimized (window positions would get screwy)
DevNotes:
* Moved ImplementEnumOperators macro to Common headers and improved it a bit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3220 96395faa-99c1-11dd-bbfe-3dabce05a288
* Improved console window behavior during startup and shutdown (also fixes minor threading issues)
* Added better failsafes for avoiding "rouge" pcsx2 processes left behind when wxWidgets would fail to "notice" window closures properly.
* Database loader is now thread-safe and cleans itself up properly on exit.
* Added some handy enumeration tools for the gamefixes (prep work for making them commandline controllable).
* ... and more prelim commandline work! (actual functional implementations coming very soon)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3212 96395faa-99c1-11dd-bbfe-3dabce05a288
* Various configuration dialogs remember their positions now. :)
* AboutBox is fixed, and is now resizable.
* Fix for Issue 739 : usermode.ini hashes are now case-insensitive on Win32.
* Likely Fix for Issue 740 : missing text on Linux/GTK. (need confirmation)
DevNotes:
* Moved IniInterface.cpp/h to the Utilities lib. Linux makefiles will need to be updated. >_<
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3178 96395faa-99c1-11dd-bbfe-3dabce05a288
This will replace the many sceMpegIsEnd patches we currently have.
Thanks to pseudonym for coding the recompiler version of this gamefix.
Essentially what it does is, the EE recompiler finds the pattern of code used to check if an MPEG is finished, and then recompiles code to say that it is finished.
This will work for most Videos/FMV's in games, but its possible that some games don't use the same library functions for videos so the correct pattern won't be detected; and therefore the videos will not be skipped.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3121 96395faa-99c1-11dd-bbfe-3dabce05a288
Only open, close, read and lseek implemented for now. Directories are not supported for now because of the need to match the dirent structure to the loaded ioman version.
To allow access the host filesystem from homebrew and games, enable the new option on the main menu.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3092 96395faa-99c1-11dd-bbfe-3dabce05a288
Enable Cheats means enabling support from the files in "cheats\*.pnach"
Enable Patches means enabling support for the gamefixes/patches inside the game database...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3033 96395faa-99c1-11dd-bbfe-3dabce05a288
Remove save/load of boot2 injection option (shouldn't be part of the configuration any more as it's determined by the boot type, but I'm not sure where to move it)
Added missing entry point trigger after ELF loading.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2922 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added versioning info to savestates! (along with some other bugfixes)
* Simplified the Boot and System menus -- removed the old Skip BIOS hack and replaced it with the new BOOT2 injection method (which is considered hack-free at this time).
* Removed lots of UI deadlock gotchas.
* Some new confirmation dialogs and better error handling.
* Implemented an exclusive SysExecutor thread, which serves the purpose of executing system/VM commands and events in uninterrupted order (including suspend, resume, savestates, etc.)
* ... and probably broke linux!
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2911 96395faa-99c1-11dd-bbfe-3dabce05a288
-Improved DMA Queuing slightly, less "all over the place" code.
-Jiggled some IPU bits around to clean up some clutter.
-Added the FFX and Digital Devil Saga video fixes as a Gamefix for now. Due to the delay involved, this causes other videos to terminate early, so now disabled by default.
-Added a load of logging for hardware in dev builds (also now label more correctly) and some bits for debugging IPU easier. Some are commented out, but can be enabled for testing.
-Made a small clarification in VIF
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2875 96395faa-99c1-11dd-bbfe-3dabce05a288
- IPU 1 DMA rewritten - now much more readable, less hacky. A couple of games are still slightly picky, but overall compatability is similar (if not better in some cases)
- Reverse VIF transfers figured out and implemented (mostly)! - There are still some problems with this, will work on it.
- Improved GS PATH transfer control, now PATH2 and 3 cant transfer when PATH1 is, PATH3 cant when PATH2 is and so on.
- IPU now waits for ended GS transfers, for some reason this was screwing videos (mainly from PATH2) and causing them to be torn, which the original voodoo cycles addition fixed.
Note: You may see a lot of "Double IRQ on DMA 4" messages. At the moment these are unavoidable but aren't actually causing any issues. I do know about them :P
Feel free to negative is I've seriously broke something lol
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2822 96395faa-99c1-11dd-bbfe-3dabce05a288
This fixes many games with FMV errors / crashes / hangs.
A select few games need that code though, mainly Tri-Ace ones, so for those there is a new gamefix now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2802 96395faa-99c1-11dd-bbfe-3dabce05a288
* Implemented GS window hiding on suspend (option was there, but not tied in)
* Added Frameskipping options
* Added option for disabling all GS output, for benchmarking EEcore stuffs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2409 96395faa-99c1-11dd-bbfe-3dabce05a288
Dev notes:
* Renamed MtgsthreadObject to SysMtgsThread (matches naming pattern of other thread classes).
* Added accessors for GetMtgs() and GetCoreThread() [rationale for them documented in source comments]
* Removed wxHelpers namespace since we're using px name prefix instead for most stuff.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2238 96395faa-99c1-11dd-bbfe-3dabce05a288
* Botting NoDisc with "Skip BIOS" enabled should work now (untested).
* Renamed StaticText / StaticHeading helpers to simply Text and Heading.
* Made the iR5900 recompiler's stack alignment check a dynamic toggle instead of a dev/debug build preprocessor.
* Fix annoying linux linker errors.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2229 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added SSE_MXCSR union/struct with bitfields and methods for doing common actions.
* Converted all existing MXCSR code to use the new union.
* Added a __pagesize macro for use in conjunction with __pagealigned and dynarec functions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2113 96395faa-99c1-11dd-bbfe-3dabce05a288
No need to set roundmode to nearest anymore, just use the gamefix.
also i think i also have to add this fix to iFPUD.cpp stuff, i'll do it tomorrow.
btw, this fix is untested because i don't have the time today to test it w/o working saved states.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1961 96395faa-99c1-11dd-bbfe-3dabce05a288
* Completely new assertion macros: pxAssert, pxAssertMsg, and pxFail, pxAssertDev (both which default to using a message). These replace *all* wxASSERT, DevAssert, and jASSUME varieties of macros. New macros borrow the best of all assertion worlds: MSVCRT, wxASSERT, and AtlAssume. :)
* Rewrote the Console namespace as a structure called IConsoleWriter, and created several varieties of ConsoleWriters for handling different states of log and console availability (should help reduce overhead of console logging nicely).
* More improvements to the PersistentThread model, using safely interlocked "Do*" style callbacks for starting and cleaning up threads.
* Fixed console logs so that they're readable in Win32 notepad again (the log writer adds CRs to naked LFs).
* Added AppInit.cpp -- contains constructor, destructor, OnInit, and command line parsing mess.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1950 96395faa-99c1-11dd-bbfe-3dabce05a288
MemoryCard / Multitap Renovations:
* Memorycards should now support multitap (somewhat untested)
* Implemented a memorycard plugin interface, using the new API defined in PluginCallbacks.h (still prelim and hackish)
* Memorycard settings are saved to ini!
* Multitap is now controlled by PCSX2 instead of the pad plugin (which means no multitap until we implement the gui toggles to enable it)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1817 96395faa-99c1-11dd-bbfe-3dabce05a288
(note: Patch.cpp/Patch.h is still the odd child out in this commit, as it's destiny is to become a plugin)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1804 96395faa-99c1-11dd-bbfe-3dabce05a288
* Fixed a deadlock in thread cancellation.
* Muted some folder warnings when running pcsx2 for the first time.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1778 96395faa-99c1-11dd-bbfe-3dabce05a288
Made mVU Macro ON by default again (got turned off by wx merge).
Added microVU speedhacks to GUI.
Deleted microVU_Alloc.h from project file.
Note: No speedhacks appear to be working yet during emulation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1769 96395faa-99c1-11dd-bbfe-3dabce05a288
* Borrowed wxScopedPtr from wxWidgets 2.9
* Fixed up first-time startup procedures and folder selection
* Implemented most of the rest of the missing configuration options, and cleaned up some ambiguities regarding bool types and bitfields.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1649 96395faa-99c1-11dd-bbfe-3dabce05a288
* Major cleanups and improvements to the Threading namespace.
* Created CoreEmuThread class framework, which currently runs the EEcore, IOP, and VUs with threadsafe suspension, reset, and resume features.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1624 96395faa-99c1-11dd-bbfe-3dabce05a288