PSX Mode Unofficial Compatibility List
#41
Actualy, I get 007 the world is not enough to work with the IOP set to interpreter + delay VIF1 stalls and the GIF FIFO. The game will have graphical issues in hardware mode and will not reset if you die.
And you can add "Fear effect" which will be stuck on a black screen when you boot it.
Reply

Sponsored links

#42
Just a heads up:
Wisi and me are working on this again and there's been some improvements on PGIF and the timing.
Graphics so far aren't much better, but crashes and hangs are greatly reduced Smile
I don't know yet when it's ready but you'll know when it's on GitHub Smile
Reply
#43
Quote:Graphics so far aren't much better, but crashes and hangs are greatly reduced

That's actually a great improvement.
CPU: I7-4770 3.9GHZ
Motherboard: Asrock B85M - DGS
RAM: Hyper X Savage 2x8GB 1.6GHZ CL9
GPU: GTX1070 8GB GDDR5
OS: Windows 10 Pro 64bit
Reply
#44
Yeah. 2 things happening there.
The first is a race condition between EE and IOP that causes some GPU commands to arrive in the wrong order.
Wisi found a good fix for this in the PGPU itself.

The 2nd issue is an IOP core problem.
We never implemented proper cycle delays for the opcodes and maybe worse, DMA transfers don't stall the CPU as they should.
There's also no DMA priority handling at all, not that it matters much under these conditions.
This appears to be okay for PS2 mode, but in PSX mode, this screws up some common routines.
I have some ideas for this but we need tests. Particularly something silly that PSX code likes to do:
Code:
int i = 9999;
while (i-- > 1);
This and other variants of active wait...
They take time on hardware and I suspect it doesn't on the current IOP implementations (or not the right amount).
A test for this would have to be in MIPS ASM and we need a way to run this on PS2 hardware and PCSX2.
Real PSX support would be a nice bonus, to check whether the PS2 implementation is different there.

Edit:
Here's a better example, part of the original PSX startup code:

Code:
_96_init()
{
long tmp;

0xbfc07330();
tmp = 0;
while (tmp <50000) { /* this loop might be stupid, but its */
tmp=tmp; /* what it does */
tmp++;
}
dev_cd_initfs();
}

Clearly that while loop was important for some reason.
Reply
#45
while you're at it, keep in mind that load instructions take an extra before the GPRs are updated. The GTE registers take two extra cycles as well iirc
[Image: gmYzFII.png]
[Image: dvedn3-5.png]
Reply
#46
(07-03-2018, 03:20 PM)rama Wrote: Yeah. 2 things happening there.
The first is a race condition between EE and IOP that causes some GPU commands to arrive in the wrong order.
Wisi found a good fix for this in the PGPU itself.

The 2nd issue is an IOP core problem.
We never implemented proper cycle delays for the opcodes and maybe worse, DMA transfers don't stall the CPU as they should.
There's also no DMA priority handling at all, not that it matters much under these conditions.
This appears to be okay for PS2 mode, but in PSX mode, this screws up some common routines.
I have some ideas for this but we need tests. Particularly something silly that PSX code likes to do:
Code:
int i = 9999;
while (i-- > 1);
This and other variants of active wait...
They take time on hardware and I suspect it doesn't on the current IOP implementations (or not the right amount).
A test for this would have to be in MIPS ASM and we need a way to run this on PS2 hardware and PCSX2.
Real PSX support would be a nice bonus, to check whether the PS2 implementation is different there.

Edit:
Here's a better example, part of the original PSX startup code:

Code:
_96_init()
{
long tmp;

0xbfc07330();
tmp = 0;
while (tmp <50000) { /* this loop might be stupid, but its */
tmp=tmp; /* what it does */
tmp++;
}
dev_cd_initfs();
}

Clearly that while loop was important for some reason.

So how's it going with PGIF so far? I'm curious to learn more about the challenges around it.
Reply
#47
Just popping in to confirm that nothing on God's green earth will get Xenogears to boot. I have an old BIOS from my launch day PS2, using OpenGL software rendering, everything on interpreter, the works.

The console window only indicates the following:

<<<<<<HUNG timeout=0:0:30>>>>>>
PGIF=0010002c STAT=14802000 code=-1(ffffffff)
d1_chcr=70000045 vif1_stat=00000040 gif_stat=00000000
stack_check=76543210|76543210
intr timeout(0804:000d)

<<<<<<HUNG timeout=0:1:0>>>>>>
PGIF=0010002c STAT=14802000 code=-1(ffffffff)
d1_chcr=70000045 vif1_stat=00000040 gif_stat=00000000
stack_check=76543210|76543210
Reply
#48
Did you try using the IOP Interpreter?
Reply
#49
I just noticed no one ever wrote it out in words, so for the master list I am putting it here.

Silent Hill will not get to menus on dev builds past 2180, due to (what looks like) a stall out caused by SIO interrupts. The game will function on older builds, but will not have saving capabilities.
Reply
#50
(09-20-2018, 01:26 AM)CK1 Wrote: Did you try using the IOP Interpreter?

As I said in my post, I tried literally everything on interpreter - the IOP, the Emotion Engine, VU0, VU1, OpenGL Software Rendering. Nothing made the slightest difference.

I did notice the game window changing to 256 * 240 resolution, but that was as far as it got before it stopped.
Reply




Users browsing this thread: 1 Guest(s)