Commit Graph

1128 Commits

Author SHA1 Message Date
Jake.Stine 729d90c1ce microVU:
* Smartened up the microprogram cache.  Programs are (quite accurately) selected based on how often and how recently they have been used.  Solves constant recompilation issues in games like FFXII and Tekken 5 [but not the SPS, sorry!].

* Changed memory allocation so that microprogram blocks are allocated *on demand* -- this saves a lot of memory and makes it possible to test 64-program caches (which would previously fail due to exceeding 2gb ram allocations!).  Also fixed a few small memory bugs in Init/Alloc, and made it so mVU only allocates memory once instead of on every reset. :)

* Tweaked uses of progSize in microVU.h so that it's consistent [all instances of progSize are (vumem_size / 4) now]

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1180 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-14 19:34:17 +00:00
gabest11 5648d07b96 GSdx: more refactoring (aka search and replace)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1179 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-14 16:41:52 +00:00
cottonvibes 40447aabc1 microVU: fixed a bug in the Jump opcodes. this probably fixes a lot of problems in games (grandia 3 intro works properly now, ffxii shows more stuff in-game, etc...)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1178 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-14 08:56:50 +00:00
cottonvibes b3bdaab4f0 microVU:
- Implemented Nneeve's logical min/max algorithm. This should fix the problems with DaZ and mVU.
- Applied a patch by Gigaherz that more clearly distinguishes Immediate values in microProgram log files.
- Added a speedhack to disable the logical min/max code. (see below)

Note:
From my testing, using DaZ on mVU doesn't do much. However I have an AMD cpu, and they don't benefit as much as Intel C2D's from DaZ. So this could be effecting results.

The logical min/max code is SLOW, and the little-benefit I get with DaZ means I get better performance with DaZ off and the min/max speedhack (which disables the extra min/max code).

It would be nice is someone with an Intel C2D can compare the speed of:
-mVU normal without DaZ
-mVU normal with DaZ
-mVU min/max speedhack without DaZ
-mVU min/max speedhack with DaZ


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1177 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-14 07:36:10 +00:00
ramapcsx2 3c715556e9 microVU: due to the 2 flag fixes the hacks can go now :p
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1176 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-13 12:15:41 +00:00
sudonim1 8385a8166f And the same typo elsewhere.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1175 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-13 11:30:02 +00:00
sudonim1 b1ddb5990c Found the typo responsible for the clipping bug.
Changed a few lines from cotton's idea of readability to mine, at least 
until cotton reverts it.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1174 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-13 11:00:03 +00:00
cottonvibes d363c21e8f microVU:
-increased rec-cache so GOW2 should be happy (untested)
-hacked-fixed some problems for now that I'll be working on properly fixing over the next few days.


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1173 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-13 05:43:40 +00:00
cottonvibes 9e1b3fb33e microVU: fixed a few problems...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1172 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-12 08:21:44 +00:00
gabest11 29d11c8137 GSdx: small fixes
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1171 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 21:10:08 +00:00
arcum42 a17abfa76e Fix up r1169 a bit, and a few minor changes.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1170 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 12:12:56 +00:00
arcum42 6083e3a643 Linux: Add -m32 to the compiler flags of pcsx2 and all plugins.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1169 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 10:44:12 +00:00
gabest11 d3547e0662 GSdx: trying to get rid of windows dependencies, still many classes to replace :P
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1168 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 08:18:00 +00:00
cottonvibes ef01d581b0 microVU: coded a speedhack that optimizes out all status flag updates in a microprogram if the entire program doesn't read the status flags.
FFX's intro got a 8~10% speedup with the hack, and it should be safe for 90~95% of games.
It can be enabled in microVU_Misc.h


git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1167 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 06:15:16 +00:00
cottonvibes d19229d334 microVU:
- Major flag algorithm rewrites (work in progress)
- Abused macros to create my tables, knocking off 800 lines of code.
- VU0 and VU1 have different dynarec cache sizes now (vu0's is 1/4 the size of vu1's)
- Minor changes...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1166 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-11 01:39:33 +00:00
arcum42 25090899ce Zeropad: Experimental. Enable analog key controls in Linux. Currently does not work well if you also have actual joysticks set up as analog controls.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1165 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-10 05:57:57 +00:00
arcum42 ae975a354e Zeropad: More cleanup, and some incomplete work on the POV code, which looks like it was only halfway implemented.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1164 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-09 22:44:06 +00:00
arcum42 05867d69cb Zeropad: Add analog.cpp & analog.h.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1163 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-09 20:07:54 +00:00
arcum42 0b23b77051 Zeropad: Continuing to do some cleanup.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1162 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-09 20:06:57 +00:00
gabest11 6ea395be4b GSdx: optimizations here and there
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1161 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-09 08:37:02 +00:00
arcum42 e10ca2ba49 All right, this version of GSnull doesn't assert, and if you finagle enough with LilyPad's settings, you can get the keyboard to work (but not a gamepad). Occasionally causes the pad plugin to close on starting emulation.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1160 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-09 00:03:27 +00:00
cottonvibes f4c3560c75 microVU:
- mac flags now stored memory instead of in upper 16 bits of GPRs.
- minor changes...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1159 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 23:05:43 +00:00
arcum42 85c8e4c4af Mostly port the GSnull plugin to Windows. Currently asserts on startup in Windows about GSirq not being null. (Though it works if you hit ignore.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1158 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 22:40:56 +00:00
arcum42 a80dfabca8 Initial commit of a new null plugin, GSnull (Linux only until I get around to porting it). Yes, it's just what it sounds like; running the pcsx2 without any graphics. May be useful under somewhat bizarre circumstances. :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1156 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 12:58:57 +00:00
arcum42 b57e5f5989 More cleanup on iVUzerorec.cpp. Fix a few things from the last commit.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1155 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 05:46:53 +00:00
cottonvibes f63bea379a better fix for my elf-fix a while back.
basically if you run an elf file now, the cdvd plugin will attempt to open once, and if it has an error (like loading no-game), it'll let you continue running the elf file, and it won't bug you again.
but if it did open successfully, it'll initiate the cdvd plugin normally (allowing elf files to read the cdvd contents, like the Snes emu for ps2...)

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1154 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 05:44:02 +00:00
arcum42 e330c57556 Minor bug fixes. Reformat iVUzerorec.cpp & get rid of all occurrances of the FORIT macro.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1153 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 04:44:32 +00:00
cottonvibes afc5760e6c microVU: Cleanup and added microVU_Flags.inl to the project.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1152 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 04:16:25 +00:00
cottonvibes 912185348e microVU:
- Fixed up some code so blocks are recompiled less often.
- Tweaked flag code.
- Minor changes...

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1151 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-08 02:12:02 +00:00
arcum42 0005b749b5 Zeropad: fix minor typo in previous commit that got copied and pasted several times.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1150 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 23:49:12 +00:00
arcum42 a0a4abdcc1 Zeropad: Break up linux.cpp into multiple files.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1149 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 23:37:57 +00:00
Jake.Stine 8ff0e69f0c Gah... dumb mistake. >_<
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1147 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 15:58:51 +00:00
Jake.Stine 9c0a978d5c IopMem: Added FireWire port handling to the new IopHardware handlers (oops!).
EErec: Removed an instance of duplicated cycle counting for split blocks.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1146 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 15:56:10 +00:00
gabest11 c64691811a GSdx: 3.4.9. Texture Function => Decal/TCC=RGB: Av = At (gs_user v3 and v5) or Av = Af (v6)? Seems it was Af... Sonic unleashed was one of the games relying on this setting, could not find any other yet. Also removed the green stripes, shadow sw-mode only.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1145 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 12:34:58 +00:00
arcum42 6dfe946e7f Linux: These weren't intended as externs...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1144 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 11:15:08 +00:00
Jake.Stine 91a4ee79cc Made some tweaks to the EErec block manager in hopes of resolving Issue 208 [Soul Calibur 3 missing gfx], involving the willbranch3 logic path.
Emitter: Added xJcc8 / xJcc32 functions for doing modified jump targets.

Also: minor cleanup to recent counters fixes (nothing relevant, just reduced out some copy-paste jobs for clarity).

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1143 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 08:21:57 +00:00
gabest11 3202a42578 GSdx: Reworked the sw renderer texture cache a bit, at page level its correctness was questionable if the base address was not page aligned, so now keeping track of blocks (32x more), may be slower or faster by a few percent (number of blocks vs. finer resolution).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1142 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 06:32:10 +00:00
cottonvibes e6b9275c13 microVU: various minor fixes that effected big stuff...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1141 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-07 01:57:13 +00:00
refraction 9541e502c2 A few minor counter changes to prevent scenarios where branch targets could be missed on counter resets/target changes, also a situation where the vsync counter could cause repetative branch tests to be triggered in quick succession on cycle counter overflow
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1140 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-06 23:51:27 +00:00
Jake.Stine 2bf04882e3 Some code cleanups for the new vtlb optimization (no intentional functional changes -- just deleted unused code and converted all of vtlb to the new emitter syntax. Let's hope I didn't typo anything!)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1138 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-06 12:37:37 +00:00
Jake.Stine 1cf028ccf5 Optimized vtlb direct path memory operations using some crafty asm code. Expect 2-3% speedups in most things, and perhaps more in some FMVs.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1137 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-06 02:15:43 +00:00
cottonvibes 6a075aca03 pcsx2:
- PCSX2 would repetitively call CDVDopen if loading an elf file and your cdvd plugin didn't have an ISO already pre-loaded. Basically I had to switch to CDVDnull whenever I wanted to load an elf... well not anymore xD

microVU:
- Implemented the VI regs thing where if an opcode tried to access vi regs 16~31, the VU's should return vi0~15 (viReg & 0xf); technically it should never happen, but from my tests the BIOS seems to do this... so maybe some rare games do it too... 
- Our VIF code apparently uses VU cycles for some stuff, so I now update the cycles variable VIF relies on.
- Minor Optimizations

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1136 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-05 02:25:48 +00:00
Jake.Stine a7cbcae4be Small speedup for the EE/IOP recompilers, by removing the legacy limit on the number of recompiled blocks (was causing recompilers to reset the code buffers way more than necessary).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1135 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-05 01:26:18 +00:00
sudonim1 002b9af006 This is why a type safe emitter is important.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1134 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 20:14:37 +00:00
Jake.Stine 3647a635bc Apply recent Iop HwRegister handler changes to the EE's mapping [EE has direct access to IOP memory and registers through a special tlb mapping, intended for ps2dev debugging, and generally used by bios only during boot-up).
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1133 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 19:04:21 +00:00
sudonim1 db41e52940 Apparently the MSB of integer register specifications in VU micro instructions is ignored, making the upper 16 registers mirror the lower 16. Changed all relevant instructions to reflect this.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1132 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 18:21:44 +00:00
Jake.Stine 8ab8adabf1 Improved handling of jNO_DEFAULT so that it performs a sanity check in Devel builds [currently applies to Pcsx2 only since we don't have a standard define macro for devbuild in the plugins].
Cleaned up and abbreviated logging for the new IOP HwRead/Write handlers.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1131 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 14:12:21 +00:00
arcum42 b02d6a19dd ZeroPad: Revert the changes to the Windows files in ZeroPad, and ifdef off the changes in the common areas, as the Windows version of ZeroPad is clearly only working by voodoo and bailing wire on Windows. (Note: unable to reproduce ZeroPad working properly in any revision [including playground days] on any version of Windows available. Likely because I don't have any poultry handy to sacrifice.)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1130 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 10:31:18 +00:00
Jake.Stine 66a8c03ded Fix bug from r1116 [essentially a misplaced jNO_DEFAULT directive].
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1129 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-04 02:06:35 +00:00
arcum42 3a7865ac3f ZeroPad: Patch to fix a bug introduced in r1125.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1128 96395faa-99c1-11dd-bbfe-3dabce05a288
2009-05-03 19:30:38 +00:00