Resolved: Microvu bug reports official thread
#91
(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.
Check out my blog: Trashcan of Code

Sponsored links

#92
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).
Check out my blog: Trashcan of Code
#93
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.
Check out my blog: Trashcan of Code
#94
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.
#95
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
#96
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
#97
(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
#98
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

   
   
   
   
   
   
   
#99
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.
Check out my blog: Trashcan of Code
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.




Users browsing this thread: 1 Guest(s)