Project Cars 2

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Andrakann
Posts: 13
Joined: Fri Aug 12, 2016 1:18 pm

Re: Project Cars 2

Post by Andrakann »

del
Last edited by Andrakann on Sat Sep 23, 2017 3:19 pm, edited 1 time in total.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Project Cars 2

Post by aluigi »

Script 0.2.5, apparently it was just a new key :)
http://aluigi.org/bms/nfsshift.bms
Andrakann
Posts: 13
Joined: Fri Aug 12, 2016 1:18 pm

Re: Project Cars 2

Post by Andrakann »

Great! :)
sderenno
Posts: 4
Joined: Mon Jan 04, 2016 2:45 pm

Re: Project Cars 2

Post by sderenno »

don't work for me :oops:


- select the BMS script to use
- select the input archives/files to extract, type * or "" for whole folder and subfolders
- select the output folder where extracting the files
- open input file C:\Users\Piero\Desktop\quickbms\Ferrari_488_GT3.bff
- open script C:\Users\Piero\Desktop\quickbms\nfsshift.bms
- set output folder C:\Users\Piero\Desktop\quickbms\Ferrari_488_GT3

offset filesize filename
--------------------------------------
unavailable key, contact me

- 0 files found in 0 seconds
coverage file 0 0% 1769 14238322 . offset 0000012e
coverage file -1 0% 0 16 . offset 00000000
coverage file -3 105% 511 486 . offset 00000000

Press ENTER or close the window to quit
aspec7878
Posts: 8
Joined: Fri Sep 22, 2017 10:36 am

Re: Project Cars 2

Post by aspec7878 »

works great.
Only now can not open *.meb files))))
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Project Cars 2

Post by aluigi »

@sderenno
You have not downloaded the new script, you are still using the one in your browser's cache
sergiorc
Posts: 4
Joined: Thu Jul 27, 2017 5:09 pm

Re: Project Cars 2

Post by sergiorc »

aspec7878 wrote:works great.
Only now can not open *.meb files))))


yep, I had opened it, but I can't open Meb files now, even 3dsimed3.1k or zmodeler2.6, maybe I had to use zmodeler3
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Project Cars 2

Post by aluigi »

Regarding MEB, I made a quick analysis just yesterday and the X vertexes (4 bytes each 12) is encrypted.

I leave here what I wrote about MEB:

Code: Select all

I just checked the file LAM_HURA_16_BODY_LODA.meb and the difference
is that 4 bytes every 12 bytes are obfuscated in some way.
What I mean is easily visible by using xoring the original file with
the new one and watching the obtained file with a hex editor.

This sort of obfuscation covers only a part of the meb file so it's
applied to specific data of this format and note to the whole file
as-is.

I don't know what obfuscation is used, but there are a lot of 0xaa
bytes when you xor the 2 files.
Considering that it's a list of 32bit float numbers (X axis of
XYZ coordinates of something?) it may be just a float-related math
operation used as obfuscation, for example:
1.583825246319139e-314 -> 3.458537934047377e-315
aspec7878
Posts: 8
Joined: Fri Sep 22, 2017 10:36 am

Re: Project Cars 2

Post by aspec7878 »

aluigi wrote:Regarding MEB, I made a quick analysis just yesterday and the X vertexes (4 bytes each 12) is encrypted.

and what would that mean?)))
sergiorc
Posts: 4
Joined: Thu Jul 27, 2017 5:09 pm

Re: Project Cars 2

Post by sergiorc »

it means it could be a hell off job to make it

https://null-byte.wonderhowto.com/how-t ... g-0156158/

I tried to open it using wtceed and it opens but nothing comes with, only a empty material...
aspec7878
Posts: 8
Joined: Fri Sep 22, 2017 10:36 am

Re: Project Cars 2

Post by aspec7878 »

sergiorc wrote:it means it could be a hell off job to make it

https://null-byte.wonderhowto.com/how-t ... g-0156158/

I tried to open it using wtceed and it opens but nothing comes with, only a empty material...

and means wait for an update from the 3d simed and zmodeler? :cry:
Andrakann
Posts: 13
Joined: Fri Aug 12, 2016 1:18 pm

Re: Project Cars 2

Post by Andrakann »

aluigi wrote:Regarding MEB, I made a quick analysis just yesterday and the X vertexes (4 bytes each 12) is encrypted.

Tried to capture 2016 Lambo Huracan with Ninja Ripper and have no luck, all ripped meshes looks like this one:
Image
So, i think decryption is done by shaders, because Ninja Ripper get meshes before shaders apply.
Shaders is also captured and decompiled by ripper, there are 1 .gs shader, 350 .vs shaders and 575 .ps shaders in this rip (for 495 meshes and 112 textures). Uploaded here.
Full rip (with shaders) is uploaded here.
GS shader example:

Code: Select all

//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//
// Buffer Definitions:
//
// cbuffer bokeh
// {
//
//   row_major float4x4 g_mInvProj;     // Offset:    0 Size:    64 [unused]
//   float4 g_viewports[6];             // Offset:   64 Size:    96
//   float2 g_depthBufferSize;          // Offset:  160 Size:     8
//   float2 g_dofTexSize;               // Offset:  168 Size:     8 [unused]
//   float2 g_screenSize;               // Offset:  176 Size:     8
//   float2 g_scale;                    // Offset:  184 Size:     8
//   float2 g_switchover1;              // Offset:  192 Size:     8
//   float2 g_switchover2;              // Offset:  200 Size:     8
//   float g_cameraFarPlane;            // Offset:  208 Size:     4
//   float g_fMaxCoCRadiusNear;         // Offset:  212 Size:     4
//   float g_fFocusLength;              // Offset:  216 Size:     4
//   float g_fFocalPlane;               // Offset:  220 Size:     4
//   float g_fFNumber;                  // Offset:  224 Size:     4
//   float g_fMaxCoCRadiusFar;          // Offset:  228 Size:     4
//   float g_fIrisTextureOffset;        // Offset:  232 Size:     4
//   float g_initialEnergyScale;        // Offset:  236 Size:     4
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// energies                          texture  float4          2d    0        1
// t0                                texture  float4          2d    1        1
// bokeh                             cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue Format   Used
// -------------------- ----- ------ -------- -------- ------ ------
// SV_PrimitiveID           0    N/A   primID   PRIMID   uint    YES
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue Format   Used
// -------------------- ----- ------ -------- -------- ------ ------
// m0:SV_POSITION           0   xyzw        0      POS  float   xyzw
// m0:SV_ViewportArrayIndex     0   x           1  VPINDEX   uint   x   
// m0:TEXCOORD              0   xy          2     NONE  float   xy 
// m0:WEIGHT                0     z         2     NONE  float     z
// m0:TEXCOORD              1   xyz         3     NONE  float   xyz
//
gs_5_0
dcl_globalFlags refactoringAllowed
dcl_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000},
                              { -1.000000, -1.000000, 0, 1.000000},
                              { -1.000000, 3.000000, 0, -1.000000},
                              { 3.000000, -1.000000, 2.000000, 1.000000} }
dcl_constantbuffer cb1[15], dynamicIndexed
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_input vPrim
dcl_temps 14
dcl_inputprimitive point
dcl_stream m0
dcl_outputtopology trianglestrip
dcl_output_siv o0.xyzw, position
dcl_output_siv o1.x, viewport_array_index
dcl_output o2.xy
dcl_output o2.z
dcl_output o3.xyz
dcl_maxout 12
ishl r0.x, vPrim, l(2)
utof r0.x, r0.x
mul r0.y, cb1[11].x, l(0.500000)
round_ni r0.y, r0.y
div r0.z, r0.x, r0.y
ftou r1.y, r0.z
utof r0.z, r1.y
mad r0.x, -r0.z, r0.y, r0.x
ftou r1.x, r0.x
mul r0.xy, cb1[11].zwzz, cb1[11].xyxx
mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(16.000000, 16.000000, 0.000000, 0.000000)
ftou r0.xy, r0.xyxx
ult r0.xy, r0.xyxx, r1.xyxx
or r0.x, r0.x, r0.y
if_z r0.x
  mov r1.z, l(0)
  ld_indexable(texture2d)(float,float,float,float) r0.xyzw, r1.xyzz, t1.xyzw
  mul r2.x, r0.w, cb1[13].x
  mad r0.w, r0.w, cb1[13].x, -cb1[13].w
  div r2.x, |r0.w|, r2.x
  mul r2.y, cb1[13].z, cb1[13].z
  add r2.z, -cb1[13].z, cb1[13].w
  mul r2.z, r2.z, cb1[14].x
  div r2.y, r2.y, r2.z
  mul r2.x, r2.x, r2.y
  mul r2.x, r2.x, cb1[10].x
  mul r2.x, r2.x, l(14.285714)
  lt r2.z, r0.w, l(0.000000)
  movc r2.w, r2.z, cb1[13].y, cb1[14].y
  min r2.x, r2.x, r2.w
  mul r3.xy, cb1[11].xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  mul r4.xy, r2.xxxx, l(0.500000, 0.250000, 0.000000, 0.000000)
  ge r0.w, r0.w, l(0.000000)
  and r2.x, r0.w, l(1)
  dp2 r2.w, cb1[12].xyxx, icb[r2.x + 0].xyxx
  ge r2.w, r4.x, r2.w
  mul r4.z, cb1[14].w, l(0.250000)
  mov r4.w, l(2)
  mov r5.x, r4.x
  mov r5.y, cb1[14].w
  mov r5.z, l(0)
  movc r6.xyz, r2.wwww, r4.yzwy, r5.xyzx
  dp2 r2.x, cb1[12].zwzz, icb[r2.x + 0].xyxx
  ge r2.x, r6.x, r2.x
  mul r7.xy, r6.xyxx, l(0.500000, 0.250000, 0.000000, 0.000000)
  mov r7.z, l(4)
  movc r6.xyz, r2.xxxx, r7.xyzx, r6.xyzx
  lt r2.x, r6.x, l(1.000000)
  movc r2.x, r2.x, l(0), r6.x
  movc r2.x, r2.z, r2.x, r6.x
  add r2.x, r2.x, r2.x
  iadd r7.xyw, r1.xxxx, l(2, 1, 0, 3)
  mov r1.w, r7.y
  ld_indexable(texture2d)(float,float,float,float) r8.xyzw, r1.wyzz, t1.xyzw
  mul r2.z, r8.w, cb1[13].x
  mad r2.w, r8.w, cb1[13].x, -cb1[13].w
  div r2.z, |r2.w|, r2.z
  mul r2.z, r2.z, r2.y
  mul r2.z, r2.z, cb1[10].x
  mul r2.z, r2.z, l(14.285714)
  lt r3.z, r2.w, l(0.000000)
  movc r3.w, r3.z, cb1[13].y, cb1[14].y
  min r2.z, r2.z, r3.w
  mul r4.xy, r2.zzzz, l(0.500000, 0.250000, 0.000000, 0.000000)
  ge r2.z, r2.w, l(0.000000)
  and r2.w, r2.z, l(1)
  dp2 r3.w, cb1[12].xyxx, icb[r2.w + 0].xyxx
  ge r3.w, r4.x, r3.w
  mov r5.w, r4.x
  movc r9.xyz, r3.wwww, r4.yzwy, r5.wyzw
  dp2 r2.w, cb1[12].zwzz, icb[r2.w + 0].xyxx
  ge r2.w, r9.x, r2.w
  mul r10.xy, r9.xyxx, l(0.500000, 0.250000, 0.000000, 0.000000)
  mov r10.z, l(4)
  movc r9.xyz, r2.wwww, r10.xyzx, r9.xyzx
  lt r2.w, r9.x, l(1.000000)
  movc r2.w, r2.w, l(0), r9.x
  movc r2.w, r3.z, r2.w, r9.x
  add r2.w, r2.w, r2.w
  round_ne r2.xw, r2.xxxw
  mov r7.yz, r1.yyzy
  ld_indexable(texture2d)(float,float,float,float) r10.xyzw, r7.xyzz, t1.xyzw
  mul r1.z, r10.w, cb1[13].x
  mad r3.z, r10.w, cb1[13].x, -cb1[13].w
  div r1.z, |r3.z|, r1.z
  mul r1.z, r1.z, r2.y
  mul r1.z, r1.z, cb1[10].x
  mul r1.z, r1.z, l(14.285714)
  lt r3.w, r3.z, l(0.000000)
  movc r6.x, r3.w, cb1[13].y, cb1[14].y
  min r1.z, r1.z, r6.x
  mul r4.xy, r1.zzzz, l(0.500000, 0.250000, 0.000000, 0.000000)
  ge r1.z, r3.z, l(0.000000)
  and r3.z, r1.z, l(1)
  dp2 r6.x, cb1[12].xyxx, icb[r3.z + 0].xyxx
  ge r6.x, r4.x, r6.x
  mov r5.x, r4.x
  movc r11.xyz, r6.xxxx, r4.yzwy, r5.xyzx
  dp2 r3.z, cb1[12].zwzz, icb[r3.z + 0].xyxx
  ge r3.z, r11.x, r3.z
  mul r12.xy, r11.xyxx, l(0.500000, 0.250000, 0.000000, 0.000000)
  mov r12.z, l(4)
  movc r11.xyz, r3.zzzz, r12.xyzx, r11.xyzx
  lt r3.z, r11.x, l(1.000000)
  movc r3.z, r3.z, l(0), r11.x
  movc r3.z, r3.w, r3.z, r11.x
  add r3.z, r3.z, r3.z
  ld_indexable(texture2d)(float,float,float,float) r12.xyzw, r7.wyzz, t1.xyzw
  mul r3.w, r12.w, cb1[13].x
  mad r5.x, r12.w, cb1[13].x, -cb1[13].w
  div r3.w, |r5.x|, r3.w
  mul r2.y, r2.y, r3.w
  mul r2.y, r2.y, cb1[10].x
  mul r2.y, r2.y, l(14.285714)
  lt r3.w, r5.x, l(0.000000)
  movc r6.x, r3.w, cb1[13].y, cb1[14].y
  min r2.y, r2.y, r6.x
  mul r4.xy, r2.yyyy, l(0.500000, 0.250000, 0.000000, 0.000000)
  ge r2.y, r5.x, l(0.000000)
  and r5.x, r2.y, l(1)
  dp2 r6.x, cb1[12].xyxx, icb[r5.x + 0].xyxx
  ge r6.x, r4.x, r6.x
  mov r5.w, r4.x
  movc r4.xyz, r6.xxxx, r4.yzwy, r5.wyzw
  dp2 r4.w, cb1[12].zwzz, icb[r5.x + 0].xyxx
  ge r4.w, r4.x, r4.w
  mul r5.xy, r4.xyxx, l(0.500000, 0.250000, 0.000000, 0.000000)
  mov r5.z, l(4)
  movc r4.xyz, r4.wwww, r5.xyzx, r4.xyzx
  lt r4.w, r4.x, l(1.000000)
  movc r4.w, r4.w, l(0), r4.x
  movc r3.w, r3.w, r4.w, r4.x
  add r3.w, r3.w, r3.w
  round_ne r3.zw, r3.zzzw
  add r5.xyz, r0.xyzx, r8.xyzx
  add r5.xyz, r10.xyzx, r5.xyzx
  add r5.xyz, r12.xyzx, r5.xyzx
  mul r5.xyz, r5.xyzx, l(0.250000, 0.250000, 0.250000, 0.000000)
  ge r4.x, r2.x, l(1.000000)
  if_nz r4.x
    utof r4.xw, r1.xxxy
    add r4.xw, r4.xxxw, l(0.500000, 0.000000, 0.000000, 0.500000)
    div r4.xw, r4.xxxw, r3.xxxy
    add r4.xw, r4.xxxw, r4.xxxw
    mul r1.x, r2.x, l(0.500000)
    lt r5.w, r2.x, l(64.000000)
    ftoi r13.x, r2.x
    mov r13.yzw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r2.x, r13.xyzw, t0.xyzw
    movc r2.x, r5.w, l(1.267000), r2.x
    mul r2.x, r6.y, r2.x
    mul r5.w, r1.x, r1.x
    div r2.x, r2.x, r5.w
    bfi r0.w, l(1), l(0), r0.w, r6.z
    uge r5.w, r0.w, l(2)
    movc r0.xyz, r5.wwww, r5.xyzx, r0.xyzx
    mad r4.xw, r4.xxxw, l(1.000000, 0.000000, 0.000000, -1.000000), l(-1.000000, 0.000000, 0.000000, 1.000000)
    mov r5.w, l(0)
    loop
      ige r6.x, r5.w, l(3)
      breakc_nz r6.x
      mul r6.xy, r1.xxxx, icb[r5.w + 4].xyxx
      div r6.xy, r6.xyxx, cb1[r0.w + 4].zwzz
      add r6.xy, r4.xwxx, r6.xyxx
      add r6.zw, cb1[14].zzzz, icb[r5.w + 4].zzzw
      mov o0.xy, r6.xyxx
      mov o0.zw, l(0,0,0,1.000000)
      mov o1.x, r0.w
      mov o2.xy, r6.zwzz
      mov o2.z, r2.x
      mov o3.xyz, r0.xyzx
      emit_stream m0
      iadd r5.w, r5.w, l(1)
    endloop
    cut_stream m0
  endif
  ge r0.x, r2.w, l(1.000000)
  if_nz r0.x
    utof r0.xy, r1.wyww
    add r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
    div r0.xy, r0.xyxx, r3.xyxx
    add r0.xy, r0.xyxx, r0.xyxx
    mul r0.z, r2.w, l(0.500000)
    lt r0.w, r2.w, l(64.000000)
    ftoi r6.x, r2.w
    mov r6.yzw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r1.x, r6.xyzw, t0.xyzw
    movc r0.w, r0.w, l(1.267000), r1.x
    mul r0.w, r9.y, r0.w
    mul r1.x, r0.z, r0.z
    div r0.w, r0.w, r1.x
    bfi r1.x, l(1), l(0), r2.z, r9.z
    uge r1.y, r1.x, l(2)
    movc r2.xzw, r1.yyyy, r5.xxyz, r8.xxyz
    mad r0.xy, r0.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
    mov r1.y, l(0)
    loop
      ige r1.w, r1.y, l(3)
      breakc_nz r1.w
      mul r4.xw, r0.zzzz, icb[r1.y + 4].xxxy
      div r4.xw, r4.xxxw, cb1[r1.x + 4].zzzw
      add r4.xw, r0.xxxy, r4.xxxw
      add r6.xy, cb1[14].zzzz, icb[r1.y + 4].zwzz
      mov o0.xy, r4.xwxx
      mov o0.zw, l(0,0,0,1.000000)
      mov o1.x, r1.x
      mov o2.xy, r6.xyxx
      mov o2.z, r0.w
      mov o3.xyz, r2.xzwx
      emit_stream m0
      iadd r1.y, r1.y, l(1)
    endloop
    cut_stream m0
  endif
  ge r0.x, r3.z, l(1.000000)
  if_nz r0.x
    utof r0.xy, r7.xyxx
    add r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
    div r0.xy, r0.xyxx, r3.xyxx
    add r0.xy, r0.xyxx, r0.xyxx
    mul r0.z, r3.z, l(0.500000)
    lt r0.w, r3.z, l(64.000000)
    ftoi r6.x, r3.z
    mov r6.yzw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r1.x, r6.xyzw, t0.xyzw
    movc r0.w, r0.w, l(1.267000), r1.x
    mul r0.w, r11.y, r0.w
    mul r1.x, r0.z, r0.z
    div r0.w, r0.w, r1.x
    bfi r1.x, l(1), l(0), r1.z, r11.z
    uge r1.y, r1.x, l(2)
    movc r1.yzw, r1.yyyy, r5.xxyz, r10.xxyz
    mad r0.xy, r0.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
    mov r2.x, l(0)
    loop
      ige r2.z, r2.x, l(3)
      breakc_nz r2.z
      mul r2.zw, r0.zzzz, icb[r2.x + 4].xxxy
      div r2.zw, r2.zzzw, cb1[r1.x + 4].zzzw
      add r2.zw, r0.xxxy, r2.zzzw
      add r4.xw, cb1[14].zzzz, icb[r2.x + 4].zzzw
      mov o0.xy, r2.zwzz
      mov o0.zw, l(0,0,0,1.000000)
      mov o1.x, r1.x
      mov o2.xy, r4.xwxx
      mov o2.z, r0.w
      mov o3.xyz, r1.yzwy
      emit_stream m0
      iadd r2.x, r2.x, l(1)
    endloop
    cut_stream m0
  endif
  ge r0.x, r3.w, l(1.000000)
  if_nz r0.x
    utof r0.xy, r7.wyww
    add r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
    div r0.xy, r0.xyxx, r3.xyxx
    add r0.xy, r0.xyxx, r0.xyxx
    mul r0.z, r3.w, l(0.500000)
    lt r0.w, r3.w, l(64.000000)
    ftoi r1.x, r3.w
    mov r1.yzw, l(0,0,0,0)
    ld_indexable(texture2d)(float,float,float,float) r1.x, r1.xyzw, t0.xyzw
    movc r0.w, r0.w, l(1.267000), r1.x
    mul r0.w, r4.y, r0.w
    mul r1.x, r0.z, r0.z
    div r0.w, r0.w, r1.x
    bfi r1.x, l(1), l(0), r2.y, r4.z
    uge r1.y, r1.x, l(2)
    movc r1.yzw, r1.yyyy, r5.xxyz, r12.xxyz
    mad r0.xy, r0.xyxx, l(1.000000, -1.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
    mov r2.x, l(0)
    loop
      ige r2.y, r2.x, l(3)
      breakc_nz r2.y
      mul r2.yz, r0.zzzz, icb[r2.x + 4].xxyx
      div r2.yz, r2.yyzy, cb1[r1.x + 4].zzwz
      add r2.yz, r0.xxyx, r2.yyzy
      add r3.xy, cb1[14].zzzz, icb[r2.x + 4].zwzz
      mov o0.xy, r2.yzyy
      mov o0.zw, l(0,0,0,1.000000)
      mov o1.x, r1.x
      mov o2.xy, r3.xyxx
      mov o2.z, r0.w
      mov o3.xyz, r1.yzwy
      emit_stream m0
      iadd r2.x, r2.x, l(1)
    endloop
    cut_stream m0
  endif
endif
ret
// Approximately 292 instruction slots used
QuadCoreMax
Posts: 3
Joined: Thu Jul 30, 2015 8:44 am

Re: Project Cars 2

Post by QuadCoreMax »

Interesting guys, TY for all infos, too bad really !
zimex25
Posts: 31
Joined: Wed Dec 09, 2015 11:59 am

Re: Project Cars 2

Post by zimex25 »

Any news?
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Project Cars 2

Post by aluigi »

Quick note about quickbms 0.8.2a, the nfsshift.bms script doesn't work with this version (openssl rc4 bug). the bug will be fixed soon so don't panic and if you are in rush use quickbms 0.8.1 :)
aylmao
Posts: 1
Joined: Mon Jun 18, 2018 7:28 am

Re: Project Cars 2

Post by aylmao »

Code: Select all

//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//
// Buffer Definitions:
//
// cbuffer COMMON_BUFFER1
// {
//
//   row_major float4x4 worldViewProj;  // Offset:    0 Size:    64
//   float4 encryptionKey;              // Offset:   64 Size:    16
//   row_major float4x4 world;          // Offset:   80 Size:    64 [unused]
//   row_major float4x4 worldView;      // Offset:  144 Size:    64 [unused]
//   row_major float4x4 worldI;         // Offset:  208 Size:    64 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// COMMON_BUFFER1                    cbuffer      NA          NA   13        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE    uint   xyz
// TEXCOORD                 0   xy          1     NONE   float   xy 
// SV_VertexID              0   x           2   VERTID    uint   x   
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy 
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb13[5], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_input_sgv v2.x, vertex_id
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_temps 2
and r0.x, v2.x, l(31)
iadd r0.x, -r0.x, l(32)
xor r0.y, v2.x, cb13[4].x
xor r0.y, r0.y, l(0x6ed5dead)
ushr r0.x, r0.y, r0.x
ishl r0.y, r0.y, v2.x
or r0.x, r0.x, r0.y
xor r0.x, r0.x, v0.x
mul r1.xyzw, v0.yyyy, cb13[1].xyzw
mad r0.xyzw, r0.xxxx, cb13[0].xyzw, r1.xyzw
mad r0.xyzw, v0.zzzz, cb13[2].xyzw, r0.xyzw
add r0.xyzw, r0.xyzw, cb13[3].xyzw
mul r0.z, r0.w, r0.z
mov o0.xyw, r0.xyxw
max o0.z, r0.z, l(0.000000)
mov o1.xy, v1.xyxx
ret
// Approximately 17 instruction slots used
zimex25
Posts: 31
Joined: Wed Dec 09, 2015 11:59 am

Re: Project Cars 2

Post by zimex25 »

Any news about importer from PC2?
zimex25
Posts: 31
Joined: Wed Dec 09, 2015 11:59 am

Re: Project Cars 2

Post by zimex25 »

Converting cars from Project Cars 2 is dead? Any chance for scripts?
h3x3r
Posts: 165
Joined: Wed Jun 01, 2016 5:53 pm

Re: Project Cars 2

Post by h3x3r »

Andrakann wrote:
aluigi wrote:Regarding MEB, I made a quick analysis just yesterday and the X vertexes (4 bytes each 12) is encrypted.

Tried to capture 2016 Lambo Huracan with Ninja Ripper and have no luck, all ripped meshes looks like this one:
Image


Yep there is definitely something wrong with X axis. Mesh is stretched.
This is what i get from rip file. UV's seems to be ok.
Image
zimex25
Posts: 31
Joined: Wed Dec 09, 2015 11:59 am

Re: Project Cars 2

Post by zimex25 »

h3x3r wrote:
Andrakann wrote:
aluigi wrote:Regarding MEB, I made a quick analysis just yesterday and the X vertexes (4 bytes each 12) is encrypted.

Tried to capture 2016 Lambo Huracan with Ninja Ripper and have no luck, all ripped meshes looks like this one:
Image


Yep there is definitely something wrong with X axis. Mesh is stretched.
This is what i get from rip file. UV's seems to be ok.
Image

What's your settings in Ninja Ripper? Did you try import in Noesis?