Important information: this site is currently scheduled to go offline indefinitely by end of the year.
L.A. Noire
Re: L.A. Noire
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?
-
- ultra-n00b
- Posts: 9
- Joined: Sun May 22, 2011 6:41 am
- 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
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).
.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++
- 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
Something like that. You can use your favorite LZX decompressor (e.g. xcompress.lib)twisted wrote:When you say replace the zlib decompressor with a LZX one should I just replace the zlib.h with LZX.h?
I'm using piece of code, ripped from the cabextract sources.
Sorry for broken English, my native language is C++
-
- advanced
- Posts: 42
- Joined: Thu Sep 09, 2010 12:36 pm
- Been thanked: 1 time
Re: L.A. Noire
You guys are making a good progress!
Keep going
waiting for repacker
now what about texture format (*.ps3tex)?
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).
Re: L.A. Noire
Here is the unpacking procedure of my tool:
I also coded a function to extract all the english texts from the root.atb file.
I attached the .txt that it creates.
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 attached the .txt that it creates.
You do not have the required permissions to view the files attached to this post.
-
- Moderator
- Posts: 954
- Joined: Sun Mar 27, 2011 8:42 pm
- Has thanked: 10 times
- Been thanked: 161 times
Re: L.A. Noire
Great Work,caws wrote:Here is the unpacking procedure of my tool:
I also coded a function to extract all the english texts from the root.atb file.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 attached the .txt that it creates.
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/
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0
Downloads from DropBox : https://dl.dropboxusercontent.com/u/
-
- Moderator
- Posts: 954
- Joined: Sun Mar 27, 2011 8:42 pm
- Has thanked: 10 times
- Been thanked: 161 times
Re: L.A. Noire
Can you please post complete unpacker with all libs together ? thxlistener wrote:Something like that. You can use your favorite LZX decompressor (e.g. xcompress.lib)twisted wrote:When you say replace the zlib decompressor with a LZX one should I just replace the zlib.h with LZX.h?
I'm using piece of code, ripped from the cabextract sources.
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/
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0
Downloads from DropBox : https://dl.dropboxusercontent.com/u/
-
- Moderator
- Posts: 954
- Joined: Sun Mar 27, 2011 8:42 pm
- Has thanked: 10 times
- Been thanked: 161 times
Re: L.A. Noire
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/
Goto : viewtopic.php?uid=34229&f=29&t=6797&start=0
Downloads from DropBox : https://dl.dropboxusercontent.com/u/
-
- advanced
- Posts: 42
- Joined: Thu Sep 09, 2010 12:36 pm
- Been thanked: 1 time
Re: L.A. Noire
it's not all the textcaws wrote:Here is the unpacking procedure of my tool:
I also coded a function to extract all the english texts from the root.atb file.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 attached the .txt that it creates.
it can't be 170kb, it's much larger