Commit Graph

48 Commits

Author SHA1 Message Date
Jake.Stine 934578c8fe ReorderingMTGS: Added a new optimized memcpy_amd_qwc, for use by GIFpath copies. After much studying, we determined this is about as efficient as memcpy will ever get, for what we're doing with it.
DevNot:  Win32-only at the moment -- needs a GAS port (but that shouldn't be hard).  I made some notes in the code about it.

git-svn-id: http://pcsx2.googlecode.com/svn/branches/ReorderingMTGS@3472 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-07-12 19:40:30 +00:00
Jake.Stine ae92387cea * Fix patches, which were broken in r3398 (they weren't being applied).
* 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
2010-07-07 07:41:44 +00:00
Jake.Stine 4352a3927c Fix for broken stack unwinding in the MSVC debugger in and around the EE recompiler. Also sped up debug mode execution a bit by removing some per-block recompiled code overhead that we like almost never use anyway. (it can be re-enabled through the ini for now)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3386 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-07-04 11:14:06 +00:00
cottonvibes 25e63c243d microVU:
- 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
2010-06-25 06:28:23 +00:00
Jake.Stine b04af0e6e9 UI:
* 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
2010-06-18 02:44:27 +00:00
Jake.Stine 2300f972e4 Commandline, UI, and Game Database Work:
* 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
2010-06-15 14:13:23 +00:00
Jake.Stine e86d1d1bd4 UI:
* 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
2010-06-06 23:26:07 +00:00
cottonvibes b678e65b6e New generic Skip MPEG gamefix that lets you skip videos in games to avoid hanging.
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
2010-05-30 01:52:43 +00:00
sudonim1 0fa3303be3 IOP: HLE ioman functions for paths starting with host[0-9]*:
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
2010-05-28 10:33:15 +00:00
Jake.Stine d75664e1b2 Fixed a couple bugs in memorycard ejection logic, and a nasty crash bug for anyone who had the old CWD mode enabled.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3086 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-05-26 23:06:31 +00:00
ramapcsx2 7e924084e0 Fixed the EE timing hack.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3043 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-05-19 09:58:27 +00:00
cottonvibes 4de1b432c1 - Add "Enable Cheats" menu item.
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
2010-05-17 05:37:32 +00:00
Jake.Stine 70d47bf240 Copyright 2010 : PCSX2 and plugins! (notable exception: didn't update copyright info in any Gabest plugins)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2937 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-05-03 14:08:02 +00:00
sudonim1 04cf8bcb0f Fix ELF loading.
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
2010-04-28 00:05:41 +00:00
Jake.Stine 5d37925617 Major UI renovations!
* 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
2010-04-27 13:12:03 +00:00
sudonim1 4457fe40fc Removed all trailing whitespace in *.c *.cpp *.h because it irritates me.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2897 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-04-25 00:31:27 +00:00
refraction f01e10fc9a -Rewrote the DMA checking functions as per the manual specs so certain situations can alter the DMA's while busy.
-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
2010-04-20 01:18:31 +00:00
refraction 774411e3a4 Pleanty O' Changes:
- 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
2010-04-08 01:22:30 +00:00
sudonim1 8da2dc7df9 R5900: Replaced 0x81FC0 address check with constant loop detection logic and renamed the hack appropriately. This is what I originally intended back before INTC_STAT and 81FC0 hacks, but it seems to have pretty minimal gains over them. I don't think I've broken anything though, it might help some game and could perhaps be extended to handle more complicated loops later, with inlining or multiple branch logic.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2814 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-04-05 22:24:25 +00:00
ramapcsx2 c604bf89d3 Changed how IPU1DMA works by making some odd code optionally via gamefix (replacing the outdated DMA exec hack).
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
2010-04-01 09:46:56 +00:00
ramapcsx2 5087099871 Default VSync to off, change default Turbo to 200% and Slowmo to 50%.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2721 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-03-16 09:53:17 +00:00
Jake.Stine f293c2983b A couple dozen user interface refinements; notables:
* 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
2010-01-04 11:51:09 +00:00
Jake.Stine 1e431fb69a wtf? A working framelimiter? Turbo and slowmo hotkeys? Frameskipping?! Why it's all here! Rejoice! And then find lots of bugs, too, I'm sure. Note: Frameskipping has no gui stuff yet... I'll do that soon.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2294 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-12-03 15:51:39 +00:00
Jake.Stine ab010e1bc9 * Fix Issue 488 - FPU Full mode was being ignored.
* Slightly smaller and brighter camera icon.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2256 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-26 13:09:23 +00:00
Jake.Stine 4828beb3c3 * Added toggles for game log output: EE StdOut, EE Deci2, and IOP StdOut. Toggles are provided via a menu in the Console Log.
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
2009-11-23 06:54:24 +00:00
Jake.Stine ae1dcb7ac6 * Fixed some bugs in the SYSTEM.CNF loader (most notably it will not crash on files over 512 bytes -- some PS2 images pad their system.cnf to 32k)
* 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
2009-11-21 07:44:11 +00:00
arcum42 ba37f31849 Trim and tweak a bunch of includes, and a few headers.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2197 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-14 12:02:56 +00:00
arcum42 1db79d7eea Remove the MPEG hack; Mana Khemia no longer needs it, as of the voodoo cycle fixes.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2194 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-13 10:53:26 +00:00
arcum42 137f0da055 Add 'Print CDVD Info' back in. In Linux, make writing to stdio optional. Make a few log messages grey. A few misc things.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2191 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-12 12:51:00 +00:00
Jake.Stine b755069217 Finished the new logging options dialog (loads and saves settings (!))
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2187 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-11 11:36:13 +00:00
Jake.Stine 94222f4aaf Rewrote internal handling of SSE roundmodes and DAZ/FTZ (fixes major crash bugs of the prev revision).
* 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
2009-11-02 07:00:59 +00:00
Jake.Stine 629aad9944 Bind CPU Advanced Options; roundmode, clamp mode, DaZ/FtZ should all save/load/apply correctly now. :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2112 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-01 16:49:20 +00:00
Jake.Stine 4adb0d1e8d Preliminary addition of Advanced Options (roundmode/clamping). They don't do anything yet -- implementation of functionality is pending on review of the layout. :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2110 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-01 11:27:50 +00:00
cottonvibes fbd1268e64 Added a gamefix that should fix the messed up camera views in Gundam games like "Mobile Suit Gundam Seed Destiny: Rengou vs. ZAFT II Plus" and the other ones that had this problem.
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
2009-10-05 06:25:56 +00:00
Jake.Stine 653d09e821 Lots of new code maintenance stuffs:
* 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
2009-10-04 08:27:27 +00:00
Jake.Stine c63cb5d70a Disabling microVU (enabling superVU) gets saved to ini now. :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1855 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-18 14:40:24 +00:00
Jake.Stine e20883d287 Let's save the SkipBios hack setting, because people hate me enough already for putting this off a week.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1834 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-16 19:03:14 +00:00
Jake.Stine 4fbc2c26aa Fixed a bug in BiosTools.cpp that caused Bios-Not-Found errors.
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
2009-09-13 17:11:35 +00:00
Jake.Stine b638f52809 Re-ordered the MSVC folder structure to split PCSX2 into two definitive sections: [App]Host and [Emu]Core (the bracketed names indicate the "long" versions which are generally used in the code to differentiate the functions and classes). If the tentative layout is good then I'll sort the files on SVN to match that layout.
(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
2009-09-12 02:58:22 +00:00
Jake.Stine d2fbb22076 Upgraded PCSX2 core and utilities to GPLv3.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1783 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-08 12:08:10 +00:00
Jake.Stine 50446e6930 * Added preliminary keyboard support back in (probably doesn't compile in linux)
* 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
2009-09-07 21:16:12 +00:00
cottonvibes 5148323b7c pcsx2:
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
2009-09-07 04:40:50 +00:00
arcum42 66507e2303 wxgui: Hack in game fixes support. Fix a few minor compiler warnings. Fix Linux after the last revision...
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1752 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-06 05:52:39 +00:00
Jake.Stine 68188a1fe2 wxgui: Changed the method of usermode storage so that it doesn't violate /program files permissions; plus some minor bugfixes/cleanups.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1665 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-21 04:44:47 +00:00
Jake.Stine 3c4b1afb49 wxgui: All kinds of mess, but still not up to running games yet.
* 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
2009-08-18 19:47:00 +00:00
Jake.Stine c415d8d694 wxgui:
* 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
2009-08-15 06:17:43 +00:00
Jake.Stine 4775a4fc2d wxgui: minor cleanups; renamed Utilities folder to Tools, to alleviate confusion with the Common/Utilities.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1603 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-04 13:00:28 +00:00
Jake.Stine 4836aac1f5 wxgui: separated core emulation options from user interface options (mostly! some interdependencies remain), and stripped out some of the old framelimiting toggle/cycle code, which will be replaced with a better framelimiter system soon.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1602 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-04 08:21:10 +00:00