Posts: 730
Threads: 29
Joined: Nov 2008
Reputation:
20
(12-08-2010, 09:32 PM)kickstand Wrote: Yeah there is without a doubt an issue here. The game Scarface will run fine for around 1 minute then gradually bog down until it eventually locks up and crashes pcsx2. It's like the cache is growing too big and not flushing soon enough causing the slowdown. The log is attached to this post. Notice that I am using a modded version of pcsx2 but the mod is with Lilypad and affects nothing else. If you need more information on the issue feel free to contact me.
compile pcsx2 devel build and run the game until it crashes.
then attach the log of that playthrough.
the devel build prints mVU program caching info to console.
Sponsored links
Posts: 730
Threads: 29
Joined: Nov 2008
Reputation:
20
Kickstand check out r4087:
http://code.google.com/p/pcsx2/source/detail?r=4087
Change mVUcacheInitReserve and mVUcacheMaxReserve to be 10.
Then you'll get the behavior you previously had.
We were able to figure out the problem with scarface, it basically is loading thousands of identical programs with different immediate values.
There is no simple solution to handle this problem nicely w/o slowing down other games, or complicating future mVU improvements.
I may look into it further some other time; at best it would probably be a gamefix for this specific game (so it doesn't slow down the other games).
Posts: 730
Threads: 29
Joined: Nov 2008
Reputation:
20
Kickstand:
If you want a hack to speedup scarface then:
Look for the function "static void doIbit(mV)" and change it to:
Code: static void doIbit(mV) {
if (mVUup.iBit) {
incPC(-1);
mVU->regAlloc->clearRegVF(33);
xMOV(gprT1, ptr32[&curI]);
xMOV(ptr32[&mVU->getVI(REG_I)], gprT1);
incPC(1);
}
}
Then look for the function "_mVUt __fi void* mVUsearchProg(u32 startPC, uptr pState)" and change it to:
Code: _mVUt __fi void* mVUsearchProg(u32 startPC, uptr pState) {
microVU* mVU = mVUx;
microProgramQuick& quick = mVU->prog.quick[startPC/8];
microProgramList* list = mVU->prog.prog [startPC/8];
if(!quick.prog) { // If null, we need to search for new program
deque<microProgram*>::iterator it(list->begin());
for ( ; it != list->end(); ++it) {
bool b = mVUcmpProg<vuIndex>(*it[0], 0);
if (isVU1 && ((((u32*)mVU->regs().Micro)[startPC/4+1]) == 0x80200118) && ((((u32*)mVU->regs().Micro)[startPC/4+3]) == 0x81000062)) {
b = true;
mVU->prog.cleared = 0;
mVU->prog.cur = it[0];
mVU->prog.isSame = 1;
}
if (b) {
quick.block = it[0]->block[startPC/8];
quick.prog = it[0];
list->erase(it);
list->push_front(quick.prog);
return mVUentryGet(mVU, quick.block, startPC, pState);
}
}
// If cleared and program not found, make a new program instance
mVU->prog.cleared = 0;
mVU->prog.isSame = 1;
mVU->prog.cur = mVUcreateProg<vuIndex>(startPC/8);
void* entryPoint = mVUblockFetch(mVU, startPC, pState);
quick.block = mVU->prog.cur->block[startPC/8];
quick.prog = mVU->prog.cur;
list->push_front(mVU->prog.cur);
return entryPoint;
}
// If list.quick, then we've already found and recompiled the program ;)
mVU->prog.isSame = -1;
mVU->prog.cur = quick.prog;
return mVUentryGet(mVU, quick.block, startPC, pState);
}
This hack stops the constant recompilation problem which will allow you to play the game at a much faster speed.
Posts: 57
Threads: 7
Joined: Mar 2010
Reputation:
0
Location: Paducah
Excellent work cottonvibes. The hack works great and the game runs at full speed virtually all the time now.
There are still a couple minor bugs with the game but they are not related to the Microvu. One of the bugs is the sound - there are random high pitch beeps from time to time and they seem to be related to SPU2-X. Another bug is when Tony Montana goes into rage mode the graphics are corrupted. There are also corrupted graphics on the pasue screen. These bugs seem to be related to GSdx. Besides these minor bugs the game runs great and is very playable using the hack.
Thanks for taking the time to look into it and keep up the good work. Your efforts are appreciated.
Posts: 2
Threads: 0
Joined: Apr 2011
Reputation:
0
04-20-2011, 07:22 AM
(This post was last modified: 04-20-2011, 07:28 AM by CH2O.)
Um... I am new and i am using 0.9.7 beta
I dont actually know about the version correct or not
but i got a microVU1: Cached MicroPrograms
1) Maybe 0.9.7 BETA R3876m(svn)
2) Bomberman Kart DX (the game runs fine but lag in some corners
3) Console saids microVU1: Cached MicroPrograms = [065] [PC=072f] [List=01] (Cache = 1.278%)
4) SuperCompiler then console saids: supervu: 1 cycle branch delay detected: 2090 12f8, ------ I dunno th3 meaning...But Vu0 seems no problem
GSdx 3693 0.1.16 DX11
SPD hack - OFF
microVU Clamping Mode - None
Is it actually a bug 0r it's just a console ou7pu7? i haven't seen that when i was having Digimon World X
P.S. I am from HK, I got a bad EnG
Posts: 9.760
Threads: 163
Joined: Dec 2008
Reputation:
154
Yes, it's only console output. You can disable it if you want by disabling "Dev/Verbose" under the "Sources" menu in the console log window.
Core i5 3570k -- Geforce GTX 670 -- Windows 7 x64
Posts: 2
Threads: 0
Joined: Apr 2011
Reputation:
0
(04-20-2011, 08:29 AM)Shadow Lady Wrote: Yes, it's only console output. You can disable it if you want by disabling "Dev/Verbose" under the "Sources" menu in the console log window. 7hx for the reply, I g0t it
Posts: 1
Threads: 0
Joined: May 2011
Reputation:
0
05-07-2011, 01:45 AM
(This post was last modified: 05-07-2011, 02:00 AM by herolulu.)
SACRED BLAZE BUG
I'm sorry my English is not good
PCSX2 0.9.8 Installer
WINDOWS 7 86X
DDR3 1333MHZ 4GB
CORE I5 760 2.80GHZ
NVIDIA GEFORCE GTX460 1GB
Posts: 730
Threads: 29
Joined: Nov 2008
Reputation:
20
are you saying thats a microVU bug? does the game work correctly using Super VU recompilers?
the bug doesn't look like a VU bug but instead a gsdx problem.
Posts: 813
Threads: 5
Joined: Jan 2009
Reputation:
6
Code: PCSX2 0.9.9.r571 - compiled on May 5 2011
Savestate version: 0x9a010000
Host Machine Init:
Operating System = Microsoft Windows 7 Service Pack 1 (build 7601), 64-bit
Physical RAM = 4095 MB
CPU name = Intel(R) Core(TM)2 Quad CPU Q6700 @ 2.66GHz
Vendor/Model = GenuineIntel (stepping 0B)
CPU speed = 3.202 ghz (4 logical threads)
x86PType = Standard OEM
x86Flags = bfebfbff 0000e3bd
x86EFlags = 20100000
x86 Features Detected:
MMX.. SSE.. SSE2.. SSE3.. SSSE3
Reserving memory for recompilers...
Loading plugins...
Binding GS : D:\Games\PXSX2\bin\plugins\GSdx32-SSSE3.dll
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8800 GT (8.17.12.5721)
Binding PAD : D:\Games\PXSX2\bin\plugins\LilyPad.dll
Binding SPU2 : D:\Games\PXSX2\bin\plugins\SPU2-X.dll
Binding CDVD : D:\Games\PXSX2\bin\plugins\CDVDiso.dll
Binding USB : D:\Games\PXSX2\bin\plugins\USBnull.dll
Binding FW : D:\Games\PXSX2\bin\plugins\FWnull.dll
Binding DEV9 : D:\Games\PXSX2\bin\plugins\DEV9null.dll
Plugins loaded successfully.
(GameDB) 9087 games on record (loaded in 218ms)
HLE Notice: ELF does not have a path.
Initializing plugins...
Init GS
Windows 6.1.7601 (Service Pack 1 1.0)
NVIDIA GeForce 8800 GT (8.17.12.5721)
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: D:\Ephemeral Phantasia.iso
Image type = DVD
Fileparts = 1
* CDVD Disk Open: DVD, Single layer or unknown:
* * Track 1: Data (Mode 1) (793344 sectors)
Opening USB
Opening FW
Opening DEV9
McdSlot 0: C:\Users\Ryan Smith\Documents\PCSX2\memcards\Mcd001.ps2
McdSlot 1: C:\Users\Ryan Smith\Documents\PCSX2\memcards\Mcd002.ps2
Plugins opened successfully.
EE/iR5900-32 Recompiler Reset
Bios Found: Europe v02.00(14/06/2004) Console
(UpdateVSyncRate) Mode Changed to NTSC.
(UpdateVSyncRate) FPS Limit Changed : 59.94 fps
# Initialize memory (rev:3.70, ctm:393Mhz, cpuclk:295Mhz detected)
PlayStation 2 ======== Hard reset boot
ROMGEN=2004-0614, IOP info (CPUID=1f, CACH_CONFIG=0, 2MB, IOP mode)
<20040614-100914,ROMconf,PS20200EC20040614.bin:11696>
# Total accessable memory size: 32 MB (B:2:8:0) (370:2:7c30)
# TLB spad=0 kernel=1:12 default=13:30 extended=31:38
# Initialize Start.
(UpdateVSyncRate) Mode Changed to PAL.
(UpdateVSyncRate) FPS Limit Changed : 50.00 fps
# Initialize GS ...
# Initialize INTC ...
# Initialize TIMER ...
# Initialize DMAC ...
# Initialize VU1 ...
# Initialize VIF1 ...
# Initialize GIF ...
# Initialize VU0 ...
# Initialize VIF0 ...
# Initialize IPU ...
# Initialize FPU ...
# Initialize User Memory ...
# Initialize Scratch Pad ...
# Initialize Done.
EE DECI2 Manager version 0.06 Feb 6 2003 08:38:48
CPUID=2e20, BoardID=0, ROMGEN=2004-0614, 32M
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLES_501.10;1
(SYSTEM.CNF) Software version = 1.02
(SYSTEM.CNF) Disc region type = PAL
ELF (cdrom0:\SLES_501.10;1) Game CRC = 0x8EF3DDFC, EntryPoint = 0x00200008
(SYSTEM.CNF) Detected PS2 Disc = cdrom0:\SLES_501.10;1
(SYSTEM.CNF) Software version = 1.02
(SYSTEM.CNF) Disc region type = PAL
IOP Realtime Kernel Ver.0.9.1
Copyright 1999 (C) Sony Computer Entertainment Inc.
Reboot service module.(99/11/10)
cdvd driver module version 0.1.1 (C)SCEI
Load File service.(99/11/05)
Multi Threaded Fileio module.(99/11/15)
iop heap service (99/11/03)
loadelf: fname cdrom0:¥SLES_501.10;1 secname all
loadelf version 3.30
Input ELF format filename = cdrom0:¥SLES_501.10;1
0 00200000 001e6600 ...............................
Loaded, cdrom0:¥SLES_501.10;1
start address 0x200008
gp address 00000000
# Restart Without Memory Clear.
(UpdateVSyncRate) Mode Changed to NTSC.
(UpdateVSyncRate) FPS Limit Changed : 59.94 fps
(UpdateVSyncRate) Mode Changed to PAL.
(UpdateVSyncRate) FPS Limit Changed : 50.00 fps
# Initialize GS ...
# Initialize INTC ...
# Initialize TIMER ...
# Initialize DMAC ...
# Initialize VU1 ...
# Initialize VIF1 ...
# Initialize GIF ...
# Initialize VU0 ...
# Initialize VIF0 ...
# Initialize IPU ...
# Initialize FPU ...
# Initialize Scratch Pad ...
# Restart Without Memory Clear Done.
Get Reboot Request From EE
PlayStation 2 ======== Update rebooting..
PlayStation 2 ======== Update reboot complete
cdvdman Init
IOP Realtime Kernel Ver. 2.1
Copyright 1999-2001 (C) Sony Computer Entertainment Inc.
Reboot service module.(99/11/10)
cdvd driver module version 0.1.1 (C)SCEI
Load File service.(99/11/05)
Multi Threaded Fileio module.(99/11/15)
iop heap service (99/11/03)
loadmodule: fname cdrom0:¥IOP¥SIO2MAN.IRX;1 args 0 arg
loadmodule: id 25, ret 0
loadmodule: fname cdrom0:¥IOP¥PADMAN.IRX;1 args 0 arg
loadmodule: id 26, ret 0
loadmodule: fname cdrom0:¥IOP¥MCMAN.IRX;1 args 0 arg
loadmodule: id 27, ret 0
loadmodule: fname cdrom0:¥IOP¥MCSERV.IRX;1 args 0 arg
loadmodule: id 28, ret 0
loadmodule: fname cdrom0:¥IOP¥KCEJEAST.IRX;1 args 0 arg
Remote SD Driver version 1.5.0327 (C)KCE Japan EAST
loadmodule: id 29, ret 0
microVU1 Warning: Branch in E-bit delay slot! [0a90]
microVU1 Warning: Branch in E-bit delay slot! [0a90]
microVU1 Warning: Branch in E-bit delay slot! [0ce0]
microVU1 Warning: Branch in E-bit delay slot! [0a90]
microVU1 Warning: Branch in E-bit delay slot! [0a90]
microVU1 Warning: Branch in E-bit delay slot! [0ce0]
microVU1 Warning: Branch in E-bit delay slot! [0ce0]
microVU1 Warning: Branch in E-bit delay slot! [0ce0]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1 Warning: Branch in E-bit delay slot! [1758]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1: Unknown Micro VU opcode called (8000033c) [1ad0]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1: Unknown Micro VU opcode called (8000033c) [1380]
microVU1: Unknown Micro VU opcode called (8000033c) [1380]
microVU1: Unknown Micro VU opcode called (8000033c) [1380]
microVU1: Unknown Micro VU opcode called (8000033c) [1380]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
microVU1 Warning: Branch in E-bit delay slot! [1078]
With Ephemeral Phantasia[PAL] I have this spam the console. I am not worried about the Branch in E-bit delay slot as I've seen that in many games and never had an issue. However even though the game appears to run fine the unknown opcode spam worries me.
|