User talk:Kozarovv: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
 
(13 intermediate revisions by 3 users not shown)
Line 3: Line 3:
==psfour2pstwo==
==psfour2pstwo==


====gs====
====vu0====
For JAK emu. Todo: Exec from VIF0 seems to always run program for 0x7FFFFFFF cycles...
void __fastcall Vu0MicroExec()
{
  run_vu0(vu0_functions_ptr, 256LL, 0LL);
                                                // run vu for 256 cycles.
                                                // This kill whole sync idea. We have 256 cycles run already on first run.
                                                // Games like SST/ARR/TM:HEAD-ON are alredy broken before we even started.
  if (is_vu0_running())                        // if still running (no ebit, no mbit)
  {
    v0 = ee_sched_stru;
    v1 = 0LL;
    v2 = *(ee_core_regs_base + 0x378) - *(ee_core_regs_base + 0x370) + 512LL;
                                                // passed cycles + 512
                                                // terrible idea, we are falling behind ee here.
                                                // There is usually no point to run behind ee if we failed to do this at start.
                                                // This break games like Ratchet/Rayman.
    sched_Vu0MicroExec.delta = v2;
    if ( ee_sched_stru )
    {
      while ( 1 )
      {
        v3 = v0;
        if ( v0[2] >= v2 )                      // if delta from scheduler higher than from v0
          break;
        v0 = *v0;
        v1 = v3;
        if ( !*v3 )                            // schedule next run...


* --gs-kernel-cl="DarkCloud2"
====todo====
* --gs-kernel-cl="fantavision"


Special case kernel plugins?
seems to be like internal threads, not real threads. Emu print with that.
<pre>_____________________________________________________________________________
| Emotion Engine:      | Input Output Processor (iop)  | x Extra?         |
|-----------------------|-------------------------------|-------------------|
| e-dbg                | i-fw                          | x-stdlib          |
| e-r59                | i-debug                      | x-emu            |
| e-mem                | i-cdvd                        | x-lpnr            |
| e-dmac                | i-dmac                        | x-cdvd            |
| e-timer              | i-gmif                        | x-isofs          |
| e-sio                | i-intc                        | x-log            |
| e-dramc              | i-mem                        | x-mcd            |
| e-intc                | i-memcard                    | x-replay          |
| e-sif                | i-mtap                        | x-rtc            |
| e-gif                | i-pad                        | x-save            |
| e-vif0                | i-pif                        | x-osd            |
| e-vif1                | i-sched                      | x-snap            |
| e-ipu                | i-sif                        | x-host            |
| e-jit                | i-sio2                        | x-trphy          |
| e-hook                | i-timer                      | x-audio          |
| e-Lua                | i-usb                        | x-pad            |
| e-gs                  | i-spu2                        | x-srvc            |
| e-sched              | i-EndSlice                    | x-dialog          |
|                      | i-r30                        | x-dlc            |
|                      | i-jit                        | x-stream          |
|                      | i-Lua                        | x-mem            |
|                      | i-thread                      | x-core            |
|-----------------------|-------------------------------|-------------------|</pre>


====possible speed/comp hacks====
==Shaders==


* --detect-idle-vif
===SB header===
* --detect-idle-ee
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable" style="border:1px solid #999; border-collapse: collapse;"
* --detect-idle-iop
|- bgcolor="#cccccc"
* --detect-idle-intc
! Offset !! Size !! Description !! Example
* --detect-idle-chcr
|-
| 0x00 || 2 bytes || SB Version || 00 04 (00.04)
|-
| 0x02 || 2 bytes || Compiler Version || F9 F1 (63985)
|-
| 0x04 || 8 bytes || Association Hash || B2 09 E0 A5 00 00 00 00
|-
| 0x0C || 1 byte || Shader Type || 02
|-
| 0x0D || 1 byte || Code Type || 01
|-
| 0x0E || 1 byte || UseShaderResourceTable || 00/01 (true/false)
|-
| 0x0F || 1 byte || Compiler Type || 03
|-
| 0x10 || 4 bytes || Code Size || E8 00 00 00 (232)
|-
| 0x14 || 4 bytes || ? || 00 00 00 00
|-
| 0x18 || 12 bytes? || System Attribute Info - Num Threads || 40 00 01 00  01 00 00 00  00 00 00 00
|-
|}
<pre>
'''Shader Type'''


====GS handling switches====
*(unknown)            0
*kShaderTypeVsShader  1
*kShaderTypeFsShader  2
*kShaderTypeCsShader  3
*kShaderTypeGsShader  4
*kShaderTypeHsShader  5
*kShaderTypeDsShader  6


* --threaded-gs
* --gpugs
'''Reminder''' (different upscaler modes for gpugs 0x325962)


====Sound - SPU2 behavior====
'''Code type'''


* --spu2-update-deferral
*kCodeTypeIl  0
* --spu2-reverb
*kCodeTypeIsa  1
* --spu2-c0-memin-to-bgm
*kCodeTypeScu  2
* --spu2-c1-memin-to-bgm
* --spu2Trace


====other====


* --force-point-sampling
'''UseShaderResourceTable'''
* Project Snowblind US mipmap offset 0019506C  bc1f    loc_19508C


=====Disc patch=====
*false  0
*true  1


(important! 50% ps2_netemu fixes!)


MechaSetPatch (sector, offset, size) Data?
'''Compiler Type'''


MECHA_SET_PATCH : sec=%d offset=%d size=%d
<br>MECHA PATCH : sec=%d(%x), ofs=%d(%x) size=%s
*kCompilerTypeUnspecified 0
*kCompilerTypeOrbisPsslc  1
*kCompilerTypeOrbisEsslc  2
*kCompilerTypeOrbisWave  3
*kCompilerTypeOrbisCuAs  4</pre>


====IEEE 754====
===GNM Header===


https://gist.github.com/masterzorag/06cadbc5fbe7d3375704fc52518f434e
{| border="1" cellspacing="0" cellpadding="5" border="#999" class="wikitable" style="border:1px solid #999; border-collapse: collapse;"
 
|- bgcolor="#cccccc"
====vu====
! Offset !! Size !! Description !! Example
 
|-
Looks like VU sync always(?), not like ps2.
| 0x00 || 4 bytes || Magic || 72 64 68 53 Shdr
 
|-
== God of war Patch ==
| 0x04 || 4 bytes || Version || 00 07 00 02 (0007.0002)
 
|-
So how to define GOW new patched pkg. Do you have the config details yet? As i have changed the status of the game as Playable. Just to update the config file on talk page pls?
| 0x08 || 1 byte || Shader type || 04 (Compute)
[[User:SalmanKhan|SalmanKhan]] ([[User talk:SalmanKhan|talk]]) 20:19, 9 July 2019 (UTC)
|-
 
| 0x09 || 1 byte || Shader header size in DW || 0D (13)  
[[User:SalmanKhan|SalmanKhan]] You can ask pkg author to share config files he used, or extract/dump them by yourself from ps4 (using game dump payload). Then you can post config files on psdevwiki. So anyone can create pkg using game he own.
|-
Files inside pkg that store configs are:
| 0x0A || 1 byte || Has shader aux data || 00/01 ? 
* config-emu-ps4.txt
|-
* XXXX-YYYYY_cli.conf
| 0x0B || 1 byte || Target GPU types || 03 (Base|NEO)
* XXXX-YYYYY_config.lua
|-
* XXXX-YYYYY_features.lua
| 0x0C || 4 bytes || padding || 00 00 00 00
 
|-
If you need any help with posting extracted config files, feel free to contact me here. I will help you. I'm answering when i can.
|}
Posting links to full games, or any copyrighted materials is prohibited on psdevwiki. [[User:-- kozarovv]]
 
: KOZAROVV brother, the pkg author known from his twitter handle @Vitt0x_lar_yt  is not available. Atleast they must have courtesy to share the config files. Hence im unable to get the details to prove GOW is now playable. Can you get the files from the pkg pleasse?

Latest revision as of 18:30, 11 April 2023

Rough draft[edit source]

psfour2pstwo[edit source]

vu0[edit source]

For JAK emu. Todo: Exec from VIF0 seems to always run program for 0x7FFFFFFF cycles...

void __fastcall Vu0MicroExec()
{
  run_vu0(vu0_functions_ptr, 256LL, 0LL);
                                                // run vu for 256 cycles.
                                                // This kill whole sync idea. We have 256 cycles run already on first run.
                                                // Games like SST/ARR/TM:HEAD-ON are alredy broken before we even started. 

  if (is_vu0_running())                         // if still running (no ebit, no mbit)
  {
    v0 = ee_sched_stru;
    v1 = 0LL;
    v2 = *(ee_core_regs_base + 0x378) - *(ee_core_regs_base + 0x370) + 512LL;
                                                // passed cycles + 512
                                                // terrible idea, we are falling behind ee here.
                                                // There is usually no point to run behind ee if we failed to do this at start.
                                                // This break games like Ratchet/Rayman.
    sched_Vu0MicroExec.delta = v2;
    if ( ee_sched_stru )
    {
      while ( 1 )
      {
        v3 = v0;
        if ( v0[2] >= v2 )                      // if delta from scheduler higher than from v0
          break;
        v0 = *v0;
        v1 = v3;
        if ( !*v3 )                             // schedule next run...

todo[edit source]

seems to be like internal threads, not real threads. Emu print with that.

_____________________________________________________________________________
| Emotion Engine:       | Input Output Processor (iop)  | x Extra?          |
|-----------------------|-------------------------------|-------------------|
| e-dbg                 | i-fw                          | x-stdlib          |
| e-r59                 | i-debug                       | x-emu             |
| e-mem                 | i-cdvd                        | x-lpnr            |
| e-dmac                | i-dmac                        | x-cdvd            |
| e-timer               | i-gmif                        | x-isofs           |
| e-sio                 | i-intc                        | x-log             |
| e-dramc               | i-mem                         | x-mcd             |
| e-intc                | i-memcard                     | x-replay          |
| e-sif                 | i-mtap                        | x-rtc             |
| e-gif                 | i-pad                         | x-save            |
| e-vif0                | i-pif                         | x-osd             |
| e-vif1                | i-sched                       | x-snap            |
| e-ipu                 | i-sif                         | x-host            |
| e-jit                 | i-sio2                        | x-trphy           |
| e-hook                | i-timer                       | x-audio           |
| e-Lua                 | i-usb                         | x-pad             |
| e-gs                  | i-spu2                        | x-srvc            |
| e-sched               | i-EndSlice                    | x-dialog          |
|                       | i-r30                         | x-dlc             |
|                       | i-jit                         | x-stream          |
|                       | i-Lua                         | x-mem             |
|                       | i-thread                      | x-core            |
|-----------------------|-------------------------------|-------------------|

Shaders[edit source]

SB header[edit source]

Offset Size Description Example
0x00 2 bytes SB Version 00 04 (00.04)
0x02 2 bytes Compiler Version F9 F1 (63985)
0x04 8 bytes Association Hash B2 09 E0 A5 00 00 00 00
0x0C 1 byte Shader Type 02
0x0D 1 byte Code Type 01
0x0E 1 byte UseShaderResourceTable 00/01 (true/false)
0x0F 1 byte Compiler Type 03
0x10 4 bytes Code Size E8 00 00 00 (232)
0x14 4 bytes ? 00 00 00 00
0x18 12 bytes? System Attribute Info - Num Threads 40 00 01 00 01 00 00 00 00 00 00 00
'''Shader Type'''

*(unknown)             0
*kShaderTypeVsShader   1
*kShaderTypeFsShader   2
*kShaderTypeCsShader   3
*kShaderTypeGsShader   4
*kShaderTypeHsShader   5
*kShaderTypeDsShader   6


'''Code type'''

*kCodeTypeIl   0
*kCodeTypeIsa  1
*kCodeTypeScu  2


'''UseShaderResourceTable'''

*false  0
*true   1


'''Compiler Type'''

 
*kCompilerTypeUnspecified 0
*kCompilerTypeOrbisPsslc  1
*kCompilerTypeOrbisEsslc  2
*kCompilerTypeOrbisWave   3
*kCompilerTypeOrbisCuAs   4

GNM Header[edit source]

Offset Size Description Example
0x00 4 bytes Magic 72 64 68 53 Shdr
0x04 4 bytes Version 00 07 00 02 (0007.0002)
0x08 1 byte Shader type 04 (Compute)
0x09 1 byte Shader header size in DW 0D (13)
0x0A 1 byte Has shader aux data 00/01 ?
0x0B 1 byte Target GPU types NEO)
0x0C 4 bytes padding 00 00 00 00