This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tony Hawk's Underground 2 Remix - ULUS10014
#11
This game was tested with revision 052aefd. The opening video has some stuttering in terms of the display while the audio is fine. The External Software Renderer works with this game while OpenGL has major issues.

When using OpenGL, these issues appear in Story Mode:

1) If the user chooses to let the first cutscene fully play without skipping anything, the emulator will crash as the game attempts to load the next cutscene. The following appears in the log:
Code:
08:37:51  WARN       ge - GUI - Unknown/unimplemented video command [unk 0xfe](hex=00000008,int=8,float=0.000000) at 0x0998F420
08:37:51  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:51  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:51  INFO hle.scePower - stream thread - scePowerRegisterCallback slot=0x2, uid=0x6F
08:37:51  INFO hle.scePower - stream thread - scePowerRegisterCallback returning 0x0
08:37:51  INFO   stdout - user_main - ******* Read time = 0.118 (total 0.770 seconds, 24192k)
08:37:51  INFO   stdout - user_main - (predicted load time 176.045 seconds = 173.427 thinking + 0.000 seeking + 2.618 reading)
08:37:51  INFO   stdout - user_main - DVD TOTAL LOAD TIME = 376.359 seconds = 375.589 think + 0.770 seek/read (24192k)
08:37:51  INFO   stdout - user_main - PREDICTED UMD LOAD TIME = 402.723 seconds = 375.589 think + 6.974 seek + 20.160 read (24192k)
08:37:52  INFO   stdout - user_main - Score::RESET ...............
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:52  WARN       ge - GUI - Unknown/unimplemented video command [unk 0xfd](hex=00BFFFFF,int=12582911,float=-1.999969) at 0x041A3C7C
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:52  WARN       ge - GUI - PRIM type=7 cannot continue previous strip/fan (4)
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:52  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:53  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:53  WARN       ge - GUI - Invalid texture address 0x1A987640 for texture level 0
08:37:53 ERROR   memory - GUI - getBuffer - Invalid memory address: 0x09F96A04 PC=0x88000000

2) If the user chooses to skip the first cutscene, the emulator will still crash but the audio of the second cutscene will play in the background (display is frozen on the first cutscene). The following appears in the log:
Code:
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DC20
09:04:26  INFO   stdout - user_main - (predicted load time 13.378 seconds = 10.759 thinking + 0.000 seeking + 2.618 reading)
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DC44
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DC68
09:04:26  INFO   stdout - user_main - DVD TOTAL LOAD TIME = 68.095 seconds = 67.549 think + 0.546 seek/read (24192k)
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DC8C
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DCB0
09:04:26  WARN       ge - GUI - Unknown light mode sceGuLightMode(0000A9)
09:04:26  INFO   stdout - user_main - PREDICTED UMD LOAD TIME = 94.683 seconds = 67.549 think + 6.974 seek + 20.160 read (24192k)
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DCD4
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DCF8
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DD1C
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DD40
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DD64
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DD88
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x4f](hex=00FFCD13,int=16764179,float=NaN) at 0x0995DDAC
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x52](hex=0000001C,int=28,float=0.000000) at 0x0995DDF0
09:04:26  WARN       ge - GUI - Unknown light mode sceGuLightMode(00001E)
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x39](hex=00138000,int=1277952,float=0.000000) at 0x0995DE4C
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x1A) unknown behavior at 0x0995DE80
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x50) unknown behavior at 0x0995DEA4
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x7E) unknown behavior at 0x0995DEC8
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x7E) unknown behavior at 0x0995DEEC
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x7E) unknown behavior at 0x0995DF10
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x11](hex=00FFC200,int=16761344,float=NaN) at 0x0995DF28
09:04:26  WARN       ge - GUI - signal (behavior=0, signal=0x11) unknown behavior at 0x0995DF34
09:04:26  WARN       ge - GUI - Unimplemented VTCQ: coordQ=2.1204581E-27
09:04:26  WARN       ge - GUI - Unknown/unimplemented video command [unk 0x3](hex=00FF4AFF,int=16730879,float=-269828090847479400000000000000000000000.000000) at 0x0995DF4C
09:04:26  WARN       ge - GUI - Unimplemented VCV: colorR=0, colorG=52, colorB=19

The errors that are displayed in the ConsoleOut.txt are different for each issue. The first cutscene appeared to be slow to me performance wise so I captured about 20 seconds of data for the profiler (using the option Reset Profiler Information) and placed the text file in the First Cutscene Played.zip.


Attached Files
.zip   Log_r052aefd(64bit)_INFO (First Cutscene Played).zip (Size: 282.13 KB / Downloads: 91)
.zip   Log_r052aefd(64bit)_INFO (Skipped First Cutscene).zip (Size: 162.54 KB / Downloads: 90)
Reply
#12
PS: i was able to get the same error with Intel HD card, works just perfect with Nvidia.
Reply
#13
(05-16-2017, 01:40 PM)DragonNeos Wrote: The first cutscene appeared to be slow to me performance wise so I captured about 20 seconds of data for the profiler (using the option Reset Profiler Information) and placed the text file in the First Cutscene Played.zip.
Maybe the issues are coming from the poor performance as raziel1000 is having different results depending on the hardware.

I found the following information from LunaMoo stating that this game has self modifying code:

http://forums.ppsspp.org/showthread.php?...#pid126640

This is also confirmed from your profiler information:
Code:
_S1_36_886554C 9,373,362 instructions (0.294%), 1,179 calls (0886554C - 0886568C, length 81)
The code at 0x886554C has been recompiled at least 36 times... This could explain the poor performance.
Could you please create an INFO log with only the compiler at the DEBUG level, in LogSettings.xml:
Code:
<logger name='compiler'> <level value='debug' /> </logger>

Thank you!
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply
#14
As you requested, here is a log file with only the Compiler set to DEBUG on revision c32400a. I didn't enable the option "Output profiler info to profiler.txt (only for compiler)" as the file size for the compressed archive was going to pass 2 MB. One thing I found unusual was that the second cutscene will actually load with the Compiler set to DEBUG.


Attached Files
.7z   Log_rc32400a(64bit)_INFO.7z (Size: 1.57 MB / Downloads: 78)
Reply
#15
OK, the self-modification can be confirmed. This is the code that is being modified (already 46 times at that moment):
Code:
11:19:18 DEBUG compiler - user_main - Compiling _S1_46_886554C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile  > 0x886554C - addiu      $sp, $sp, -64
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865550 - sv.q       C700.q, 0($sp)
11:19:18 DEBUG compiler - user_main - sv.q sequence 0x08865550-0x0886555C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865560 - addiu      $t1, $a2, 1
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865564 - andi       $t1, $t1, -2
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865568 - addu       $t1, $t1, $a0
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886556C - lv.q       C400.q, 0($a3)
11:19:18 DEBUG compiler - user_main - lv.q sequence 0x0886556C-0x0886558C
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8865590 - lv.q       C030.q, 0($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865594 - lv.q       C230.q, 16($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865598 - cache      0x1E, 95($a1)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886559C - vh2f.p     C000.p, C030.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655A0 - vh2f.p     C010.p, C032.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655A4 - vh2f.p     C020.p, C032.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655A8 - vh2f.p     C030.p, C030.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655AC - vh2f.p     C200.p, C230.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655B0 - vh2f.p     C210.p, C232.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655B4 - vh2f.p     C220.p, C232.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655B8 - vh2f.p     C230.p, C230.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655BC - addiu      $a1, $a1, 32
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655C0 - addiu      $a0, $a0, 2
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655C4 - vmin.q     C620.q, C620.q, C630.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655C8 - vmin.q     C700.q, C700.q, C710.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655CC - vmov.p     R022.p, R002.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655D0 - vmin.p     C620.p, C620.p, C720.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655D4 - vmov.q     R100.q, R020.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655D8 - VPFXD      [x, y, 0:1, 0:1]
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655DC - vmin.q     C720.q, C620.q, C700.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655E0 - vmov.q     R101.q, R001.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655E4 - vmov.q     R102.q, R002.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655E8 - vmin.p     C720.p, C720.p, C722.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655EC - vmov.p     R222.p, R202.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655F0 - vmov.q     R300.q, R220.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655F4 - vi2c.q     S733.s, C720.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655F8 - vmov.q     R301.q, R201.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x88655FC - vmov.q     R302.q, R202.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865600 - vhdp.q     S620.s, C100.q, C400.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865604 - vhdp.q     S630.s, C010.q, C410.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865608 - vhdp.q     S700.s, C020.q, C420.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886560C - vhdp.q     S710.s, C010.q, C430.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865610 - vhdp.q     S720.s, C010.q, C500.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865614 - vhdp.q     S621.s, C300.q, C400.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865618 - vhdp.q     S631.s, C210.q, C410.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886561C - vhdp.q     S701.s, C220.q, C420.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865620 - vhdp.q     S711.s, C210.q, C430.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865624 - vhdp.q     S721.s, C210.q, C500.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865628 - vhdp.q     S622.s, C000.q, C510.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886562C - vhdp.q     S632.s, C000.q, C520.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865630 - vhdp.q     S702.s, C030.q, C530.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865634 - vhdp.q     S712.s, C000.q, C600.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865638 - vhdp.q     S623.s, C200.q, C510.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886563C - vhdp.q     S633.s, C200.q, C520.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865640 - vhdp.q     S703.s, C230.q, C530.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865644 - vhdp.q     S713.s, C200.q, C600.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865648 - mfv.s      $t0, S733.s
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile ^  0x886564C - bne        $a0, $t1, 0x08865590
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865650 - sh         $t0, -2($a0)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865654 - vmin.q     C620.q, C620.q, C630.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865658 - vmin.q     C700.q, C700.q, C710.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886565C - vmin.p     C620.p, C620.p, C720.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865660 - VPFXD      [x, y, 0:1, 0:1]
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865664 - vmin.q     C720.q, C620.q, C700.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865668 - vmin.p     C720.p, C720.p, C722.p
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886566C - vi2c.q     S733.s, C720.q
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865670 - mfv.s      $t0, S733.s
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865674 - sh         $t0, 0($a0)
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865678 - lv.q       C700.q, 0($sp)
11:19:18 DEBUG compiler - user_main - lv.q sequence 0x08865678-0x08865684
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x8865688 - jr         $ra
11:19:18 DEBUG compiler - user_main - CodeInstruction.compile    0x886568C - addiu      $sp, $sp, 64

and this seems to be the code responsible for the self-modifications as this is the only place where a "cache 0x08" is being done (in sub 0x0886358C):
Code:
11:14:54 DEBUG compiler - user_main - Compiling _S1_2_8863BB8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863BB8 - addiu      $sp, $sp, -48
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BBC - sw         $s0, 28($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BC0 - or         $a1, $a0, $zr <=> move $a1, $a0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BC4 - addiu      $s0, $sp, 16
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BC8 - or         $a0, $s0, $zr <=> move $a0, $s0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BCC - sw         $ra, 32($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile <  0x8863BD0 - jal        0x08863B50
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BD4 - ori        $a2, $zr, 9 <=> li $a2, 9
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BD8 - lui        $a0, 0x0886 <=> li $a0, 0x08860000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BDC - addiu      $a0, $a0, 21836
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BE0 - lw         $a1, 0($a0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BE4 - addiu      $a2, $zr, -32513 <=> li $a2, -32513
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BE8 - lui        $a3, 0x6611 <=> li $a3, 0x66110000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BEC - and        $t0, $a1, $a2
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BF0 - addiu      $a1, $a3, -32614
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v  0x8863BF4 - beq        $t0, $a1, 0x08863C10
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863BF8 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863BFC - addiu      $a0, $a0, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C00 - lw         $a3, 0($a0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C04 - and        $a3, $a3, $a2
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^  0x8863C08 - bne        $a3, $a1, 0x08863BFC
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C0C - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863C10 - or         $a1, $a0, $zr <=> move $a1, $a0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C14 - ori        $a3, $zr, 0 <=> li $a3, 0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863C18 - lbu        $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C1C - slti       $t0, $a2, 8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v  0x8863C20 - bne        $t0, $zr, 0x08863C2C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C24 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C28 - break      0x00000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863C2C - xori       $a2, $a2, 129
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C30 - sb         $a2, 1($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C34 - lbu        $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C38 - addiu      $a3, $a3, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C3C - xori       $a2, $a2, 137
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C40 - sb         $a2, 21($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C44 - addiu      $s0, $s0, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C48 - slti       $a2, $a3, 5
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^  0x8863C4C - bne        $a2, $zr, 0x08863C18
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C50 - addiu      $a1, $a1, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C54 - addiu      $a1, $a1, 20
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C58 - ori        $a3, $zr, 0 <=> li $a3, 0
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863C5C - lbu        $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C60 - slti       $t0, $a2, 8
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile v  0x8863C64 - bne        $t0, $zr, 0x08863C70
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C68 - nop
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C6C - break      0x00000
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile  > 0x8863C70 - xori       $a2, $a2, 128
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C74 - sb         $a2, 1($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C78 - lbu        $a2, 0($s0)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C7C - addiu      $a3, $a3, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C80 - xori       $a2, $a2, 136
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C84 - sb         $a2, 17($a1)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C88 - addiu      $s0, $s0, 1
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C8C - slti       $a2, $a3, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile ^  0x8863C90 - bne        $a2, $zr, 0x08863C5C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C94 - addiu      $a1, $a1, 4
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile <  0x8863C98 - jal        0x0886358C
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863C9C - ori        $a1, $zr, 72 <=> li $a1, 72
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863CA0 - lw         $s0, 28($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863CA0 - lw         $s0/$ra, 28/32($sp)
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863CA8 - jr         $ra
11:14:54 DEBUG compiler - user_main - CodeInstruction.compile    0x8863CAC - addiu      $sp, $sp, 48
Let me analyse what is being done here...
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply
#16
(05-17-2017, 03:53 PM)gid15 Wrote: OK, the self-modification can be confirmed.
Is there a performance improvement with 666b0ef? The frequent recompilations should now be avoided in this game.
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply
#17
There doesn't seem to be any improvement when I tested the game with revision 9de5f87. When I go through the first cutscene using OpenGL, the game runs at 2-3 FPS (External Software Renderer runs at about 7-9 FPS). In a playable stage on OpenGL, the game runs at 3-5 FPS (External Software Renderer runs at about 9-10 FPS).

On OpenGL at the first cutscene, the game will still crash and occasionally show this in the log:
Code:
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5001) at 0x04078E24, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x04078E24, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5002) at 0x04078E28, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x04078E28, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5003) at 0x04078E2C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x04078E2C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5004) at 0x04078E30, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x04078E30, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5005) at 0x04078E34, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x04078E34, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5006) at 0x099AD904, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099AD904, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00  WARN       ge - GUI - Unknown/unimplemented video command [unk 0xfe](hex=00000009,int=9,float=0.000000) at 0x099AD90C
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5007) at 0x097F4008, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x097F4008, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00  WARN       ge - GUI - Unsupported bezier parameters ucount=9 vcount=0
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5008) at 0x09FBD274, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x09FBD274, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5009) at 0x09FBD274, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x09FBD274, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5010) at 0x099ADA0C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADA0C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5011) at 0x099ADA0C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADA0C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5012) at 0x099ADA7C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADA7C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5013) at 0x09874004, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x09874004, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5014) at 0x099ADB08, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADB08, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5015) at 0x099ADB0C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADB0C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]
05:31:00 ERROR       ge - GUI - Too many NOP instructions executed (5016) at 0x099ADB9C, list PspGeList[id=0x3E, status=PSP_GE_LIST_DRAWING, list=0x0917D100, pc=0x099ADB9C, stall=0x00000000, cbid=0x0, ended=false, finished=false, paused=false, restarted=false, reset=false]

JPCSP will still crash even if you skip the cutscene on OpenGL (occasionally crashes on External Software Renderer if you skip the cutscene). The cutscene and audio are not in sync as the audio still plays in the background even though the emulator has crashed (audio is playing from the second cutscene while onscreen the first cutscene just ended).

I'm not sure if the Compiler reacts differently with regards to the graphics renderer so I provided a log for each. I conducted another profiler test in the first cutscene and tried to test in a playable stage as well.


Attached Files
.zip   Log_r9de5f87(64bit)_INFO (OpenGL - First Cutscene).zip (Size: 178.5 KB / Downloads: 79)
.zip   Log_r9de5f87(64bit)_INFO (OpenGL - Skipping First Cutscene).zip (Size: 166.76 KB / Downloads: 83)
.zip   Log_r9de5f87(64bit)_INFO (Ext. Soft. Renderer - First Cutscene).zip (Size: 181.04 KB / Downloads: 104)
.zip   Log_r9de5f87(64bit)_INFO (Ext. Soft. Renderer - Skipping First Cutscene).zip (Size: 177.83 KB / Downloads: 79)
.7z   Compiler (OpenGL).7z (Size: 1.56 MB / Downloads: 96)
.7z   Compiler (Ext. Soft. Renderer).7z (Size: 1.56 MB / Downloads: 81)
.zip   Profiler.zip (Size: 455.64 KB / Downloads: 79)
Reply
#18
Hmm, the change that I implemented seems to work as expected, the code is no longer recompiled. I still do not understand why you get so poor performance. Can anyone else try this game as well?

Is this option really needed? If not, try to disable it as it has a negative performance impact:
Code:
[X] Enable the shader implementation for the "Stencil Test" (more accurate but slower)
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply
#19
I use the option "Enable the shader implementation for the "Stencil Test" (more accurate but slower)" because the game has parts (such as Menus and text) that would appear transparent if it isn't used (black borders don't appear dark enough in cutscenes). Even if I don't use this option, the game is still slow, performing at 3-4 FPS. During the first cutscene (subsequent cutscenes and in-game action as well), this would appear if the option is not used:
Code:
13:35:14  WARN       ge - GUI - UNSUPPORTED: Both different SFIX (0x323232) and DFIX (0xDFDFDF) are not supported (blend equation=2), approximating with 0x323232/0xCDCDCD

It might be a possibility that this game doesn't work well with older AMD/ATI integrated graphics cards (ATI Radeon HD 4200). In an attempt in trying to find the best settings for OpenGL, I find that not enabling any options gives the game a slight boost and has similar performance to the External Software Renderer (7-9 FPS). The game can get to the second cutscene in Story Mode without crashing (can also skip cutscenes without any issue).

Is it possible that audio is tied to the performance of the game? As I mentioned in my earlier post, the cutscenes and audio are not in sync (audio is faster than what is being displayed onscreen).
Reply
#20
(05-19-2017, 07:51 PM)DragonNeos Wrote: Is it possible that audio is tied to the performance of the game? As I mentioned in my earlier post, the cutscenes and audio are not in sync (audio is faster than what is being displayed onscreen).
It could be that the game is just expecting that the rendering is happening at 30FPS and is not taking care of synching the audio with the video like is usually the case in MPEG video.
Always include a complete log file at INFO level in your reports. Thanks! How to post a log
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)