PCSX2 Documentation/Google Code svn repository comments archive 4750 to 4999

From PCSX2 Wiki
Jump to navigation Jump to search

Revision 4750

onepad:
* fix forcefeedback. It works now, albeit it slow down the emulation...
* Add an option hack for ds3 usb drivers
gregory....
Note: the bluetooth driver (qtsixa) needs some patches to work with SDL (and so PCSX2).
gregory....
Hum, I'm curious if the slowdown of forcefeedback is specific to my pad driver or the current infrastructure. Feedback are welcome :)
gregory....
Qtsixa's author integrates PCSX2 patch in his git repository :) Hopefully it would make the next release in the coming week.
wing...
I was never able to use diagonals on OnePad. I can set all the buttons just fine but on the D-Pad it only reads Up/Down/Left/Right and not a combination of Up+Right or Down+Forward in-game.
It doesn't happen on ZeroPad tough.
gregory....
thanks for the feedback. I did not test it (can break everything), maybe this small patch can help:
--- plugins/onepad/Linux/linux.cpp (revision 4754)
+++ plugins/onepad/Linux/linux.cpp (working copy)
@@ -132,7 +132,7 @@
{
int value = SDL_JoystickGetHat((pjoy)->GetJoy(), key_to_axis(cpad, i));
- if (key_to_hat_dir(cpad, i) == value)
+ if (key_to_hat_dir(cpad, i) & value)
clear_bit(status[cpad], i);
else
set_bit(status[cpad], i);

Revision 4751

cmake: * improve gtk hack to be compatible with previous cmake version.
* Add some number to the plugin .so file.

Revision 4752

SPU2-X: Improved (hopefully to perfection) the reporting of NAX by moving code
around in the decoder. Fixes Magic Pengel, hopefully no regressions (but it
does intentionally change when some IRQs fire a bit so there might be some, but
if so this is a step towards fixing other finicky games).
ramapcsx2
Another long timer :)
Autor...
BGM Loops in God of War 1 & 2 Fixed *Finally* thanks a lot
ramapcsx2
That'd be awesome!
It's hard to tell with this game but yea, it's still running normally here too :)
sudonim1
Huh, you're right, that does seem to be fixed. I was NOT expecting that.
I wish I could redo this commit just so I could put "fixes god of war" in the commit message.
KrossX3
It seems this also fixes the BGM issues in Tales of Destiny Director's Cut. =O
ramapcsx2
Just need the English translation now! :)
agameofp...
Awesome work, this also fixes the audio desync problems in Pop n Music 13 and 14 in issue 994 , the music now syncs perfectly with the notes. Now there's only a weird issue where the game only scores the notes if you press them right at the bottom of the screen instead of when they touch the red bar, but that's probably another issue entirely, maybe a graphical one. Aside from that, they're perfectly playable now.
pcsx2gu...
Woo finally I'll go ahead and finish God of War, keep it up guys :)
konaj...
the bouncer still has beeping audio issues - anyhow nice work with god of war fix.
emuk...
Zero:akaichou black screen again from this commit, so Neutral
godofdr...
thanks you very much i have been waiting a long time for this fix in god of war 2 keep this perfect work.
avihal
FYI, loading a savestate made with earlier SPU2-X causes pcsx2 to crash (only tried 2 and both load OK with spu2x r4600 and crash with latest spu2x).
The messages at the console stop when loading spu2x:
EE/iR5900-32 Recompiler Reset
Loading GS
Loading PAD
Loading SPU2
avihal
For the sake of the report's completeness, savestates saved with latest spu2x load OK with the same latest spu2x.
avihal
Note, the crash was tested with spu2x r4754 (not this revision).
sudonim1
Oh, 4754 would indeed break savestate compat.
And crap, zero 2 is indeed broken. I must've screwed up, I'll check the code. (Entirely possible that the fixes from this rev will disappear.)

Revision 4753

SPU2-X: Fix minor register logging bug (probably not the only bug in this code)

Revision 4754

SPU2-X: Quality fix (?): take crest value to mean the electronics definition and
clamp modulated pitch to [0,0x3fff] on the basis that the SPU2 probably is
incapable of decoding two words of samples for each voice in each tick.
Honestly this is still guessing, we only really know that it was wrong.
Test FFX tone when it's your turn to act, FFX underwater music?, xenosaga movie
skipping sound effect, god knows what else.
sudonim1
Actually this doesn't even match the electronics definition, but I dunno what's needed here. It can't be anything complicated to calculate or the real SPU2 wouldn't use it.
andutrache
hmm sound seems to be more clear than before, it sounds good in all games i tested
sudonim1
Well, this isn't used much at all so be absolutely sure you know what to test in which games.

Revision 4755

SPU2-X: Refix Zero: Akai Chou (and others fixed in r4735 probably). It was a
slip in the dead voice code.
chenxu...
This is really great! Finaly, the Japanese version of crimson butterfly is running! Good works.
Once FF-X2's movie is also fixed, I will be fully satisfied.
sudonim1
FFX-2 is a terrible game and best left broken, but sadly it'll get fixed as collateral damage sooner or later.
ramapcsx2
lol
prison_b...
@sudonim1 how is it possible that someone doesn´t like ffx-2?
:P
+1 for the fix ;)
andutrache
its very possible, i hate all FFX's.
fagoa...
Agreed, everything after CT was such a letdown XD
SNP_Tira...
+1 to FFX-2 being a terrible game (although I love the battle system... shame it's shackled to a game that is otherwise so horrible). +1 to SPU2-X fixes too.
chenxu...
Well, I love the game, a bright side of the world. Sorry to start this. My bad. Let's respect everybody. Thanks.
ramapcsx2
It would be okay if it had another title and no connection to FFX, imo.
But yeah, seeing this intro sequence was a bit devastating :p
Funny how FF12 has the same problem: Nice game but not a FF title.

Revision 4756

SPU2-X: Bump savestate version since I broke compatibility with r4754
Arkai...
sudonim1, the god of the sound.
One question, it's difficult to add the Reverb x2, x4 based on the actually method.
It's because, for me, there are some games that sound so... dry.
Sorry for my english, surely there are things traducted mmm spanishized.
Thanks a lot.
sudonim1
You're talking about boosting the reverb effect I guess. Our current code has issues. Major issues. Like probably being completely wrong. We need to do some serious testing.

Revision 4757

onepad: support of diagonal in d-pad.
wing...
Thank you!
gregory....
Your welcome, I tested it only 3 minutes this morning. Tell me if you have any issue.
wing...
It works fine!

Revision 4758

SPU2-X: If a bit we don't understand goes high, clear a register we don't
understand. Don't ask me, but it seems to make the BIOS happier and Devil May
Cry works again.
ramapcsx2
// no clue
// yeah
// whatever
xD
(Btw, it was Devil May Cry Pal, a game that always had this "timing problem".)
godofdr...
hi, i just wanted to say thanks for all the bugs you have been fixed and all the time you have been worked on the spu2x so i wanted to say that you check if you can add and copy some of the codes of the spu2null, peopsspu2, zerospu2 plugins becouse i have been seen that on the spu2null plugin wos the BGM Loops in God of War allready fixed so chack this out and thanks again.
and sorry for my bad english.
sudonim1
Looking at the SPU2null code, it's full of incorrect guesses and the code is unreadable and unsafe. There can't be much to learn from it, anything that worked with it worked mostly by accident.

Revision 4759

SPU2-X: Testing showed that writing effect area registers is not entirely
ineffective as previously assumed while effect area writing is enabled on that
core. The new assumption is that internal registers reflect the values of the
external ones while effect area writing is disabled. Also increased logging
level of these registers.
Save state compatibility broken.
Fixes issue 796 , grandia 3 noise before squenix logo.
l3illyl...
Thanks for the fix! It came just in time as I started playing this game the other day.
Does this also fix the same noise occurring randomly throughout the game and in battles? It was the same type of noise that happened when booting the game. I'll test it later tonight.

Revision 4760

SPU2-X: The reverb registers in the register pointer table are inconsistent with
the register definitions, they have always been inconsistent, everything we have
done to fix reverb was invalid because of this. Not sure where we go from here.
ramapcsx2
This was the big problem :)

Revision 4761

SPU2-X: Both cores now (ignore previous commit)
ramapcsx2
This was the big problem :)

Revision 4762

SPU2-X: Reverted back to the last version of the reverb engine before the
rewrite plus some backwards lerp fixes (accident in optimisation in r2089).
Thanks to gigaherz (I guess? This is mostly your fault.)
gigaherz
Well I commited an untested and mostly broken reverb engine, so I had to help undo that. ;P
sudonim1
I'd like to apologise for the jab in the commit message, was just feeling a bit frustrated after finding that years old bug which caused so much unnecessary work.

Revision 4763

SPU2-X: Oops, I'm the one who spotted this when we were discussing it too.

Revision 4764

SPU2-X: Tried to fix the incorrect bitshifts back from when Neill's code was
optimised while the registers were broken so it wasn't testable. My maths is
probably off, the code needs reviewing. The "- 1"s are so that -1 * -1 = just
short of 1 instead of -1 (overflow).
With this, reverb maybe sounds somewhat like the PS2 for the first time ever!?
ramapcsx2
It's close.
Biggest chapter in SPU2-X history comes close to an end with the recent fixes :)
sudonim1
Dunno if that chapter's over yet, but at least it's coming to a close. Can't be much that's horribly broken now.
Cardboar...
HUGE difference this makes after a quick comparison with r4756. Going to test more tomorrow, but seems near perfect. The Custom Reverb option can be removed at the very least. Thanks for all of your work on this.

Revision 4765

SPU2-X: I was being silly, those -1s are unnecessary (I was thinking we were
downcasting for some reason).
godofdr...
very good job keep going.
kaboo...
yo SPU2-X seems to be missing a dependency for the x86emitter didn't look at the code don't know when or why it happened but it's missing it in the trunk
ramapcsx2
It builds fine here in devel and release.

Revision 4766

GSdx: CRC hackixes for...
The Lord of the Rings: the Third Age (Removing fat stripes on screen).
Digimon Rumble Arena 2 (Half screen issue).
Star Wars - The Force Unleashed (Hiding HUD and 3d issues. Not perfect and
NTSC-U only, not sure if it works with PAL).
Star Wars Battlefront 1/2 (Huge VRAM usage issue. NTSC-U only, not sure if it
works with others).
Black Hawk Down - Team Sabre (Half screen issue and removes the night vision
filter which was broken and using a lot of VRAM).
Minimal changes to other CRC hackfixes and GameDB.
gladiato...
NTSC-U only means that you need the CRC of the PAL versions?
I'm asking it 'cause I don't want to test Battlefront 1 or 2 PAL (English, Italian & Spanish) if is not fixed 'cause it freeze my computer.
The same for games like the Third Age (PAL Spanish version), Spider-Man Web of Shadows (Spanish).
So i can provide you those CRC's. Please let me know.
PS: Those kind of fixes can be made for Jackie Chan and others half screen missing issue?
shadowladyngemu
Third age should be working for the PAL version too, if your CRC doesn't match the one I set for it then sure could use your CRC.
I didn't add the Star Wars Battlefront PAL CRCs cause I'm not sure it'll work for them, only way for you to check it would be adding the CRC and risking the freeze as you said. Otherwise you could also provide a GSdump for those and spider-man web of shadows (start the game in software mode then in game press shift+f8 and a .gs .obj and .bmp files should appear in the "snaps" folder, just compress them with 7z/rar and upload them somewhere)
Jackie Chan adventures has a different problem and currently has a hackfix for it too, the hackfix should work for all versions so if you can provide the CRC please do :p
And yes similar fixes could probably be made for other games with same problems.

Revision 4767

SPU2-X:
Removed the fake reverb since the real stuff started to work :)

Revision 4768

SPU2-X: Removed reference to x86emitter as we don't seem to use it any more
(some brief optimisation experiment a while ago?)

Revision 4769

SPU2-X: Another error in the bitshifts, not sure if it's mine or older.

Revision 4770

SPU2-X: More parens needed, always more!

Revision 4771

SPU2-X: We had two SPDIF modes reversed. I don't really understand the SPDIF
modes but these are the bits the library sets. Fixes Gradius 3+4, issue 925 .
refraction
That define should probably be renamed to SPDIF_MODE_USE_BITSTREAM or something really, for consistancies sake.
sudonim1
Eh, I don't know what the bits actually do so I'm leaving sanitising this until I understand the SPDIF functions of the SPU2 better.
gigaherz
"bypass" in there means it bypasses core processing while it's enabled
gigaherz
I hate googlecode not having an edit button...
As far as I know the spu2 has two "bypass" modes, each tied to one of the cores:
One is the pcm bypass, used by the bios' CDDA player. That mode uses 32bit words with the high 24 bits being output to the 24bit DAC in the spu2.
The other is the spdif bypass, which outputs the data into the spdif optical output.
Those flags specifically, refer to what kind of data is the spdif going to output: a 4-channel linear pcm stream, or a compressed bitstream in DTS or Dolby Digital. The data probably uses different interpolation settings and maybe even different bit rates depending on the mode. I never figured that out.
shadowladyngemu
Fixed Grand Theft Auto - Vice City too :)
refraction
bugger me! i knew it was a sound issue, but didnt think something like this would fix Vice City, thought it was an IRQ thingy lol
ramapcsx2
Is it this rev, Lana? The earlier ones make far more sense :p
sudonim1
If there's anything else you know to be a sound issue, please tag it appropriately (SPU2-X, since we do not care about the others and will likely integrate the SPU2 emulation from SPU2-X into the core in the future) in the bug tracker (or create an issue if there isn't one).
refraction
Virtual on mars has a potential sound loop issue, but I haven't checked if that's been resolved yet
shadowladyngemu
Yeh, was this one.
>>If there's anything else you know to be a sound issue, please tag it appropriately
thing is, some older SPU2-X revision let the game go ingame too but it would also run into the loop before, however changing some other settings like EE timing and cycle options would either make it endless loop or going in instantly so it was more random and maybe SPU2-X was just adding to the randomness
but since r4771 it goes in instantly no matter what other settings are set, which makes it almost certain it was SPU2-X, I could make a dump if you guys want to take a look at it or something :p
sudonim1
Well the thing is that this commit affects two things and only two things: sound output, which will never cause any game to hang, and reading the input area... which might.
gigaherz
I'm not sure how the input code looks like atm, but there MIGHT be some differences in the rate at which data is read depending on the mode. That could cause a game to fail if for example spu2-x is reading data faster than it's expected to, and cdvd can't keep up. Probably unrelated but if it was this revision, I'd think more probable its something like that.

Revision 4772

That wasn't supposed to go on the svn :p
shadowladyngemu
my bad :p

Revision 4773

SPU2-X: shifting some code around in the effects engine, any change in output is
probably a bug.

Revision 4774

SPU2-X: Extra clamping. I think we used to have this and it was taken out to
try to boost the reverb.
atia...
wow man, you seriously are on fire ^^
tomaszga...
Thanks for the massive amount of work!

Revision 4775

SPU2-X: Short term reverb quality hack (half the input volume), until we settle
for smth.

Revision 4776

SPU2-X: Forgot to bump the savestate version.

Revision 4777

SPU2-X: Updated the spu2replay engine so it works again. Windows-only still, and
it lacks a proper gui, but it can be used to dump the actions the game is doing
and replay them later without the rest of the emulator.
gigaherz
It's a nice way to listen to games' music, might make a winamp input plugin someday... ;P (don't count on that happening any time soon tho)
omegadox
What about vgmstream?
poisiono...
Intersting Audio-Effects (Reverb based?) sound neat, so i'll gladly add a pre-kick in gigaherts arse as motivation to get that winamp plugin working when time comes ;)
(though i'll probably use it with xmms or such, but still :))
gigaherz
omegadox: As far as I can see, that lib is meant for playing the source files directly. spu2replay's goal is completely different.
It doesn't care about file formats or anything, just of what the games wanted the spu2 to do, and when (register writes, dma writes, ...).
[email protected]: That's part of the reason I decided to get spu2replay working. If we want to fix reverb we MIGHT need to spend some time testing different ways to do "what the spu2 appears to be doing", or tweak some values, and in such cases, its nicer if you don't have to load the whole emulator every time.
omegadox
I see, maybe you can mod vgm to play spu2 dumps :) I see what you mean though, its like the FIFO recorder in Dolphin, in this case you log the commands to the SPU2 chip.

Revision 4778

SPU2-X: Apply Neill's recommended 2/3 multiplier to the input. The results
still are not like on the PS2, but we're now as good as Neill's research allows.
We'll have to do our own from here on.
kaboo...
why "#if 0" and not just comment it out or delete it or is it an actual condition?
if you don't mind me asking^^
sudonim1
I prefer #if 0 to disable code
mailsze...
#if 0 is a precompiler instruction, so the code is not being passed to the compiler. The CPU is not really doing that condition at runtime.
Its just the same as commenting out the code. Just another form of doing it.
sudonim1
It won't do if (0) at runtime either, compilers aren't that stupid. (I couldn't use if (0) here because it's a declaration.)

Revision 4779

SPU2-X: Version bump.

Revision 4780

onepad: create a key_status object to handle key activities with a single
press/release interface
GSdx: remove some linux dialog options which were already controlled by PCSX2

Revision 4781

onepad: slim down a little more the KeyStatus API

Revision 4782

GameDB: Added a lot of games that were missing from the database... still lots
missing tho :p
pg...
Any problems with "Naruto: Uzumaki Chronicles 2 [PAL-E](Multi-5) SLES-55090"?
avihal
Please don't say you did it manually...

Revision 4783

We need to combine these globals into a common struct one day.
This was really unsafe to do. (My fault)
Fixes savestates in Breath of Fire 5.

Revision 4784

Games database: Load from the exe folder (only affects Install mode. Portable
was already OK): Prevent DB-not-found error if previous version wasn't
uninstalled properly.
ramapcsx2
Okay, that's a good one :)
avihal
I hope so ;)
jfre1...
Yay. That bugs been annoying me for ages. Had to have 2 separate pcsx2 folders due to it, just so that it would read the gameindexes.

Revision 4785

Some work on the disc tray code. Got rid of an unsafe global, changed and
commented it a bit.
This is some messy work of mine, gotta admit ><

Revision 4786

Tray code once more:
Added the tray state variable to the cdvd struct, making it safer and taking
care of a previously unhandled situation.
Surprisingly this didn't break old savestate compatibility.

Revision 4787

GSdx: CRC hackfix for Devil May Cry 3, removes bad postprocessing.
Adjusted the SW Battlefront hackfix for the PAL versions (NTSC-U and PAL
versions have the same CRC but use slighty different buffer/texture
addresses...)
shadowladyngemu
Only removed the really obstructive postprocessing in DMC3, the others can be removed with "Alpha hack".
http://i.imgur.com/WeiRm.jpg
http://i.imgur.com/L6GJk.jpg <-- with alpha hack
godofdr...
thanks for the fix and i wanted to ask one thing if you are man or woman?
becouse your name is with lady and i never see some programar with is woman
so i wanted to now if this ok for you
and sorry for my bad english.
wespipe...
Thanks for the DMC3 fix! Always welcome!
Is the screen still squashed?
shadowladyngemu
@godofdrive:
I'm a woman and I'm no programmer :p
@wespipes69:
Not for NTSC with the CRC hack, for PAL only on the 60Hz mode but the 50Hz one is fine.
Hefra...
A thousand thanks for the DMC3 hack :)
I've been meaning to do this myself for months, but I could never find enough time to get round to it. Now I still don't have the time, but at least I also don't have the problem :)
Thanks again!
serban.a...
also shadowlady is the name of an anime series:P
godofdr...
ok, so how you shadowlady now how to fix some bugs that man cannot fix can you explein it to me.
thanks and sorry again for my bad english.
pcsx2gu...
ok, so how you shadowlady now how to fix some bugs that man cannot fix can you explein it to me.
thanks and sorry again for my bad english.
It must be because she's a woman!!111 A witch or something. -_- Give us a break dude.
prison_b...
I think it actually looks cool without the alpha hack (the sunny effect) :P
+1 for the fix tough :D
godofdr...
ok sorry man i just very love the pcsx2 so sorry.
and take the break that you whant i dont mean to Disturb you.
sorry again
lemuel2010
CRC hackfix very good!!!!!!
ramapcsx2
Women coders aren't even *that* rare.
gladiato...
Devil May Cry 3 works perfect.
Awesome!.
Thanks also for the other CRC's that you added.

Revision 4788

whoopsie
miser...
Hehe:3

Revision 4789

onepad: remove deadcode
zzogl-pg: disable opengl3 context creation for the moment (crash with geforce7)

Revision 4790

GSdx: CRC hackfix for Burnout games, removes garbage from screen.
shadowladyngemu
Not sure what's with the black sky in this games...
If you start a race in hardware mode, sky is black and if you switch to software mode sky remains black.
If you start a race in software mode, sky appears and if you switch to hardware mode sky remains working even for other races...
maksre...
devil may cry fixed menu
desaste...
hi shadowlady, i don't know if this helps but another way to make the garbage disapear was by skipping the bios, this helps not only in the burnout games but also in god of war with the fog... but then the language is only in english, which kinda sucks for the pal users in one of the not english languages.... maybe you can combine the two methods or somwhat...
lemuel2010
Good!!When Jak's graphic fix?
shadow0...
Gabest fixed a bug with a similar behavior (texture corruption?) for Gunbuster, basically the background, which could be a skybox would be corrupted if entering the game on hardware I believe, switching to software didn't fix the output, it was fine when entering on software, and changing to hardware then produced no error.
I am not sure if it was a gamefix though, it could also be completely unrelated.
shadowladyngemu
May be related, but unfortunately it wasn't a game specific hackfix :p
grove4...
Nice one but it does not work on my version
(Burnout 3 - Takedown PAL German CRC:CE49B0DE)
could you add it to the CRC list in one of your next patches
Thanks

Revision 4791

GSdx: CRC hackfix for Midnight Club 3, fixes the huge vram usage when moving.
Small change to the Burnout hackfix, was skipping too much for NTSC.
andutrache
Burnout fix working like a charm :) .
beatle...
If only you could fix the black vertical stripes in Tekken TT and Tekken 5 at high resolutions that would be amazing
marius.h...
Since you seem to do some CRC hackfixing right now, could you please take a look at this issue? https://code.google.com/p/pcsx2/issues/detail?id=1050&colspec=ID%20Status%20Priority%20Component%20Plugin%20Owner%20Summary&start=100
Refraction thought it might be a CRC problem, but he seems to have forgotten about this by now^^.
animatri...
in mid night club 3 dub edition im still gettin huge slowdowns...
do i have to enable something for it to work?
refraction
marius: You never gave us your CRC so i couldnt check :P only the US versions have been added here.
marius.h...
Ah OK^^. Sorry for the misunderstanding then :). But how do I create a CRC? I searched for this before but I only really found a single program someone coded for which I unfortunately lost the link by now. But I do have the CRC it gave me for Lucifer's Call still here: 0x4bdf6d2c
But I'm not sure if this number is right or if it was a good program I used. Can you perhaps link me one please?
shadowladyngemu
@animatrix999:
It's a CRC specific gamefix, if your game has a different CRC or is a different version (could be PAL) then please post the version and CRC for it here so they can be added later.
shadowladyngemu
That's the "Remix" version and that one has the fix...
When you run the game and get those slowdowns what do the EE/GS% in game window say?
animatri...
when im driving
EE:35-50%
GS:95-100%
hope dis helps
stian...
Hmm, I'm not sure how this works... am i suppose to create those files, save them with the other GSdx files and then it works? ^^
I play Lotr The third age, and i have those black vertical stripes all over, so anoying. got here but im not sure what to do xD Plz help :)

Revision 4792

whoops...
it kinda works better if you make the hackfix use the function...
GSdx: Dragon Ball Z Budokai Tenkaichi 2's hackfix works with NTSC version now
too.

Revision 4793

Lilypad: Disable a confusing control for now.
Also a small comment on GSdx's texture cache lookup.

Revision 4794

Lilypad: Don't screw users which already had the problematic option set.

Revision 4795

Lilypad: Really hide the option. Sigh :p
avihal
:P
konaj...
Why disable this? This allows the plugin to auto enable analog mode rather then having to manually assign and press a hotkey, lilypad is also a psx emu compatible plugin and this option helps since most psx emulators disable analog by default.
jfre1...
If that's the case I have to second konaj on that one.
ramapcsx2
It works for PSX emus? Didn't know.
We're disabling this option because people enabled it, thinking it would be a good idea.
Unfortunately it kills the input in many games and people simply don't remember turning this on.
Personally, I don't care about PSX emulator compatibility.
There's tons of nice plugins for these already.
andutrache
erm i really suggest you guys read the title of the page again, this is a PS2 emulator SVN, its purpose is to help post revs that raise compatibility of PCSX2.
Any other software is out of the question.
If you want a pad plugin for PSX use SSSPSX Pad Plugin.
konaj...
Disagree, just because it's in the pcsx2 svn doesn't mean its for pcsx2 only, this is the only svn for the plugin and the original authors intended it to work with psemu emulators too. same goes for gsdx and peops spu, ripping out the psx support code wont speed up or raise compatibility any.
lilypad is the only plugin that can get the force feedback settings right for a lot of controllers/adapters for psx and ps2.
(SSSPSX Pad Plugin and most others mess the motor sequence up)
anyways since the original author designed this plugin with ps2 in mind first that option must also have some relation to the ps2...I always had it enabled and never had a problem.
ramapcsx2
Try to play ICO or any other game written with a restrictive pad library then.
The code for this option is broken somehow.
Until we can figure it out and correct it, this game breaking option is best hidden from users.
ramapcsx2
Oh and yea, as far as I'm concerned, this is a PS2 plugin only :)
GSdx supporting PSX emus was a bad idea as well.
Intellisense still likes to direct us to PSX functions, code generation takes longer and most importantly: There's several better plugins already available.
PEOPS SPU (1) is a different plugin entirely.
miser...
I really doubt that people who use this for psx emulators wouldn't know how to revert that change for their own use.
avihal
Please check r4797 and comment back if it's working as desired in PS1 emulators.

Revision 4796

GUI: Open the main window (if required) before the console window. Results: 1.
Taskbar order is now better. 2. Console window gets minimized with the main
window. Thanks to ShadowLady for the code.
ramapcsx2
Seems good so far :)
miser...
Nice ;3, never noticed it wasn't minimizing together before O.o
vsu...
If you ask me it works even worse now.
The gui was always getting in the way and when I try to minimize it,it was also minimizing the game window but now when I try to minimize the gui,it's minimizing everything(all 3 windows)
Why windows should be connected?
This is how it works now
1.Minimizing the game window - minimizes only the game window(that's perfect)
2.Minimizing the log window - minimizes also the gui
3.Minimizing the the gui - minimizes the gui,log and the game window
This is how it worked before
1.Minimizing the game window - minimizes only the game window(that's perfect)
2.Minimizing the log window - minimizes only the log window(that's perfect)
3.Minimizing the the gui - minimizes both the game window and the gui(here's the problem)
avihal
[email protected], first of all, minimizing the console doesn't minimize the GUI. Only change is that when minimizing the main window it now also minimizes the console.
The concept is that the main window minimizes everything, but each window minimizes only itself. Untill now, the console was the exception, and you'll have to agree that it's an unreasonable exception.
vsu...
I know but how I'm I suppose to to minimize only the gui without minimizing everything else?
Now if I want to minimize only the gui,I have to restore both the game window and the console
Wouldn't be better(if possible)to have an option in the pcsx2 ini for when it's set to 0 to minimize all when you try to minimize the gui and 1 to be able to minimize every window separately.
This "problem"(for me)was always bugging me and now it's even worse...when I'm constantly switching windows(when I'm creating cheats or test something)
avihal
Each new option adds more code and more potential for bugs. Sometimes it's worth adding more options, but at some point the developers have to decide what stays as an option and what gets hardcoded into the application. On this case, my personal view is it it shouldn't be an option (however, if I'm convinced that most users would benefit from a change, we always listen).
I think that most users would benefit from this more consistent behavior, however, you can compile the code yourself with the following modifications to make both the GS window and the console window stay open when minimizing the main window:
1. At file AppInit.cpp, replace the line:
m_ptr_ProgramLog = new ConsoleLogFrame( GetMainFramePtr(), L"PCSX2 Program Log", g_Conf->ProgLogBox );
with:
m_ptr_ProgramLog = new ConsoleLogFrame( NULL, L"PCSX2 Program Log", g_Conf->ProgLogBox );
2. At the file FrameForGs.cpp, replace the line:
: wxFrame(parent, wxID_ANY, title,
with:
: wxFrame(NULL, wxID_ANY, title,
I only tested it a little so I'm not sure what other effects it might have, but it seem to work.

Revision 4797

Lilypad: re-enable "Auto Analog" option, but only use it when not in PS2 mode
(in PS2 mode this option is ignored). Tested with ICO - previously wouldn't
accept control input when in autoAnalog mode, now always works.
miser...
And so everyone happy :P
konaj...
thanks for the fix tested with chrono cross and the analog option was lit up automatically so looks like its working with ps1, the option is also visible in lilypad config.
ps2 mode is greyed out & disabled.
nice work :)

Revision 4798

x86 emitter: fixed three encodings for shrd and shld, as in issue 1076 . Thanks
to "firnis" for finding this.
sudonim1
Note: won't change compatibility, it'll just prevent crashes if we choose to use these instruction formats in the future.
sudonim1
Now someone should inform intel that the opcode field in their instruction set reference manual is wrong, which is probably how this happened :P
gabest11
If I look at xbyak, it should be OpcodeBase + (clreg ? 1 : 0).
gabest11
Which actually makes it correct, since it is the cl version.

Revision 4799

EE: reviewed, simplified and corrected (at least three bugs including issue
1078 ) left and right loads and stores. Probably a waste since there's a much
smarter way to do these.
sudonim1
I missed something.
sudonim1
Oh right, ebx has a special use in our code.
sudonim1
...hmm, and in addition to that I think I've found another recompiler bug outside this code.
sudonim1
Yes, I'm pretty sure I've found a constprop bug, investigating further.

Revision 4800

EE: Put _Rt_ checks back in the load instructions because as silly as it would
be we must avoid potentially writing to r0.

Revision 4801

EE: Fixed my use of ebx in a load/store implementation (reserved for return
address) and changed _deleteEEreg to do what it says when also flushing and
changed most uses of _deleteEEreg with the flush parameter set to 1 to
_flushEEreg. May introduce or fix bugs.

Revision 4802

Fix for Endgame which tries to do 0 sector CDVD reads.
azte...
it's good to see fixes in place not much visited by developers, thank you. ;)
nefer...
This gives some progress in "Spyro the Dragon - Enter the Dragonfly", it passes the first screen it was always stuck at and shows some more screens and then tries to go to menus but then it's a black screen with music :S
azte...
nefer - usa, europe or jap version?
ramapcsx2
Cool then :)

Revision 4803

EE: Changed some load/store flushing behaviour for better efficiency (and
hopefully no bugs). Changed my mind about the internals for future exception
handling so scrapped what we have for now. Also restored correct rt=r0
behaviour on all loads.
Should be a small boost in fps everywhere and otherwise likely not change
anything.
ColinTre...
"Should be a small boost in fps everywhere" Sounds like a good commit to me.
avihal
FYI tested performance on a single, non representative, Killzone 1 warscenes 10s replay (with slight speed hacks), compared to r4796.
In my test, r4803 is consistently slower about 1.5% than r4796.
Test was done using pcsx2bench, with the following batch file (executes 4 times in a row: load state, wait 4 seconds, then measure performance for 10s, repeat):
for /l %%i in (1,1,4) do pcsx2bench -nokey -bench10 -fps50 -quiet
Results for r4796:
Avg speed: 114.53%, FPS: 51.06 - 68.18, pcsx2bench rating: 100.0
Avg speed: 114.53%, FPS: 51.02 - 67.56, pcsx2bench rating: 100.0
Avg speed: 114.78%, FPS: 52.06 - 67.41, pcsx2bench rating: 100.0
Avg speed: 114.43%, FPS: 50.98 - 68.05, pcsx2bench rating: 100.0
Results for 4803:
Avg speed: 112.70%, FPS: 50.68 - 66.52, pcsx2bench rating: 100.0
Avg speed: 112.90%, FPS: 50.60 - 65.80, pcsx2bench rating: 100.0
Avg speed: 113.11%, FPS: 51.22 - 65.73, pcsx2bench rating: 100.0
Avg speed: 113.16%, FPS: 51.28 - 66.28, pcsx2bench rating: 100.0
FYI.
sudonim1
Okay, that's weird, but please test against r4802 instead.
avihal
Did few alternating bench tests, no speed hacks this time (full default settings). Here are the results, in the order of testing (tested on Windows XP 32 SP3, [email protected], GTX260):
r4802:
Avg speed: 95.33%, FPS: 43.50 - 56.97, pcsx2bench rating: 93.2
Avg speed: 95.26%, FPS: 43.46 - 56.75, pcsx2bench rating: 93.1
Avg speed: 95.36%, FPS: 43.36 - 56.94, pcsx2bench rating: 93.1
Avg speed: 95.27%, FPS: 43.46 - 56.53, pcsx2bench rating: 93.2
r4803:
Avg speed: 92.58%, FPS: 41.98 - 54.48, pcsx2bench rating: 90.4
Avg speed: 92.46%, FPS: 42.50 - 54.33, pcsx2bench rating: 90.8
Avg speed: 92.59%, FPS: 42.42 - 54.30, pcsx2bench rating: 91.0
Avg speed: 92.66%, FPS: 42.51 - 54.58, pcsx2bench rating: 91.4
r4802:
Avg speed: 96.19%, FPS: 44.17 - 56.97, pcsx2bench rating: 94.1
Avg speed: 95.87%, FPS: 44.09 - 56.68, pcsx2bench rating: 93.9
Avg speed: 95.99%, FPS: 44.29 - 57.09, pcsx2bench rating: 94.1
Avg speed: 95.80%, FPS: 44.03 - 56.96, pcsx2bench rating: 93.6
r4803:
Avg speed: 93.34%, FPS: 42.72 - 54.41, pcsx2bench rating: 92.1
Avg speed: 92.88%, FPS: 42.75 - 54.43, pcsx2bench rating: 91.3
Avg speed: 92.92%, FPS: 42.80 - 54.32, pcsx2bench rating: 91.2
Avg speed: 93.10%, FPS: 42.56 - 54.43, pcsx2bench rating: 91.6
ramapcsx2
I saw less of a difference, but yea, this rev is ever so slightly slower than r4802.
It's nearly not measurable here though, prolly because I have the recommended speedhacks enabled.
ramapcsx2
It's faster on FMV's :p
xse...
Much more efficient and now hardly reaches 100% EE Valkyrie Profile 2 making the game much more smooth and with less sound creakings
Phenon II [email protected]
miser...
Not much of a test, but Star Ocean 3 which I was just playing seems to use like 5% on average less EE% to get to full speed in compare to previous, nice speedup^_^. Also like above AMD cpu.
chenxu...
I tested it with Warship Gunner 2. The thing goes from 47~48fps to 48~49fps. So I believe speed up exist.
chenxu...
Tested with a battleship with more parts in another scene in Warship Gunner 2. The speed goes from 41~42fps (4796) to 43~44fps (4803).
My system is [email protected] and GTX460.

Revision 4804

cmake: be sure wx is present before fiddling with the include path
maksre...
Devil May Cry fix menu please
andutrache
sorry the team does not take requests.

Revision 4805

cmake:
* use the standard 3 step flow: cmake, make, make install
* Remove L10N_PORTABLE option, superseeded by PACKAGE_MODE
* Extend PACKAGE_MODE to select the install directory (FHS or local bin)
rafael.f...
Cool. This L10N_PORTABLE always got me confused. :)
By the way, there is still a comment about its usage in the beginning of BuildParameters.cmake
rafael.f...
Also, Archlinux packaging standards request plugins at /usr/lib/pcsx2, which is different from Debian, etc. Is it possible to make the destination folder be flexible? It would be great if I could set the destination folder in cmake command line... Please add this the TODO list. :)
Thanks
gregory....
Well, actually I do not know what is the exact Debian requirement. But yes I could manage to add an option.
rafael.f...
As far as I can tell, you used the exact standard, according to Debian Policy Manual, chapter 9. Archlinux, on other hand, uses its own hierarchy ("Arch Packaging Standards"). Can't say about other distributions, though.
off topic, but nice work with "make install". Saved me some lines in my package's "rule" script.
gregory....
Hum, there are some discussions on going inside Debian to drop "games" part. Moreover technically PCSX2 is not a game but an emulator (of games).
By the way I need to figure out how to align PCSX2 with install path. It would reduce further packaging burden.
gregory....
see r4811 and r4812. Now you can tune cmake for your distribution. C++ code is automatically aligned with the option so you don't need anymore to patch the code.

Revision 4806

debian: align the package with latest cmake change.

Revision 4807

EE: very minor VTLB optimisation. Smaller than r4803 probably (but shouldn't
have any possibility of slowing down any code).
ramapcsx2
Hmm, no measurable difference in 3 games tested.
Still nice :p

Revision 4808

Just a couple CRC and GameDB updates.
jfre1...
Any games fixed by this?

Revision 4809

SPU2-X:
Adding an option for the de-alias filter implemented in r4118,
currently overemphasizes the highs so it's disabled by default
but I like it for some games :P
avihal
:)
ramapcsx2
Nice job there!
You going to take the gui stuff task from me now? :D

Revision 4810

SPU2-X: Fix the linux version, and add a checkbox for the de-alias filter.
shadowladyngemu
knew I forgot to finish something, my bad :p
arcum42
Not a problem. I was looking for something to work on anyways...

Revision 4811

pcsx2, zzogl-pg: allow to change some default path with compilation flags.
cmake: Add PLUGIN_DIR and GAMEINDEX_DIR options to easily select install
directory. Install GameIndex.dbt during install phase.
rafael.f...
ZZogl crashes in game init. Log output: http://pastebin.com/6PTCZPVz . Maybe it was not set in ZZoglCreate.cpp to find ps2hw.dat in /usr/share/games/shaders ?
But the rest of plugins and the DB are working fine. Thanks.
gregory....
Arg, I need to find a way to test it properly (my gl drivers does not work for the moment). Probably an issue with the macro.
gregory....
Note, I change the behavior and it will look at $PLUGIN_DIR directory not /usr/share/games/shaders anymore.
rafael.f...
Related to ps2hw.dat, ps2hw.dat is set install in /usr/share/games/shaders. See zzogl's CMakeLists file.
Related to tests, don't worry. I'll be here bugging you. j/k :D
gregory....
Ouppps. I fix that tommorrow.
gregory....
Ok. Done.
gregory....
Rafael, could you send me the files to build an arch packages? I'm curious of how it is working on Arch. And maybe it can help me or Fedora users for a rpm package creation.
rffonten...
Only the files or you want a how-to install from the beginning ?
pcsx2-svn (version update on-the-fly): http://aur.archlinux.org/packages/pcsx2-svn/pcsx2-svn.tar.gz
pcsx2-bin (binary) http://aur.archlinux.org/packages/pcsx2-bin/pcsx2-bin.tar.gz
If you want to know more, you can read about creating and building packages in Archlinux in https://wiki.archlinux.org pages:
- Pkgbuild
- Creating_packages
- Makepkg
- Arch_User_Repository (a.k.a. AUR)
- Arch_Packaging_Standards
Or ask me. Let me know if I can help more.
gregory....
Thanks I wanted to see the pkgbuild script.

Revision 4812

debian: reduce package complexity. Merge pcsx2-data (only 2 files) into pcsx2
and pcsx2-plugin.

Revision 4813

cmake: generate resource outside of the source tree.
Debian: remove useless clean file

Revision 4814

wiki: linux 32bits various update

Revision 4815

cmake: fix install directory of shader file in package mode
godofdr...
i want to see a Serious fixes like "god of war 2 pal with the fog"
and in "fifa street 2" the maps are with black screens and other
i Appreciate all that you have done and thanks for all of this is the best emulator on the planet the fastest and the stable not like others.
and good job thanks.
and sorry for may bad english
gregory....
I understand. Well did not GSdx have already a hack for GoW2?
Anyway on Linux, distribution and compilation are important. There are lots of guys that cannot use PCSX2 because they can not compile/install it. Moreove we cannot provide a binary for all linux users and it will become a nightmare in the near future.
ramapcsx2
Don't worry gregory, users demand stuff we can't provide all the time :p
ColinTre...
I want to see every game running at 1080p with full FPS and no graphical errors.
Right now! =p
ex1991e...
"Comment by [email protected], Today (2 hours ago) I want to see every game running at 1080p with full FPS and no graphical errors.
Right now! =p"
Now that, is an impossible feat. Come on be more realistic . The developers of pcsx 2 are only doing this during their free time and I don't think there has been or will be any long breaks or holidays for them to even achieve such a goal. In order for them to even achieve such a goal, gsdx would have to be overhauled and among other things. Which would obviously take a long time, so be patient. I for one, am just grateful for what they have achieved so far. Anyway keep up the good work, pcsx 2 team. On a side note, I just hope you guys are doing ok, with out Jake Stine (Air).
shadowladyngemu
i want to see a Serious fixes like "god of war 2 pal with the fog" <-- I think I did that some time ago in GSdx and just didn't announce it, didn't think it was needed... and I assume this is about GSdx since only the PAL version was still having a problem with it... so I don't see what does that have to do with this rev... :p
godofdr...
ok,thanks for all and i dont understand what you told shadowlady i dont understand how to Continue after the fog if you can tell me how to fix this so it will be Pleasure.
thanks again and sorry for my bad english.
zantezuken
@ramapcsx2
I demand PS3 support.
Pretty please?
rafael.f...
Ok, time to create PCSX3 dev team. :D
@gregory, Thanks for fixing ZZogl installation in linux.
gregory....
Well it did not work actually. I open the directory inside zz instead of the file...
gregory....
Now it really works :)
poisiono...
Grand, coming home from a visit with a new gf and finding some cmake love :)

Revision 4816

Silence a SIF dma warning.
ramapcsx2
Ace Combat 5 was spamming this.
DanrleiS...
perfect timing to fix directx10 in dragon quest VIII
I see some speedup into 3 fps ^

Revision 4817

zzogl-pg: open the dat file...

Revision 4818

Reverting r4796 (Console window now opens again before main window). Reason: The
console window's menus were overlapping the main window menus, leading to main
window menu actions getting invoked when using the console menus...
avihal
Adding for reference: r4796 apparently also caused main window to not appear on the windows list (see http://forums.pcsx2.net/Thread-ArtMoney-and-pcsx2-after-r4796 )

Revision 4819

GSdx: Fix an old and silly bug that could cause slowness in native resolution
hardware rendering. Thanks for debugging, Lana and avih.
chuuey
wow, nice work :D
azte...
this doesnt fix 1/more issues?
ramapcsx2
It applied upscale correction hacks to native resolution rendering.
Pretty bad thing :p
avihal
Lana actually did the code debugging, after we discovered simultaneously that that while native is checked, speed still depends on the value of the grayed out scaling field.
ramapcsx2
It's still pretty strange how that scene incurs an additional slowdown.
All it did was add some extra processing for the (not needed) hacks.
Oh well, this code should get some thorough renovation anyways.
It works for now :p
cristian...
HI,..i have a big problem with directx 11 (LOGO) real detection and FPS.
When I selected DX11, logo show just DX10 and FPS is < 09.
I test on Soul Calibur III.
Is just a GSDX problem.
When i play on GSDX 120 (valdanx) on pcsx r4819, FPS is > 50 and the logo is DX11!
My cfg. is: windows 7 ultimate x64, Intel CPU=Q9550 (2,8ghz), 4gb ddr2(1066), VGA=HD5770, real DX11(1024MB), my VGA catalist driver version is 11,6.
I have install VC++ 8 and 10, directx_Jun2010_redist, DXSDK_Jun10, dxwebsetup.
PLEASE HELP ME!
ramapcsx2
cristian:
Please bring your problem to our forums.
http://forums.pcsx2.net/index.php
refraction
"When i play on GSDX 120 (valdanx) on pcsx r4819, FPS is > 50 and the logo is DX11!"
I wouldnt trust Valdanx builds...

Revision 4820

SPU2X: New (simpler) time stretcher algorithm.
Should prevent erratic tempo variations near 100% speeds (compared to the
previous implementation), and generally allow much lower latencies while keeping
the audio stable (on all audio systems).
E.g. my tests show that at 70ms latency it can properly handle sharp speed
variance of 50%-100%. If your game generally doesn't get slower than 70% speed,
50ms latency would probably be fine.
Note that on extreme scenarios (e.g. extreme sharp drops in speed) it doesn't
try to keep the audio continues at all costs. If your game exhibits such
behavior (audible clicks, etc), increasing the latency a bit at the config would
help.
Comments on actual performance/quality on different systems would be greatly
appreciated.
andutrache
this is very nice :))
good job !!!
refraction
Awsome! well done mate :)
ramapcsx2
Thanks a bunch, avih.
I spent ages wrestling the stretcher :p
cristian:
Please bring your problem to our forums.
http://forums.pcsx2.net/index.php
cristian...
You did a great job man, I put my problem on the forum.
cottonvibes
haven't tested it yet, but this was something that was badly needed :p

Revision 4821

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.
shadowladyngemu
Compiles with VS2008 but VS2010:
12>SaveState.obj : error LNK2001: unresolved external symbol "protected: void __thiscall SaveStateBase::gifFreeze(void)" ([email protected]@@IAEXXZ)
12>FiFo.obj : error LNK2001: unresolved external symbol "bool __cdecl Gif_HandlerAD(unsigned char *)" ([email protected]@[email protected])
12>FiFo.obj : error LNK2001: unresolved external symbol "void __cdecl Gif_FinishIRQ(void)" ([email protected]@YAXXZ)
12>FiFo.obj : error LNK2001: unresolved external symbol "struct Gif_Unit gifUnit" ([email protected]@[email protected]@A)
12>FiFo.obj : error LNK2001: unresolved external symbol "void __cdecl Gif_AddCompletedGSPacket(struct GS_Packet &,enum GIF_PATH)" ([email protected]@[email protected]@[email protected]@@Z)
12>FiFo.obj : error LNK2001: unresolved external symbol "void __cdecl Gif_AddBlankGSPacket(unsigned int,enum GIF_PATH)" ([email protected]@[email protected]@@Z)
12>FiFo.obj : error LNK2001: unresolved external symbol "void __cdecl Gif_MTGS_Wait(void)" ([email protected]@YAXXZ)
ramapcsx2
Good job actually going through with this! :)
KrossX3
It seems the new files were just not added to the pcsx2.vcxproj.
ramapcsx2
All those usually flickering FMV are now showing inverted colors (and flicker).
There's something going on with GIF and GSdx hardware here :p
Line.E...
PCSX2 alive and kicking !!! (^_^)
romulux_...
Nice comeback cotton, good effort, it seems activity has flourished again!
refraction
wow, good job! hopefully makes my life easier too lol..
hope path3 masking still works ;p
avihal
Amazing effort :)
Wagnar...
Good Job. 500 games tested? all legit :P ?
godofdr...
woow, really very good job i even cannot check 15 games and you shadowlady checked 500 games. its a very big joob i Appreciate it thanks for all.
sorry for my bad english
luc...
I get a linking error on Linux, GCC 4.6.1
Configured with -DCMAKE_BUILD_TYPE="Debug" -DPACKAGE_MODE=TRUE -DFORCE_INTERNAL_SDL=TRUE -DCMAKE_INSTALL_PREFIX="/usr" -DPLUGIN_DIR=$plugindir -DGAMEINDEX_DIR="/usr/share/pcsx2"
Linking CXX executable pcsx2
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/GS.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Hw.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/HwWrite.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/MTGS.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif1_Dma.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif1_MFIFO.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:41: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/VUops.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/./Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/./Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/FiFo.cpp.o: In function `WriteFIFO_GIF(u128 const*)':
FiFo.cpp:(.text+0x52a): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x53a): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x56d): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x576): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x598): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:FiFo.cpp:(.text+0x59d): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/FiFo.cpp.o: In function `WriteFIFO_GIF(u128 const*)':
FiFo.cpp:(.text+0x5ef): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
FiFo.cpp:(.text+0x5fc): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x602): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x61d): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x623): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x629): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:FiFo.cpp:(.text+0x633): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/FiFo.cpp.o: In function `WriteFIFO_GIF(u128 const*)':
FiFo.cpp:(.text+0x756): undefined reference to `Gif_MTGS_Wait()'
FiFo.cpp:(.text+0x75c): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x762): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x773): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x780): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x78d): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:FiFo.cpp:(.text+0x799): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/FiFo.cpp.o: In function `WriteFIFO_GIF(u128 const*)':
FiFo.cpp:(.text+0x80a): undefined reference to `Gif_MTGS_Wait()'
FiFo.cpp:(.text+0x815): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x81a): undefined reference to `gifUnit'
FiFo.cpp:(.text+0x864): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/FiFo.cpp.o: In function `Gif_Unit::Execute()':
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x168): undefined reference to `Gif_AddCompletedGSPacket(GS_Packet&, GIF_PATH)'
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x3f6): undefined reference to `Gif_AddCompletedGSPacket(GS_Packet&, GIF_PATH)'
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x422): undefined reference to `Gif_FinishIRQ()'
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x496): undefined reference to `Gif_HandlerAD(unsigned char*)'
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x652): undefined reference to `Gif_MTGS_Wait()'
FiFo.cpp:(.text._ZN8Gif_Unit7ExecuteEv[Gif_Unit::Execute()]+0x672): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `_GIFchain()':
Gif.cpp:(.text+0x1d8): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `CheckPaths(EE_EventType)':
Gif.cpp:(.text+0x207): undefined reference to `gifUnit'
Gif.cpp:(.text+0x23e): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `mfifoGIFtransfer(int)':
Gif.cpp:(.text+0xa3d): undefined reference to `gifUnit'
Gif.cpp:(.text+0xa64): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Gif.cpp.o:Gif.cpp:(.text+0xb06): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `Gif_Unit::TransferGSPacketData(GIF_TRANSFER_TYPE, unsigned char*, unsigned int, bool)':
Gif.cpp:(.text._ZN8Gif_Unit20TransferGSPacketDataE17GIF_TRANSFER_TYPEPhjb[Gif_Unit::TransferGSPacketData(GIF_TRANSFER_TYPE, unsigned char*, unsigned int, bool)]+0x15c): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
Gif.cpp:(.text._ZN8Gif_Unit20TransferGSPacketDataE17GIF_TRANSFER_TYPEPhjb[Gif_Unit::TransferGSPacketData(GIF_TRANSFER_TYPE, unsigned char*, unsigned int, bool)]+0x3fb): undefined reference to `Gif_MTGS_Wait()'
Gif.cpp:(.text._ZN8Gif_Unit20TransferGSPacketDataE17GIF_TRANSFER_TYPEPhjb[Gif_Unit::TransferGSPacketData(GIF_TRANSFER_TYPE, unsigned char*, unsigned int, bool)]+0x4e6): undefined reference to `Gif_MTGS_Wait()'
CMakeFiles/pcsx2.dir/GS.cpp.o: In function `gsCSRwrite(tGS_CSR const&)':
GS.cpp:(.text+0x4b1): undefined reference to `gifUnit'
GS.cpp:(.text+0x52a): undefined reference to `gifUnit'
GS.cpp:(.text+0x537): undefined reference to `gifUnit'
GS.cpp:(.text+0x541): undefined reference to `gifUnit'
GS.cpp:(.text+0x569): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/GS.cpp.o:GS.cpp:(.text+0x571): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/SaveState.cpp.o: In function `SaveStateBase::FreezeInternals()':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/SaveState.cpp:210: undefined reference to `SaveStateBase::gifFreeze()'
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `int vifCode_MSCALF<1>(int, unsigned int const*)':
Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x1d): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x28): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x30): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x3d): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x48): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o:Vif_Codes.cpp:(.text._Z14vifCode_MSCALFILi1EEiiPKj[int vifCode_MSCALF<1>(int, unsigned int const*)]+0x50): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `int _vifCode_Direct<1>(int, unsigned char const*, bool)':
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x2d0): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x2dd): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x2e3): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x2fe): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x304): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x30a): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o:Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x314): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `int _vifCode_Direct<1>(int, unsigned char const*, bool)':
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x36a): undefined reference to `Gif_MTGS_Wait()'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x370): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x376): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x387): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x394): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x3a1): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o:Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x3b0): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `int _vifCode_Direct<1>(int, unsigned char const*, bool)':
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x431): undefined reference to `Gif_MTGS_Wait()'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x46b): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x476): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x47b): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x4b3): undefined reference to `gifUnit'
Vif_Codes.cpp:(.text._Z15_vifCode_DirectILi1EEiiPKhb[int _vifCode_Direct<1>(int, unsigned char const*, bool)]+0x4d7): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/VUops.cpp.o:VUops.cpp:(.text+0x1daad): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/VUops.cpp.o: In function `VU1MI_XGKICK()':
VUops.cpp:(.text+0x1db8c): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
VUops.cpp:(.text+0x1db9c): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dba2): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dbbd): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dbc3): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dbc9): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/VUops.cpp.o:VUops.cpp:(.text+0x1dbd3): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/VUops.cpp.o: In function `VU1MI_XGKICK()':
VUops.cpp:(.text+0x1dc33): undefined reference to `Gif_MTGS_Wait()'
VUops.cpp:(.text+0x1dc39): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dc3f): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dc51): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dc62): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dc71): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/VUops.cpp.o:VUops.cpp:(.text+0x1dc8b): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/VUops.cpp.o: In function `VU1MI_XGKICK()':
VUops.cpp:(.text+0x1dd10): undefined reference to `Gif_MTGS_Wait()'
VUops.cpp:(.text+0x1dd1b): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dd20): undefined reference to `gifUnit'
VUops.cpp:(.text+0x1dd69): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `VU1XGKICK_MTGSTransfer(unsigned int)':
sVU_Lower.cpp:(.text+0x6a6c): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6abc): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o:sVU_Lower.cpp:(.text+0x6ac9): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `VU1XGKICK_MTGSTransfer(unsigned int)':
sVU_Lower.cpp:(.text+0x6b4b): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
sVU_Lower.cpp:(.text+0x6b5b): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6b61): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6b7c): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6b82): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6b88): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o:sVU_Lower.cpp:(.text+0x6b92): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `VU1XGKICK_MTGSTransfer(unsigned int)':
sVU_Lower.cpp:(.text+0x6bf2): undefined reference to `Gif_MTGS_Wait()'
sVU_Lower.cpp:(.text+0x6bf8): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6bfe): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6c10): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6c21): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6c30): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o:sVU_Lower.cpp:(.text+0x6c4a): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `VU1XGKICK_MTGSTransfer(unsigned int)':
sVU_Lower.cpp:(.text+0x6ccf): undefined reference to `Gif_MTGS_Wait()'
sVU_Lower.cpp:(.text+0x6cda): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6cdf): undefined reference to `gifUnit'
sVU_Lower.cpp:(.text+0x6d28): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `mVU_XGKICK_(unsigned int)':
microVU.cpp:(.text+0xd8f): undefined reference to `gifUnit'
microVU.cpp:(.text+0xddf): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o:microVU.cpp:(.text+0xdec): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `mVU_XGKICK_(unsigned int)':
microVU.cpp:(.text+0xe6e): undefined reference to `Gif_AddBlankGSPacket(unsigned int, GIF_PATH)'
microVU.cpp:(.text+0xe7e): undefined reference to `gifUnit'
microVU.cpp:(.text+0xe84): undefined reference to `gifUnit'
microVU.cpp:(.text+0xe9f): undefined reference to `gifUnit'
microVU.cpp:(.text+0xea5): undefined reference to `gifUnit'
microVU.cpp:(.text+0xeab): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o:microVU.cpp:(.text+0xeb5): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `mVU_XGKICK_(unsigned int)':
microVU.cpp:(.text+0xf15): undefined reference to `Gif_MTGS_Wait()'
microVU.cpp:(.text+0xf1b): undefined reference to `gifUnit'
microVU.cpp:(.text+0xf21): undefined reference to `gifUnit'
microVU.cpp:(.text+0xf33): undefined reference to `gifUnit'
microVU.cpp:(.text+0xf44): undefined reference to `gifUnit'
microVU.cpp:(.text+0xf53): undefined reference to `gifUnit'
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o:microVU.cpp:(.text+0xf6d): more undefined references to `gifUnit' follow
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `mVU_XGKICK_(unsigned int)':
microVU.cpp:(.text+0xff2): undefined reference to `Gif_MTGS_Wait()'
microVU.cpp:(.text+0xffd): undefined reference to `gifUnit'
microVU.cpp:(.text+0x1002): undefined reference to `gifUnit'
microVU.cpp:(.text+0x104b): undefined reference to `gifUnit'
collect2: ld returned 1 exit status
cristian...
Thanks Cottonvibes , you're good ... and Shadow Lady, you are amazing, and thanks for your help and 4 your time.
naik22...
Hope it speeds up tekken and gran turismo.
omar.con...
god of war 2 looks good in native resolution
Kratos escapes Hades where and when you use Amulet of Fates
Kar...
Nice as always, thank you for your hard work. Anyone want to list their FPS changes?
AndreyLegchilin
Great job.
Fixes movie in Silent Hill 4.
r4818:
http://postimage.org/image/13hakqpus/
r4822:
http://postimage.org/image/13h5m4odg/
cottonvibes
[email protected]: hopefully arcum or gregory can fix the linux builds soon.
refraction: path 3 masking games seem to work. persona 3 took me over a week of trying various stuff to get working; it was a pain xD
konaj...
good work don't know how you got this done when you're always talking on irc :p.
refraction
how about Destruction Derby? That was one of the more finicy games, persona was pretty lenient ;p
miser...
It's like christmas and Cottonvibes being a santa :O
Just first games I tried Dragon Ball Z Budokai Tenkaichi series got like at least 30% speedup or more, especially 1 and 2(3 was already very fast), feeling that code will have much more performance suprises. :O Huh, no more OC my AMD.
Thanks +1 x amount of existing games on ps2 you just made playable on AMD cpu's.:O
cottonvibes
refraction: Destruction Derby Arena seems to work as well as it did in our pcsx2 9.8 release.
its highly unstable due to gsdx crashing randomly in the game though (happens both in newGif and oldGif...)
cymek...
This revision appears to introduce some issues into The Simpsons Game (PAL):
r4820
http://postimage.org/image/181ma349w/
http://postimage.org/image/181pl5t9g/
r4822
http://postimage.org/image/181kmjrs4/
http://postimage.org/image/181nxmgro/
SNP_Tira...
Very nice Final Fantasy X speedup. I think that this is the first revision of PCSX2 that I have ever run that caused an immediate highly noticeable speedup.
shadowladyngemu
Really?
Didn't fix half screen in Fallout/Justice League which share the engine :/
jfre1...
I was going to post that this fixes the half screen issues in the Dark Alliance engine games (Dark Alliance 1 & 2, Fallout Brotherhood of Steel etc) but it appears to only be fixed in software mode.
The freeze at the menu screen, still occurs per usual if your not fast in flicking through the menu's.
You can actually get into the first introduction scene now in Dark Alliance 1. Couldn't do that before. However the graphics are MAJORLY messed up and there is severe SPS issues. First game I've seen with severe SPS issues in pcsx2 for quite some time (used to be very common in alot of games. Not so much these days). The game then runs at 12 fps before an error pops up saying "Oops ran out of video memory".
Good to see some progress in either case.
shadowladyngemu
@cymek:
The Simpsons game need "EE timing hack" gamefix now. Some games that needed EE timing hack don't need it now, some that didn't before do need it now, GameDB needs to be updated with the new gif.
This are some of the changes I found so far with the new gif:
Full Spectrum Warriors need EE timing for corrupted graphics
The Simpsons need EE timing for corrupted graphics
Drakengard don't EE timing (this one actually improved since enabling EE timing before fixed characters blinking but gave the char very colorful pants :p)
Mercenaries 2 need EE timing now for some flickering
BlackHawk Down + Team Sabre needs EE timing
Flatout games don't need EE timing anymore
Powerpuff Girls no need for EE timing hack
Onimusha 3 no need EE Timing hack
Lord of the Rings Aragorn's quest no need EE timing hack
Seven Lance Moromos no need EE timing
Venus and braves... likely not need anymore since seven Lance doesn't need it :p
Buffy - Chaos Bleeds doesn't need EE timing hack but if hangs ingame anyway :C
Area 51 got huge slowdown
Onimusha 4 has a big slowdown but only n 2d scenes
Outrun 2006/SP2 got some flickering and random garbage every few mins (still playable tho)
Tomb Raider Angel of Darkness black screens after first FMVs
Disney's Extreme Skate Adventure is playable now (was just intro before)
Klonoa 2 goes back to playable (crashed in volk city in 0.9.8)
Anyway, the DB needs to be updated as soon as someone finds more games that need/don't need the EE timing hack or do something else with the new gif changes, issue 881 collect them changes to the GameDB if anyone find anything else too :p
andutrache
i also have a problem with Bleach Blade Battlers 2 whenever there is a bankai with a screen withening effect garbage is displayed instead.
Sorry i can't provide screenshot because my paint is broken XD .
PS: EE timing gamefix doesn't help.
cymek...
@shadowladyngemu
Thanks for the hint. The game now looks just as it used to.
cottonvibes
andutrache: thanks for reporting.
rama mentioned the bleach bankai issue to me earlier; we'll be looking into it.
refraction
looking at simpsons, path3 masking has issues again >.< cheers for that lol... Ill look in to them at some point if you dont fix em.
shadowladyngemu
Simpsons looks fine with "EE timing hack"... unless you mean other different issues than the ones we noticed?
cymek...
@shadowladyngemu
I meant that it looked like in r4820.
I do have found another issue with The Simpsons, however unrelated to this revision:
https://code.google.com/p/pcsx2/issues/detail?id=1093
refraction
shadowladyngemu: Yes the issues above are Path3 Mask Syncing issues, which are avoided with the hack, they can probably be fixed up. But these timing issues will be more prevelant in other games id imagine.
ramapcsx2
refraction:
No other of the usual suspects has P3 mask problems.
You have more of those titles though, so better check em :p
shadowladyngemu
@refraction:
Way I see it, fixing it up for this game will bring the same timing issues in other games, in fact I suspect it's the same issue that was causing problems in Drakengard 1 while that one was working before with EE timing hack but was also giving other problems in that game like colorful pants in the main character... so as I see it it's better this way :p
refraction
Or we could just get it working properly :p ill let you test the stuff. With so many changes there's no way to say 1 thing was responsible for anything which is different now.
ex1991e...
Just tested Terminator 3 redemption with the latest release. The graphics are heavily corrupted. This has never happened in the older releases; ever since 0.98 that is.
http://postimage.org/image/1cb7abyv8/b30fbb40/
Makotech...
Both zone of the enders 2 and Devil summoner 2 now run extremely fast on my i5 2500k. This is a great commit!
danialho...
graphic regressions in Mana Khemia 2 [NTSC-U] caused by this change
danialho...
Buffy the Vampire Slayer - Chaos Bleeds [NTSC-U] &
Buffy the Vampire Slayer - Chaos Bleeds [PAL] freezing since this build
danialho...
which shadow lady already happened to catch above >.<

Revision 4822

This should fix MSVC 2010 compiling.
ex1991e...
Brilliant fix, the previous one caused Orphis's autobuilds to malfunction.
jadjkor...
thnx, it works again on MSVC 2010 SP1 =D

Revision 4823

pcsx2: deleted a lot of the old gif code.
some bits were kept for reference and should be deleted in the future (along
with the entire GIFpath.cpp)
naik22...
Bravooooooooooooo! :D
DanrleiS...
awesome. there were plenty of old files. You´re doing well.

Revision 4824

cmake: add new Gif Unit files.
gregory....
I did not test it (cause it commute time:p ) but hopefully it will work.
cottonvibes
thanks
luc...
Better but still failing linking with:
Linking CXX executable pcsx2
CMakeFiles/pcsx2.dir/Gif.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Gif_Unit.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/GS.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Hw.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/HwWrite.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/MTGS.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif1_Dma.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif1_MFIFO.cpp.o: In function `incTag(unsigned int&, unsigned int&, unsigned int)':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/Vif_Codes.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:41: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/VUops.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/x86/sVU_Lower.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/./Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
CMakeFiles/pcsx2.dir/x86/microVU.cpp.o: In function `incTag':
/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/./Gif_Unit.h:103: multiple definition of `incTag(unsigned int&, unsigned int&, unsigned int)'
CMakeFiles/pcsx2.dir/FiFo.cpp.o:/home/luca/.devels/pcsx2-svn/src/pcsx2-build/pcsx2/Gif_Unit.h:103: first defined here
collect2: ld returned 1 exit status
cottonvibes
[email protected]: okay i think i can fix that
cottonvibes
try the latest revision [email protected]
gregory....
I'm not surprised of the remaining error.
Cottonvibes, I'm not sure the fix is correct (note that it could make it works) but I'm afraid of side effect. Maybe it would be better with either a static declaration or/and #ifdef GI_UNIT_H protection (I'm not sure pragma once is supported on gcc).
arcum42
Compiling with the fix gave me pages of undefined functions, actually.
Looking at it, it looks like that function needs to be static. I'll check...
arcum42
See r4827.

Revision 4825

newGif - Fix Area 51 slowness.
justn...
Damn was kinda hoping all these latest updates would help with the crazy texture problems and slowdowns with all the ratchet and clank games but no go, oh well stupid games lol. Thanks devs for the updates and hard work done on pcsx2.
shadowladyngemu
Texture problems in ratchet and clank are because of missing "mipmap" support in GSdx HW or the other plugins, they work fine in GSdx Software+mipmap (you can press the "del" key while in software mode to see how it looks like with it disabled), slowdowns is cause it needs a fast CPU :p
This revision also fixes the slowdown in "Onimusha - Dawn of Dreams".
shadowladyngemu
What do you mean "continue form the fog"?
I thought you meant you had a problem with the "wall of fog" that was there in the PAL version in GSdx hardware mode which seems to be a different problem.
Anyway better bring your problem to the forums, cause as far as I know both NTSC/PAL versions of the game are fully playable:
http://forums.pcsx2.net/index.php
cristian...
Maybe will fix my GPU load problem.
pcsx2gu...
You already have a thread in the forum for this, please stop spamming code comments with your problem.
Thanks
ex1991e...
"Damn was kinda hoping all these latest updates would help with the crazy texture problems and slowdowns ..." - [email protected]
Oh well, ratchet and clank still had quite a good speed up from this fix. Bravo, cottonvibes

Revision 4826

will probably fix compilation errors on linux/gcc...

Revision 4827

Fix Linux so that it compiles.
luc...
This one got it to compile, many thanks :)
arcum42
No problem. I've run into this compilation issue a number of times in the past...
cottonvibes
thing is you shouldn't have to put the static keyword on an inline statement to prevent multiple definitions.
inline in c++ is supposed to allow you to put a function in a header file and have it compile against multiple translation units w/o getting multiple definition errors.
oh well though, i'll just put static in the future to prevent he problem :p
gregory....
Contrary on the logical behavior, 'forceinline' keyword inlines less that 'inline' keyword (hence the multiple definition). I did not test it but maybe you can replace static _fi by just inline in this special case.
Unfortunately others part of code expect that function are not properly inlined (hence the undefined function). If I recall correctly for extern inline, gcc do the inlining (inside the cpp where the function is defined) but does not emit a function in the .o so it failed to link.
To summarize, inline with gcc are a nightmare :(

Revision 4828

GSdx: FXAA 3.10, page up key activates it
chuuey
:D:D:D:D
andutrache
NIIIIICE :)
gabest11
Could anyone interpret fxaa.fx: "INTEGRATION - RGBL AND COLORSPACE" for me? Reading that, I'm not sure if c.a = dot(c.rgb, float3(0.299, 0.587, 0.114)); is enough.
kaboo...
software only huh alright I'll compile and test it. be back in a jiffy
gabest11
No, every output. Except SDL.
gabest11
There was an article about MLAA on slashdot, that's SSE and would have been sw-only, but then I remembered someone had already recommended a similar algorithm as a pixel shader.
Metal.So...
Awesome, on my Radeon HD6950 GSDX Software looks sexy. ^_^
kaboo...
nice!!! though it's only clearly visible for me with native resolution it has no performance hit (though I have a GTX570) now native resolution is a bit prettier
kaboo...
and yeah it's on hardware too like gabest said except sdl
lemuel2010
Pcsx2 progress great!!!!!
veaac.fd...
Could somebody post some comparison images?
Metal.So...
Software:
OFF - http://imageshack.us/photo/my-images/855/nomlaa.jpg/
ON - http://imageshack.us/photo/my-images/834/mlaa.jpg/
NIKE.SP...
" NVIDIA FXAA 3.10 by TIMOTHY LOTTES"
This only for nvidia cards?
shadowladyngemu
nope, should work in AMD cards too as it's just a shader, it's just nvidia's algorithm :p
Line.E...
HOLY SH%*$ !!! Gabest you are real wizard !!)))
This should be implemented to the GUI by another option )))
yxml...
This should be implemented to the GUI by another option
shadowladyngemu
You can keep it enabled from the GSdx.ini file tho, just add a new line with "fxaa=1"
ramapcsx2
http://simplest-image-hosting.net/jpg-0-2134
http://simplest-image-hosting.net/jpg-0-1277
:p
ramapcsx2
Same scene in 2x resolution.
Here it works as a nice dealias filter without the speed hit of real AA :)
http://simplest-image-hosting.net/jpg-0-3109
http://simplest-image-hosting.net/jpg-0-454
romulux_...
WOW, a sort of AA withouth speed hits, I have never heard of this before!!!
actact9...
the only question now is will these cause bad graphics in some game's lit artifacts and something like a weird overlay but Nonetheless Amazing Work from the Daddy of GSDX LOL!!!!!!!!
actact9...
sorry about the typo I meant like artifacts and something like a weird overlay
ramapcsx2
Since it's a post process filter, it won't add any artefacts.
KrossX3
It shouldn't create artifacts like MSAA, since it's just a nice post processing effect.
shileshk...
lol...I was just readong on FXAA comparisons over at [H]ardOCP (http://www.hardocp.com/article/2011/07/18/nvidias_new_fxaa_antialiasing_technology), amazed by what it is and the fact that's an algorithm from Nvidia that works on ANY cards (unlike AMD's resource-hungry MLAA), and here it is implemented already on an emulator.
Great work as usual, Gabest.
KrossX3
The difference is that FXAA must be implemented while MLAA works on top of everything. So at least if the application doesn't have FXAA you can still have an alternative.
shileshk...
The thing with FXAA is that it's simpler to implement because it's a shader process, and that it's platform agnostic with almost no performance hit.
The key point here is performance, and MLAA tends to blur all the details along with the fps down.
yan.eml...
http://www.eurogamer.net/articles/digital-foundry-future-of-anti-aliasing
Maybe FXAA has worse implementation, but MLAA is a winner there. FXAA blurs details.
godofdr...
good job,well done how much code did you have add into 1 file fxaa.fx
it is amazing i dont Think somebody can add to 1 new file so moch code in 1 day and modify 20 files
its very cool
good job.
shileshk...
@yan : if you've read the article I linked to, you'd probably know why FXAA blurs details more on that article you linked to.
"FXAA is a shader which gets adapted differently by each developer when FXAA is integrated into a title. The developer has full control over the trade-off between sharpness, reduction of aliasing, and performance."
So, yeah, if FXAA blurs more than MLAA, then blame the devs. =b
eliotfur
Amazing!!! I need to compile that right now!!!
Gabest pushes commits quite rare, but yeah... Oh, yeah!..
gigaherz
Any post-processing effect that works with just a simple picture will always have issues with blurring hard edges in textures. The onyl way to fix that woudl be to include spatial information i nthe equation (depth or normal info per pixel), but then the calculations woudl have more numbers to work with, making the algorithm much slower.
Both MLAA, FXAA and any other kind of edge-blurring algorithm will have theses issues. It's all a tradeoff between how much you remove jagged edges vs how much you remove detail in textures.
actact9...
I would prefer to have a check box to tick this on or off with than changing the .ini but its OK too
l3illyl...
Great commit, always love more graphical options. I think I'll leave it off, though, and choose to just up the internal resolution instead. It's a bit too blurry for my tastes.
ramapcsx2
element:
All parameters are there for you to modify. Check fxaa.fx ;)
shileshk...
I know; been toying with it for awhile.
But further tinkering might require my eyes getting checked tomorrow; gotta rest for now. =b
animus...
rama:
Will it be possible to create a slider in gsdx dialog to modify sharpness/blurriness of the effect? And/or a hotkey to change it on the fly?
nokiaqdman
Holy shit PCSX2 just got so much better in few days. Congratz to everyone involved!
romeo_ca...
wow PCSX is just becoming more powerful than the PS2 itself, congratulations guys, really can't complain, keep up the good work
romeo_ca...
i suggest that you make a window to enable/disable it inside GSdx ASAP
wil...
Today is a good day.
romeo_ca...
please is the PCSX2 going to support UIF image fromat? because this format support compression
gigaherz
What does that have to do with this revision? There's forums at http://forums.pcsx2.net/ for those kinds of questions!
kostamar...
I was thinking this just yesterday how would pcsx2 look with FXAA and today is implemented. Gabest is in my mind :-p.
gigaherz
Actually it was commited 23 hours ago, which means you thought about it AFTER gabest coded it! (or at least after he began coding it)
roniis...
good job boys keep the great work.
bobbypi...
Good work.
azte...
congrats Gabest, now like a guy said above, you just need to make an option for this in the GUI. ;)
renedu...
Now that I bought an VGA, all those nice improvements for native resolution?! ;)
Works very nice. The defaults seems to be very agressive on aliasing, but not bad. Native resolution is kinda blurry, but it would be much worse w/o FXAA, so I may be asking for a miracle. In 2x resolution, it clears all the jaggies and not so many details, so, in a way, it is even better there.
Now, how about a sharpen filter on top of it? Or more advanced AA algorithms using neural networks? :D (half-kidding)
Well, first show it in the GUI, if possible, with controls for chosing the trade-off between sharpness, reduction of aliasing, and performance.
romeo_ca...
''Well, first show it in the GUI, if possible, with controls for chosing the trade-off between sharpness, reduction of aliasing, and performance.''
i agree with that
miser...
It's just me or this proves we're all graphical b... ;D huh major SPU changes get's like +20 score at max, huge gif transfer rewrite ~ +30, but a slight AA implementation and everyone party... xD
And sure I love the idea of cotrolling it easier from the gui, but I dunno if it's just me changing wrong thing(I only messed around with parameters under "FXAA CONSOLE - TUNING KNOBS"), but didn't really saw much if any difference by setting extreme quality preset or trying to sharpen it out. Soo unless I fail in my tries to customize the effect, any special control would probably be more psychological than trully needed:P.
gabest11
I think fxaa is best at mid resolutions. Going over the monitor resolution edges are not even visible, the scaledown gives you a supersampling effect already. And at native, there is just too much blur.
Line.E...
Well - i like FXAA in Software native resolution. Besides - in SW this is the only way to see normal image of the game )) Nice and a little blurry, just like real TV produces (due to interlacing and big scanline effect)
But I have only one serious question to Gabest - what is the best number of threads for Software mode ? Is there any limit of threads after which it will be useless to increase this number ? Or any optimal settings ?
Thank you Gabest !))
gigaherz
I never used SW but usually in multithreaded apps you'd use something similar to "number of logical threads + 1". Pcsx2 needs at least 1 thread for itself so using the same number of threads as logical threads in your cpu might be the right number, maybe 1 less maybe 1 more, depending on the original number. Any more will be a waste of time doing useless context switches.
You can check the number of threads if you open the task manager and check how many windows sees :p
gabest11
CPU cores - 1, so usually 3. The screen is split into 32 pixel high interleaved rows, the more cores, the smaller area to work on, so after a while there isn't going to be enough because the low native resolution. If there are not many triangles in a batch or just covering a small area, then the triangle setup overhead wastes cpu time. Lately I added code to predict the optimal number of cores to utilize per each batch, that helped a bit with the overhead, but still won't help with the cpu scaling problem. I haven't had the chance to try it on 6 cores yet, could be no improvement at all (HT does not help, it's a latency hiding technique anyway). With epsxe and the ps1 part of gsdx there is an option to use 4x upscaling to get insane internal resolution, that could use more cores, if it wasn't fast enough already.
Line.E...
Many thanks !! (^_^)
So, looks like it doesn't matter if we have super-mega-new-CPU with 8 cores, we should set 3 threads in SW mode anyway ))
Before that I thought that GSDX will be faster with 8 cores CPU and 7 or 8 thread :P
renedu...
miser: It is more dificult to test the SPU changes effect (I'm not sure if I found any difference), and the gif transfer wasn't of much effect for Persona games that I'm playing: maybe +2% on the fps (maybe more in quick slowdowns, but they are too fast to be sure), but it's not easy to benchmark those small differences either. So this FXAA was the most visible change for me, as I play now with 2x scaling.
FXAA is "aliasing" the 2D surfaces on persona 3, like text and images. This is most severe in native resolution of course:
No-AA: http://i.imgur.com/th2nK.jpg
AA: http://i.imgur.com/wv30i.jpg
(native resolution enlarged)
Would be possible to apply FXAA only the 3D surfaces?
romeo_ca...
please hurry up and make this option in the GSDX menu
shileshk...
'Hurry up', he said. *rolls eyes*
romeo_ca...
hurry up, Grrrrrrrrrrrr
happy now
miser...
@renedu I had a huge speedup with gif transfer in few games, SPU giving much better sound in FF series, and also was happy from FXAA, but I guess most of us has vision as main sense, soo I don't really wonder why the score difference, just pointing it out;].
I wonder through if it'll beat rev 3000 with score ;) uber duper multi-threading support xD damn I wish there was more commits like 3000 one at least from time to time;C... "commiting sense of humour... error, google.code is now protected from such commits".

Revision 4829

newGif: send complete gs primitive packets to the gs plugin even if eop wasn't
detected. this is needed for games that do GS->EE downloads to make sure the gs
plugin is up-to-date with the sent gif data.
fixes Bleach bankai problem, and probably other games (wizardry/growlancer 3)
but haven't tested...
Also removed a vif FlushA hack that used to be needed for tekken 4/gitaroo man
but not anymore...
lemuel2010
Great job cotton!!!
shadowladyngemu
Tekken 4 going twice as slow (actually... game is as fast as before, just showing twice the FPS :p)
ICO boots then screen goes black and FPS goes down a lot.
ramapcsx2
ICO also complains about a lot of unknown register writes, then asserts with:
Function: Gif_Unit::TransferGSPacketData
Thread: EE Core
Condition: (stat.APATH==0) || checkPaths(1,1,1)
Message: Gif Unit - APATH wasn't cleared?
Bleach, Wizardry and Growlanser 3 are fixed.
andutrache
yes the garbage in bleach is gone, it has been replaced by slowdown :P
refraction
Im suprised this doesnt appear with ICO, this is what use to cause it to crash or fail on boot.
if (ret & 3) DevCon.Warning("Vif %s: Ret wasn't a multiple of 4!", name); // Shouldn't happen
ColinTre...
I moved from r4811 to this and Onimusha 4 is unplayably slow. Even Kingdom Hearts 2, which I can normally play incredibly well is almost unplayable. Just letting you know =p the EE goes to 100%
cottonvibes
refraction: that line is different than what the old gif used to do.
the old gif was checking if it was a multiple of u128's, this is checking if its a multiple of u32's.
it checks if its a multiple of u32's because the vif code works in u32's and the line:
vif1.tag.size -= ret/4;
wouldn't accurately be able to represent a non-u32 ret value.
the new gif can be sent data in bytes, its not limited to sending data in qwc's like the old gif code was.
cottonvibes
[email protected]: what about the revision before this one? was that one faster?
and what are your pc specs?
we don't see any huge slowdown in kh2.
ColinTre...
I'm sorry, my comment was inaccurate. r4824 was where I saw the slowdowns and I had to revert to 4811 (plugins.)
i5 520m
ATI 5650
Normally I can play Kingdom Hearts 2 at 3x scaling well over 60FPS. Onimusha 4 is considerably harder to play haha but I have before without scaling and with little to no slowdown.
I'll try this version right now.
cottonvibes
[email protected]: are you on linux?
also make sure that your plugin's and pcsx2 settings are the same; there shouldn't be a big slowdown in current revisions.
oh also Onimusha DID have a slowdown on the 2d screens, which was fixed in r4825 :p
ColinTre...
I'm on Windows 7 64bit.
Good to hear about Onimusha 4 at least but I just tested it out and, while faster by about 10FPS it's still around 55FPS. I suppose it could be some other issue such as a driver update messing with it? Except it's the EE... Not really sure but I know I've played it before and it's never been bottlenecked by EE only ever GS.
Just tried KH2. Same issue. EE is near 100% and (with frame limited off) I'm around 55-65 FPS when normally I'm a good 30-100 FPS higher.
The last good revision that I've used is r4811.
ColinTre...
Though I should note that "good" Revision is only good for KH2. The Onimusha slowdown is apparent in 4811 (just tested it now.)

Revision 4830

New GIF: Quick fix from Cotton, fixes ICO and hopefully Tekken 4.
avihal
Good! ICO can't break! :P
avihal
BTW, Tekken 4 wasn't broken. Shadowlady was too tired to follow what she does ;)
romeo_ca...
i confirm ICO is working btw
ramapcsx2
Well, Tekken 4 used to break on every 2nd rev before so I wouldn't be surprised :p
andutrache
A bit of update:
Mana Khemia, Ar Tonelico 1/2, Atelier Iris 1/3 : the menu transitions take like 10-15 sec to happen.
Huge spam of
Busdir - GS->EE Download
Busdir - EE->GS Upload
in console
cottonvibes
andutrache:
try r4831, i disabled the console messages and sped up the code for the general case.
btw, you should also be able to disable those console messages by unselecting Source->Dev/Verbose in the console menu.
andutrache
actually i tried disabling the messages but the slowdown remained
will test r4831 and report in that rev.

Revision 4831

newGif: do what r4829 did, except only flush the gs primitives to the mtgs when
theres going to be a GS download (busdir=1).
this should be the only time that an explicit flushing is needed.
doing it this way should be faster than flushing every incomplete gs packet like
r4829 was doing...
cottonvibes
also disabled some console messages if people had dev logging on and were getting spammed...
andutrache
Gust games problem gone.
Good Job !! :)
naik22...
getting better and better

Revision 4832

Bring back GSnull, zzogl, and old plugins from the dead!
(they were crashing with the new Gif rewrite... shouldn't anymore)
Although Jake had added the new "GSgifTransfer" callback to these plugins in the
past, he forgot to modify the .def files so pcsx2 can actually use them :p
shadowladyngemu
Fixed issue 916 too, good job :)
arcum42
It's amusing to see that GS.def in GSnull was still labeled as being for firewire. Obviously, when porting it, I used the Firewire null plugins .def file as a base.
Given that my development really is mostly limited to Linux, we're probably lucky the Windows side of it works as well as it does, though...
arcum42
Oh, and actually, I think I was the one who added them to the two plugins, using the changes to GSdx as a guideline. And .def files aren't used in Linux, so updating them didn't occur to me. I'd forgotten they even existed, to be honest...
cristian...
Wow man, COTTONVIBES, you are very good!
You can do a "Gamefixes" to solve the Soul Calibur III GSDX speed problem?
For example, add an option to cancel the code that affects the game, and when you tick this option (in the Game Fixes menu), the game while go normal (50-70 FPS)?
I'll post it on forum!
cottonvibes
arcum42: ah i thought it was jake cuz i saw the new code being added in one of his commits. maybe what i saw was him merging your code though? idk
and yeh its funny about the firewire label on GSnull :D
cristian: i don't know what in gsdx causes the soul calibur speed problem that you're talking about. i also don't know much about gsdx's code, so i'm not the right person to look into that :p
jfre1...
Patience young padawan
arcum42
For zzogl, what happened was that he did the initial work on GSgifTransfer in the ReorderingMTGS branch, and I updated zzogl to use it in his branch. And, of course, he was the one that merged the branch in.
With GSNull, I added that in later. Mainly because every so often, I think about GSNull, and start updating it to try to make it do more of what a real GS plugin does...
simonant...
Thanks to everyone for all your hard work, you truly are appreciated by many.
I know it has nothing to do with this commit but I was just wondering if there was any talk about the DMAC rewrite Jake was working on before he left being worked on again?
Another question if I may, is anyone actually able to rewrite the GSdx H/W TextureCache code or is it just too much of a pain?
Best regards,
Simon.
gabest11
The main problem with hw rendering are the pixel format changes (and alpha blending, output masking, 32 bit zbuf, etc. :P). We would need to handle render targets and textures in pages and do on-the-fly conversions as needed with a bunch of swizzling shaders, all using integers, so dx9 is out of question already. Rewriting the swizzling code as shaders between every format is a crazy idea and a lot of work.
nokiaqdman
Aww and here I was hoping dev9giga would be affected as well. Oh well, good job anyway.
shadowladyngemu
What's wrong with dev9giga and why would it be affected by this?
cottonvibes
[email protected]: jake's dmac rewrite code will probably never be used. it didn't work properly and nobody knew why, so now that jake has left its basically dead code (probably).
future plans to rewrite the dmac again are still there. its just another one of those big changes that will take weeks of coding and a lot of tweaking/debugging to get working... its difficult to get the motivation to start coding such a thing :p
simonant...
Thanks for the informative answers Gabest and Cottenvibes, very much appreciated. I've been following PCSX2 developement for many years, what you guys do is quite a feat, emulating the PS2 seems like a beast to tame!
Cya :)
Line.E...
Great progress !!
But looks like latest revisions have a problem with smooth framerate...
Speed in many games fluctuating and jumps from fullspeed to lowspeed everywere. Maybe this is due to latest GIFsubsystem overwrite ? Or something changed in GSDX...
I'am using GSDX 4228 in software mode (2 threads). Before framerate was smooth.
(P.S. - in GSDX GUI hacks tab is broken - invisible)
DanrleiS...
very good. Please do you can send your ini.file of pcsx2 as link?
lemuel2010
There is very good use old plugin!!!

Revision 4833

GSdx: CRC hackfixes!
Summary of changes...
Fixed menus and HUD for Spyro: A New Beginning and Spyro: the Eternal Night.
Fixed missing dialogs and reduced the VRam usage a bit for Tales of Legendia
("8-bit textures" help a bit more with Vram/speed). Should be playable now in
hardware mode. Thanks to rama for figuring it could be hackfixed this way and
the initial patch :)
Half-screen fixes for Ty the Tasmanian Tiger 2, X-men Origins: Wolverine, Call
of Duty: World at War - Final Fronts.
Modified the Star Wars: Force Unleashed hackfix a bit, shouldn't have the see-
thru objects anymore.
Also modified the Metal Gear Solid 3 and Gran Turismo 4 hackfixes as they needed
different skip values for each region (PAL/NTSC). Thanx to avih for the region
code... and the free C/C++ lessons :P
The hackfix for Sly 3 was still showing stripes for 3-D and two-player modes,
fixed for NTSC version now and hopefully works for PAL one too.
Couple GameDB updates after the gif rewrite.
animus...
Wow! So many fixes. Thank you Lana!
prafull....
good work :)
ramapcsx2
Really good work with Tales there. How'd you fix the problems we had? :p
cottonvibes
nice work
konaj...
good work with legendia that was supposed to be one of the impossible to fix games :p...
now just need a miracle update for Dirge of Cerberus would be great if some solution could be made for the half screen update bug. :)
mailsze...
MGS3 PAL fixes??? Great! +10000 points for you.
romeo_ca...
congrats fro the hard work we really appreciate, but still there is no fix for (Onimusha dawn of dreams)
invisgh...
Wow! Nice job with all these, glad you've arrived to put a band-aid on all these games!
jfre1...
Always good to see more games working good
mkwon...
Good job everyone! +180 review score within a week.
serban.a...
first of all 10x!
-champions return to arms , justice league heroes have half screen problems too
-terminator 3 redemption , james bond everything or nothing(when selecting weapons gadget menu) , malice , also have problems with high VRAM usage
Dante2...
So GT4 now runs in hardware mode? Or it still have to be run in software to see anything?
actact9...
YAY TNX GRANDEST LADY Ive been wanting to play this Tales game for a very long time now and software and frameskipping wasn't enough for me TNX hell of a lot again
nokiaqdman
Thanks for the GT4 and MGS3 fixes!
psponlin...
how do i install these hacks?
psponlin...
how do i install these hacks?
shadowladyngemu
They should be working already if you have a recent revision of the GSdx plugin (r4833 or higher)

Revision 4834

SPU2X: New time stretcher: Improved behavior on extremes.
1. Much better behavior at extreme low/high FPS (less skips/lower latency).
2. As a result, I was able to reduce internal latency by 50% (50ms config now
equals 100ms before).
Recommended latency config for stretcher: 100ms.
For rhythm games, if your FPS is very stable, I recommend 50ms.
avihal
Oops, 100ms config now is the same latency as it was before this change with 50ms config...
avihal
Hmm.. when enabling debug at pcsx2, and then enabling overrun messages, it prints the stretcher's log. On my system (xp32 sp3, onboard realtek HD audio), the stretcher does 700+ iterations/sec. On Shadowlady's pc it does around 100/sec (both computers with pcsx2 running stable at 6-fps).
That massive difference makes the algorithm very slow to respond on her system, and much more frequently get underruns. Need to understand where does the difference come from, and decide what to do after we have this info.
I _think_ the iterations/sec should be a pure pcsx2/spu2x (via soundtouch) thing, and not depending on os/etc.
avihal
When enabling debug at spu2x*
Stable at 60 fps*
ramapcsx2
I get this here and it works nicely:
buffers[->0.05]: 0.049 ( 98%), tempo adjust: 2.025151, compensated target: 0.025, iterations: 1442
(FrameLimiter) ENABLED.
buffers[->0.05]: 0.058 (115%), tempo adjust: 1.660880, compensated target: 0.032, iterations: 1151
======> stretch: None (1:1)
buffers[->0.05]: 0.043 ( 87%), tempo adjust: 1.000000, compensated target: 0.050, iterations: 751
buffers[->0.05]: 0.035 ( 70%), tempo adjust: 1.000000, compensated target: 0.050, iterations: 742
buffers[->0.05]: 0.046 ( 92%), tempo adjust: 1.000000, compensated target: 0.050, iterations: 733
shadowladyngemu
Mine are more like this:
buffers[->0,05]: 0,610 (1220%), tempo adjust: 10,000000, compensated target: 0,006, iterations: 87
buffers[->0,05]: 0,039 ( 78%), tempo adjust: 10,000000, compensated target: 0,005, iterations: 98
buffers[->0,05]: 0,307 (615%), tempo adjust: 10,000000, compensated target: 0,005, iterations: 95
buffers[->0,05]: 0,295 (590%), tempo adjust: 10,000000, compensated target: 0,005, iterations: 98
Not working nice at all here, goes away at like 500ms tho, with the old stretcher I only had this sound wise when using like 50ms but with r4820 I was able to keep even 50ms without a problem unless I was getting very low FPS (problem then was sound clipping).
Metal.So...
Sonic Heroes (in software) character select (in Story mode) average fps 42, Async sounds awful, all changes until 4820 bad for me((
Metal.So...
In gameplay 90-110fps, it clicks\pops rarely((
xat...
Audio quality seems to degrade more quickly into skips with this commit for me.
ramapcsx2
Lana:
Output module used?
Do you have any modifications to your soundtouch "advanced" settings?
avihal
[email protected], async was NOT modified in this revision (or any other recent revision). Only timestretcher was modified.
rama, Shalowlady used default config on a lean build. Might be a win7/xp issue.
Metal.So...
[email protected] yeah, sorry i found another issue of bad sound.

Revision 4835

microVU:
- Fixed a bug with mVU's ESIN implementation. This finally fixes the flower-
petal bug in Radiata Stories (and hopefully the clouds-bug in VP2 but havn't
tested). Rama and I have wanted to fix this for a long time, but never knew the
problem :p
- Improved implementation of some undefined behavior that happens on branches to
take into account pipeline stalls.
gif / vif:
- Added some logging code that parses gif packets. It can be enabled by the
PRINT_GIF_PACKET macro in Gif.h
- Deleted some old gif code.
- On ReadFIFO_VIF1() clear the out-reg to prevent uninitialized results in case
GSreadFIFO() doesn't modify it...
- Create a fallback for GSreadFIFO2() so that its always defined (as long as the
plugin implements GSreadFIFO())
pcsx2:
- Organized the virtual folders in vs2008 a bit...
Note: vs2010 and Linux builds need to be modified to add Gif_Logger.cpp and
delete GIFpath.cpp
konaj...
nice work, I can confirm the radiata stories petal fix, and the vp2 cloud fix, they no longer look like they explode :)
http://i53.tinypic.com/16auu02.jpg
cottonvibes
[email protected]: cool thanks for confirming this fixes the vp2 cloud problem :D
justn...
Nice work, love all these fixes that keep happening as it makes playing certain games even more enjoyable, i have one question if that's ok, whats messing all the textures up and cause major slowdowns in the ratchet and clank series of games, I'm not a programmer but I'm am very interested in what causes problems with some games I just like to know as I'm nosey lol.
Thanks for all the time and effort you are all putting into this, just wish i could program then i could help. +1 for fix & +100 for putting up with me being a pita and asking questions.
jammanl...
i believe that is cause by a bit mapping problem or bump mapping (i always get those 2 mixed up) and im pretty sure that gdsx's fault but to ad support for rachet and clanks unique system would require alot of coding (this may all be wrong i cant remeber)
justn...
I'm getting an error when trying to build this revision on vs2010 ultimate.
error C1083: Cannot open source file: '..\..\ps2\GIFpath.cpp': No such file or directory E:\pscx2\pcsx2\windows\VCprojects\c1xx
is there something that i need to install to stop the error, the last time i compiled pcsx2 was about 8 revisions ago and everything went fine then.
justn...
ok i just read the last part of the description so ignore my last comment, how do i modify vs2010 to add Gif_Logger.cpp and delete GIFpath.cpp as i've never done anything like that before.
justn...
thanks [email protected] for the explanation, the devs will add support when they get chance i guess, i still play them on my ps2 i just wondered what the problems were.
invisgh...
Just what I was wishing would start happening! VU fixes! Any chance of some more on the way? I'm kinda hoping on of the VU fixes will inadvertently fix the Returns to Arms bugs :P
cottonvibes
[email protected]: i believe R&C's texture problems are due to mipmapping which gsdx in hw mode doesn't handle correctly. The game works fine in gsdx sw mode (press F9 to switch to sw mode).
The slowness in the game is because of all the geometry in the 3d world, which means it runs the VU's and GS harder...
Generally the less 3d visible in games, the less processing power needed to render that scene.
cottonvibes
[email protected]: i spent a few hours playing around with Return to Arms, tweaking various VU/GIF related stuff, and nothing seemed to affect the texture problems.
I don't think we'll fix those snowblind games anytime soon :/ (but hopefully i'm wrong :p)
invisgh...
cotton: D: Say it isn't so! What else could cause those problems if not the VU or GIF? Those games were some of the best games of that genre so its a real shame that they dont work :\
cottonvibes
well it likely is a vif/gif/vu problem, i just don't know what :p
invisgh...
Well any chance of getting the half screen fixed?
miser...
For those unable to do a few clicks;P
A quick patch to vs2010
http://www.speedyshare.com/files/29665210/PCSX2_r4835_vc2010.patch
TortoiseSVN->apply patch...
/nice work btw:)
cottonvibes
[email protected]: half screen problem is a gsdx hw problem which is fixed in sw mode.
my guess is its one of those problems that needs a new texture cache implementation to fix, but i'm just guessing and don't know the details...
invisgh...
Alright. Well thanks for taking the time and answering all these questions on here :)
ramapcsx2
Yay, elementary function bug. Sure to fix those 3 Tri Ace games but *nothing* else :p
Good job! :p
avihal
[email protected], the R&C is gsdx mipmapping. After you switch to SW using F9, you can press 'Insert' to toggle mipmapping. It is unrelated to any change at this revision.
jfre1...
[email protected]: Even with the half-screen issue fixed in SW mode the games still lockup at the menu screens which is the bug to beat if the dark alliance engine games are ever going to become playable. Course if the half screen issue is fixed as well that would be awesome.
shadowladyngemu
Also fixes jumpy grass in "Legend of Kay", the growing uhhh wave effects from weapons and other effects in "Minority Report", and the huge street lights in first mission of "007: Nightfire".
justn...
Hey thanks for answering all my questions it just makes me want to learn to program even more now,btw i cant download the patch from speedyshare, IE says it cant display the webpage and Firefox keeps saying that it can't establish a connection with www10.speedyshare.com, is their any chance you could upload it to some other host for me if possible, thanks.
Hefra...
Issue 1059 is now fixed! Thanks a lot cottonvibes!
cottonvibes
From what shadowlady said, Issue 747 should be fixed too.

Revision 4836

Fix VS2010 compiling. Patch by miseru99, thanks :)
miser...
;)

Revision 4837

Hack for GSdx hardware to fix inverted videos that showed up with the new GIF
rewrite.
The problem as I understood is is incomplete COLCLAMP support.
Thanks to sudo for the hack :)
(Unfortunately we couldn't find out more about why these FMV also *all*
flicker.)
chenxu...
Thanks for the fix.
I believe we will find out the FMV problems.

Revision 4838

V2 of the previous GSdx hack: Now also works in pointlisted FMV's (FFX-2, Legend
of Legaia).
konaj...
great fix, this also fixes dirge of cerberus videos they now display in native - hw mode again (without the emboss effect that was introduced with the new gif :))
Arkai...
Sí porque en el FFX-2 los vídeos se veían como el culo.
Yes, because in FFX-2 FMVs looked like ass.
A lot of thank you !
Dra...
Anything special needed to use this update as my version of Legend of Legaia 2 is still exhibiting the pointlisted behavior.

Revision 4839

cmake: add/delete files

Revision 4840

SPU2X: New stretcher: hopefully works better than r4834 (same goals as r4834:
better resiliance to very high/low fps, compared to r4820).
I'm not fully happy with it, as it's a bit complicated for my taste, so feedback
about how it performs will be appreciated.
shadowladyngemu
Much better now, thx :p

Revision 4841

SPU2-X: Clean up some logging code.

Revision 4842

SPU2X: Better control of debug messages. (Now they actually print when enable at
the SPU2X debug GUI).

Revision 4843

SPUX: New stretcher: Should be slightly more stable now, compared to r4840.
On 4840 I added dynamic tuning (which may have slight negative effect on
stability) to adapt to different iterations/sec of different systems, but I
didn't like this system too much. On 4840 I also made a small change which, I
now understand, factors out the differences between systems in this regard,
essentially making dynamic tuning not required anymore. So now dynamic tuning is
disabled.
If you enable the SPU2X messages (and the overrun messages), you would see log
messages similar to this:
buffers: 44 ms ( 89%), tempo: 1.000000, comp: 1.000, iters: 764, (N-IPS:750 ->
avg:50, minokc:50, div:100)
If the iters value (764 at this example) on your system when running at 100%
speed (50/60fps) is higher than 1000 or lower than 500, then please comment here
and post few of the log lines.
avihal
[email protected], cool, thx :)
lkm...
I confirm, at least in two games with 100% speed the value is always about 750 (749~752). Good work! :)
Thunderb...
This build is better than the 4600 build it slowly reduces the blank line for forbidden siren 2 and makes it playable in some sort until the black lines come back...
Besides that its a good job!!! :D

Revision 4844

3rdparty/portaudio: Updated portaudio to the march 26 stable release (svn rev
1647). Too many changes to list here.

Revision 4845

3rdparty/portaudio: Fixed the build (windows). Somehow it compiled in
devel/release, but not in debug. Should have failed in both of them though...
gigaherz
Can someone please replicate the changes to the project file from these two revisions into the vs2008 project? I don't have vs2008 anymore and I don't feel like installing it just for this.
gigaherz
Nevermind, I commited the wrong vcproj file anyhow.

Revision 4846

3rdparty/portaudio: Fixed the build with vs2008 (I hope). I commited the wrong
.vcproj file. Reverted to the previous one and updated the file with the same
changes I did to the vs2010 .vcxproj
gigaherz
It appears portaudio doesn't initialize properly. I'm tryingto figure out what's wrong.

Revision 4847

3rdparty/portaudio: Fixed portaudio not finding any device because there wasn't
any API enabled. The new toggle system requires the compiler to specify the
enabled APIs, instead of assuming default-on.

Revision 4848

I went and copypasted the one line I typoed.
gigaherz
I hate myself.
A lot.
gigaherz
Marked +1 just to tell people it works again. ;P
avihal
Nice. Now port audio has reasonably low latency on my system (XP 32 SP3). Used to be >500ms before these changes.
gigaherz
By the way, I left WinMM (waveOut) disabled in portaudio. This is because when the default was selected, it sometimes preferred to use winMM instead of DirectSound, which is bad. WinMM is bad. Old. Poorly designed. Shoudln't be used at all.
ramapcsx2
What happened here? :p
gigaherz
I realized there was a stable snapshot of portaudio that had a shitload of changes since the last one I commited... and my SVN skills are rusty. ;P
shadowladyngemu
Why PA_USE_WDMKS=0?
I understand disabling waveout but KS? or am I mistaking what that means? :p
gigaherz
As I told avih on IRC, I enable KS it complains about some duplicate definition of some GUID something. It was 5am so I decided to leave it off unti I slept.

Revision 4849

Test. Dummy commit.
gigaherz
wtf? XD
frost....
Why so negative? XD
mailsze...
emmm, ???? Null commit?
Are you testing the callbacks? :P
gigaherz
He was testing if it worked to use his google username instead of his email address for the commits, ike the rest of us do ;P
frost....
Who? Me? No,just asking why this comit has 1 negative. I am ambivalent about this change.

Revision 4850

3rdparty/portaudio: Updated to a slightly newer revision of portaudio, sicne the
fixes in it seemed interesting enough.
I also enabled WDMKS backend, but I had to change some #defines to get it to
compile, and I can't seem to be able to use it on my Win7 machine. If anyone on
XP wants to try it, it will be at their own risk. (use WDMKS hostApi name on the
.ini)

Revision 4851

SPU2-X / portaudio: Fix the requested latency from a hardcoded 200ms to "as
close as you can to 64 samples / buffer".
Causes internal buffer size allocations to be as small as possible within
portaudio and the OS, so it can have bad effects if the number turns out to be
too small.
Would be nice if someone with a "real" audio card (Audigy, X-fi or similar)
tested WASAPI Exclusive Mode, KS or ASIO with this change.
Seinfeld...
hi, i would like to know what default latency should i use for a c2d 2.33, 2gb ddr2, ati 2600, xp x86, xaudio 2, linear, reverb x1, timestretch, stereo, thanks and sorry for trouble i may cause you.
jfre1...
Hello Newman
gigaherz
[email protected]: This is not a discussion forum. http://forums.pcsx2.net/ is the right place for those questions.
You should try how much can you lower it, until it starts to sound bad ;P
andutrache
i have a Sound Blaster X-Fi Titanium Fatal1ty Professional sound card.
What should i test again?
gigaherz
If it works properly or skips or stutters or anything, if you configure spu2-x to use portaudio with WASAPI (exclusive mode) or ASIO (requires building with ASIO enabled and the ASIO SDK) or KS.
andutrache
i ran in Wasapi exclusive mode and apart from a few stutters(mostly in fmv's) it sounds good and much clearer than XAudio2.
The only thing i can say is that with the SPU2-X, Windows Mixer and my headphones volume settings at max i could hear the sound like its at half volume, you need to up the output volume on portaudio.
I don't think i have that ASIO SDK you mentioned.
Also, i may sound dumb but, what is KS ? Never heard of it.
Syst3mSh0ck
Tested WASAPI with X-Fi XtremeMusic (CA20K1) on Windows 7 SP1 x86 and Kernel Streaming on Windows XP SP3 x86 with latest stable Creative drivers ie 2.18.0015, both work fine but I only tested God of War 1/2, FFX and Resident Evil Code Veronica, and WASAPI does sound a bit clearer, like andutrache mentioned.
Thanks for all the work Gigaherz.
andutrache
I tested it on Naruto Accel 2, GUST games, Burnout Revenge, Tekken 5, Neo Contra, some Call of Duty games.
If you want me to test specific games tell me which and if i have them ill test.
ramapcsx2
If your sound is "clearer" or just plain "better" with exclusive mode, that's a sign that your sound driver is doing bad modifications to the sound.
Check settings like reverb, equilizer, automatic volume adjustment or similar in your driver panel.
Just routing the sound through a couple extra layers will not harm it in any way. It's those "enhancements" that may ;)
gigaherz
KS = Kernel Streaming, it means the app is sending the data directly to the driver, isntead of using a higher-level API to do it.
andutrache
All SoundBlaster enhancements are completely disabled by me in both audio control panels (Windows/Creative).
The sound is STILL better in WASAPI exclusive mode.
ramapcsx2
Well, I call placebo effect or bad drivers STILL adding stuff they shouldn't.
andutrache
its very possible that the driver still filters sound some way.
avihal
It certainly looks (ehh.. sounds) as if now port audio is able to produce much lower overall latency. Very nice :)

Revision 4852

SPU2-X: Added configuration dialog for the portaudio backend (windows only).
Added settings for customizing the suggested latency.
ramapcsx2
Great work :)
shadowladyngemu
If you OK/Cancel the changes in the portaudio window then click "Configure" again, the devices will be added again to the list (and keep increasing if you keep doing it).
Other than that it works :p

Revision 4853

SPU2-X: Removed the std::vector I used out of lazyness. The config dialog should
no longer keep an ever-growing list of devices, and it has less potential side-
effects if somehow the portaudio device list changes while the dialog is open.
3rdparty/portaudio: Removed debug prints on release targets.
gigaherz
Forgot to say, I also made the device list on Init() ignore the input devices.
andutrache
Very nice i always wanted a config dialog for that :).
Good Work !!
andutrache
I just built SPU2-X with ASIO and must say that it sounds good but only with
use this latency : 10 ms (the second option in portaudio config)
with Use smallest possible it crackles like hell.
gigaherz
If the game is fast enough, disable the timestretcher and try again. The timestretcher works in blocks of 2400 samples usually so it can't handle the kind of short buffers ASIO will be using. I will commit a change in a bit that will allow the internal buffering latency to go down to ~3ms, but only if timestretching is turned off.

Revision 4854

SPU2-X: Experimental change! Lowered the lower latency limit to 3ms if the
timestretcher is not being used. This latency will add up to the output latency
as usual, but with a good sound chip this should allow overall latencies < 15ms.
gigaherz
Note: don't try this if the game is <100% speed usually, since running the games without timestretch will soudn like crap ;P
andutrache
now all we need is a configure dialog for XAudio2 :P <--- kidding
This sounds great but the audio sometimes skips (especially on the small 58-62 fps interval) due to no Timestretch but that is to be expected.
gigaherz
Actually I looked at it and it doesn't seem to be as low-latency as the 3ms woudl imply, since the buffer holding the data is actually 16 times that number... but that would mean it was previously also 16 times as big so 50*16 = 800ms before, in the worst case.
Anyhow its there until I figure out what to do with the buffering.

Revision 4855

Added "portable.ini" to /bin, so SVN builds will work in portable mode by
default.
avihal
You just KNOW someone will commit it soon with FTW=0 :P

Revision 4856

spu2x: linux compilation fix
Thunderb...
Nice...I like the update...But sadly when you run it on this build it doesn't recognize the plugins and gives off weird data besides that its awesome....X3
Keep up the good work :D!!!
gregory....
Can you give me more details?
Thunderb...
Here is the detailed log when I play around with it...I hope it helps a bunch out...
--Log file--
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX-r4838.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX-r4838.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl-r4832.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl-r4832.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl.dll
Loading plugins...
Binding GS : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-SSE2-r4838.dll
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Binding PAD : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\LilyPad-r4797.dll
Binding SPU2 : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\SPU2-X-r4856.dll
Binding CDVD : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\cdvdGigaherz-r4488.dll
Binding USB : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\USBnull-r4811.dll
Binding FW : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\FWnull-r4811.dll
Binding DEV9 : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\DEV9null-r4811.dll
Plugins loaded successfully.
Initializing plugins...
Init GS
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Init PAD
Init SPU2
Init CDVD
Init USB
Init FW
Init DEV9
Plugins initialized successfully.
Bios Found: Europe v02.00(14/06/2004) Console
Bios Found: USA v02.00(14/06/2004) Console
Bios Found: Japan v01.00(17/01/2000) Console
Bios Found: Europe v01.60(04/10/2001) Console
Bios Found: USA v01.60(07/02/2002) Console
Shutting down plugins...
PCSX2 0.9.9.r4839 - compiled on Aug 2 2011
Savestate version: 0x9a020000
Host Machine Init:
Operating System = Microsoft Windows 7 Home Premium Edition Service Pack 1 (build 7601), 64-bit
Physical RAM = 4095 MB
CPU name = Pentium(R) Dual-Core CPU E5200 @ 2.50GHz
Vendor/Model = GenuineIntel (stepping 06)
CPU speed = 2.493 ghz (2 logical threads)
x86PType = Standard OEM
x86Flags = bfebfbff 0000e39d
x86EFlags = 20100000
x86 Features Detected:
MMX.. SSE.. SSE2.. SSE3.. SSSE3
Plugins shutdown successfully.
Reserving memory for recompilers...
Loading plugins...
Binding GS : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-SSE2-r4838.dll
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Binding PAD : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\LilyPad-r4797.dll
Binding SPU2 : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\SPU2-X-r4856.dll
Binding CDVD : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\cdvdGigaherz-r4488.dll
Binding USB : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\USBnull-r4811.dll
Binding FW : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\FWnull-r4811.dll
Binding DEV9 : C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\DEV9null-r4811.dll
Plugins loaded successfully.
(GameDB) 9535 games on record (loaded in 285ms)
HotSwapping to new ISO src image!
HLE Notice: ELF does not have a path.
Initializing plugins...
Init GS
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Init PAD
Init SPU2
Init CDVD
Init USB
Init FW
Init DEV9
Plugins initialized successfully.
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Star Ocean 3 - Till the End of Time [NTSC-U] [Disc1of2] [SLUS-20488].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2274624 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd001.ps2
(FileMcd) Creating new 8MB memory card: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd002.ps2
(FileMcd) Creating new 8MB memory card: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd002.ps2
Plugins opened successfully.
EE/iR5900-32 Recompiler Reset
Bios Found: USA v02.00(14/06/2004) Console
BIOS rom1 module not found, skipping...
BIOS rom2 module not found, skipping...
BIOS erom module not found, skipping...
(UpdateVSyncRate) Mode Changed to NTSC.
(UpdateVSyncRate) FPS Limit Changed : 59.94 fps
csr.RESET
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_204.88;1) Game CRC = 0x23A97857, EntryPoint = 0x00100008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
csr.RESET
(GameDB) Enabled Gamefix: VuAddSubHack
EE/iR5900-32 Recompiler Reset
csr.RESET
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
Decommitting host memory for virtual systems...
EE/iR5900-32 Recompiler Reset
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HotSwapping to new ISO src image!
HLE Notice: ELF does not have a path.
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Xenosaga - Episode II - Jenseits von Gut und Bose [NTSC-U] [Disc1of2] [SLUS-20892].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2286352 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\memcards\Mcd002.ps2
Plugins opened successfully.
Bios Found: USA v02.00(14/06/2004) Console
BIOS rom1 module not found, skipping...
BIOS rom2 module not found, skipping...
BIOS erom module not found, skipping...
csr.RESET
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_208.92;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_208.92;1) Game CRC = 0xEB39ABEC, EntryPoint = 0x00120008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_208.92;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
csr.RESET
EE/iR5900-32 Recompiler Reset
csr.RESET
csr.RESET
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
Apply Memory cards:
slot[0]='Mcd001.ps2'
slot[1]='Mcd002.ps2'
Apply Memory cards:
slot[0]='Mcd001.ps2'
slot[1]='Mcd002.ps2'
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Xenosaga - Episode II - Jenseits von Gut und Bose [NTSC-U] [Disc1of2] [SLUS-20892].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2286352 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Documents\PCSX2\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Documents\PCSX2\memcards\Mcd002.ps2
Plugins opened successfully.
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
Decommitting host memory for virtual systems...
EE/iR5900-32 Recompiler Reset
HLE Notice: ELF does not have a path.
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Xenosaga - Episode II - Jenseits von Gut und Bose [NTSC-U] [Disc1of2] [SLUS-20892].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2286352 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Documents\PCSX2\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Documents\PCSX2\memcards\Mcd002.ps2
Plugins opened successfully.
Bios Found: USA v02.00(14/06/2004) Console
BIOS rom1 module not found, skipping...
BIOS rom2 module not found, skipping...
BIOS erom module not found, skipping...
csr.RESET
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_208.92;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_208.92;1) Game CRC = 0xEB39ABEC, EntryPoint = 0x00120008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_208.92;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
csr.RESET
csr.RESET
csr.RESET
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
Decommitting host memory for virtual systems...
EE/iR5900-32 Recompiler Reset
HotSwapping to new ISO src image!
HLE Notice: ELF does not have a path.
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Star Ocean 3 - Till the End of Time [NTSC-U] [Disc1of2] [SLUS-20488].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2274624 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Documents\PCSX2\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Documents\PCSX2\memcards\Mcd002.ps2
Plugins opened successfully.
Bios Found: USA v02.00(14/06/2004) Console
BIOS rom1 module not found, skipping...
BIOS rom2 module not found, skipping...
BIOS erom module not found, skipping...
csr.RESET
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_204.88;1) Game CRC = 0x23A97857, EntryPoint = 0x00100008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
csr.RESET
(GameDB) Enabled Gamefix: VuAddSubHack
EE/iR5900-32 Recompiler Reset
csr.RESET
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX-r4838.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX-r4838.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\GSdx32-AVX.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl-r4832.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl-r4832.dll
Path: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4856-windows-x86\pcsx2-4856-windows-x86\plugins\ZZOgl.dll
Bios Found: Europe v02.00(14/06/2004) Console
Bios Found: USA v02.00(14/06/2004) Console
Bios Found: Japan v01.00(17/01/2000) Console
Bios Found: Europe v01.60(04/10/2001) Console
Bios Found: USA v01.60(07/02/2002) Console
Suspending single plugin: PAD
Saving PAD
Recovering single plugin: PAD
Loading PAD
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Star Ocean 3 - Till the End of Time [NTSC-U] [Disc1of2] [SLUS-20488].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2274624 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Documents\PCSX2\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Documents\PCSX2\memcards\Mcd002.ps2
Plugins opened successfully.
Thunderb...
I mean tried the SVN not Played around....>.<;;;

Revision 4857

SPU2-X: kill a few warnings
ramapcsx2
ta :p

Revision 4858

SPU2-X: Added audio expansion support to the portaudio backend. This change also
corrects the volume in normal stereo mode.
Removed an useless method from the module interfaces.
fagoa...
To my understanding, this will allow audio to be accelerated by HW(sound cards) ?
gigaherz
Nono, audio is always mixed in software. This allows you to use extra speakers even if your sound card drivers don't have a "speaker fill" option.

Revision 4859

SPU2-X: Added config setting for ProLogic decoding level.
Refactored the ProLogicII code into a separate file and changed it to floating
point math for easier debugging.
Added a basic ProLogic decoder that doesn't try to do surround separation into
L/R.
The setting does not have a GUI option yet, since the PLII decoder is
experimental and doesn't give too good results.
To change it, set DplDecodingLevel to one of: 0=none, 1=ProLogic, 2=ProLogicII.
The default is 0.
gigaherz
Can someone add the missing file to the 2008 .vcproj?
Florent....
For once, it's not the VS2010 that's broken ! \o/

Revision 4860

SPU2-X: Improved dplII decoder algorithm, it now generates more defined
positional balance.
It's still most probably very wrong, but its sounding nice at least. ;P
godofdr...
good work
gigaherz
Remember dplII decoding only works for 5.1 speaker mode!
The surround speakers might be somewhat too loud, but I only have 2 games with dplII around at the moment, and they both sound fine.
godofdr...
i very love it when adding some support of some good thing to the plugin its make me perfect

Revision 4861

SPU2-X: Give some more range to the balancing, I realized its most probably safe
for our ears ( an it seems to be based on testing ;P).
godofdr...
nice
gigaherz
There I'm done spamming for tonight.
I feel good. I was listening to the Intro of Ar Tonelico and it just sounds so nice in 5.1.. :D
shadowladyngemu
Sounds great to me so far but I had to reduce the volume in SPU2-X to about 66% or I'd get crackling (at least in MGS3 New Game intro, in other games it seemed OK :p).
gigaherz
hmmm that game might be louder than the ones I tested xD
I'll have to dig out my other games and check them more thoroughly.
fagoa...
Great job, but didn't SPU2-X support 5.1 before? I'm quite certain it worked to some extent in GoW2. Anyway, decoders must be present in one's amplifier or sound card in order to use it, am I right?
Because, as far as I know, Dolby libraries cannot be distributed free of charge or something.
andutrache
tried to test this but i get :
1>SndOut.obj : error LNK2001: unresolved external symbol "void __cdecl ProcessDplIISample32(struct StereoOut32 const &,struct Stereo51Out32DplII *)" ([email protected]@[email protected]@[email protected]@@Z)
1>SndOut.obj : error LNK2001: unresolved external symbol "void __cdecl ProcessDplSample16(struct StereoOut32 const &,struct Stereo51Out16Dpl *)" ([email protected]@[email protected]@[email protected]@@Z)
1>SndOut.obj : error LNK2001: unresolved external symbol "void __cdecl ProcessDplSample32(struct StereoOut32 const &,struct Stereo51Out32Dpl *)" ([email protected]@[email protected]@[email protected]@@Z)
1>SndOut.obj : error LNK2001: unresolved external symbol "void __cdecl ProcessDplIISample16(struct StereoOut32 const &,struct Stereo51Out16DplII *)" ([email protected]@[email protected]@[email protected]@@Z)
1>I:\Development\Project Source\PCSX2 - OC\\bin\plugins\SPU2-X.dll : fatal error LNK1120: 4 unresolved externals
when trying to compile on MSVC 2008.
xat...
Mentioned in r4859, you need to add DplIIdecoder.cpp to the vc2008 proj.
And yeah, Ar tonelico's intro sounds fantastic with this.
miser...
http://www.speedyshare.com/files/29812479/r4861_VS2008fix.patch
^
Added also Devil May Cry 3 US(non extended) crc to Shadow Lady's hackfix in this patch. (the one from here: http://forums.pcsx2.net/Thread-Devil-May-Cry-3-SVN-fix-not-working)
Like always +1 for hard work.:)
gigaherz
Comment by [email protected], Yesterday (19 hours ago)
Great job, but didn't SPU2-X support 5.1 before? I'm quite certain it worked to some extent in GoW2. Anyway, decoders must be present in one's amplifier or sound card in order to use it, am I right?
Because, as far as I know, Dolby libraries cannot be distributed free of charge or something.
---------
Yes it used to have a 5.1 option before, but it didn't work too well.
This is not a Dolby Digital, it's Dolby ProLogic II. DPLII is a variation on a method called "matrixing" which allows surround information to be encoded in stereo audio, in a way that allows partial reconstruction of the original sound. Dolby's real dematrixing hardware is complex and we can't hope to match the quality without knowing the exact specifics of how the hardware does the job, so I approximated something based on the publically available information I found in Wikipedia.
ramapcsx2
Too bad I can't test it anymore :p
gigaherz
Meh, just get something like this: http://www.buy.com/prod/genius-sw-n5-1-1000-5-1-speaker-system-black-25-w-rms/q/sellerid/17472350/loc/111/211969914.html
;P

Revision 4862

Commit the SPU2-X compile fix from miseru99. GSdx CRC hackfix is included, too.
luc...
Since i'm getting this:
------------------------------------
Unloading plugins...
(pxActionEvent) (LoadSinglePluginEvent) The configured SPU2 plugin file is not a valid dynamic library(LoadCorePlugins)
/usr/lib/pcsx2/libspu2x-2.0.0.so
Plugins unloaded successfully.
...
[wx] /usr/lib/pcsx2/libspu2x-2.0.0.so: undefined symbol: numSpeakers
Path: /usr/lib/pcsx2/libspu2x-2.0.0.so
File is not a valid dynamic library.
-----------------------------------
I suppose that adding DplIIdecoder.cpp in the cmake was not enough. What to do?
ramapcsx2
Gregory, halp! :p
gregory....
lol. Do not worry I will do it when I come back from work. Well, I hoped that the adding of the file was enough.
Luc, where did you get numSpeakers symbol !!! I did a quick search, and I did not found anythings. Could you do a grep -ir numSpeakers spu2-x/src.
gregory....
Ok fix in latest, enjoy :)
pg...
Gregory:
I did a grepsearch using dnGREP 2.5.0 (Windows) for "numSpeakers",
and got these files:
\plugins\spu2-x\src\Config.h
\plugins\spu2-x\src\SndOut_Portaudio.cpp
\plugins\spu2-x\src\Windows\Config.cpp
\plugins\spu2-x\src\Windows\SndOut_XAudio2.cpp
Is this what you wanted?
gregory....
Yes, but it is already fixed in r4864 :)

Revision 4863

GSdx: CRC hackfixes for NanoBreaker and Kunoichi/Nightshade, removing the
shadows that are not properly emulated and just cause 3D to look darker
(NanoBreaker in D3D9 just showed a black screen with smoke effects ingame :p).
Minimal changes to the GameDB.
shadowladyngemu
How NanoBreaker looked in D3D9, D3D10 and how it looks now. Didn't think those kind of problems could be that bad in D3D9 :p
http://i.imgur.com/C5aOC.jpg
Thunderb...
Whoa...Nice work but by the way...X3!!!
But It still keeps on saying that the plugins are not found or working right at all...
Here is the log...
--Log file--
Path: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\GSdx32-AVX-r4863.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\GSdx32-AVX-r4863.dll
Path: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\GSdx32-AVX.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\GSdx32-AVX.dll
Path: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\ZZOgl-r4832.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\ZZOgl-r4832.dll
Path: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\ZZOgl.dll
File is not a valid dynamic library.
Some kinda plugin failure: C:\Users\Leun\Downloads\pcsx2-4863-windows-x86\pcsx2-4863-windows-x86\plugins\ZZOgl.dll
-- End of log file --
I think that theirs something wrong with the coding of the plugin search because it keep on saying its not a dynamic library...and the r4600 version did not have this problem at all...
I'm wondering what have cause this problem...
shadow0...
EU versions CRCs:
0x9B89F425 // NanoBreaker EU
0x3B470BBD // Kunoichi EU
Both present the issues mentioned above, black and darker screens.
shadowladyngemu
@Thunderbolt478:
You need a CPU with AVX instructions (Intel's Sandy Bridge for example) to be able to use the AVX plugin.
For ZZogl you need the CG toolkit:
http://http.developer.nvidia.com/Cg/cg_2_2_0006.html
@shadow0000:
Can add the CRCs but can't be sure if they'll work with those versions.
shadow0...
I assumed it would work (fix is the same for US & JP versions?), my bad, also the PAL versions have 60hz mode (I didn't even bother testing 50hz mode).
GS Dumps of both games:
http://www.mediafire.com/?6ldbuqinwt51sgw
shadowladyngemu
"fix is the same for US & JP versions?"
Yes, they use the 60Hz mode and as far as the EU versions have a 60Hz mode it should work at least for it then. The 50Hz mode is the one that might not :p
I also found a GSdump of nightshade 50Hz, will upload the changes soonish.

Revision 4864

spu2x: linux compilation fix.
gregory....
Note: I do not have any time to implement proper gui options, so for the moment I put default value.
ramapcsx2
Awesome, thanks :)
Thunderb...
Hey guys, I have test out this build with star ocean 3 and will it works for some part and then it hangs at some part...Not sure which part but here is the Log.
I hope that it will help out to solve the bugs and glitches out of the new coding....
-- Log file --
PCSX2 0.9.9.r4839 - compiled on Aug 2 2011
Savestate version: 0x9a020000
Host Machine Init:
Operating System = Microsoft Windows 7 Home Premium Edition Service Pack 1 (build 7601), 64-bit
Physical RAM = 4095 MB
CPU name = Pentium(R) Dual-Core CPU E5200 @ 2.50GHz
Vendor/Model = GenuineIntel (stepping 06)
CPU speed = 2.493 ghz (2 logical threads)
x86PType = Standard OEM
x86Flags = bfebfbff 0000e39d
x86EFlags = 20100000
x86 Features Detected:
MMX.. SSE.. SSE2.. SSE3.. SSSE3
Plugins shutdown successfully.
Reserving memory for recompilers...
Loading plugins...
Binding GS : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\GSdx32-SSE2-r4863.dll
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Binding PAD : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\LilyPad-r4797.dll
Binding SPU2 : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\SPU2-X-r4864.dll
Binding CDVD : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\cdvdGigaherz-r4488.dll
Binding USB : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\USBnull-r4811.dll
Binding FW : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\FWnull-r4811.dll
Binding DEV9 : C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\plugins\DEV9null-r4811.dll
Plugins loaded successfully.
(GameDB) 9535 games on record (loaded in 282ms)
HotSwapping to new ISO src image!
HLE Notice: ELF does not have a path.
Initializing plugins...
Init GS
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8400 GS (8.17.12.7533)
Init PAD
Init SPU2
Init CDVD
Init USB
Init FW
Init DEV9
Plugins initialized successfully.
Opening plugins...
Opening GS
Opening PAD
Opening SPU2
Opening CDVD
isoFile open ok: H:\isos\Star Ocean 3 - Till the End of Time [NTSC-U] [Disc1of2] [SLUS-20488].iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (2274624 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\memcards\Mcd001.ps2
(FileMcd) Creating new 8MB memory card: C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\memcards\Mcd002.ps2
(FileMcd) Creating new 8MB memory card: C:\Users\Leun\Downloads\pcsx2-4864-windows-x86\pcsx2-4864-windows-x86\memcards\Mcd002.ps2
Plugins opened successfully.
EE/iR5900-32 Recompiler Reset
Bios Found: USA v02.00(14/06/2004) Console
BIOS rom1 module not found, skipping...
BIOS rom2 module not found, skipping...
BIOS erom module not found, skipping...
(UpdateVSyncRate) Mode Changed to NTSC.
(UpdateVSyncRate) FPS Limit Changed : 59.94 fps
csr.RESET
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_204.88;1) Game CRC = 0x23A97857, EntryPoint = 0x00100008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_204.88;1
(SYSTEM.CNF) Software version = 1.00
(SYSTEM.CNF) Disc region type = NTSC
csr.RESET
(GameDB) Enabled Gamefix: VuAddSubHack
EE/iR5900-32 Recompiler Reset
csr.RESET
Re-protecting page @ 0x001dd
Pagesplit @ 001DDFF8 : size=2 insts
Manual block @ 001DD6E0 : size = 8 page/offs = 0x001DD/0x6E0 inpgsz = 32 clearcnt = 3
Manual block @ 001DD700 : size = 2 page/offs = 0x001DD/0x700 inpgsz = 8 clearcnt = 3
Manual block @ 001DD708 : size = 4 page/offs = 0x001DD/0x708 inpgsz = 16 clearcnt = 3
Manual block @ 001DD718 : size = 2 page/offs = 0x001DD/0x718 inpgsz = 8 clearcnt = 3
Manual block @ 001DD6E8 : size = 6 page/offs = 0x001DD/0x6E8 inpgsz = 24 clearcnt = 3
Manual block @ 001DD720 : size = 2 page/offs = 0x001DD/0x720 inpgsz = 8 clearcnt = 3
Manual block @ 001DDFC0 : size = 14 page/offs = 0x001DD/0xFC0 inpgsz = 56 clearcnt = 3
Pagesplit @ 001DDFF8 : size=2 insts
Manual block @ 001DDFF8 : size = 2 page/offs = 0x001DD/0xFF8 inpgsz = 8 clearcnt = 3
Manual block @ 001DDF40 : size = 2 page/offs = 0x001DD/0xF40 inpgsz = 8 clearcnt = 3
Manual block @ 001DDD30 : size = 16 page/offs = 0x001DD/0xD30 inpgsz = 64 clearcnt = 3
Manual block @ 001DDD78 : size = 4 page/offs = 0x001DD/0xD78 inpgsz = 16 clearcnt = 3
Manual block @ 001DDD88 : size = 6 page/offs = 0x001DD/0xD88 inpgsz = 24 clearcnt = 3
Manual block @ 001DDDA8 : size = 7 page/offs = 0x001DD/0xDA8 inpgsz = 28 clearcnt = 3
Manual block @ 001DDDC4 : size = 2 page/offs = 0x001DD/0xDC4 inpgsz = 8 clearcnt = 3
Manual block @ 001DDDCC : size = 3 page/offs = 0x001DD/0xDCC inpgsz = 12 clearcnt = 3
Manual block @ 001DDDB0 : size = 5 page/offs = 0x001DD/0xDB0 inpgsz = 20 clearcnt = 3
Manual block @ 001DDDD8 : size = 4 page/offs = 0x001DD/0xDD8 inpgsz = 16 clearcnt = 3
Manual block @ 001DDDE8 : size = 3 page/offs = 0x001DD/0xDE8 inpgsz = 12 clearcnt = 3
Manual block @ 001DDE00 : size = 3 page/offs = 0x001DD/0xE00 inpgsz = 12 clearcnt = 3
Manual block @ 001DDE28 : size = 4 page/offs = 0x001DD/0xE28 inpgsz = 16 clearcnt = 3
Manual block @ 001DDE38 : size = 2 page/offs = 0x001DD/0xE38 inpgsz = 8 clearcnt = 3
Manual block @ 001DDE40 : size = 5 page/offs = 0x001DD/0xE40 inpgsz = 20 clearcnt = 3
Manual block @ 001DDE54 : size = 5 page/offs = 0x001DD/0xE54 inpgsz = 20 clearcnt = 3
Manual block @ 001DDE88 : size = 4 page/offs = 0x001DD/0xE88 inpgsz = 16 clearcnt = 3
Manual block @ 001DDEB0 : size = 3 page/offs = 0x001DD/0xEB0 inpgsz = 12 clearcnt = 3
Manual block @ 001DDEBC : size = 4 page/offs = 0x001DD/0xEBC inpgsz = 16 clearcnt = 3
Manual block @ 001DDECC : size = 5 page/offs = 0x001DD/0xECC inpgsz = 20 clearcnt = 3
Manual block @ 001DDEE0 : size = 3 page/offs = 0x001DD/0xEE0 inpgsz = 12 clearcnt = 3
Manual block @ 001DDEEC : size = 2 page/offs = 0x001DD/0xEEC inpgsz = 8 clearcnt = 3
Manual block @ 001DDF08 : size = 11 page/offs = 0x001DD/0xF08 inpgsz = 44 clearcnt = 3
Manual block @ 001DDDA8 : size = 2 page/offs = 0x001DD/0xDA8 inpgsz = 8 clearcnt = 3
Manual block @ 001DDE0C : size = 6 page/offs = 0x001DD/0xE0C inpgsz = 24 clearcnt = 3
Manual block @ 001DDE24 : size = 1 page/offs = 0x001DD/0xE24 inpgsz = 4 clearcnt = 3
Manual block @ 001DD6E0 : size = 2 page/offs = 0x001DD/0x6E0 inpgsz = 8 clearcnt = 3
Re-protecting page @ 0x001dd
Pagesplit @ 001DDFF8 : size=2 insts
Uncounted Manual block @ 0x001DD6E0 : size = 8 page/offs = 0x001DD/0x6E0 inpgsz = 32
Uncounted Manual block @ 0x001DD700 : size = 2 page/offs = 0x001DD/0x700 inpgsz = 8
Uncounted Manual block @ 0x001DD708 : size = 4 page/offs = 0x001DD/0x708 inpgsz = 16
Uncounted Manual block @ 0x001DD718 : size = 2 page/offs = 0x001DD/0x718 inpgsz = 8
Uncounted Manual block @ 0x001DD6E8 : size = 6 page/offs = 0x001DD/0x6E8 inpgsz = 24
Uncounted Manual block @ 0x001DD720 : size = 2 page/offs = 0x001DD/0x720 inpgsz = 8
Uncounted Manual block @ 0x001DDFC0 : size = 14 page/offs = 0x001DD/0xFC0 inpgsz = 56
Pagesplit @ 001DDFF8 : size=2 insts
Uncounted Manual block @ 0x001DDFF8 : size = 2 page/offs = 0x001DD/0xFF8 inpgsz = 8
Uncounted Manual block @ 0x001DDF40 : size = 2 page/offs = 0x001DD/0xF40 inpgsz = 8
Uncounted Manual block @ 0x001DDD30 : size = 16 page/offs = 0x001DD/0xD30 inpgsz = 64
Uncounted Manual block @ 0x001DDD78 : size = 4 page/offs = 0x001DD/0xD78 inpgsz = 16
Uncounted Manual block @ 0x001DDD88 : size = 6 page/offs = 0x001DD/0xD88 inpgsz = 24
Uncounted Manual block @ 0x001DDDA8 : size = 7 page/offs = 0x001DD/0xDA8 inpgsz = 28
Uncounted Manual block @ 0x001DDDC4 : size = 2 page/offs = 0x001DD/0xDC4 inpgsz = 8
Uncounted Manual block @ 0x001DDDCC : size = 3 page/offs = 0x001DD/0xDCC inpgsz = 12
Uncounted Manual block @ 0x001DDDB0 : size = 5 page/offs = 0x001DD/0xDB0 inpgsz = 20
Uncounted Manual block @ 0x001DDDD8 : size = 4 page/offs = 0x001DD/0xDD8 inpgsz = 16
Uncounted Manual block @ 0x001DDDE8 : size = 3 page/offs = 0x001DD/0xDE8 inpgsz = 12
Uncounted Manual block @ 0x001DDE00 : size = 3 page/offs = 0x001DD/0xE00 inpgsz = 12
Uncounted Manual block @ 0x001DDE28 : size = 4 page/offs = 0x001DD/0xE28 inpgsz = 16
Uncounted Manual block @ 0x001DDE38 : size = 2 page/offs = 0x001DD/0xE38 inpgsz = 8
Uncounted Manual block @ 0x001DDE40 : size = 5 page/offs = 0x001DD/0xE40 inpgsz = 20
Uncounted Manual block @ 0x001DDE54 : size = 5 page/offs = 0x001DD/0xE54 inpgsz = 20
Uncounted Manual block @ 0x001DDE88 : size = 4 page/offs = 0x001DD/0xE88 inpgsz = 16
Uncounted Manual block @ 0x001DDEB0 : size = 3 page/offs = 0x001DD/0xEB0 inpgsz = 12
Uncounted Manual block @ 0x001DDEBC : size = 4 page/offs = 0x001DD/0xEBC inpgsz = 16
Uncounted Manual block @ 0x001DDECC : size = 5 page/offs = 0x001DD/0xECC inpgsz = 20
Uncounted Manual block @ 0x001DDEE0 : size = 3 page/offs = 0x001DD/0xEE0 inpgsz = 12
Uncounted Manual block @ 0x001DDEEC : size = 2 page/offs = 0x001DD/0xEEC inpgsz = 8
Uncounted Manual block @ 0x001DDF08 : size = 11 page/offs = 0x001DD/0xF08 inpgsz = 44
Uncounted Manual block @ 0x001DDDA8 : size = 2 page/offs = 0x001DD/0xDA8 inpgsz = 8
Uncounted Manual block @ 0x001DDE0C : size = 6 page/offs = 0x001DD/0xE0C inpgsz = 24
Uncounted Manual block @ 0x001DDE24 : size = 1 page/offs = 0x001DD/0xE24 inpgsz = 4
Uncounted Manual block @ 0x001DD6E0 : size = 2 page/offs = 0x001DD/0x6E0 inpgsz = 8
Pagesplit @ 001EEFF0 : size=4 insts
Protected page @ 0x0013e
Pagesplit @ 0013EF10 : size=60 insts
Protected page @ 0x0027a
Uncounted Manual block @ 0x001DDBA0 : size = 15 page/offs = 0x001DD/0xBA0 inpgsz = 60
Uncounted Manual block @ 0x001DDBE8 : size = 7 page/offs = 0x001DD/0xBE8 inpgsz = 28
Uncounted Manual block @ 0x001DDC04 : size = 2 page/offs = 0x001DD/0xC04 inpgsz = 8
Uncounted Manual block @ 0x001DDC0C : size = 2 page/offs = 0x001DD/0xC0C inpgsz = 8
Uncounted Manual block @ 0x001DDC14 : size = 4 page/offs = 0x001DD/0xC14 inpgsz = 16
Uncounted Manual block @ 0x001DDC24 : size = 3 page/offs = 0x001DD/0xC24 inpgsz = 12
Uncounted Manual block @ 0x001DDC40 : size = 4 page/offs = 0x001DD/0xC40 inpgsz = 16
Uncounted Manual block @ 0x001DDC50 : size = 2 page/offs = 0x001DD/0xC50 inpgsz = 8
Uncounted Manual block @ 0x001DDC58 : size = 5 page/offs = 0x001DD/0xC58 inpgsz = 20
Uncounted Manual block @ 0x001DDC6C : size = 3 page/offs = 0x001DD/0xC6C inpgsz = 12
Uncounted Manual block @ 0x001DDC78 : size = 4 page/offs = 0x001DD/0xC78 inpgsz = 16
Uncounted Manual block @ 0x001DDC88 : size = 4 page/offs = 0x001DD/0xC88 inpgsz = 16
Uncounted Manual block @ 0x001DDC98 : size = 2 page/offs = 0x001DD/0xC98 inpgsz = 8
Uncounted Manual block @ 0x001DDBF0 : size = 5 page/offs = 0x001DD/0xBF0 inpgsz = 20
Uncounted Manual block @ 0x001DDCA8 : size = 10 page/offs = 0x001DD/0xCA8 inpgsz = 40
Uncounted Manual block @ 0x001DDBE8 : size = 2 page/offs = 0x001DD/0xBE8 inpgsz = 8
Uncounted Manual block @ 0x001DDCA0 : size = 2 page/offs = 0x001DD/0xCA0 inpgsz = 8
Uncounted Manual block @ 0x001DDCB0 : size = 8 page/offs = 0x001DD/0xCB0 inpgsz = 32
Uncounted Manual block @ 0x001DDCA8 : size = 2 page/offs = 0x001DD/0xCA8 inpgsz = 8
Uncounted Manual block @ 0x001DD7B0 : size = 3 page/offs = 0x001DD/0x7B0 inpgsz = 12
Uncounted Manual block @ 0x001DD7BC : size = 4 page/offs = 0x001DD/0x7BC inpgsz = 16
Uncounted Manual block @ 0x001DD7CC : size = 4 page/offs = 0x001DD/0x7CC inpgsz = 16
Pagesplit @ 00141FF4 : size=3 insts
Manual block @ 001F9120 : size = 13 page/offs = 0x001F9/0x120 inpgsz = 52 clearcnt = 0
Manual block @ 001F9154 : size = 3 page/offs = 0x001F9/0x154 inpgsz = 12 clearcnt = 0
Manual block @ 001F9160 : size = 2 page/offs = 0x001F9/0x160 inpgsz = 8 clearcnt = 0
Manual block @ 001F9168 : size = 2 page/offs = 0x001F9/0x168 inpgsz = 8 clearcnt = 0
Manual block @ 001F9260 : size = 4 page/offs = 0x001F9/0x260 inpgsz = 16 clearcnt = 0
Manual block @ 001F9270 : size = 6 page/offs = 0x001F9/0x270 inpgsz = 24 clearcnt = 0
Manual block @ 001F9288 : size = 5 page/offs = 0x001F9/0x288 inpgsz = 20 clearcnt = 0
Manual block @ 001F92A8 : size = 6 page/offs = 0x001F9/0x2A8 inpgsz = 24 clearcnt = 0
Manual block @ 001F92C0 : size = 2 page/offs = 0x001F9/0x2C0 inpgsz = 8 clearcnt = 0
Manual block @ 001F92D8 : size = 4 page/offs = 0x001F9/0x2D8 inpgsz = 16 clearcnt = 0
Manual block @ 001F92E8 : size = 6 page/offs = 0x001F9/0x2E8 inpgsz = 24 clearcnt = 0
Manual block @ 001F9300 : size = 5 page/offs = 0x001F9/0x300 inpgsz = 20 clearcnt = 0
Manual block @ 001F92F0 : size = 4 page/offs = 0x001F9/0x2F0 inpgsz = 16 clearcnt = 0
Manual block @ 001F9314 : size = 6 page/offs = 0x001F9/0x314 inpgsz = 24 clearcnt = 0
Manual block @ 001F93A0 : size = 9 page/offs = 0x001F9/0x3A0 inpgsz = 36 clearcnt = 0
Manual block @ 001F9DE0 : size = 8 page/offs = 0x001F9/0xDE0 inpgsz = 32 clearcnt = 0
Manual block @ 001F57E0 : size = 9 page/offs = 0x001F5/0x7E0 inpgsz = 36 clearcnt = 0
Manual block @ 001F5804 : size = 3 page/offs = 0x001F5/0x804 inpgsz = 12 clearcnt = 0
Manual block @ 001F5818 : size = 2 page/offs = 0x001F5/0x818 inpgsz = 8 clearcnt = 0
Manual block @ 001F5820 : size = 2 page/offs = 0x001F5/0x820 inpgsz = 8 clearcnt = 0
Manual block @ 001F5828 : size = 30 page/offs = 0x001F5/0x828 inpgsz = 120 clearcnt = 0
Manual block @ 001F58A0 : size = 8 page/offs = 0x001F5/0x8A0 inpgsz = 32 clearcnt = 0
Manual block @ 001F5730 : size = 4 page/offs = 0x001F5/0x730 inpgsz = 16 clearcnt = 0
Manual block @ 001F5740 : size = 3 page/offs = 0x001F5/0x740 inpgsz = 12 clearcnt = 0
Manual block @ 001F574C : size = 2 page/offs = 0x001F5/0x74C inpgsz = 8 clearcnt = 0
Manual block @ 001F5754 : size = 29 page/offs = 0x001F5/0x754 inpgsz = 116 clearcnt = 0
Manual block @ 001F57C8 : size = 5 page/offs = 0x001F5/0x7C8 inpgsz = 20 clearcnt = 0
Uncounted Manual block @ 0x001DD730 : size = 12 page/offs = 0x001DD/0x730 inpgsz = 48
Uncounted Manual block @ 0x001DD760 : size = 2 page/offs = 0x001DD/0x760 inpgsz = 8
Uncounted Manual block @ 0x001DD790 : size = 6 page/offs = 0x001DD/0x790 inpgsz = 24
Pagesplit @ 0027CFFC : size=1 insts
Uncounted Manual block @ 0x001DD768 : size = 3 page/offs = 0x001DD/0x768 inpgsz = 12
Uncounted Manual block @ 0x001DD774 : size = 4 page/offs = 0x001DD/0x774 inpgsz = 16
Uncounted Manual block @ 0x001DD784 : size = 2 page/offs = 0x001DD/0x784 inpgsz = 8
Uncounted Manual block @ 0x001DD750 : size = 4 page/offs = 0x001DD/0x750 inpgsz = 16
Uncounted Manual block @ 0x001DD730 : size = 8 page/offs = 0x001DD/0x730 inpgsz = 32
Manual block @ 001F0230 : size = 7 page/offs = 0x001F0/0x230 inpgsz = 28 clearcnt = 0
Manual block @ 001F024C : size = 4 page/offs = 0x001F0/0x24C inpgsz = 16 clearcnt = 0
Manual block @ 001F025C : size = 4 page/offs = 0x001F0/0x25C inpgsz = 16 clearcnt = 0
Manual block @ 001F026C : size = 4 page/offs = 0x001F0/0x26C inpgsz = 16 clearcnt = 0
Manual block @ 001F027C : size = 4 page/offs = 0x001F0/0x27C inpgsz = 16 clearcnt = 0
Manual block @ 001F028C : size = 2 page/offs = 0x001F0/0x28C inpgsz = 8 clearcnt = 0
Manual block @ 001F0294 : size = 3 page/offs = 0x001F0/0x294 inpgsz = 12 clearcnt = 0
Manual block @ 001F02A0 : size = 8 page/offs = 0x001F0/0x2A0 inpgsz = 32 clearcnt = 0
Manual block @ 001F02C0 : size = 2 page/offs = 0x001F0/0x2C0 inpgsz = 8 clearcnt = 0
Manual block @ 001F02C8 : size = 6 page/offs = 0x001F0/0x2C8 inpgsz = 24 clearcnt = 0
Manual block @ 001F0180 : size = 7 page/offs = 0x001F0/0x180 inpgsz = 28 clearcnt = 0
Manual block @ 001F019C : size = 4 page/offs = 0x001F0/0x19C inpgsz = 16 clearcnt = 0
Manual block @ 001F01AC : size = 4 page/offs = 0x001F0/0x1AC inpgsz = 16 clearcnt = 0
Manual block @ 001F01BC : size = 4 page/offs = 0x001F0/0x1BC inpgsz = 16 clearcnt = 0
Manual block @ 001F01CC : size = 4 page/offs = 0x001F0/0x1CC inpgsz = 16 clearcnt = 0
Manual block @ 001F01DC : size = 2 page/offs = 0x001F0/0x1DC inpgsz = 8 clearcnt = 0
Manual block @ 001F01E4 : size = 3 page/offs = 0x001F0/0x1E4 inpgsz = 12 clearcnt = 0
Manual block @ 001F01F0 : size = 8 page/offs = 0x001F0/0x1F0 inpgsz = 32 clearcnt = 0
Manual block @ 001F0210 : size = 2 page/offs = 0x001F0/0x210 inpgsz = 8 clearcnt = 0
Manual block @ 001F0218 : size = 6 page/offs = 0x001F0/0x218 inpgsz = 24 clearcnt = 0
Pagesplit @ 0025BFF8 : size=2 insts
Uncounted Manual block @ 0x001DD960 : size = 7 page/offs = 0x001DD/0x960 inpgsz = 28
Uncounted Manual block @ 0x001DD97C : size = 8 page/offs = 0x001DD/0x97C inpgsz = 32
Uncounted Manual block @ 0x001DDF50 : size = 8 page/offs = 0x001DD/0xF50 inpgsz = 32
Uncounted Manual block @ 0x001DDF70 : size = 2 page/offs = 0x001DD/0xF70 inpgsz = 8
Uncounted Manual block @ 0x001DDF78 : size = 5 page/offs = 0x001DD/0xF78 inpgsz = 20
Uncounted Manual block @ 0x001DDF8C : size = 3 page/offs = 0x001DD/0xF8C inpgsz = 12
Uncounted Manual block @ 0x001DDF58 : size = 6 page/offs = 0x001DD/0xF58 inpgsz = 24
Uncounted Manual block @ 0x001DDFB0 : size = 4 page/offs = 0x001DD/0xFB0 inpgsz = 16
microVU0: Cached Prog = [022] [PC=07c0] [List=01] (Cache=0.095%) [0.1mb]
Manual block @ 001F4770 : size = 7 page/offs = 0x001F4/0x770 inpgsz = 28 clearcnt = 0
Manual block @ 001F478C : size = 2 page/offs = 0x001F4/0x78C inpgsz = 8 clearcnt = 0
Manual block @ 001F4794 : size = 4 page/offs = 0x001F4/0x794 inpgsz = 16 clearcnt = 0
Manual block @ 001F47B0 : size = 11 page/offs = 0x001F4/0x7B0 inpgsz = 44 clearcnt = 0
Manual block @ 001F47E8 : size = 3 page/offs = 0x001F4/0x7E8 inpgsz = 12 clearcnt = 0
Manual block @ 001F4800 : size = 2 page/offs = 0x001F4/0x800 inpgsz = 8 clearcnt = 0
Manual block @ 001F4808 : size = 4 page/offs = 0x001F4/0x808 inpgsz = 16 clearcnt = 0
Manual block @ 001F4820 : size = 7 page/offs = 0x001F4/0x820 inpgsz = 28 clearcnt = 0
Uncounted Manual block @ 0x001DDF50 : size = 2 page/offs = 0x001DD/0xF50 inpgsz = 8
Uncounted Manual block @ 0x001DDF98 : size = 3 page/offs = 0x001DD/0xF98 inpgsz = 12
Uncounted Manual block @ 0x001DDFA4 : size = 2 page/offs = 0x001DD/0xFA4 inpgsz = 8
Uncounted Manual block @ 0x001DDFB8 : size = 2 page/offs = 0x001DD/0xFB8 inpgsz = 8
Uncounted Manual block @ 0x001DDFB0 : size = 2 page/offs = 0x001DD/0xFB0 inpgsz = 8
Manual block @ 001F92E8 : size = 2 page/offs = 0x001F9/0x2E8 inpgsz = 8 clearcnt = 0
Re-protecting page @ 0x00076
Manual block @ 800765C0 : size = 15 page/offs = 0x00076/0x5C0 inpgsz = 60 clearcnt = 2
Manual block @ 80076680 : size = 15 page/offs = 0x00076/0x680 inpgsz = 60 clearcnt = 2
Manual block @ 80076440 : size = 4 page/offs = 0x00076/0x440 inpgsz = 16 clearcnt = 2
Manual block @ 80076160 : size = 21 page/offs = 0x00076/0x160 inpgsz = 84 clearcnt = 2
Manual block @ 800761D0 : size = 7 page/offs = 0x00076/0x1D0 inpgsz = 28 clearcnt = 2
Manual block @ 800761BC : size = 5 page/offs = 0x00076/0x1BC inpgsz = 20 clearcnt = 2
Manual block @ 80076200 : size = 2 page/offs = 0x00076/0x200 inpgsz = 8 clearcnt = 2
Manual block @ 80076208 : size = 4 page/offs = 0x00076/0x208 inpgsz = 16 clearcnt = 2
Manual block @ 80076058 : size = 15 page/offs = 0x00076/0x058 inpgsz = 60 clearcnt = 2
Manual block @ 80076130 : size = 11 page/offs = 0x00076/0x130 inpgsz = 44 clearcnt = 2
Manual block @ 80076218 : size = 21 page/offs = 0x00076/0x218 inpgsz = 84 clearcnt = 2
Manual block @ 80076460 : size = 9 page/offs = 0x00076/0x460 inpgsz = 36 clearcnt = 2
Manual block @ 8007626C : size = 12 page/offs = 0x00076/0x26C inpgsz = 48 clearcnt = 2
Manual block @ 80076450 : size = 4 page/offs = 0x00076/0x450 inpgsz = 16 clearcnt = 2
Manual block @ 800766C0 : size = 10 page/offs = 0x00076/0x6C0 inpgsz = 40 clearcnt = 2
Manual block @ 800765FC : size = 4 page/offs = 0x00076/0x5FC inpgsz = 16 clearcnt = 2
Manual block @ 80076510 : size = 3 page/offs = 0x00076/0x510 inpgsz = 12 clearcnt = 2
Manual block @ 80076610 : size = 2 page/offs = 0x00076/0x610 inpgsz = 8 clearcnt = 2
Manual block @ 80076618 : size = 2 page/offs = 0x00076/0x618 inpgsz = 8 clearcnt = 2
Manual block @ 80076620 : size = 2 page/offs = 0x00076/0x620 inpgsz = 8 clearcnt = 2
Manual block @ 80076634 : size = 13 page/offs = 0x00076/0x634 inpgsz = 52 clearcnt = 2
Manual block @ 8007663C : size = 11 page/offs = 0x00076/0x63C inpgsz = 44 clearcnt = 2
Manual block @ 80076488 : size = 18 page/offs = 0x00076/0x488 inpgsz = 72 clearcnt = 2
Manual block @ 800764D0 : size = 7 page/offs = 0x00076/0x4D0 inpgsz = 28 clearcnt = 2
Manual block @ 800764C0 : size = 4 page/offs = 0x00076/0x4C0 inpgsz = 16 clearcnt = 2
Manual block @ 800764F4 : size = 7 page/offs = 0x00076/0x4F4 inpgsz = 28 clearcnt = 2
Manual block @ 8007651C : size = 16 page/offs = 0x00076/0x51C inpgsz = 64 clearcnt = 2
Manual block @ 800762A0 : size = 10 page/offs = 0x00076/0x2A0 inpgsz = 40 clearcnt = 2
Manual block @ 800762C8 : size = 2 page/offs = 0x00076/0x2C8 inpgsz = 8 clearcnt = 2
Manual block @ 800762D0 : size = 8 page/offs = 0x00076/0x2D0 inpgsz = 32 clearcnt = 2
Manual block @ 800762F0 : size = 7 page/offs = 0x00076/0x2F0 inpgsz = 28 clearcnt = 2
Manual block @ 8007630C : size = 6 page/offs = 0x00076/0x30C inpgsz = 24 clearcnt = 2
Manual block @ 80076324 : size = 10 page/offs = 0x00076/0x324 inpgsz = 40 clearcnt = 2
Manual block @ 800763AC : size = 11 page/offs = 0x00076/0x3AC inpgsz = 44 clearcnt = 2
Manual block @ 800763D8 : size = 2 page/offs = 0x00076/0x3D8 inpgsz = 8 clearcnt = 2
Manual block @ 800763E0 : size = 3 page/offs = 0x00076/0x3E0 inpgsz = 12 clearcnt = 2
Manual block @ 800763EC : size = 8 page/offs = 0x00076/0x3EC inpgsz = 32 clearcnt = 2
Manual block @ 80076038 : size = 3 page/offs = 0x00076/0x038 inpgsz = 12 clearcnt = 2
Manual block @ 8007604C : size = 2 page/offs = 0x00076/0x04C inpgsz = 8 clearcnt = 2
Manual block @ 8007640C : size = 2 page/offs = 0x00076/0x40C inpgsz = 8 clearcnt = 2
Manual block @ 80076424 : size = 7 page/offs = 0x00076/0x424 inpgsz = 28 clearcnt = 2
Re-protecting page @ 0x001f9
Pagesplit @ 00221FC0 : size=16 insts
Uncounted Manual block @ 0x001DDEF4 : size = 4 page/offs = 0x001DD/0xEF4 inpgsz = 16
Uncounted Manual block @ 0x001DDF10 : size = 9 page/offs = 0x001DD/0xF10 inpgsz = 36
Uncounted Manual block @ 0x001DDF08 : size = 2 page/offs = 0x001DD/0xF08 inpgsz = 8
microVU1: Cached Prog = [146] [PC=2b48] [List=01] (Cache=3.897%) [2.4mb]
microVU1: Cached Prog = [147] [PC=2450] [List=01] (Cache=3.901%) [2.4mb]
microVU1: Cached Prog = [148] [PC=25e0] [List=01] (Cache=3.901%) [2.4mb]
Protected page @ 0x002a6
Protected page @ 0x0029e
Protected page @ 0x0029f
Protected page @ 0x002ad
Manual block @ 001F6E74 : size = 3 page/offs = 0x001F6/0xE74 inpgsz = 12 clearcnt = 0
Manual block @ 001F6E80 : size = 2 page/offs = 0x001F6/0xE80 inpgsz = 8 clearcnt = 0
Manual block @ 001F6E90 : size = 2 page/offs = 0x001F6/0xE90 inpgsz = 8 clearcnt = 0
Manual block @ 001F6E98 : size = 2 page/offs = 0x001F6/0xE98 inpgsz = 8 clearcnt = 0
Manual block @ 001F6EA0 : size = 26 page/offs = 0x001F6/0xEA0 inpgsz = 104 clearcnt = 0
Manual block @ 001F7240 : size = 6 page/offs = 0x001F7/0x240 inpgsz = 24 clearcnt = 0
Protected page @ 0x0029c
Protected page @ 0x0029d
Protected page @ 0x00441
Protected page @ 0x00296
Protected page @ 0x002ac
Protected page @ 0x004b7
Protected page @ 0x00444
microVU1: Cached Prog = [149] [PC=2ab8] [List=02] (Cache=3.906%) [2.4mb]
microVU1: Warning 1 cycle stall on branch instruction [29b0]
microVU1: Warning 1 cycle stall on branch instruction [2d68]
microVU1: Warning 2 cycle stall on branch instruction [2888]
Manual block @ 001FB9D0 : size = 6 page/offs = 0x001FB/0x9D0 inpgsz = 24 clearcnt = 0
Manual block @ 001FB9E8 : size = 2 page/offs = 0x001FB/0x9E8 inpgsz = 8 clearcnt = 0
Manual block @ 001FBA18 : size = 3 page/offs = 0x001FB/0xA18 inpgsz = 12 clearcnt = 0
Manual block @ 001F7608 : size = 3 page/offs = 0x001F7/0x608 inpgsz = 12 clearcnt = 0
Manual block @ 001F72C8 : size = 3 page/offs = 0x001F7/0x2C8 inpgsz = 12 clearcnt = 0
Manual block @ 001F72D8 : size = 2 page/offs = 0x001F7/0x2D8 inpgsz = 8 clearcnt = 0
Manual block @ 001DF060 : size = 4 page/offs = 0x001DF/0x060 inpgsz = 16 clearcnt = 0
Manual block @ 001DF070 : size = 2 page/offs = 0x001DF/0x070 inpgsz = 8 clearcnt = 0
Manual block @ 001F5FB0 : size = 15 page/offs = 0x001F5/0xFB0 inpgsz = 60 clearcnt = 0
Manual block @ 001F5FEC : size = 5 page/offs = 0x001F5/0xFEC inpgsz = 20 clearcnt = 0
Manual block @ 001F6000 : size = 2 page/offs = 0x001F6/0x000 inpgsz = 8 clearcnt = 0
Manual block @ 001F6028 : size = 3 page/offs = 0x001F6/0x028 inpgsz = 12 clearcnt = 0
Manual block @ 001F6040 : size = 4 page/offs = 0x001F6/0x040 inpgsz = 16 clearcnt = 0
Manual block @ 001F6050 : size = 10 page/offs = 0x001F6/0x050 inpgsz = 40 clearcnt = 0
Manual block @ 001F6078 : size = 22 page/offs = 0x001F6/0x078 inpgsz = 88 clearcnt = 0
Manual block @ 001F60D0 : size = 2 page/offs = 0x001F6/0x0D0 inpgsz = 8 clearcnt = 0
Manual block @ 001F60D8 : size = 38 page/offs = 0x001F6/0x0D8 inpgsz = 152 clearcnt = 0
Manual block @ 001F6170 : size = 2 page/offs = 0x001F6/0x170 inpgsz = 8 clearcnt = 0
Manual block @ 001F6178 : size = 32 page/offs = 0x001F6/0x178 inpgsz = 128 clearcnt = 0
Manual block @ 001F6200 : size = 6 page/offs = 0x001F6/0x200 inpgsz = 24 clearcnt = 0
Manual block @ 001F6218 : size = 4 page/offs = 0x001F6/0x218 inpgsz = 16 clearcnt = 0
Manual block @ 001F6228 : size = 15 page/offs = 0x001F6/0x228 inpgsz = 60 clearcnt = 0
Manual block @ 001F5ED0 : size = 9 page/offs = 0x001F5/0xED0 inpgsz = 36 clearcnt = 0
Manual block @ 001F5EF4 : size = 3 page/offs = 0x001F5/0xEF4 inpgsz = 12 clearcnt = 0
Manual block @ 001F5F00 : size = 4 page/offs = 0x001F5/0xF00 inpgsz = 16 clearcnt = 0
Manual block @ 001F5F10 : size = 2 page/offs = 0x001F5/0xF10 inpgsz = 8 clearcnt = 0
Manual block @ 001F5F18 : size = 30 page/offs = 0x001F5/0xF18 inpgsz = 120 clearcnt = 0
Manual block @ 001F5F90 : size = 8 page/offs = 0x001F5/0xF90 inpgsz = 32 clearcnt = 0
microVU1: Cached Prog = [150] [PC=06e0] [List=06] (Cache=3.928%) [2.4mb]
microVU1: Cached Prog = [151] [PC=0748] [List=02] (Cache=3.928%) [2.4mb]
microVU1: Warning 1 cycle stall on branch instruction [1688]
microVU1: Warning 1 cycle stall on branch instruction [1688]
microVU1: Cached Prog = [152] [PC=0758] [List=03] (Cache=3.928%) [2.4mb]
microVU1: Warning 1 cycle stall on branch instruction [0898]
microVU1: Cached Prog = [153] [PC=0818] [List=03] (Cache=4.220%) [2.6mb]
microVU1: Warning 1 cycle stall on branch instruction [1688]
microVU1: Warning 1 cycle stall on branch instruction [1688]
microVU1: Cached Prog = [154] [PC=0830] [List=03] (Cache=4.220%) [2.6mb]
microVU1: Warning 1 cycle stall on branch instruction [0898]
microVU1: Warning 1 cycle stall on branch instruction [0898]
Pagesplit @ 0029CF8C : size=29 insts
Manual block @ 001F7C30 : size = 9 page/offs = 0x001F7/0xC30 inpgsz = 36 clearcnt = 0
Manual block @ 001F7C54 : size = 12 page/offs = 0x001F7/0xC54 inpgsz = 48 clearcnt = 0
Manual block @ 001F7C84 : size = 3 page/offs = 0x001F7/0xC84 inpgsz = 12 clearcnt = 0
Manual block @ 001F7CAC : size = 2 page/offs = 0x001F7/0xCAC inpgsz = 8 clearcnt = 0
Manual block @ 001F7CB4 : size = 2 page/offs = 0x001F7/0xCB4 inpgsz = 8 clearcnt = 0
Manual block @ 001F7CBC : size = 5 page/offs = 0x001F7/0xCBC inpgsz = 20 clearcnt = 0
Manual block @ 001F7CD0 : size = 6 page/offs = 0x001F7/0xCD0 inpgsz = 24 clearcnt = 0
Manual block @ 001F7CE8 : size = 9 page/offs = 0x001F7/0xCE8 inpgsz = 36 clearcnt = 0
Pagesplit @ 002A6FF0 : size=4 insts
Manual block @ 001F71C0 : size = 32 page/offs = 0x001F7/0x1C0 inpgsz = 128 clearcnt = 0
Pagesplit @ 001EFFF8 : size=2 insts
Manual block @ 001F0000 : size = 7 page/offs = 0x001F0/0x000 inpgsz = 28 clearcnt = 0
Re-protecting page @ 0x00076
Manual block @ 800765C0 : size = 15 page/offs = 0x00076/0x5C0 inpgsz = 60 clearcnt = 3
Manual block @ 80076680 : size = 15 page/offs = 0x00076/0x680 inpgsz = 60 clearcnt = 3
Manual block @ 80076440 : size = 4 page/offs = 0x00076/0x440 inpgsz = 16 clearcnt = 3
Manual block @ 80076160 : size = 21 page/offs = 0x00076/0x160 inpgsz = 84 clearcnt = 3
Manual block @ 800761D0 : size = 7 page/offs = 0x00076/0x1D0 inpgsz = 28 clearcnt = 3
Manual block @ 800761BC : size = 5 page/offs = 0x00076/0x1BC inpgsz = 20 clearcnt = 3
Manual block @ 80076200 : size = 2 page/offs = 0x00076/0x200 inpgsz = 8 clearcnt = 3
Manual block @ 80076208 : size = 4 page/offs = 0x00076/0x208 inpgsz = 16 clearcnt = 3
Manual block @ 80076058 : size = 15 page/offs = 0x00076/0x058 inpgsz = 60 clearcnt = 3
Manual block @ 80076130 : size = 11 page/offs = 0x00076/0x130 inpgsz = 44 clearcnt = 3
Manual block @ 80076218 : size = 21 page/offs = 0x00076/0x218 inpgsz = 84 clearcnt = 3
Manual block @ 80076460 : size = 9 page/offs = 0x00076/0x460 inpgsz = 36 clearcnt = 3
Manual block @ 8007626C : size = 12 page/offs = 0x00076/0x26C inpgsz = 48 clearcnt = 3
Manual block @ 80076450 : size = 4 page/offs = 0x00076/0x450 inpgsz = 16 clearcnt = 3
Manual block @ 800766C0 : size = 10 page/offs = 0x00076/0x6C0 inpgsz = 40 clearcnt = 3
Manual block @ 800765FC : size = 4 page/offs = 0x00076/0x5FC inpgsz = 16 clearcnt = 3
Manual block @ 80076510 : size = 3 page/offs = 0x00076/0x510 inpgsz = 12 clearcnt = 3
Manual block @ 80076610 : size = 2 page/offs = 0x00076/0x610 inpgsz = 8 clearcnt = 3
Manual block @ 80076618 : size = 2 page/offs = 0x00076/0x618 inpgsz = 8 clearcnt = 3
Manual block @ 80076620 : size = 2 page/offs = 0x00076/0x620 inpgsz = 8 clearcnt = 3
Manual block @ 80076634 : size = 13 page/offs = 0x00076/0x634 inpgsz = 52 clearcnt = 3
Manual block @ 8007663C : size = 11 page/offs = 0x00076/0x63C inpgsz = 44 clearcnt = 3
Manual block @ 80076488 : size = 18 page/offs = 0x00076/0x488 inpgsz = 72 clearcnt = 3
Manual block @ 800764D0 : size = 7 page/offs = 0x00076/0x4D0 inpgsz = 28 clearcnt = 3
Manual block @ 800764C0 : size = 4 page/offs = 0x00076/0x4C0 inpgsz = 16 clearcnt = 3
Manual block @ 800764F4 : size = 7 page/offs = 0x00076/0x4F4 inpgsz = 28 clearcnt = 3
Manual block @ 8007651C : size = 16 page/offs = 0x00076/0x51C inpgsz = 64 clearcnt = 3
Manual block @ 800762A0 : size = 10 page/offs = 0x00076/0x2A0 inpgsz = 40 clearcnt = 3
Manual block @ 800762C8 : size = 2 page/offs = 0x00076/0x2C8 inpgsz = 8 clearcnt = 3
Manual block @ 800762D0 : size = 8 page/offs = 0x00076/0x2D0 inpgsz = 32 clearcnt = 3
Manual block @ 800762F0 : size = 7 page/offs = 0x00076/0x2F0 inpgsz = 28 clearcnt = 3
Manual block @ 8007630C : size = 6 page/offs = 0x00076/0x30C inpgsz = 24 clearcnt = 3
Manual block @ 80076324 : size = 10 page/offs = 0x00076/0x324 inpgsz = 40 clearcnt = 3
Manual block @ 800763AC : size = 11 page/offs = 0x00076/0x3AC inpgsz = 44 clearcnt = 3
Manual block @ 800763D8 : size = 2 page/offs = 0x00076/0x3D8 inpgsz = 8 clearcnt = 3
Manual block @ 800763E0 : size = 3 page/offs = 0x00076/0x3E0 inpgsz = 12 clearcnt = 3
Manual block @ 800763EC : size = 8 page/offs = 0x00076/0x3EC inpgsz = 32 clearcnt = 3
Manual block @ 80076038 : size = 3 page/offs = 0x00076/0x038 inpgsz = 12 clearcnt = 3
Manual block @ 8007604C : size = 2 page/offs = 0x00076/0x04C inpgsz = 8 clearcnt = 3
Manual block @ 8007640C : size = 2 page/offs = 0x00076/0x40C inpgsz = 8 clearcnt = 3
Manual block @ 80076424 : size = 7 page/offs = 0x00076/0x424 inpgsz = 28 clearcnt = 3
Manual block @ 001F0020 : size = 7 page/offs = 0x001F0/0x020 inpgsz = 28 clearcnt = 0
Manual block @ 001F003C : size = 4 page/offs = 0x001F0/0x03C inpgsz = 16 clearcnt = 0
Manual block @ 001F004C : size = 4 page/offs = 0x001F0/0x04C inpgsz = 16 clearcnt = 0
Manual block @ 001F005C : size = 4 page/offs = 0x001F0/0x05C inpgsz = 16 clearcnt = 0
Manual block @ 001F006C : size = 4 page/offs = 0x001F0/0x06C inpgsz = 16 clearcnt = 0
Manual block @ 001F007C : size = 2 page/offs = 0x001F0/0x07C inpgsz = 8 clearcnt = 0
Manual block @ 001F0084 : size = 3 page/offs = 0x001F0/0x084 inpgsz = 12 clearcnt = 0
Manual block @ 001F0090 : size = 8 page/offs = 0x001F0/0x090 inpgsz = 32 clearcnt = 0
Manual block @ 001F00B0 : size = 2 page/offs = 0x001F0/0x0B0 inpgsz = 8 clearcnt = 0
Manual block @ 001F00B8 : size = 6 page/offs = 0x001F0/0x0B8 inpgsz = 24 clearcnt = 0
Manual block @ 001F2420 : size = 7 page/offs = 0x001F2/0x420 inpgsz = 28 clearcnt = 0
Manual block @ 001F243C : size = 6 page/offs = 0x001F2/0x43C inpgsz = 24 clearcnt = 0
Manual block @ 001F2454 : size = 5 page/offs = 0x001F2/0x454 inpgsz = 20 clearcnt = 0
Manual block @ 001F73A0 : size = 6 page/offs = 0x001F7/0x3A0 inpgsz = 24 clearcnt = 0
Manual block @ 001F73B8 : size = 3 page/offs = 0x001F7/0x3B8 inpgsz = 12 clearcnt = 0
Manual block @ 001F73C4 : size = 2 page/offs = 0x001F7/0x3C4 inpgsz = 8 clearcnt = 0
Manual block @ 001F73CC : size = 33 page/offs = 0x001F7/0x3CC inpgsz = 132 clearcnt = 0
Manual block @ 001F7450 : size = 6 page/offs = 0x001F7/0x450 inpgsz = 24 clearcnt = 0
Manual block @ 001F6008 : size = 5 page/offs = 0x001F6/0x008 inpgsz = 20 clearcnt = 0
Manual block @ 001F601C : size = 3 page/offs = 0x001F6/0x01C inpgsz = 12 clearcnt = 0
Manual block @ 001F6230 : size = 13 page/offs = 0x001F6/0x230 inpgsz = 52 clearcnt = 0
microVU1: Cached Prog = [155] [PC=2520] [List=01] (Cache=4.510%) [2.8mb]
microVU1: Warning 2 cycle stall on branch instruction [2808]
microVU1: Cached Prog = [156] [PC=26b0] [List=01] (Cache=4.510%) [2.8mb]
microVU1: Warning 2 cycle stall on branch instruction [1140]
microVU1: Cached Prog = [157] [PC=1160] [List=01] (Cache=4.510%) [2.8mb]
microVU1: Branch Optimization
microVU1: Branch Optimization
microVU1: Warning 2 cycle stall on branch instruction [27d8]
Manual block @ 001F5F08 : size = 2 page/offs = 0x001F5/0xF08 inpgsz = 8 clearcnt = 0
Manual block @ 001F5E20 : size = 4 page/offs = 0x001F5/0xE20 inpgsz = 16 clearcnt = 0
Manual block @ 001F5E30 : size = 3 page/offs = 0x001F5/0xE30 inpgsz = 12 clearcnt = 0
Manual block @ 001F5E3C : size = 2 page/offs = 0x001F5/0xE3C inpgsz = 8 clearcnt = 0
Manual block @ 001F5E44 : size = 29 page/offs = 0x001F5/0xE44 inpgsz = 116 clearcnt = 0
Manual block @ 001F5EB8 : size = 5 page/offs = 0x001F5/0xEB8 inpgsz = 20 clearcnt = 0
Manual block @ 001F8620 : size = 7 page/offs = 0x001F8/0x620 inpgsz = 28 clearcnt = 0
Manual block @ 001F86B0 : size = 3 page/offs = 0x001F8/0x6B0 inpgsz = 12 clearcnt = 0
Manual block @ 001F86AC : size = 1 page/offs = 0x001F8/0x6AC inpgsz = 4 clearcnt = 0
Manual block @ 001F75F8 : size = 4 page/offs = 0x001F7/0x5F8 inpgsz = 16 clearcnt = 0
Manual block @ 001F72D4 : size = 1 page/offs = 0x001F7/0x2D4 inpgsz = 4 clearcnt = 0
microVU1: Cached Prog = [158] [PC=2660] [List=01] (Cache=4.574%) [2.8mb]
microVU1: Cached Prog = [159] [PC=28d8] [List=01] (Cache=4.574%) [2.8mb]
microVU1: Cached Prog = [160] [PC=24f0] [List=01] (Cache=4.574%) [2.8mb]
microVU1: Cached Prog = [161] [PC=2900] [List=01] (Cache=4.574%) [2.8mb]
microVU1: Cached Prog = [162] [PC=27f0] [List=01] (Cache=4.574%) [2.8mb]
microVU1: Cached Prog = [163] [PC=2680] [List=01] (Cache=4.574%) [2.8mb]
Pagesplit @ 00237FF8 : size=2 insts
microVU0: Cached Prog = [023] [PC=0000] [List=03] (Cache=0.096%) [0.1mb]
microVU0: M-bit set!
microVU0: Cached Prog = [024] [PC=0058] [List=01] (Cache=0.098%) [0.1mb]
microVU0: M-bit set!
Manual block @ 001F00D0 : size = 7 page/offs = 0x001F0/0x0D0 inpgsz = 28 clearcnt = 0
Manual block @ 001F00EC : size = 4 page/offs = 0x001F0/0x0EC inpgsz = 16 clearcnt = 0
Manual block @ 001F00FC : size = 4 page/offs = 0x001F0/0x0FC inpgsz = 16 clearcnt = 0
Manual block @ 001F010C : size = 4 page/offs = 0x001F0/0x10C inpgsz = 16 clearcnt = 0
Manual block @ 001F011C : size = 4 page/offs = 0x001F0/0x11C inpgsz = 16 clearcnt = 0
Manual block @ 001F012C : size = 2 page/offs = 0x001F0/0x12C inpgsz = 8 clearcnt = 0
Manual block @ 001F0134 : size = 3 page/offs = 0x001F0/0x134 inpgsz = 12 clearcnt = 0
Manual block @ 001F0140 : size = 8 page/offs = 0x001F0/0x140 inpgsz = 32 clearcnt = 0
Manual block @ 001F0160 : size = 2 page/offs = 0x001F0/0x160 inpgsz = 8 clearcnt = 0
Manual block @ 001F0168 : size = 6 page/offs = 0x001F0/0x168 inpgsz = 24 clearcnt = 0
Pagesplit @ 00286F50 : size=44 insts
Manual block @ 001F6F08 : size = 24 page/offs = 0x001F6/0xF08 inpgsz = 96 clearcnt = 0
Manual block @ 001F6F68 : size = 3 page/offs = 0x001F6/0xF68 inpgsz = 12 clearcnt = 0
Manual block @ 001F6F90 : size = 6 page/offs = 0x001F6/0xF90 inpgsz = 24 clearcnt = 0
Manual block @ 001F7000 : size = 2 page/offs = 0x001F7/0x000 inpgsz = 8 clearcnt = 0
Manual block @ 001F7008 : size = 2 page/offs = 0x001F7/0x008 inpgsz = 8 clearcnt = 0
Manual block @ 001F7010 : size = 36 page/offs = 0x001F7/0x010 inpgsz = 144 clearcnt = 0
Manual block @ 001F86BC : size = 3 page/offs = 0x001F8/0x6BC inpgsz = 12 clearcnt = 0
Manual block @ 001F86D4 : size = 5 page/offs = 0x001F8/0x6D4 inpgsz = 20 clearcnt = 0
Pagesplit @ 004CCFD8 : size=10 insts
microVU1: Cached Prog = [164] [PC=2a88] [List=02] (Cache=4.750%) [2.9mb]
Pagesplit @ 0028EFF8 : size=2 insts
microVU0: Cached Prog = [025] [PC=0188] [List=01] (Cache=0.102%) [0.1mb]
microVU1: Cached Prog = [165] [PC=2470] [List=01] (Cache=4.753%) [2.9mb]
microVU1: Warning 1 cycle stall on branch instruction [3d68]
microVU1: Warning 1 cycle stall on branch instruction [3d68]
microVU1: Warning 1 cycle stall on branch instruction [3df8]
microVU1: Warning 1 cycle stall on branch instruction [3df8]
microVU1: Cached Prog = [166] [PC=2600] [List=01] (Cache=4.753%) [2.9mb]
microVU1: Cached Prog = [167] [PC=2510] [List=01] (Cache=4.759%) [2.9mb]
microVU1: Warning 2 cycle stall on branch instruction [27d8]
microVU1: Cached Prog = [168] [PC=26a0] [List=01] (Cache=4.759%) [2.9mb]
microVU1: Warning 2 cycle stall on branch instruction [2808]
Protected page @ 0x00211
Pagesplit @ 0020FFF8 : size=2 insts
Manual block @ 001F7850 : size = 9 page/offs = 0x001F7/0x850 inpgsz = 36 clearcnt = 0
Manual block @ 001F7874 : size = 2 page/offs = 0x001F7/0x874 inpgsz = 8 clearcnt = 0
Manual block @ 001F787C : size = 25 page/offs = 0x001F7/0x87C inpgsz = 100 clearcnt = 0
Manual block @ 001F78E0 : size = 3 page/offs = 0x001F7/0x8E0 inpgsz = 12 clearcnt = 0
Manual block @ 001F7904 : size = 8 page/offs = 0x001F7/0x904 inpgsz = 32 clearcnt = 0
Manual block @ 001F7924 : size = 4 page/offs = 0x001F7/0x924 inpgsz = 16 clearcnt = 0
Manual block @ 001F7934 : size = 5 page/offs = 0x001F7/0x934 inpgsz = 20 clearcnt = 0
Manual block @ 001F7948 : size = 2 page/offs = 0x001F7/0x948 inpgsz = 8 clearcnt = 0
Manual block @ 001F7970 : size = 2 page/offs = 0x001F7/0x970 inpgsz = 8 clearcnt = 0
Manual block @ 001F7978 : size = 4 page/offs = 0x001F7/0x978 inpgsz = 16 clearcnt = 0
Manual block @ 001F7988 : size = 2 page/offs = 0x001F7/0x988 inpgsz = 8 clearcnt = 0
Manual block @ 001F7990 : size = 2 page/offs = 0x001F7/0x990 inpgsz = 8 clearcnt = 0
Manual block @ 001F79A0 : size = 2 page/offs = 0x001F7/0x9A0 inpgsz = 8 clearcnt = 0
Manual block @ 001F79A8 : size = 6 page/offs = 0x001F7/0x9A8 inpgsz = 24 clearcnt = 0
Manual block @ 001F79C0 : size = 3 page/offs = 0x001F7/0x9C0 inpgsz = 12 clearcnt = 0
Manual block @ 001F79E0 : size = 8 page/offs = 0x001F7/0x9E0 inpgsz = 32 clearcnt = 0
Manual block @ 001F7750 : size = 13 page/offs = 0x001F7/0x750 inpgsz = 52 clearcnt = 0
Manual block @ 001F7784 : size = 4 page/offs = 0x001F7/0x784 inpgsz = 16 clearcnt = 0
Manual block @ 001F7794 : size = 5 page/offs = 0x001F7/0x794 inpgsz = 20 clearcnt = 0
Manual block @ 001F77A8 : size = 2 page/offs = 0x001F7/0x7A8 inpgsz = 8 clearcnt = 0
Manual block @ 001F77D0 : size = 2 page/offs = 0x001F7/0x7D0 inpgsz = 8 clearcnt = 0
Manual block @ 001F77D8 : size = 4 page/offs = 0x001F7/0x7D8 inpgsz = 16 clearcnt = 0
Manual block @ 001F77E8 : size = 2 page/offs = 0x001F7/0x7E8 inpgsz = 8 clearcnt = 0
Manual block @ 001F77F0 : size = 2 page/offs = 0x001F7/0x7F0 inpgsz = 8 clearcnt = 0
Manual block @ 001F7800 : size = 2 page/offs = 0x001F7/0x800 inpgsz = 8 clearcnt = 0
Manual block @ 001F7808 : size = 6 page/offs = 0x001F7/0x808 inpgsz = 24 clearcnt = 0
Manual block @ 001F7838 : size = 6 page/offs = 0x001F7/0x838 inpgsz = 24 clearcnt = 0
Manual block @ 001F7778 : size = 3 page/offs = 0x001F7/0x778 inpgsz = 12 clearcnt = 0
Manual block @ 001F77F8 : size = 2 page/offs = 0x001F7/0x7F8 inpgsz = 8 clearcnt = 0
Manual block @ 001F7820 : size = 2 page/offs = 0x001F7/0x820 inpgsz = 8 clearcnt = 0
Manual block @ 001F7828 : size = 4 page/offs = 0x001F7/0x828 inpgsz = 16 clearcnt = 0
Manual block @ 001F2040 : size = 5 page/offs = 0x001F2/0x040 inpgsz = 20 clearcnt = 0
Manual block @ 001F2054 : size = 3 page/offs = 0x001F2/0x054 inpgsz = 12 clearcnt = 0
Manual block @ 001F2060 : size = 4 page/offs = 0x001F2/0x060 inpgsz = 16 clearcnt = 0
Manual block @ 001F1FA0 : size = 7 page/offs = 0x001F1/0xFA0 inpgsz = 28 clearcnt = 0
Manual block @ 001F1FBC : size = 4 page/offs = 0x001F1/0xFBC inpgsz = 16 clearcnt = 0
Manual block @ 001F1FCC : size = 4 page/offs = 0x001F1/0xFCC inpgsz = 16 clearcnt = 0
Manual block @ 001F1FDC : size = 4 page/offs = 0x001F1/0xFDC inpgsz = 16 clearcnt = 0
Manual block @ 001F1FEC : size = 2 page/offs = 0x001F1/0xFEC inpgsz = 8 clearcnt = 0
Manual block @ 001F1FF4 : size = 3 page/offs = 0x001F1/0xFF4 inpgsz = 12 clearcnt = 0
Manual block @ 001F2000 : size = 8 page/offs = 0x001F2/0x000 inpgsz = 32 clearcnt = 0
Manual block @ 001F2020 : size = 2 page/offs = 0x001F2/0x020 inpgsz = 8 clearcnt = 0
Manual block @ 001F2028 : size = 6 page/offs = 0x001F2/0x028 inpgsz = 24 clearcnt = 0
Pagesplit @ 00461FE8 : size=6 insts
Protected page @ 0x00460
Pagesplit @ 00467FD8 : size=10 insts
(pxEvtQueue:PauseCoreThread) Posting event! (pending=0, idle=0)
(pxEvtQueue:PauseCoreThread) Executing... [Cancelable]
(pxEvtQueue:PauseCoreThread) Event completed in 13351ms
Manual block @ 001F2B00 : size = 8 page/offs = 0x001F2/0xB00 inpgsz = 32 clearcnt = 0
Manual block @ 001F2B20 : size = 2 page/offs = 0x001F2/0xB20 inpgsz = 8 clearcnt = 0
Manual block @ 001F2B28 : size = 2 page/offs = 0x001F2/0xB28 inpgsz = 8 clearcnt = 0
Manual block @ 001F2C40 : size = 55 page/offs = 0x001F2/0xC40 inpgsz = 220 clearcnt = 0
Manual block @ 001F2D1C : size = 20 page/offs = 0x001F2/0xD1C inpgsz = 80 clearcnt = 0
Manual block @ 001F2B30 : size = 11 page/offs = 0x001F2/0xB30 inpgsz = 44 clearcnt = 0
Manual block @ 001F2B5C : size = 9 page/offs = 0x001F2/0xB5C inpgsz = 36 clearcnt = 0
Protected page @ 0x0021e
Manual block @ 001F2B80 : size = 6 page/offs = 0x001F2/0xB80 inpgsz = 24 clearcnt = 0
Manual block @ 001F29A0 : size = 15 page/offs = 0x001F2/0x9A0 inpgsz = 60 clearcnt = 0
Manual block @ 001F29DC : size = 4 page/offs = 0x001F2/0x9DC inpgsz = 16 clearcnt = 0
Manual block @ 001F29EC : size = 3 page/offs = 0x001F2/0x9EC inpgsz = 12 clearcnt = 0
Manual block @ 001F29F8 : size = 2 page/offs = 0x001F2/0x9F8 inpgsz = 8 clearcnt = 0
Manual block @ 001F2A08 : size = 8 page/offs = 0x001F2/0xA08 inpgsz = 32 clearcnt = 0
Manual block @ 001F2A28 : size = 4 page/offs = 0x001F2/0xA28 inpgsz = 16 clearcnt = 0
Manual block @ 001F2A38 : size = 3 page/offs = 0x001F2/0xA38 inpgsz = 12 clearcnt = 0
Manual block @ 001F2A44 : size = 3 page/offs = 0x001F2/0xA44 inpgsz = 12 clearcnt = 0
Manual block @ 001F2A50 : size = 3 page/offs = 0x001F2/0xA50 inpgsz = 12 clearcnt = 0
Manual block @ 001F2AE0 : size = 7 page/offs = 0x001F2/0xAE0 inpgsz = 28 clearcnt = 0
Pagesplit @ 00102FF8 : size=2 insts
Pagesplit @ 00210FFC : size=1 insts
Re-protecting page @ 0x001df
Re-protecting page @ 0x00076
Uncounted Manual block @ 0x80076680 : size = 15 page/offs = 0x00076/0x680 inpgsz = 60
Uncounted Manual block @ 0x80076440 : size = 4 page/offs = 0x00076/0x440 inpgsz = 16
Uncounted Manual block @ 0x80076160 : size = 21 page/offs = 0x00076/0x160 inpgsz = 84
Uncounted Manual block @ 0x800761D0 : size = 7 page/offs = 0x00076/0x1D0 inpgsz = 28
Uncounted Manual block @ 0x800761BC : size = 5 page/offs = 0x00076/0x1BC inpgsz = 20
Uncounted Manual block @ 0x80076200 : size = 2 page/offs = 0x00076/0x200 inpgsz = 8
Uncounted Manual block @ 0x80076208 : size = 4 page/offs = 0x00076/0x208 inpgsz = 16
Uncounted Manual block @ 0x80076058 : size = 15 page/offs = 0x00076/0x058 inpgsz = 60
Uncounted Manual block @ 0x80076130 : size = 11 page/offs = 0x00076/0x130 inpgsz = 44
Uncounted Manual block @ 0x80076218 : size = 21 page/offs = 0x00076/0x218 inpgsz = 84
Uncounted Manual block @ 0x80076460 : size = 9 page/offs = 0x00076/0x460 inpgsz = 36
Uncounted Manual block @ 0x8007626C : size = 12 page/offs = 0x00076/0x26C inpgsz = 48
Uncounted Manual block @ 0x80076450 : size = 4 page/offs = 0x00076/0x450 inpgsz = 16
Uncounted Manual block @ 0x800766C0 : size = 10 page/offs = 0x00076/0x6C0 inpgsz = 40
Uncounted Manual block @ 0x800765FC : size = 4 page/offs = 0x00076/0x5FC inpgsz = 16
Uncounted Manual block @ 0x80076510 : size = 3 page/offs = 0x00076/0x510 inpgsz = 12
Uncounted Manual block @ 0x80076610 : size = 2 page/offs = 0x00076/0x610 inpgsz = 8
Uncounted Manual block @ 0x80076618 : size = 2 page/offs = 0x00076/0x618 inpgsz = 8
Uncounted Manual block @ 0x80076620 : size = 2 page/offs = 0x00076/0x620 inpgsz = 8
Uncounted Manual block @ 0x80076634 : size = 13 page/offs = 0x00076/0x634 inpgsz = 52
Uncounted Manual block @ 0x8007663C : size = 11 page/offs = 0x00076/0x63C inpgsz = 44
Uncounted Manual block @ 0x80076488 : size = 18 page/offs = 0x00076/0x488 inpgsz = 72
Uncounted Manual block @ 0x800764D0 : size = 7 page/offs = 0x00076/0x4D0 inpgsz = 28
Uncounted Manual block @ 0x800764C0 : size = 4 page/offs = 0x00076/0x4C0 inpgsz = 16
Uncounted Manual block @ 0x800764F4 : size = 7 page/offs = 0x00076/0x4F4 inpgsz = 28
Uncounted Manual block @ 0x8007651C : size = 16 page/offs = 0x00076/0x51C inpgsz = 64
Uncounted Manual block @ 0x800765C0 : size = 15 page/offs = 0x00076/0x5C0 inpgsz = 60
Uncounted Manual block @ 0x800762A0 : size = 10 page/offs = 0x00076/0x2A0 inpgsz = 40
Uncounted Manual block @ 0x800762C8 : size = 2 page/offs = 0x00076/0x2C8 inpgsz = 8
Uncounted Manual block @ 0x800762D0 : size = 8 page/offs = 0x00076/0x2D0 inpgsz = 32
Uncounted Manual block @ 0x800762F0 : size = 7 page/offs = 0x00076/0x2F0 inpgsz = 28
Uncounted Manual block @ 0x8007630C : size = 6 page/offs = 0x00076/0x30C inpgsz = 24
Uncounted Manual block @ 0x80076324 : size = 10 page/offs = 0x00076/0x324 inpgsz = 40
Uncounted Manual block @ 0x800763AC : size = 11 page/offs = 0x00076/0x3AC inpgsz = 44
Uncounted Manual block @ 0x800763D8 : size = 2 page/offs = 0x00076/0x3D8 inpgsz = 8
Uncounted Manual block @ 0x800763E0 : size = 3 page/offs = 0x00076/0x3E0 inpgsz = 12
Uncounted Manual block @ 0x800763EC : size = 8 page/offs = 0x00076/0x3EC inpgsz = 32
Uncounted Manual block @ 0x80076038 : size = 3 page/offs = 0x00076/0x038 inpgsz = 12
Uncounted Manual block @ 0x8007604C : size = 2 page/offs = 0x00076/0x04C inpgsz = 8
Uncounted Manual block @ 0x8007640C : size = 2 page/offs = 0x00076/0x40C inpgsz = 8
Uncounted Manual block @ 0x80076424 : size = 7 page/offs = 0x00076/0x424 inpgsz = 28
Manual block @ 001F2A68 : size = 2 page/offs = 0x001F2/0xA68 inpgsz = 8 clearcnt = 0
Manual block @ 001F7EE0 : size = 8 page/offs = 0x001F7/0xEE0 inpgsz = 32 clearcnt = 0
Manual block @ 001F7F00 : size = 2 page/offs = 0x001F7/0xF00 inpgsz = 8 clearcnt = 0
Manual block @ 001F7F08 : size = 2 page/offs = 0x001F7/0xF08 inpgsz = 8 clearcnt = 0
Manual block @ 001F7F10 : size = 11 page/offs = 0x001F7/0xF10 inpgsz = 44 clearcnt = 0
Manual block @ 001F7F3C : size = 2 page/offs = 0x001F7/0xF3C inpgsz = 8 clearcnt = 0
Manual block @ 001F7F44 : size = 2 page/offs = 0x001F7/0xF44 inpgsz = 8 clearcnt = 0
Manual block @ 001F7F4C : size = 29 page/offs = 0x001F7/0xF4C inpgsz = 116 clearcnt = 0
Pagesplit @ 001F7FC8 : size=14 insts
Manual block @ 001F7FC8 : size = 14 page/offs = 0x001F7/0xFC8 inpgsz = 56 clearcnt = 0
Manual block @ 001F8000 : size = 8 page/offs = 0x001F8/0x000 inpgsz = 32 clearcnt = 0
Manual block @ 001F8020 : size = 2 page/offs = 0x001F8/0x020 inpgsz = 8 clearcnt = 0
Manual block @ 001F8028 : size = 3 page/offs = 0x001F8/0x028 inpgsz = 12 clearcnt = 0
Manual block @ 001F8034 : size = 4 page/offs = 0x001F8/0x034 inpgsz = 16 clearcnt = 0
Manual block @ 001F8088 : size = 5 page/offs = 0x001F8/0x088 inpgsz = 20 clearcnt = 0
Manual block @ 001F809C : size = 8 page/offs = 0x001F8/0x09C inpgsz = 32 clearcnt = 0
Manual block @ 001F80BC : size = 7 page/offs = 0x001F8/0x0BC inpgsz = 28 clearcnt = 0
Manual block @ 001F0E80 : size = 12 page/offs = 0x001F0/0xE80 inpgsz = 48 clearcnt = 0
Manual block @ 001F0EB0 : size = 2 page/offs = 0x001F0/0xEB0 inpgsz = 8 clearcnt = 0
Manual block @ 001F0EC8 : size = 2 page/offs = 0x001F0/0xEC8 inpgsz = 8 clearcnt = 0
Manual block @ 001F0ED0 : size = 2 page/offs = 0x001F0/0xED0 inpgsz = 8 clearcnt = 0
Manual block @ 001F0ED8 : size = 7 page/offs = 0x001F0/0xED8 inpgsz = 28 clearcnt = 0
Uncounted Manual block @ 0x001DDCE0 : size = 5 page/offs = 0x001DD/0xCE0 inpgsz = 20
Uncounted Manual block @ 0x001DDCF4 : size = 2 page/offs = 0x001DD/0xCF4 inpgsz = 8
Uncounted Manual block @ 0x001DDCFC : size = 2 page/offs = 0x001DD/0xCFC inpgsz = 8
Uncounted Manual block @ 0x001DDD20 : size = 4 page/offs = 0x001DD/0xD20 inpgsz = 16
Manual block @ 001F5000 : size = 12 page/offs = 0x001F5/0x000 inpgsz = 48 clearcnt = 0
Manual block @ 001F5030 : size = 12 page/offs = 0x001F5/0x030 inpgsz = 48 clearcnt = 0
Manual block @ 001F5060 : size = 6 page/offs = 0x001F5/0x060 inpgsz = 24 clearcnt = 0
Manual block @ 001F5078 : size = 3 page/offs = 0x001F5/0x078 inpgsz = 12 clearcnt = 0
Manual block @ 001F509C : size = 5 page/offs = 0x001F5/0x09C inpgsz = 20 clearcnt = 0
Manual block @ 001F50B0 : size = 5 page/offs = 0x001F5/0x0B0 inpgsz = 20 clearcnt = 0
Manual block @ 001F50C4 : size = 6 page/offs = 0x001F5/0x0C4 inpgsz = 24 clearcnt = 0
Manual block @ 001F50DC : size = 5 page/offs = 0x001F5/0x0DC inpgsz = 20 clearcnt = 0
Manual block @ 001F50F0 : size = 2 page/offs = 0x001F5/0x0F0 inpgsz = 8 clearcnt = 0
Manual block @ 001F50F8 : size = 34 page/offs = 0x001F5/0x0F8 inpgsz = 136 clearcnt = 0
Manual block @ 001F5180 : size = 11 page/offs = 0x001F5/0x180 inpgsz = 44 clearcnt = 0
Manual block @ 001F1CD0 : size = 27 page/offs = 0x001F1/0xCD0 inpgsz = 108 clearcnt = 0
Manual block @ 001F1D3C : size = 2 page/offs = 0x001F1/0xD3C inpgsz = 8 clearcnt = 0
Manual block @ 001F1D44 : size = 34 page/offs = 0x001F1/0xD44 inpgsz = 136 clearcnt = 0
Manual block @ 001F1DCC : size = 2 page/offs = 0x001F1/0xDCC inpgsz = 8 clearcnt = 0
Manual block @ 001F1DD8 : size = 6 page/offs = 0x001F1/0xDD8 inpgsz = 24 clearcnt = 0
Manual block @ 001F1DF0 : size = 6 page/offs = 0x001F1/0xDF0 inpgsz = 24 clearcnt = 0
Manual block @ 001F1DD4 : size = 1 page/offs = 0x001F1/0xDD4 inpgsz = 4 clearcnt = 0
Manual block @ 001F0B80 : size = 11 page/offs = 0x001F0/0xB80 inpgsz = 44 clearcnt = 0
Manual block @ 001F0BAC : size = 2 page/offs = 0x001F0/0xBAC inpgsz = 8 clearcnt = 0
Manual block @ 001F0BB8 : size = 5 page/offs = 0x001F0/0xBB8 inpgsz = 20 clearcnt = 0
Manual block @ 001F0BCC : size = 2 page/offs = 0x001F0/0xBCC inpgsz = 8 clearcnt = 0
Manual block @ 001F0BD4 : size = 3 page/offs = 0x001F0/0xBD4 inpgsz = 12 clearcnt = 0
Manual block @ 001F0BE8 : size = 4 page/offs = 0x001F0/0xBE8 inpgsz = 16 clearcnt = 0
Uncounted Manual block @ 0x001DD5E0 : size = 15 page/offs = 0x001DD/0x5E0 inpgsz = 60
Uncounted Manual block @ 0x001DD61C : size = 2 page/offs = 0x001DD/0x61C inpgsz = 8
Uncounted Manual block @ 0x001DD624 : size = 4 page/offs = 0x001DD/0x624 inpgsz = 16
Uncounted Manual block @ 0x001DD634 : size = 4 page/offs = 0x001DD/0x634 inpgsz = 16
Uncounted Manual block @ 0x001DD644 : size = 2 page/offs = 0x001DD/0x644 inpgsz = 8
Uncounted Manual block @ 0x001DD64C : size = 3 page/offs = 0x001DD/0x64C inpgsz = 12
Uncounted Manual block @ 0x001DD658 : size = 3 page/offs = 0x001DD/0x658 inpgsz = 12
Uncounted Manual block @ 0x001DD664 : size = 3 page/offs = 0x001DD/0x664 inpgsz = 12
Uncounted Manual block @ 0x001DD688 : size = 4 page/offs = 0x001DD/0x688 inpgsz = 16
Uncounted Manual block @ 0x001DD698 : size = 2 page/offs = 0x001DD/0x698 inpgsz = 8
Uncounted Manual block @ 0x001DD670 : size = 5 page/offs = 0x001DD/0x670 inpgsz = 20
Uncounted Manual block @ 0x001DD684 : size = 1 page/offs = 0x001DD/0x684 inpgsz = 4
Uncounted Manual block @ 0x001DD6A0 : size = 2 page/offs = 0x001DD/0x6A0 inpgsz = 8
Uncounted Manual block @ 0x001DD6A8 : size = 4 page/offs = 0x001DD/0x6A8 inpgsz = 16
Uncounted Manual block @ 0x001DD6B8 : size = 2 page/offs = 0x001DD/0x6B8 inpgsz = 8
Uncounted Manual block @ 0x001DD608 : size = 5 page/offs = 0x001DD/0x608 inpgsz = 20
Uncounted Manual block @ 0x001DD6C0 : size = 8 page/offs = 0x001DD/0x6C0 inpgsz = 32
Manual block @ 001F0BE0 : size = 2 page/offs = 0x001F0/0xBE0 inpgsz = 8 clearcnt = 0
Manual block @ 001F0BB4 : size = 1 page/offs = 0x001F0/0xBB4 inpgsz = 4 clearcnt = 0
Manual block @ 001F0E40 : size = 8 page/offs = 0x001F0/0xE40 inpgsz = 32 clearcnt = 0
Manual block @ 001F0E60 : size = 2 page/offs = 0x001F0/0xE60 inpgsz = 8 clearcnt = 0
Manual block @ 001F0E68 : size = 5 page/offs = 0x001F0/0xE68 inpgsz = 20 clearcnt = 0
Manual block @ 001F5F00 : size = 2 page/offs = 0x001F5/0xF00 inpgsz = 8 clearcnt = 0
Manual block @ 001F50B8 : size = 3 page/offs = 0x001F5/0x0B8 inpgsz = 12 clearcnt = 0
Manual block @ 001F7690 : size = 4 page/offs = 0x001F7/0x690 inpgsz = 16 clearcnt = 0
Manual block @ 001F76A0 : size = 5 page/offs = 0x001F7/0x6A0 inpgsz = 20 clearcnt = 0
Manual block @ 001F76B4 : size = 3 page/offs = 0x001F7/0x6B4 inpgsz = 12 clearcnt = 0
Manual block @ 001F76C0 : size = 4 page/offs = 0x001F7/0x6C0 inpgsz = 16 clearcnt = 0
Manual block @ 001F76D0 : size = 5 page/offs = 0x001F7/0x6D0 inpgsz = 20 clearcnt = 0
Manual block @ 001F40C0 : size = 4 page/offs = 0x001F4/0x0C0 inpgsz = 16 clearcnt = 0
Manual block @ 001F40D0 : size = 5 page/offs = 0x001F4/0x0D0 inpgsz = 20 clearcnt = 0
Manual block @ 001F40E4 : size = 4 page/offs = 0x001F4/0x0E4 inpgsz = 16 clearcnt = 0
Manual block @ 001F40F4 : size = 5 page/offs = 0x001F4/0x0F4 inpgsz = 20 clearcnt = 0
Manual block @ 001F4108 : size = 5 page/offs = 0x001F4/0x108 inpgsz = 20 clearcnt = 0
Manual block @ 001F2A18 : size = 4 page/offs = 0x001F2/0xA18 inpgsz = 16 clearcnt = 0
Manual block @ 001F2A08 : size = 4 page/offs = 0x001F2/0xA08 inpgsz = 16 clearcnt = 0
Manual block @ 001F2140 : size = 7 page/offs = 0x001F2/0x140 inpgsz = 28 clearcnt = 0
Manual block @ 001F215C : size = 9 page/offs = 0x001F2/0x15C inpgsz = 36 clearcnt = 0
Manual block @ 001F2180 : size = 2 page/offs = 0x001F2/0x180 inpgsz = 8 clearcnt = 0
Manual block @ 001F2188 : size = 18 page/offs = 0x001F2/0x188 inpgsz = 72 clearcnt = 0
Manual block @ 001F21E0 : size = 12 page/offs = 0x001F2/0x1E0 inpgsz = 48 clearcnt = 0
Manual block @ 001F2210 : size = 8 page/offs = 0x001F2/0x210 inpgsz = 32 clearcnt = 0
Manual block @ 001F4840 : size = 5 page/offs = 0x001F4/0x840 inpgsz = 20 clearcnt = 0
Manual block @ 001F4854 : size = 8 page/offs = 0x001F4/0x854 inpgsz = 32 clearcnt = 0
Manual block @ 001F06E0 : size = 22 page/offs = 0x001F0/0x6E0 inpgsz = 88 clearcnt = 0
Manual block @ 001F0738 : size = 3 page/offs = 0x001F0/0x738 inpgsz = 12 clearcnt = 0
Manual block @ 001F0768 : size = 3 page/offs = 0x001F0/0x768 inpgsz = 12 clearcnt = 0
Manual block @ 001F0774 : size = 2 page/offs = 0x001F0/0x774 inpgsz = 8 clearcnt = 0
Manual block @ 001F077C : size = 2 page/offs = 0x001F0/0x77C inpgsz = 8 clearcnt = 0
Manual block @ 001F0790 : size = 3 page/offs = 0x001F0/0x790 inpgsz = 12 clearcnt = 0
Manual block @ 001F079C : size = 14 page/offs = 0x001F0/0x79C inpgsz = 56 clearcnt = 0
Manual block @ 001F07D4 : size = 5 page/offs = 0x001F0/0x7D4 inpgsz = 20 clearcnt = 0
Manual block @ 001F07E8 : size = 2 page/offs = 0x001F0/0x7E8 inpgsz = 8 clearcnt = 0
Manual block @ 001F0988 : size = 11 page/offs = 0x001F0/0x988 inpgsz = 44 clearcnt = 0
Manual block @ 001F0A80 : size = 7 page/offs = 0x001F0/0xA80 inpgsz = 28 clearcnt = 0
Manual block @ 001F0AA8 : size = 8 page/offs = 0x001F0/0xAA8 inpgsz = 32 clearcnt = 0
Manual block @ 001F0B20 : size = 8 page/offs = 0x001F0/0xB20 inpgsz = 32 clearcnt = 0
Manual block @ 001F09C0 : size = 11 page/offs = 0x001F0/0x9C0 inpgsz = 44 clearcnt = 0
Manual block @ 001F09EC : size = 2 page/offs = 0x001F0/0x9EC inpgsz = 8 clearcnt = 0
Manual block @ 001F09F4 : size = 28 page/offs = 0x001F0/0x9F4 inpgsz = 112 clearcnt = 0
Manual block @ 001F0A64 : size = 6 page/offs = 0x001F0/0xA64 inpgsz = 24 clearcnt = 0
Uncounted Manual block @ 0x001DD5E0 : size = 10 page/offs = 0x001DD/0x5E0 inpgsz = 40
Manual block @ 001F7918 : size = 3 page/offs = 0x001F7/0x918 inpgsz = 12 clearcnt = 0
Manual block @ 001F7998 : size = 2 page/offs = 0x001F7/0x998 inpgsz = 8 clearcnt = 0
Manual block @ 001F79D0 : size = 4 page/offs = 0x001F7/0x9D0 inpgsz = 16 clearcnt = 0
microVU0: Cached Prog = [026] [PC=0108] [List=01] (Cache=0.103%) [0.1mb]
microVU0: M-bit set!
microVU0: Cached Prog = [027] [PC=0200] [List=01] (Cache=0.108%) [0.1mb]
microVU0: M-bit set!
microVU1: Cached Prog = [169] [PC=2ac8] [List=01] (Cache=4.773%) [2.9mb]
microVU1: Warning 1 cycle stall on branch instruction [29b0]
microVU1: Warning 1 cycle stall on branch instruction [2d68]
microVU1: Cached Prog = [170] [PC=2aa8] [List=01] (Cache=4.795%) [2.9mb]
microVU1: Warning 1 cycle stall on branch instruction [3098]
microVU1: Warning 1 cycle stall on branch instruction [3180]
microVU1: Warning 1 cycle stall on branch instruction [3180]
microVU1: Warning 1 cycle stall on branch instruction [3098]
microVU1: Warning 1 cycle stall on branch instruction [2970]
microVU1: Cached Prog = [171] [PC=2ae8] [List=01] (Cache=4.795%) [2.9mb]
microVU1: Warning 1 cycle stall on branch instruction [29b0]
microVU1: Warning 1 cycle stall on branch instruction [2d68]
Manual block @ 001F4880 : size = 9 page/offs = 0x001F4/0x880 inpgsz = 36 clearcnt = 0
Manual block @ 001F48A4 : size = 12 page/offs = 0x001F4/0x8A4 inpgsz = 48 clearcnt = 0
Manual block @ 001F48D4 : size = 3 page/offs = 0x001F4/0x8D4 inpgsz = 12 clearcnt = 0
Manual block @ 001F48FC : size = 2 page/offs = 0x001F4/0x8FC inpgsz = 8 clearcnt = 0
Manual block @ 001F4904 : size = 2 page/offs = 0x001F4/0x904 inpgsz = 8 clearcnt = 0
Manual block @ 001F490C : size = 33 page/offs = 0x001F4/0x90C inpgsz = 132 clearcnt = 0
Manual block @ 001F4990 : size = 9 page/offs = 0x001F4/0x990 inpgsz = 36 clearcnt = 0
Manual block @ 001F3C70 : size = 11 page/offs = 0x001F3/0xC70 inpgsz = 44 clearcnt = 0
Manual block @ 001F3C9C : size = 20 page/offs = 0x001F3/0xC9C inpgsz = 80 clearcnt = 0
Manual block @ 001F3CEC : size = 3 page/offs = 0x001F3/0xCEC inpgsz = 12 clearcnt = 0
Manual block @ 001F3D14 : size = 2 page/offs = 0x001F3/0xD14 inpgsz = 8 clearcnt = 0
Manual block @ 001F3D1C : size = 2 page/offs = 0x001F3/0xD1C inpgsz = 8 clearcnt = 0
Manual block @ 001F3D24 : size = 35 page/offs = 0x001F3/0xD24 inpgsz = 140 clearcnt = 0
Manual block @ 001F3DB0 : size = 11 page/offs = 0x001F3/0xDB0 inpgsz = 44 clearcnt = 0
Pagesplit @ 0010DFF0 : size=4 insts
Protected page @ 0x00111
Pagesplit @ 00106FF8 : size=2 insts
Manual block @ 001F66D0 : size = 10 page/offs = 0x001F6/0x6D0 inpgsz = 40 clearcnt = 0
Manual block @ 001F66F8 : size = 11 page/offs = 0x001F6/0x6F8 inpgsz = 44 clearcnt = 0
Manual block @ 001F6724 : size = 3 page/offs = 0x001F6/0x724 inpgsz = 12 clearcnt = 0
Manual block @ 001F6748 : size = 11 page/offs = 0x001F6/0x748 inpgsz = 44 clearcnt = 0
Manual block @ 001F67A8 : size = 2 page/offs = 0x001F6/0x7A8 inpgsz = 8 clearcnt = 0
Manual block @ 001F67B0 : size = 2 page/offs = 0x001F6/0x7B0 inpgsz = 8 clearcnt = 0
Manual block @ 001F67B8 : size = 34 page/offs = 0x001F6/0x7B8 inpgsz = 136 clearcnt = 0
Manual block @ 001F6840 : size = 9 page/offs = 0x001F6/0x840 inpgsz = 36 clearcnt = 0
Manual block @ 001FB9F0 : size = 8 page/offs = 0x001FB/0x9F0 inpgsz = 32 clearcnt = 0
Manual block @ 001FBA10 : size = 2 page/offs = 0x001FB/0xA10 inpgsz = 8 clearcnt = 0
microVU1: Cached Prog = [172] [PC=2510] [List=02] (Cache=4.863%) [3.0mb]
Manual block @ 001F4120 : size = 4 page/offs = 0x001F4/0x120 inpgsz = 16 clearcnt = 0
Manual block @ 001F4130 : size = 3 page/offs = 0x001F4/0x130 inpgsz = 12 clearcnt = 0
Manual block @ 001F413C : size = 2 page/offs = 0x001F4/0x13C inpgsz = 8 clearcnt = 0
Manual block @ 001F4144 : size = 29 page/offs = 0x001F4/0x144 inpgsz = 116 clearcnt = 0
Manual block @ 001F41B8 : size = 5 page/offs = 0x001F4/0x1B8 inpgsz = 20 clearcnt = 0
(pxEvtQueue:PauseCoreThread) Posting event! (pending=0, idle=0)
(pxEvtQueue:PauseCoreThread) Executing... [Cancelable]
(pxEvtQueue:PauseCoreThread) Event completed in 27028ms
Manual block @ 001F3BA0 : size = 6 page/offs = 0x001F3/0xBA0 inpgsz = 24 clearcnt = 0
Manual block @ 001F3BB8 : size = 3 page/offs = 0x001F3/0xBB8 inpgsz = 12 clearcnt = 0
Manual block @ 001F3BC4 : size = 2 page/offs = 0x001F3/0xBC4 inpgsz = 8 clearcnt = 0
Manual block @ 001F3BCC : size = 33 page/offs = 0x001F3/0xBCC inpgsz = 132 clearcnt = 0
Manual block @ 001F3C50 : size = 6 page/offs = 0x001F3/0xC50 inpgsz = 24 clearcnt = 0
Manual block @ 001F7614 : size = 5 page/offs = 0x001F7/0x614 inpgsz = 20 clearcnt = 0
Manual block @ 001FB260 : size = 14 page/offs = 0x001FB/0x260 inpgsz = 56 clearcnt = 0
Manual block @ 001FB298 : size = 4 page/offs = 0x001FB/0x298 inpgsz = 16 clearcnt = 0
Manual block @ 001FB2A8 : size = 2 page/offs = 0x001FB/0x2A8 inpgsz = 8 clearcnt = 0
Manual block @ 001FB2C0 : size = 10 page/offs = 0x001FB/0x2C0 inpgsz = 40 clearcnt = 0
Manual block @ 001FB2F0 : size = 2 page/offs = 0x001FB/0x2F0 inpgsz = 8 clearcnt = 0
Manual block @ 001FB2F8 : size = 2 page/offs = 0x001FB/0x2F8 inpgsz = 8 clearcnt = 0
Manual block @ 001FB300 : size = 3 page/offs = 0x001FB/0x300 inpgsz = 12 clearcnt = 0
Manual block @ 001FB30C : size = 11 page/offs = 0x001FB/0x30C inpgsz = 44 clearcnt = 0
Pagesplit @ 0028AFF0 : size=4 insts
Protected page @ 0x0032b
Pagesplit @ 004E7FF0 : size=4 insts
Manual block @ 001FB8C0 : size = 7 page/offs = 0x001FB/0x8C0 inpgsz = 28 clearcnt = 0
Manual block @ 001FB8DC : size = 7 page/offs = 0x001FB/0x8DC inpgsz = 28 clearcnt = 0
Manual block @ 001FB908 : size = 2 page/offs = 0x001FB/0x908 inpgsz = 8 clearcnt = 0
microVU1: Cached Prog = [173] [PC=2a58] [List=01] (Cache=4.869%) [3.0mb]
microVU1: Cached Prog = [174] [PC=2930] [List=01] (Cache=4.869%) [3.0mb]
microVU1: Warning 1 cycle stall on branch instruction [2cb8]
microVU1: Cached Prog = [175] [PC=2a48] [List=01] (Cache=4.888%) [3.0mb]
microVU1: Cached Prog = [176] [PC=2a78] [List=02] (Cache=4.899%) [3.0mb]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Warning 1 cycle stall on branch instruction [3858]
microVU1: Cached Prog = [177] [PC=2af8] [List=01] (Cache=4.935%) [3.0mb]
microVU1: Cached Prog = [178] [PC=29e0] [List=01] (Cache=4.935%) [3.0mb]
microVU1: Warning 1 cycle stall on branch instruction [2d68]
Manual block @ 001F1190 : size = 28 page/offs = 0x001F1/0x190 inpgsz = 112 clearcnt = 0
Manual block @ 001F1200 : size = 4 page/offs = 0x001F1/0x200 inpgsz = 16 clearcnt = 0
Manual block @ 001F1210 : size = 2 page/offs = 0x001F1/0x210 inpgsz = 8 clearcnt = 0
Manual block @ 001F1220 : size = 2 page/offs = 0x001F1/0x220 inpgsz = 8 clearcnt = 0
Manual block @ 001F13E0 : size = 11 page/offs = 0x001F1/0x3E0 inpgsz = 44 clearcnt = 0
Manual block @ 001F7904 : size = 5 page/offs = 0x001F7/0x904 inpgsz = 20 clearcnt = 0
microVU1: Cached Prog = [179] [PC=2b08] [List=01] (Cache=4.953%) [3.0mb]
microVU1: Cached Prog = [180] [PC=2b28] [List=01] (Cache=4.965%) [3.0mb]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
microVU1: Warning 1 cycle stall on branch instruction [3908]
Protected page @ 0x0021b
Pagesplit @ 00218FF0 : size=4 insts
Protected page @ 0x00219
Protected page @ 0x0021a
Pagesplit @ 0021AFF8 : size=2 insts
Manual block @ 001FB910 : size = 11 page/offs = 0x001FB/0x910 inpgsz = 44 clearcnt = 0
Manual block @ 001FB93C : size = 3 page/offs = 0x001FB/0x93C inpgsz = 12 clearcnt = 0
Manual block @ 001FB960 : size = 3 page/offs = 0x001FB/0x960 inpgsz = 12 clearcnt = 0
Manual block @ 001FB96C : size = 14 page/offs = 0x001FB/0x96C inpgsz = 56 clearcnt = 0
Manual block @ 001FB9B0 : size = 3 page/offs = 0x001FB/0x9B0 inpgsz = 12 clearcnt = 0
Manual block @ 001FB9BC : size = 4 page/offs = 0x001FB/0x9BC inpgsz = 16 clearcnt = 0
Manual block @ 001F41D0 : size = 4 page/offs = 0x001F4/0x1D0 inpgsz = 16 clearcnt = 0
Manual block @ 001F41E0 : size = 3 page/offs = 0x001F4/0x1E0 inpgsz = 12 clearcnt = 0
Manual block @ 001F41EC : size = 2 page/offs = 0x001F4/0x1EC inpgsz = 8 clearcnt = 0
Manual block @ 001F41F4 : size = 29 page/offs = 0x001F4/0x1F4 inpgsz = 116 clearcnt = 0
Manual block @ 001F4268 : size = 5 page/offs = 0x001F4/0x268 inpgsz = 20 clearcnt = 0
Manual block @ 001F4640 : size = 11 page/offs = 0x001F4/0x640 inpgsz = 44 clearcnt = 0
Manual block @ 001F466C : size = 11 page/offs = 0x001F4/0x66C inpgsz = 44 clearcnt = 0
Manual block @ 001F46A4 : size = 3 page/offs = 0x001F4/0x6A4 inpgsz = 12 clearcnt = 0
Manual block @ 001F46B0 : size = 2 page/offs = 0x001F4/0x6B0 inpgsz = 8 clearcnt = 0
Manual block @ 001F46B8 : size = 34 page/offs = 0x001F4/0x6B8 inpgsz = 136 clearcnt = 0
Manual block @ 001F4740 : size = 10 page/offs = 0x001F4/0x740 inpgsz = 40 clearcnt = 0
Protected page @ 0x00279
Protected page @ 0x002cb
Manual block @ 001E0A50 : size = 11 page/offs = 0x001E0/0xA50 inpgsz = 44 clearcnt = 0
Manual block @ 001E0A7C : size = 3 page/offs = 0x001E0/0xA7C inpgsz = 12 clearcnt = 0
Manual block @ 001E0A88 : size = 2 page/offs = 0x001E0/0xA88 inpgsz = 8 clearcnt = 0
Manual block @ 001E0A90 : size = 3 page/offs = 0x001E0/0xA90 inpgsz = 12 clearcnt = 0
Manual block @ 001E0B38 : size = 2 page/offs = 0x001E0/0xB38 inpgsz = 8 clearcnt = 0
Manual block @ 001E0BD8 : size = 8 page/offs = 0x001E0/0xBD8 inpgsz = 32 clearcnt = 0
Manual block @ 001E0BF8 : size = 5 page/offs = 0x001E0/0xBF8 inpgsz = 20 clearcnt = 0
Manual block @ 001E0C0C : size = 3 page/offs = 0x001E0/0xC0C inpgsz = 12 clearcnt = 0
Manual block @ 001E0C28 : size = 5 page/offs = 0x001E0/0xC28 inpgsz = 20 clearcnt = 0
Manual block @ 001E0C3C : size = 2 page/offs = 0x001E0/0xC3C inpgsz = 8 clearcnt = 0
Manual block @ 001E0F28 : size = 4 page/offs = 0x001E0/0xF28 inpgsz = 16 clearcnt = 0
Manual block @ 001E0F38 : size = 8 page/offs = 0x001E0/0xF38 inpgsz = 32 clearcnt = 0
Manual block @ 001E1530 : size = 2 page/offs = 0x001E1/0x530 inpgsz = 8 clearcnt = 0
Manual block @ 001E0C44 : size = 6 page/offs = 0x001E0/0xC44 inpgsz = 24 clearcnt = 0
Manual block @ 001E0C5C : size = 2 page/offs = 0x001E0/0xC5C inpgsz = 8 clearcnt = 0
Manual block @ 001E0C64 : size = 2 page/offs = 0x001E0/0xC64 inpgsz = 8 clearcnt = 0
Manual block @ 001E0C6C : size = 4 page/offs = 0x001E0/0xC6C inpgsz = 16 clearcnt = 0
Manual block @ 001E0C88 : size = 4 page/offs = 0x001E0/0xC88 inpgsz = 16 clearcnt = 0
Manual block @ 001E0C98 : size = 5 page/offs = 0x001E0/0xC98 inpgsz = 20 clearcnt = 0
Manual block @ 001E0CAC : size = 2 page/offs = 0x001E0/0xCAC inpgsz = 8 clearcnt = 0
Manual block @ 001E0A9C : size = 2 page/offs = 0x001E0/0xA9C inpgsz = 8 clearcnt = 0
Manual block @ 001E0AA4 : size = 2 page/offs = 0x001E0/0xAA4 inpgsz = 8 clearcnt = 0
(pxEvtQueue:PauseCoreThread) Posting event! (pending=0, idle=0)
(pxEvtQueue:PauseCoreThread) Executing... [Cancelable]
(pxEvtQueue:PauseCoreThread) Event completed in 836ms
Re-protecting page @ 0x001e1
Re-protecting page @ 0x001e0
(pxEvtQueue:VoidMethod) Posting event! (pending=0, idle=0)
(pxEvtQueue:VoidMethod) Executing... [Noncancelable]
Closing plugins...
Closing DEV9
Closing FW
Closing USB
Closing CDVD
Closing SPU2
Closing PAD
Closing GS
Plugins closed successfully.
(pxEvtQueue:VoidMethod) Event completed in 180ms
-- End of log --
Can't wait to test out more things later versions later...

Revision 4865

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".
cottonvibes
Note: There could be some complications with MTVU and linux due to it relying on Signals instead of exceptions for the recompiler's on-demand memory allocation, however I think it should work (from what i understand the signal exception is shared between the different threads in the process, so i think all i needed to do was put a mutex lock in there to stall a thread incase they access the exception at the same time (the exception code accesses and modifies a global resource, so it would be unsafe to have multiple threads modifying that at the same time))...
naik22...
Oh good is just a option xD i dont have a 4 core now..COOL MAN :D you did it guys
ColinTre...
Great. Thanks.
miser...
Oh lol at first I thought it's same as r3000, but then again it's real code not just spaces ;D
shadowladyngemu
Dual-core CPUs can also get some benefit from this in some games but most of the time it'll be a slowdown and just increase the CPU load so try it carefully :p. On the good side you can switch between them while the game is running so it's easy to check if it helps or not :)
shadowladyngemu
Also, I'd like to see if i3 HT CPUs will see much benefit from it too :p
miser...
http://www.speedyshare.com/files/29828864/r4865_vs2010fix.patch
^this will give it to buildbot users:).
miser...
OMG and Hurray for this "speedhack" :D damn some of my games running barely at 50fps got to 100fps now xD. THAAAAANKS for that aloooot. ;D
romulux_...
+1000
andutrache
Nice, maybe this will reduce the "Why PCSX2 doesn't use my CPU ?" threads.
Good Work !!!
romulux_...
@matias, admit it, you were getting one anyway :P
jfre1...
Tested on GTA - San Andreas and I barely ever saw any fps drop with MTVU enabled. Fantastic :). On fixed frame rate of 50 fps. Now if just the weird graphical muckups in that game were fixed I'd be over the moon.
Either way fantastic work guys.
jammanl...
bloody brilliant this was my main bottleneck
Kar...
Didn't one of the devs say that this could take years or even be impossible in the forums just the other week? Sneaky sneaky. :P Amazing work, however you did it. It's funny the way the development is super quiet alternating with these huge all-at-once changes lately.
chuuey
wow, fantastic work guys :D
Arkai...
A question: Does it works better on 2 cores - 4 threads(HT)?
Fantastic for my PH II x4 but what's about my i5-480m that have 2C-4T??
gregory....
Cotton, If you have some free time.
I got at least 2 issue with gcc.
1/ complain about alignment. I think it does not support aligned in parameter. Here the place
--- pcsx2.snapshot-4863.orig/common/include/Utilities/Threading.h
+++ pcsx2.snapshot-4863/common/include/Utilities/Threading.h
@@ -408,7 +408,11 @@
ScopedLock m_lock;
volatile __aligned(4) bool& m_bool;
+#ifdef __LINUX__
+ ScopedLockBool(Mutex& mutexToLock, volatile bool& isLockedBool)
+#else
ScopedLockBool(Mutex& mutexToLock, volatile __aligned(4) bool& isLockedBool)
+#endif
: m_lock(mutexToLock),
m_bool(isLockedBool) {
m_bool = m_lock.IsLocked();
2/ Then this one
pcsx2/VU1microInterp.cpp:181:26: error: declaration of ‘virtual void InterpVU1::Shutdown()’ throws different exceptions
pcsx2/VUmicro.h:196:7: error: from previous declaration ‘virtual void InterpVU1::Shutdown() throw ()’
rodiablo...
And cotton did it again. Great job, cottonvibes! I didn't expect something like this so soon. Everytime somebody talked about it, the answer was always "a thing like this would require a total rewrite of pcsx2 core". Pcsx2 team amazing as always.
cottonvibes
gregory: for the first error your fix is fine.
for the second error just add "throw()" to the definition in VU1microInterp.cpp
refraction
Well done :) Just least VU0 to go over too to make Tekken Tag fans happy ;p
godofdr...
good job! man good work
cottonvibes
rodiablo: "Everytime somebody talked about it, the answer was always "a thing like this would require a total rewrite of pcsx2 core"."
It did take a lot of rewrites of code, but after years of rewriting and refactoring various code, it actually became possible xD
not only were the rewrites valuable for setting up the foundation for the mtvu code, but the knowledge gained by the rewrites was also crucial to figuring out how to make this work :D (it required good knowledge of how pcsx2's gif/vif/vu/and mtgs code works)
grove4...
One of the best changes ever!!!
Great Work
MGS3: Intro 29fps-->35fps(lowest without other Speedhacks)
Burnout 3: 47fps-->75fps
GT4: 57fps-->82fps(without other Cars)
FFX: 72fps-->92fps(Mi'ihen Highroad)
Tekken 5: 47fps-->69fps(Acid Rain Stage)
sotC: 39fps-->43fps(not much but works great w/ VU Stealing 2 >75fps)
System: I5-750, 4GB RAM, GTX460 HAWK, Win7 64Bit
rodiablo...
@cottonvibes
You're right. It's just I'm so absent about pcsx2 and its recent changes (I switched to a not so powerfull quad core, so had to stop playing with it), I didn't realised that the changes were in fact various rewrites of the code.
But I think I have to pay a visit to the forums becouse none of the games I've tested so far take any benefit from this MTVU. Or maybe I'm doomed to run pcsx2 slower for the rest of my life :P
daniel.i...
I'm interested in the performance on hyperthreaded dual cores. I got a i5-2410M, but my PS2 games are on the other side of the Earth right now, so I can't test it myself...
miser...
@rodiablo...
Did you actually turn it on?:P (In the speedhacks -> "MTVU").
Or maybe your GPU is weak,(some kind of norm for low end quads) then it's a bottleneck, and this generally helps only when your games are cpu limited.
SlyMaels...
Nice to see you making this update. Good work.
For those asking about HT on dual-core Core i3/i5, I just gave it a test on a i3 530 with Tekken 5 (NTSC-U) and found that it the speedhack was claiming a significantly better frame rate, but it was apparent that it was just misreading it as the game was running far slower than with the hack disabled. In addition to that, it was creating additional graphical artifacts. I'm pretty sure this title is not limited by the GPU as I lowered my resolution greatly and saw no difference in frame rate and I've also gotten better speeds on this game with my CPU overclocked.
I'll try with a few other games and I can post logs and screenshots if anyone wants.
cottonvibes
[email protected]: try with some other games, in my early testing tekken 5 didn't really benefit well from this.
mgs3 in-game and gow title screen are some good ones to try.
afaik the speedhack shouldn't be adding graphical artifacts (unless you were toggling the speedhack on/off while in game; pcsx2 doesn't handle that 100% safely yet)
rodiablo...
@miseru99
Yes, I turned it on. Build downloaded from the orphis bot.
My rig: Intel q8400 @2.8Ghz + ATi HD5770 +3GB Ram.
I don't have a bunch of games. I'm still testing. The only so far that take benefit from MTVU is Devil May Cry (a 10fps gain).
Other games tested:
Xenosaga I, ZOE2, FFX-2 and Soul Calibur 3. None of those ran faster. And I think Xenosaga did run slower with MTVU enabled.
I even selected native res so the GPU could not interfere with the result. Maybe I'm missing something here. Or maybe these games don't take a hit from this change. Or maybe my new rig is crap to pcsx2 changes. I just don't know. :(
SlyMaels...
Ok, I tried it with SSX Tricky, Metal Gear Solid 2: Sons of Liberty, and Shadow of the Colossus (all NTSC-U). SSX showed no change in frame rate or apparent speed, SotC acted similarly to Tekken 5, it reported better frame rate but appeared slower. They might be GS related, I suppose. MGS2, I'm happy to say was a success on dual-core HT, I noticed a consistent 8-9 FPS speed up in all cases (though the game can still get very slow at times). That's good news and I might assume that those who are not GS limited may see better results in Tekken 5 and SotC, as well.
mailsze...
Great!!! I'm Q6600 user and I always wanted this!
+10000 for U.
rodiablo...
Oh, I forgot to mention: the Devil May Cry test was the only one I ran in windows XP (while I was checking other things). Maybe pcsx2 is reading some settings from some .ini config file file in windows 7 from some older build peharps? I don't follow pcsx2 as I used to do, so I don't know if it could be the case in here.
Cottonvibes, can you throw some light here please? If it turns to a chat, I'll take to the forums. I promise^^'
mschwarz...
How many threads are now possible? Is a six-core CPU faster compared to a Quadcore?
rodiablo...
Martin, AFAIK there is 4 threads now: EE, GS, VU and UI. no less no more. So six core don't make a difference here.
gigaherz
Meh, you overshadowed my little dplII commits :(
--
"How many threads are now possible? Is a six-core CPU faster compared to a Quadcore?"
The emulator only uses 3 threads, the drivers might use one or two more, so you might see a tiny % improvement on a quad core compared to a tri-core, but I highly doubt > 4 cores makes any difference in any situation.
mailsze...
Testing with FFX-12 I'm getting +20% speed in my 2core CPU.
Better CPU utilization as it uses the GS not used power to boost the EE.
mschwarz...
That makes sense to me. I hope the GS-load can be threaded or lowered soon.
Why are some games have low fps but the EE and the GS have only 70-80% load? I noticed that in the Xenosaga 2 mainmenu.
What is the bottleneck when the GS-laod is at 100%? The GPU or the software? (GTX560TI)
gigaherz
martinsc...:
Some games do things to the GS that a PC GPU ins't designed to handle, it could be overloading the PCIe bus, or requiring a lot of cpu time out of the graphics driver.
miser...
I noticed something strange, in DBZ: Infinite World in multiply of Native res everything works fine, in any custom res PCSX2 freezes with error GSdx: m_merge is NULL - it doesn't even save that to emulog.txt, I also tried more logging options, but nothing really different from normal load jumped out in it, in other games I tried till now everything is fine.
If I set the custom res after passing the beginning with native/x of native then it works too, also works if I load a save before the error occurs - nothing important, just thought it's worth mentioning as this happens from this commit, also with VU1 thread AND without. :O
ramapcsx2
AMD users rejoice :p
miser...
To my(completely unimportant) error posted a bit above, I'm a bit tired of testing for today, but checked the source and saw KH:COM gives such error while booting through the bios, soo I feel like add that it happens in both full and fast boot.
Oh yeah and again thanks 99x10^1000 *AMD user* ^__________^ heheh
ex1991e...
It seems to cause pcsx 2 to crash on intel hd in terminator 3 redemption .Thank fully I have a dedicated graphic card as well :) .But I only have dual core :(.
kaboo...
Great, thanks cotton^^
client...
WOOOOW
gt3 is now playable without any speedhacks at a decent speed
32fps, ee: 98%, gs 60%
client...
opps ment ee at 50%
gregory....
Cotton thanks, I will look at it tonight :)
By the way, did someone make some test with SW renderer. I'm curious if there is any impact.
Syst3mSh0ck
Excellent work everyone, this is a massive speedup for a lot of games. PCSX2 just keeps getting better! I wonder what will come next? Perhaps the R5900 block manager or root counters?
nokiaqdman
Holy shit I've waiting for any EE/VU threading all my life!
SNP_Tira...
This resulted in a noticeable speedup on my dual core system (Final Fantasy X). Something I noticed is that the frame rate is higher on average but more susceptible to momentary downward spikes.
Wagnar...
I have a quad qx6700. and some games run slower with it enabled.. it weird. it shouldnt happen. games that this happen are valkyrie profile and it seems to happen to god of war2 too.
KKL...
Compared to 4839 with an i5 2500
FFX 81 > 102
GT3 40-50ish to 70-80ish, now 100% playable, just won a few races its so smooth
DBZ: budokai 2 happens to be one that crashes.
Loving the update though.
Wagnar...
Working for Devil may cray +-15 more fps.
Still dont understand why some other game see a drop ....
pavel.ne...
Tested...
FFXII, Suikoden 3, Dragon Quest VIII, and other games - all showing a significant speedup on my Phenom II X4 945 CPU :-)
Seinfeld...
Is it possible that some people are getting fake fps reads?
SNP_Tira...
I know what fake FPS looks like and I'm not seeing that.
I tried upping the VU clamping. This is really impressive. I'm on a dual core system and, with this change, I'm getting higher frame rates with VU clamping set to Extra + Preserve Sign than I was getting on the previous revision with VU clamping set to Normal.
Seinfeld...
wow, thats impressive.
marcos....
An Excellent rev. Even on my Core2Duo I'm getting a very nice speedup on most of the games I've tested. The framerate increase vary with an average of 10fps. Tested mainly on Dragon Quest VIII, Grndia III and some other games.
Many thanks for your hard work. :)
mschwarz...
Sadly in Xenosaga 1-3 i get only slowdowns. At least in Suikoden V i get 10fps more. (X4 945)
Seinfeld...
I was talking about Wagnard28 comment, that why asked about fake fps reads.
Wagnar...
No it was really a speed up.
Wagnar...
Also from what I notice, it seem that the VUs in general is slower when we take it to its own thread. So that could explain why some game benefit and some dont. those who will benefit imo are the EE intensive. The game that slow down are the Vu intensive one (valkyrie).
Question is if im right, why is the VU slower on its own thread? a bug?
Whn I say Vu slower, I mean, The VUs seem to take more Cpu cycle to do the same job as when it was not on its own thread.
Sry for my english not my first language....
SNP_Tira...
Hm, further testing has revealed that this isn't as simple as I thought. It's more correct to say that clamping now has a tremendously reduced impact on frame rates to before, but some areas have slowed down regardless. Some areas of the game are faster than before, even faster with Extra + Preserve Sign clamping than they used to be with Normal clamping, while others are slower than before even with Normal clamping.
lemuel2010
Finally!!!! The multi-core good use in an emulator!!!! Great cotton.
mschwarz...
I get over 90% EE and VU in Xenosaga. The GS has also 80%. (45-50fps) I don't think that should happen.
Normaly I have EE 80-90 and GS not over 60 and stable 60fps.
topebr...
Fantastic!!!
sag...
Great job guys. Been waiting on this forever.
wil...
You guys are gods among gods.
serban.a...
10x very much my i5 760 shows a difference of 50-60% in sly 2 (55 fps before and 85 now)
nokiaqdman
GT4 and MGS3S run way better than before. You're doing great job guys!
superbb...
tremendous speed up for my starocean 3, on an amd athlon II X4 635 machine. On the starting scene of the game, speed rises from 43fps to 65fps. Just can't believe that i can actually play this game on pc.
cole.ro...
Glad to see I'm not crazy or dumb. In fact, the games I've tested don't take a speed boost from MTVU (ZOE2, Xenosaga, Soul Calibur 3) . And Xenosaga runs slower aparently, in fact much slower compared to r4833 with MTVU off. I'm curious about Xenosaga behavior 'cos it seems erratic. DMC runs faster, that's a relieve.
wil...
^My ZOE2 seems to get a speedup of about ~10fps average.
cole.ro...
@wilxzh
I noticed a small boost in ZOE2, but not as significant as yours, not enough to play. Not gonna test it again 'cos I'm too far from fullspeed. My CPU and/or GPU limits me. ZOE2 is very taxing, both GPU and CPU.
Glad to hear about a 10fps boost though. :P
Seinfeld...
Is this already the revision with more positive review ever?
prafull....
Hoping to touch 100 positives here.
refraction
We have to beat r4525 which had 92 positives for not fixing a game! :P
mailsze...
This deserves a donation to the project guys.
animus...
Ref, if i'm not mistaken one of the ferrarinnews related commits had 100+ positives. (about not fixing GT 4)
rodiablo...
refraction, you are so mean!
*That's actualy what Roo is thinking about you right now*
But that's good.. that's good... I like it /evil mode haha
TO THE +100! ^^
Seinfeld...
wasn't there a similar commit that make it impossible to play jap Gundam games?
Metal.So...
Cool, now 4x CPU's more useful.
Looks like in near future we will see threading for EE ;)
+86
Metal.So...
Oops, here +87
hehe)
throumba...
Very nice work, VU load has gone down dramatically for some of my games. (Have mostly tested Atlus stuff)
Devil Summoner 2 still stuck at around 35fps, though i think thats mostly EE related.
alfre...
THANKS!!!!!!
awsome!!!!!!
animatri...
Thanks for d Awesome Soy Sauce ^_^
cottonvibes
Since I've wanted this in pcsx2 for a long time as well, and its my birthday, I'll +1 my own commit xD
miser...
Comment by [email protected], Today (7 hours ago) Compared to 4839 with an i5 2500
FFX 81 > 102
GT3 40-50ish to 70-80ish, now 100% playable, just won a few races its so smooth
DBZ: budokai 2 happens to be one that crashes.
Loving the update though.
^ for budokai series, if you were trying in custom res, then try multiply of native res, custom res causes hangs for me with it, while it's working normally in multiply of native.
TheLast...
Looks awesome
I demand that we break 100 positives, it deserves it!
kaboo...
happy B-day Cotton!
cottonvibes
haha thanks kaboo :p
danialho...
"Sadly in Xenosaga 1-3 i get only slowdowns. At least in Suikoden V i get 10fps more. (X4 945)"
Thats because your cpu is a crap.
I saw 20fps increases on my not crap intel processor.
shadow0...
congratulations
Seinfeld...
Probably it will depend on what windows ppl are using, if i'm not mistaken windows 7 manage better the threads and cores than xp, dx10 on xenosaga when a played helped a lot increasing fps vs dx9.
wjat....
Congratulations !!! +100 :)
maurinho...
holy sh**!!!!
thanks a lot!
maurinho...
On my test, God Of War 2 goes from 50 fps to 65 fps
Dawn of mana goes from 63 fps to 54 fps
My cpu is a Phenom x4 955
I guess its about the game :)
skosn...
Wary good fix. I have tested it in 3 games for now. And have received really good speedup of fps! Congratulation for your good work!!!
My test results (PCSX2 r4869 with speed hack MTVU versus PCSX2 r4789, CPU: [email protected], GPU: GTX [email protected]):
1) Hack G.U. Vol1 (NTSC - Scale x 6): (98-100)fps -> (132-142)fps (~35% speedup!)
2) Final Fantasy X (PAL - Scale x 6): (130-145)fps -> (170-187)fps (~30% speedup!)
3) Gran Turismo 4 (NTSC - Scale x 4 - 480p - start of game in arcade mode, the beginning, all by default): (56-88)fps -> (73-112)fps (~27-30% speedup!!!) (in this game it is wary actual!)
atia...
Just for the record, Dead or Alive 2 (NTSC) crashes, doesn't even boot after this commit. But guess what? I don't care!
Congratz! +1000
ramapcsx2
DoA2 always crashed with EE recs enabled. Use EE interpreters *and* the cache option to boot it. In just a couple years you'll be ingame! :p
roniis...
nice work
gb2985
Great! SOTET is definitly faster, Wiplash is also faster (not sure about recption area but does feel faster, Champions of Norrath also feels faster (though still slow when compared to other games). Gonna try it on FF12 next, pity google doesn't allow to set +100 or other values (probably uses null, true and false for the value).
gb2985
Great! Even without frame skip it remains at 40fps or above around 95% of the time. Now if you could just find a way to minimize the speed drop further when there is a lot of objs/gfx then we'd have an almost perfect emu :)
Favi...
Wow it feels like PCSX2 reached a grand milestone here. Props to you cottonvibe. :)
Seinfeld...
congrats, cotton.
Seinfeld...
Such a big step it would be nice to have the info on Wikipedia.
Autor...
The most positive commit ever
itsm...
Time for another binary release :)
cole.ro...
+117. We did it! In cotton's birhtday, he gave us the gift.
Do you live in Russia, cottonvibes? haha /jk
Congrats and thanks again ;)
eliotfur
At last I can play GoW without VU Cycle Stealing (which made precise timing attacks impossible)... Yaaaay...
This commit convinced me to install VS2008 and stuff on my new machine... Good...
renedu...
Phenom II x4 @ 3ghz, running with all recomended speedhacks, EE-cycle=2, VU-cycle=0:
Persona 3: 58fps -> 93fps in the classroom during class! 60% speed-up! EE: 98%, VU:90%, UI 1~10%.
Persona 4: same speedups.
This was the most CPU-limited situation in the game, I think. A little less speedup in other places with 100+ FPS, but even there it is 40+fps when not limited by GPU.
No more need to buy a CPU wiht higher single-threaded performance! +100
andutrache
i'm still waiting for ivy bridge, and then this will rock !!!
omar.con...
trick for those with core 2 duo
with this increases to 8 frames in tekken 5 in the acid rain stage
Commencing first with (VU0 in super) and (VU1 in micro) and the new hack Enables
and start the game you see you are in the game press ESC and change the (micro VU1) to (super VU1) and use the option to resume the emulator
and some frames will have more ready
by experiance in tekken 5 pal in acid rain starts with 42 frames and then do the trick increased to 50 frames
core 2 duo overclock 3.0 to 3.6
omar.con...
in tekken tag pal increases from 38 to 48 frames
testing the tekken tag trick does not work in half bios. only when they are fighting to do the trick
jammanl...
wow nice tip tag team is kinda playable now :D, but im suprised the legacy is fater then the current
cottonvibes
using superVU1 just disables the MTVU hack.
The "trick" doesn't do anything, you can just run superVU1 with MTVU off and it should be the same speed as with MTVU on.
cottonvibes
[email protected]: accuracy has its price. i'm just surprised at how compatible Super VU is for all the stuff it doesn't do right...
jammanl...
ah yes, it would be nice if there was an easy to edit ini file where we could disable pieces of code not needed for particular games, but then again that would probably break alot of things
8924th
Now this is one hell of a commit, and great one as well. I couldn't wait for the day this would happen, and now it's true! One more reason to abuse my quad core even further. ^_^
Though, for those asking about CPUs with 2 cores and 4 threads.. i think the answer is pretty simple considering that threads basically "divide" a core's processing power. So using the MTVU speedhack shouldn't make things any better unless your physical cores are actually more than 2. Whether the threads are 4 or more for a double core CPU, it's the same load, no difference.
chenxu...
Great to hear.
I have a 4-core Q9550, but when I turn it on, the frame rate of Warship Gunner 2 drops from 55fps to 20fps and CPU usage increseas from 50% to 87%. Is this supposed to be the case? Should we invetigate more?
gigaherz
Comment by [email protected], Aug 14 (42 hours ago)
Though, for those asking about CPUs with 2 cores and 4 threads.. i think the answer is pretty simple considering that threads basically "divide" a core's processing power. So using the MTVU speedhack shouldn't make things any better unless your physical cores are actually more than 2. Whether the threads are 4 or more for a double core CPU, it's the same load, no difference.
---
That's not quite right. If it was like that, hyperthreading would be completely worthless.
The way Hyperthreading works is that it duplicates the hardware necessary for keeping two separate contexts active at the same time, and can use the processing units not used by the other thread. This means that if both threads need most of the units, they will both run slower, but if one thread was doing a lot of memory operations while the other thread did a lot of computations using few variables, then they wouldn't be using the same units so it would be almost twice as much as running one single thread. To take advantage of HT you need code designed for it, but it does work.
alforata
Oh my goodness. Now this is awesome, My Phenom II x6 seems like a beast running PS2 right now, even games that worked at 40fps before are now at 60fps with easy and no slowdowns at all!
Great job guys. Great job.
gigaherz
Comment by [email protected], Today (7 hours ago)
¿Isn't this the same? With the MTVU SH you are forcing the (dual core) processor to run something that should be waiting it's turn to execute, that's why it produces mixed results in my PII 550. ¿What is the difference with HT?
--
No, in the real hardware the VU is a separate component and it can run at the same time as the rest of the hardware, as long as it has enough data to start processing. The reason we can't just use a thread for each component and make it all parallel and use as many cores as it requires (which wouldn't be more than 4 (maybe 5) anyhow, because most of the processing is done in 3 of the threads) is because many of the components require very fast reactions to the commands they are given, and the typical OS thread is not designed to react that fast, so we need to interleave the processing of different parts in one single thread to be able to keep the overall state of the machine synchronized.
frost....
I support this change :D
andreas....
I support this change too, even if things run already great in my case, did a quick benchmark at the fastest ingame FPS spot of all games I know of which is FFX inside this tent, not bad, not bad at all ^^ http://img89.imageshack.us/img89/1246/ffxv.jpg
farlongy
i really like this change. :)
i have an amd 1090t six core cpu and 5850 gfx card. anything that makes pcsx2 use more cores/threads is a win in my eyes.
i'm not sure why the option is in speedhack though. why not integrate it into the main pcsx2 core? i usually run without speedhack due to the glitches and false fps increase using them.
gigaherz
because its not 100% compatible and some games actually run slower with it.
throumba...
SMT Nocturne is not compatible with this. The clipping shadows are even more hilarious with it, the stretch from the floor to the character. Not a big deal since Nocturne doesnt need that fast of a computer to run.
ramapcsx2
Hmm, my copy of Nocturne works fine (NTSC).
throumba...
I cant reproduce the bug so ignore me, I must have broken something yesterday. I was trying a bunch of different settings to get past the ladder bug. Today the shadow issue remains the same with MTVU on or off, however in a particular area I get around 55-58fps with my quadcore with MTVU on, and 80-85fps with it off. The game runs much faster without it.
Noorsaji...
Devil Summoner 1 Raidou Kuzunoha vs. The Soulless Army SLUS_214.31 , CRC = BD9EAA7A runs 8 fps less than 60fps which is normal speed with this hack on :( . However without it the game runs at constant 60 fps not sure if its through out but more or less.
Oh an by the way i was running it at 2x native resolution. no other hack activated but EE an Vu clamping were set to none.
Just wanted to let you all now :)
Noorsaji...
on the other hand many other games run great thank cotton vibes even though i don't know u i respect u . :)
sudonim1
Doesn't fix super robot wars.
diceman2...
150 :D :D
wjat....
The truth came out! Rookid is actually Sudonim1! Ban him! :P
romeo_ca...
wow the second best revision after FXAA , i just added the info to wikipedia and will start making some videos and upload them to youtube using my i7 980x with HT disabled
romeo_ca...
wow this build is really giving my CPU an orgasm
wjat....
@[email protected],
This is not the correct place for this question, but see this:
http://forums.pcsx2.net/Thread-SVN-daily-snapshots-build-bot-by-Orphis
romeo_ca...
yo guys what do you think about this: implementing a cloud service inside Pcsx2 to stream content to for exemple android/Ios based device so we can access it through a web browser on the client side, doesn't this just require a fast cpu to make real time video encoding to stream content
gigaherz
Crazily complicated, laggy... Too much effort.
Someone could technically write a new gs plugin that outputs into a stream "server", and a new input plugin that takes data from the reading side of the stream server. You'd also need some sort of frontend system to control the emulator itself (start/pause/change iso/ ...). The lag would be an issue though.
Don't expect me doing it, but maybe someone out there is crazy enough to try to do it... xD
romeo_ca...
hmmmmmmmmmmmmmmmmmmmm well i hope that someone will consider the idea, and by the way it was the software called orb http://www.orb.com/ that gave me the idea and i found a couple of days ago on the net that nvidia is preparing something like this to stream video games content from pcs to tegra equiped devices to play where ever you are isn't this beautiful
RaulD...
I tried this hack on Dragon quest VIII where i had some problems with open areas (Fps dropping to 38-45 from 60).
After enabling this hack it's rock solid 60fps, native and 2x resolution.
3x it starts to drop below 60 , but i guess that's my GPU (Ati 48701gb).
Proccesor is AMD Phenom II 940 (3ghz , no OC).
Awesome change , will try it on some harsh games too like Valkyrie profile 2.
Thanks and keep the good work.
lucho9...
Great work people, this like in 2012 'cause all AMD are grateful with cotton and other coders to make pcsx2 more faster... :)
a thousand of thanks people

Revision 4866

VS2010 Compile fix for r4865

Revision 4867

SPU2-X: Fix one little bug in the spu2replay code and a few warnings discovered
by warning level 4 + code analysis.
sudonim1
Eh, RealtimeDebugger.cpp:193 is wrong. By the standard, that is. It seems to be right by MS unfortunately (and I guess the MS code analyser told you to change it) but will break on conforming implementations such as gcc/glibc.
Standard:
%s is always char*, %ls is always wchar_t*, there is no %S or %hs.
MS:
%s is char* or wchar_t* depending on whether the printf was wide, %S is the reverse of %s, %ls is always wchar_t*, %hs is always char*.
I see no way around this mess other than to always use %ls and wide strings with *wprintf and to use a macro when we need absolutely need %s in *wprintf.
gigaherz
Hmm... that's annoying then. In this case it could be changed to %d though...
gigaherz
Btw: if that's wrong then the one in Config.cpp is also wrong.
sudonim1
Yes, I'll have to check the whole solution now this has come to my attention. We have indirect *wprintf usage too.
sudonim1
...and we're using %S, great.

Revision 4868

linux compilation fix
luc...
By the way, i'm getting a lot of warnings here on linux (gcc 4.6.1). Should i contribute back a bit and (try to) fix them? Or is it a patch that would not be accepted?
gregory....
Hum Well. Dunno the opinion of others.
When you *correct* a warning, there is always the danger to break somethings in linux or in windows. A basic case, the variable is used in MS but is declared on linux too. It is also possible to remove warning at compilation time :p Anyway, why not! If you feel that some relevant warning worth to be fixed. Note to ease review, it would be better to create separate patch for each class of warning.
If you want to contribute, there are various place that would need work. For example,
1/ improve zzogl, port gsdx to opengl
2/ Add the recently added option to spu2x gui and handle them (well maybe there are windows only I do not know).
3/ improve forcefeedback. I only did a basic things.
luc...
I'm sorry i do not have the time nor the skillz to work on proposed contributions. What i meant was more on the line of http://pastie.org/2365469 since i noted a big increase of warnings on pcsx2 code (even if half come from SDL), especially in MTVU.h
gregory....
Ok. The best is to open an issue and to attach your patches.
For information, I disable warning in SDL (not an issue for us but for sdl guy :)), and also the "unused variable" in pcsx2 which is totally irrelevant.

Revision 4869

debian:
* drop build on 64 bits. It will be supported through multiarch
* switch to SDL1.3, allow to build GSdx
debian.m...
I can confirm that there is no issue with fglrx and dh_shlibdeps in an up to date sid system (weird since the error was intentional).
Since I'm posting something I might just as well add some some quick notes.
- I think you meant debhelper 8.9.4 and not debhelper 0.9.4 in the rules file.
- The -branch option in the create tarball script does not work unless you change the shift from 1 to 2. (-branch|-b) BRANCH=$2; shift 2;;)
- GSnull gets downloaded in the create tarball script but since it's Cmake file was not updated for PACKAGE_MODE it's get compiled but not included in the final deb. I just made a patch to include the PACKAGE_MODE option.
- Finally the 3 pcsx2-*.dirs file are not needed since they get created by the .install files.
- You can remove the dpkg-dev warning in the control file since dpkg-buildflags is no longer invoked with the latest rules file.
There are other minor issues like some of the packages are not in the contrib section but I think you saw those in the ppa changelog.
Hope this helps.
gregory....
Actually I thinks, they change the behavior when the move to multiarch and glx select. It allow to have both libgl and to be sure the mesa one is pick up at compilation. I did not know for *.dirs files, very good:)
I will keep the warning for myself. It does not hurt anyway.
Thanks for the review. It is a great help. I will try to incorporate your improvement coming week/month.

Revision 4870

debian: cherry pick micove ppa improvement. Thank very much.
cmake: shutup some warning (mostly sdl...)
canpah...
bu how can i use this plugins :( ?

Revision 4871

SPU2-X: Reworked the circular buffer functions for audio output, with a thread-
safe version.
This hopefully avoids the issues appearing after long periods of continuous
playing.
atia...
I encountered this issue only 2 or 3 hours ago. Can't believe it's fixed the same day :) I will try as soon as possible.
+1
sudonim1
Well we don't know that this was causing the issue, but we noticed that this code wasn't thread safe a couple of days ago and thought it might be the cause. (It needed to be fixed regardless.)
8924th
Dark Chronicle sounds used to get all glitchy and skippy after 1 hour of continuous playback, this should probably fix the problem, but i won't have definite results till tomorrow. :)
cottonvibes
i'll test this today.
hopefully the bad-sound bug is fixed, but like pseudo said, this thread-safety problem needed to be fixed regardless.
valles...
This has fixed the very broken sound issue I was experiencing with persona 3 fes.
cottonvibes
from my testing this seems to have fixed the bad/garbage sound bug from playing for a long time.
frost....
Why not putting SPU on it's own thread :P
gigaherz
I tried back in 2004 or so. It requires too much synchronization with the IOP: Games rely on things happening within 1/48000th of a second, and the best responsiveness you get from threads is around 1/100th of a second, maybe 1/1000th if you enable special options in the system (not sure on that), either way, not even close.
It MAY be more practical to thread the whole IOP+devices away from the EE core, since they communicate through a dma "pipe" (although it would require a SIF rewrite)... not easy though.
sudonim1
Also not sure that would be a great idea since SBUS is specified to respond within 2048 bus cycles (13.(8)ns) or the machine hangs. Fast responses on SIF are reasonable to expect.
Anyway, SPU2 load is perfectly acceptable and the IOP is light too.
sudonim1
That said SPU2 load on the EE thread could be reduced slightly by moving the soundtouch based stretching into the output thread, which I'm in favour of for other reasons.

Revision 4872

SPU2-X: Stretcher: fixed a bug which may be triggered by some compiler
optimizations (floating point comparisons, doesn't happen with current VS2010
project). Thanks to pseudonym for tracking it down, reading tons of asm code,
and learning x87 while at it...
invisgh...
Avi, I'm curious. Was the sound plugin extremely lacking or are you guys just polishing it? Any chance of getting a blog entry about it? :)
sudonim1
Well it's not perfect yet but since June we're pretty close on emulation of everything but the reverb engine, which is merely as good as public information allows for now. The output stretching code has always been quirky at best (though this may be partly attributable to the unsafe ring buffer implementation we discovered) and it's working better since avih's rewrite.
I'm not sure what you want a blog about, avih's would be limited to the output side as that's the only part of spu2-x he's worked on. I could write more about the emulation issues but I'm not really inclined to write dev blogs although there's certainly a lot to talk about.
sudonim1
As far as this bug goes, it was correctly diagnosed by cotton immediately but I didn't realise how it could be applicable here. Shows how little practical experience I have with x87 precision bugs. And now I learnt all about x87 internals years after it was obsoleted.
invisgh...
Well I just figured there was more than enough stuff to write a blog about, which you confirmed. But if you don't want to write one then that's okay too :P probably explains the lack of dev blogs. (Other than cottonvibe's who just posted one yesterday after 3/4 of a year of nothing lol)
cottonvibes
[email protected]: More dev blogs would be nice I agree. Jake used to write a lot of them but since he left the project the blog activity has died down :p
btw incase anyone is curious what the bug was, if you have code similar to this:
float clamp(float f) { return f > 9999.9f ? 9999.9f : f; }
void foo(float x, float y) {
float f = x / y;
float z = clamp(f);
if (z == f || z == 9999.9f) {
printf("hello world");
}
}
it may seem like "hello world" is guaranteed to print out, since you think clamp(f) can only return 'f' or '9999.9f'. But it is possible due to compiler optimizations ("fp: fast" mode in msvc) that "hello world" never prints out.
This is because 'f = (x/y)' can be computed with the full 80bit precision of the x87 stack, and then when the argument is passed/returned to/from the clamp() function, it can be truncated to 32bit precision. Now when you do the comparison between 'f == z', the variable 'f' still has the 80 bit precision from being on the x87 stack, and 'z' has 32bit precision. so those extra 48 bits of precision will cause the comparison to fail, and cause many headaches and "wtf" reactions.
See: http://msdn.microsoft.com/en-us/library/e7s85ffb%28v=vs.80%29.aspx
for further reading.
invisgh...
Very nice example cotton and great job on the dev blog! Any chance you plan on making more?
cottonvibes
[email protected]: Maybe. I need to be inspired to write about something before i write another one :p
RebelliousX
Isn't there a an old blog by ZeroFrog talking about this? Using epsilon value for comparison wont cut it??
sudonim1
Using epsilon would work but it would also be deeply silly for this code and cotton's sample showing the problem.
gigaherz
You can do something like:
bool CloseEnough(float X, float Y) {
return (X==Y) || ((abs(X-Y) / max(abs(X),abs(Y))) <= EPSILON);
}
the (X==Y) is needed because if X==Y==0, then the operation would be 0/0, and NaN compares to anything as FALSE.
it can also be done as:
bool CloseEnough(float X, float Y) {
return abs( (*(int*)&X) - (*(int*)&Y) ) <= 1;
}
which avoids the extra comparison but requires reinterpreting the numbers as integers, forcing the use of memory (stack) even if you inline that code.
gigaherz
Forgot to say, there's a bunch of pages around which explain it better than I can:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.17
http://www.codeproject.com/KB/tips/FloatingPointEquality.aspx
sudonim1
You also forgot to repeat that it's entirely inappropriate for this code. We know that the float should be exactly one of x, y and z (or in cotton's example x and y) and we know the condition which determines this, therefore the logic should just use that condition and skip the equality test with its inherent problems.
sudonim1
In fact I'd go as far as to say that the presence of a floating point equality test in any code, with epsilon or otherwise, is indicative of an algorithm design flaw.

Revision 4873

gsdx, sdl: cast window as expected by sdl
onepad: add an option to control forcefeeback level
cmake: add an hidden option (SHARED_SDL) to build SDL as a shared library to
allow pre-load
romeo_ca...
keep the good work coming
dubigr...
Gregory, where exactly should be the option to control the forcefeedback level?
I can enable Forcefeedback from Onepad configuration window (and is working) but no option to control its level.
gregory....
for the moment you need to change directy the configuration file
#grep ff_intensity pcsx2/inis/OnePAD.ini
>ff_intensity = 100
I will do a better thing when I have free time...
dubigr...
Ah, my bad, that's one place where I didn't search.
Excellent :)

Revision 4874

SIF: Better fix in place for random hangs, Tom Clancy Rainbow Six Lockdown now
Playable.
Hangs also related to Phantasy Star 4 and FFX Thunder Plains, which are both
still ok with this. Also the sif dma errors in Legends of Legaia should be gone
again!
refraction
too much lol removing ones i didnt meean to do

Revision 4875

Thats better, winmerge helps!
ramapcsx2
Awesome you got Legaia working, too :p
Now let's just pray this doesn't mess up the kernel in other games..
refraction
Lets hope not lol, although sif needs a complete overhaul, i almost suspect the 2 halves will need seperating completely to fix it properly, but i guess its hard to say until we know something more about SIF and how it operates. All the status flags are currently a complete hack, nobody knows what they mean!
ramapcsx2
Yea, we need to black box reverse this a bit more ><
refraction
Ugh! but that means writing something and im far too lazy :( and it means moving my black box to a position where it can be networked, then i have to piss arse around with PS2Link to get the IP right (i hate doing that btw)
ramapcsx2
You should see my l33t reversing stuff corner, man.
I have a shelf with the ps2 always networked on it and just need to flip a switch to get it all working! :D
FreeMCboot is configured for all reversing needs imaginable.
All I really could use now would be a firewire port on the console, so the commercial game debugger could work.
Just imagine that: Real EE DECI2 output from the console to check against PCSX2! :>
refraction
oh if only!! guess we can dream, unless you get creative on your "reversing corner" with a soldering iron ;p
ramapcsx2
Giga linked to this:
http://kanshima.net/mirrors/ee-sio/ps2-ee-sio.html
><
refraction
Yep, serial linkup ;p get soldering :p
ramapcsx2
I just bragged about the setup!
Don't wanna fry its EE the next day! :p
romeo_ca...
yAAAs, i like those fixes, please thank about
onimusha 4 and ace combat

Revision 4876

MFIFO Changes:
* Vif: Altered how resumed transfers are handled slightly on VIF side (for
MFIFO).
* SPR: Now transfers data to the MFIFO even if not in MFIFO mode if it meets the
conditions of the ring buffer location (SOCOM 2)
SOCOM 2 is now playable, sort of, the HUD is a mess (unless a tip shows up),
looks like Path3 masking but isn't.
refraction
It is possibly worth noting that the reason SOCOM was failing doing this, the scratchpad is limited to "Normal Mode" when doing MFIFO transfers. In this scenario, the MFIFO mode had not been set, but the Ring Buffer had been specified. At this point it started the transfer in to the ring buffer using a "Chain Mode" flag on the channel, unfortunately there is no data to follow, so it crashed, quite expicly. so now we check if its an MFIFO area then force "Normal Mode" to take place.
refraction
expicly? epicly lol
naik22...
mooo i get 40% speed up in tekken 5 on my amd semproon 1.4ghz
refraction
awsome! so it went from 5 fps to 7fps? :D
atia...
LOL refraction!
naik22...
20 to 39 :(
refraction
awwhh ;p anyway, youll probably find that was MTVU that did that, not this.
strike1...
>>40%
>>20 to 39
OK, someone's not a good friend of math at all. :)

Revision 4877

Better alter this actually, there will always be one picky game which buggers
this up ;p

Revision 4878

Gamefix: Added gamefix for SOCOM 2 HUD corruption.
The game attempts to loads all data in to the VIF FIFO then stall it. Something
goes very wrong. Maybe one day ill replace this and the transformers gamefix
with a FIFO we can turn on, but for now, this'll do.
ramapcsx2
Good job, for now :p
What was the problem with a full emulation again? Slowness?
refraction
its slow and the dma is completely tied in with the VIF at the moment. We really need a dma split out from the VIF which is a lot of work, this is far far easier ;p
romeo_ca...
go go go go pcsx2
refraction
Strife: Care to explain the negative?
andutrache
I guess this doesn't fix his game or something.
jfre1...
There's always one it seems
wjat....
rookid feelings!!
romulux_...
Google code should not permit a negative comment without a reason by default!
miser...
Probably this didn't fixed Super Robot Taisen, that's always a pro reason:P
refraction
Lol
poisiono...
There should be a completely separate (and useless for 99.9% of the future commits) function for rating,
the "Super Robot Taisen Rating",
in which a certain someone could grade each revision from 1 to 100, to see how it scores.
He would be happy, we other lurkers - and the devs - could have some peace :p
msgerrrr...
¨¨
kimoki...
Thank you.
BTW, TEKKEN 4 isnt working, it boots and crashes after character selection screen.
lemuel2010
Fix always good!! But When fix "Ecco the Dolphin"? The problem of this game is in SIF, can do a gamefix?
refraction
we could, but a few games suffer from the same thing (or similar) in the case of ecco, so we'd rather fix that properly if we can.
refraction
Kimoki: Tekken 4 works fine here. Make sure you have "Automatic Gamefixes" enabled as tekken 4 videos are broken.
kimoki...
refraction: I've "Automatic Gamefixes" enabled, also Intro movie works just fine (It doesnt work only If using SPU2null 0.8.0).
So after into movie I get to main menu, but I select any selection from there, it goes black screen and sound continues to play. DX10 HW

Revision 4879

pcsx2: implement theading name on linux.
onepad: properly connect the latest button
sdl: do not compile some useless files (which fail to compile on my system btw)
gigaherz
Does this actually set the thread name? the function name & man page make it sound like it changes the process name... unless somehow when using threads that affects the thread instead of the process...
gregory....
Yes, it is the thread name. I think the man page is wrong (or it could also be the posix manpage). My opinion is that the function was extended when thread feature appears but they forgot to update the manpage.

Revision 4880

pcsx2: implement thread timing on linux => display cpu usage on title bar
dubigr...
With this revision I'm unable to start any game.
PCSX2 itself starts OK and I can configure it, but immediately after pressing "Boot DVD" it crashes.
........................................................................
[[email protected] bin]# ./launch_pcsx2_linux.sh
Interface is initializing. Entering Pcsx2App::OnInit!
Applying operating system default language...
Command line parsing...
Command line parsed!
(UserMode) Found portable install ini @ /dave/pcsx2-read-only/bin/portable.ini
./launch_pcsx2_linux.sh: line 43: 15063 Killed ./pcsx2
.........................................................................
The previous release worked fine.
gregory....
Crap. Which distrib do you have, maybe something not implement on your system? I need to add at least a test on clock_gettime error code.
I'm going in holidays in 10 minutes :(
dubigr...
Mageia, which is a fork of Mandriva.
Happy holiday! You can fix it when you're back :)
gregory....
Dubigr,
Could you test this small patch, thanks vey much.
Index: pcsx2.snapshot-4863/common/src/Utilities/Linux/LnxThreads.cpp
===================================================================
--- pcsx2.snapshot-4863.orig/common/src/Utilities/Linux/LnxThreads.cpp
+++ pcsx2.snapshot-4863/common/src/Utilities/Linux/LnxThreads.cpp
@@ -81,7 +81,8 @@
if (err) return 0;
struct timespec ts;
- clock_gettime(cid, &ts);
+ err = clock_gettime(cid, &ts);
+ if (err) return 0;
unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond();
//unsigned long timeJiff = (ts.tv_sec*GetTickFrequency() + ts.tv_nsec / 1000)/ GetTickFrequency() * GetThreadTicksPerSecond();
@@ -100,7 +101,8 @@
if (err) return 0;
struct timespec ts;
- clock_gettime(cid, &ts);
+ err = clock_gettime(cid, &ts);
+ if (err) return 0;
unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond();
//unsigned long timeJiff = (ts.tv_sec*GetTickFrequency() + ts.tv_nsec / 1000)/ GetTickFrequency() * GetThreadTicksPerSecond();
dubigr...
Still crashes even with this patch.
So, what could be missing from my system?
gregory....
Can you compile a debug version, and generate a backtrace on gdb ?
dubigr...
It would be great to have this feature on Linux too, but if something is missing from my distro probably is missing from other distros as well.
In such cases maybe is better to have this feature automatically disabled/ignored somehow for "problematic" distros but still enabled for others ? (ex on Ubuntu, since is the most used one).
Unless of course you can fix it :)
Your previous commit 4879 is working perfectly and I can use top/htop to monitor the threads (MTVU and all) so we're covered from this point of view.
Good job.
dubigr...
Missed you previous comment.
I am not familiar with this gdb technique (only a vague idea from you posts in the forum).
I will compile a debug version though.
With the patch or without it?
gregory....
Try with the patch. Compile the debug version then run
gdb ./pcsx2
Inside gdb do
> run
Inside pcsx2 run the game. When you hit the real segmentation fault(1), you can generate the backtrace
> backtrace full
Well, before I disable or fix it I need to understand why it does not work in the first place.
(1): I really need to write a wiki on gdb.
dubigr...
I'll do it this evening.
dubigr...
[[email protected] bin]$ gdb ./pcsx2-dbg
GNU gdb (GDB) 7.1-6.mga1 (Mageia release 1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/dave/pcsx2-read-only/bin/pcsx2-dbg...done.
(gdb) run
Starting program: /home/dave/pcsx2-read-only/bin/pcsx2-dbg
[Thread debugging using libthread_db enabled]
Detaching after fork from child process 18424.
Detaching after fork from child process 18425.
Interface is initializing. Entering Pcsx2App::OnInit!
Applying operating system default language...
Detaching after fork from child process 18426.
Detaching after fork from child process 18427.
Detaching after fork from child process 18428.
Command line parsing...
Command line parsed!
[New Thread 0xb46efb70 (LWP 18429)]
(UserMode) Found portable install ini @ /home/dave/pcsx2-read-only/bin/portable.ini
Detaching after fork from child process 18430.
[New Thread 0xb3c2cb70 (LWP 18431)]
[New Thread 0xb32ffb70 (LWP 18432)]
[Thread 0xb32ffb70 (LWP 18432) exited]
(pcsx2-dbg:18421): Gtk-CRITICAL **: IA__gtk_widget_set_colormap: assertion `GDK_IS_COLORMAP (colormap)' failed
[New Thread 0xb32ffb70 (LWP 18441)]
Program received signal SIGSEGV, Segmentation fault.
0xb7104632 in pthread_getcpuclockid () from /lib/i686/libpthread.so.0
Missing debug package(s), you should install: atk1.0-debug-1.32.0-2.mga1.i586 cairo-debug-1.10.2-3.mga1.i586 fontconfig-debug-2.8.0-5.mga1.i586 freetype2-debug-2.4.6-0.1.mga1.tainted.i586 gcc-debug-4.5.2-4.mga1.i586 gdk-pixbuf2.0-debug-2.22.1-3.mga1.i586 glib2.0-debug-2.28.6-3.mga1.i586 glibc-debug-2.12.1-11.mga1.i586 gtk+2.0-debug-2.24.4-1.mga1.i586 jbigkit-debug-2.0-5.mga1.i586 libalsa2-debug-1.0.24.1-3.mga1.i586 libcanberra-debug-0.27-2.mga1.i586 libice-debug-1.0.7-2.mga1.i586 libjpeg-debug-8b-5.mga1.i586 libogg-debug-1.2.2-1.mga1.i586 libpng-debug-1.2.44-3.mga1.i586 libsm-debug-1.2.0-2.mga1.i586 libtiff-debug-3.9.5-1.mga1.i586 libtool-debug-2.4-3.mga1.i586 libvorbis-debug-1.3.2-1.mga1.i586 libx11-debug-1.4.3-1.mga1.i586 libxau-debug-1.0.6-1.mga1.i586 libxcb-debug-1.7-1.mga1.i586 libxcomposite-debug-0.4.3-1.mga1.i586 libxcursor-debug-1.1.11-1.mga1.i586 libxdamage-debug-1.1.3-1.mga1.i586 libxdmcp-debug-1.1.0-1.mga1.i586 libxext-debug-1.2.0-2.mga1.i586 libxfixes-debug-5.0-1.mga1.i586 libxi-debug-1.4.2-1.mga1.i586 libxinerama-debug-1.1.1-2.mga1.i586 libxml2-debug-2.7.8-9.1.mga1.i586 libxrandr-debug-1.3.1-2.mga1.i586 libxrender-debug-0.9.6-1.mga1.i586 libxxf86vm-debug-1.1.1-2.mga1.i586 oxygen-gtk-debug-1.0.4-3.mga1.i586 pango-debug-1.28.4-1.mga1.i586 pcre-debug-8.12-3.mga1.i586 pixman-debug-0.20.2-1.mga1.i586 portaudio-debug-19-16.mga1.i586 wxgtk2.8-debug-2.8.11-7mgd1.i586 zlib-debug-1.2.5-3.mga1.i586
(gdb) backtrace full
#0 0xb7104632 in pthread_getcpuclockid () from /lib/i686/libpthread.so.0
No symbol table info available.
#1 0x082f12d1 in Threading::pxThread::GetCpuTime (this=0x9ea3400)
at /home/dave/pcsx2-read-only/common/src/Utilities/Linux/LnxThreads.cpp:101
cid = -147530
err = 0
ts = {tv_sec = 0, tv_nsec = 185776}
timeJiff = 0
#2 0x081b7160 in AllPCSX2Threads::LoadWithCurrentTimes (this=0xa2a2060) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:31
No locals.
#3 0x081b7314 in DefaultCpuUsageProvider::Reset (this=0xa2a2058) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:64
i = 0
#4 0x081b72b9 in DefaultCpuUsageProvider::DefaultCpuUsageProvider (this=0xa2a2058)
at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:58
No locals.
#5 0x081b7c24 in CpuUsageProvider::CpuUsageProvider (this=0xa29d274) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProviderLnx.cpp:27
No locals.
#6 0x081d64e0 in GSFrame::GSFrame (this=0xa29d058, parent=0xa1ceb60, title=...) at /home/dave/pcsx2-read-only/pcsx2/gui/FrameForGS.cpp:378
No locals.
#7 0x081a6199 in Pcsx2App::OpenGsPanel (this=0xa05a000) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:831
gsFrame = 0x0
__PRETTY_FUNCTION__ = "void Pcsx2App::OpenGsPanel()"
draw_window = 0x0
XDisplay = 0x8480808
child_window = 0x0
Xwindow = 140193672
#8 0x081a7a10 in Pcsx2AppMethodEvent::InvokeEvent (this=0xb1348e08) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:217
No locals.
#9 0x083055fd in pxActionEvent::_DoInvokeEvent (this=0xb1348e08)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:447
__PRETTY_FUNCTION__ = "virtual void pxActionEvent::_DoInvokeEvent()"
#10 0x083064fc in wxAppWithHelpers::OnInvokeAction (this=0xa05a000, evt=...)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:658
No locals.
#11 0x081a50fd in Pcsx2App::HandleEvent (this=0xa05a000, handler=0xa05a000, func=
(void (wxEvtHandler::*)(wxEvtHandler *, wxEvent &)) 0x83064e4 <wxAppWithHelpers::OnInvokeAction(pxActionEvent&)>, event=...)
at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:562
No locals.
#12 0x081a50bb in Pcsx2App::HandleEvent (this=0xa05a000, handler=0xa05a000, func=
(void (wxEvtHandler::*)(wxEvtHandler *, wxEvent &)) 0x83064e4 <wxAppWithHelpers::OnInvokeAction(pxActionEvent&)>, event=...)
at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:556
No locals.
#13 0xb7f4db8a in wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) ()
from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#14 0xb7f4dfd0 in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#15 0xb7f4e0bc in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#16 0x08305378 in wxAppWithHelpers::ProcessEvent (this=0xa05a000, evt=...)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:384
__PRETTY_FUNCTION__ = "virtual bool wxAppWithHelpers::ProcessEvent(wxEvent&)"
#17 0xb7f4dac8 in wxEvtHandler::ProcessPendingEvents() () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#18 0xb7eb8749 in wxAppConsole::ProcessPendingEvents() () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#19 0xb7ce12c2 in wxAppBase::ProcessIdle() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
No symbol table info available.
#20 0xb7c380ac in ?? () from /usr/lib/libwx_gtk2u_core-2.8.so.0
No symbol table info available.
#21 0xb7927e10 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#22 0xb792c4d9 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
No symbol table info available.
#23 0xb792cce0 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#24 0xb792d3ab in g_main_loop_run () from /lib/libglib-2.0.so.0
No symbol table info available.
#25 0xb74985a9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#26 0xb7c4f6ea in wxEventLoop::Run() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
No symbol table info available.
#27 0xb7ce10cf in wxAppBase::MainLoop() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
No symbol table info available.
#28 0xb7ce09bf in wxAppBase::OnRun() () from /usr/lib/libwx_gtk2u_core-2.8.so.0
No symbol table info available.
#29 0xb7eefc23 in wxEntry(int&, wchar_t**) () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#30 0xb7eefcd6 in wxEntry(int&, char**) () from /usr/lib/libwx_baseu-2.8.so.0
No symbol table info available.
#31 0x081a3de9 in main (argc=1, argv=0xbfffed64) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:47
No locals.
(gdb)
gregory....
good jobs. One small question, what is the line 101 of /home/dave/pcsx2-read-only/common/src/Utilities/Linux/LnxThreads.cpp in your side ?
dubigr...
int err = pthread_getcpuclockid(m_native_id, &cid);
gregory....
Ok it crashes inside pthread_getcpuclockid which is not normal.
Which version of pthread and libc6 do you have exactly?
dubigr...
Um, you mean glibc? 2.12.1 in this case.
gregory....
Yes that remind me that debian uses eglibc and not glibc. Anyway it is not too old. Hum I have no clue. Do you have a 32bits or a 64bits distribution?
Could you try to install debug package related to glibc and pthread? Then redo a gdb backtrace?
dubigr...
I'm using 32 bit version.
After installing debug packages:
[[email protected] bin]$ gdb ./pcsx2-dbg
GNU gdb (GDB) 7.1-6.mga1 (Mageia release 1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/dave/pcsx2-read-only/bin/pcsx2-dbg...done.
(gdb) run
Starting program: /home/dave/pcsx2-read-only/bin/pcsx2-dbg
[Thread debugging using libthread_db enabled]
Detaching after fork from child process 11407.
Detaching after fork from child process 11408.
Interface is initializing. Entering Pcsx2App::OnInit!
Applying operating system default language...
Detaching after fork from child process 11409.
Detaching after fork from child process 11410.
Detaching after fork from child process 11411.
Command line parsing...
Command line parsed!
[New Thread 0xb46efb70 (LWP 11412)]
(UserMode) Found portable install ini @ /home/dave/pcsx2-read-only/bin/portable.ini
Detaching after fork from child process 11416.
[New Thread 0xb3c2cb70 (LWP 11417)]
[New Thread 0xb32ffb70 (LWP 11418)]
[Thread 0xb32ffb70 (LWP 11418) exited]
(pcsx2-dbg:11271): Gtk-CRITICAL **: IA__gtk_widget_set_colormap: assertion `GDK_IS_COLORMAP (colormap)' failed
[New Thread 0xb32ffb70 (LWP 11430)]
Program received signal SIGSEGV, Segmentation fault.
0xb7104632 in pthread_getcpuclockid () from /lib/i686/libpthread.so.0
Missing debug package(s), you should install: atk1.0-debug-1.32.0-2.mga1.i586 cairo-debug-1.10.2-3.mga1.i586 fontconfig-debug-2.8.0-5.mga1.i586 freetype2-debug-2.4.6-0.1.mga1.tainted.i586 gcc-debug-4.5.2-4.mga1.i586 gdk-pixbuf2.0-debug-2.22.1-3.mga1.i586 gtk+2.0-debug-2.24.4-1.mga1.i586 jbigkit-debug-2.0-5.mga1.i586 libalsa2-debug-1.0.24.1-3.mga1.i586 libcanberra-debug-0.27-2.mga1.i586 libice-debug-1.0.7-2.mga1.i586 libjpeg-debug-8b-5.mga1.i586 libogg-debug-1.2.2-1.mga1.i586 libpng-debug-1.2.44-3.mga1.i586 libsm-debug-1.2.0-2.mga1.i586 libtiff-debug-3.9.5-1.mga1.i586 libtool-debug-2.4-3.mga1.i586 libvorbis-debug-1.3.2-1.mga1.i586 libxau-debug-1.0.6-1.mga1.i586 libxcb-debug-1.7-1.mga1.i586 libxcomposite-debug-0.4.3-1.mga1.i586 libxcursor-debug-1.1.11-1.mga1.i586 libxdamage-debug-1.1.3-1.mga1.i586 libxdmcp-debug-1.1.0-1.mga1.i586 libxext-debug-1.2.0-2.mga1.i586 libxfixes-debug-5.0-1.mga1.i586 libxi-debug-1.4.2-1.mga1.i586 libxinerama-debug-1.1.1-2.mga1.i586 libxml2-debug-2.7.8-9.1.mga1.i586 libxrandr-debug-1.3.1-2.mga1.i586 libxrender-debug-0.9.6-1.mga1.i586 libxxf86vm-debug-1.1.1-2.mga1.i586 oxygen-gtk-debug-1.0.4-3.mga1.i586 pango-debug-1.28.4-1.mga1.i586 pcre-debug-8.12-3.mga1.i586 pixman-debug-0.20.2-1.mga1.i586 portaudio-debug-19-16.mga1.i586 zlib-debug-1.2.5-3.mga1.i586
(gdb) backtrace full
#0 0xb7104632 in pthread_getcpuclockid () from /lib/i686/libpthread.so.0
No symbol table info available.
#1 0x082f12d1 in Threading::pxThread::GetCpuTime (this=0x9ea3400)
at /home/dave/pcsx2-read-only/common/src/Utilities/Linux/LnxThreads.cpp:101
cid = -91442
err = 0
ts = {tv_sec = 0, tv_nsec = 191427}
timeJiff = 0
#2 0x081b7160 in AllPCSX2Threads::LoadWithCurrentTimes (this=0xa1352b0) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:31
No locals.
#3 0x081b7314 in DefaultCpuUsageProvider::Reset (this=0xa1352a8) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:64
i = 0
#4 0x081b72b9 in DefaultCpuUsageProvider::DefaultCpuUsageProvider (this=0xa1352a8)
at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProvider.cpp:58
No locals.
#5 0x081b7c24 in CpuUsageProvider::CpuUsageProvider (this=0xa316bbc) at /home/dave/pcsx2-read-only/pcsx2/gui/CpuUsageProviderLnx.cpp:27
No locals.
#6 0x081d64e0 in GSFrame::GSFrame (this=0xa3169a0, parent=0xa1ced48, title=...) at /home/dave/pcsx2-read-only/pcsx2/gui/FrameForGS.cpp:378
No locals.
#7 0x081a6199 in Pcsx2App::OpenGsPanel (this=0xa05a000) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:831
gsFrame = 0x0
__PRETTY_FUNCTION__ = "void Pcsx2App::OpenGsPanel()"
draw_window = 0x0
XDisplay = 0x8480808
child_window = 0x0
Xwindow = 140193672
#8 0x081a7a10 in Pcsx2AppMethodEvent::InvokeEvent (this=0xb1348e08) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:217
No locals.
#9 0x083055fd in pxActionEvent::_DoInvokeEvent (this=0xb1348e08)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:447
__PRETTY_FUNCTION__ = "virtual void pxActionEvent::_DoInvokeEvent()"
#10 0x083064fc in wxAppWithHelpers::OnInvokeAction (this=0xa05a000, evt=...)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:658
No locals.
#11 0x081a50fd in Pcsx2App::HandleEvent (this=0xa05a000, handler=0xa05a000, func=
(void (wxEvtHandler::*)(wxEvtHandler *, wxEvent &)) 0x83064e4 <wxAppWithHelpers::OnInvokeAction(pxActionEvent&)>, event=...)
at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:562
No locals.
#12 0x081a50bb in Pcsx2App::HandleEvent (this=0xa05a000, handler=0xa05a000, func=
(void (wxEvtHandler::*)(wxEvtHandler *, wxEvent &)) 0x83064e4 <wxAppWithHelpers::OnInvokeAction(pxActionEvent&)>, event=...)
at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:556
No locals.
#13 0xb7f4db8a in wxEvtHandler::ProcessEventIfMatches (entry=..., handler=0xa05a000, event=...) at src/common/event.cpp:1239
tableId1 = <value optimized out>
tableId2 = <value optimized out>
#14 0xb7f4dfd0 in wxEvtHandler::SearchDynamicEventTable (this=0xa05a000, event=...) at src/common/event.cpp:1421
handler = <value optimized out>
entry = <value optimized out>
#15 0xb7f4e0bc in wxEvtHandler::ProcessEvent (this=0xa05a000, event=...) at src/common/event.cpp:1297
---Type <return> to continue, or q <return> to quit---
No locals.
#16 0x08305378 in wxAppWithHelpers::ProcessEvent (this=0xa05a000, evt=...)
at /home/dave/pcsx2-read-only/common/src/Utilities/wxAppWithHelpers.cpp:384
__PRETTY_FUNCTION__ = "virtual bool wxAppWithHelpers::ProcessEvent(wxEvent&)"
#17 0xb7f4dac8 in wxEvtHandler::ProcessPendingEvents (this=0xa05a000) at src/common/event.cpp:1196
event = {m_ptr = 0xb1348e08}
n = 3
#18 0xb7eb8749 in wxAppConsole::ProcessPendingEvents (this=0xa05a000) at src/common/appbase.cpp:294
handler = 0xa05a000
#19 0xb7ce12c2 in wxAppBase::ProcessIdle (this=0xa05a000) at src/common/appcmn.cpp:435
event = warning: can't find linker symbol for virtual table for `wxIdleEvent' value
warning: found `wxMutexInternal::Unlock()' instead
{<wxEvent> = {<wxObject> = {_vptr.wxObject = 0xb7f4b1cb, static ms_classInfo = {m_className = 0xb7f6e9c4 L"wxObject",
m_objectSize = 8, m_objectConstructor = 0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x0, m_next =
0xb7fb8b04, static sm_classTable = 0xa036008}, m_refData = 0xa043220}, m_eventObject = 0xbfffe9a8, m_eventType = -1073747540,
m_timeStamp = -1223671935, m_id = -1225633804, m_callbackUserData = 0xb7f4b1b6, m_propagationLevel = -1208291340, m_skipped =
22, m_isCommandEvent = 178, static ms_classInfo = {m_className = 0x0, m_objectSize = 0, m_objectConstructor = 0, m_baseInfo1 = 0x0,
m_baseInfo2 = 0x0, static sm_first = 0x0, m_next = 0x0, static sm_classTable = 0xa036008}}, m_requestMore = 244,
static sm_idleMode = wxIDLE_PROCESS_ALL, static ms_classInfo = {m_className = 0xb7daf6c0 L"wxIdleEvent", m_objectSize = 36,
m_objectConstructor = 0xb7c28220 <wxIdleEvent::wxCreateObject()>, m_baseInfo1 = 0x85af560, m_baseInfo2 = 0x0,
static sm_first = 0x0, m_next = 0xb7e68768, static sm_classTable = 0xa036008}}
needMore = <value optimized out>
#20 0xb7c380ac in wxapp_idle_callback () at src/gtk/app.cpp:213
idleID_save = 319
moreIdles = <value optimized out>
lock = warning: can't find linker symbol for virtual table for `wxMutexLocker' value
{m_isOk = 68, m_mutex = @0x1}
#21 0xb7927e10 in g_idle_dispatch (source=0xb13487e8, callback=0xb7c38020 <wxapp_idle_callback(gpointer)>, user_data=0x0) at gmain.c:4545
No locals.
#22 0xb792c4d9 in g_main_dispatch (context=0xa05d080) at gmain.c:2440
dispatch = 0xb7927df0 <g_idle_dispatch>
was_in_call = 0
user_data = 0x0
callback = 0xb7c38020 <wxapp_idle_callback(gpointer)>
cb_funcs = 0xb79dc33c
cb_data = 0xb296d448
current_source_link = {data = 0xb13487e8, next = 0x0}
need_destroy = <value optimized out>
source = 0xb13487e8
current = 0xa2162c8
i = <value optimized out>
#23 g_main_context_dispatch (context=0xa05d080) at gmain.c:3013
No locals.
#24 0xb792cce0 in g_main_context_iterate (context=0xa05d080, block=1, dispatch=1, self=<value optimized out>) at gmain.c:3091
max_priority = 2147483647
timeout = 83
some_ready = 1
nfds = <value optimized out>
allocated_nfds = <value optimized out>
fds = <value optimized out>
#25 0xb792d3ab in g_main_loop_run (loop=0xa225748) at gmain.c:3299
__PRETTY_FUNCTION__ = "g_main_loop_run"
---Type <return> to continue, or q <return> to quit---
#26 0xb74985a9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#27 0xb7c4f6ea in wxEventLoop::Run (this=0xa204e48) at src/gtk/evtloop.cpp:76
exitcode = <value optimized out>
#28 0xb7ce10cf in wxAppBase::MainLoop (this=0xa05a000) at src/common/appcmn.cpp:312
mainLoop = {<wxEventLoopPtr> = {m_ptr = 0xa204e48}, m_pp = 0xa05a040, m_pOld = 0x0}
#29 0xb7ce09bf in wxAppBase::OnRun (this=0xa05a000) at src/common/appcmn.cpp:367
No locals.
#30 0xb7eefc23 in wxEntry ([email protected], argv=0xa0490d8) at src/common/init.cpp:448
initializer = {m_ok = true}
#31 0xb7eefcd6 in wxEntry ([email protected], argv=0xbfffed64) at src/common/init.cpp:460
No locals.
#32 0x081a3de9 in main (argc=1, argv=0xbfffed64) at /home/dave/pcsx2-read-only/pcsx2/gui/AppMain.cpp:47
No locals.
(gdb)
gregory....
Hum, it is a shame but I think I will remove this feature (for the moment at least). I will add a define so packagers can easily re-enable this feature for their distributions.
dubigr...
I tried again, this time on the latest Mandriva release, glib 2.13 and using various kernels. Don't know what else to try.
Crashed again at pthread_getcpuclockid.
Yeah, pitty :(
dubigr...
But I'm curious about how (and if) it works on other distros....
No other Linux freak around here tested this revision ? :)
gregory....
Hum actually it is the same on fedora and archlinux.
Anyway I got a last idea. Could you try this new patch, it skips timing when the thread id is not defined. Well I'm aware that the patch is not clean, just add the following line
"if (!m_native_id) return 0;" at the begin of the function Threading::pxThread::GetCpuTime()
--- pcsx2.snapshot-4863.orig/common/src/Utilities/Linux/LnxThreads.cpp
+++ pcsx2.snapshot-4863/common/src/Utilities/Linux/LnxThreads.cpp
@@ -81,9 +81,9 @@
if (err) return 0;
struct timespec ts;
- clock_gettime(cid, &ts);
+ err = clock_gettime(cid, &ts);
+ if (err) return 0;
unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond();
- //unsigned long timeJiff = (ts.tv_sec*GetTickFrequency() + ts.tv_nsec / 1000)/ GetTickFrequency() * GetThreadTicksPerSecond();
return timeJiff;
}
@@ -94,15 +94,16 @@
// m_native_handle to implement it. Return value should be a measure of total time the
// thread has used on the CPU (scaled by the value returned by GetThreadTicksPerSecond(),
// which typically would be an OS-provided scalar or some sort).
+ if (!m_native_id) return 0;
clockid_t cid;
int err = pthread_getcpuclockid(m_native_id, &cid);
if (err) return 0;
struct timespec ts;
- clock_gettime(cid, &ts);
+ err = clock_gettime(cid, &ts);
+ if (err) return 0;
unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond();
- //unsigned long timeJiff = (ts.tv_sec*GetTickFrequency() + ts.tv_nsec / 1000)/ GetTickFrequency() * GetThreadTicksPerSecond();
return timeJiff;
}
dubigr...
Working!
Here is a screen-shot (running as root and at a very low speed [Debug version])
http://img692.imageshack.us/img692/7329/snapshot16v.png
:)
gregory....
Ah good news. The first part of the pthread_getcpuclockid function check the validity of the thread ID. I bet eglibc return an expected failure and glibc crash... Anyway I will commit it. Thanks very much for the testing.
By the way, never run standard application with root user.
dubigr...
Yes, the root thing. Fact is I tried all I could think of, including compiling/running as root in hope that maybe it will work this way.
Anyway, I just compiled the (as my normal user) Release version and is working OK (and much faster :) )
Nice nice work !
gregory....
A bad idea in my opinion. Anyway the fix is now commited in trunk.

Revision 4881

[No log message]
invisgh...
Various game fixes for Devil May Cry 3, Spyro, Nano Breaker and Kunoichi I assume? Any Before/After pictures?
shadowladyngemu
ehr... just some CRCs for those GSdx hackfixes, the nanobreaker/kunoichi ones working with PAL50 too now.
GameDB setting changes for SOCOM II, Vampire Night, Fugitive Hunter, Harry Potter and the Sorcerer's Stone, Need for Speed Most Wanted, Pac-man World Rally, Snoopy vs. The Red Baron, Tom Clancy's Ghost Recon - Advenced Warfighter, Reservoir Dogs, Stuntman - Ignition and some status changes for other games.

Revision 4882

Fixed Virtual on Marz (or Mars) which does an 8 bit DMAC_STAT write.
This broke in r3705, which handles the write instead of ignoring it.
ramapcsx2
It broke in r3704.

Revision 4883

Removed the silly log check and fixed the revision numbers from last commit.
refraction
Nice job finding it, however you might find that in that case the dmac stat should be clearing that bit from the register, rather than ignoring it.
So yeh writing to it was definately the wrong course of action (dont know why we weren't checking for this tbh!) INTC Stat/mask will need doing too.
ramapcsx2
It must have gotten lost when Jake redid all the handlers in r3704.
It's conceivable to be a simple oversight.
Mind if you did those changes you suggested? ;)
refraction
Sure mate, will do them now :)
ramapcsx2
Ta :p

Revision 4884

DMAC: Well done Rama for finding this in r4882! Fixed it up a bit to work as
intended + added INTC which should have also been there.
ramapcsx2
Looks extensive, thanks :p
refraction
Yeh the different parts of the register act differently, so its a bit off a pain ;p
naik22...
now i got 1000% Speed fps bonus on my Intel 4004
refraction
Marking negative as there is a bug

Revision 4885

Get some PSX mode logging to work again. We currently freeze with it reading the
GPU_STATUS register as all 0.
naik22...
how about that..that PSX word reminds me of Play Station 1. When will PCSX2 emulate PS1?
Cardboar...
Probably not for a long while, but any sign of it is nice to see =P
8924th
given how PS1 emulators all suffer from a serious drawback (whether that means like restarting all the time to change settings (ePSXe) or randomly crashing (PSXeven)), i think it's a must :P

Revision 4886

Fixed a bug in r4884, simplified implementation and added equivalent code to
hwWrite16

Revision 4887

Oops.
refraction
Yeh that works i guess ;p
sudonim1
FWIW the bug was in the INTC_MASK case, you should be able to spot it easily.
refraction
The bug?
refraction
as yes haha, silly me

Revision 4888

Let's keep the warning log in :p

Revision 4889

Vif/Gif: Hack for Hotwheels World Race, should be pretty harmless at it's very
rare conditions.
(Note: Game runs better on ZeroGS than GSDX)
francesc...
when someone will start working on GSDX? after the release of spu-x 2.0 and the speedhack for multi-core support i think GSDX is the weakest part of the emulator and should be improved.
godofdr...
i think cdvdgigaherz is the weakest part of the emu i think it most be completed becose there is nothing allmost to do there from only make the plugin to stop doing "reading block"
anyway good job!
and sorry for my bad english.
refraction
if you stop it reading blocks, it stops working xD

Revision 4890

Morphed the Hotwheels hack into a gamefix to be safe!
invisgh...
Haven't seen a new one of those for a while! Almost forgot they existed, but then again that's a good thing right?
refraction
That is a good thing, however if you paid attention there was another one of those a few days ago ;p
invisgh...
Ohhhh, I saw that but I didn't realize it added stuff to that list of gamefixes. Didn't look through the changes like I did with this one. :) Learning about the way it works by seeing how changes are done. Alyways neat to see how programs work
8924th
a hackfix for the fog in Crash games would also come in handy. The skipdraw gsdx hack messes up some other elements when used to remove the fog. But yay! often updates! :D

Revision 4891

SaveState backup: 1. Now enabled by default. 2. Now uses rename instead of copy
(faster, more resilient to corruptions)

Revision 4892

GSDX: Show message on console at capture start/end.

Revision 4893

GSdx: Shadow of the colossus: crc hack: disable sky (extra) bloom (identical
effect as Eliot's special SoTC GSdx build). Thanks to ShadowLady for the help.
Line.E...
Thanks for looking at SotC, guys !)) It is a brilliant game !)) A neverdying classic :)
But I have a question - does this CRC hack works allways or just when autopatches activated ?
I like previous overblooming in this game, it's kind a fake HDR )) Real console doesn't have this...
avihal
For now, all GSdx CRC hacks are always activated. We might add an ini-file option in the future to deactivate them.
As for this specific hack, while the bloom is a nice effect indeed, GSdx cannot emulate it properly (at the time of writing), resulting in much more bloom than the original, therefore making it much harder to play (the light rays from the sword when looking for the next colossus are very hard to notice).
shadowladyngemu
"while the bloom is a nice effect indeed, GSdx cannot emulate it properly (at the time of writing)"
works fine in software mode and high resolutions in hardware (like 3x native res)
The code was disabled cause this removes the bloom effect entirely and the "overbloom" problem only happens in low resolutions... with the code enabled even those without the problem now are forced to have no bloom at all which is not the best choice.
f8708...
I like the hack..
I still feel overbloom in 3x native res
andutrache
i run at x4 resolution and i also get the overbloom.
pepo...
like shadow said: We now are forced to have no bloom at all which is not the best choice...
avihal
[email protected], the thing is, that without this hack, everyone is forced to play with excessive bloom (except for software mode), or use a special modified build which might not be maintained forever. But with this hack and the change of r4894, everyone can play either with or without this hack. So everyone should be happy.
eliotfur
Wow... Finally my hack made its way into CRC...
I only have one question:
My hack skips only part of TBP0=3fc0 processing in the GS_FRAME tag, but not the entire processing... I'll definitely test your approach, but I just wanted to ask:
Doesn't your hack also disable "Black light", "Creatures of darkness", and similar effects?.. I remember those effects also disappear when I disabled TBP0=3fc0 completely...
BTW, I always wondered what that "skip = " variable really mean...
eliotfur
Well... I just compiled and tested it... It looks identical to my hack indeed...
*Good job!..* d^__^b
Note for players: To make shadows look right in "higher than Native" (2x, 3x, 4x), you should also enable Offset hack in Gsdx settings...
eliotfur
shadowladyngemu:
"works fine in... high resolutions in hardware (like 3x native res)"
It does, until you enable the Offset hack to fix shadows positioning... Offset hack adds thin border to the top and left sides of the screen which emit a lot of bloom when it goes into post-processing...
Tastes differ, but I prefer no bloom at all... Especially at the 13th Colossus stage (Phalanx) in the desert, when the whole screen goes white and you have no idea where to aim your bow...
avihal
Eliot, this an old crc hack which was commented out. I just re-enabled part of it (the rest was removing buggy volumetric shadows IIRC), with the help of shadow lady (crc hacks are not really my thing...). Also, I don't recall how it behaves with the shadow creatures.. I hope it doesn't break them.
As for your own hack, it was hurting GT4, FYI.
andutrache
his (Eliot's) hack was for SotC, why the @#$% would you use it for other games like GT4 makes no sense to me.
The best solution (i think) is for someone to get the depth textures working properly in GSDX HW modes, but i'm not the one doing it so i shut up now :).

Revision 4894

GSdx: CRC hacks: allow exclusion of some/all hacks via "hidden" ini pref
CrcHacksExclusions.
The list is case insensitive and order insensitive.
E.g. Disable all CRC hacks: CrcHacksExclusions=all
E.g. Disable hacks for these CRCs: CrcHacksExclusions=0x0F0C4A9C, 0x0EE5646B,
0x7ACF7E03
avihal
Clarification: GSdx CRC hacks are enabled by default. This patch allow to disable some/all of them. E.g., for people who don't like the Shadow of the colossus hack from r4893.
miser...
Nice, no more need for custom build to see what exactly was hackfixed:).
konaj...
should really port all the crc hack fixes to an external file that way people could add/modify games on the fly and possibly come up with better fixes rather then having to recompile the dll each time to test each change.
.....
but i guess it would be an issue with all the extra code needed to get it working properly (if it could be done at all)
refraction
Konaj: That wouldnt be a bad idea. We used to have it in the pnach files for zerogs, guess we could have a similar thing in the gameindex.dbf for gsdx=1,2,3,4 whatever the conditions, or have a subsectiony thing.. would be cool.
avihal
Konaj, ref: While I'm not familiar with the ZeroGS pnach file format, the GSdx crc hacks are a bit more complicated than games db patches, since they're actual c++ code, with possibly unique logic for each game, etc. So it would be quite hard to put them into a fixed structure of hack info IMO. Also, for the same reason, I'm not sure it should be available for "generic user hacking".
That being said, creating crc hacks is a tedious process, since GSdx has to be recompiled, re-loaded, etc.
So, I created an experimental system that allows to develop and modify crc hacks in real time (while pcsx2/gsdx is running) and watch in real time how a change affects the display.
This system is based on a hack dll file, which contains the crc hack logic, and this file is watched by gsdx and (re)loaded whenever it changes. To compile this hack dll file, I use tcc (tiny C Compiler - less than 200k) and a batch file which watches the c source file, and recompiles it to the dll whenever it changes (recompiling takes MUCH less than 1s), which causes GSdx to automatically reload the hack, and voila! :P
I've created a small package which contains everything (tcc, the watch batch file, etc). The instructions for usage and integration with GSdx are at the bottom of DynaCrcHack.c
Check it out, let me know what you think: http://www.mediafire.com/?2wnmvznq868ois5
avihal
Dynamic CRC hack v1.2:
- Better integration with GSdx
- Bugfix where not all values were passed correctly to the dll
http://www.mediafire.com/?o8a0wbwxvo6qxxv
konaj...
thanks, this is great now can do on the fly testing :)
yxml...
Dynamic CRC hack will slow down the pcsx2
avihal
yxml..., the slow-down is too small to notice (tested: less than 1%), but regardless, this mode is for developing crc hacks, not for production usage.
miser...
Usefull tool, much better and faster than building X GSdx versions just to check a few things. Only bad thing with it, that it didn't existed before. :P

Revision 4895

GSdx: bypass (prevent) some crashes.
Important: this is not a fix of the cause of the crashes, it just bypasses cases
of sure crash. Once that spot is bypassed, things can go wrong elsewhere.
Generally, however, things just continue normally. E.g. GT4 (camera changes),
Tourist Trophy (camera changes), MGS3 (codec screen when CRC hacks are disabled)
and probably more - now don't crash anymore, even at high resolution (but might
still get some slowdowns).
andutrache
+1 because i hate when GSDX crashes :)
andutrache
also Unreal Tournament doesn't crash anymore when exiting loading screens
refraction
Gt and tourist didn't crash for me anyway, those with lots of vram were pretty safe :p gj anyway
avihal
ref, I'm with 896M vram, and on x2 res it sometimes crash. Possibly also that win XP is less resilient than 7 to vram abuse. ShadowLady tested on win 7 and this patch prevented some of the crashes on her system. Regardless though, this patch just bypass few NULL dereferences.
refraction
yea :) at least now it gives some means of a break point so hopefully the null references can be traced :) I didnt have any issues as such like that, but not to say they arent there, well done :)
marcos....
I know it's not about this revision but recently I started playing Atelier Iris 2 and I noticed that sometimes while playing, when I press the button F1 to save state the emulator just freezes leaving only GS usage at about 50%. I tested all revisions from r4866 and the problem still exists. Checked on Grandia III to see if this was UI issue, but this only happens on Atelier Iris 2. Note that it happens during the second time I press F1, the first time works correctly.
avihal
marcos.... This page here is dedicated to discussions on this commit and related issues.
please repost at the forum, and preferably also state the latest working revision (you can try older builds here: http://buildbot.orphis.net/pcsx2/ ). Or open a new bug ( https://code.google.com/p/pcsx2/issues/list ).
Thanks.
konaj...
great the game "Stolen" no longer crashes pcsx2 at the menu, (although the game still runs horrible 1fps :), at least it no longer crashes)
http://i51.tinypic.com/t8vxo2.jpg
Syst3mSh0ck
Excellent! GSdx was in need of some love, SPU2-X has been getting all the attention recently. Does gabest actually help you guys or has he basically handed off responsibility for maintaining it to the project? It's a complex beast and it seems like only he would know how to fix certain things offhand, when most other people would have to go through a lot of study!
Anyway, nice work Avihal :)
Seinfeld...
One of the games that crashed more for me, was Dropship still haven't tested since 0.9.7, yellowish blocks appeared on the image than crash, the console was swamped with messages.
Strife.S...
Slackware way
Strife.S...
if(!rt || !ds)
{
ASSERT(0);
return;
}
jfre1...
If your so all knowing then enlighten us with your better code solution
avihal
Strife.S... I'd appreciate if you could elaborate. Thanks.
actact9...
WOW the nerve of the guy saying its a the slackers way or whatever without even giving a plausible explanation about it
PS: Guys whats wrong with the Forum I all I get is this
MyBB SQL Error
MyBB has experienced an internal SQL error and cannot continue.
SQL Error:
1040 - Too many connections
Query:
[READ] Unable to connect to MySQL server

Revision 4896

Copy USBqemu from the legacy plugins folder (to preserve history)

Revision 4897

Made USBsetRAM work again. Required for the following commit.

Revision 4898

Whoops sorry the file slipped through.

Revision 4899

USBqemu:
- Upgraded some components of qemu-usb with a somewhat newer version from late
2010 (it was a recent version when I did the upgrades).
- Fixed the plugin to work with recent versions of pcsx2.
I will try to integrate the plugin into the build system tomorrow, and fix some
more issues.
nokiaqdman
Will you fix your dev9 plugin as well please?
refraction
the dev9 plugin works fine.
nokiaqdman
Which one? None of them worked except the null one that is useless.
nokiaqdman
Just to clarify
Path: D:\Emulatory\PCSX2\plugins\DEV9giga.dll
File is not a valid dynamic library.
Some kinda plugin failure: D:\Emulatory\PCSX2\plugins\DEV9giga.dll
prafull....
Finally.. After such a long wait I can chat easily online now. @ Shadowlady: Free to try some games again? ;)

Revision 4900

USBqemu: Missed a file.
andutrache
+1 for getting usb to work again
The only questions are : What games use this / What can be used with it ?
I think there was a buzzer game that used this if i remember correctly.
shadowladyngemu
This is for USB keyboard emulation, most online games would be able to use it.
I think the buzzer plugin was a mod from someone else and would need a buzzer for the buzz! games anyway.
andutrache
Nice !!!
Just another quick question : Does a USB mouse work on any games ?
I have never tried one.
gigaherz
I think so. At the very least, ps2linux had mouse support. But the plugin doesn't emulate a mouse so it wouldn't work ;P
For mouse emulation I would need to do like VM software and make a mouse capture system where you click into the GS window and the mouse gets "held" into the window until you release it with some specific key combo. It's somewhat complicated and I'm too lazy to code it.
andutrache
i see, well i can't code it, and i can't tell you to code it either, if someone will code it it's good else i'll live without it.
refraction
andutrache: What would you use mouse for? apart from linux, i don't really know anything that uses the usb mouse... Maybe games like Age of Empires maybe?
gigaherz
USB Mouse compatible games – Age of Empires II, Armored Core 2, Armored Core 3, ATV Quad Power Racing 2, Deus Ex, Dirge of Cerberus: Final Fantasy VII, EverQuest Online Adventures: Frontiers, Final Fantasy XI, Half-Life (video game),[41] Myst III: Exile, Red Faction 2, Resident Evil 4, Sky Odyssey, Soldier of Fortune: Gold Edition, Star Trek Elite Force, Tokyo Xtreme Racer 3, Unreal Tournament.[42]

Revision 4901

USBqemu: Work around the IRQ double-throw spam by having a min number of cycles
between IRQ calls. 100% guaranteed hackyness, but I can still type in MH so it
will do until I can look at it without my eyes closing against my will.
Also make the project output into the plugins folder.
refraction
well done xD

Revision 4902

USBqemu: Integrate into the build system for vs2010. Refactor the config stuff
to use a system based on a modified SPU2-X CfgHelpers.cpp.
shadowladyngemu
seems to be working just fine ^^
shadowladyngemu
except if you have the plugin selected and try to boot a different game without closing PCSX2... doesn't seem to like that
gigaherz
Eh yeah, the plugin doesn't handle resets or savestates too well ;P

Revision 4903

Whoops.
godofdr...
good work, but what that plugin do anyway?
gigaherz
It emulates USB devices. At the moment it only emulates a keyboard, but I want to extend it. The emulation core (OHCI device) and USB HUB device are taken from the Qemu PC emulator, which is why I named the plugin USBqemu, but I coded the keyboard device myself.
godofdr...
so tell me if its better then the usbnull driver plugin?
Imprison...
Great! Hopefully the Code Breaker files can be used with this plugin!
gigaherz
Comment by [email protected], Today (60 minutes ago)
so tell me if its better then the usbnull driver plugin?
--
What do you mean better? usbnull is NULL, doesn't emulate an usb at all!
This is better if you WANT usb. If you don't need usb then its not better, but not worse either.
There's only a few games that support an usb keyboard in the ps2.
--
Comment by [email protected], Today (49 minutes ago)
Great! Hopefully the Code Breaker files can be used with this plugin!
--
What do you mean? I don't think CB "files" are input using a keyboard...
Imprison...
@gigaherz: So the purpose of this plugin is only for keyboard support? That's a little bit sad to hear +.+. I thought it will also act as a USB to help pcsx2 read external files. This will be really useful since the Code Breaker has stopped developing for a long time ago and now it requires an external USB to update the database.
gigaherz
Coding a virtual MSD device is in the TODO list, but its one of the most complex kinds of devices you can find on USB, and I don't have the time to work on it.
I have been looking at the MSD device from qemu, but it seems to rely on many other parts of qemu for the low-level implementation (handling SCSI-based protocol that's used in USB disk devices, and the internals of the devices), and with the limited time I have at the moment, it would take too long to fix, and it's very hard for me to stop doing something and then start again.
I will see what I work on next, but it won't be until next weekend, and by then I may have something else in my head, I don't know yet.
Imprison...
@gigaherz: Thank you for taking time to explain that. Hope the MSD device will be supported in some day. Anyway, it's still a very good deal to have the functions of pcsx2 get richer.

Revision 4904

USBqemu: upgrade qemu core from version 0.12.5 to 0.15. Now its up to date with
the latest qemu release.
gigaherz
Forgot to exclude usb-hub.cpp from release build. Commit in a few mins.

Revision 4905

USBqemu: Fix release build.

Revision 4906

USBqemu: Forgot Devel exists ... xD
godofdr...
just take your time and make a good release you dont have too worry about us
and thanks for your hard work and it will be good for the emu if you will Stay a while for upgrading another plugins like gsdx.
and thanks for your good work!
maksre...
Thank you and good luck in completing the work on the emulator

Revision 4907

USBqemu: Some small changes to init & savestates. The savestates are still
incomplete though.

Revision 4908

pcsx2:linux: disable thread timing information. It seems to work only with
eglibc (debian/ubuntu)

Revision 4909

linux: clean various linux file into 1 directory
cmake: automatically install desktop/doc/xpm file in package mode as requested
by Rafael
debian: align on latest change
rafael.f...
Forgot to mention the man page /trunk/bin/docs/pcsx2.man... Can you add it as well?
Thanks!
gregory....
where are installed the man page on your system? Who is in charge of zip it?
Mine is here /usr/share/man/man1/pcsx2.1.gz
rafael.f...
The config file /etc/makepkg.conf is defaultly set to automatically compress man pages. I just have to tell PKGBUILD to move/copy/install the pcsx2.man file to /usr/share/man/man1. When the packaging task is done, it will compress to "pcsx2.1.gz"
If PCSX2's Makefile "tells" the correct dir, then I have only to do "make install".
makepkg [1] is the application responsible for compilating accordingly the PKGBUILD [2], which you already know contains all rules like cmake, make and make install.
[1] https://wiki.archlinux.org/index.php/Makepkg
[2] https://aur.archlinux.org/packages.php?ID=21899
Supe...
an error on generate_pot.sh
~/pcsx2-read-only/linux_various$ bash generate_pot.sh
pcsx2 directory not present
generate_pot.sh: line 33: return: can only `return' from a function or sourced script
common directory not present
generate_pot.sh: line 34: return: can only `return' from a function or sourced script
locales directory not present
generate_pot.sh: line 35: return: can only `return' from a function or sourced script
find: `pcsx2': No such file or directory
find: `pcsx2': No such file or directory
find: `common': No such file or directory
find: `common': No such file or directory
Generate locales/templates/pcsx2_Main.pot
xgettext: no input file given
Try `xgettext --help' for more information.
sed: can't read locales/templates/pcsx2_Main.pot: No such file or directory
Generate locales/templates/pcsx2_Iconized.pot
xgettext: no input file given
Try `xgettext --help' for more information.
sed: can't read locales/templates/pcsx2_Iconized.pot: No such file or directory
sed: can't read locales/templates/pcsx2_Main.pot: No such file or directory
sed: can't read locales/templates/pcsx2_Iconized.pot: No such file or directory
Update pcsx2_Main.po files
find: `./locales': No such file or directory
Update pcsx2_Iconized.po files
find: `./locales': No such file or directory
Compile po files, result are directly installed on bin/Langs directory
find: `./locales': No such file or directory
gregory....
Use this command instead:
bash ./linux_various/generate_pot.sh
However I need to replace return by exit. And maybe a more clear error message.

Revision 4910

pcsx2: restore linux thread timing. pthread_getcpuclockid failed to check the
validy of thread ID...
gregory....
Note: if it failed to compile with the following message
undefined reference to symbol '[email protected]@GLIBC_2.2'
edit this file common/src/Utilities/CMakeLists.txt
and add at the end: target_link_libraries(${Output} rt)
dubigr...
It compiled fine, but the bad thing is that it crashes :(
The screen appears for a second imediately crashes with :
terminate called after throwing an instance of 'Exception::CannotCreateStream'
Now don't jump on me...but it runs OK if start it as root.
(it was compiled as user)
dubigr...
If you need I'll do the gdb thing but tomorrow evening, is rather late for me :)
gregory....
The note is for fedora user. I think they use a different linker.
Well honestly it is very late for me too ;) It might be a regression with others commit. I'm still working on r4863+various patch. At least check that you have enough disk space and it have right access to all directory. Avoid gdb, just use a debug build.
dubigr...
Using a Debug build I get this in console:
MAP TLB 0: 0x70000000-> [0x00000000 0x00000000] S=0x80000000 G=1 ASID=0 Mask=0x000 EntryLo0 PFN=2000000 EntryLo0 Cache=0 EntryLo1 PFN=0 EntryLo1 Cache=0 VPN2=70000000
/home/dave/pcsx2-4910-debug/common/src/Utilities/Linux/LnxHostSys.cpp(63) : assertion failed:
Function: void SysPageFaultSignalFilter(int, siginfo_t*, void*)
Thread: EE Core
Condition: false
Message: Unhandled page fault @ 0x00000008
[00] 0x0xffffe40c
[01] 0x0xa7c62ce4
[02] 0x0xa7c4bb3e
[03] 0x0xa7c48034
[04] 0x0xa7c5057a
[05] SPU2async
[06] psxRcntUpdate() /pcsx2-4910-debug/pcsx2/IopCounters.cpp:449
[07] iopEventTest() /pcsx2-4910-debug/pcsx2/R3000A.cpp:207
[08] _cpuEventTest_Shared() /pcsx2-4910-debug/pcsx2/R5900.cpp:408
[09] recEventTest /pcsx2-4910-debug/pcsx2/x86/ix86-32/iR5900-32.cpp:380
[10] 0x0x9fab005
[11] 0x0x9fab095
[12] recExecute /pcsx2-4910-debug/pcsx2/x86/ix86-32/iR5900-32.cpp:828
[13] SysCoreThread::DoCpuExecute() /pcsx2-4910-debug/pcsx2/System/SysCoreThread.cpp:245
[14] AppCoreThread::DoCpuExecute() /pcsx2-4910-debug/pcsx2/gui/AppCoreThread.cpp:482
[15] SysCoreThread::ExecuteTaskInThread() /pcsx2-4910-debug/pcsx2/System/SysCoreThread.cpp:255
./launch_pcsx2_linux.sh: line 43: 20752 Trace/breakpoint trap ./pcsx2-dbg
[[email protected] bin]$
Since is saying something about SPU2(?) I selected instead ZeroSPU2 in configuration and the crash is gone.
Using SPU2-X again, the crash reappears.
gregory....
I update to 4910 and I do not see any issue so far. Check the log if there any strange error. Try to remove spu2x ini configuration, try others configuration. A gdb bt can help me, however it will be harder to get.
1/ you need to change the gdb signal handler with this command.
handle SIGSEGV nostop
2/ when you reach a segmentation fault, continue. There are expected.
3/ At the end you will reach the pcsx2 crash pop-up. Hit ctrl-C to get back gdb prompt
4/ then generate the backtrace (bt full)
dubigr...
Hope I did it right, but is an awful lot of text. Is it OK to paste here so much text?
http://www.mediafire.com/download.php?3n7td782r45chxh
There is something fishy with SPU-X I think.
I tried all its options but the only one that makes it work is "No Sound (emulate SPU2 only)"
Using the other sound plugins (ZeroSPU or Null) or using an older version of SPU-X (from R4839) make the crash dissapear.
[About the older 4839 version of SPU-X plugin: I still use this version because after the introduction of the Dolby prologic feature in SPU the sound never quite worked properly (it stops after few seconds).]
gregory....
Sorry I forgot to tell you to select the good thread. Well I think the easier is to use this command "thread apply all bt" (or "thread apply all bt full" but it might be a little too verbose). Try to keep gdb open.
Otherwise if you can find which revision broke spu2x. It would help a lot. With only 100 revision, it would take only 7-8 try.
gregory....
Hum I gave a quick look at revision log. There were some linux compilation failure so it won't be so easy to find the bad version. At least you can try r4856 and r4864.
dubigr...
(gdb) thread apply 5 bt full
Thread 5 (Thread 0xb32ffb70 (LWP 9596)):
#0 0xffffe424 in __kernel_vsyscall ()
No symbol table info available.
#1 0xb7105455 in [email protected]@GLIBC_2.1 () from /lib/i686/libpthread.so.0
No symbol table info available.
#2 0x082fa150 in Threading::Semaphore::Wait (this=0xb32fe844) at /home/dave/pcsx2-4910/common/src/Utilities/Semaphore.cpp:87
No locals.
#3 0x082fa336 in Threading::Semaphore::WaitNoCancel (this=0xb32fe844) at /home/dave/pcsx2-4910/common/src/Utilities/Semaphore.cpp:157
oldstate = 1
#4 0x083049aa in SynchronousActionState::WaitForResult (this=0xb32fe83c)
at /home/dave/pcsx2-4910/common/src/Utilities/wxAppWithHelpers.cpp:87
No locals.
#5 0x081f4562 in Msgbox::ShowModal (evt=...) at /home/dave/pcsx2-4910/pcsx2/gui/MessageBoxes.cpp:162
instdat = {_vptr.SynchronousActionState = 0x83a8220, m_posted = false, m_sema = {_vptr.Semaphore = 0x8480878, m_sema = {__size =
"\000\000\000\000\200\000\000\000\001\000\000\000\344\350/\263", __align = 0}}, m_exception = {m_ptr = 0x0}, return_value = 0}
#6 0x081f47e3 in Msgbox::Assertion (text=..., stacktrace=...) at /home/dave/pcsx2-4910/pcsx2/gui/MessageBoxes.cpp:213
tevt = {<BaseMessageBoxEvent> = {<pxActionEvent> = {<wxEvent> = {<wxObject> = {_vptr.wxObject = 0x8425688, static ms_classInfo = {
m_className = 0xb7f6e9c4 L"wxObject", m_objectSize = 8, m_objectConstructor = 0, m_baseInfo1 = 0x0, m_baseInfo2 = 0x0,
static sm_first = 0x0, m_next = 0xb7fb8b04, static sm_classTable = 0xa031008}, m_refData = 0x0}, m_eventObject = 0x0,
m_eventType = 10247, m_timeStamp = 0, m_id = 0, m_callbackUserData = 0x0, m_propagationLevel = 0, m_skipped = false,
m_isCommandEvent = false, static ms_classInfo = {m_className = 0x0, m_objectSize = 0, m_objectConstructor = 0,
m_baseInfo1 = 0x0, m_baseInfo2 = 0x0, static sm_first = 0x0, m_next = 0x0, static sm_classTable = 0xa031008}},
static ms_classInfo = {m_className = 0x8485b24 L"pxActionEvent", m_objectSize = 40, m_objectConstructor =
0x8304a52 <pxActionEvent::wxCreateObject()>, m_baseInfo1 = 0x85aa560, m_baseInfo2 = 0x0, static sm_first = 0x0, m_next = 0xa02c210,
static sm_classTable = 0xa031008}, m_state = 0xb32fe83c}, static ms_classInfo = {m_className =
0x84252dc L"BaseMessageBoxEvent", m_objectSize = 44, m_objectConstructor = 0x81f3f98 <BaseMessageBoxEvent::wxCreateObject()>,
m_baseInfo1 = 0xa02c238, m_baseInfo2 = 0x0, static sm_first = 0x0, m_next = 0x9e9ea8c, static sm_classTable = 0xa031008},
m_Content = {<wxStringBase> = {static npos = 4294967295, m_pchData =
0xa94a84ac L"Assertion failed: Unhandled page fault @ 0x00000008"}, <No data fields>}}, static ms_classInfo = {m_className =
0x8425374 L"pxAssertionEvent", m_objectSize = 48, m_objectConstructor = 0x81f42fe <pxAssertionEvent::wxCreateObject()>, m_baseInfo1 =
0x9e9e9f0, m_baseInfo2 = 0x0, static sm_first = 0x0, m_next = 0x9e9ea08, static sm_classTable = 0xa031008}, m_Stacktrace =
{<wxStringBase> = {static npos = 4294967295, m_pchData =
0xa94b8e8c L"/home/dave/pcsx2-4910/common/src/Utilities/Linux/LnxHostSys.cpp(63) : assertion failed:\n Function: void SysPageFaultSignalFilter(int, siginfo_t*, void*)\n Thread: EE Core\n Condition: false"...}, <No data fields>}}
#7 0x08185fe1 in AppDoAssert (origin=..., msg=0xa94b8ad0 L"Unhandled page fault @ 0x00000008")
at /home/dave/pcsx2-4910/pcsx2/gui/AppAssert.cpp:139
trace = {<wxStringBase> = {static npos = 4294967295, m_pchData =
0xb145ceac L"[00] 0x0xffffe40c", ' ' <repeats 32 times>, "\n[01] 0x0xb1ca0ce4", ' ' <repeats 32 times>, "\n[02] 0x0xb1c89b3e", ' ' <repeats 32 times>, "\n[03] 0x0xb1c86034", ' ' <repeats 32 times>, "\n"...}, <No data fields>}
dbgmsg = {<wxStringBase> = {static npos = 4294967295, m_pchData =
0xa94a808c L"/home/dave/pcsx2-4910/common/src/Utilities/Linux/LnxHostSys.cpp(63) : assertion failed:\n Function: void SysPageFaultSignalFilter(int, siginfo_t*, void*)\n Thread: EE Core\n Condition: false"...}, <No data fields>}
windowmsg = {<wxStringBase> = {static npos = 4294967295, m_pchData =
0xa94a84ac L"Assertion failed: Unhandled page fault @ 0x00000008"}, <No data fields>}
retval = 0
disableAsserts = false
#8 0x082e874c in pxOnAssert (origin=..., msg=0xa94b8ad0 L"Unhandled page fault @ 0x00000008")
at /home/dave/pcsx2-4910/common/src/Utilities/Exceptions.cpp:126
guard = {_vptr.RecursionGuard = 0x83a8230, Counter = @0xb32ffb48}
---Type <return> to continue, or q <return> to quit---
trapit = 179
#9 0x082f0466 in SysPageFaultSignalFilter (signal=11, siginfo=0xb32fe99c)
at /home/dave/pcsx2-4910/common/src/Utilities/Linux/LnxHostSys.cpp:63
lock = {_vptr.ScopedLock = 0x847d288, m_lock = 0xa02c1e0, m_IsLocked = true}
__PRETTY_FUNCTION__ = "void SysPageFaultSignalFilter(int, siginfo_t*, void*)"
#10 <signal handler called>
No symbol table info available.
#11 0xb1ca0ce4 in SndBuffer::timeStretchWrite () at /home/dave/pcsx2-4910/plugins/spu2-x/src/Timestretcher.cpp:443
progress = false
tempProgress = -1288704664
#12 0xb1c89b3e in SndBuffer::Write (Sample=...) at /home/dave/pcsx2-4910/plugins/spu2-x/src/SndOut.cpp:488
No locals.
#13 0xb1c86034 in Mix () at /home/dave/pcsx2-4910/plugins/spu2-x/src/Mixer.cpp:888
InputData = {{static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0,
Right = 0}, {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0,
Right = 0}}
VoiceData = {{static Empty = {static Empty = <same as static member of an already seen type>, Dry = {static Empty = {
static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right = 0}, Wet = {
static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right =
0}}, Dry = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right =
0}, Wet = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right =
0}}, {static Empty = {static Empty = <same as static member of an already seen type>, Dry = {static Empty = {
static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right = 0}, Wet = {
static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right =
0}}, Dry = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right =
0}, Wet = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right = 0}}}
Ext = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right = 0}
Out = {static Empty = {static Empty = <same as static member of an already seen type>, Left = 0, Right = 0}, Left = 0, Right = 0}
#14 0xb1c8e57a in TimeUpdate (cClocks=55308) at /home/dave/pcsx2-4910/plugins/spu2-x/src/spu2sys.cpp:426
dClocks = 6156
#15 0xb1c872f2 in SPU2async (cycles=9217) at /home/dave/pcsx2-4910/plugins/spu2-x/src/PS2E-spu2.cpp:535
No locals.
#16 0x08099813 in psxRcntUpdate () at /home/dave/pcsx2-4910/pcsx2/IopCounters.cpp:449
difference = 9217
c = 9216
i = 6
#17 0x080bf61e in iopEventTest () at /home/dave/pcsx2-4910/pcsx2/R3000A.cpp:206
No locals.
#18 0x080c36ad in _cpuEventTest_Shared () at /home/dave/pcsx2-4910/pcsx2/R5900.cpp:406
etest = warning: can't find linker symbol for virtual table for `ScopedBool' value
{m_boolme = 0x9df97d6}
mask = 0
#19 0x08268b0c in recEventTest () at /home/dave/pcsx2-4910/pcsx2/x86/ix86-32/iR5900-32.cpp:379
No locals.
#20 0x09fa5005 in eeRecDispatchers ()
No symbol table info available.
#21 0xb6f9ae2c in ?? () from /lib/i686/libc.so.6
No symbol table info available.
#22 0x09fa5095 in eeRecDispatchers ()
No symbol table info available.
#23 0xb32fefb8 in ?? ()
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#24 0x0826a776 in recExecute () at /home/dave/pcsx2-4910/pcsx2/x86/ix86-32/iR5900-32.cpp:828
oldstate = 0
#25 0x08239bc7 in SysCoreThread::DoCpuExecute (this=0x9e9e610) at /home/dave/pcsx2-4910/pcsx2/System/SysCoreThread.cpp:244
No locals.
#26 0x081939f8 in AppCoreThread::DoCpuExecute (this=0x9e9e610) at /home/dave/pcsx2-4910/pcsx2/gui/AppCoreThread.cpp:458
No locals.
#27 0x08239c19 in SysCoreThread::ExecuteTaskInThread (this=0x9e9e610) at /home/dave/pcsx2-4910/pcsx2/System/SysCoreThread.cpp:257
No locals.
#28 0x081939e3 in AppCoreThread::ExecuteTaskInThread (this=0x9e9e610) at /home/dave/pcsx2-4910/pcsx2/gui/AppCoreThread.cpp:452
No locals.
#29 0x082fd81b in Threading::pxThread::_try_virtual_invoke (this=0x9e9e610, method=&virtual Threading::pxThread::ExecuteTaskInThread())
at /home/dave/pcsx2-4910/common/src/Utilities/ThreadTools.cpp:545
No locals.
#30 0x082fdbf7 in Threading::pxThread::_internal_execute (this=0x9e9e610) at /home/dave/pcsx2-4910/common/src/Utilities/ThreadTools.cpp:644
No locals.
#31 0x082fdd65 in Threading::pxThread::_internal_callback (itsme=0x9e9e610)
at /home/dave/pcsx2-4910/common/src/Utilities/ThreadTools.cpp:684
__clframe = warning: can't find linker symbol for virtual table for `__pthread_cleanup_class' value
warning: found `Threading::Timeslice()' instead
{__cancel_routine = 0x82fc160 <Threading::pxThread::_pt_callback_cleanup(void*)>, __cancel_arg = 0x9e9e610, __do_it =
1, __cancel_type = -1223707696}
__PRETTY_FUNCTION__ = "static void* Threading::pxThread::_internal_callback(void*)"
owner = @0x9e9e610
#32 0xb70fee89 in start_thread () from /lib/i686/libpthread.so.0
No symbol table info available.
#33 0xb70684ce in clone () from /lib/i686/libc.so.6
No symbol table info available.
(gdb)
Is it OK like this?
gregory....
Ok. Which version of soundtouch do you use? The one provided by pcsx2 or did you change the cmake flags to use the one of your distribution.
If you have gdb still open. Go to the thread 5
# thread 5
Use the command up/down to navigate in the stack of call. (hint ctrl-x s:show the code source)
When you reach this one => 11 0xb1ca0ce4 in SndBuffer::timeStretchWrite () at /home/dave/pcsx2-4910/plugins/spu2-x/src/Timestretcher.cpp:443
Then print the different variable on the line
# print pSoundTouch
# print *pSoundTouch
# print sndTempBuffer
# print SndOutPacketSize
# print tempProgress
dubigr...
Is the soundtouch provide by PCSX2
(gdb) up
#11 0xb1c00ce4 in SndBuffer::timeStretchWrite () at /home/dave/pcsx2-4910/plugins/spu2-x/src/Timestretcher.cpp:443
443 while( tempProgress = pSoundTouch->receiveSamples( (float*)sndTempBuffer, SndOutPacketSize),
(gdb) print pSoundTouch
$1 = (soundtouch::SoundTouch *) 0xb1660d68
(gdb) print *pSoundTouch
$2 = {<soundtouch::FIFOProcessor> = {<soundtouch::FIFOSamplePipe> = {_vptr.FIFOSamplePipe = 0xb29000e8}, output = 0xb29000e8},
pRateTransposer = 0x23, pTDStretch = 0x41, virtualRate = 1.61149323e-43, virtualTempo = 1.61149323e-43, virtualPitch = 1.41531145e-43,
bSrateSet = 114, channels = 116, rate = 1.47136339e-43, tempo = 1.5554413e-43}
(gdb) print sndTempBuffer
$3 = Traceback (most recent call last):
File "/usr/share/glib-2.0/gdb/gobject.py", line 78, in pretty_printer_lookup
if is_g_type_instance (val):
File "/usr/share/glib-2.0/gdb/gobject.py", line 51, in is_g_type_instance
return is_g_type_instance_helper (type)
File "/usr/share/glib-2.0/gdb/gobject.py", line 45, in is_g_type_instance_helper
return is_g_type_instance_helper(first_field.type)
File "/usr/share/glib-2.0/gdb/gobject.py", line 45, in is_g_type_instance_helper
. ................
and keeeeep like this for a zillion lines
..................
File "/usr/share/glib-2.0/gdb/gobject.py", line 31, in is_g_type_instance_helper
if str(type) == "GTypeInstance":
RuntimeError: maximum recursion depth exceeded
0xb16615a8
(gdb) print SndOutPacketSize
$4 = 64
(gdb) print tempProgress
$5 = -1288704664
(gdb)
gregory....
Hum, it seem to be an issue with sndTempBuffer but it is difficult to tell. Could test several revision to find which one add the crash. First try r4856 and r4864. Depends on the result I will generate patches to build intermediate version. The current status is 4839 good and 4910 bad.
Note the fastest way to compile several version is:
svn update -r xxxx
make spu2x-<tab> (I do not remember the exact name, maybe it begin with a big S).
cp libspu2x....so to rxxx_libspu2x...so
Then you can quickly test multiple spu2x. Note: it will be cleaner to close pcsx2 when you change the plugins.
gregory....
And thanks a lots for the help :)
dubigr...
OK, I want to see it fix it as well, but I'm kinda caught in some other boring choirs around the house right now, so maybe lately this evening.
You mean to build only the SPU plugins and try them with 4910?
(I don't know if I understand exactly)
gregory....
Take your time world is not on fire ;)
And if you can use any spu2x version with any pcsx2 version (except when the interface break but that did not appears from a long time)

Revision 4911

portaudio: Update codebase from svn 1723 to svn 1748.
Notable changes:
- fixed latency calculations for some modules
- improved stability of the internal ringbuffer
- added float32<->uint8 sample conversion
gigaherz
I need to remind myself to ALWAYS put the portaudio svn revision in the commit message, otherwise I'll have to spend half an hour again figuring out which revision was the last one I updated to, and checking the logs to see if its worth updating.
avihal
Good update, but it still sometimes get into "trashed" state. On such cases, the sounds gets weird, and pcsx2 can't exit when closed.

Revision 4912

GSdx: CRC Hacks: Yakuza 1/2 - remove blur.
Reminder: See r4894 if you wish to disable specific CRC hacks.
refraction
If both hacks are the same, why didnt you just use "Yakuza" for both?
KOLartwo...
I apologize in advance if this isn't the proper way to comment on this. It is my first comment here.
Since this revision is a CRC hack to remove the blur in Yakuza 1 & 2 I was wondering if it is possible that a similiar CRC hack would be feasible to remove the post-processing blur in Disgaea 2.
The Disgaea 2 blurring effect is apparently part of the game itself and not the PCSX2 emulators doing. For reference here is a PCSX2.net forum topic where the topic creator gives an accurate description of the issue and includes two good screenshots to show it.
http://forums.pcsx2.net/Thread-Disgaea-2-post-processing-blur
avihal
ref, in case we need to modify just one of them in the future (I didn't complete the games using the hacks).
avihal
Hmm.. I got reports that on some sections of Yakuza 1 it removes too much stuff (minimap, subtitles). For now I suggest to change the skip value (at the function GSC_Yakuza ) to 3. If further tests prove it to be overall better, I'll commit it.
mailsze...
Just to note:
if ( 1 && ...)
and
(0 || ...)
Just don't make sense.
refraction
Probably remenants from testing id imagine, doesnt matter too much, but it is pointless now yes ;p
avihal
mailsze..., when formatting a compound condition this way, it's much easier to exclude specific conditions (while testing) by just commenting out a single line (compared to "normal" formatting of compound conditions). Since CRC hacks are never final, I left it this way. Naturally, the compiler ignores the 1&& and 0|| parts so it doesn't really matter other than convenience.

Revision 4913

cmake: fix some linking issue with gold linker (AFAIK only fedora use it for the
moment)

Revision 4914

GSdx: New: Dynamic CRC Hacks system (disabled by default).
See tools/dynacrchack/DynaCrcHack.c for full instructions.
For development of CRC hacks (and just for the fun of creating such a system),
Allows GSdx to load and use CRC hack logic from an external DLL, and reload it,
at runtime, whenever this DLL changes (but act normally if this DLL isn't
found).
This external DLL is compiled from a single C source file (a sample is provided,
containing the current MGS3 CRC hack logic). There's also a system to
automatically compile this C file into the DLL whenever the C file is modified,
thus creating a system of instant [save C file] -> [GSdx switches to the new
logic].
It's actually a pretty cool system, and might have other usages where it's
useful, for the sake of tests/development/tweaking, to modify code logic during
runtime. The overhead of such system compared to pre-compiled code is very low
(e.g., in the case of CRC hacks which are called thousands of times/sec, I
couldn't notice any difference in performance).
Compilation of the C file is currently done using TCC (Tiny C Compiler -
http://bellard.org/tcc/ - extremely fast, light and powerful). TCC itself needs
to be downloaded separately (~250K download, no install required). The system
currently supports Windows only.
refraction
could be very handy for developing the CRC hacks, well done :)
yxml...
@cd /d "%~d1%~p1" > nul
change
@cd "%~d1%~p1" > nul
avihal
yxml.., /D is required to also change the driveletter. Regardless, this line currently does nothing. Should have been cd /D "%~dp0" to CD to the folder of the batch file (in case it was invoked from a different folder), or use pushd. Not critical anyway.
yxml...
- -So that
gregory....
What are the advantage of tcc versus Vstudio/gcc?
avihal
tcc is extremely fast (10x faster than gcc according to the website), it's a very small and light package which doesn't have gigabytes of dependencies (to compile gsdx on windows you need to install visual studio, SDKs, etc).
So it can be setup in seconds on any system, which is useful for this commit, as it allows anyone to start using it instantly.
Also, it's just plain cool (assembler, compiler and linker in a single 100k exe!) and I wanted to play with it a bit ;)

Revision 4915

Oops. Now it's disabled by default ;)

Revision 4916

LilyPad:
Added a new option to the hacks section that sends a tabulator key press to
PCSX2.
This toggles the turbo mode of the emulator, so users with pads don't have to
reach out to the keyboard anymore when they want to switch between normal and
turbo gameplay :)
Note:
I choose R3 for now since most games don't use that button. This could be made
configurable in the future though.
ramapcsx2
I also fixed Visual Studio's usual resource.h messup while I was at it..
azte...
the plugin with a gay name is back, thanks for the hack ramapee. :)
ramapcsx2
The name is perfectly fine and my nick is rama, thank you very much.
invisgh...
Very Cool. I had wondered if this was possible in the past but couldn't find out. Guess it wasn't.
simonant...
Nice work, what's with all these lame comments? #spam
godofdr...
good work its good for me becouse i need Always to prees tab to activate the turbo mode becouse my pc are slow
thanks a loot
and sorry for my bad english.
client...
did you fix the vibration glitch with this ?
miser...
How anyone could call "vibration" a glitch, milions of lonely women cannot be wrong.
+ And yes that fixed Super Robot Taisen too, the code just speaks for itself.
maurinho...
very good, so useful!!
thanks.
Caki.D...
I remapped R3 and L3 to be save state 0 and load state 0. Maybe i could suggest you add that option too in UI as one of optional key configurations. That way i don't even bother with keyboard to do anything. Just a suggestion rama.

Revision 4917

UI: Keyboard shortcuts overrides via PCSX2_keys.ini
Keys combination can be:
"alt-" and/or "ctrl-" and/or "shift-" and ( F1-F12 or KP_0-KP_9 or
SPECIAL1-SPECIAL20 )
Where:
Fn is function key n
KP_n is numpad number n
SPECIALn is hardware button n (whatever that means...)
Examples:
FullscreenToggle=alt-ctrl-f12
GSwindow_CycleAspectRatio=KP_0
See full configurable strings at the first comment.
avihal
Full list of (currently) supported functions:
States_FreezeCurrentSlot
States_DefrostCurrentSlot
States_DefrostCurrentSlotBackup
States_CycleSlotForward
States_CycleSlotBackward
Frameskip_Toggle
Framelimiter_TurboToggle
Framelimiter_SlomoToggle
Framelimiter_MasterToggle
FullscreenToggle
Sys_Suspend
Sys_TakeSnapshot
Sys_RenderswitchToggle
Sys_LoggingToggle
Sys_FreezeGS
Sys_RecordingToggle
GSwindow_CycleAspectRatio
GSwindow_ZoomIn
GSwindow_ZoomOut
GSwindow_ZoomToggle
GSwindow_ZoomInY
GSwindow_ZoomOutY
GSwindow_ZoomResetY
GSwindow_OffsetYminus
GSwindow_OffsetYplus
GSwindow_OffsetXminus
GSwindow_OffsetXplus
GSwindow_OffsetReset
konaj...
always nice to have configurable keys, hopefully eventually there can also be some kind of shortcut keys for gsdx (and other plugins),(for gsdx - toggle native mode, skipdraw, alpha/offset, dx9-10 switch ..etc)
avihal
Full list of available keys names (on top of F1-F12, KP0-KP9 and SPECIAL1-SPECIAL20), also usable with alt/ctrl/shift modifiers:
DEL
DELETE
BACK
INS
INSERT
ENTER
RETURN
PGUP
PGDN
LEFT
RIGHT
UP
DOWN
HOME
END
SPACE
TAB
ESC
ESCAPE
CANCEL
CLEAR
MENU
PAUSE
CAPITAL
SELECT
PRINT
EXECUTE
SNAPSHOT
HELP
ADD
SEPARATOR
SUBTRACT
DECIMAL
DIVIDE
NUM_LOCK
SCROLL_LOCK
PAGEUP
PAGEDOWN
KP_SPACE
KP_TAB
KP_ENTER
KP_HOME
KP_LEFT
KP_UP
KP_RIGHT
KP_DOWN
KP_PRIOR
KP_PAGEUP
KP_NEXT
KP_PAGEDOWN
KP_END
KP_BEGIN
KP_INSERT
KP_DELETE
KP_EQUAL
KP_MULTIPLY
KP_ADD
KP_SEPARATOR
KP_SUBTRACT
KP_DECIMAL
KP_DIVIDE
WINDOWS_LEFT
WINDOWS_RIGHT
WINDOWS_MENU
COMMAND
Still not sure if it also works for normal letter/number keys (the key is accepted but doesn't trigger for some reason). Anyway, the above names were tested randomly and seem to work.
E.g. ctrl-shift-PAGEDOWN etc
miser...
Nice, this is close to something I was messing around just now with - making custom savestates for 1-0 keys, through I failed to use any key other than defined special WXK_ keys:[. Any reason why normal ascii keys doesn't work? I only found a bit info around http://docs.wxwidgets.org/stable/wx_keycodes.html which stating the opposite and wonder why we're limited to those special keys.
Anyway cool feature, the more things to customize the better.
miser...
Huh I'm blind:P, just noticed end of your last comment, stating you also dunno why normal letters/numbers doesn't trigger:].
kaboo...
very useful thankyou^^
bak8...
Hey I posted something about this the other day... You guys are quick :D Thanks for your hard work
Makotech...
Any way to bind inputs to a gamepad? would be perfect to change framerate without using my keyboard :)
ramapcsx2
Makotech: Check last commit ;)
avihal
FYI, r4918 also allow "normal" keys to be used.
robdawg...
I know this is an old post, but in case someone is looking for this info and comes across this thread...
Regarding Makotech's comment, there is an option in gamepad configuration (perhaps there wasn't at the time this was posted) that allows you to set L3 as a turbo toggle. I find that very useful, this way you can just press down on the left analog stick to toggle turbo on and off.

Revision 4918

UI: Bugfix: normal keys were not handled by PCSX2 (can now be used as KB
shortcuts, etc).
avihal
So now KB shortcuts can be any letter/digit/symbols on the KB.
E.g. shift-4 or [ or ] etc
miser...
cool:3
godofdr...
so when you the developers will back to work to make more good changes
it allredy 5 days without no new revision
fischkop...
yeah why did you stop working???? the emulator needs more speed improvements!
kjell...
First: No commits in a while doesn't mean they're not working on PCSX2. Some features can take weeks to implement, and you often don't commit before you're done with a feature.
Second: Even if no work on PCSX2 is being done: how much are you paying them again?
actact9...
cmon guys they have lives to you know they cant always work on this project plus the last few revisions were preety big speedwise [the threaded MVU one] so just let them rest they will be back at it before you know it
PS:Guys I think I found another game that does not work well with the threaded MVU I get half the FPS I get when the HaCK is on rather than when its off during Battles the game is Tales of Legendia I get 50-60 fps during battles depends on the location while its off and I get 30-36 Fps when its on in all battles
jeremybe...
LOL!!!!!!!! Crack that whip! Get a move on devs! j/k
But seriously: Good job on giving us this fine emulator. May it continue forward with greater improvements! I have enjoyed more than 50 games on this emulator so I have no complaints.
DanrleiS...
It´s too quiet. Something powerful is coming soon.
(sorry by bad english)
jfre1...
Hopefully a new version of gsdx
ramapcsx2
PCSX3! Or 4?!
romeo_ca...
i guess they are probably playing right now
kjell...
No, its PCSX 9000!!!!11
federico...
I dunno what to think about rama's comment; PCSX3 should be the name of an PS3 emu :/
Weird
DanrleiS...
i´m hopeful of pcsx2 at this time.
WE´ll get a great improvements in this emu.
fischkop...
so much time without any updates... i hope they are working on some great improvements.
jammanl...
pcsx3 first thing i get from that s3x
pcsx2gu...
Comment by [email protected], Sep 21
i guess they are probably playing right now
Bingo :P
romeo_ca...
yes i knew that
Gringo XD
avihal
LOL, +9 for for a tiny fix? I can't imagine what would happen when sudonim commits his working PCSX3 branch...
romeo_ca...
or maybe they will come up with a commit with built in server for cloud playing through android devices
DanrleiS...
What happening with you?
Weird
ten days passed away and no revisions
jfre1...
Patience young padawan
fischkop...
Comment by project member [email protected], Today (9 hours ago)
LOL, +9 for for a tiny fix? I can't imagine what would happen when sudonim commits his working PCSX3 branch...
A PS3 Emulator Exists!???
skosn...
It is wary cool that appear ability to pause game without minimizing window by Escape through mapping "Sys_Suspend" for example to button "4". But "Resume" game still require mouse clicking.
Can you please also add mapping for "Sys_Resume" function?
Also if call "Sys_Suspend" function the windows of pcsx2 console and main app are throwing on top of current game screen, it will be also wary cool to disable this.
romeo_ca...
how the hell could you expect a PCSX3 while the work on PCS2 is not done yet take a look at the compatibility list this emulator is just able to run 71% of the PS2 games inventory not to mention that big titles that came years ago like (Onimusha 4 dawn of dreams, and Ace Combat 5 - The Unsung War) still don't work plus the compatibility list is reporting some games as playable while they suffer from bad bugs like the graphical bug inside Devil May Cry 1
romeo_ca...
and by the way the devil may cry glitches appeared between those 2 releases
GSdx-r1538 - has no problems
GSdx-r1611 - glitches
godofdr...
Comment by [email protected], Today (8 minutes ago)
your wrong!!! the list of the pcsx2 games are outdated and allmots 93% of the game are working and are full playble but it still have some small bugs.
ramapcsx2
Since this is a general "what's going on" thread now:
People aren't currently working on stuff so don't F5 googlecode
all day, k? :p
Work will continue when people find the time and will, as it always has.
romeo_ca...
alright daddy :p
romeo_ca...
man i swear i'm holding my stomach from laughing reading this revison (24 thread for pcsx2) https://code.google.com/p/pcsx2/source/detail?r=3000
miser...
'Roo' with his Super Robot Taisen beats r3000 when it comes to laugh. Archetype of demanding human without a common sense or simply a peanut sized brain.
TM...
https://code.google.com/p/pcsx3/ That is the PS3 Emulator xD(in the Future maybe?), but seriously to all developers you all have done great Work whit this Emulator, nearly all my favorite ps2 games works fine(only little bit slow downs here and there, but its ok)
Thank you!
(äh and sorry for my English, i know its bad-.-).
fischkop...
why has developement stopped??? :(
DanrleiS...
What´s happening?
pcsx2gu...
Isn't it obvious? ITS THE END OF THE WORLD!!!111
romeo_ca...
please fix that devil may cry 1 glitches i really wanna play it
shadowladyngemu
"the compatibility list is reporting some games as playable while they suffer from bad bugs like the graphical bug inside Devil May Cry 1"
"GSdx-r1538 - has no problems"
So... how is it not playable if you get no glitches with and older plugin?
TM...
No its not the End of the World, wait until Dec.21.2012 maybe you see there the end of the World?, and no the Development has not stopped they are Tired, you know they work all Day and Night at this Projekt and never Slept until now, maybe you guyz can try this PSP Emulator https://code.google.com/p/jpcsp/ it works for me(also Dissidia works good, slow downs and graphic bugs but you can play it through) after a while you can come back and see if something happens here.
romeo_ca...
So... how is it not playable if you get no glitches with and older plugin?
i don't want to use older gsdx version because there is no FXAA that's why and if you want to try check out the forum it's already been reported
romeo_ca...
and for the jpcsp emulator i like so much i'm currently playing kingdom hearts adn final fantasy VII crysis core in it
romeo_ca...
and here comes an update check out the svn build now
TM...
@[email protected] You can Play Kingdom Hearts BBS? has it many bug or slowdowns? KH is my Fav. Game by PS2(Big Thanks again^.^), it would be great if its playable like dissidia:D.
romeo_ca...
currently i'm playing it with no problem but you will have to instal sonic stage and enable check the option ''use media engine'' and ''decode audio files.....media engine'' in the media tab of configuration,
http://www.youtube.com/watch?v=Op5m8tdd-VY
and you can download the game from here www.torrentz.com
PS:sonic stage won't work with the 64bit of jpcsp
TM...
thx(that was fast) Sonic Stage is installed(without it my ears would bleed xD)hmm nice but i dont use Torrents(too risky), found another version of this here http://www.youtube.com/watch?v=RvsOhXjTyag looks good:).
(äh if someone thinks its the wrong place to post something off topic like this, i am very sorry for this, but we cant post by JPCSP project-.- and we cant send PM´s or?).
sw.darkf...
great job, I love this change, pcsx2 lines up with greatest emus

Revision 4919

Minimal changes to GameDB.
godofdr...
hooooooo atlast some updated change
thanks you very much
jammanl...
WOAH VIVA LA PCSX2
atia...
thought the project was dead :P
avihal
wut? it's still alive?? :P
pg...
Still rejecting "Naruto - Uzumaki Chronicles 2"?
---------------------------------------------
Serial = SLES-55090
Name = Naruto - Uzumaki Chronicles 2
Region = PAL-M5
OPHFLagHack = 1
---------------------------------------------
gigaherz
NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOooooooooooo! The silence! You broke it! What have you done?!
Also, [email protected]: If they don't add a game to the db, it may just mean none of the betatesters (which eh, means Shadow Lady I suppose) tested that the info is right yet. You shoudl probably make an issue with the info and be patient.
shadowladyngemu
"Still rejecting "Naruto - Uzumaki Chronicles 2"? "
It's actually there but with a typo "SLPS-55090" will be fixed next time :p
ramapcsx2
http://nooooooooooooooo.com/
godofdr...
http://nooooooooooooooo.com/
this site is very fanny hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!
miser...
Wow free prn! Thanks for the link:P.
romeo_ca...
daaaaaaaaaaamn man so funny, anyway enjoy the ride
wjat....
@[email protected]
A bad day?

Revision 4920

i18n: long-awaited update. Big changes on pt_BR/sv_SE/zh_*
cmake: install also the man page
rafael.f...
In archlinux, simply installing "pcsx2.man" will result in the gzipped file "pcsx2.man.gz" as man page, which is not valid - man page doesn't recognize it. (sorry if I didn't mention this before)
I don't know how this affects other distros, but is it possible to install the file "pcsx2.man" named as "pcsx2.1", so it can be automatically isntalled as "pcsx2.1.gz"?
[off-topic] Project title in pt_BR .po files are set to "0.9.7". My bad.
Thanks for the updated
godofdr...
ho, thanks for the new revision I wanted to know if this revision have a small speed up or Something good and i want to know if you can add the hebrew
translation to the emu becouse in the pcsx2 0.9.6 there have hebrew translation!
thanks and sorry for my bad english!
gregory....
@rafael, ok. I don't know either for others distributions but it will not hurt anyway.
@godofdr, in your case this revision is useless except if you want to learn new languages :)
For hebrew gui translation, I need someone to translate english string to hebrew one. Do you have some friends that speak english? Maybe you can work with them to do the job. Avoid google&co automatic translates stuff. It is not mandatory to translate everything.
nexxus86
Okay. This only affects Linux, right?
rafael.f...
Man page stuff, cmakelists... yes.
Translations in general (includes hebrew), affects windows too.
weimingzhi
cool, thanks :)
godofdr...
at least please do some good change becouse today is 1/10/11

Revision 4921

GSdx fixes:
Skygunner crashing on boot.
James Bond 007: Everything or Nothing doing a huge Vram usage when opening the
weapons screen and making the system crawl at it. Couldn't test much with this
one and only added the US version for now.
Hefra...
Good job on the subpix quality change, I had this set in my local copy for a long time and it looks great. As for the 007 fix, will test it as soon as I return home.
Hefra...
OK, tried my EU version of Bond (CRC: 0x5FFFDE40) and Bond senses are now much faster (40fps vs 8fps without the hack) and memory usage is roughly halved.
The only problem is that this hack causes movies to flicker in black every other frame. Oh well.
elux2...
Sky Gunner freezes Windows(Win7x64) on bootup in GSDX Hardware mode (DX11)
yxml...
This is the version which ???
SKY GUNNER
SCPS11006 0xB799A60C
shadowladyngemu
@[email protected]
Means the EU version is probably using a different buffer address, will need a GSdump or something.
@[email protected]
Which version do you have? could you post the CRC for it?
@[email protected]
Thank you, will add it next time.
yxml...
ps
SKY GUNNER(PBPX_95201)
SCPS11006 0xB799A60C
elux2...
@shadowladyngemu
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_203.84;1
(SYSTEM.CNF) Software version = 1.01
(SYSTEM.CNF) Disc region type = NTSC
ELF (cdrom0:\SLUS_203.84;1) Game CRC = 0xA9461CB2, EntryPoint = 0x00100008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLUS_203.84;1
(SYSTEM.CNF) Software version = 1.01
(SYSTEM.CNF) Disc region type = NTSC
The freeze is only with hardware mode. software works
craig.ja...
+ 1 on the 007 fix
nexxus86
What's with the FXAA changes? what does it?
nexxus86
I think it made it worse. the edges doesn't getting smoothed as they did before.
Hefra...
Shadowlady, you were right about different memory addresses. For my version of Everything or Nothing (CRC: 0x5FFFDE40) I successfully created and applied the following patch:
if(skip == 0)
{
if(fi.TME && (fi.FBP < 0x02000 && !(fi.FBP == 0x0
|| fi.FBP == 0x00e00 //ntsc
|| fi.FBP == 0x01000 //pal
)) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 > 0x01c00 && fi.TBP0 < 0x03000) && fi.TPSM == PSM_PSMT8)
{
skip = 1; //Huge Vram usage
}
}

Revision 4922

GameDB and CRC updates....
other updates are welcome on issue 881
mew.the....
Thank You!!
At last!! FFXII PAL-S Works like a charm, no more black screens during videos!!! Yeah!!

Revision 4923

i18n: upload sv_SE/es_ES/pl_PL/cs_CZ translation files
gregory....
For information, I won't upload any translation updates in coming monthes. Gui is stable and most of translation are 100%. And my free time is very limited.
ramapcsx2
Thanks for taking care of these :)
rafael.f...
Sounds reasonable, Thanks.

Revision 4924

zzogl-dev: sync from trunk (4649 -> 4923)
dubigr...
Does this mean that we can now experiment with GLSL?
gregory....
You can experiment with GLSL if you checked-out the branch, and build it with GLSL option. Well I need to ensure that thing are still build correctly. I sync the branch to keep it hot for future development. If I'm recall correctly there was some issue on NVIDIA GPU.
When I have free time and a working catalyst driver (because radeon opensouce driver does not support glsl 130 yet) I will work on the following topic
1/ I want to separate shader into 2 files (vertex and fragment). I hope to make code more easy to understand.
2/ Then replace the fixed pipeline feature and replace them with opengl 3.1+ code. It will be future proof and probably avoid issue with compatibility stuff with NVIDIA GPU.
In any case I will glad to have feedback because I can only test 1 GPU (HD5770) with 1 driver.
rafael.f...
Need tests with Nvidia 8800 GS or you've got this covered? I use proprietary nvidia driver.
gregory....
yep, nvidia is very good. I have only radeon. Anyway, I will not implement anything soon because I have some issue with my flat moving.
The flags to build with GLSL instead of nvidia_cg is "-DGLSL_API=TRUE".
Otherwise one thing that could help us a lots, is to test this branch without GLSL and detect regression against trunk. Several things were improved, if we have some guarantee nothing broke, we can still merge it to trunk.
ramapcsx2
I'm with ya, gregory.
Moved flats too many times now and it's always a pain (on top of the financial burden!).
So hang in there :p
rafael.f...
feedback:
- Doesn't seem to crash, except for po files.
- The ps2glsl.fx file is created even when I don't activate "-DGLSL_API=TRUE". Is this expected?
- While loading plugins, libzzogl-0.3.0.so failed with the following message:
[wx] /usr/lib32/pcsx2/libzzogl-0.3.0.so: undefined symbol: cgDestroyProgram
Path: /usr/lib32/pcsx2/libzzogl-0.3.0.so
File is not a valid dynamic library.
Some kinda plugin failure: /usr/lib32/pcsx2/libzzogl-0.3.0.so
About this last comment, I built pcsx2 with package-mode, internal-sdl, not-internal-soundtouch and debug.
rafael.f...
more feedback:
- with "-DGLSL_API=FALSE", tried to load Tales of Abyss and crashed.. see a part of the output:
pcsx2: /home/rafael/builds/pcsx2-zzogl-dev/src/pcsx2-build/plugins/zzogl-pg/opengl/ZZoglFlush.cpp:2015: void SetTexVariablesInt(int, int, const tex0Info&, bool, FRAGMENTSHADER*, int): Assertion `fblockstride >= 1.0f' failed.
See complete output: http://pastebin.com/36ZzNgPs
gregory....
@Rama, thank you.
@Rafael, Yes I know for GLSL, see rev 4931, it will work better. Well I think there is some others issue but that might be related to my driver. Anyway for the moment, I want to plug an opengl debugger.
Hum, I think the assertion appear because you have a too recent GPU;) Well I do not remember exactly but it might or not be linked to this comment in the code. For the moment I advice to use a release version.
// Limit the texture size supported to 8192. We do not need bigger texture.
// Besides the following assertion is false when texture are too big.
// ZZoglFlush.cpp:2349: assert(fblockstride >= 1.0f)
rafael.f...
@gregory: thanks for the "too recent". I was starting to think that a 4 years old gfx card was considered old. lol :)
Let me know if you want me to do another test. And good luck with you flat moving
gregory....
Hum, I will need element value of the formulae. Try to add this before the assertion "assert(fblockstride >= 1.0f);" in ZZoglFLush.cpp. I did not test it but I think it would be ok
{{{
// Add me before assertion
fprintf(stderr, "GPU_TEXWIDTH %f; mult %f; texwidth %f; dimx %f; FBW %f \n", (float)GPU_TEXWIDTH, (float)pmemtarg->widthmult, (float)BLOCK_TEXWIDTH, (float)b.vTexDims.x, (float)fbw);
// End of add me.
}}}
Do it for both trunk/branch so value can be compared.

Revision 4925

GSDX:
- Use float instead of int for the video framerate.
- Use 59.94 instead of 60 for the ntsc framerate.
This replaces a previous hackfix with a better one, but it's still not ideal.
The ideal solution for the video encoding side would be to use an actual
fraction (60000/1001) and pass this fraction to the encoder.
The ideal solution for the gsdx side would be to deduce the real framerate from
the timing parameters.
gigaherz
It doesn't work that way.
First, most "60hz" screens are actually 59.94hz, many have two modes "60" and "59", where 59 means 59.94.
In the case your screen uses true 60hz, then what could happen is that the emulator will be late for the first frame sync, then it will have to wait for a second sync, if triple buffering isn't enabled, this will happen every frame drawn, resulting in 30fps! With triple buffering, you'd see one frame every X (one every 1001 probably) have double the time than the rest, but on average it would be close to the actual 59.94 rate.
In no case will it become 55. ;P
nexxus86
So it's recommended to turn triple buffering on?
gigaherz
Only if you don't mind the slightly higher latency and want to maximize the framerate when its < 100%.
gigaherz
... and still prevent the tearing associated with not using vsync at all.

Revision 4926

GSDX: I didn't even like that code when I changed it. Now I know why. And it
looks much better this way.
avihal
:)

Revision 4927

GSDX: Whoops sorry I mixed two conflicting ideas into one.
gigaherz
Gah I hate myself, the previous commit was ok, I hadnt' saved the bugged version at all... xD
Anyhow the bit about readability is true nonetheless.
avihal
:P
godofdr...
good work. i wanted to report that there is a problam in the "automated pcsx2 builds" when opening the emu it shows pcsx2 0.9.9.4918 sep 12
and its most be fixed.
gigaherz
You already said that in other commits. We read you, no need to keep reposting it every single time!
avihal
It shows 0.9.9.4918 because that's the last revision that changed something at pcsx2.exe . The following commits changed translations/plugins/etc. So 0.9.9.4918 is the correct version of the exe file...
jammanl...
a tiny bit more sync in videos never hurt anyone :P lol

Revision 4928

Yakuza 1 CRC hack (seem to work better than previous one).
8924th
Alright, i do not know which revision made this happen, but Spyro: Enter the Dragonfly got much further than it ever used to!
Loads the introductory messages, first load screen. Select language, second load screen. Sounds play on just fine, but the screen stays black after that.
I really don't know what you guys changed but if you do know, feel free to continue! :P

Revision 4929

Lilypad:
Putting the tabulator keypress hack from r4916 on L3 instead of R3.
avihal
Any specific reason why L3 would be better than R3?
nexxus86
cuz it's 20% cooler.
Nah. I dunno, maybe because it's more "unique" to have it on the left stick?
whatever... everyone has his own opinion there.
tak...
games use the L3 button less frequently than the R3 (mainly because pressing the L3 button while also using the left analogue for navigation is awkward, the right analogue, which is why most games use the R3 e.g. DBZ tenkaichi budokai uses it for transformation)
nexxus86
actually, many shooter games use it for crouching ;)
ramapcsx2
I found a couple games that use R3 for camera related controls.
L3 however wasn't used by anything I had.

Revision 4930

zzogl-dev: fix the po that were not properly merged by svn during the trunk
sync...

Revision 4931

zzogl-dev:
* fix some stuff in Cmake.
* Rename the shader file and automatically pick-up directory from makefile
* Use the global include file for intrinsic

Revision 4932

(Patch from firnis) R5900int: As per MIPS documentation, do not modify the
destination register if an overflow exception occurs.
nexxus86
does this fix something?
sudonim1
Yes, but nothing that any normal user would care about.
nexxus86
kay.. I updated the .exe anyway :)
avihal
Gogo sudunim/firnis! :P

Revision 4933

BUGFIX: GS window sometimes stayed hidden after pause/config.
This fixes at least the following bug: Run a game -> ESC (GS Windows hides) ->
config Video plugin and click OK -> Emulation resumes but GS window is hidden.
(Solution was to click pause and then resume again, now it re-shows as it
should).
Let me know if it breaks other related scenarios or if there are other similar
scenarios that got fixed (or that still need fixing). E.g. pausing/configuration
while at full screen, etc.
avihal
Eh.. at the scenario above, after clicking OK, Emulation needs to be resumed manually, and then the GS window stays hidden (and this patch fixes it).
tarrag...
It works perfectly, thank you:)
It was boring.
refraction
Nice one!
8924th
Nice, now that annoying habit will finally stop. :)
By the way, i don't know if you guys work on this kind of stuff, but Crash Nitro Cart is incompatible with the new MTVU hack, and perhaps the game should be given a new entry in the Game Fixes section to automatically disable this hack whenever an incompatible game is played.
ramapcsx2
We'd rather try to fix the problem first, so thanks for mentioning :)
Avih: Fix worked, good job :)
nexxus86
ahhh finally! I hated that problem -.-

Revision 4934

EERec: Small changes so Constant Propagation can be turned off (for testing
purposes)

Revision 4935

COP2: Fix/hack for Ace Combat 4 sky, you will need to tick the VU Flag Hack
Speedhack to enable it (not sure what else to put it on without adding another
hack). This is more likely to do with odd COP2/VU0 sharing pipe behaviour, but
ill leave that for cotton :P
Also altered some of the interpreter calls so the defines in config.h can be
used again (example the #define ARITHMETICIMM)

Revision 4936

Partial revert of r4935. REC_FUNC_DEL is functionally distinct from REC_FUNC.
Fixed REC_FUNC_DEL definition.
refraction
I'm sure I tried that and ace combat still didn't boot without the defines.
sudonim1
Well, without REC_FUNC_DEL the updated register won't have constants deleted. Flushing is not enough, constants are used as long as they exist. I'd be surprised if much worked with your version. I can't think of any version why it shouldn't work with definitions which flush and delete the relevant register (for read, modify, write cases).
refraction
The constants are flushed by the flushcall inside reccall..... I'll play with it more, but I'm sure I tried this and it didn't work.
sudonim1
As I thought I explained, flushing is not deleting. Flushing just writes back the values to memory. The constants are still used in following instructions.

Revision 4937

mVU: Typo in CTC2 macro mode instruction for the status register case.
(Untested, unknown what if anything it fixes, possibly ace combat series but
probably not.)
konaj...
not sure if it was this or r4935, but ace combat 4 sky is working again (I also didn't need to enable the mVU Flag speedhack like r4935 instructed perhaps this revision fixed the need for that).
refraction
It was technically both :P This is likely to be the issue that was originally causing it, ill double check it then remove my hack if its fixed.
ramapcsx2
Did a quick check with my bugged games, none got fixed.
Nice find still, sudo! :p

Revision 4938

Removed Ace Combat hack as r4937 seems to have solved the problem.
refraction
I thought youd like that cotton xD Graffiti'ing your baby :P
luc...
Mh... Somehow linking doesn't work on Linux on latest pull: i get a lot of undefined references. Someone knows something more?
refraction
what errors?
felipefp...
congrats for removing the hack refraction, good luck with the others. ;)
ramapcsx2
Lol ref :p

Revision 4939

Lilypad: Fix wrong GUI description. Thanks bosit :p
godofdr...
so i dont understand way change the key to r3 and after that rechange to l3
it was already have been l3 when you did it before way change it again
sorry for my bad english.
samuel.k...
It was R3, then got changed to L3. However, it seems the GUI wasn't updated to reflect this, thus this revision.

Revision 4940

microVU:
- Implemented an opcode profiler which prints statistics on how often VU opcodes
are used (enabled with the mVUprofileProg macro)
- Get status flag conversion function to use EAX/ECX/EDX regs when being called
from EE-rec (VU0 macro mode); this should play nicer with the EE-recs regalloc
system.
godofdr...
nice work you bring the best resolts to this emu like in revision r4865
keep the best work. thanks!
refraction
Good job xD
ramapcsx2
So did you avoid a reg alloc problem here?
Didn't quite get that part :p
cottonvibes
rama: kindof... it was a potential problem; its just safer this new way.
TM...
Nice i have a feeling Rogue Galaxy works better now, also its like 10 fps more than in revision 4875(long time no other revision tested)
keep up the Good work Thx

Revision 4941

Fixed pretty bad bug of us counting cycles only for one VIF when the system has
2.
Also added a couple important global variables to be savestated (breaks old
state compat).
refraction
wasnt really a big bug considering it is only used in the time its running that one vif. It's cleared at the start of the vif, then once its done its bit, it sets the interrupt and then any value is discarded next time vif runs.
but hey ho, guess for clarities sake its clearer :P
ramapcsx2
If you look at the mess that vifdma is, it's very much conceivable that the wrong cycles make it into the calculation.
Better safe than sorry :p
refraction
I had actually previously double checked this and it doesnt :P but hey ho!
ramapcsx2
Saving the other cycles in states is pretty essential though.
Wonder why they're so often an afterthought ><
refraction
Not sure :S Kinda silly really xD
cottonvibes
this revision's idea is a step in the right direction but the new code doesn't make sense.
take a look at Vif_Transfer.cpp
stuff like:
if (g_vif0Cycles < g_vu0Cycles) g_vu0Cycles -= g_vif0Cycles;
that stuff needs to be fixed properly.
ramapcsx2
Yea.. What was that about originally? :p
refraction
That was to correct timing with the wait for vu functions on the vif to make sure the timing was right, as vif runs parallel to the vu's.
ramapcsx2
So ehr, can we get rid of this code then, along with all g_vu1Cycles and g_vu0Cycles? Is that right?
refraction
If you want, it was an effort to improve the timing for DDS, make sure you do the flush commands too :p
refraction
I can do it later if you like?
ramapcsx2
Please do :)
gregory....
Just for information, the removal of timing on r4942 break fahrenheit ( indigo prophecy in states I think). The game did not boot anymore. Tell me if you need more data log, dump whatever.

Revision 4942

VIF: Removed the vu cycle counting craziness mentioned in r4941 comments. It was
intended to pretend if the VU "ran" for longer than the VIF did, but it didn't
really change a lot :P
Savestate version bump again
ramapcsx2
Nice, another step in the right direction :)
sudonim1
Um, actually this made quite a lot of sense though it should've been done by scheduling rather than straight addition and subtraction of cycles. Removing this seems like a step away from accuracy.
refraction
The pain part which made me put all that stuff in was if the vu program was started and flushed in the same packet, no vif cycles are counted at that point. No o mention vu's have no real timing which could parallel it with the dmas, which might have been nicer i guess!
refraction
Not to mention even. As for accuracy, I agree its a step away (think you can feel it in dds) but aside from affecting a game with random hangs, there wasn't much impact.
konaj...
if it actually did something productive then re-add it back or find a new way to code it so everyone's happy :p, scheduling sounds like a good idea.
pierre.l...
Little bugs detected.
refraction
Care to elaborate?
godofdr...
i think this revision is little buggy like pierre sayd
there is a new problam detected after playing some time it says
something with ee core problam so get it fixed if you can
sorry for my bad english
and thanks for the great work
nexxus86
@[email protected] & [email protected]
which game ?
Does it break something?
refraction
can you all check if it was this revision? nothing i did should have affected any of the things you are mentioning, infact this is how it has worked for years and years.
godofdr...
i tested it and i dont sure that problam Was in the pcsx2 i think it something with my pc now its fixed and not doing ee core problam.
thanks and sorry for my bad english
gregory....
I found a regression on this revision (r4941 is good).
Game:fahrenheit (PAL & french name)
Status: failed to boot (first logo vido : Atary), screen stay black. No speedhack. GSdx software.

Revision 4943

GSdx: Corrected the line data terminator for psx games (fixes wild arms 2).
konaj...
great fix!! GSdx is the one of the best psx plugins, glad to see wild arms 2 is working with it now.
Line.E...
Hi Gabest !!)))
Great work as always (^_^)
ePSXe still alive and kicking )))
By the way, may I ask you about GSDX (I've asked something similar before, but still it's unclear for me %P)
- In PCSX2 with Software mode - is it make any sense if I set 7 threads for Core i7 Sandy Bridge processor ? Or hyperthreading useless in this case and we should use only 4 cores ?
I am confused because sometimes I see that 7 or even 8 cores (with HT) loaded by PCSX2.
Games Okami (fullspeed), MGS3 (fullspeed), Killzone (50% speed but due to my weak GF8800 card), and GT4 (fullspeed).
Thanks :)
refraction
2 to 3 threads is optimal for a quad core chip (which yours is, don't kid yourself with ht :p)
markwes...
Didn't know Gsdx was compatible with ePSXe...but when I put the Gsdx files in the ePSXe (I'm using version 1.70) Plugin folder it doesn't recognise them...
gabest11
[email protected]:
HT shares execution units which are already fully unitized, so those thread-pairs mostly block eachother. Bulldozer's cores are more separate, too bad they are slower.
[email protected]:
Try copying SDL.dll next to epsxe.exe.
gabest11
*utilized
konaj...
note to first time users
if you run into vsync problems then you can use the "Eternal SPU" plugin set (Async + Wait) this will slow the game to 60fps, usually this is only needed for emulators other then epsxe and window mode, full-screen usually sets vsync.
for some emu's (PSXseven) you need to rename gsdx and add gpu in front of the name (ie: gpuGSdx.dll) so it shows up in the gui or you can manually set it in the ini file.
epsxe(shark), pcsx(r), ssspsx just adding sdl.dll in the root folder should be all that's needed.
fischkop...
wait, does this mean that pcsx2 is now able to emulate psx games?!?!
Wagnar...
No. Gsdx is compatible with pcsx2 and Epsxe.

Revision 4944

GSdx: Another psx bug-fix for chrono cross. Not fully sure about it, have to be
tested. It is about not drawing larger than 1024x512 polygons. Peops also skips
them, but only when one of the coordinates is negative, not explained why.
kaboo...
cool love that game, thank you.
konaj...
yeah greatest game of all time, thanks for fixing :), did a quick run through in various places and battles so far it looks & runs good.
I think this build might of also solved some ff9 battle glitches (When vivi cast a spell in older gsdx a horizontal line would appear across the screen, I'm no longer seeing that).
thanks! these fixes are wonderful.
jfre1...
Are these fixes for running ps1 games from within pcsx2? or for pcsx1?
pcsx2gu...
For PS1 emulators since PCSX2 does not run PS1 games yet.
jfre1...
Ah. Thank you.
otaku...
Nice for chrono cross.
* Comment by project member [email protected], Today (7 hours ago)
For PS1 emulators since PCSX2 does not run PS1 games yet.
PSX games works well on pcsx2. Try to load game with option Boot CDVD (full).
andutrache
How did you make it work ??
i get a : ***** IOP > Twice-thrown int on IRQ 17 spam when trying it.
yjsfami...
SSE Plug-in has been modified. But why r4928 AVX unchanged?
refraction
Yjsfami: it didn't.....
ramapcsx2
otaku:
Well, that'd be magically awesome.
So far all our attempts at running PSX games didn't go far.
Mainly due to missing emulation components.
It's hard to start a game when you're missing a GPU ;)
prison_b...
Unrelated question, in the future will you make an option to encode videos in 60fps again?
59.94 kinda sucks :P
pcsx2gu...
59.94 is the proper NTSC standard so I can't see how it 'sucks'. Having 1 second desync in audio every 15 mins is what sucks, which that revision fixed :P
otaku...
ramapcx2:
I agree with you. My mistake. I thoroughly tested the 10 titles and still get the same black screen after the psx logo.
konaj...
yeah the decision was made a long time ago not to support psx games in pcsx2 because of the problems that would come from it, and there was already good psx emulators out at the time so it was never a needed feature/focus in pcsx2.
back to topic
Gabest do you have the original Clock Tower game for the psx, gsdx causes the emulator to crash on every boot (it even did it before these revisions), that's the only game I have left that runs into problems now :).
prison_b...
@[email protected] lol...but still it looks kinda better in 60fps,even if the audio is not synced the framerate is great just sayin'
pcsx2gu...
I don't think the human eye can detect a difference of 0.06 FPS, so it's probably good old placebo effect :P

Revision 4945

SPU2-X: silly logic error in IRQA testing for DMA, fixes Atelier Iris, maybe
others.
Thanks to rama for testing.
ramapcsx2
Np, just doing the job :)
Thanks to bsaksida on the forums for reporting and giving out a save :)
danialho...
good collaboration.
miser...
Heh and I just finished it X days ago using PEOpS :P nice anyway +1 for the step in right direction.
bsaks...
Oh and i forgoten i had the same issue using ZeroSPU2 plugin
l3z...
Is this for the crash when you go to the Puni God or was that fixed earlier?
bsaks...
This fix fixes the crash when you enter puni god. It was me who reported on a forum. I had same issue with the other plugin. The earlier version r4600 worked right but when it come to SPU2-X 2.0 it was broken. As statet this fix can even fix other games but i do not know witch one if there are any.l

Revision 4946

GSdx: CRC for Suikoden Tactics JP.
ramapcsx2
Deleted spam about DMC1..
andutrache
Guess this doesn't fix his dragonballs (or in this case DMC) :P
ramapcsx2
Yea, he was like "search the forum yourself dude!" xD
cole.ro...
Is DMC the new Super Robots Taisen?
romeo_ca...
since you guys talking about devil may cry 1 i hope that you've fixed the graphical glitches bug i'm going to check it now and will post a +1 if it's fixed see yaaaaa
romeo_ca...
goddamn it's not fixed yet, people have been complaining about this long time ago don't tell me to use an old version of gsdx because i wanna play with fxaa enabled, shiiiiiit get back to work
pcsx2gu...
Sure boss going right back to work...oh wait...no one is your employee and people are coding this for free so either 1)stfu , 2)use an old version of gsdx, 3)fix it yourself, 4)stfu.
romeo_ca...
wow man, you took my sarcastic comment way too seriously, i was just joking, so you better do (stfu) chill, ok
P.S. i'm a mad scientist so if you pay attention to that you will lose your mind
andutrache
even if this was reported a long time ago it will be fixed when it is fixed.
Roses are red, violets are grey, And not a freaking damn was given that day.
pcsx2gu...
Right, but you still put a -1 vote in this revision. So you're either mad indeed or I was right telling you to stfu.
romeo_ca...
you seem to be a childich person i already told don't pay..... because your little head won't help you figure it out, so no need to explain to you everything your mad throwing bad comment just because i put a - -1 i warned before
andutrache
-1 is to be used if the revision breaks something ONLY.
Not for the fact that it does not fix your game.
Grow up, shut up, and have a nice day.
andutrache
Also reading your broken english comments makes me want to puke.
Go learn to type in english correctly.
romeo_ca...
real talk DMC 1 is broken so -1
good night baby
niwa_dai...
Positive to oppose the troll.
pcsx2gu...
You know what's even more awesome? DMC 1 works, so it's double fail for you :P
niwa_dai...
Correct, but this revision did not specifically break it, now having two trolls on the rating system.
ramapcsx2
Lemme chime in :p
mattcallaghan
The folks complaining about DMC should probably look up what happened with the Gran Turismo 4 troll...
miser...
There wasn't any neutral yet;P
Commenting the commit through, maybe we should open an issue or thread in the forum to gather un-listed crc for existing hackfixes with a list of game titles and already included crc's in the first post, with eventual, short explanation for newbies why that matters and where to find crc.
Stupid idea, but it's a bit silly to add them one by one.:P
niwa_dai...
Did this revision manage to break DMC more Ramapcsx2? I knew it was broken before and figured they were just trolling. :P
miser...
@[email protected] This revision just add japanese version crc soo it can use existing GSdx hackfix. It doesn't really changes anything else.
niwa_dai...
That's what I thought, didn't understand how they could break DMC anymore with this.
miser...
>.> lack of edit kills me, forgot to add, it's about Suikoden Tactics - which everyone would see by looking at the insanely hard to understand code which was added(:P) - has nothing to do with DMC.
jfre1...
I stand by the assessment that these days only stupid people are breeding. Hence why you have idiots who bitch about stuff that has nothing at all to do with the commit and put negatives.
romeo_ca...
throwing up @#$%^&*( at us just for reporting a bug, pffffffffff really kids nowadays have no brain, if you ask that bitch who deleted the comments you will find out that the bug was just reported and was not assigned to this commit, kids kids
pcsx2gu...
You retard you've 'reported' this bug in 4 different commits, all nothing to do with that game. If you want to report a bug, use the ISSUES (maybe that's too hard for you?). Also 'FIX DMC1' , 'WHY DMC 1 NO WORKY' 'PLZ FIX MAI GAME', 'PLS PLS PLS WHY DMC 1 NO WORKY FIX FIX GO WORK SLAVES' is not called bug reporting (maybe in retard language but not ours). Now go back in your kindergarten and play.
arcum42
Just for a bit of perspective, imagine it's the start of our weekend, and you've been planning on spending a good deal of it working on pcsx2.
At the start of it, you spend a few hours tracking down a problem, and then satisfied, you commit a fix.
You then automatically start receiving e-mail after e-mail of comments being made on your revision complaining about a bug that has nothing to do with what you just worked on, marking the code you just worked on as negative. What's more, these comments are completely irrelevant to what you were working out, and are drowning out any feedback on your commit.
After a bit of this, your motivation to work on the project for the rest of the weekend is totally shot, and elect to do something completely unrelated for the rest of the weekend.
I don't know about rama, but I've had this happen to me on more then one occasion, often about games that I didn't even own. Even if it's not your commit people are spamming -1's and negative comments on, it makes you feel a bit more reluctant to work on the project for a bit, just simply because you know people are going to be hassling you for no good reason if you do.
Marking a commit as negative can actually be useful, but only if something doesn't work on the current revision that worked on the revision right before it. Then, we know it's an issue with that particular code, and can try to track down the issue, and possibly revert it until we've fixed the problem. When it's about a change hundreds or thousands of revisions ago, all it adds is headaches and aggravation, though.
Of course, I suspect this comment will just end up as tl;dr, but you never know...
shadowladyngemu
Dramarama!
romeo_ca...
y'all bicthes better get back to work and holla at me when you fix that shit, you know what you will do it one day or an other
pcsx2gu...
After your trolling my money is no one is going to fix it on purpose ;) (it's been done before, welcome to the shitlist :P)
romeo_ca...
which confirm that you are a kid (a selfish bitch) but it doesn't matter still MY GAME will be fixed
pcsx2gu...
Comment by [email protected], Today (28 minutes ago)
which confirm that you are a kid (a selfish bitch) but it doesn't matter still MY GAME will be fixed
LOL can anyone spot the irony here? XD
keb...
guys, he's just trolling, there's no reasoning behind a troll.. just ignore him and his request, delete everything you want and don't try to justify it, you don't have to... i know it might be another tedious task but i'm sure there are a lot of people that support pcsx2 that wouldn't mind doing this job for you
cheers and thank you
TM...
@[email protected] Huh WTH is going on whit you?
there https://code.google.com/p/pcsx2/source/detail?r=4918 i was thinking you are a nice Person, but now you remind me of some Roo dude who was Trolling about his Fav. Game(Super Robot Taisen), and at the End it never has been Fixed-.-.
Also i mean you could play http://www.youtube.com/watch?v=4a1c74euB5w Devil May Cry 3 SE(its for PC) its not the First one but it is a nice game.
You see the Developers here do this for free, do you have ever done something like this for Free?, for People like us?
I am very Thankful for they work, i was very Happy at the Day who Eternal Poison got Fixed.
Sisims...
I hope this guy's actions don't deter you from someday fixing DMC's problems. I've always have wanted to play it and have been putting it off, if someday any of you do fix it I know I wouldn't be the only one happy about it, it is after all a classic of the PS2.
I may not play the game in the commit, but I'm +1 this because it works and I don't want trolls telling you guys off.
konaj...
How about posting a proper thread on the forums about the problem (that's what its there for)..
as said before this is unrelated to this commit and in-fact you are deterring them from fixing anything including the numerous other bugs that could make pcsx2 better for all.
<btw un-starring this post since i'm tired of the all the emails>

Revision 4947

Change a few compiler options in Linux to remove a few warnings during
compilation.
arcum42
Note: this commit is not intended to fix or break any games whatsoever, and is purely to make it easier to see real compilation issues in Linux, by removing some of the sillier ones.
gregory....
Yes, that will remove some noise. Hum, I think it will be easier to create an unique global variable.
One question, do you still use codeblock? I'm afraid that recent change might have broken it! Unfortunately I did not have time to check it.
arcum42
It would be nice to have a global variable for compiler flags that we want globally across the build system. There are a few warnings I'd love never to see.
I haven't used codeblocks recently, so I don't know if it works at the moment. For this commit, I was mainly using a batch file to automate building the project and grab all the compilation warnings to a text file.
I was mainly looking for something easy to do with the source to refamiliarize myself with it, really, since it's been a while... ^_^
gregory....
Yep. Actually there is more or less somethings for the global variable. In cmake/BuildParameters.cmake. I tune it a little on r4948.
For the warning, I don't know if I can help, but gcc-4.6 print the option that activate the warning.
arcum42
Thanks. That helps. The two I went after were really the most annoying ones. While there are a bunch of signed/unsigned warnings, I don't feel right turning those off because they may actually be issues.
I seem to recall a plugin had some irritating "unused code" errors, but I'll take care of that later.
I may work on GSnull, since it still doesn't even try to emulate most of the GS plugin...

Revision 4948

cmake: allow to easily set global compilation flags
arcum42
Just noticed that -Wno-invalid-offsetof is actually only valid for C++. Now that I know where it is, I can take care of that easily, though.
arcum42
BTW, I've noticed that when I compile pcsx2 with cmake that it makes a bunch of changes in the locale folder. That gets a bit annoying because I suspect that I shouldn't commit those changes (and I don't really want them to show up when I do 'svn diff'). Is there an easy way to disable that?
jari...
@arcum: You don't have to build in the source directory. Just run cmake in an empty directory and give the path to the source as an argument ("cmake ../pcsx2" or whatever). This might not work if there's something wrong with the cmake setup, can't really test as I don't have a 32bit environment handy.
arcum42
Actually, I do build it in a separate directory...
jari...
Ah, that's not right then. Sorry I can't be of help.
gregory....
Well the behavior is expected. Cmake automatically re-align the po files to the source code. You can delete the "locales" folder, but it would probably be added in the next update. Otherwise you can comment GETTEXT_CREATE_TRANSLATIONS_PCSX2 in locales/CMakeLists.txt
If you want I can also add a variable to disable po file regeneration.
arcum42
That'd be nice. Otherwise I'll accidentally commit the realigned versions one of these days...
gregory....
Ok I will add it later. Anyway don't worry aligned-po are more correct, just useless to commit every revision.
gregory....
You can now disable po noise with -DCMAKE_BUILD_PO=FALSE
By default it is true for release version and false otherwise.
arcum42
Cool, thanks.

Revision 4949

More work on the compiler warnings. Removed the warning flags that are now set
by default.
arcum42
Didn't mean to commit the portable.ini change. Oh well, not a big deal. I'll change that back when I get a chance.
nexxus86
oh my god what have you done? O___O
Now the noobs getting thrown into the emulator without knowing how to configure it O_O
J/K :p

Revision 4950

GSnull: Rework the logging code a bit. (The logging actually prints to the
screen now, for one thing.)
ramapcsx2
Lol, our portable.ini hack. The drama that went into it! :p

Revision 4951

cmake:
* new dev option CMAKE_BUILD_PO: control regeneration of po file. By default
true in release build
* Add a hack for multiarch version of wxwidget

Revision 4952

Following shalma's recommendation, CDVD Status reads now also return the
CDVD_STATUS_SPIN flag.
Apparently this is a common game breaker in PSX titles and it carried over to
the PS2.
This fixes Time Crisis 2 loading and the frozen input in a horror game I have a
dump of.
Please report any other titles you find fixed / broken! :)
refraction
This will not fix DMC 1....
wespipe...
Time Crisis 2 was working fine before....it was TC3 that was hanging. Anyway, TC3 is fixed (fullly playable again) but TC2 is now broken and hangs when attemtping to enter gameplay (exactly like it used to when TC3 was fixed the last time). It is kinda funny how fixing one breaks the other always.
ramapcsx2
My TC2 was broken. I have the japanese version.
Will have to look at your TC2 I suppose.
wespipe...
Thanks! Good luck at straighten these 2 games out and in all their regions. These two are so delicate!
shadowladyngemu
World Rally Championship, Disney's Extreme Skate Adventure, Woody Woodpecker and Dino Stalker/Gun Survivor Dino Crisis don't need "fast CDVD" speedhack to work anymore, nice :)
Some other games still need that hack tho :p
ramapcsx2
Alright, good to know!
I bet those other games will be the same as Time Crisis 2 NTSC-U.
refraction
It probably just needs tweaking :) will nose at it at some point I guess :p

Revision 4953

GSdx: CRC for FF12 Fr.
romeo_ca...
DMC 1? I'm just asking
fagoa...
Thanks, fixed gfx glitches in DMC.
fagoa...
o'rly?

Revision 4954

IPU bug fix by Shalma, well spotted ;p
nexxus86
does it fix games?
ramapcsx2
Nothing I've thrown at it.
But it definitely would break games that happen to trigger the bug condition.
konaj...
I was hoping it would fix the phase paradox "IPU ERROR: different transfer mode!" but no such luck, still nice fix I'm sure it will fix/help something :)

Revision 4955

GSdx: Bogus MSB bits of TEX0.CSA should be ignored as it looks. Only corrected
where the palette is read (this fixes "Idol Janshi Suchie-Pai IV"), writes to
the CLUT may be handled the same way, but so far no game has been found broken
because of this.
sudonim1
I think you made a mistake here, I can't think of any reason why the pixel format would affect the CSA mask, surely only the CLUT format should be relevant.
For that matter the temporary buffer likely wraps (which would affect 256 colour palettes above the 512 byte mark if using 16-bit CPSM or at any address other than 0 if using 32-bit CPSM), so the code should probably be generic.
gabest11
Yes, it probably wraps. That's why I wrap the starting address by the maximum entry number for each format. 32/8 => CSA & 1, 16/8 & 32/4 => CSA & 15, 16/4 => CSA & 31 (CSA already 5-bit). If the uploaded data is larger then the space until the end of the CLUT buffer, then we are still screwed.
sudonim1
Okay, that makes sense if you're not going to deal with the actual wrapping. Well, in that case you're missing the mask on the CPSM=32bit and PSM=4bit case (should just mask all CPSM=32bit).
On another note, I'm sceptical about the need to emulate the temporary buffer. Do games seriously overwrite palettes in video memory then continue using them? That seems very unlikely considering that the largest palette is 512 bytes and the hassle of managing the temporary buffer when your palette only exists there.
gabest11
Absolutely, every feature of the 1k CLUT buffer is used by every game. CBP1/2 and the CLD conditions, the two different addressing modes, even TEXFLUSH should be emulated for correctness, it may be possible to change the CLUT and use the last cached texture page without reflecting the new palette if there was no TEXFLUSH. But no games do that, none I know of.
gabest11
I'm not sure what you mean about 32/4. One CSA "unit" (written or read) is 1/16th of the 1k buffer (same as 16/8). 16 * 4 bytes => 64 bytes.
gabest11
Oh, the largest palette is actually taking up that 1k, 256 * 4 :P There is nothing to mask there. There is one game that can still get the CSA wrong with this format, mentioned in the comments somewhere, street fighter ex.
gabest11
Hmmm, talking too much to myself, but sfex may be broken now. Since I specially made the CLUT larger in memory for the overruns and do not wrap the writes, it won't meet with the reads anymore.
gabest11
Definitely broken :P
gabest11
> That seems very unlikely considering that the largest palette is 512 bytes and the hassle of managing the temporary buffer when your palette only exists there.
Remembered one more little nasty trick games use. Upload in 32 bit format to be fast and use it as 16 bit. Since the 16-bit layout is split between upper and lower words of the 32 bit entries, this creates an ugly situation similar to swizzling and format casting in the vram.
sudonim1
Well I fully expected them to do that, anything documented as faster
will be used.
ramapcsx2
None of my test games got fixed or changed. Must really be a rarely used thing.
konaj...
same here, (tested all my games that have some sort of gfx problem, Echo Night Beyond, Dropship, Phase Paradox, Galerians Ash) but no change with them.
I bet this will fix alot of broken Japanese games though.

Revision 4956

GSdx: Also wrapping CLUT writes now, previous revision broke SFEX. CLUT buffer
overruns are very rare, tell me if you find any other game doing it.
jfre1...
Should we notice any changes to any games from these changes?
gabest11
Only found two in the last 8 years. It's a programming error in these games, that just happens to work on the real GS.
ramapcsx2
In case you're interested in another title that has missing stuff both in sw and hw, a 2D fighter game called Mark of the Wolves is missing all the bg.
Screeny: http://simplest-image-hosting.net/jpg-0-gsdx-20111103130220
GS dump: http://www.sendspace.com/file/k4kx8m
gabest11
sprite with Z = 0xefffffff
Z buffer full of 0xf0000000
ZTST_GEQUAL
The uint-float-uint conversion makes the interpolated Z also 0xf0000000, which makes the whole screen painted over with blackness.
Need a more accurate conversion for both renderers...
sudonim1
Oh, I had an experimental patch to deal with that but didn't find any games which required it so I abandoned it.
Rather than (float)Z, you can do... I think it was ~Z ^ ((u32)((s32)Z >> 31) >> 1).
This requires a little explanation I guess: the intent is to flip the MSB and if the MSB is now set (negative float) invert all other bits to reverse the ordering (instead I'm flipping all bits then flipping the lower ones back if the MSB was originally set). The result should be conversion to float that preserves the unsigned integer ordering (but which isn't linear and can result in denormals, infinities and NaNs). This would of course only be suitable for sprite based games.
gabest11
The whole float conversion is only needed because there is no way to efficiently interpolate a 32-bit unsigned int (even the real gs does some workaround, gsuser mentions slower operation mode for 32 bit Z buffer). A single float is very convinient, as it is just another element of a SSE register, like a color component. Obviously it will never be able to encode the full 32 bit range without holes. I'm thinking of a bypass, sprites are 2d, z is uniform, storing it along with the primitives and reusing it later directly could be hacked into the drawing process.
There is a logZ mode for dx9, also changes the distibution to make parts of the range more accurate. Still not a universal solution, for example clears by write transfers can fill the z buffer with values that aren't similary scaled. Not to mention rendered depth maps for shadows.
Third option would be using doubles (SW mode only), outside the scope of SIMD, but still with SSE instructions of course.
ramapcsx2
So this is the limited z again..
Well, at least we know that lots of current bugs would get fixed by a clever workaround :)
(Tales of the Abyss, Destruction Derby, some stuff in SotC, prolly every other report of missing graphics on the forum :p )
nexxus86
what's wrong with Tales of the Abyss?
I only know that it has post processing issues when using non-native resolutions.
ramapcsx2
Tales of Legendia, sorry :p
thiago_...
why gsdx avx version don´t updated? only sse2... 3 and 4 have updated...
gregory....
Gabest, I tried to compile GSRendererHW.h on linux but I got a bunch of errors.
Most of them are due to the mix of declaration/implementation/template in only 1 file. I think it would be better to separate the declaration and implementation at least for *hack*. Gcc does not inline function when they are function pointer, if it is the same for MSW, there will be no speed impact. Another solution will be to add this-> to access member of the super class, but I'm not sure it will work for the deep buried Hacks class!
Others errors come from "__super::" which is a msw extension. I think it could be replaced by "GSRendererT<Vertex>::" which is pure c++.
Opinion are welcome, I'm cleary not an expert on those topics. Anyway I can still disable everything with some #ifdef but that could worth it to make it cross-os.
gabest11
Last time I checked it compiled error free. Since there is no HW renderer for linux in GSdx, that file should not be included there at all, the rest has already been cleaned up.
As for the separation, that class is a template. Members are only generated when you derive a new class from it, if you put it into a cpp file, nothing happens, no code is actually compiled. Sure, you can pre-declare future derivates and force it, but that's not what template classes are about :P
sudonim1
That doesn't mean that you can just write whatever you want in a
template which isn't used. Templates aren't macros, MSVC just
(incorrectly) treats them like macros.
gregory....
Current code base is OK. Actually I'm working to extend GSdx capability on linux :) Well for the moment, just create a skeleton with enough opengl doc to understand the global architecture.
I might have done somethings bad when I derived the class. I guess I need to read some class template doc. Anyway it is not critical for the moment.
gabest11
Every part is used and compiles in MSVC, the problem must be the __super keyword which gcc does not know. Feel free to replace it with a reference to the parent class, as I did replace every other included __super already.
gabest11
gregory.hainaut: For a start, replacing SDL with opengl would be nice, just for the SW renderer :) I never really liked that dependency.
gregory....
Hum, you mean the SDL glue inside GSDevideSDL.cpp? Hum that might be possible. In my process of documenting the HW interface I will do the SW interface too. You only use SDL to blit the CPU computed texture to the backbuffer?
The annoying part will be to replace SDL window management with xlib (and ms equivalent).
gabest11
No, not like that.
GSRendererSW together with "class GSDeviceOGL : public GSDevice { ... implement minimal functions for presentation in opengl ... }"
gabest11
For those "minimal functions" see GSDeviceSW and GSDeviceSDL :D

Revision 4957

Game patch: Dead or Alive 2 (J) [SLPS-25002) playable with the R5900 recompiler.
Does not make other versions playable, there seems to be a separate issue with
them.
A proper fix for this is not happening nor is it even desirable because of the
performance impact it would have, the game seems to unintentionally rely on the
RPC arguments remaining in cache until sceSifCallRpc. A slightly better patch
is possible, this one eats some extra EE cycles and might theoretically make the
game emulate at less than full speed (but probably won't in practice).
refraction
Good find. The patch should only effect loading times, cache isn't required once the game is running.
sudonim1
Well that's only because it doesn't call the sound driver twice in quick succession like this outside of the boot sequence. The problem is potentially there for the full runtime (and the performance impact is too). It's not like it stops using the sound driver once it's booted :P
shadowladyngemu
It did need the cache after running
sudonim1
Basically the rpc on the EE side looks like this:
prepare_args(buf);
while (rpcinprogress()) ;
callrpc(func, nonblocking, buf /*arguments*/, 0x80, buf /*return*/, 0x10);
So if it ends up waiting for an rpc to finish that first rpc overwrites the arguments for the second. This can happen any time while the game is running potentially.
sudonim1
A better patch would be to effectively swap the first and second lines of that pseudocode.
refraction
The crash only happened loading and going inhaled (after choosing char) for the duration of the fight I could play with the rec, of course I had to swap back at the end.
refraction
Inhaled? Ingame, stupid auto correct

Revision 4958

Added CRCs to the DoA2 patches because pirate game copies are often based on
DoA2. If your game identifies as DoA2 and it isn't, you're going to hell.
andutrache
Does this patch work with DoA2 Hardcore too?
sudonim1
Damned if I know, I haven't got it to test (but probably not, I think all versions but SLPS-25002 have a different bug in addition to this which makes them black screen).
If you have got any versions other than the two I added patches for, e-mail me and I can adapt the patch for them. (But this probably won't result in the game working just yet.)
kaboo...
I just tested it with DoA2 Hardcore
black screen, but still way better than a complete crash.
glmnumb...
Hardcore (SLPS-25026) still crashes for me. Doubt it'll ever be playable
sudonim1
It still crashes because I haven't patched that one. It probably would black screen like the US version if I did though.
emailgoo...
Perfectly works. Thanks.

Revision 4959

Forum user ateste was so kind and found/fixed a savestate issue with Lilypad :)
The problem would cause lost controls or "Controller disconnected" messages in a
few games.
This fix is temporary and only works with Lilypad, until we take care of the
core issue.
ramapcsx2
Fixes Tales of the Abyss controls getting stuck and Silent Hill 2 DS2 disconnected messages.

Revision 4960

microVU:
- Rewrote and simplified the TriAce gamefix
VU interpreter:
- Implemented a TriAce gamefix for vu0 interpreter
ramapcsx2
Works for all 3 games :)

Revision 4961

Ateste worked on the Time Crisis fix some more and figured out the (hopefully)
right flags in the (hopefully) right places.
Thanks for helping out! :)
ramapcsx2
Note: I still can't say whether this fixes TC2 NTSC-U.
refraction
Either way, its nice to figure out some of the cdvd mystery. Does it sort any other freak cdvd/sif games?
ramapcsx2
Nope, just also still fixes my Japanese horror game, as the earlier hackfix did too.
refraction
Well that's good news either way :) we could really do with our debugger back, would make our iop debugging life much easier!
ramapcsx2
Agreed. Who starts coding a gui? :p
refraction
hmm, maybe jake can do some work on the sly? xD
ramapcsx2
xD
jeremybe...
Great job on the continued support of this fine emu. One thing...i don't know where exactly to report issues but I noticed on google noone seems to have reported Metal Arms as not working. I don't think it has worked for a few months now. Thanks again for the good work!
refraction
Jeremy: may I suggest the "issues" tab possibly? :p
jeremybe...
LOL! I Never noticed that regular users could report there. Sorry for my ignorance!
ramapcsx2
ICO NTSC supposedly broke with this.
f3r....
brakes ICO NTSC. after sony copyright screen just go black.

Revision 4962

Reverted r4942 as some games need this to work..
Fixes Metal Saga menus and should fix Fahrenheit, too.
ramapcsx2
This is a pretty blind revert, so the original bad code is back, too :p
Gregory: I totally missed your compat report for this rev :/
refraction
How blizzare! Can I get a dump?
Dante2...
I wonder when u fix Terminator 3 Redemption cuz it was working and as far as I remember from revision 4866 it barely runs :/
refraction
Amipc: can you confirm the revision it broke please, that revision would never affect emulation.
yxml...
- -old code back
Dante2...
i can't confirm which revision broke that game but i also suggested a long time ago to do something with Soul Calibur 3 since it started to run slowly from revision i don't remmeber and still with the newest one it runs awfully.
pcsx2gu...
The Soul Calibur 3 (and 2) slowness is normal and the revision that causes it is r4592. 'Fixing' it will mean breaking other games, so compatibility comes first. If you can't confirm which revision broke the game, no one can track the bug thus the chances of it being fixed are greatly diminished.
shadowladyngemu
Terminator 3 Redemption was broken in the new gif rewrite, there's other games broken since then too and cotton had a thing planned for those but who knows now :p
gregory....
Rama: Do not worry. Fortunately for us, my girlfriend currently play the game so I found the regression on a regular update :)
Refraction: Do you want a dump of Fahrenheit? In theory I can do it, in practice it will take more time to found the good option on linux :p By the way I don't know if I need the DVD or if I could use directly the iso, because the DVD is inside a cardboard in my future flat!
refraction
I have a Fahrenheit dump ya :) its a silly timing issue, I can fix that without the revert but I need to check metal saga
poisiono...
Otherwise, for disc-dumping, i'd suggest "dd if= of=" and so on, or so.
:)
konaj...
hm I tested metal saga in r4958 and it works fine - so i'm wondering what this fixes.
konaj...
ah spoke to soon :p metal saga does indeed get a error in r4958 (after battle)
Vif1: Unknown VifCmd! [1b]
Vif1: Unknown VifCmd! [8e]
Dante2...
It's hard to track proper revision which breaks Terminator cuz I don't download and test every revision with this game :/ Guess I'm gonna do it. Another thing is that u wrote that rev 4961 can run Dead or Alive japanese version so I managed to get this version and guess what it crashes emulator like in previous revs. But I also have US version which doesn't crash 4961 rev but there is only black screen and nothing happens.
ex1991e...
".. cotton had a thing planned for those but who knows now :p
- shadowladyngemu "
ya, who knows now indeed. As he is leaving PCSX2. Man he would be sorely missed.
"...It's hard to track proper revision which breaks Terminator
- Amipc "
The correct revision would be "r4821". I would know because I reported it the first time the problems appeared."

Revision 4963

GSdx: GSRendererHW.h and GCC are good friends now.
gabest11
Explanation:
http://gcc.gnu.org/onlinedocs/gcc/Name-lookup.html
In order to make it clear that you want the member of the base class, you need to defer lookup until instantiation time, at which the base class is known. For this, you need to access i in a dependent context, by either using this->i (remember that this is of type Derived<T>*, so is obviously dependent), or using Base<T>::i. Alternatively, Base<T>::i might be brought into scope by a using-declaration.
gregory....
Thanks you very much :)
ramapcsx2
Nice, is this an attempt at hardware acceleration for Linux? :p
gregory....
you know :p
Actually it is an attempt to learn both opengl and Dx11 in one shot :) Which are, contrary on troll, very similar.
poisiono...
Biased PReP hopes opengl gets the most gunpowder :)
godofdr...
good work. find more plugins that are a not good friends and make that plugins as a good friends.
burnhel...
Do friends is always a good thing:)

Revision 4964

GSdx: as usual, going back to msvc, suddenly wild errors appear.
Dante2...
As i can see one more time something u try to improve destroys something which worked previously. As far as concerning Terminator I've managed to find revision on which it ran decently however it hanged up whole computer on level when u pursue TX with ble pickup truck. The revision is 4804 and next one I have is 4828 but on this one the game gfx is crashed and with further revisions it gets only worse. On 4804 the game speed is decent 40-60fps and before running the game there is a screen with PAL/NTSC selection and this screen is unavailable in newer revisions.
refraction
thank you amipc, however could you keep it all in one place please? possibly open an issue with the information youve gathered so far?
thanks.
kaboo...
errors the newest pokemon!

Revision 4965

GSnull: More cleanup on the logging code. And lets actually put return
characters in the log. :)

Revision 4966

GSdx: Added a simple workaround for the 32-bit z problem talked about in the
comments of r4956. Since sprites are flat and there was an unused vertex member
(t.w), I just decided to pass the raw uint32 value in that to the scanline
drawing function. It does not fix triangles and other primitive types, of
course. The ideal solution would be to break z into two parts (like 8:24 bits,
and only care about the upper part when not zero), interpolate separately and
rejoin when needed, it is just too hard to add another variable when the
assembly code is already so tightly optimized to use every register.
(HW mode z-test expects a float input, so this trick cannot be done there.)
zwei.ez...
I wonder if this fix Eternal Poison text issue?
https://code.google.com/p/pcsx2/issues/detail?id=763
ramapcsx2
Reading the last comment, Z doesn't seem to be the issue.
Did you try it yet?
gabest11
Can't find this game anywhere. Is there a gs dump?
zwei.ez...
No I haven't, can't find my copies.
How do you make a gs dump?
ramapcsx2
Here's one showing the problem:
http://www.sendspace.com/file/buw5cu
zwei.ez...
Just tried it, it's still there.
gabest11
This is an interesting case, ZBUF.ZMSK is set to 1 all the time.
Writing to the z buffer should be enabled at least when the text is drawn, as it is supposed to prevent painting over by the gradient background.
ZBUF.PSM is also looking very suspicius, it has the value of 10 (== PSM_PSMCT16S). Z formats have 4-5 bits set, therefore I auto-correct it to PSM_PSMZ16S with a blind ZBUF.PSM |= 0x30. This is the step where I'm not sure how the real thing works. For the text to be seen it should probably trigger some error and reset ZMSK to 0 somehow. As for the format, it may just keep working with the PSM_PSMCT16S data layout, even for a z-buffer.
sudonim1
If ZMSK is set, ZMSK is set and saying anything else is denial :P
If it draws over the text with a background after that then there's meant to be another mechanism masking out the text (such as alpha testing or destination alpha blending or, um... just doing a separate depth pass first).
gabest11
Cannot find anything else, it draws with ZTST_GEQUAL, the text sprites has Z = N, the background has Z = N - 4. If I force ZMSK = 0 it looks almost correct, but that "almost" is bothering me, the outline of the text gets a strange colored appearance, similar to cleartype.
sudonim1
Well there must be something else because ZMSK is pretty absolute. I did think of one really perverse thing and chose not to mention it: is it by any chance using the same memory for colour and depth (I know, omgstupidhack).
sudonim1
Of course on a saner note it could be a depth pass followed by a buffer transfer that isn't working even in software (perhaps the strange depth format).
gabest11
ZMSK only disables writing, testing still have to be done using the PSM_PSMCT16S format, but just checked it again thoroughly and the only time ZMSK is 0 when it clears at the very beginning of the frame. The whole time there is not a single value other than 0 in the zbuffer, completely empty.
sudonim1
Well, any transfers to the depth buffer address?
sudonim1
Had another bizarre thought. For some crazy reason the game might use different GIF paths for the background and the text and an emulation issue could be getting them out of the intended order (really long shot).
zwei.ez...
I'd be more than happy to test and report back any change. :p
sudonim1
Test what? We're trying to work out why this works on a real PS2, because currently it makes no sense. (And the answer might be that it doesn't work because the data's already wrong. A GS dump replayer program for the PS2 might be a good idea...)
sudonim1
Oh, now I think about it, wasn't this the game which used Z values too large to be represented by the selected GS depth format?
gabest11
No, z's are around 64k only.
zwei.ez...
Test whatever you come up with to see if it work or not, sorry.

Revision 4967

GSdx: Just remembered triangles were occasionally converted to sprites, need to
set t.w there as well.
ramapcsx2
Works for Mark of the Wolfes :)
konaj...
Hmmmmmm Nice I think this fixed the Wild Arms Alter Code F encounter bar
ramapcsx2
Apparently there's an issue with this change ><
http://forums.pcsx2.net/Thread-Transparency-problem-with-GSdx-software-renderer?page=2
ramapcsx2
From Lana:
RE: Transparency problem with GSdx software renderer
r4964 was fine, r4966 didn't show the fire at all, r4967 showed the fire over the solid... carpet... thing... transparency issue...
gabest11
fix0red
ramapcsx2
Great, didn't think you'd watch this still :)

Revision 4968

i18n: refresh sv_SE and it_IT.
gregory....
It was just to clean my todo list :) And refresh others translations, but PCSX2 was quite stable recently so there isn't any change.
poisiono...
It is, thanks to all the good work from you and others :)
The thing i mostly long for at the moment though,
is the same rendering/upscaling/whatever support in
GL in linux, as i windows :), or atleast close to it.
But again, thanks gregory and all the other devs for working bloody hard with ps2 emulation :)
gregory....
Current GL plugin (zzogl) use a different upscaling algorithm (it called anti-aliasing). Unfortunately the plugin have some emulation glitch, some people complain about the speed too but I never test the window version. So it might not be a good idea to nuke your window system :p
poisiono...
I never nuke windows, need it for supporting friends.
Though i use windows as a game and VST os, even have internet disabled in win7. The rest of my 98% in computer usage is in Archlinux :)
Will test and see how zzogl or similar, comes along with time i suppose :)
It has atleast been perfectly playable in my tests, regardless of resolution and looks :)
pg...
Fixed some more stuff on swedish translation.
Oh well...
http://forums.pcsx2.net/attachment.php?aid=30373
pg...
And some more.
http://forums.pcsx2.net/attachment.php?aid=30409
gregory....
... Take your time to finish. Typo will not make PCSX2 unusable anyway.

Revision 4969

Create a branch to play with a new GSdx backend
nokiaqdman
OpenGL? That would be so rad.

Revision 4970

gsdx-ogl: preliminary work of an opengl backend. So far only skeleton and
various note.
Current goal is to implement the SW render with pure opengl instead of SDL.
I plan to use OpenGL4.2 capability (the latest actually) => need libglew1.7 and
a Dx11 capable GPU/drivers.
wespipe...
Quite the undertaking. Good luck! I'll keep my eye on the progress.
daimaola...
finaly!!!!! REALLY looking foward this plugin, tryed the soft mode in linux and althogh slow, even with 6 threads, it worked over 9000 times better than ZZogl, NOT a single glitch. It made games like GT3 and 4, blood will tell and god of war series playable in linux.
gabest11
Meanwhile, Intel demoing the new larrabee card. I really hope they can turn this into an actual product next year. GPUs just don't seem to go into a direction where you can write your own rendering code.
jammanl...
awesome, so will it eventually support hardware to (im talking long time in the future)
ramapcsx2
http://www.guru3d.com/news/intel-50core-knights-corner-promises-1-teraflops/
gregory....
@daimaolaharl, 6 threads is too much, you must keep some CPU for EE&VU recompiler. Hopefully we will gain few fps with opengl vs SDL (both SW renderer) because I think some operation will be accelerated by the GPU.
@jammanlive, eventually yes. Actually it might be easier than expected. I think I could reuse 90-95% of dx code when the opengl device will be properly implemented. I'm just afraid of the awkward texture management in opengl and the AA stuff (extra bonus :)).
On the intel subject, I'm not sure it will hit mass consumer market soon. It seems to be designed for PRO and scientists so it will cost at least $$$$ :P
jammanl...
oh, so will you just be using a wrapper? or is it actually just the same?
gregory....
Actually GSDevice is mostly a wrapper. And the HW/SW renderer uses the GSDevice interface. I will try to keep the OGL device interface as close as the DX device interface. So I could reuse more code in various place (and reduce debug).
Anyway I did not implement anything for the moment :) I have a good overview but not yet all details. Ask me again in a couple of months :p
daimaola...
@gregory yeah i know that but i tried with everything from 2 to 12 and it just won't reach 100% cpu even when it was still runing below 40 in GT3. ZZogl runs like 40% faster although it's unplayable. maybe it's a bug in the linux build? just in case, PH II X6 @ 3,5, 8GB with pae, hd 6950 with fglrx 11.11 and ubuntu 32 11.04
Or should i fill a bug report?
daimaola...
oh i forgot, using pcsx2-unstable r4951 from the ppa
gregory....
I don't think you can reach 100%. Anyway do some test and take the best for you. Note you must close (completely) PCSX2 when you change swthread options. The sw thread pool is created only once at the first start of the GS (hum maybe you can unload the plugin but I'm not sure)
Otherwise, you have the expected speed and behavior.
daimaola...
yes i thoght that maybe the changes didn't take efect if i didn't close it so i did that.
So it normal, i'll just have to wait to the openGL code then. :P
nokiaqdman
Oh god yes! I really can't wait for Windows support. I always thought that any OpenGL plugin could emulate PS2's OGL much better and accurately than DX.
joe_2...
继续努力!伙计们
Continue to work hard! guys
gregory....
@nokiaqdman, Hum do not expect too much. Opengl, Dx are only a pipeline that exposes GPU features to the application.
nokiaqdman
I don't expect better speed if you mean that, but rather better accuracy which may "hopefully" fix some graphical glitches cannot be fixed in current Gsdx.
gregory....
Nop, I deals with accuracy. OGL, Dx are just a way to move data from CPU to GPU (or reverse order), enable some GPU renderer unit (like alpha blending), upload shader code etc... Shaders language allow to program "some processors" inside some GPU pipeline step.
For example, GPU support 32bits floats value for the depth buffer (also called the Z-buffer). Several glitch could be fixed with a 64 bits floats (ie double). OGL will not magically change your GPU, you can select 8,16,24 and 32 bits but nothings more. Now if GPUs were updated to support doubles, then you will need to wait that DX or OGL give developer the possibility to use them. The limitation is the GPU (hard) not DX neither OGL (soft). That why Gabest want a new class of chip :)
Here an interesting link which show the additional access you've got from OGL. The difference is very small.
http://rastergrid.com/blog/2011/10/opengl-vs-directx-the-war-is-far-from-over/
Dante2...
Hey can anyone tell me where I can report games that stopped working on newer revisions? Cuz I want to report that Van Helsing stopped working supposedly from revision 4828 (like Terminator 3 Redemption).
Wagnar...
Check the Issues tab.
ekenney...
Not sure how to download this. I probably can manage to compile it though, I have some basic Programing experience....
jammanl...
@[email protected]
you don't have to compile if you don't want to there is a build bot, although you still can if you wanna make some small changes
gregory....
1/ For the moment nothing is done. It will takes weeks (months) to have some images instead of a blackscreen
2/ The goal is to make opengl first working on linux. Buildbot build ms executable..
3/ I create a seperate branch because it is very experimental. Buildbot will still build the trunk.
Anyway you can get the code with a "svn checkout http://pcsx2.googlecode.com/svn/branches/gsdx-ogl" gsdx-developper-only
dubigr...
"2/ The goal is to make opengl first working on linux."
Are you alone in this?
How can we help ?
gregory....
Don't worry I make good progress:) I already implemented several parts, it is very rough and buggy as hell but I need a global infrastructure first. Then we could polish it later. Develop for 2 OS on the same time will only cause headache anyway.
jammanl...
ah yeah fair enough, this is why im glad i always have a Linux partition handy
leandro....
cool!
gregory....
The bot does not build developement branch (aka nothing work so far). You don't miss anything for the moment. It doesn't work on Windows and it only shows a fat black rectangle.

Revision 4971

gsdx-ogl:
* make a rough implementation of most of the opengl device interface. Only a
savestate nothing to expect yet.
* depend of libglew 1.6 (normally 1.7 but I manually defined the only missing
function)
daimaola...
hey gregory could you update your ppa when you finish this? i've been having problems compiling the lastest revisions
gregory....
I'm not close to finish to port gsdx to opengl but I could update the ppa. I won't have any free time this week, I will do it next week. Ping me again if you see no progress in case I forget it.
willianh...
compile error: (Arch Linux)
[ 83%] Building CXX object pcsx2/CMakeFiles/pcsx2.dir/x86/aVUzerorec.S.o
[ 83%] Building CXX object pcsx2/CMakeFiles/pcsx2.dir/Linux/LnxKeyCodes.cpp.o
Linking CXX executable pcsx2
[ 83%] Built target pcsx2
make: ** [all] Erro 2
==> ERRO: Uma falha ocorreu em build().
Abortando...
pcsx2
gregory....
To save me some time, can you compile with only core (make -j 1) and copy past the real error output message at the end. Thanks you.
willianh...
work now
gregory....
@daimaolaharl,
I update PPA. Oneiric build will finish soon. Natty is ok, previous Ubuntu versions were dropped.
willianh...
Gregorym Cool, I'm looking forward to receive the openGL in the emulator .. PCSX2 can play well on linux!

Revision 4972

GSdx: re-implemented the drawing pipeline in c++, just for reference and easier
debugging.
gabest11
It actually looks shorter in assembly.
avihal
Does it affect performance?
gabest11
Nope. It's only enabled by removing an ifdef, but if I need to debug something in the future I don't have to refer to the nasty register view of visual studio.

Revision 4973

gsdx-ogl:
* Properly allocate/delete opengl object
* Request a debug context in SDL, add some code to log opengl error
* Fix context creation. For the moment only request ogl4.1 (AMD does not support
yet 4.2 and it needs libglew1.7 too...)
DanrleiS...
There is time to moving on to R5000.
gabest11
Can't we get rid of SDL somehow?
willianh...
@gregory
You're adding support for openGL, right? tell me if it will be faster than the DX?
gregory....
@gabest,
For the moment I'm keeping SDL for the window management (that include the backbuffer) and I'm replacing all the rendering code with pure opengl. Then the next step would be the replacement of the remaining SDL part.
@willianholz1,
Yes I'm adding opengl but no it won't be faster.
chuuey
OpenGL probably won't be faster, but it will be faster than software rendering and more accurate than DirectX at the same time, i presume ;) Keep it up :)
jammanl...
does the ps2 use opengl its self?
gregory....
Hum, I think there is some misunderstanding about DX and openGL. They are only high level language to send command from the CPU to your GPU. It won't make our GPU faster or more programmable. If you want to compare dx to openGL, you can compare
1/ MS only vs Multiple environment.
2/ Dx API vs openGL API. Most people love the first one, the others love the second one.
willianh...
I'm waiting for that use OpenGL support Linux, as well as the dolphin emulator that uses OpenGL believe would be a great support for it.
gabest11
Completly unrelated, but I found something interesting:
http://x264dev.multimedia.cx/archives/249
I wasn't aware of the developments of such low latency codecs like this, but seeing how well onlive works I got curious. It would be interesting to implement multiplayer this way, streaming the picture in h264. Pad plugin trivial, audio should be as well. However, all plugins should share the same networking code, that needs some coordination from pcsx2 itself.
jammanl...
that seems like a great feature that think ive only ever seen in a snes emulator and always waned it on more emulators... but i dont think its a priority atm
kojikni...
The main goal of openGL would be portability of code... where as DX is windows only, OpenGL can be used independently of OS... Even if it's not faster than DX in windows, it'll be a lot faster than software rendering in Linux.
gabest11
Well, directx is portable, look, it's being ported to opengl :D

Revision 4974

gsdx-ogl:
* implement shader code (subset that seem to be used in SW mode)
* some hack to fix some alignment issue with GSVertexPT1 structure
* Lots of various opengl fixes. Remaining unsupported GL feature are inside SDL.
nickto...
None of your revisions are available on the SVN download place since r4968
gabest11
Try __aligned(struct, 32), it will be padded then.
gabest11
I mean GSVertexPT1.
nickto...
is this going to end up on the list of automated builds?
http://buildbot.orphis.net/pcsx2/index.php
gregory....
Thanks Gabest I will try it.
@the others, the bot does not build developement branch. You don't miss anything for the moment. It doesn't work on Windows and it only shows a fat black rectangle.

Revision 4975

GSdx: Found where the bypassed int z was destroyed. (bug appeared in r4967)
romeo_ca...
haliloya
jfre1...
Hallelujah you mean
felipefp...
jfre - i believe he was joking writing the word like that. ;)
mickamar...
the pcsx2's GUI doesn't change ; it's the plug-ins GSdx that change

Revision 4976

GSdx: this fixes some of the flickering in THPS, objects in the far distance
still have some z-fighting problem, z values used are too large and too close to
each other.
ramapcsx2
Well, the shadows in The Mark of Kri still blink.
But it's still a big win to even see the backgrounds here :p
gabest11
I was comparing the z buffer to d3d's output and found it to be a bit different, somehow it is a lot smoother, like it was internally interpolated with doubles, it just cannot be pure floats and be that nice.
gabest11
On a closer look, I'm having the same problem interpolating horizontally.
Example:
left side z = 8405864
stepping size = 0.057764053
8405864 + 0.057764053 = 8405864, the whole line stays flat.
d3d: http://imageshack.us/photo/my-images/502/d3d56248f5044rz101a4049.png/
sw: http://imageshack.us/photo/my-images/528/sw255279f5044rz101a4049.png/
Look for the big triangle in the middle.
gabest11
Lot better now! Only slightly different than d3d.
http://imageshack.us/photo/my-images/41/sw355279f5044rz101a4049.png/

Revision 4977

GSdx: more fixes to z-interpolation, THPS4 looks alright now.

Revision 4978

GSdx: less gaps between triangles, it was more noticeable with psx games, having
a lower resolution.
gabest11
r5000 getting closer :D
willianh...
before the r5000 has to get the openGL in linux:)
I hope!
gobantai...
nah, I'd like to see a fully re-written gsdx plug-in :3
agentmc
Hi there!
Guys, how do you run PSX games on PCSX2? I thought they're not supported...
max...
Agentmc Pcsx2 not supported PSX Games But GSDX Plugin is compatible for PSX Emulators (EPSXE , PCSX)
gabest11
The dll is compatible with epsxe.

Revision 4979

GSdx: recent changes caused some errors in line drawing (SoTC loading screen)
ramapcsx2
Gabest:
We've recently started looking at this problem here, the world textures are all wrong.
http://simplest-image-hosting.net/jpg-0-gsdx-20111206011911
It's reasonable to assume a problem with PCSX2 but maybe you can see something from the GS dump here:
http://www.sendspace.com/file/d6mieq
gabest11
http://www.youtube.com/watch?v=eGoslZkwOjY (0:18)
Looks different, but I like the checkboard texturing, too :D
gabest11
How do you get past the intro? It has some SPS and then the picture freezes.
ramapcsx2
If you get SPS the timing is wrong. The game doesn't like the EE timing gamefix (which essentially breaks any order of operations by making them all take the same time).
ramapcsx2
Oh, and MTVU does the same thing.
gabest11
Did it look alright before?
ramapcsx2
Nope, the textures were always looking this way.
Oldest version I tested this with was like from 2007 or so.
Some PCSX2 revisions inbetween failed at the timings so they couldn't go ingame..

Revision 4980

Make the CDVD speedhack safer by excluding full seek delays.
Tales of the Abyss should work with the hack now.
grah...
its been a while since they dont increase the speed
kojikni...
This will only improve game loading speed, not general game performance.
And been awhile? It wasn't that long ago that we finally got 3-core support which was a pretty massive speed increase ;)
nexxus86
I get slight hickups in FFX FMV's when I enable this.
But since it's a hack I guess that we have to live with that.
alok125...
Keep up good job.

Revision 4981

gsdx-ogl: LINUX-ONLY
* implement the saving of texture (take bmp SW code)
* fix the missing "enable attribute code" and the typo in glsl. It works now !!!
* rework a little texture to pack texture into a temporay buffer when src pitch
!= dst pitch
* try to replace sdl with pure xlib (not yet enabled by default but it seems to
work)
Note there still a minor issue, coordinate are different between DX and OGL
(upper-left vs lower-left) so the image is inversed.
gregory....
Hum I found the trick for the image. I need to invert only coordinate in the merge fragment not everywhere!
willianh...
ohhhwww man! thanks.. very well!
ramapcsx2
You're getting an image already? This seems to be going somewhere ;)
jammanl...
screenshot maybe? my Ubuntu partition is being a bit retarded
gregory....
@rama,
Yes it was easier than expected. Well it is only the SW renderer. It is a shame that I lost 1 week of debug because of the typo TEXCOORD0_OUT = TEXCOORD0_OUT... Anyway, there are still some minor openGL issue, but there is a good base now.
gregory....
Here a screenshot of the end of atari logo.
http://i42.tinypic.com/15qzxq8.png
arcum42
Keeping in mind that my nvidia graphics card didn't work with glsl in zzogl either, here's the errors I got on a test run:
convert.glsl (vs_main) :Vertex info
-----------
0(3) : warning C7508: extension ARB_shading_language_420pack not supported
0(3) : warning C7508: extension ARB_shading_language_420pack not supported
convert.glsl (ps_main0) :0(3) : warning C7508: extension ARB_shading_language_420pack not supported
0(47) : error C3008: unknown layout specifier 'binding = 0'
0(62) : error C7549: OpenGL does not allow C style initializers
(for ps_main0-7)
merge.glsl (ps_main0) :0(3) : warning C7508: extension ARB_shading_language_420pack not supported
0(16) : error C7548: 'uniform binding layout qualifier ' requires "#extension GL_ARB_uniform_block_binding_initialization : enable" before use
0(16) : error C0000: ... or #version 420
0(18) : error C3008: unknown layout specifier 'binding = 0'
(+ ps_main1)
interlace.glsl (ps_main0) :0(3) : warning C7508: extension ARB_shading_language_420pack not supported
0(17) : error C7548: 'uniform binding layout qualifier ' requires "#extension GL_ARB_uniform_block_binding_initialization : enable" before use
0(17) : error C0000: ... or #version 420
0(19) : error C3008: unknown layout specifier 'binding = 0'
(ps_main0 - ps_main3)
gregory....
Hum do you have the latest nvidia drivers? Opengl4.2 was release only a few month ago.
Could you replace in GSDeviceOGL.cpp
std::string version = "#version 410\n#extension GL_ARB_shading_language_420pack: enable\n";
by
std::string version = "#version 420\n";
The idea is to request directly glsl 420 instead to rely on extenstion maybe it could work.
arcum42
That actually got rid of most of the errors. The binding = 0 one happens a million times, but it's the only error. (I actually found which file that line was in right about when you commented on it. ^_^)
And yeah, I looked at glewinfo, and it's showing OpenGL 4.1. This is in my test Ubuntu partition with nvidia driver 280.13. I'll have to see what the latest nvidia drivers out there are...
gregory....
Hum it would be better to check the glsl version instead of opengl. I'm not sure they are equivalent. On my side, I have
glxinfo | grep version
OpenGL version string: 4.1.11251 Compatibility Profile Context
OpenGL shading language version string: 4.10
Maybe playing with core/compatibility profile might fix the issue. I don't know.
gregory....
Note I upload a new version that fix the y-axis issue and others stuff. However I saw some bug report on glclearbuffer nvidia implementation so I'm not sure it will work. Besides there is a ./Debug.txt file which contains all opengl errors it could be very useful.
arcum42
On my side it's:
glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 4.1.0 NVIDIA 280.13
OpenGL shading language version string: 4.10 NVIDIA via Cg compiler
I'm trying to get it to upgrade to 290 right now, though, so we'll see if that works. (or maybe I should just go into funtoo, and skip the ubuntu test environment, since it's not relying on sdl 1.3 now...)
arcum42
I'll check it out once I get the drivers squared away. Wish glsl worked cross platform easily...
gregory....
Hum, everything must be cross platform except the glx (window) stuff. However I don't know but glsl420 might needs and openg 4.2 context which is turn might need glew 1.7. For the opengl version you can look in GSwnd.cpp GLX_CONTEXT_MINOR_VERSION_ARB
arcum42
I had to install the nvidia drivers from a ppa, but 290 does have opengl 4.2 support. It gave me some errors, but I'm trying a full rebuild, because I figure I played with it too much with the previous drivers, and probably broke something.
arcum42
The new drivers show this, btw:
glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 4.2.0 NVIDIA 290.10
OpenGL shading language version string: 4.20 NVIDIA via Cg compiler
arcum42
Under r4981, this happens now (after recompiling from scratch and getting rid of the changes you had me make earlier):
convert.glsl (vs_main) :
convert.glsl (ps_main0) :
convert.glsl (ps_main1) :Fragment info
-------------
(0) : error C3001: no program defined
convert.glsl (ps_main2) :Fragment info
-------------
(0) : error C3001: no program defined
convert.glsl (ps_main3) :Fragment info
-------------
(0) : error C3001: no program defined
convert.glsl (ps_main4) :Fragment info
-------------
(0) : error C3001: no program defined
convert.glsl (ps_main5) :Fragment info
-------------
0(87) : error C7011: implicit cast from "int" to "uint"
0(87) : error C7011: implicit cast from "int" to "uint"
Under r4982, it crashes initializing glew. (Error: Failed to init glew :Missing GL version)
arcum42
Debug.txt on the former has:
Source:OpenGL Type:Error ID:1280 Severity:High Message:GL_INVALID_ENUM error generated. Operation is not valid from the core profile. (x7)
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Function glMatrixMode is deprecated and not available in preview contexts.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Function glLoadIdentity is deprecated and not available in preview contexts.
Source:OpenGL Type:Error ID:1280 Severity:High Message:GL_INVALID_ENUM error generated. Operation is not valid from the core profile.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Array object is not active.
Source:OpenGL Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
At the beginning.
gregory....
Hum, I was too optimistic... It fails to create the context on r4892.
On r4891, do you have also the issue on merge.glsl ? I don't know why it does not found the main function sometimes. Could you dump sources_array[0] and sources_array[1] before glCreateShaderProgramv call. Maybe it miss a backslash n or blackslash 0 somewhere.
Debug seems not too bad. First error are generated by SDL. I'm a bit worried about vao stuff. Latter issue must be fixed in r4892 (arg why I did not split the 2 release...)
gregory....
Ah sorry. Facepalm. I didn't implement all shaders. So it is expected that ps_main 1 to 4 on convert will fail. However I need to look if ps_main5 convert is useful.
gregory....
Hum I don't think ps_main 5 is used (or at least not the default configuration).
I think we need to do 2 things.
1/ Implement a callback function for gl_error, so you stop on gdb everytime there is a GL_error. To detect the issue with VAO stuff.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
Source:OpenGL Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Array object is not active.
see http://sites.google.com/site/opengltutorialsbyaks/introduction-to-opengl-4-1---tutorial-05
2/ Ask SDL to use a compatible profile. Note that only SDL uses deprecated feature.
see 3rdparty/SDL-1.3.0-5387/src/video/x11/SDL_x11opengl.c line 413
see http://www.opengl.org/registry/specs/ARB/glx_create_context.txt
arcum42
The vao errors happen here:
Breakpoint 1, break_point () at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:1259
1259 break_int++;
(gdb) bt
#0 break_point () at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:1259
#1 0x0189e7a6 in GSDeviceOGL::DebugOutputToFile (this=0xa575100, source=33350, type=33356, id=1282, severity=37190, message=0xaab2094 "GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.")
at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:1287
#2 0x0189e5d5 in GSDeviceOGL::CheckDebugLog (this=0xa575100) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:1241
#3 0x0189c799 in GSDeviceOGL::StretchRect (this=0xa575100, st=0xa893ed0, sr=..., dt=0xa892708, dr=..., ps=10, ps_cb=0x0, bs=0xa67b7f8, linear=true) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:776
#4 0x0189c1e2 in GSDeviceOGL::StretchRect (this=0xa575100, st=0xa893ed0, sr=..., dt=0xa892708, dr=..., ps=10, ps_cb=0x0, linear=true) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:704
#5 0x0189c83e in GSDeviceOGL::DoMerge (this=0xa575100, st=0xaaad0058, sr=0xaaad02e0, dt=0xa892708, dr=0xaaad0300, slbg=false, mmod=true, c=...) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:785
#6 0x01899201 in GSDevice::Merge (this=0xa575100, st=0xaaad0e48, sr=0xaaad02e0, dr=0xaaad0300, fs=..., slbg=false, mmod=true, c=...) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDevice.cpp:230
#7 0x0196e287 in GSRenderer::Merge (this=0xa534f40, field=0) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSRenderer.cpp:257
#8 0x0196e56f in GSRenderer::VSync (this=0xa534f40, field=0) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSRenderer.cpp:300
#9 0x01980d02 in GSRendererSW::VSync (this=0xa534f40, field=0) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSRendererSW.cpp:64
#10 0x0186bb45 in GSvsync (field=0) at /usr/local/src/pcsx2-ogl/plugins/GSdx/GS.cpp:445
#11 0x080ad6c6 in SysMtgsThread::ExecuteTaskInThread (this=0x9e9a480) at /usr/local/src/pcsx2-ogl/pcsx2/MTGS.cpp:446
#12 0x082fbba2 in Threading::pxThread::_try_virtual_invoke (this=0x9e9a480, method=&virtual Threading::pxThread::ExecuteTaskInThread()) at /usr/local/src/pcsx2-ogl/common/src/Utilities/ThreadTools.cpp:545
#13 0x082fbf6f in Threading::pxThread::_internal_execute (this=0x9e9a480) at /usr/local/src/pcsx2-ogl/common/src/Utilities/ThreadTools.cpp:644
#14 0x082fc0db in Threading::pxThread::_internal_callback (itsme=0x9e9a480) at /usr/local/src/pcsx2-ogl/common/src/Utilities/ThreadTools.cpp:684
#15 0x00d00d31 in start_thread (arg=0xaaad2b70) at pthread_create.c:304
#16 0x00de70ce in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
Backtrace stopped: Not enough registers or memory available to unwind further
arcum42
Actually, that probably won't help much. Oh well, I'm getting to bed. I'll look at it again later...
gregory....
Arcum can you test this context creation on the forum post below. If it works it will be easier to debug my code. You only need to change the opengl version number.
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=268825#Post268825
arcum42
I seem to recall that I found the two errors that said:
0(87) : error C7011: implicit cast from "int" to "uint"
in convert.glsl go away if you change:
vec4 c = ps_crt(TEXCOORD0, ((p.x + ((p.y >> 1) & 1) * 3) >> 1) % 3);
to
vec4 c = ps_crt(TEXCOORD0, ((p.x + ((p.y >> 1u) & 1) * 3) >> 1u) % 3);
I'm not at home, so I can't doublecheck that right now, but I thought I'd mention it.
gregory....
Hum. Ok that seems correct for me. Clearly compiler dependant.
In my opinion, I think we need to fix first my context creation code. Then find the issue with VAO. VAO is the vertex buffer (m_vb) so it render nothing probably.
For your information, I implement the callback stuff in r4983, maybe it will help. On amd gdb it completey lost in the backtrace but error message gives more info.
arcum42
Unfortunately, r4983 doesn't give me an opengl context. Same exact issue as willianholtz1.
And I'm guessing that error I mentioned was just a warning and didn't affect things. Warnings are irritating, though, and that seemed like the readiest area where types were mixed. (And, yes, that was the right spot. I'm assuming it wants both arguments to an operator to be the same type.)
gregory....
It is better to fix it anyway.
For r4983, the idea was to apply only my change onto r4981. Somethings like that:
svn up -r 4981 .
svn merge -r 4982:4983 .
On the context creation. The function GSWnd::Attach return a false somewhere. Can you check where is happen, this function would need some printf.
arcum42
It's failing at
if (!fbc || fbcount < 1) return false;
fbc and fbcount are 0 at the time. (Or false, I'd assume on fbc.)
arcum42
Actually, just saw the type on fbc. It shouldn't be 0, in any case. Sounds like glXChooseFBConfig failed, at any rate.
gregory....
Hum. fbc is an array and fbcount is the size of the array. So it failed to request any visual. Anyway, on google I found an nvidia document to request a 10 bits pixel color (see below). The only difference I saw is
1/ XopenDisplay 0 instead of NULL
2/ set GLX_RENDER_TYPE
3/ set GLX_DRAWABLE_TYPE
With glxinfo (maybe somewhere in the nvidia driver panel) you can see all the visual supported by the driver. I request standard stuff that stange
Display *dpy = XOpenDisplay(0);
//The desired 30-bit color visual
int attributeList[] = {
GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT,
GLX_RENDER_TYPE, GLX_RGBA_BIT,
GLX_DOUBLEBUFFER, True,
GLX_RED_SIZE, 10, /* 10bits for R */
GLX_GREEN_SIZE, 10, /* 10bits for G */
GLX_BLUE_SIZE, 10, /* 10bits for B */
None
};
int fbcount;
GLXFBConfig *fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy),
attributeList, &fbcount);
if (!fbc) {
//Error Handler
gregory....
Normally others parameters are the default based on the glx spec. What is the output of this command : "nvidia-settings --glxinfo"
gregory....
I would be surprise but just to be sure can you check that m_XDisplay is properly defined.
arcum42
GLX Information for ubiquitous:0.0:
direct rendering: Yes
GLX extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_EXT_create_context_es2_profile, GLX_ARB_create_context_robustness, GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_framebuffer_sRGB, GLX_ARB_get_proc_address
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_texture_from_pixmap, GLX_ARB_create_context, GLX_ARB_create_context_profile,
GLX_EXT_create_context_es2_profile, GLX_ARB_create_context_robustness, GLX_ARB_multisample, GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_framebuffer_sRGB
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context, GLX_SGI_video_sync, GLX_NV_swap_group, GLX_NV_video_out, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_swap_control,
GLX_EXT_swap_control, GLX_ARB_create_context, GLX_ARB_create_context_profile, GLX_NV_float_buffer, GLX_ARB_fbconfig_float, GLX_EXT_fbconfig_packed_float, GLX_EXT_texture_from_pixmap, GLX_EXT_framebuffer_sRGB, GLX_NV_present_video,
GLX_NV_copy_image, GLX_NV_multisample_coverage, GLX_NV_video_capture, GLX_EXT_create_context_es2_profile, GLX_ARB_create_context_robustness
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 460/PCI/SSE2
OpenGL version string: 4.2.0 NVIDIA 290.10
OpenGL extensions:
GL_ARB_base_instance, GL_ARB_blend_func_extended, GL_ARB_color_buffer_float, GL_ARB_compatibility, GL_ARB_compressed_texture_pixel_storage, GL_ARB_conservative_depth, GL_ARB_copy_buffer, GL_ARB_depth_buffer_float,
GL_ARB_depth_clamp, GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend, GL_ARB_draw_indirect, GL_ARB_draw_elements_base_vertex, GL_ARB_draw_instanced, GL_ARB_ES2_compatibility, GL_ARB_explicit_attrib_location,
GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4, GL_ARB_get_program_binary,
GL_ARB_gpu_shader5, GL_ARB_gpu_shader_fp64, GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_imaging, GL_ARB_instanced_arrays, GL_ARB_internalformat_query, GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range,
GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sample_shading,
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map, GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counters, GL_ARB_shader_bit_encoding, GL_ARB_shader_image_load_store, GL_ARB_shader_objects, GL_ARB_shader_precision,
GL_ARB_shader_subroutine, GL_ARB_shading_language_100, GL_ARB_shading_language_420pack, GL_ARB_shading_language_include, GL_ARB_shading_language_packing, GL_ARB_shadow, GL_ARB_sync, GL_ARB_tessellation_shader,
GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_compression, GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_cube_map_array, GL_ARB_texture_env_add, GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, GL_ARB_texture_float, GL_ARB_texture_gather, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_multisample, GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_lod, GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_swizzle, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix, GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_viewport_array, GL_ARB_window_pos, GL_ATI_draw_buffers, GL_ATI_texture_float, GL_ATI_texture_mirror_once,
GL_S3_s3tc, GL_EXT_texture_env_add, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color, GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_compiled_vertex_array, GL_EXT_Cg_shader, GL_EXT_depth_bounds_test, GL_EXT_direct_state_access, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_blit,
GL_EXT_framebuffer_multisample, GL_EXTX_framebuffer_mixed_formats, GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4, GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays,
GL_EXT_packed_depth_stencil, GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal, GL_EXT_secondary_color, GL_EXT_separate_shader_objects,
GL_EXT_separate_specular_color, GL_EXT_shader_image_load_store, GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_buffer_object,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc, GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888, GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_shared_exponent, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_texture_storage, GL_EXT_texture_swizzle, GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_timer_query, GL_EXT_transform_feedback2,
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit, GL_EXT_x11_sync_object, GL_EXT_import_sync_object, GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, GL_KTX_buffer_region, GL_NV_alpha_test,
GL_NV_blend_minmax, GL_NV_blend_square, GL_NV_complex_primitives, GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image, GL_NV_depth_buffer_float, GL_NV_depth_clamp, GL_NV_explicit_multisample,
GL_NV_fbo_color_attachments, GL_NV_fence, GL_NV_float_buffer, GL_NV_fog_distance, GL_NV_fragdepth, GL_NV_fragment_program, GL_NV_fragment_program_option, GL_NV_fragment_program2, GL_NV_framebuffer_multisample_coverage,
GL_NV_geometry_shader4, GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_gpu_program5, GL_NV_gpu_program_fp64, GL_NV_gpu_shader5, GL_NV_half_float, GL_NV_light_max_exponent, GL_NV_multisample_coverage, GL_NV_multisample_filter_hint,
GL_NV_occlusion_query, GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object, GL_NV_parameter_buffer_object2, GL_NV_path_rendering, GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart, GL_NV_register_combiners,
GL_NV_register_combiners2, GL_NV_shader_atomic_counters, GL_NV_shader_buffer_load, GL_NV_texgen_reflection, GL_NV_texture_barrier, GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4, GL_NV_texture_expand_normal,
GL_NV_texture_lod_clamp, GL_NV_texture_multisample, GL_NV_texture_rectangle, GL_NV_texture_shader, GL_NV_texture_shader2, GL_NV_texture_shader3, GL_NV_transform_feedback, GL_NV_transform_feedback2, GL_NV_vdpau_interop,
GL_NV_vertex_array_range, GL_NV_vertex_array_range2, GL_NV_vertex_attrib_integer_64bit, GL_NV_vertex_buffer_unified_memory, GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, GL_NV_vertex_program2_option,
GL_NV_vertex_program3, GL_NVX_conditional_render, GL_NVX_gpu_memory_info, GL_OES_depth24, GL_OES_depth32, GL_OES_depth_texture, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, GL_OES_get_program_binary, GL_OES_mapbuffer,
GL_OES_packed_depth_stencil, GL_OES_rgb8_rgba8, GL_OES_standard_derivatives, GL_OES_texture_3D, GL_OES_texture_float, GL_OES_texture_float_linear, GL_OES_texture_half_float, GL_OES_texture_half_float_linear, GL_OES_texture_npot,
GL_OES_vertex_array_object, GL_OES_vertex_half_float, GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow, GL_SUN_slice_accum
--fc- --vi- vt buf lv rgb d s colorbuffer ax dp st accumbuffer ---ms---- cav -----pbuffer----- ---transparent----
id id siz l ci b t r g b a bf th en r g b a mvs mcs b eat widt hght max-pxs typ r g b a i
-----------------------------------------------------------------------------------------------------------------
0x075 0x021 tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x076 0x022 dc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x077 0x024 tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x078 0x03f dc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x079 0x025 tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07a 0x040 dc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07b 0x026 tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07c 0x041 dc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07d 0x027 tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07e 0x042 dc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x07f 0x028 tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x080 0x043 dc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x081 0x029 tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x082 0x044 dc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x083 0x02a tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x084 0x045 dc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x085 0x02b tc 32 0 rgb y . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x086 0x046 dc 32 0 rgb y . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x087 0x02c tc 32 0 rgb y . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x088 0x047 dc 32 0 rgb y . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x089 0x02d tc 32 0 rgb . . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x08a 0x048 dc 32 0 rgb . . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x08b 0x02e tc 32 0 rgb . . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x08c 0x049 dc 32 0 rgb . . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x08d 0x02f tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x08e 0x04a dc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x08f 0x030 tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x090 0x04b dc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x091 0x031 tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x092 0x04c dc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x093 0x032 tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x094 0x04d dc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x095 0x033 tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x096 0x04e dc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x097 0x034 tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x098 0x04f dc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x099 0x035 tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09a 0x050 dc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09b 0x036 tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09c 0x051 dc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09d 0x037 tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09e 0x052 dc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x09f 0x038 tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a0 0x053 dc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a1 0x039 tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a2 0x054 dc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a3 0x03a tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a4 0x055 dc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a5 0x03b tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a6 0x056 dc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a7 0x03c tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a8 0x057 dc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0a9 0x03d tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0aa 0x058 dc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0ab 0x03e tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0ac 0x059 dc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0ad 0x023 tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ae 0x05a tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0af 0x05b tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b0 0x05c tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b1 0x05d tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b2 0x05e tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b3 0x05f tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b4 0x060 tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b5 0x061 tc 32 0 rgb y . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b6 0x062 tc 32 0 rgb y . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b7 0x063 tc 32 0 rgb . . 8 8 8 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b8 0x064 tc 32 0 rgb . . 8 8 8 8 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0b9 0x065 tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0ba 0x066 tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0bb 0x067 tc 32 0 rgb y . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0bc 0x068 tc 32 0 rgb y . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0bd 0x069 tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0be 0x06a tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0bf 0x06b tc 32 0 rgb . . 8 8 8 0 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c0 0x06c tc 32 0 rgb . . 8 8 8 8 4 24 0 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c1 0x06d tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c2 0x06e tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c3 0x06f tc 32 0 rgb y . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c4 0x070 tc 32 0 rgb y . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c5 0x071 tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c6 0x072 tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 2 2 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c7 0x073 tc 32 0 rgb . . 8 8 8 0 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c8 0x074 tc 32 0 rgb . . 8 8 8 8 4 24 8 16 16 16 16 4 4 1 NoC 4000 4000 10000000 . 0 0 0 0 0
0x0c9 . . 16 0 rgb y . 5 6 5 0 4 16 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ca . . 16 0 rgb . . 5 6 5 0 4 16 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0cb . . 16 0 rgb y . 5 6 5 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0cc . . 16 0 rgb . . 5 6 5 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0cd . . 16 0 rgb y . 5 6 5 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ce . . 16 0 rgb . . 5 6 5 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0cf . . 16 0 rgb y . 5 6 5 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d0 . . 16 0 rgb . . 5 6 5 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d1 . . 0 0 rgb . . 0 0 0 0 4 16 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d2 . . 0 0 rgb . . 0 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d3 . . 0 0 rgb . . 0 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d4 . . 32 0 rgb . . 16 16 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d5 . . 32 0 . . . 16 16 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d6 . . 32 0 rgb y . 16 16 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d7 . . 32 0 . y . 16 16 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d8 . . 32 0 rgb . . 32 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0d9 . . 32 0 . . . 32 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0da . . 32 0 rgb y . 32 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0db . . 32 0 . y . 32 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0dc . . 64 0 rgb . . 16 16 16 16 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0dd . . 64 0 . . . 16 16 16 16 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0de . . 64 0 rgb y . 16 16 16 16 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0df . . 64 0 . y . 16 16 16 16 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e0 . . 128 0 rgb . . 32 32 32 32 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e1 . . 128 0 . . . 32 32 32 32 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e2 . . 128 0 rgb y . 32 32 32 32 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e3 . . 128 0 . y . 32 32 32 32 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e4 . . 32 0 rgb . . 16 16 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e5 . . 32 0 . . . 16 16 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e6 . . 32 0 rgb y . 16 16 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e7 . . 32 0 . y . 16 16 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e8 . . 32 0 rgb . . 16 16 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0e9 . . 32 0 . . . 16 16 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ea . . 32 0 rgb y . 16 16 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0eb . . 32 0 . y . 16 16 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ec . . 32 0 rgb . . 32 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ed . . 32 0 . . . 32 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ee . . 32 0 rgb y . 32 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ef . . 32 0 . y . 32 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f0 . . 32 0 rgb . . 32 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f1 . . 32 0 . . . 32 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f2 . . 32 0 rgb y . 32 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f3 . . 32 0 . y . 32 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f4 . . 64 0 rgb . . 16 16 16 16 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f5 . . 64 0 . . . 16 16 16 16 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f6 . . 64 0 rgb y . 16 16 16 16 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f7 . . 64 0 . y . 16 16 16 16 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f8 . . 64 0 rgb . . 16 16 16 16 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0f9 . . 64 0 . . . 16 16 16 16 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0fa . . 64 0 rgb y . 16 16 16 16 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0fb . . 64 0 . y . 16 16 16 16 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0fc . . 128 0 rgb . . 32 32 32 32 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0fd . . 128 0 . . . 32 32 32 32 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0fe . . 128 0 rgb y . 32 32 32 32 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x0ff . . 128 0 . y . 32 32 32 32 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x100 . . 128 0 rgb . . 32 32 32 32 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x101 . . 128 0 . . . 32 32 32 32 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x102 . . 128 0 rgb y . 32 32 32 32 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x103 . . 128 0 . y . 32 32 32 32 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x104 . . 16 0 rgb . . 16 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x105 . . 16 0 . . . 16 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x106 . . 16 0 rgb y . 16 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x107 . . 16 0 . y . 16 0 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x108 . . 64 0 rgb . . 32 32 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x109 . . 64 0 . . . 32 32 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10a . . 64 0 rgb y . 32 32 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10b . . 64 0 . y . 32 32 0 0 4 0 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10c . . 16 0 rgb . . 16 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10d . . 16 0 . . . 16 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10e . . 16 0 rgb y . 16 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x10f . . 16 0 . y . 16 0 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x110 . . 16 0 rgb . . 16 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x111 . . 16 0 . . . 16 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x112 . . 16 0 rgb y . 16 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x113 . . 16 0 . y . 16 0 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x114 . . 64 0 rgb . . 32 32 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x115 . . 64 0 . . . 32 32 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x116 . . 64 0 rgb y . 32 32 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x117 . . 64 0 . y . 32 32 0 0 4 24 0 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x118 . . 64 0 rgb . . 32 32 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x119 . . 64 0 . . . 32 32 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x11a . . 64 0 rgb y . 32 32 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
0x11b . . 64 0 . y . 32 32 0 0 4 24 8 16 16 16 16 0 0 0 . 4000 4000 10000000 . 0 0 0 0 0
arcum42
Haven't managed to get all the way through creating the context yet, but I got further simply by commenting out this line:
//PFNGLXCHOOSEFBCONFIGPROC glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC) glXGetProcAddress((GLubyte *) "glXChooseFBConfig");
It must be defined somewhere else...
arcum42
Actually, never mind. I'd made another change I'd forgotten about. For some reason, I'd tried these attributes:
static int visual_attribs[] =
{
GLX_X_RENDERABLE , True,
GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
GLX_RENDER_TYPE , GLX_RGBA_BIT,
GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
GLX_RED_SIZE , 8,
GLX_GREEN_SIZE , 8,
GLX_BLUE_SIZE , 8,
GLX_ALPHA_SIZE , 8,
GLX_DEPTH_SIZE , 24,
GLX_STENCIL_SIZE , 8,
GLX_DOUBLEBUFFER , True,
//GLX_SAMPLE_BUFFERS , 1,
//GLX_SAMPLES , 4,
None
};
arcum42
The error I'm getting with that set of attributes is a BadMatch error in XSync. I'd better get some sleep, though. I'll have more time to work on this tomorrow...
gregory....
Hum Ok, it is very annoying to be so close. Now I understand why a graphic developer need to have the 2 GPU brands...
On the bad match, be sure to request only a 4.1 context. Previous nvidia driver have a bug with 4.2 context, I don't know if they fixed it.
arcum42
All right, it gets a context with this diff:
Index: plugins/GSdx/GSWnd.cpp
===================================================================
--- plugins/GSdx/GSWnd.cpp (revision 4983)
+++ plugins/GSdx/GSWnd.cpp (working copy)
@@ -338,15 +338,26 @@
if (m_renderer != 2) {
m_XDisplay = XOpenDisplay(NULL);
- // Get visual information
- int attrListDbl[] = { GLX_RGBA, GLX_DOUBLEBUFFER,
- GLX_RED_SIZE, 8,
- GLX_GREEN_SIZE, 8,
- GLX_BLUE_SIZE, 8,
- GLX_DEPTH_SIZE, 24,
- None
- };
-
+ if ( !m_XDisplay )
+ {
+ fprintf( stderr, "Failed to open X display\n" );
+ exit(1);
+ }
+
+ // Get visual information
+ static int attrListDbl[] =
+ {
+ GLX_X_RENDERABLE , True,
+ GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
+ GLX_RENDER_TYPE , GLX_RGBA_BIT,
+ GLX_RED_SIZE , 8,
+ GLX_GREEN_SIZE , 8,
+ GLX_BLUE_SIZE , 8,
+ GLX_DEPTH_SIZE , 24,
+ GLX_DOUBLEBUFFER , True,
+ None
+ };
+
PFNGLXCHOOSEFBCONFIGPROC glXChooseFBConfig = (PFNGLXCHOOSEFBCONFIGPROC) glXGetProcAddress((GLubyte *) "glXChooseFBConfig");
int fbcount = 0;
GLXFBConfig *fbc = glXChooseFBConfig(m_XDisplay, DefaultScreen(m_XDisplay), attrListDbl, &fbcount);
@@ -364,7 +375,7 @@
// FIXME : Request a debug context to ease opengl development
// Note: don't support deprecated feature (pre openg 3.1)
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB | GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
- 0
+ None
};
m_context = glXCreateContextAttribsARB(m_XDisplay, fbc[0], 0, true, context_attribs);
XSync( m_XDisplay, false);
--
Note that it crashes with a BadMatch error on exit. I just figured that could be worked on later. At least this gets us back to a point where we can worry about not having any graphics showing on nvidia graphic cards...
arcum42
You can take out the !m_XDisplay check if you want; I forgot I had it there. This is against r4983, naturally.
gregory....
Cool, well done. It work on AMD too.
Now we need to find the issue with vao. Delete previous Debug.txt to recreate a fresh one.
1/ Most of the VAO operation are done in IASetVertexBuffer.
2/ try also to comment both glClearBufferfv in GSDeviceOGL::ClearRenderTarget, I'm really not sure they have the expected behavior
arcum42
np. Glad that works properly on AMD. (I suppose we should probably commit the change, too, then...)
Commenting glClearBufferfv out didn't seem to do much. I'll fiddle around for a bit with IASetVertexBuffer.
arcum42
BTW, I don't know if it's useful, but I saw this online, and thought I'd forward it on:
http://www.pouet.net/topic.php?which=5788
arcum42
Well, this is a sucky backtrace...:
(gdb) bt
#0 GSDeviceOGL::DebugCallback (source=33350, type=33356, id=1282, severity=37190, length=68, message=0x3c13cc0 "GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.", userParam=0x0)
at /usr/local/src/pcsx2-ogl/plugins/GSdx/GSDeviceOGL.cpp:1156
#1 0x02ee02fd in ?? () from /usr/lib/nvidia-current/libnvidia-glcore.so.290.10
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
gregory....
I lets you do the commit, you did all debug ;) Anyway, it is not critical because of the black screen rendering.
Arg same useless backtrace than AMD...
1/ Can you try some next, maybe it will be out after the command.
2/ Otherwise you can print some GL message with this function:
glDebugMessageInsertARB(GL_DEBUG_SOURCE_APPLICATION_ARB, GL_DEBUG_TYPE_ERROR_ARB, 1u, GL_DEBUG_SEVERITY_HIGH_ARB, my_length, my_message);
Just replace my_length and my_message.
All the hardware pipeline flow is done on GSDeviceOGL::StretchRect maybe you can print some step in the middle.
arcum42
Given the issues with using gdb, I set GSdx to mirror the Debug text to stderr for the moment, and added a few helpful debugging text messages. Here's where the errors are (Those are the first calls to IASetVertexBuffer & IASetInputLayout):
IASetVertexBuffer.
IASetVertexBuffer exit.
IASetInputLayout.
Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Invalid VAO/VBO/pointer usage.
IASetInputLayout exit.
Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Array object is not active.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated.
IASetVertexBuffer.
IASetVertexBuffer exit.
IASetInputLayout.
IASetInputLayout exit.
Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Array object is not active.
Type:Error ID:1280 Severity:High Message:GL_INVALID_ENUM error generated. Operation is not valid from the core profile.
Type:Performance ID:131218 Severity:Med Message:Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
IASetVertexBuffer.
IASetVertexBuffer exit.
IASetInputLayout.
IASetInputLayout exit.
Type:Error ID:1282 Severity:High Message:GL_INVALID_OPERATION error generated. Array object is not active.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated.
IASetVertexBuffer.
IASetVertexBuffer exit.
gregory....
Thanks. Here the man of opengl (very useful) http://www.opengl.org/sdk/docs/man4/
The only command than can output GL_INVALID_OPERATION in IASetInputLayout is glVertexAttribPointer.
Can you try to bind the buffer at the startup of IASetInputLayout
glBindBuffer(GL_ARRAY_BUFFER, m_vb); and check m_vb isn't null
Others GL_INVALID_OPERATION are fired only when size is GL_BGRA, in our case it is only 2 or 4!
arcum42
All right, I'll commit it once I've got the code in a clean state. Right now I've got all these debug messages in there.
Probing a little, here's what I've found. In IASetInputLayout, for the first for statement, m_state.layout_nbr == 0, and layout_nbr == 2. It never executes.
Then, in the second for statement, on each loopthrough, the vbo error happens when calling glVertexAttribPointer.
arcum42
Oh, and after running glBindBuffer(GL_ARRAY_BUFFER, m_vb);, m_vb isn't null. (It appears to be 6.)
arcum42
These appear to be the parameters it's getting for the two times it happens.
glVertexAttribPointer.(0x0, 0x4, GL_FLOAT, 0x0, 0x20, <a pointer>)
glVertexAttribPointer.(0x1, 0x2, GL_FLOAT, 0x0, 0x20, <a pointer>)
arcum42
And here is what layhout looks like when entering the function:
(gdb) print layout
$1 = (GSInputLayout *) 0xa5ade40
(gdb) print layout[0]
$2 = {index = 0, size = 4, type = 5126, stride = 32, offset = 0x0}
(gdb) print layout[0].offset
$3 = (const GLvoid *) 0x0
I saw this the docs for glVertexAttribPointer:
GL_INVALID_OPERATION is generated if zero is bound to the GL_ARRAY_BUFFER buffer object binding point and the pointer argument is not NULL.
gregory....
Here an overview of opengl command that might or not help you.
glGenBuffers(1, buf) <- create a pointer to a buffer.
glBindBuffer(GL_ARRAY_BUFFER,...) <- make the buffer active
glBufferData(GL_ARRAY_BUFFER,....., NULL, GL_STREAM_DRAW) <- allocate some memory
glBufferSubData(GL_ARRAY_BUFFER,....) <- copy some data inside the previously allocated memory
glEnableVertexAttribArray(index) <- tell opengl to activate the vertex attribute index. Attribute are things like color, normal, position or whatever.
glVertexAttribPointer(index....) <- tell the format of the attribute. Because it is a raw buffer so we must said the size, offset etc...
glDisableVertexAttribArray(index) <- disable it for next run (but I'm not sure it is useful)
To optimize a little, I only disable vertex unit at the beginning of the next draw. But only the one that will not be re-enable. If glVertexAttribPointer failed to execture, nothing is send to the input of the opengl pipeline. What is the value of the pointer normally it is the offset inside the structure.
p layout[0]
$1 = {
index = 0,
size = 4,
type = 5126,
stride = 32,
offset = 0x0
}
(gdb) p layout[1]
$2 = {
index = 1,
size = 2,
type = 5126,
stride = 32,
offset = 0x10
}
gregory....
GL_INVALID_OPERATION is generated if zero is bound to the GL_ARRAY_BUFFER buffer object binding point and the pointer argument is not NULL.
Yes, but normally m_vb must be bound to GL_ARRAY_BUFFER and m_vb isn't null. There is somethings strange somewhere!
gregory....
Can you comment glDisableVertexAttribArray for the moment. I found that on a web site.
"But be very careful! If any vertex attribute array is disabled, VAO loses its binding to corresponding VBO. In that case, we have to call again glBindBuffer() and glVertexAttribPointer() functions. The specification tells nothing about this feature, but it is what we have to do with current version of NVidia drivers."
I thinks there is something wrong with the different call to
glEnableVertexAttribArray, glVertexAttribPointer, glDisableVertexAttribArray. It seems that the buffer is unbind somewhere, I see no others reason.
gregory....
Ok I migh find the reason. It might need a vexter array object which is not a vertex array buffer object...
// Can you try to add that somewhere. Maybe in the Create procedure.
unsigned int vao = 0;
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);
arcum42
Commenting it out didn't seem to change anything, but the only time it was called that I saw was in that first loop that it didn't run through.
I'm going to do a clean build, though, because I haven't done one in a bit...
gregory....
Hum yes that make sense actually. The layout probably never change (except when we request a bigger buffer but it would need lots of frame). I hope would work.
gregory....
I wanted to say "I hope VAO would work..."
gregory....
Another point, you might need to play with opengl context creation. There are 4 possibilities... Maybe one will work.
1/ You can tune GLX_CONTEXT_PROFILE_MASK_ARB with (either core or profile)
GLX_CONTEXT_CORE_PROFILE_BIT_ARB and GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB
2/ You can also tune GLX_CONTEXT_FLAGS_ARB with (remove deprecated feature or not)
GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB
arcum42
Somehow missed the comments for the last half hour.
unsigned int vao = 0;
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);
does actually seem to be what's missing. That got rid of the VAO errors, and I have a picture. (Wonder if we need to do that in zzogl, too, for glsl?) The picture is in the upper-right hand of the window, only filling maybe an 8th of the window, but it's there. ^_^
arcum42
I'm going through removing all the various messing around with the code I've done while troubleshooting, to see if I missed up the scaling somewhere.
arcum42
Yeah, something I changed in passing was what caused the scaling problem. Fixed.
gregory....
Good. Might be a "bug" on AMD that make it work because the default vao must be a deprecated feature removed by the fordware context. Anyway, the good new is that I found a way to improve the code. I can store vertex attribute state into the vao so I only need to bind the vao inside IASetInputLayout.
I'm not sure for zzogl. The easiest way will to bring the debug extension to see the error.
arcum42
Yeah. We can tackle that later on, though. We'll still have to make sure to get the crash on shutdown at some point, too.
I'm going ahead and getting this ready for a commit. I figure you can clean up the vao code afterwards if need be... :)
gregory....
Very good news. Yes go ahead. I need to debug my new code and I need to go to the sport too. Competition next week :)
arcum42
I can understand that. And it's been committed.

Revision 4982

gsdx-ogl: LINUX-ONLY
* flip y-axis in merge stage
* default to xlib window managment (the dynamic switch between sdl and xlib
crashi but SDL will probably dropped later)
* improve management of FBO, draw buffer
* try to fix some issue with glClearBuffer but spec is not clear.
dubigr...
One question: Will be SDL dropped all together from PCSX, or only the bits concerning the graphic plugin?
To be more exact, what will happen with the force feedback support through SDL?
ccox...
Hi,
Which compilation options are needed to test the gsdx-ogl plugin? Because it is not compiled by default apparently...
Thanks.
arcum42
The code for when it's compiled hasn't been updated yet, as far as I can tell, and in the main branch, it needs sdl 1.3, so you'd need -DFORCE_INTERNAL_SDL=TRUE thrown in there.
Keep in mind that it just started working as of today. Also, your drivers have to support OpenGL 4.2, and if my attempt at getting it to work is any example, it won't work with nvidia cards yet.
gregory....
If opengl works fine without SDL on GSdx, we might drop SDL code from GSdx. But I will keep SDL for onepad (which I need to finish one day). For the moment, we will keep pure-sdl as previously and new code as pure opengl.
Except I will not build PCSX2 with SDL1.3 by default, some distribution are not compatible.
As Arcum said, you need -DFORCE_INTERNAL_SDL=TRUE for gsdx. But you also need to get the code from the gsdx-ogl branch not the one from trunk.
jammanl...
FML i cant seem to find a driver update for my laptops card cause it wont use the normal driver, and when this eventually comes to windows i dont know if i will be able to use it :(
gregory....
Well on windows the safest bet is to use directX anyway.
What is your GPU? Note Intel is a no go. You need a DX11 capable GPU. Later I migh find some solution to only request opengl3.3 and get others feature with extension (mostly glsl 420). But for the moment I don't want to be limited by old GPU.
willianh...
strange .. why can not I get the latest version of the review? when I compile it always says I have version 4980, and never updates! Have you forgotten something?
gregory....
4980 is the last version of the trunk. I work on a developpement branch
svn checkout http://pcsx2.googlecode.com/svn/branches/gsdx-ogl
willianh...
True, i forgot, sorry!
willianh...
to help you fix something, here we have a problem.
/home/willian/pcsx2-svn/src/pcsx2-build/common/src/Utilities/Linux/LnxHostSys.cpp(63) : assertion failed:
Function: void SysPageFaultSignalFilter(int, siginfo_t*, void*)
Thread: MTGS
Condition: false
Message: Unhandled page fault @ 0x00000000
Stacktrace:
[00] GSRenderer::VSync(int)
[01] GSRendererHW<GSVertexHW11>::VSync(int)
[02] GSvsync
gregory....
It does not help so much. But I only implement the sw renderer and you seems to use the HW renderer ;)
willianh...
HW is actually used, if using the SF it closes and not tell me anything about a mistake! :)
gregory....
First what is your GPU. Then what is your driver. Then select OpenGL (Software) mode, close PCSX2. Launch your game. There are 3 case
1/ no window
2/ window but stay black
3/ it works
gregory....
Ah, I forgot to say you need libglew1.6, libglew1.5 is too old.
willianh...
My GPU is 9300M GS (laptop), last driver 290.10.
Ok, if I select OpenGL in software mode, it emulates the game closes when, and if I select OpenGL mode of error hardware it up!
games only work if I use SDL (Software).
libglew use 1.7, I can not use before. My OS is arch linux
gregory....
As Arcum writes above it won't work yet with nvidia cards. It failed to create the opengl context for whatever the reason. So first we need to fix the context creation, then to fix the black rendering on nvidia GPU.
HW mode do nothings, so yes you can have a nice window.
gregory....
willianholtz1 can you check next revision. I change a little the context creation, with some accidents it can work ;)

Revision 4983

gsdx-ogl: LINUX-ONLY
* add a callback for GLERROR. Allow to breakpoint on GSDeviceOGL::DebugCallback
(gdb is completely lost on amd driver, hope it is better on nvidia)
* Add some empty glsl convert to shutup some useless debugging error
* request an advance opengl context without pre 3.0 feature.
willianh...
no errors, but:
http://img580.imageshack.us/img580/5061/games2z.jpg
gregory....
It seems on pretty bad shape in my opinion. Could you run it from a terminal, it would print helpful message. In particular if you see this one "Error: Failed to init glew ....", opengl does not work.
willianh...
Previous post deleted!
forgot that he had compiled as release ....
(SysExecute) received.
HLE Host: Will load ELF:
HLE Notice: ELF does not have a path.
Initializing plugins ...
init GS
init PAD
init SPU2
init CDVD
USB init
init FW
init Dev9
Plugins initialized successfully.
Opening plugins ...
Opening GS
GSopen Failed: return code: 0xffffffff
Closing plugins ...
Closing GS
Plugins closed successfully.
Shutting down plugins ...
gregory....
Ok you failed to get an opengl context. I need to find the issue first with Arcum.
ccox...
I also have a problem:
[wx] /home/user/PCSX2/plugins/libGSdx-0.1.16.so: undefined symbol: __glewDeleteProgramPipelines
Do you know what I should do? I have the glew libraries installed...
Thx
gregory....
Which version of libglew? You need 1.6 (or 1.7).
ccox...
Well, I have libglew 1.6 on my Debian 64bits, but I have to check which 32-bits version is installed... The problem comes probaly from here...
Thanks.
gregory....
If you run on sid, you can use multiarch but you will need a dpkg aware version, maybe it will be ready for Xmas :)
apt-get install libglew1.6:i386

Revision 4984

gsdx-ogl: LINUX-ONLY * Fix context creation. Get opengl working with nvidia
graphics cards.
arcum42
Given that it got played over and over during this debugging session, I suppose 25YearLegend is the soundtrack of this commit. It can be downloaded for free, if anyone's interested...
http://zelda25.ocremix.org/
ramapcsx2
Good job promoting ocremix here.
Keep doing this stuff :p
arcum42
Thanks. As it happens, I really like the soundtrack. And the music is all by musicians who did music for various indie games, such as Laura Shigihara, who did the Plants vs. Zombies soundtrack.
Of course, I have a buch of remixed Chrono Trigger music from ocremix around somewhere, too...
arcum42
Oh, and for anyone not following the comments in the previous revision, I am aware of the fact that gsdx crashes if you choose "Shutdown", or quit pcsx2 in this branch currently. We'll fix that later.
welingtonaquino
good,but i dont use linux e-e
welingtonaquino
good,but i dont use linux e-e
gregory....
We also need to fix the others opengl error on Nvidia. There are no critical for the moment, but I'm afraid they will crop up with the HW renderer.
1 line-by-line comment
/branches/gsdx-ogl/plugins/GSdx/GSWnd.cpp  
r4984  
line 410:
410: glXMakeCurrent(m_XDisplay, m_Xwindow, 0);
Hum on zzogl we do glXMakeCurrent(m_XDisplay, None, NULL). Can you try it to see it fix the shutdown crashes
ramapcsx2
Offtopic, I know, but imo Humans and Gears is their best album yet:
http://xenogears.ocremix.org/
:p
willianh...
here not load screen with GXsd..
log:
he program 'pcsx2' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
(Details: serial 19 error_code 11 request_code 135 minor_code 34)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
gregory....
Arg... Just to be sure to relaunch PCSX2 completely when you change the renderer. It complains about the allocation maybe a retry can help too. Otherwise.....
arcum42
Changing that one line does seem to fix the shutdown crashes, so we're good on this side.
arcum42
And I'm downloading Humans vs. Gears now. :)
gregory....
Good. I upload it with my vao change. I hope it did not break on nivida.

Revision 4985

gsdx-ogl: LINUX-ONLY
* improve vertex management with a vertex array. Decorrelate vertex from strech
rec and others func (later for the HW renderer)
* fix the crash on nvidia when closing the window
* clean some texture management code
arcum42
Looks fine. I played through a bit of the opening movie on Ar tonelico II to test it. In case you're curious, these days, Debug.txt looks like this:
Type:Performance ID:131218 Severity:Med Message:Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated.
Type:Performance ID:131218 Severity:Med Message:Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
Type:Error ID:1280 Severity:High Message:GL_INVALID_ENUM error generated. Operation is not valid from the core profile.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated. ClearBuffer: <drawbuffer> exceeds the maximum number of supported draw buffers.
Type:Error ID:1281 Severity:High Message:GL_INVALID_VALUE error generated.
and then the last two messages repeat indefinitely. None of those messages seem to cause any issues, but I'm not sure if it looks the same with an ATI card, so...
willianh...
This works best with software review! I'm still having trouble loading openGL (software and hardware), both the screen does not load as shown in previous svn ...
http://img580.imageshack.us/img580/5061/games2z.jpg
Still gives me no error log that can be reported! Sorry. :(
avihal
Is this the same work that started at r4970? If yes, is it still meant as an SDL replacement (as the SW rendering backend)? Would it have better performance? if yes, would it be just because SDL scales in SW?
arcum42
Gregory might be able to give a better answer, but, yes, this is the same work started at r4970, except that at this point it actually works enough to be usable on at least two different peoples graphic cards. (Given that greg's is Ati and mine is Nvidia, that's encouraging...)
It is meant as an SDL backend replacement. It's currently just software. I think gregory's planning on a hardware version as well eventually, but that's much further off.
He did say he's hoping for a few fps in opengl due to operations being handled by the Gpu. I'd also personally think that the fact that it removes a layer between the program and OpenGL could help, speedwise.
But that aside, just not having to bundle in a pre-alpha version of sdl will be really nice. SDL 1.3 is cool, and has major improvements from sdl 1.2, but it's been in development a long time, and it's probably still going to be a long time till it gets a release, so no distributions I know of come with it...
gregory....
To complete a little. My origninal idea was to do the full hardware renderer but the SW is a nice milestone (Gabest suggestion) and reduce the debugging burden. Besides, I mostly learn opengl with this port. So a smaller gap was a very good idea.
I might be wrong but I think the resize is done by GSdx. The SDL part only blits data computed from SW device to the screen back buffer (with som swizzle of colors components). So I think it will reduce a little the burden of the CPU. I will quickly try mcrae rallly 3:)
By the way, another issue is that both GSdx and wxwidget depends on SDL. 1.3 for GSdx and 1.2 for wxwidget (except it you remove some useless wx feature). So if we want to distribute GSdx, we need to build both wx (nothings done for this one) and sdl from pcsx2's svn. With the pure opengl version, it would work on various distribution.
gregory....
Ok I did some very bad benchmark (I look at the fps and ee usage at the top). Gain is small around 1fps for a reference at 30fps in another word 2-3%. Well still better than nothings ;)
willianholtz1, please open a terminal. konsole on kde. Then just run the "pcsx2" command. All PCSX2 debugging information will be print into the terminal. Then copy past them.
willianh...
This is the problem it's only this error:
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkRadioMenuItem '
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid type `uninstantiatable <invalid> 'in cast to` GtkRadioMenuItem'
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid uninstantiatable type `(null) 'in cast to` GtkRadioMenuItem'
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid uninstantiatable type `(null) 'in cast to` GtkRadioMenuItem'
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkRadioMenuItem '
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid uninstantiatable type `(null) 'in cast to` GtkRadioMenuItem'
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkRadioMenuItem '
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
(Pcsx2: 25948): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkRadioMenuItem '
(Pcsx2: 25948): Gtk-CRITICAL **: IA__gtk_radio_menu_item_get_group: assertion `GTK_IS_RADIO_MENU_ITEM (radio_menu_item) 'failed
The program 'pcsx2' received an X Window System error.
This Probably Reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
(Details: serial 19 error_code 11 135 request_code minor_code 34)
(Note to programmers: Normally, X errors are Reported asynchronously;
that is, you will receive the error a while after Causing it.
To debug your program, run it with the - sync command line
option to change this behavior. Can you then get the Meaningful
backtrace from your debugger if you break on the gdk_x_error () function.)
gregory....
Hum, did your GPU support opengl 4 ?
can you use this command in a terminal "glxinfo | grep version"
willianh...
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL version string: 3.3.0 NVIDIA 290.10
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
err"!!! why does not work in openGL 3? much difference between the 3 and 4?
gregory....
Difference between 3 and 4? Yes there are quite a few and I use several of them and I will probably uses more.
But the real question is how much opengl 4 feature I uses that you hardware could not support through extension of opengl3! It is probably not big, might be null actually !
It might sound overkill to use opengl 4 for a software renderer. But keep in mind that
1/ The goal is to port the hardware renderer too
2/ When I need a feature, I try to find the best opengl function. It is complex enough so I don't care if is OGL4 or not. By the way OGL4 removes lots of crufts and make severals things easier.
3/ There still zzogl for older GPU.
willianh...
:( It is a pity ... But there is a chance to fix it or discarding this old graphics card? Say series 8 and 9.
gregory....
Honestly I don't know if it is possible neither if I would do it. It will takes monthes before I finish to port the code and debug it.
For the moment you don't miss anythings, SDL backend is still working ;)
willianh...
I understand! but it would be a possibility, since it's not just me that has this problem!
gregory....
I'm well aware of the issue. As I said for the moment, it is not critical. SDL backend still exists (well ogl is faster by 2-3% but it is very small). And there still zzogl plugins which is GPU accelerated.
For the moment it would be a possibility I think. But I cannot give you any guarantee for the hardware renderer. I don't even know if I can port the HW renderer into OGL, or if the speed would be acceptable. Ask me the question in 6 monthes.
gregory....
Arcum, to answer your question on Debug data. Actually it is 'fine' on AMD but the spec on glClearBuffer is very bad. So I'm not sure that both AMD and nvidia have the same implementation... Anyway, it is not important for the SW renderer because, we renderer all the screen without any blending or whatever. So all values are overwritten.
The performance issue seems more annoying. I feels that I only have HIGH severity messages on my box...
arcum42
I've been playing around a bit to try and track down where the various Debug errors come from, since they are rather annoying.
The ClearBuffer errors seem to all come from ClearRenderTarget, on the first glClearBufferfv command. It's specifically GL_LEFT it doesn't like in there, too. (I tried substituting 0, and even looping from 0 to GL_MAX_DRAW_BUFFERS - 1, and it had no issues with clearbuffer there...)
I saw this, which seemed to be relevant:
http://www.khronos.org/bugzilla/show_bug.cgi?format=multiple&id=256
And this was a rather nice list of nvidia & amd bugs:
http://www.steelratsoftware.com/index.php/articles/54-opengl42driverstatus.html
gregory....
void ClearBuffer{if ui}v( enum buffer, int drawbuffer,
const T *value );
If buffer is COLOR, a particular draw buffer DRAW_BUFFERi is specified by
passing i as the parameter drawbuffer, and value points to a four-element vector specifying the R, G, B, and A color to clear that draw buffer to. If the draw buffer is one of FRONT, BACK, LEFT, RIGHT, or FRONT_AND_BACK, identifying multiple buffers, each selected buffer is cleared to the same value.
There are 2 case.
1/ When a specific framebuffer object is binded. You can select the type with 'buffer' (color, stencil, depth) and the slot number with 'draw.
2/ When there is no specific framebuffer. You have the default window framebuffer (ie backbuffer: GL_BACK (GL_LEFT and GL_RIGHT for 3d) etc...). I don't think there is a link between the slot number and buffers. So I'm not sure it will clear the good buffer! I'm not really sure I need to unbind the framebuffer to do the clear.
Anyway, I have a big chunk of code to commit for the HW renderer. It is full of bug but I think it will be more easy to test with more materials.
gregory....
Arcum,
Can you try the latest code on nvidia (HW renderer)? I would like to know if you have some glerror. I hit an AMD bug on shader setup... There is also probably some remaining error in the shader files. There are lots of define and only the useful part is compiled.
On the clear command subject, I follow your idea and put 0. If it does not work, I will replace by the old fashion GL_CLEAR functions.
gregory....
Forgot to say, you must add "return true" at the end of GSDeviceOGL::Create otherwise it failed to run on debug build!
gregory....
Sorry, I forget to add one file on svn...
arcum42
np, once you've added in GSTextureFXOGL.cpp, I'll test it...
gregory....
Ok done. I take the chances to fix the return bug. Some parts are not yet implemented so if you hit an assert(0) better test other games.

Revision 4986

gsdx-ogl: LINUX-ONLY * Sync with trunk. (r4970-4985)
arcum42
Not many revisions to merge, I know, but most of the changes were to GSdx, so I thought it'd be a good idea...

Revision 4987

gsdx-ogl: LINUX-ONLY
* Enable interlace feature. (note I'm well aware that interlace crashes with
SDL)
* remove useless callback debug function
* handle the y axis differently. Move vertex to follow right-hand system (render
everything in reverse) then flip the y-axis for the screen rendering

Revision 4988

gsdx-ogl: LINUX-ONLY
* constant buffer are attached to contexts not programs. So do it only once!
Zeni...
Maked impossible to compiling:
Scanning dependencies of target CDVDnull
[ 56%] Building CXX object plugins/CDVDnull/CMakeFiles/CDVDnull.dir/CDVD.cpp.o
In file included from /home/kanotix/pcsx2-read-only/trunk/plugins/CDVDnull/CDVD.h:26,
from /home/kanotix/pcsx2-read-only/trunk/plugins/CDVDnull/CDVD.cpp:18:
/home/kanotix/pcsx2-read-only/trunk/common/include/PS2Eext.h: In function ‘void PluginNullConfigure(std::string, int&)’:
/home/kanotix/pcsx2-read-only/trunk/common/include/PS2Eext.h:217: error: ‘gtk_dialog_get_action_area’ was not declared in this scope
/home/kanotix/pcsx2-read-only/trunk/common/include/PS2Eext.h:218: error: ‘gtk_dialog_get_content_area’ was not declared in this scope
make[2]: *** [plugins/CDVDnull/CMakeFiles/CDVDnull.dir/CDVD.cpp.o] Error 1
make[1]: *** [plugins/CDVDnull/CMakeFiles/CDVDnull.dir/all] Error 2
make: *** [all] Error 2
[email protected]:~/pcsx2-read-only/trunk$
gregory....
It compile fine on my system. Maybe you miss some dependency like libgtk2.0-dev
Zeni...
Sorry, it was in another window
Zeni...
was = I want to post it
arcum42
You need to have glew 1.6 or 1.7 installed. It sounds like it's trying to build against glew 1.5 or earlier.

Revision 4989

wiki: linux compilation
* bump gcc to 4.5 (older version are not tested)
* bump libglew to 1.6 (for future gsdx)
* add some note on multiarch for ubuntu
* update cmake option (need to implement xdg later)
* remove the part to handle patch in debian package (will be dropped with the
future xdg option).
RexMillo...
linux only?
gregory....
Yes, it is the linux compilation guide ;)
Zeni...
"bump gcc to 4.5 (older version are not tested)" - I can compile it with GCC 4.3, but with removing 10-15 strings of code ( Issue 1195 ).
refraction
Let it go Zenitur, you wont get them removed, stop living in GCC's past and update the damn thing :P you have nothing to lose by doing so.
jfre1...
He spent more time bitching about it, than it would have taken to update it lol.

Revision 4990

gsdx-ogl: LINUX-ONLY
* rewrite the vertex management with a nice GSVertexBufferState object
* extend GSUniformBufferOGL to use a better object interface
* properly delete texture
* manage buffer with glMap* instead of glBufferSubData
daimaola...
yay! ^_^
you're my hero gregory n.n
btw, i see you marked the last bunch of commits as linux only. i did some sdl/opengl before in linux for a video player, very basic, and not pure opengl but is it so diferent from windows? or is it that it needs some minor tweaks that you left for the end? or just plain linux-only openGL backend?
just an out of curiosity, programer to programer, question :-P
gregory....
Well the code is compatible with ms (note don't have ms). It just miss the window creation/context (wgl). I mark it linux only to avoid complain because the code cannot be dl from the windows build-bot. By the way, they already have a full and fast directx backend.

Revision 4991

GSdx: just saving minor changes.
Autor...
All stuff in one file, kinda usefull

Revision 4992

GSdx: Better multi-threading for the sw renderer. Threads must be synchronized
lot less, 1/10th in average, can run parallel longer and uses more cpu (bit more
empty spinning, too). There could be some new bugs, as usual.
gabest11
Is shared_ptr available on linux/gcc? (thread-safe? lock-free?)
gabest11
How about "auto"? *::iterator is very long to type :P
luc...
There is, but you need to either #include <tr1/memory>, or add the tr1 directory to the list of include paths to search.
eliotfur
There are only improvements in "Software mode" lately... I can see the trend here... Soon CPUs will become so powerful and will have so many cores that glitchy "Hardware mode" will not be needed anymore... Is it so?..
gregory....
Auto pointer => yes (gcc 4.4). Actually, I already used it (in my future ogl commit). It need this new gcc option : -std=c++0x.
shared pointer are in the libstd++.
For thread-safe and lock-free better read the doc carefully because there seems to be some special case.
http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html
ramapcsx2
shared_ptr appears to be a problem with VS2008 as well.
ramapcsx2
Compiled with VS2010 and tested on my dual core.
It seems to stall the main emu threads, so now I just
get 1fps instead of the old 42.
konaj...
Tested on my i7 went from 159-160fps (r4979) down to 130-140 on the ps2 bios menu using directx 10 sw @ 4 threads, although i'm not completely sure its a reliable test for speed :).
still nice work trying to optimize
andutrache
meh with this new revision i get 40 fps in Persona 4 rainy scene, with r4991 i was always getting 60 fps. I have a C2D and use 1 sw thread.
It still looks correctly on both revs.
Also for some reason i can't build this with VS2008 as it throws about 137 errors about that shared_ptr.
Nice effort but, no just no.
daimaola...
anyways it's great news, as from 4 to 6 treads it actualy slows down a little even with the cpu still under 78% load avg so lets hope this will keep all the my cpu cores are maximum speed instead of downclocking cause of the low load n_n
@eliotfur
i don't think so, but AMD is pushing openCL, and if cpus that come with openCL capable hardware become usual (as graphics card now that come with "3D graphics accelerator" in the same chip....i miss my voodoo2 u_u) via on chip gpu or another new x86 extension (who knows) then it would be a matter of just writing a openCL renderer, but i don't know if that would work, or how well does it scale with so many threads because of the hardware design, so i'm just guessing.
gabest11
Don't use more than 3 threads on quad cores. Everything I tested were faster at 2 or 3, by about 10%. If you are testing a scene, make a .gs and use GSReplay with this and the previous revision to quickly compare the fps. It's the fastest that way.
At a single thread, it might be slower now. I could run rendering on the main GS thread, as before.
gabest11
And don't forget to tell what cpu and how many cores you have!
gabest11
gregory.hainaut:
Could you check if gcc can compile it? Probably just needs to include tr1/memory at the gcc section of stdafx.h. I think vs2008 also had this already.
The "auto" keyword I meant was not auto_ptr, think of "var" in other languages. It is new in c++, as lambdas or rvalues.
luc...
Actually, it does not (seem to) need the compiler option '-std=c++0x'.
gregory....
yes sorry bad word. Auto definitevely need std=c++0x
I will check scoped_ptr tommorow
juanpabl...
i have an AMD phenom II with 6 cores, how much should i put in SW rendering?
gabest11
Try testing anything from 2 to 6. You don't have to restart it each time, just change the plugin settings while it is running, it should apply it when you press OK. Find a more complex scene with the lowest fps and the GS usage around 100% (the second number).
juanpabl...
will try, many thanks!
shadowfl...
Breaks GSDX in linux - hangs with white screen.

Revision 4993

GSdx: Polished the recent changes a bit. Single threaded mode should be back to
normal, 2-4 threads might be faster or slower. All in all, it has a lot more
potential now. Rendering is almost as separated as with d3d, everything needed
is packed and copied for the worker threads, synchronization between local
memory and the temporary buffers is properly done. This model could also be
back-ported to d3d. Or the software rasterizers could be hardware assisted
somehow, there are a lot less sync points where those buffers should match with
the contents of the local memory.
gabest11
That can only be because I put that read-back in GSState. It tries to load the palette from a place where it is rendered to. I'll check if I can find these games.
markwes...
Don't know with what revision started, but is there a reason why I alway get the "memory could not be read" error whenever I set the Extra rendering threads value more than 0 and start a game? (I'm on WinXP)

Revision 4994

GSdx: Little bug slipped through.
rafael.f...
@gabest11, just FYI: compilation seems to be broken.
/home/rafael/pcsx2-svn/src/pcsx2-build/plugins/GSdx/GSRasterizer.h:200:13: error: ‘shared_ptr’ has not been declared
/home/rafael/pcsx2-svn/src/pcsx2-build/plugins/GSdx/GSRasterizer.h:200:23: error: expected ‘,’ or ‘...’ before ‘<’ token
gabest11
Go to stdafx.h and somewhere under #ifdef __GNUC__ add these:
#include <tr1/memory>
using namespace std::tr1;
This might work, I'll check my ubuntu.
ramapcsx2
2 cores E8400 here, I get roughly the same performance with 1 sw thread and a near deadlock stall with 2 or more threads.
Before 2 threads used to be a speedup (it used cycles PCSX2 couldn't make use of).
rafael.f...
@gabest11, having applied this patch http://pastebin.com/1WVksHHD, it still fails but with other error output http://pastebin.com/yzKrdmJ5
konaj...
ramapcsx2, I'm also seeing less fps and higher cpu utilization using 3 - 4 threads from r4979, but gabest said it was expected in his last commit so I didn't say anything :)
here is a break down on my i7 930 @ 3.3 ghz (4 core + HT )
test used is ps2 ntsc bios screen w/ limiter off (where it says browser and system configuration)
r4994
Gdsx sse4, Dx10 SW, 1 thread = 68~ fps, cpu 18% utilized
Gdsx sse4, Dx10 SW, 2 thread = 103~ fps, cpu 40% utilized
Gdsx sse4, Dx10 SW, 3 thread = 119~ fps, cpu 50% utilized
Gdsx sse4, Dx10 SW, 4 thread = 120~ fps, cpu 60% utilized
(speed fluctuates though)
r4979
results are nearly the same up to 2 threads
Gdsx sse4, Dx10 SW, 3 thread = 129~ fps, cpu 34% utilized
Gdsx sse4, Dx10 SW, 4 thread = 144~ fps, cpu 43% utilized
gabest11
ramapcsx2: N threads is now effectively N+1, MTVU (1) + rasterizers (N). Trying to think of something better for dual core cpus, maybe if I removed the spin-loop from GSRasterizerMT::ThreadProc(). There is already one spinning GSRasterizerList::Sync(), this used to be the old one, I could replace either one with an event to help the _mm_pause overload.
gabest11
The bios config screen is strange, I also get lower numbers and even see an increase from 3 to 4 threads, that isn't usually doing anything in real games.
ramapcsx2
Spin loops are often too aggressive, yea.
konaj...
yeah you're probably right, I'll try in some games later and a .gs file like you suggested.

Revision 4995

GSdx: fixed shared_ptr for GCC, but it does not seem to be thread-safe in 4.4.5.
gregory....
Hum, the good include is memory not tr1, tr1 is the libboost implementation (well in this case the std is based on boost). I'm suprise you don't need it on msw! Do you have any "memory" include file on msw ? See patch below.
I try gcc 4.6.2 but it is not better. It seems to work on debug build... By the way, all threds are locked but I don't see any segfault, is it expected?
10 Thread 0xf4377b70 (LWP 19104) "SysExecutor" [email protected]@GLIBC_2.1 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S:81
9 Thread 0xf38fdb70 (LWP 19107) "MTVU" [email protected]@GLIBC_2.1 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S:81
8 Thread 0xf309db70 (LWP 19118) "EE Core" [email protected]@GLIBC_2.1 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S:81
7 Thread 0xe97bdb70 (LWP 19119) "MTGS" _mm_pause () at /usr/lib/gcc/x86_64-linux-gnu/4.6/include/xmmintrin.h:1228
6 Thread 0xe83bcb70 (LWP 19120) "MTGS" 0xf21b5257 in _mm_pause () at /usr/lib/gcc/x86_64-linux-gnu/4.6/include/xmmintrin.h:1228
5 Thread 0xe7ba4b70 (LWP 19121) "MTGS" GSRasterizerMT::ThreadProc (this=0xb036100)
at /mnt/playstation/emulateur/package/pcsx2.snapshot-4995/plugins/GSdx/GSRasterizer.cpp:814
4 Thread 0xe5bffb70 (LWP 19125) "EE Core" 0xf673052c in *__GI___poll (fds=0xf67b2ff4, nfds=1, timeout=22) at ../sysdeps/unix/sysv/linux/poll.c:87
3 Thread 0xe63ffb70 (LWP 19127) "MTGS" [email protected]@GLIBC_2.1 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S:81
2 Thread 0xdfdb9b70 (LWP 19128) "MTGS" [email protected]@GLIBC_2.1 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S:81
* 1 Thread 0xf60c39c0 (LWP 19097) "pcsx2" 0xf673052c in *__GI___poll (fds=0xf67b2ff4, nfds=2, timeout=333) at ../sysdeps/unix/sysv/linux/poll.c:87
*************************************************************
Index: pcsx2.snapshot-4995/plugins/GSdx/CMakeLists.txt
===================================================================
--- pcsx2.snapshot-4995.orig/plugins/GSdx/CMakeLists.txt
+++ pcsx2.snapshot-4995/plugins/GSdx/CMakeLists.txt
@@ -16,6 +16,7 @@
-mfpmath=sse
#-Wstrict-aliasing # Allow to track strict aliasing issue.
-Wunused-variable
+ -std=c++0x
)
set(OptimizationFlags
Index: pcsx2.snapshot-4995/plugins/GSdx/stdafx.h
===================================================================
--- pcsx2.snapshot-4995.orig/plugins/GSdx/stdafx.h
+++ pcsx2.snapshot-4995/plugins/GSdx/stdafx.h
@@ -94,9 +94,7 @@
#ifdef __GNUC__
-#include <tr1/memory>
-
-using namespace std::tr1;
+#include <memory>
#endif
luc...
Sorry gregory, but tr1/memory isn't provided by boost as you said.
On my (Arch)Linux setup, /usr/include/c++/4.6.2/tr1/memory is provided by the gcc package.
I don't think you can use '-std=c++0x' without considering the other changes it provides.
gregory....
Well, tr1 are experimental implementation. The code was stolen from boost. From the gcc docs: http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html
"The shared_ptr code is kindly donated to GCC by the Boost project and the original authors of the code."
So there is 2 implementations, tr1 and c++0x. The 2 implementations are probably the same at 99% but the later is the standard and surely future-proof. And "memory" must work on Visual studio too.
What are the impact of C++0x? GSdx compiles fine with it, I play few hours without any issue.
luc...
The changes are of syntactic, semantic and building nature (include headers): I meant that the developers of the module that is compiled with that option should agree on using it, considering the support needed by C++0x that various compilers provide.
If all of them don't have any problem, that's fine.
Basically, what about retro-compatibility?
gregory....
Which retro-compatibility? GCC-4.3 does not compile PCSX2 since several revision. GCC-4.4 support auto vars and smart pointer.
luc...
Well, I'd recommend at least gcc 4.5, but if 4.4 has everything you need and you say it works, there's no problem :)
gregory....
Honestly I did not try 4.4, I only check gcc status page. When I got some free time, I will validate it. 4.5 is fine don't worry :)
gregory....
Gabest, I need some confirmation on HLSL...
1/ c.rgb *= c.rgb < 128./255;
0 when c.rgb < 128./255
square(c.rgb) otherwise
2/ c.rgb = 1;
-> Did it affect a vector (1,1,1)?
3/ output.c1 = c.a * 2; // used for alpha blending
Again did it affect the scalar (c.a*2) to the all vectors?
gigaherz
greg: to both 2/ and 3/, yes hlsl replicates the value to all the target components. (iirc)
gregory....
Ok. thanks you.
gabest11
1. It is new to me, someone else smuggled that in. But it should give the result you think.
2. Only rgb is changed.
3. All component changed.
gabest11
If shared_ptr is in <memory> since gcc 4.5, I say use that. VS2008 also had tr1, but they removed it in 2010 and now it's part of the standard library.
gabest11
Oh, and I'm unable to compile pcsx2 since the codeblocks project is not being updated :P
A little tutorial would be nice.
gregory....
Hum on 1. Actually I don't ever understand how we can compare scalar to vector neither how to compare vectors by the way. I will keep this part for later.
Memory work also for gcc 4.4 so no need to keep TR1. TR1 was the experimental implementation of the first draft of the standard...
Do you want a tutorial on codeblock or cmake :p Arcum knows much better codeblock than me. Otherwise you can edit directly the xml file. If I found some free time, I will try to fix codeblock build.
gabest11
128./255 will be converted to vector3, and each component will be multiplied or zeroed indipendently. Just verified it. But as I said, not idea about the intention of who did this.
arcum42
I can update codeblock. I just hadn't bothered, since I'd typically been using cmake to build pcsx2 and gsdx more recently...
gabest11
To me, who uses visual studio, codeblocks is the only alternative to a debugger. But since I only want to debug gsdx, I'd mind compiling pcsx2 via command line, just tell me how. I tried build.rb, all bunch of errors come up. The ubuntu version I use may be outdated a bit.
gabest11
Is there any manual reset event in pthreads?
I might need to adopt this one: http://codeviewer.org/view/code:2161
This is a standard queue implementation I had from long ago, it has two problems, semaphors and manual reset events. The semaphor part is probably solvable.
arcum42
Yeah, build.rb is obsolete. It was built for building pcsx2 on the old compilation system, and never got updated. I should either delete it or recreate it.
This is off the top of my head, since I'm in the middle of running a few things in Windows, and can't reboot right now...
In the main pcsx2 folder, create a "build" directory, and go to it in the terminal.
Type: cmake .. -DFORCE_INTERNAL_SDL=TRUE
This will set it up for a Dev build, and forces SDL 1.3, so it will build GSdx as well. That part only has to be done once, unless you want to change it to a debug build, reconfigure, have done updates in Ubuntu of drivers it uses, etc.
Then type:
make
followed with:
make install
make will build it, and make install will install everything it built.
Oh, and if you ever want to force it to rebuild all of gsdx, you can do:
rm ./plugins/GSdx -rf
from the build directory, and then make, and make install.
I've personally set up a shell script that wipes out the contents of the build directory, rebuilds the whole project, and saves the output from compiling, so I can look over the warnings later...
gregory....
You can find additionnal info on the wiki:
https://code.google.com/p/pcsx2/wiki/CompilationGuideForLinux
To select the build use -DCMAKE_BUILD_TYPE=Release|Devel|Debug
To keep debug info on release build -DCMAKE_BUILD_STRIP=FALSE
For pthreads: no -> http://stackoverflow.com/questions/178114/pthread-like-windows-manual-reset-event
For my self https://computing.llnl.gov/tutorials/pthreads/
On linux there is semaphore (which are only mutex with a count if IIRC). There is also futex (dunno if they can help).
gregory....
I not sure what you need exactly but I found this interesting implementation: http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html
It is based on boost but can surely updated to use pthreads or (maybe new C++11 threading facilities, I'm not sure the libstd already support everything)
gabest11
Nice find, it cannot block at a certain number of items in the queue, but I don't need that feature.
Already tested it with the windows version and it didn't turn out very well, events are too slow for this. Replaced them with a spinloop at both ends (one event to wake up the consumer, another to wait until the queue is empty at the producer side), somewhat better but not as good as the current way, where the consumer wakes up on an event and spins as long as threads don't have to be syncronized to start a new primitive batch group.
Also played with vtune a bit. The concurrency checker part is really great, it can visualize how threads work together. It's interesting how rendering is actually faster then processing gif packets and producing data for the rasterizers. They frequently run out of input and go spinning, or after a syncronization (render target changes or some other major thing) start waiting on that outer queue event again. The great thing about putting rendering entirely on worker threads is that now the slow gif packet processing is somewhat overlapped, if you have at least 3 cores, 1 for pcsx2, 1 for packets, 1 for rendering. Dual-cores unfortunatelly have to stay with synchronous rendering for now.
Also noticed that with a little tweaking I could increase the fps by utilizing up to 7 threads of my i7-2600 (6 if pcsx2 is also running, not just rundll32 + GSReplay). In SoTC standing outside the castle with the horse on screen went from 30 fps to 36, about +1 fps/thread over the old 3 threads where it maxed out before (not using any pcsx2 hacks). As the number of threads increase so does the idle time of the worker threads waiting for the input. The spinning makes taskman display a fully utilized cpu core, but that's a lie of course. The real bottleneck is now not rendering, it probably never was after a number of threads, although previous implementation had a lot more threading overhead.
gregory....
Very interesting
One question, why you use shared_ptr instead of unique pointer? http://www2.research.att.com/~bs/C++0xFAQ.html#std-unique_ptr
As far as I understand, you create the jobs inside the producer threads then pack everything on a pool (m_queue). Then worker process 1 (some?) job and remove it from the queue. Only moving the pointer not sharing?
gabest11
Multiple threads receive the same pointer wrapped into share_ptr. When the last one is done with it, it gets auto-destroyed. Similar to a COM pointer without the QueryInterface stuff.

Revision 4996

gsdx-ogl: LINUX-ONLY
* lay the foundation for the HW renderer on OGL

Revision 4997

gsdx-ogl: LINUX-ONLY
Forgot the shader file...
gregory....
Nothings work yet but better to save it before the full rewrite of GSdx by Gabest :p
gabest11
Your efforts won't be wasted, just think of the huge experience you gain in opengl :D
jfre1...
Full rewrite coming up? awesome
gregory....
lol. You are exactly right. I have wanted to learn opengl for few years :)
dubigr...
Stuck at cmake with:
CMake Error at plugins/GSdx/CMakeLists.txt:180 (add_library):
Cannot find source file:
GSTextureFXOGL.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
gregory....
Ah crap, I forgot this file too....
dubigr...
:)

Revision 4998

GSdx: Renamed the sw thread setting to "extra threads".
- 0: no multi-threading
- 1: gif packet processing and texture uploads run parallel with rendering, the
slowest decides the fps, dual-cores can still suffer by the spin loops, I'll
check that when I compile pcsx2 on my notebook
- 2: two rendering threads, on a decent cpu packet processing is going to be
slower now, this is probably going to increase fps the most on quads
- 3: small fps increase
- 4+: even smaller.
If you have a quad cpu with HT, 6 is the max, 1 + 1 is needed for pcsx2 and
gsdx's basic tasks.
Also hacked palette writes to not force a read-back in hw mode (added in
previous rev), it hit render targets in a surprising large number of games.
andutrache
Compiling: Wild errors appear (VS2008). :)
gregory....
Can you explain how GSRasterizerMT::ThreadProc must work ?
I feel that you will run several times the same jobs?
Somethings like
thread 1 -> Draw data call
thread 2 -> pick up front data (same data as thread 1)!
gabest11
Yes, they pick up the same jobs, but they each have their own screen area to draw to (IsOneOfMyScanlines). I tried moving out common tasks like pre-generating data for triangle drawing, but it just added time to the main thread, as we increase the worker threads they will have more and more idle time to do that on their own.
I had two ideas how to improve this even further. There are conditional vars in windows since vista. They say queue implementation may be twice as fast with them. The other idea, to watch when the workers run idle from DrawingKick and call Flush() without waiting for the batch to complete.
gabest11
Look what MAME has: http://www.youtube.com/watch?v=iCSUOQalFcQ . I want it so bad now :D
NIKE.SP...
my test on phenom x6 3.5ghz + 460 gtx
soft:
0-1 80fps 35%
2 130fps 55%
3 170fps 65%
4 192fps 75%
5 155fps 75%
hard (native) 275 25%
gabest11
Holly molly, conditional vars and slim read-write locks are awesome. VTune says my thread utilization now falls into the ideal category :D Too bad they are not in XP/2003. But what about pthreads?
NIKE.SPAWN: nice!
gregory....
There are conditional vars on pthreads. Actually they even exist on c+11. If it can avoid to maintain 3 times the same code!
Slim read-write locks ? You mean keep the lock as little as possible ?
It would be very interesting how well it scale on a 8c bulldozer.
gabest11
It seems now I can over-set the number of threads, it will just hover around 90% cpu and stay at max fps.
It isn't something huge to be difficult to ifdef for windows and pthreads. One class for each. This is how it looks now: http://codeviewer.org/view/code:2168. The pthreads version should look very much alike.
gabest11
Slim read/write locks are similar to critical sections, actually it could be implemented with those too, somewhere I just read that critical sections call into kernel mode more often.
gregory....
I'm a lazy guy :p Otherwise, yes it would be very similar on linux.
I think SRW are similar to futex on linux. Well I need to read some litterature ie: http://www.akkadia.org/drepper/futex.pdf)
I don't know if I must use futex directly or if basic mutex with different attribute would be enough.
gabest11
Maybe, maybe not, looks complicated. I say lets try pthread's conditionals with a mutex. And XP keeps the spin loops :P
WilliamS...
Support multi-thread better!
congratulations!
lemuel2010
SW speed good!!!

Revision 4999

GSdx: fixed vs2008 build errors
ramapcsx2
Thanks a bunch :)