L.A. Noire

The Original Forum. Game archives, full of resources. How to open them? Get help here.
may3stro
n00b
Posts: 11
Joined: Tue May 17, 2011 1:32 pm
Location: Poland

Re: L.A. Noire

Post by may3stro » Sun May 22, 2011 7:24 pm

file as above, I see only the text to the menu and possibly video clips in the game. Subtitles of the game must be in another file. But how to extract them to check?

caws
veteran
Posts: 120
Joined: Sat Mar 01, 2008 7:57 pm
Been thanked: 4 times

Re: L.A. Noire

Post by caws » Sun May 22, 2011 7:25 pm

The contents of this post was deleted because of possible forum rules violation.

gamerzworld
ultra-n00b
Posts: 9
Joined: Sun May 22, 2011 6:41 am

Re: L.A. Noire

Post by gamerzworld » Sun May 22, 2011 7:46 pm

The contents of this post was deleted because of possible forum rules violation.

User avatar
listener
n00b
Posts: 13
Joined: Sun May 22, 2011 12:30 am
Location: Russia, Default City
Has thanked: 2 times
Been thanked: 1 time

Re: L.A. Noire

Post by listener » Sun May 22, 2011 8:47 pm

http://dl.dropbox.com/u/1237855/unpack_big.zip
.big.ps3 unpacker. Source code included.
Replace zlib with LZX decompressor to unpack .big.360 (my own LZX library is extremely ugly, so I didn't include it)

Filenames are stripped from archives. Instead filenames used crc32 of name. names can be reconstructed, if someone find name/resource list.

Most of the resources are serialized objects. I have found serializer initialization in the code, but I need to write .idc to extract all registered names, types and offset (~2600 objects and ~10500 fields registered). Maybe, something useful can be found in the Havok 5.5 User Guide, ch. 3 (Serialization).
Sorry for broken English, my native language is C++

User avatar
RangerRus
beginner
Posts: 21
Joined: Mon Apr 18, 2011 6:17 pm
Been thanked: 9 times

Re: L.A. Noire

Post by RangerRus » Sun May 22, 2011 9:39 pm

caws wrote:I will post it later.
thanks :roll:
listener
thanks for work too

twisted
veteran
Posts: 100
Joined: Mon Apr 23, 2007 11:25 pm
Has thanked: 2 times
Been thanked: 7 times

Re: L.A. Noire

Post by twisted » Mon May 23, 2011 6:05 pm

When you say replace the zlib decompressor with a LZX one should I just replace the zlib.h with LZX.h?

User avatar
listener
n00b
Posts: 13
Joined: Sun May 22, 2011 12:30 am
Location: Russia, Default City
Has thanked: 2 times
Been thanked: 1 time

Re: L.A. Noire

Post by listener » Mon May 23, 2011 6:38 pm

twisted wrote:When you say replace the zlib decompressor with a LZX one should I just replace the zlib.h with LZX.h?
Something like that. You can use your favorite LZX decompressor (e.g. xcompress.lib)
I'm using piece of code, ripped from the cabextract sources.
Sorry for broken English, my native language is C++

GamerSuper
advanced
Posts: 42
Joined: Thu Sep 09, 2010 12:36 pm
Been thanked: 1 time

Re: L.A. Noire

Post by GamerSuper » Mon May 23, 2011 8:46 pm

You guys are making a good progress!
Keep going :)
waiting for repacker

now what about texture format (*.ps3tex)?
listener wrote:http://dl.dropbox.com/u/1237855/unpack_big.zip
.big.ps3 unpacker. Source code included.
Replace zlib with LZX decompressor to unpack .big.360 (my own LZX library is extremely ugly, so I didn't include it)

Filenames are stripped from archives. Instead filenames used crc32 of name. names can be reconstructed, if someone find name/resource list.

Most of the resources are serialized objects. I have found serializer initialization in the code, but I need to write .idc to extract all registered names, types and offset (~2600 objects and ~10500 fields registered). Maybe, something useful can be found in the Havok 5.5 User Guide, ch. 3 (Serialization).
Какие люди!

caws
veteran
Posts: 120
Joined: Sat Mar 01, 2008 7:57 pm
Been thanked: 4 times

Re: L.A. Noire

Post by caws » Tue May 24, 2011 2:30 am

Here is the unpacking procedure of my tool:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
var
wad,ext:tfilestream;
filesize,filepos,nfiles,filenamepos,filenamesize:integer;
pos,i,i2,tx,other:integer;
buf:pchar;
fname,path:string;
begin
opendialog1.Execute();  other:=0;
wad:=tfilestream.Create(opendialog1.filename,fmopenread);
pos:=4; filesize:=0; filepos:=0; nfiles:=0; filenamesize:=0; tx:=0;
path:=getfolder(opendialog1.FileName);

wad.Position:=pos;
wad.Read(nfiles,4);

writeln(filelist,inttohex(nfiles,10));


inc(pos,8);

Memo1.Lines.Add('Unpacking...\Extraindo...');
memo1.Lines.Add('');
for i:=1 to nfiles do
  begin
    application.ProcessMessages;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);
  end;

filenamepos:=filepos+filesize;
pos:=$0c;
forcedirectories(path);
progressbar1.Max:=nfiles;
for i:=1 to nfiles do
  begin

  wad.Position:=pos-4;
  wad.Read(other,4);
  writeln(filelist,inttohex(other,10));

  application.ProcessMessages;
  progressbar1.Position:=i;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);

  //extrair nomes dos arquivos...
  wad.Position:=filenamepos;
  wad.Read(filenamesize,2);
  inc(filenamepos,2);

  fname:='';

  for i2:=1 to filenamesize do
    begin
    wad.Position:=filenamepos;
    wad.Read(tx,1);
    write(filelist,char(tx));
    if tx=$2f then tx:=$5c;
    fname:=fname+char(tx);
    inc(filenamepos);
    end;

 //nome extraido. extraindo arquivo.
 memo1.Lines.Add('Unpacking\Extraindo...'+extractfilename(fname));

  wad.Position:=filepos;
  buf:=allocmem(filesize);
  wad.Read(buf^,filesize);
// showmessage(path+extractfilepath(fname));
 forcedirectories(path+extractfilepath(fname));
 ext:=tfilestream.create(path+fname,fmcreate);
 writeln(filelist,path+fname);
 ext.Write(buf^,filesize);
 ext.Free;
 freemem(buf);
 end;
progressbar1.Position:=0;
memo1.Lines.Add('');
memo1.Lines.Add('All Files Unpacked\Todos os Arquivos Extraidos');
wad.free;
end;
I also coded a function to extract all the english texts from the root.atb file.

I attached the .txt that it creates.
You do not have the required permissions to view the files attached to this post.

michalss
Moderator
Posts: 949
Joined: Sun Mar 27, 2011 8:42 pm
Has thanked: 10 times
Been thanked: 141 times

Re: L.A. Noire

Post by michalss » Tue May 24, 2011 5:31 am

caws wrote:Here is the unpacking procedure of my tool:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
var
wad,ext:tfilestream;
filesize,filepos,nfiles,filenamepos,filenamesize:integer;
pos,i,i2,tx,other:integer;
buf:pchar;
fname,path:string;
begin
opendialog1.Execute();  other:=0;
wad:=tfilestream.Create(opendialog1.filename,fmopenread);
pos:=4; filesize:=0; filepos:=0; nfiles:=0; filenamesize:=0; tx:=0;
path:=getfolder(opendialog1.FileName);

wad.Position:=pos;
wad.Read(nfiles,4);

writeln(filelist,inttohex(nfiles,10));


inc(pos,8);

Memo1.Lines.Add('Unpacking...\Extraindo...');
memo1.Lines.Add('');
for i:=1 to nfiles do
  begin
    application.ProcessMessages;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);
  end;

filenamepos:=filepos+filesize;
pos:=$0c;
forcedirectories(path);
progressbar1.Max:=nfiles;
for i:=1 to nfiles do
  begin

  wad.Position:=pos-4;
  wad.Read(other,4);
  writeln(filelist,inttohex(other,10));

  application.ProcessMessages;
  progressbar1.Position:=i;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);

  //extrair nomes dos arquivos...
  wad.Position:=filenamepos;
  wad.Read(filenamesize,2);
  inc(filenamepos,2);

  fname:='';

  for i2:=1 to filenamesize do
    begin
    wad.Position:=filenamepos;
    wad.Read(tx,1);
    write(filelist,char(tx));
    if tx=$2f then tx:=$5c;
    fname:=fname+char(tx);
    inc(filenamepos);
    end;

 //nome extraido. extraindo arquivo.
 memo1.Lines.Add('Unpacking\Extraindo...'+extractfilename(fname));

  wad.Position:=filepos;
  buf:=allocmem(filesize);
  wad.Read(buf^,filesize);
// showmessage(path+extractfilepath(fname));
 forcedirectories(path+extractfilepath(fname));
 ext:=tfilestream.create(path+fname,fmcreate);
 writeln(filelist,path+fname);
 ext.Write(buf^,filesize);
 ext.Free;
 freemem(buf);
 end;
progressbar1.Position:=0;
memo1.Lines.Add('');
memo1.Lines.Add('All Files Unpacked\Todos os Arquivos Extraidos');
wad.free;
end;
I also coded a function to extract all the english texts from the root.atb file.

I attached the .txt that it creates.
Great Work,
Are you think this are all texts ? Can you give me a bit explanation of the format please ?
I should only translate the texts and this tags "[]" should remain right ? I guess it is time in the video secvention ??

What lang did you use to make the unpacker ? And are you think you would be able to repack that file as well ?

thx
Last edited by michalss on Tue May 24, 2011 7:24 am, edited 3 times in total.
Quick BMS Editor GUI - simple easy to use
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0

Downloads from DropBox : https://dl.dropboxusercontent.com/u/

michalss
Moderator
Posts: 949
Joined: Sun Mar 27, 2011 8:42 pm
Has thanked: 10 times
Been thanked: 141 times

Re: L.A. Noire

Post by michalss » Tue May 24, 2011 5:37 am

listener wrote:
twisted wrote:When you say replace the zlib decompressor with a LZX one should I just replace the zlib.h with LZX.h?
Something like that. You can use your favorite LZX decompressor (e.g. xcompress.lib)
I'm using piece of code, ripped from the cabextract sources.
Can you please post complete unpacker with all libs together ? thx
Quick BMS Editor GUI - simple easy to use
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0

Downloads from DropBox : https://dl.dropboxusercontent.com/u/

may3stro
n00b
Posts: 11
Joined: Tue May 17, 2011 1:32 pm
Location: Poland

Re: L.A. Noire

Post by may3stro » Tue May 24, 2011 8:10 am

This file is from root.atb.360 text.txp?

michalss
Moderator
Posts: 949
Joined: Sun Mar 27, 2011 8:42 pm
Has thanked: 10 times
Been thanked: 141 times

Re: L.A. Noire

Post by michalss » Thu May 26, 2011 8:47 am

any news about repacker ?
Quick BMS Editor GUI - simple easy to use
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0

Downloads from DropBox : https://dl.dropboxusercontent.com/u/

GamerSuper
advanced
Posts: 42
Joined: Thu Sep 09, 2010 12:36 pm
Been thanked: 1 time

Re: L.A. Noire

Post by GamerSuper » Thu May 26, 2011 3:37 pm

caws wrote:Here is the unpacking procedure of my tool:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
var
wad,ext:tfilestream;
filesize,filepos,nfiles,filenamepos,filenamesize:integer;
pos,i,i2,tx,other:integer;
buf:pchar;
fname,path:string;
begin
opendialog1.Execute();  other:=0;
wad:=tfilestream.Create(opendialog1.filename,fmopenread);
pos:=4; filesize:=0; filepos:=0; nfiles:=0; filenamesize:=0; tx:=0;
path:=getfolder(opendialog1.FileName);

wad.Position:=pos;
wad.Read(nfiles,4);

writeln(filelist,inttohex(nfiles,10));


inc(pos,8);

Memo1.Lines.Add('Unpacking...\Extraindo...');
memo1.Lines.Add('');
for i:=1 to nfiles do
  begin
    application.ProcessMessages;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);
  end;

filenamepos:=filepos+filesize;
pos:=$0c;
forcedirectories(path);
progressbar1.Max:=nfiles;
for i:=1 to nfiles do
  begin

  wad.Position:=pos-4;
  wad.Read(other,4);
  writeln(filelist,inttohex(other,10));

  application.ProcessMessages;
  progressbar1.Position:=i;
  wad.Position:=pos;
  wad.Read(filepos,4);
  inc(pos,4);
  wad.Read(filesize,4);
  inc(pos,8);

  //extrair nomes dos arquivos...
  wad.Position:=filenamepos;
  wad.Read(filenamesize,2);
  inc(filenamepos,2);

  fname:='';

  for i2:=1 to filenamesize do
    begin
    wad.Position:=filenamepos;
    wad.Read(tx,1);
    write(filelist,char(tx));
    if tx=$2f then tx:=$5c;
    fname:=fname+char(tx);
    inc(filenamepos);
    end;

 //nome extraido. extraindo arquivo.
 memo1.Lines.Add('Unpacking\Extraindo...'+extractfilename(fname));

  wad.Position:=filepos;
  buf:=allocmem(filesize);
  wad.Read(buf^,filesize);
// showmessage(path+extractfilepath(fname));
 forcedirectories(path+extractfilepath(fname));
 ext:=tfilestream.create(path+fname,fmcreate);
 writeln(filelist,path+fname);
 ext.Write(buf^,filesize);
 ext.Free;
 freemem(buf);
 end;
progressbar1.Position:=0;
memo1.Lines.Add('');
memo1.Lines.Add('All Files Unpacked\Todos os Arquivos Extraidos');
wad.free;
end;
I also coded a function to extract all the english texts from the root.atb file.

I attached the .txt that it creates.
it's not all the text
it can't be 170kb, it's much larger

gt41
ultra-n00b
Posts: 2
Joined: Sun May 22, 2011 3:12 pm

Re: L.A. Noire

Post by gt41 » Fri May 27, 2011 2:43 pm

waiting repark ..

:keke:

Post Reply