Commit Graph

61 Commits

Author SHA1 Message Date
TheTechnician27 23fd57f641 Copyright: Change year from 2002-2024 to 2002-2025 2025-01-20 05:07:26 +01:00
GovanifY 132431b7c8 headers: relicense to GPL-3.0+
also update to 2024 while i'm at it
2024-07-30 17:17:13 -04:00
Stenzek 1fedd31229 HW: Make various DMAC/IPU/VIF register types POD 2024-01-14 12:51:51 +10:00
Stenzek d9abe10308 Misc: Remove explicit PCH include, switch to SPDX 2023-12-24 14:03:14 +10:00
Connor McLaughlin 850deed6c1 HwRegs: Swap wxString desc() for std::string 2022-04-15 08:15:40 +01:00
refractionpcsx2 c78b5b706d MFIFO: Refactor of some of the VIF/GIF MFIFO functionality. Centralised the MFIFO resume function which should have been separate anyway.
Added some more memory address safeguards.
Logging now makes a bit more sense to look at.
2018-05-30 01:29:23 +01:00
Gregory Hainaut 4796803c33 pcsx2: Remove == true/false for boolean logic (#1556)
As discussed in #1553

Clang Tidy reports goes from 156 to 9.

Remain some macro in spu2x + a deadcode line
2016-09-10 20:08:14 +02:00
refraction@gmail.com a1bc42fa92 VIF: Put in a check to make sure VIF doesn't break during a FIFO write.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5565 96395faa-99c1-11dd-bbfe-3dabce05a288
2013-02-18 21:17:35 +00:00
refraction d465c18228 More vif work to fix Shadowman 2 and improve the function of some parts. Gave vifstalled a more specific job and reasons for the stall. Also did some work with the irq offset, seperating it from the stalls.
Savestate bump needed.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5380 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-08-16 23:03:27 +00:00
gabest11 da7324dbf2 Not transferring unused vif registers to the MTVU thread can save at least half of the ring buffer space. The whole set is about 400 bytes, including padding, but I could find references to only 6 regs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5092 96395faa-99c1-11dd-bbfe-3dabce05a288
2012-02-10 07:03:55 +00:00
cottonvibes ac9bf45f98 pcsx2: Implemented Threaded VU1 :D
Threading VU1 took a lot of rewrites and new code to make possible (MTGS, microVU, gifUnit...), but we finally got to the point where it was feasible, and now we've done it! (so now everyone can stop complaining that pcsx2 only takes advantages of 2 cores :p).

The speedups in the games that benefit from it are great if you have a cpu with 3+ cores (generally a 10~45% speedup), however games that are GS limited can be a slowdown (especially on dual core cpu's).

The option can be found in the speedhacks section as "MTVU (Multi-Threaded microVU1)". And when enabled it should should show the VU thread-time percentage on the title bar window (Like we currently do for EE/GS/UI threads).

It is listed as a speedhack because in order for threading VU1 to have been a speedup, we need to assume that games will not send gif packets containing Signal/Finish/Label commands from path 1 (vu1's xgkick). The good news is very-few games ever do this, so the compatibility of MTVU is very high (a game that does do this will likely hang).

Note: vs2010 builds and Linux builds need to be updated to include "MTVU.h" and "MTVU.cpp".


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4865 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-08-12 02:31:49 +00:00
cottonvibes c05dc759e3 Big gif transfer code rewrite!
Pcsx2 now has a gifUnit class which acts like the ps2's gif and executes a single gif transfer at a time (and performs path arbitration according to priority and path3 slicing).

This new code is generally a speedup for most games. Particularly VU heavy games like GoW.
This revision breaks old saved state compatibility so don't update if you wish to keep playing with your old saved states.
Leave comments if this revision fixes or breaks anything...

Message to GS Plugin authors:
This new code now uses only 1 gif callback to transfer data to the gs plugin (GSgifTransfer).
pcsx2 also is garaunteed to send full GS primitives to the plugin. So you don't have to account for partial-transfers anymore.

Thanks goes out to shadowlady who tested around 500 games for me :D

Note 1: The old gif code is still in this revision, and can be enabled by the USE_OLD_GIF macro. The old code will be deleted soon.
Note 2: This revision also enables assertion dialogs in devel builds, and changed a lot of assume cases into assertions.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4821 96395faa-99c1-11dd-bbfe-3dabce05a288
2011-07-24 13:02:50 +00:00
Jake.Stine fc99f79aac Minor tweaks to assist in comparing new and old DMAC behaviors:
* VIF now sends a 128 bit tag instead of a 64 bit tag (lower 64 bits masked to 0 -- this should mimic real hardware behavior more closely)
 * Added more GIFtag logging info

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3916 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-10-12 12:15:57 +00:00
Jake.Stine 2f8f86a3eb Significant VIFunpack retooling. Interpreters are considerably more efficient, and Recompilers are slightly more efficient. Details:
* 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
2010-09-13 21:13:10 +00:00
Jake.Stine 1edb900405 Changed a few more -> to . for consistency.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3707 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-08-31 13:06:53 +00:00
Jake.Stine 003da7d287 MAJOR: All new hwRead and hwWrite handlers (expect regressions). Details:
* 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
2010-08-31 05:22:26 +00:00
Jake.Stine bda94b16cd General emulator memory work, regarding my new policy that most (or all) cpu and hardware registers should be standard globals, as it makes our lives a lot easier in general (and their memory footprint is small so it won't adversely affect the virtual memory availability of the host operating systems). Details:
* 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
2010-08-27 03:21:16 +00:00
Jake.Stine a8e406523b Improved EE/VTLB memory management: Removes various psM/psR/psS/psH pointers and replaces them with a single unified eeMem pointer. Members of eeMem correspond to Main, Scratchpad, Hardware, etc. This simplifies the EE's memory allocation, improves compiler optimization, gets rid of some macro mess, and allows templated code to deduce the size of memory buffers automatically.
* 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
2010-08-16 15:57:01 +00:00
Jake.Stine 8375b0a989 Refactoring:
* 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
2010-08-09 04:10:38 +00:00
Jake.Stine bc849cc042 Merge const qualifiers and cleanups from ReorderingMTGS: Includes the VIF DIRECT changes, which seem to be stable this time. ;)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3549 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-07-22 12:20:11 +00:00
Jake.Stine 095e46246d microVU: Added some const qualifiers to the instruction/opcode function LUTs
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3548 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-07-22 05:05:18 +00:00
refraction 26fece9510 Summary of fixes
Games
- Resident Evil Dead Aim flickering graphics fixed.
- Flatout games should now boot everytime (instead of randomly)
- Sega Superstar Tennis flashing fixed
- Destruction Derby graphics fixed (NTSC confirmed, PAL unsure)
- Tenchu Fatal Shadows flickering textures fixed, Issue 748
- Spyro Hero's Tail should boot again, Issue 746

General Info
- General reworking of the GS paths with all paths prioritizing more correctly.
- XGKICK can stall if another GS transfer is in progress
- Major reworking of Path3 masking, could still be combined with normal Path3 transfers, but lets get it working first :P
- Taken in to account a few conditions which could have caused VIF to lock up/crash when stalling on ends.
- Unreversed GIF and SPR and VIF so its the normal way round
- all DMA paths should now resume correctly after being stopped by hardware
- GIF FIFO now actually transfers stuff :P
- VIF CMD's simulated by the length of the interrupts at the end.

Phew, i think that's everything :S

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3274 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-06-22 23:10:40 +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 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
cottonvibes c144913ede Vif:
- Deleted old vif transfer code.
- Deleted Vif_Commands.cpp
- Added Vif_Transfer.cpp


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2622 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-02-22 02:04:55 +00:00
cottonvibes 19b65d52c1 Set vif0 to use the new vif transfer code...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2612 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-02-20 04:23:28 +00:00
Jake.Stine a9165dfbf6 Added more info to GS window. Added const qualifiers to VIF and DMAC hw register structs/unions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2529 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-01-27 15:25:40 +00:00
cottonvibes 46079853f9 Unified vif0 and vif1's write32 functions...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2518 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-01-25 07:42:45 +00:00
cottonvibes 92ddae17ce More vif refactoring/cleanups.
There is a lot of code duplication in the vif0/vif1 files, I will probably work on getting them to use common functions.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2489 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-01-23 04:14:59 +00:00
cottonvibes a8c2941901 Removed the old vif unpack code since pcsx2 is now using newVif.
Notes to Devs:
- Linux project files probably need to be updated since I deleted some files.
- In the vif0/vif1 Freeze() functions for saved states, I kept some dummy vars to keep saved state compatibility. We should remove them next time we decide to break saved state compatibility.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2461 96395faa-99c1-11dd-bbfe-3dabce05a288
2010-01-21 06:51:09 +00:00
cottonvibes a5272f8dc9 Wrote a vif 'unpack' packet recompiler.
Compatibility is probably the same as the newVif interpreter code, but its faster.

Speedwise its similar to the old-vif unpack code (the one currently enabled by default in pcsx2).
Its about 0~2% slower on my machine from my limited testing, but I assume people with SSE4.1 cpus might have a lot better results since I added a lot of sse4.1 optimizations...
The SSE4.1 optimizations were also ported to the newVif interpreter code.

Also the "filling mode" should be fast compared to the old-vif unpack code since its sse optimized, but most games don't use this mode so it hasn't been tested much...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2358 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-12-19 10:00:40 +00:00
Jake.Stine 79e07edc9f Minor optimizations to newVifUnpack.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2356 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-12-18 17:49:04 +00:00
arcum42 1b42c82faf A continuation of what I was doing in r2305.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2309 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-12-05 08:01:00 +00:00
arcum42 b78944866b Fix a if statement I missed in the last commit, and add in a couple functions for printing structs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2262 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-27 15:25:26 +00:00
arcum42 f11a138ce9 Change the return values on some Vif functions.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2261 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-27 13:49:37 +00:00
arcum42 82a506cd04 I'm not trying that again anytime soon...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2260 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-27 07:54:40 +00:00
arcum42 2b1a9277ee Various tag stuff.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2258 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-11-27 05:31:32 +00:00
arcum42 3082fd2003 Get rid of a few Windows compilation errors.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1982 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-08 06:57:20 +00:00
arcum42 436638af5b Still doing register stuff.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1970 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-06 09:08:36 +00:00
arcum42 6a52fa119d More Vif register stuff.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1968 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-05 21:24:22 +00:00
Jake.Stine 6412271470 Renamed PCSX2_ALIGNED to __aligned and removed the need for excess parenthesis and oddball qualifiers. Left the old macros in Pcsx2defs.h for now, just in case. Redid some of the storage organization of microVU and iFPU consts and temporaries while I was at it, using structs instead of naked vars -- should improve cpu cache behavior a wee bit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1959 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-10-05 02:15:49 +00:00
arcum42 c97498d1f6 Assorted header cleanup.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1921 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-27 00:11:09 +00:00
Jake.Stine f460985004 Same general cleanups (mostly to the VU interpreters), but on trunk this time. :) Also Fixes Issue 417 (I hope)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1900 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-21 14:19:49 +00:00
Jake.Stine 380a66301f Fixes some warnings and a compilation error in Intel C/C++.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1798 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-09-09 10:38:40 +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
arcum42 2b57f23634 Changed the chcr stuff over to bitfields, and got various other bitfield stuff ready for later on.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1705 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-29 00:35:20 +00:00
arcum42 be6c314e27 Various changes that were accumulating. Broke off Gif.h from GS.h. Changed some defines to enums. A few other minor things.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1676 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-25 09:19:45 +00:00
arcum42 44bb5cdbb5 Odds and ends. Various defines involving vif->stat are now enums, and are now used in various places. Added a new file to GSnull. Moved the new Vif functions to Vif.h.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1670 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-08-22 09:52:00 +00:00
refraction 0f30bf62b5 COP0.cpp: Updated the commented out Perf counter code to work on the newer builds, also removed the line which stopped them updating at all if the interrupt wasnt on.
Others: Fixed a couple of unpack bugs, tried to tackle an MFIFO bug with Tekken Tag. Also re-jiggled a few bits on my recent changed, please negative if it breaks anything.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1400 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-06-19 03:13:03 +00:00
refraction dfd433993f Minor bugfix for unpack mode 2
Fixed split videos in Gradius V
Fixed Spyro hanging problem in Issue 112
Put in a hacky fix for FFX videos into IPU to compensate the spyro fix (which is actually correct).
Implementing unpack overflow protection (Guitar Hero 3 & Toni Hawks Project 8)
Writing XGKick to a temp buffer before sending to the GS (part of the GH3 / THP8 fix)

Note! THP8 and GH3 will STILL crash with any VUrecs on and MTGS on, these must all be OFF.  Also use GSDX in software mode with the NLoop hack on for now. Slow i know, but it works :P hopefully we can fix the rec side of it soon.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@989 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-04-16 22:33:18 +00:00