Quantcast

Jump to content

» «
Photo

[REL] GTA IV Ivaud Editor Made by Vilavek

143 replies to this topic
Ranjith
  • Ranjith

    I am a principal IRL

  • Members
  • Joined: 16 Apr 2009

#61

Posted 06 January 2010 - 03:14 PM

awesome tool ! but buggy man ! but awesome

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#62

Posted 07 January 2010 - 11:34 PM

I just released version 1.1.5 of GTA-IVaud, a sort of sub-version of the upcoming version 1.2. This version does NOT support the opening or replacing of compressed speech audio, or compressed multichannel audio such as music and radio stations, version 1.2 will do that. What this release does do is fix several issues which resulted in program instability, and it adds support for the showing of filenames. icon14.gif

* List now displays filenames
* List now displays audio length
* Removed hex offset and length from being automatically displayed
* Fixed issue which caused arithmetic and overflow errors to be displayed while opening certain ivaud files

It can be downloaded here -> http://vilavek.gamek...aivaud1.1.5.zip

Zer0w5
  • Zer0w5

    There are no stupid questions, just stupid people.

  • Members
  • Joined: 07 Dec 2008
  • None

#63

Posted 07 January 2010 - 11:37 PM Edited by zerofreeze, 08 January 2010 - 12:02 AM.

QUOTE (Vilavek @ Jan 7 2010, 23:34)
I just released version 1.1.5 of GTA-IVaud, a sort of sub-version of the upcoming version 1.2. This version does NOT support the opening or replacing of compressed speech audio, or compressed multichannel audio such as music and radio stations, version 1.2 will do that. What this release does do is fix several issues which resulted in program instability, and it adds support for the showing of filenames.† icon14.gif

* List now displays filenames
* List now displays audio length
* Removed hex offset and length from being automatically displayed
* Fixed issue which caused arithmetic and overflow errors to be displayed while opening certain ivaud files

It can be downloaded here -> http://vilavek.gamek...aivaud1.1.5.zip

Wow thanx for putting me in the credits really appreciate it, And way to go biggrin.gif

EDIT: Nice just tested but i think i may have found a bug im not sure though monocle.gif

When i start the new version of Ivaud-Editor and open my already modded weapons.ivaud file, When it opened i clicked on 2 different weapon sounds the uzi and pumpshotgun they both give an error mscorlib

But i dont have this error when i click on the wav in the older version of ivaud editor

CODE
System.ArgumentException: De bronmatrix is niet lang genoeg. Controleer srcIndex en de lengte ervan, en de ondergrenzen van de matrix.
† bij System.Array.Copy(Array sourceArray, Int32 sourceIndex, Array destinationArray, Int32 destinationIndex, Int32 length, Boolean reliable)
† bij GTA_IVaud.ivaudMono.Play(Int32 Index, Boolean bLoop)
† bij GTA_IVaud.frmMain.PlaySelected()
† bij GTA_IVaud.frmMain.lv_SelectedIndexChanged(Object sender, EventArgs e)
† bij System.Windows.Forms.ListView.OnSelectedIndexChanged(EventArgs e)
† bij System.Windows.Forms.ListView.WmReflectNotify(Message& m)
† bij System.Windows.Forms.ListView.WndProc(Message& m)
† bij System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
† bij System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
† bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladen assembly's **************
mscorlib
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3082 (QFE.050727-3000)
† †CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
GTA-IVaud Editor
† †Assembly-versie: 1.1.5.0
† †Win32-versie: 1.1.5.0
† †CodeBase: file:///D:/Downloads/gtaivaud1.1.5/GTA-IVaud_1.1.5.exe
----------------------------------------
Microsoft.VisualBasic
† †Assembly-versie: 8.0.0.0
† †Win32-versie: 8.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Windows.Forms.resources
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
† †CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_nl_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.resources
† †Assembly-versie: 2.0.0.0
† †Win32-versie: 2.0.50727.3082 (QFE.050727-3000)
† †CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------

Screenshot:

user posted image

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#64

Posted 08 January 2010 - 12:21 AM

Unfortunately, the way version 1.1 modified data within non-compressed ivaud files was sort of, well, incorrect in its approach. I recommend starting with a fresh copy of weapons.ivaud before you continue to mod audio. If you still have the problem then let me know and we can continue from there! =)

Zer0w5
  • Zer0w5

    There are no stupid questions, just stupid people.

  • Members
  • Joined: 07 Dec 2008
  • None

#65

Posted 08 January 2010 - 12:32 AM

QUOTE (Vilavek @ Jan 8 2010, 00:21)
Unfortunately, the way version 1.1 modified data within non-compressed ivaud files was sort of, well, incorrect in its approach. I recommend starting with a fresh copy of weapons.ivaud before you continue to mod audio. If you still have the problem then let me know and we can continue from there! =)

Yeah seems your right i tried an unmodded file and no problems with that biggrin.gif

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#66

Posted 08 January 2010 - 12:44 AM

Thanks for reporting it! I added this to the known issues list which can be viewed by checking for updates within the program.

oinkoink
  • oinkoink

    Weekend Modder

  • Members
  • Joined: 11 Dec 2008

#67

Posted 08 January 2010 - 01:21 AM

Just want to say...Wow! icon14.gif
Great progress!
Keep it up, Dude.

SLAYERMAGGOT
  • SLAYERMAGGOT

    Stay Wild

  • Members
  • Joined: 19 Mar 2008

#68

Posted 08 January 2010 - 02:14 AM

Agreed, pretty good work on v1.1.5 icon14.gif

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#69

Posted 08 January 2010 - 02:56 AM

Thanks for your support guys! I'm going to need all I can get if i'm going to get 1.2 released.. dozingoff.gif I am having every issue imaginable getting my ima/dvi adpcm decoder and encoder functioning, and thats after viewing several different sources of documentation and over 20 source code examples in numerous different languages.. I've worked at it for at least 6 hours a day for the past 4 days and have made zero progress on this part of the project.. suicidal.gif

I need detailed documentation on the ImaAdpcm or DviAdpcm format (same difference), which for whatever reason, I cannot find! All I can find is light documentation, and vague references to the format here and there on the web. For something both created in 1992 and made public domain, you'd figure there would be more than enough information out there about it... dontgetit.gif But hey, i'm stubborn, i'll get the project to 1.2 eventually! icon14.gif

Zer0w5
  • Zer0w5

    There are no stupid questions, just stupid people.

  • Members
  • Joined: 07 Dec 2008
  • None

#70

Posted 08 January 2010 - 08:47 AM

QUOTE (Vilavek @ Jan 8 2010, 02:56)
Thanks for your support guys! I'm going to need all I can get if i'm going to get 1.2 released..  dozingoff.gif   I am having every issue imaginable getting my ima/dvi adpcm decoder and encoder functioning, and thats after viewing several different sources of documentation and over 20 source code examples in numerous different languages..  I've worked at it for at least 6 hours a day for the past 4 days and have made zero progress on this part of the project.. suicidal.gif

I need detailed documentation on the ImaAdpcm or DviAdpcm format (same difference), which for whatever reason, I cannot find! All I can find is light documentation, and vague references to the format here and there on the web. For something both created in 1992 and made public domain, you'd figure there would be more than enough information out there about it...  dontgetit.gif But hey, i'm stubborn, i'll get the project to 1.2 eventually!  icon14.gif

This may be something blush.gif

http://en.wikipedia....code_modulation

http://wiki.multimed...title=IMA_ADPCM

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#71

Posted 08 January 2010 - 06:24 PM

QUOTE (zerofreeze @ Jan 8 2010, 08:47)
QUOTE (Vilavek @ Jan 8 2010, 02:56)
Thanks for your support guys! I'm going to need all I can get if i'm going to get 1.2 released..†  dozingoff.gif † I am having every issue imaginable getting my ima/dvi adpcm decoder and encoder functioning, and thats after viewing several different sources of documentation and over 20 source code examples in numerous different languages..† I've worked at it for at least 6 hours a day for the past 4 days and have made zero progress on this part of the project.. suicidal.gif

I need detailed documentation on the ImaAdpcm or DviAdpcm format (same difference), which for whatever reason, I cannot find! All I can find is light documentation, and vague references to the format here and there on the web. For something both created in 1992 and made public domain, you'd figure there would be more than enough information out there about it...† dontgetit.gif But hey, i'm stubborn, i'll get the project to 1.2 eventually!† icon14.gif

This may be something blush.gif

http://en.wikipedia....code_modulation

http://wiki.multimed...title=IMA_ADPCM

Thank you for the links sir. The second link I have seen many times! I think my problem is in how I am processing the data blocks. I can't find a diagram or detailed description of how to disassemble the adpcm blocks themselves. I've looked at source code examples and followed suit, but no dice, still doesn't work. Bah.. confused.gif

Zer0w5
  • Zer0w5

    There are no stupid questions, just stupid people.

  • Members
  • Joined: 07 Dec 2008
  • None

#72

Posted 08 January 2010 - 09:47 PM Edited by zerofreeze, 08 January 2010 - 09:51 PM.

QUOTE (Vilavek @ Jan 8 2010, 18:24)
QUOTE (zerofreeze @ Jan 8 2010, 08:47)
QUOTE (Vilavek @ Jan 8 2010, 02:56)
Thanks for your support guys! I'm going to need all I can get if i'm going to get 1.2 released..†† dozingoff.gif † I am having every issue imaginable getting my ima/dvi adpcm decoder and encoder functioning, and thats after viewing several different sources of documentation and over 20 source code examples in numerous different languages..† I've worked at it for at least 6 hours a day for the past 4 days and have made zero progress on this part of the project.. suicidal.gif

I need detailed documentation on the ImaAdpcm or DviAdpcm format (same difference), which for whatever reason, I cannot find! All I can find is light documentation, and vague references to the format here and there on the web. For something both created in 1992 and made public domain, you'd figure there would be more than enough information out there about it...† dontgetit.gif But hey, i'm stubborn, i'll get the project to 1.2 eventually!† icon14.gif

This may be something blush.gif

http://en.wikipedia....code_modulation

http://wiki.multimed...title=IMA_ADPCM

Thank you for the links sir. The second link I have seen many times! I think my problem is in how I am processing the data blocks. I can't find a diagram or detailed description of how to disassemble the adpcm blocks themselves. I've looked at source code examples and followed suit, but no dice, still doesn't work. Bah.. confused.gif

I really dont know what im doing notify.gif But im just searching for solutions to your problems

http://wiki.multimed...Microsoft_ADPCM << This may be something not sure though rolleyes.gif

http://www.mp3-tech..../docs/adpcm.pdf

http://www.dialogic....lgorithm_an.pdf

Codetables to find and algorithm

gr8man
  • gr8man

    GTA IV Wizard

  • Members
  • Joined: 18 Aug 2008

#73

Posted 13 January 2010 - 11:43 AM

Vilavek,do you have any progress with this tool?

DerPlaya78
  • DerPlaya78

    Player Hater

  • Members
  • Joined: 04 Jan 2009

#74

Posted 13 January 2010 - 10:06 PM Edited by DerPlaya78, 13 January 2010 - 10:08 PM.

look at the sparkiv code... i wrote the audio code (inspired by some c code from koders.com)

the header contains adpcm state tables:

CODE

struct adpcmState {
† †public short valprev;
† †public byte index;
};


the data is organized in blocks of 2048 bytes, there is a starting state for each block (needed for seeking because it's a delta compression)

you have to find out where the data blocks are and decode them in the right order, each byte holds 2 16 bit samples:

CODE

// inititialize state from state table
// something like this: adpcmState state = states[index]

int bufferoffset = 0;
while(bufferoffset < 2048)
{
† †short sample1 = DviAdpcmDecoder.DecodeAdpcm((byte)(block[bufferoffset] & 0xf), ref state));
† †// write sample1...
† †short sample2 = DviAdpcmDecoder.DecodeAdpcm((byte)((block[bufferoffset] >> 4) & 0xf), ref state));
† †// write sample2
† †bufferoffset++;
}


CODE

† †public class DviAdpcmDecoder {
† † † †#region intel/dvi adpcm decoder
† † † †public struct adpcmState {
† † † † † †public short valprev;
† † † † † †public byte index;
† † † †};

† † † †private static int[] indexTable = {
† † † † † †-1, -1, -1, -1, 2, 4, 6, 8,
† † † † † †-1, -1, -1, -1, 2, 4, 6, 8,
† † † †};

† † † †private static int[] stepsizeTable = {
† † † † † † † †7, † † 8, † † 9, † †10, † †11, † †12, † †13, † †14, † †16, † †17,
† † † † † † † 19, † †21, † †23, † †25, † †28, † †31, † †34, † †37, † †41, † †45,
† † † † † † † 50, † †55, † †60, † †66, † †73, † †80, † †88, † †97, † 107, † 118,
† † † † † † †130, † 143, † 157, † 173, † 190, † 209, † 230, † 253, † 279, † 307,
† † † † † † †337, † 371, † 408, † 449, † 494, † 544, † 598, † 658, † 724, † 796,
† † † † † † †876, † 963, †1060, †1166, †1282, †1411, †1552, †1707, †1878, †2066,
† † † † † † 2272, †2499, †2749, †3024, †3327, †3660, †4026, †4428, †4871, †5358,
† † † † † † 5894, †6484, †7132, †7845, †8630, †9493, 10442, 11487, 12635, 13899,
† † † † † †15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
† † † †};

† † † †public static short DecodeAdpcm(byte input, ref adpcmState state) {
† † † † † †int index = state.index;
† † † † † †int step = stepsizeTable[index];
† † † † † †int valpred = state.valprev;
† † † † † †int delta = input;

† † † † † †index += indexTable[delta];
† † † † † †if (index < 0) index = 0;
† † † † † †if (index > 88) index = 88;

† † † † † †bool sign = ((delta & 8) == 8);
† † † † † †delta = delta & 7;

† † † † † †int vpdiff = step >> 3;
† † † † † †if ((delta & 4) == 4) vpdiff += step;
† † † † † †if ((delta & 2) == 2) vpdiff += step >> 1;
† † † † † †if ((delta & 1) == 1) vpdiff += step >> 2;

† † † † † †if (sign) valpred -= vpdiff;
† † † † † †else valpred += vpdiff;

† † † † † †if (valpred > 32767) valpred = 32767;
† † † † † †else if (valpred < -32768) valpred = -32768;

† † † † † †state.valprev = (short)valpred;
† † † † † †state.index = (byte)index;
† † † † † †return (short)valpred;
† † † †}
† † † †#endregion
† †
† †}


i think i first tried passing state without the ref but it didn't work (should work because struct is a ValueType...)

i repeat: look at the sparkiv code for a complete example, including name hashes, multichannel audio etc...

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#75

Posted 14 January 2010 - 10:20 AM

Thank you very much for the code example. I've looked at SparkIV's code several times, including several other sources and for whatever reason it simply does not work, then again I've only played with it for a little while. I had to drop the project for a week or so on account of work and a job interview, but I am going to continue working on it now. I'll post when I have something new! icon14.gif

jclewis
  • jclewis

    Mark Chump

  • Members
  • Joined: 17 Jun 2009

#76

Posted 15 January 2010 - 02:55 AM

OMG DOES THIS MEAN I CAN NOW REPLACE GUNOSUNDS!!!!!!!!!!!!!!!!!!!!!!!!!!!

jclewis
  • jclewis

    Mark Chump

  • Members
  • Joined: 17 Jun 2009

#77

Posted 15 January 2010 - 05:52 AM

How do i replace gunsounds with this tool? Please help I have recorded real gunsoudns and im ready to put them in the game and i WILL release the mod. I just need help with this tool and do i need spark iv first? and what do i do with that please help

jclewis
  • jclewis

    Mark Chump

  • Members
  • Joined: 17 Jun 2009

#78

Posted 15 January 2010 - 07:16 AM

Never mind.. I figured it all out.. THanks to all responsible for this!! I will be release the real recorded gunsoudns mod shortly.. Stay tuned

Zer0w5
  • Zer0w5

    There are no stupid questions, just stupid people.

  • Members
  • Joined: 07 Dec 2008
  • None

#79

Posted 15 January 2010 - 08:34 AM

No need to post 3 times in a row just edit your post

NTAuthority
  • NTAuthority

    member_title

  • The Yardies
  • Joined: 09 Sep 2008
  • European-Union
  • Most Knowledgeable [Technology] 2013
    Best Map 2013 "ViceCityStories PC Edition"

#80

Posted 16 January 2010 - 08:38 AM Edited by NTAuthority, 16 January 2010 - 08:48 AM.

@Vilavek: you seem to be in violation of the GPL (section 6, though I'm not sure with the change in definition of 'derivative' in the GPLv3, though I think the 'translate to a different language' is included in 'requires copyright permission') now. Take a look at this screenshot from Reflector (and for fun, compare it with the SparkIV source).

user posted image

... now come on with that source code! tounge.gif

On a different note, could you document your findings about sounds.dat15? My current 'brute force' method doesn't exactly work. tounge.gif

DerPlaya78
  • DerPlaya78

    Player Hater

  • Members
  • Joined: 04 Jan 2009

#81

Posted 16 January 2010 - 08:35 PM

...about the sounds.dat15:

You won't find all the filenames in this file. I found most of the stuff that's included in sparkiv's list by brute force, strings from the exe file, almost all game files, and most of the ingame dialog in xbox360 sound files (they contain the original animation names which happen to be the sounds names too)... there're a few missing in sparkiv's list (about 150 from 20000+)...

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#82

Posted 16 January 2010 - 11:11 PM

As far as I am aware NTAuthority, I am not in violation of any GPL agreement. The hasher I created was hand-coded by myself, as the original hasher is not compatible with the VB.NET language due to inherent differences between C# and VB.NET (mainly the lack of unchecked variables). As you may have noticed I have been extremely hesitant to even look at SparkIVís source code and incorporate it into my own work for this very reason. This is also the reason that I am coding the Ima/Dvi Adpcm decoder and encoder myself as well.

The screenshot you submitted shows me storing hashed values in a dictionary, is this the part you were referring to when you said I violated the GPL? If so, would you like me to redesign my application to not use dictionaries for this purpose? If so, how would you suggest I easily store 10,000+ hash values and associated filenames? With the same mentality, one would say that by using the only IMA Adpcm Decoding algorithm possible for decoding IMA Adpcm, I would be in violation of some license somewhere.

Version 1.1.5 was only released to give the community something to use until version 1.2 was released, something that supported filenames. I started GTA-IVaud while I had time off from work and school over the holiday season. Now that the holiday season is over and I am beginning the final semester of my college program, I am also starting a new fulltime job with a local higher-education focused technology firm. I fear I wonít have time to finish my work if I am forced to focus on minutia.

DerPlaya78 is correct. Through my own research into sounds.dat15 I came to the same conclusion he came to. Not all the filenames relating to audio are stored in sounds.dat15. Per your request however, I will document all my findings of sounds.dat15 and post an article on the subject, as soon as I get the time to do it, as my life does not consist solely of reverse engineering Grand Theft Auto IVís design.

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#83

Posted 16 January 2010 - 11:14 PM

While we're on the subject of credit where credit is due, oinkoink was the one responsible for my launch into sounds.dat15. If I give credit to anyone for assisting me with that portion of GTA-IVaud, it would be him. Which I believe I stated as much in the readme?

oinkoink
  • oinkoink

    Weekend Modder

  • Members
  • Joined: 11 Dec 2008

#84

Posted 16 January 2010 - 11:32 PM

Whoops...I was actually just reading...
...but it was an honor for me to help you out with my lil research on this issue. wink.gif

btw...maybe the other sound-config-files (EFFECTS.DAT11, GAME.DAT16 etc.) include the rest of the soundnames or am I totally wrong?

Greetz!

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#85

Posted 16 January 2010 - 11:39 PM

You could very well be right oinkoink! I am focusing on the Adpcm decoder and encoder portion of the application at the moment, after finishing it I was going to go back to the filenames issue and see if I could resolve the missing filenames issue! smile.gif I'm thinking that it could very well be possible that not all audio streams are associated with filenames which are stored in files shipped with GTA4 (I hope not!) sad.gif

Thanks again for your help by the way! You saved me so much time! lol.. icon14.gif

DerPlaya78
  • DerPlaya78

    Player Hater

  • Members
  • Joined: 04 Jan 2009

#86

Posted 17 January 2010 - 11:37 AM

@vilavek: that's right (not all filenames are recoverable from the game files). As i said, the ingame dialog filenames are only in the xbox360 version, there're not used by the game anyway, that's what the hashes are for...
I spend a month collecting all the strings from all the files (I mean ALL game files) and checking for valid hashes.

Vilavek
  • Vilavek

    Player Hater

  • Members
  • Joined: 28 Dec 2009

#87

Posted 17 January 2010 - 04:32 PM

Nice, you sound like you've done more looking into the filename/hash business than I have for sure. I figured the ability to show filenames for the vast majority of files is all I needed for GTA-IVaud. I don't mind if my program can display them all or not, as long as it can display enough of them, which it finally does. People know that weapons.ivaud contains weapons related audio, so I figure if there are a few filenames missing in an ivaud, the rest can be done by ear. sigh.gif

NTAuthority
  • NTAuthority

    member_title

  • The Yardies
  • Joined: 09 Sep 2008
  • European-Union
  • Most Knowledgeable [Technology] 2013
    Best Map 2013 "ViceCityStories PC Edition"

#88

Posted 19 January 2010 - 07:57 AM

QUOTE (Vilavek @ Jan 17 2010, 00:11)
As far as I am aware NTAuthority, I am not in violation of any GPL agreement. The hasher I created was hand-coded by myself, as the original hasher is not compatible with the VB.NET language due to inherent differences between C# and VB.NET (mainly the lack of unchecked variables). As you may have noticed I have been extremely hesitant to even look at SparkIVís source code and incorporate it into my own work for this very reason. This is also the reason that I am coding the Ima/Dvi Adpcm decoder and encoder myself as well.

I know those points, but read the next point smile.gif

QUOTE

The screenshot you submitted shows me storing hashed values in a dictionary, is this the part you were referring to when you said I violated the GPL? If so, would you like me to redesign my application to not use dictionaries for this purpose? If so, how would you suggest I easily store 10,000+ hash values and associated filenames?


Well, your variable names are exactly equal, and the compiled IL code would also be mostly the same. Even more so, that entire class seems almost equally named, though you used VB however. The rest of the code doesn't look that bad, however you also have (though unused) the 'DviAdpcmDecoder' class. Not that bad for a intermediate version, but I'd personally not release it when things look mostly similar -- even though I commonly rewrite code using equal variable names, and even released verbatim GPL code with the reason 'if anyone complains, they can get the source code'. tounge.gif

QUOTE

Version 1.1.5 was only released to give the community something to use until version 1.2 was released, something that supported filenames.


... oh well, I have been planning to rewrite some old C++ code I had lying around as well, never got to it, and in the meantime I had been hacking around on the old buggy codebase... and filenames can indeed be a great help.

QUOTE

DerPlaya78 is correct. Through my own research into sounds.dat15 I came to the same conclusion he came to. Not all the filenames relating to audio are stored in sounds.dat15.


Extracting just the strings from the file (to be precise, ep2_sounds.dat15) and comparing to ep2_sfx.rpf (hey, what?) did net me all filenames for the (non-radio related) files, minus most of the contents - some are stored in the sounds.dat15 files, but without exact table information I didn't find a way to extract the data.

QUOTE

Per your request however, I will document all my findings of sounds.dat15 and post an article on the subject, as soon as I get the time to do it, as my life does not consist solely of reverse engineering Grand Theft Auto IVís design.


Whose life does, actually? tounge.gif

QUOTE (DerPlaya78)

@vilavek: that's right (not all filenames are recoverable from the game files). As i said, the ingame dialog filenames are only in the xbox360 version, there're not used by the game anyway, that's what the hashes are for...
I spend a month collecting all the strings from all the files (I mean ALL game files) and checking for valid hashes.


... why would you use hashes in compiled code when you'd still need to use original filenames? SA had this issue in a similar way, there was a list of script names and their identifier, but those did absolutely not correlate to the audio files. IV's hash system is a lot more helpful in that way than the older engines were.

We're even lucky IV contains non-hashed names for all scripting functions, I can't imagine who would have been interested in naming all functions again for the new hash system?

_CP_
  • _CP_

    Group: Vice City Stories team

  • Members
  • Joined: 27 Dec 2007
  • Poland
  • Best Map 2013 "ViceCityStories PC Edition"

#89

Posted 19 January 2010 - 03:17 PM

How big progress is with 1.2 version of your tool?

Dvt-MedShot
  • Dvt-MedShot

    Mack Pimp

  • Members
  • Joined: 02 May 2007

#90

Posted 19 January 2010 - 04:11 PM

QUOTE (NTAuthority @ Jan 19 2010, 08:57)
QUOTE (Vilavek @ Jan 17 2010, 00:11)
As far as I am aware NTAuthority, I am not in violation of any GPL agreement. The hasher I created was hand-coded by myself, as the original hasher is not compatible with the VB.NET language due to inherent differences between C# and VB.NET (mainly the lack of unchecked variables). As you may have noticed I have been extremely hesitant to even look at SparkIVís source code and incorporate it into my own work for this very reason. This is also the reason that I am coding the Ima/Dvi Adpcm decoder and encoder myself as well.

I know those points, but read the next point smile.gif

QUOTE

DerPlaya78 is correct. Through my own research into sounds.dat15 I came to the same conclusion he came to. Not all the filenames relating to audio are stored in sounds.dat15.


Extracting just the strings from the file (to be precise, ep2_sounds.dat15) and comparing to ep2_sfx.rpf (hey, what?) did net me all filenames for the (non-radio related) files, minus most of the contents - some are stored in the sounds.dat15 files, but without exact table information I didn't find a way to extract the data.

Lol, those are the TBOGT audio configs and archives. tounge.gif




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users