Commit Graph

376 Commits

Author SHA1 Message Date
Jake.Stine 1f36e97927 Major overhaul of the savestate system!
Since backwards compat of savestates got totally broken a few revisions ago anyway, I decided to take this opportunity to revamp the savestate system with some significant cleanups (yes it loses all backward compat once again).  Improvements include:

 * Reduced state size by removing some unneeded data (faster saves now too!)
 * Added string tags to varios "sections" of the states to assist in troubleshooting and retaining savestate compat in future versions.
 * Better error handling and fewer memory leaks.
 * Removed some unused/obsolete data from psxRegs, Counters, and psxCounters structures.
 * Removed all old savestate versioning code, since none of the old versions are supported anymore anyways.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@815 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-19 04:16:24 +00:00
Jake.Stine a51b407cdb More changes to the IOP's memory model. Some of these are experimental and might cause problems (needs testing). Quick rundown:
* The R3000 does not have a TLB, and has no valid addresses mapped above page 0x2000 in physical memory [lower 512M].  Thus all addresses can have the top 6 bits masked off and still retain full validity.  For example, address 0xbfc0 is simply a mirror of physical address 0x1fc0.  Technically speaking, a full emulation of the IOP memory model would raise bus error exceptions for accesses between 0x2000 to 0x8000 segments (instead of treating them as mirrors of the lower 0x2000 segment), but buss errors are generally fatal (unrecoverable) program errors that would never happen within the context of game emulation.

* The IOP's SIF register space is only 256 bytes, and then mirrored repeatedly through it's 64k page at 0x1d00.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@814 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-19 03:59:25 +00:00
Jake.Stine f2477537f9 Implemented more correct support for the IOP's "isc bit" (bit 16 on the COP0 status register), which in turn allowed me to simpify some of the IOP's memory access and paging logic.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@813 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-18 22:38:36 +00:00
Jake.Stine 1bbcf07a22 Added a BastTaskThread class to the threading tools.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@812 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-18 18:56:03 +00:00
cottonvibes 996f229cbf pcsx2: got rid of the compile warning.
microVU: minor changes/cleanup.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@811 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-18 08:22:01 +00:00
Jake.Stine d1ae92e203 Minor optimizations to vssprintf.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@809 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-18 06:39:55 +00:00
sudonim1 fa3288971f Save a few bytes on const flushing using 5 byte eax movs for 0 and -1 instead of 10 byte immediate movs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@808 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 20:58:59 +00:00
sudonim1 43c0d895ad Removed unnecessary rs flushes for loads and stores
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@807 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 20:07:17 +00:00
Jake.Stine 6c13dcdb41 Fixed a bug in the vtlb constprop support (stores weren't using the right macro).
Reduced the BIOS rom warnings from gaudy red text and stars to simple yellow warnings (since they really don't matter).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@805 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 18:15:02 +00:00
Jake.Stine 063703e28a Improved CDVD seek timing; should speed up some games that had abnorally long load times -- hopefully without breaking other games. (testing needed)
Fixed a condition in the INTC hack that could cause it to hang in rare occasions.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@804 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 14:48:13 +00:00
gabest11 6982207440 xpad: repaired broken keyboard event forwarding to pcsx2
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@803 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 09:38:36 +00:00
mattmenke e5f8c7dbe9 LilyPad: Minor GUI rearrangements and attempts to beautify. Relabeled "Hacks" that aren't really all that hackish. To be released as 0.9.11.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@802 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 05:37:09 +00:00
cottonvibes 2c0f8fe41e more W.I.P. stuff..
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@801 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 03:34:26 +00:00
sudonim1 c2e3536818 Emitter: encode negative 8 bit immediates for some instructions and EAX forms for MOV
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@800 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-17 00:57:59 +00:00
gabest11 d2ef4099fc LilyPad: fix0red the save state reload crash (memset overflow randomly null'ed the global dm variable and other things).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@799 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-16 22:17:50 +00:00
Jake.Stine 7c00edfc07 Disabled global optimization properly, and enabled Incremental Link, on devel builds. Minor code changes compile fairly instantly now. ;) I'll make some property sheets for enabled/disabled LTCG/WPO in the future.
Added a new Threading class: ScopedLock.  Used as an automatic unlocking mutex (safe for use with C++ exceptions, and cleaner/simpler code too).  It works like C#'s "using" and "lock" directives, for those familiar with that.

Optimized the AtomicExchange implementations for MSVC.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@798 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-16 18:32:18 +00:00
cottonvibes 2fa30cabf4 work in progress stuff...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@797 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-16 08:19:46 +00:00
mattmenke 80abd88a67 LilyPad: Couple GUI fixes and cleanups, with intention of releasing soon. Added mysteriously missing check for binding same control on different pads, fixed rearranged pad type stuff.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@796 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-16 02:58:38 +00:00
cottonvibes 0deb44c70d seems i had misunderstood ACC's pipeline rules.
turns out there only needs to be 1 instance of it, so i had to fix all opcodes that use ACC.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@795 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-16 01:43:13 +00:00
mattmenke 0c95bbc9fd LilyPad: Lots of new code that (ideally) makes absolutely no difference. And a fix for saving rumble settings in PADfreeze.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@794 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 15:00:22 +00:00
ramapcsx2 3f87ae7078 Looks like the new PCR/TIMR code wasn't called correctly in recMFC0.
This broke Fatal Frame (yes, again..).
Thanks to Nneeve for finding and fixing it so fast :)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@793 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 12:24:24 +00:00
cottonvibes 7a0e3dca12 implemented all vu lower instructions (second pass).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@792 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 10:03:34 +00:00
mattmenke 0efde91a92 Save States: Added PADfreeze calls to PCSX2, though they're currently only implemented by LilyPad. Also fixed a bug where a save state would failed to load when the last plugin's freeze function actually saved something. Minor changes to new plugin API as well.
Because of a convenient bug in load state function, older save states with no saved pad info should still work.  Don't blame me if they don't, though.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@791 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 09:30:31 +00:00
mattmenke 493ecaa206 LilyPad: Fixed some binding stuff that some incompetant person broke in his last release. PADfreeze fixed so should work when called twice (Once for pad 1, once for pad 2).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@790 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 09:20:53 +00:00
arcum42 85a1c605fa Plugin APIs: Added the changes in r788 to PluginCallbacks.h. Changed the config path function to be one of the general functions, not plugin specific, and it now passes the whole pcsx2 config, not just the ini path. I can see all sorts of uses for that...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@789 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 05:57:16 +00:00
mattmenke 579a907edf Plugin APIs: Now that I've figured out how multitaps work, fixed SIO API so it can theoretically actually work.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@788 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 03:18:31 +00:00
arcum42 fadeb5d86f Linux: Bring the gamefixes dialog up to date.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@787 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 01:15:18 +00:00
mattmenke bb47813a3c LilyPad: Removed "Axis" binding buttons. Try to autodetect full axis bindings instead, also a dropdown in case that fails. Experimental, untested PADFreeze() implemented.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@786 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-15 00:00:02 +00:00
sudonim1 64a1b3fb45 Forgot this.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@785 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 19:13:24 +00:00
tmkkmac 9ad464377a Removed a VU Clip gamefix.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@784 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 18:50:46 +00:00
tmkkmac 2b843ce49d Fixed a problem around the VU clip code, introduced in r659. GoW and Persona (and more) now work without a gamefix.
I'll remove the gamefix if there is no problem.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@783 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 16:59:03 +00:00
sudonim1 c483f17331 Rewrite immediate jumps from the block manager instead of having dispatchers to do this at execution time.
Should be a tad faster.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@782 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 16:30:35 +00:00
arcum42 d793d84860 The joys of unrestrained find/replace. :(
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@781 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 02:43:40 +00:00
arcum42 ceaee3748e Plugin APIs: Corrected a few things that got missed when I committed initially. Moved the ini path passing to a separate function. Restored a few functions I'd deleted, and depreciated them instead.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@780 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 02:39:40 +00:00
mattmenke 04b49b108e Plugin APIs: Restored pDsp, renamed to pDisplay for clarity (Though arcum42's right and about needing documentation). Renamed PADinit for psx emulator compatibility. Played around a bit with SIO api, thinking for simplicity best to just use one plugin of each type (SIO PAD/MTAP, remote, and memcard. Could even be separate types, but no real need for it). Added PADFreeze() and its friend SIOFreeze().
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@779 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 02:12:17 +00:00
sudonim1 17298b7e6b Made constant register saving more simple and certain. Grandia 2 is probably the only game that this would've fixed, but maybe there are others.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@778 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 02:06:18 +00:00
refraction c8f3a36d66 Made a rough start to what will hopefully be helpful in the future with dma timing and control. So VIF1 (and MFIFO) now have a restructured layout, i have left old code in place for the moment just incase its all a waste of time :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@777 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 01:34:16 +00:00
sudonim1 1689b73c77 Realised that I probably broke MOVZ/N with my last commit and tried again.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@776 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 01:21:13 +00:00
sudonim1 e248cf8cf0 Grandia 2 is playable again. The old block manager was incorrectly clearing a block which didn't need clearing and thus masking this constprop bug.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@774 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-14 00:21:35 +00:00
refraction 762b022df5 Disabled whole program optimization for dev builds, it really isn't needed for development builds, all it does is slows us down :P
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@773 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 22:16:51 +00:00
refraction 81b038ed41 Fixed a slight error in my last commit, fixed a bug from another previous commit and put in rama's hack for FFX which was bugged from r604, i know why its happening, but how to solve it properly is the issue.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@772 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 22:15:31 +00:00
refraction c8683cb350 Adjusted the backwards timing on GIF for intermediate transfers, this resolves issue101
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@771 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 21:14:33 +00:00
sudonim1 3aedd8acb2 Further work on the block manager.
Grandia 2 is still broken but this is a little faster, less clear happy and "impossible block clearing failures" shouldn't occur any more.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@770 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 18:23:28 +00:00
cottonvibes 2d0dd6b0b2 forgot to commit this...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@768 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 07:57:23 +00:00
arcum42 551d02721a Forgot two files.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@767 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 07:27:52 +00:00
arcum42 c15b3129d4 Preliminary work on a new version of the plugin api. Not hooked up, and very subject to change. Mainly committed both for backup, and for other devs to mess with...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@766 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 07:25:00 +00:00
cottonvibes 43d7191927 cleanup: moved 'software emulate mul' to gamefixes section since it seems to only be needed by 1 game.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@765 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 07:20:04 +00:00
arcum42 e0347fd285 Some header work, get rid of some dead code, and rename PsxCommon.h.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@762 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 04:49:23 +00:00
Jake.Stine 3821425442 Minor fixes to the IOP Interpeter and const prop regarding the SLTIU instruction.
Removed the rest of the references to the UseGui global boolean since it wasn't used anymore.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@761 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 04:21:50 +00:00
cottonvibes cbe108e99d implemented some more opcodes...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@760 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-03-13 02:03:18 +00:00