Fix an sVU regression from way back in r3549 (God of War, Tales of the Abyss).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3850 96395faa-99c1-11dd-bbfe-3dabce05a288
Cause: there were accidentally 2 instances of 'Recompiler' in the Pcsx2 emulator settings structure.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3843 96395faa-99c1-11dd-bbfe-3dabce05a288
* Switch microVU's cache logs to DevCon (verbose only). TODO: Make a vuPerfLog for them someday.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3841 96395faa-99c1-11dd-bbfe-3dabce05a288
* Fix a potentially obscure bug in ipuCSC (color space conversion) which would have caused PCSX2 to hang on certain types of rare partial transfers.
* Remove some more dead code and structure data from the mpeg library.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3833 96395faa-99c1-11dd-bbfe-3dabce05a288
(note to devs: a sure-fire fix for GCC's templated function problems is to typecast the templated function to itself explicitly -- works nicely for all versions of GCC and the ?: operator as well).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3763 96395faa-99c1-11dd-bbfe-3dabce05a288
* All remaining code for handling partial/fragmented unpacks removed.
* vifRegs.NUM is now accurately simulated when queuing data from fragmented unpacks.
* Reduced the VIFunpack fragment buffer from 1MB to 4KB (max size of an unpack due to NUM being limited to 8 bits).
* Removed vif/vifRegs globals formally used by VIF interpreters (everything relies on the templated vifIdx now -- simpler and faster!)
* g_vifMask vars are integrated into vifStruct.
* All VIF mask register stuff uses the SSE-friendly vifStruct.MaskRow/Col vars now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3762 96395faa-99c1-11dd-bbfe-3dabce05a288
* Link zz with libjpeg. Well it seems to get the library from another place, but better be safe for the future.
* Use -pthread as a default option (again to be safer)
* Warn about breaking of strict aliasing rule
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3761 96395faa-99c1-11dd-bbfe-3dabce05a288
* Fixed V2/V3 unpacks to behave same as the SSE unpacks (matches undefined PS2 behaviors)
* Removed legacy vifUnpacker (haven't needed it for any regression testing in forever).
* Move some VIF MARK console spam to DevCon (Ape Escape 3)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3746 96395faa-99c1-11dd-bbfe-3dabce05a288
* Both INTC and DMAC exceptions are now issued together when possible (0x400 | 0x800 to the CAUSE register, respectively)
* CPU exceptions are checked on every event now, instead of using scheduled interrupts on bits 30/31. This removes the need to constantly reschedule events during interrupt-disabled states.
* CPU exception test is moved to the top of the EE event test.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3728 96395faa-99c1-11dd-bbfe-3dabce05a288
* Remove need for packed structs through use of unions.
* Streamlined the microBlockManager's linked list (less heap allocs and simpler interations).
* Use two 32 bit compares for fast block compares, instead of 6-7 individual u8 compares.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3717 96395faa-99c1-11dd-bbfe-3dabce05a288
- Code refactoring (mostly changing macros to functions/constants...)
- Made it so the disable-regAlloc option flushes every 32bit instruction, instead of every 64bit instruction (upper+lower instruction pair)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3713 96395faa-99c1-11dd-bbfe-3dabce05a288
int src; if (src < 0xffff8000) {}
so solution is either use (int)0xffff8000 or -0x8000...
it also doesn't seem to print out warnings about this either D:
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3712 96395faa-99c1-11dd-bbfe-3dabce05a288
* Writes via 16 and 8 bit ops now use 32-bit read/modify/write operations by default; which should enable nearly complete support for all such operations (instead of the formerly spotty coverage before).
* Eliminated almost all former 8/16-bit specific register operations. All code shares the same 32 bit handlers now.
* Completely revamped the developer trace logs for hardware registers! *ALL* registers are logged now, complete with address, name, and value being read/written (and nicely formatted!).
* Handlers are now fully page-based using templated functions (minor speedup)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3704 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added ToString methods to the u128 type.
* Bugfixes for the FastFormat string utilities, namely when writing UTF8 content via the UTF16 formatter.
* MSVC: Removed obsolete disabling of unsigned/signed mismatch warning (4018)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3703 96395faa-99c1-11dd-bbfe-3dabce05a288
Spu2x: Use a standard destructor (POD safe stuff). Fix various segmentation faults (Issue 846)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3702 96395faa-99c1-11dd-bbfe-3dabce05a288
The dst param was never being modified since it was being passed by value instead of by reference. This leads me to believe the rest of MMI.cpp is probably riddled with errors too.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3698 96395faa-99c1-11dd-bbfe-3dabce05a288
* Removed the hacky g_pVU1 pointer, which required VU1 cpu registers to be part of VU0. Replaced it with a standard VU1 variable (mimics all other CPU registers, which are standard static vars). We were using translation functions/tables for all VU0 memory operations anyway, so this was a no-brainer.
* Removed code from microVU that was only there to help deal with the fact that g_pVU1 was annoying.
* Turned eeMem->HW into a static global array eeHw [64k].
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3692 96395faa-99c1-11dd-bbfe-3dabce05a288
* More VU interpreter cleanups (VU0micro.cpp and VU1micro.cpp are just about ready for permanent removal now).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3685 96395faa-99c1-11dd-bbfe-3dabce05a288
* Removed a DevCon from one of the mVU dispatchers and replaced it with an assertion (minor speedup for Release builds).
* minor refactoring, encouraging mVU toward using class members and away from using quite so many macros.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3648 96395faa-99c1-11dd-bbfe-3dabce05a288
* Includes a minor tweak to DMAC.h - removed tDMA_TADR / tDMA_MADR / etc. and replaced them with a single tDMAC_ADDR class.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3644 96395faa-99c1-11dd-bbfe-3dabce05a288
* Cleaned up trace logging and switched from C++ initializers to C-style const arrays. Kinda mixed on which I like better, but decided to go with the general rule of thumb that a bit less C++ weirdness is probably a good thing.
* Removed __assume() feature from pxFail and pxFailDev, due to the likeliness of unwanted/unexpected compiler behavior (MSVC only). To hint the compiler that code should be unreachable, explicitly use pxAssume(false).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3643 96395faa-99c1-11dd-bbfe-3dabce05a288
- Proper fix for FF7 DoC.
- Changed the handlng of .inprogress to be cleared/set with ANDs and ORs (could probably change this to a structure later), it could have interfered with MFIFO functionality.
-Un-bool'd a function in MFIFO which really didnt need to be bool'd, causing pointless passing around of data.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3632 96395faa-99c1-11dd-bbfe-3dabce05a288
Long interrupt delays are always bad, no matter how true it is to actual console behavior.
(Issue with running code in block slices.)
Also removed outdated hacks for Devil May Cry PAL :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3629 96395faa-99c1-11dd-bbfe-3dabce05a288
* move machine optimization in the global setup. In same time use i686 instead of i486
* Also build the debug with fvisibility=hidden No reason to use it only on devel. (actually same as codeblock)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3628 96395faa-99c1-11dd-bbfe-3dabce05a288
* Now using SSE for all hardware register reads and writes (mainly MFIFO stuff) [don't expect a speedup, really -- its more of a code simplification in this case].
* [refactoring] Changed the EE Memory (vtlb) to use the u128 type instead of u64 for the 128-bit loads/stores (see mem128_t typedef)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3626 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added __fi and __ri, which are abbreviations for __forceinline and __releaseinline.
* Added some static qualifiers to functions in mVU, MMI ops, and others where appropriate.
* Removed some unnecessary __fastcall qualifiers (since GCC gets funny sometimes when you combine __fastcall and inlining).
* Made _1mb, _16mb, _1gb values common to all emulation code (moved from newVif/mvu to Common.h) -- they're useful! :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3624 96395faa-99c1-11dd-bbfe-3dabce05a288
DevNotes: DevCon logs are now available in *Release* builds as well as Devel builds, and can be enabled from the Console window's "Sources" menu. They are disabled by default in Release builds, and are always enabled regardless of the ini setting in devel builds. Debug logs are still strictly available in debug builds only.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3609 96395faa-99c1-11dd-bbfe-3dabce05a288
Unlikely to help any games, just spotted this when rama was debugging one with an unrelated problem.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3598 96395faa-99c1-11dd-bbfe-3dabce05a288
- Remove the DSound output module hardware buffer option which caused more harm than good.
Also fixed that IOPx2 hack leftover.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3597 96395faa-99c1-11dd-bbfe-3dabce05a288
(pxsFmt has been applied to console/logging only for now. Will apply it to more later, once the code is confirmed stable)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3596 96395faa-99c1-11dd-bbfe-3dabce05a288
Replaced the empty space with a (imo :p) more useful "Fast CDVD access" hack.
This one will enable users to cut loading times in most games but there
are some incompatibilities as well.
HDLoader compatibility lists will list incompatible games with a "needs MODE 1" (or similar).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3595 96395faa-99c1-11dd-bbfe-3dabce05a288
* fix asm constraint. X86 have only 6 registers...
* move some pointer to ecx and edx like windows asm
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3590 96395faa-99c1-11dd-bbfe-3dabce05a288
* Savestate mega-fix! Removed all the old direct pointer types from decoder_t, which should fix the oddball random savestate crashes when IPU is active.
* Moved iq/niq into decoder_t.
* Moved all macroblocks into decoder_t (mb8, mb16, rgb16, rgb32).
* Turned decoder.stride into a constant, since IPU can only decode in strides of 16 bytes only.
* Added sanity checking to the ipu0_fifo stuff (was formerly g_nIPU0Data, etc).
* Added some SSE moves to the Idct (very minor optimization). There's a completely SSE from-ground-up implementation provided by newer versions of libmpeg2 that we should probably look into later, rather than rolling our own.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3587 96395faa-99c1-11dd-bbfe-3dabce05a288
Move the dx11 check to GSInit, didn't like it only getting called on renderer changes in the middle of emulation.
PCSX2:
Report the savestate version as hex if loading an incompatible state. Looks better than -19793434481 :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3579 96395faa-99c1-11dd-bbfe-3dabce05a288
This will be needed until we've figured out how this thing is supposed to work.
Enabling this hack should fix, among others, Growlanser games, Bleach and Wizardry.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3574 96395faa-99c1-11dd-bbfe-3dabce05a288
Fixes Quake III Revolution and the homebrew "Simple Media System".
It's probably all wrong still but hey, better than nothing :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3556 96395faa-99c1-11dd-bbfe-3dabce05a288
* Implemented support for legacy GS plugins (considered anything prior to the Reordering merge).
* Added a lot of 'const' qualifiers to the GSgifTransfer functions in both GSdx and zzogl.
DevNote: GS plugins shouldn't be modifying the data provided to them from PCSX2 -- zzogl wasn't, GSdx was. I had to do a little bit of juggling to remove the mem modifications from GSdx's TEX0/TEX2 handlers. With luck, nothing's broken. ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3536 96395faa-99c1-11dd-bbfe-3dabce05a288
* Fix a bug in my merge of the new MTGS code that caused crashes on some games (PATH1 queue bug).
* Added assertion checks to hwMFIFOWrite for qwc alignment and a SPR_LOG for null ringbuffer addresses (if a game specifies an invalid physical address).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3533 96395faa-99c1-11dd-bbfe-3dabce05a288
* fixes flickering screen in Soul Calibur 3 (caused by VSYNC register bug)
* Optimized upload of queued Path1 transfers; such that all Path1's are uploaded as a single MTGS packet.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/ReorderingMTGS@3515 96395faa-99c1-11dd-bbfe-3dabce05a288
* Added a few assertions to detect when PATH transfers are started that violate other pending PATH transfers.
* Removed a lot of obsolete code from vif1's DIRECT handler (Vif_Codes.cpp)
* Add alignment to Path1buffer to avoid SSE alignment faults.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/ReorderingMTGS@3503 96395faa-99c1-11dd-bbfe-3dabce05a288
* Make PCSX2 bare minimum reqs include SSE as well as MMX.
* Minor bugfix which could have affected MTGS performance.
* Default GIFpath stuff to use SSE opts.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/ReorderingMTGS@3491 96395faa-99c1-11dd-bbfe-3dabce05a288
Note: What I understand some define use the minus symbol and so gcc does a sign extension on 32bits.
Not compatible with u16...
To fix it I kept only the first 16bits. We could also redefine the constant without the minus
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3487 96395faa-99c1-11dd-bbfe-3dabce05a288
* Major rework of the linker flags. Use some globals flags for -s and -m32
Add a USER_CMAKE_LD_FLAGS variable. Easier to play with advanced link flags for future gcc version (>=4.5)
* Remove useless stub file
[debian]
* minor dependency fix
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3475 96395faa-99c1-11dd-bbfe-3dabce05a288
* Disabled the SSE store version of memzero (no performance benefits and it was messy anyway)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3473 96395faa-99c1-11dd-bbfe-3dabce05a288
Seems slower than memcpy_amd_ so didn't enable it.
I tried two different versions, one generates 0x400 different functions, and the other generates 1 function and jumps to the correct entry point.
The later seems faster, but still slower than memcpy_amd_...
(only tested the title-screen of GoW though...)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3465 96395faa-99c1-11dd-bbfe-3dabce05a288
* Implemented GIFPath_CopyTag, which performs a "copy-in-place" while parsing tags (big speedup over the old parse-then-copy strategy, especially with the SSE intrinsics I've included for kicks).
* Removed the old ringbuffer 'restart' mechanism and replaced it with a truly free-flowing wrapping mechanism. Utilizes the ringbuffer more efficiently, and removes quite a bit of overhead from the MTGS's PrepDataPacket call.
git-svn-id: http://pcsx2.googlecode.com/svn/branches/ReorderingMTGS@3458 96395faa-99c1-11dd-bbfe-3dabce05a288
DevNote: This is about as user friendly as the log will ever get while using Windows RichText control. The only way it will ever behave better (notably when draggin scrollbars and such) is if we write a custom read-only log text control that paints itself manually.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3443 96395faa-99c1-11dd-bbfe-3dabce05a288
* Some minor exception/error handling fixes and improvements.
DevNote: the BOOT2 elf loader fix is still a hackfix. I documented the proper fix for mimicking PS2 BOOT2 parsing, but not in a mood to do the full proper implementation right now.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3442 96395faa-99c1-11dd-bbfe-3dabce05a288
- Disc swapping should work in most games. It's easy to break though and the code is all over the place :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3435 96395faa-99c1-11dd-bbfe-3dabce05a288
- First version of a disc swap that actually works. May not work yet. :p
- It's ugly and incomplete but it works in Star Ocean 3. (I blame the heat!)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3432 96395faa-99c1-11dd-bbfe-3dabce05a288
* Add missing copyright according issue 792
* Miss few files from the previous commit ^^
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3429 96395faa-99c1-11dd-bbfe-3dabce05a288
Note: Why do I use gprT1 instead of eax, or xmmT1 instead of xmm0 directly.
For three reasons:
1) It allows for easily "finding all references" of the gpr/xmm reg within mVU only, as opposed to pcsx2 entirely.
2) It clearly labels the registers for their purpose in mVU.
3) It makes changing of the registers easier if it ever needs to be done.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3424 96395faa-99c1-11dd-bbfe-3dabce05a288
* 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
- Have the compiler explicitly pack the VU reg structs since we rely on this.
- Various minor changes.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3407 96395faa-99c1-11dd-bbfe-3dabce05a288
Only kidding, it should be awsome now, Also added a debug message incase some Paths are queued on a FINISH, any broken graphics when this shows up (or failure to load) should be reported asap!
Thanks to jake for his hard work getting signal and my optimizations working :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3400 96395faa-99c1-11dd-bbfe-3dabce05a288
DevNote: I could have left the code for the freezes in, except I *really* don't want us to ever have to resort to using such a system ever again in the future. For anything. (its just not safe on modern optimizing compilers)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3392 96395faa-99c1-11dd-bbfe-3dabce05a288