sifadil / pcsx2-playground

Automatically exported from code.google.com/p/pcsx2-playground
2 stars 0 forks source link

Disgaea: Hour of Darkness EE/IOP problem #39

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
1) Here are several configurations to look at:
EEx2 and IOPx2 hacks are off -> black screen at start and nothing happens. 
A lot of "EE NisPackedIrx.c( 195) : error" in console.

EEx2 only -> PCSX2 crash at start (Access Violation (c0000005) in 
396_ppr291_pcsx2.exe)
EEx2 and IOPx2 are on -> Runs, but always 60fps (199%) and all movements 
are double speed
EE/IOPx3 -> almost the same as x2

2) What steps will reproduce the problem?
1. Just run the game
2. And try to start new game
3. And try to move if you use EE/IOPx2 hack. :-)

4) What version of the product are you using? On what operating system?
PCSX2 r291 on XP x32.
Game: SLUS_20666; CRC=4D2CAC9D

Original issue reported on code.google.com by eliotfur on 5 Nov 2008 at 11:44

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Woah you're right.  Disgaea is usually one of my 1st test games, but I've been 
so
busy working with FFXII that I didn't realize it had stopped working.  
Apparently
that counters fix from a few revisions ago isn't doing what I thought it was 
doing. :/

Original comment by Jake.Stine on 5 Nov 2008 at 12:04

GoogleCodeExporter commented 8 years ago
eliotfur:
I deleted your comment, since i *thought* you said you downloaded something.
I'm sure you meant you bought something, right?!

Original comment by ramapcsx2 on 5 Nov 2008 at 12:06

GoogleCodeExporter commented 8 years ago
Aaah, yes, you're right... :-)

Original comment by eliotfur on 5 Nov 2008 at 12:18

GoogleCodeExporter commented 8 years ago
Should be fixed now.
Along with god knows what else.  I was timing the IOP counters to the EE cycle 
rate.
 Bad.  Very bad.  :P

Original comment by Jake.Stine on 5 Nov 2008 at 12:26

GoogleCodeExporter commented 8 years ago
Nope still hangs.
Jake:
Please test your changes with hacks off since thats what we need to have 
working ><

Original comment by ramapcsx2 on 5 Nov 2008 at 12:57

GoogleCodeExporter commented 8 years ago

Original comment by ramapcsx2 on 5 Nov 2008 at 12:58

GoogleCodeExporter commented 8 years ago
Ok, EE seems to miss an important update.
Using the old EE_WAIT_CYCLE 512 fixes disgaea.

Original comment by ramapcsx2 on 5 Nov 2008 at 1:03

GoogleCodeExporter commented 8 years ago
I did test it with hacks turned off.  It didn't work, I found the bug, and then 
it
worked. :/

Original comment by Jake.Stine on 5 Nov 2008 at 1:10

GoogleCodeExporter commented 8 years ago
Ok, the riddle is that it only hangs the NTSC version.  The PAL version is 
working
fine as of r299.  Grr.  Well I'll play around with several recent changes and 
see
which one breaks the NTSC version.

Original comment by Jake.Stine on 5 Nov 2008 at 1:18

GoogleCodeExporter commented 8 years ago
Ah, I see ><
Well a good starting point is the EE_WAIT_CYCLE.
As I said, it works when this is reduced to 512 again.

You mentioned that this number could be obolete since the branches should 
happen in
any important case anyway.
Well, i guess there's a few cases left where it doesn't update then :p

Original comment by ramapcsx2 on 5 Nov 2008 at 1:20

GoogleCodeExporter commented 8 years ago
It has something to do with SYSCALL actually, which is also related to exception
handling somehow (which might be the problem since the recompiler doesn't really
support it).  If I tweak the block cycle count at all it tends to cause widely
variant behavior in game startup.  Some games freeze, others boot up faster, 
etc.

It seems odd since the other areas that use BlockCycles can be varied quite a 
lot
with few serious side effects in most games.  But the SYSCALL part is like an
insta-breaker.

Original comment by Jake.Stine on 5 Nov 2008 at 1:29

GoogleCodeExporter commented 8 years ago
Ok, I've got both games working here.  Still not sure why they break.  There 
must
still be something that requires regular polling in the BranchTest of either 
the IOP
or the EE, and I'm guessing it's related to the exception code.  No easy way to 
know
for sure, since setting the wait cycles of either CPU lower causes both CPU 
branch
tests to be called more often.

I'll commit the fix for now and play with it later.

Original comment by Jake.Stine on 5 Nov 2008 at 1:55

GoogleCodeExporter commented 8 years ago
Maybe they're better to be called more often?.. Just for sure...

Original comment by eliotfur on 5 Nov 2008 at 2:00

GoogleCodeExporter commented 8 years ago
Hmk, working here again.
Of course the old overhead is back :(

I'm sure IOP cycles beeing 64 is a bit too tight, thats why speed is down.
But without knowing whats wrong we'll have to keep it at that :/

Original comment by ramapcsx2 on 5 Nov 2008 at 2:47

GoogleCodeExporter commented 8 years ago
Yup.  I'll work at it more here in the meantime.
Now that I know better which games are especially sensitive to the 
IOP_WAIT_CYCLE, I
can fiddle with some things and get an idea if it's making forward or backward
progress.  And it also helps now that the counters code is all fixed up and 
stable,
since any errors in those would have skewed previous attempts to test wait cycle
variants.

Original comment by Jake.Stine on 5 Nov 2008 at 3:41