Post: Custom FF Tutorial (NO TOOLS NEEDED)
12-14-2012, 05:30 PM #1
T_m_b07
I defeated!
(adsbygoogle = window.adsbygoogle || []).push({}); Custom FF Modern warfare 2 Tutorial

This tutorial will hopefully help you guys in understanding the structure and be able to creating a custom ff by hand and without the need of any ff compiler. It has been a while in which I have done this so if you notice any mistakes feel free to comment and let me know.

Zone Header

First step you will need the ff header
     [COLOR="#FF0000"]00 00 00 00[/COLOR] 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 00 00[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


The header is VERY important. The first four bytes is the zone size minus the header, (Highlighted in red) this will need to be adjusted everytime you make a change inside your zone you can calculate this header size by selecting the 3rd byte after the “patch_mp” string that ends the zone.

Offset 0x18 is the size of the zone including the header (I may be wrong with that if so please correct me) this is calculated by taking the zone header size I just mentioned and subtracting 0x24 bytes from it, for example if your header size was 00 00 12 34 then you would subtract 24 bytes from that value which would give you , 00 00 12 10. With that said, you should now understand everything you would need to change regarding the header.

Asset Table

     [COLOR="#FF0000"]00 00 00 01[/COLOR] FF FF FF FF 00 00 00 00 00 00 00 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF 


The asset table is also extremely important as it tells the game what contents are inside the zone it is reading, it has a counter which lets the game know how many assets to read from the table, (Highlighted in red).

I have attached the different asset byte values below for you to download (BIG THANKS To aerosoul94 and CraigChrist for the different asset types! and MASSIVE thank you to TheFallen for working so damn hard at whatever he does keep at it broskie :ySmile


As of now, strings and rawfiles are all we understand how to add.  Each asset is 16 bytes long, and everytime you want to add either a new rawfile or string you will need to also add an asset to the table like so, if we were adding a string then the table will now look like this

     [COLOR="#FF0000"]00 00 00 03[/COLOR] FF FF FF FF 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 00 1A FF FF FF FF 00 00 00 1A FF FF FF FF[/COLOR] 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF 


Highlighted in blue are 2 new string assets added to the table for the game to look for and read. Important thing to remember, your asset table must ALWAYS end with a rawfile else you will result in a black screen! You can add up to 1024 rawfiles before you reach the max amount (lol yes I tried and was interesting to find there actually is a limit) :p Never tested strings though.
Make sure to adjust the table counter as you add or remove assets from the zone. (A quick way to calculate the amount of assets is to highlight all of them (minus the counter) and divide the highlighted length by 8 in a calculator).

Right now we have the top half of the zone we are almost complete. I will demonstrate on adding both a rawfile and a string seeing as we have added these into the table.

Now to add a string that we wish to edit the text for, first we need to decide which string we want to add by selecting one out of the list provided bellow in the download link, I have decided to add the “PATCH_PARTY_INVITE_ACCEPT” which is the party invitation. So with string assets you need to start it with a pointer which is FF FF FF FF in hex form then followed by the text you wish the string to display (English form) , then a null byte to separate the English and string ( 00 ) then the string you are adding, another null byte ( 00 ) and finally another pointer FF FF FF FF. So in total we should have something that looks like this in byte form….

     FF FF FF FF 4A 6F 69 6E 20 70 61 72 74 79 00 50 41 54 43 48 5F 50 41 52 54 59 5F 49 4E 56 49 54 45 5F 41 43 43 45 50 54 00 FF FF FF FF


And in text form…

     ÿÿÿÿJoin party.PATCH_PARTY_INVITE_ACCEPT.ÿÿÿÿ


You can repeat this with any of the strings you want to add.

Rawfiles

These are simple to understand and easy to add into your zone, first four bytes of the rawfile is the compressed size which is the size of the data inside the rawfile after it has been compressed, then you have the next 4 bytes showing its uncompressed size then a pointer and then the compressed rawfile data. For an example il use the “afghan.gsc” it will look like this…

Byte format

     [COLOR="#FF0000"]00 00 01 54[/COLOR] [COLOR="#0000FF"]00 00 02 8D[/COLOR][COLOR="#00FF00"] FF FF FF FF [/COLOR]6D 61 70 73 2F 6D 70 2F 6D 70 5F 61 66 67 68 61 6E 2E 67 73 63 00 78 DA 7D D1 5F 6B C2 30 10 00 F0 67 0B FD 0E A1 BE 28 B8 11 3B DD 40 D9 D3 18 63 0F C2 1E 7C 9B 23 9C ED D9 06 93 34 24 D1 55 C6 BE FB CE D5 3F 95 C9 20 04 2E F7 CB DD 85 74 A5 C9 D4 26 47 A6 C1 FA 85 B6 0B B1 09 52 C9 B0 9B C6 51 F7 98 CB 2A AD 2B 23 7C E6 A4 0D 7E 71 16 71 A4 41 9A 5E 3F 8E BE E2 A8 73 2C A1 AD 80 55 51 82 11 D6 61 06 59 89 93 49 E3 A6 47 95 39 84 80 E0 42 0B 53 F4 C7 5D 54 5B D5 D7 F2 02 6B AB 2A 2F B7 28 96 E0 1C 2A 7F 55 A9 0A F2 56 A2 9D A2 E7 59 F0 74 CD 63 D8 D8 99 34 72 06 B6 C7 92 C3 B9 20 28 4E 53 24 EC B7 2E 2D D2 F9 16 DC 19 6A A8 1D 98 02 93 01 4B EE 38 E7 0D 25 09 7A 29 D1 84 37 05 3B D2 87 68 5F 32 47 8F 2E 9C 5C 01 1A DF 09 84 00 D9 1A 9D 4F D8 07 7B A4 58 29 89 3E 99 9E 45 8E 2B 34 79 4B D4 B2 C9 5F 8C E5 84 92 45 19 5E 9C CC 9F 0D 2C 15 CE 3F 11 D6 9E C6 1B 36 8F B8 4A 5F 4D 40 E3 E9 7F F7 EE 36 FD 47 3E 55 26 38 F0 81 20 27 D6 69 FA 87 92 FE 36 67 6B A9 D4 DC C9 A2 40 BA D5 4B F9 FD 80 A5 A3 E1 88 F6 F1 03 BB 61 C3 94 F7 07 6C 3C A6 1E 9C FF F6 F8 8E A3 1F 29 3C CD 8A[COLOR="#00FF00"] FF FF FF FF[/COLOR]


Text format

     ...T....ÿÿÿÿmaps/mp/mp_afghan.gsc.xÚ}Ñ_kÂ0..ðg.ý.¡¾(¸.;Ý@ÙÓ.c.Â.|›#œíÙ.“4$ÑUƾûÎÕ?•É ..÷ËÝ…t¥ÉÔ&G¦Áú…¶.±.Rɰ›ÆQ÷˜Ë*.+#|æ¤.~q.q¤Aš^?޾â¨s,¡.€UQ‚.Öa.Y‰“Iã¦G•9„€àB.SôÇ]T[Õ×ò.k«*/•(–à.*.U©.òV¢.¢çYðtÍcØØ™4r.¶Ç’ù (NS$ì•.-Òù.Ü.j¨.˜.“.Kî8ç.%.z)Ñ„7.;Ò‡h_2G..œ\..ß.„.Ù..OØ.{¤X)‰>™žEŽ+4yKÔ²É_Œå„’E.^œÌŸ.,.Î?.ÖžÆ.6.¸J_M@ãé.÷î6ýG>U&8ð. 'Öiú‡’þ6gk©ÔÜÉ¢@ºÕKùý€¥£áˆöñ.»aÔ÷.l<¦.œÿöøŽ£.)<ÍŠÿÿÿÿ


I have highlighted the compressed size in red, the uncompressed size in blue, the pointers in green and the data in black.

To add bytes simply just paste in 00 00 00 00 as many times as you want to the end of the rawfile before the last pointer then highlight all the null bytes you added and take the size and simply add it to the compressed size in the header. The uncompressed size is not too important to adjust as it will load without actually changing that size value (although its always best to change it) The max size of a rawfile is 18,000 bytes any higher and the game will throw an error.

Right your almost done.

My zone file now looks like this all together…
     00 00 00 00 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF 00 00 00 03 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 1A FF FF FF FF 00 00 00 1A FF FF FF FF 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 4A 6F 69 6E 20 70 61 72 74 79 00 50 41 54 43 48 5F 50 41 52 54 59 5F 49 4E 56 49 54 45 5F 41 43 43 45 50 54 00 FF FF FF FF 00 00 01 54 00 00 02 8D FF FF FF FF 6D 61 70 73 2F 6D 70 2F 6D 70 5F 61 66 67 68 61 6E 2E 67 73 63 00 78 DA 7D D1 5F 6B C2 30 10 00 F0 67 0B FD 0E A1 BE 28 B8 11 3B DD 40 D9 D3 18 63 0F C2 1E 7C 9B 23 9C ED D9 06 93 34 24 D1 55 C6 BE FB CE D5 3F 95 C9 20 04 2E F7 CB DD 85 74 A5 C9 D4 26 47 A6 C1 FA 85 B6 0B B1 09 52 C9 B0 9B C6 51 F7 98 CB 2A AD 2B 23 7C E6 A4 0D 7E 71 16 71 A4 41 9A 5E 3F 8E BE E2 A8 73 2C A1 AD 80 55 51 82 11 D6 61 06 59 89 93 49 E3 A6 47 95 39 84 80 E0 42 0B 53 F4 C7 5D 54 5B D5 D7 F2 02 6B AB 2A 2F B7 28 96 E0 1C 2A 7F 55 A9 0A F2 56 A2 9D A2 E7 59 F0 74 CD 63 D8 D8 99 34 72 06 B6 C7 92 C3 B9 20 28 4E 53 24 EC B7 2E 2D D2 F9 16 DC 19 6A A8 1D 98 02 93 01 4B EE 38 E7 0D 25 09 7A 29 D1 84 37 05 3B D2 87 68 5F 32 47 8F 2E 9C 5C 01 1A DF 09 84 00 D9 1A 9D 4F D8 07 7B A4 58 29 89 3E 99 9E 45 8E 2B 34 79 4B D4 B2 C9 5F 8C E5 84 92 45 19 5E 9C CC 9F 0D 2C 15 CE 3F 11 D6 9E C6 1B 36 8F B8 4A 5F 4D 40 E3 E9 7F F7 EE 36 FD 47 3E 55 26 38 F0 81 20 27 D6 69 FA 87 92 FE 36 67 6B A9 D4 DC C9 A2 40 BA D5 4B F9 FD 80 A5 A3 E1 88 F6 F1 03 BB 61 C3 94 F7 07 6C 3C A6 1E 9C FF F6 F8 8E A3 1F 29 3C CD 8A FF FF FF FF 00 00 00 00 00 00 00 00 FF FF FF FF 70 61 74 63 68 5F 6D 70 00 00 00 00


Make sure to have the patch_mp string at the very end of the zone! Now click 3 bytes after patch_mp and click control + e and change the top value to 0 and click ok. Take the length given at the bottom of HxD and replace that value with the second size header at the top of the zone.

     00 00 00 00 00 00 00 00 FF FF FF FF 70 61 74 63 68 5F 6D 70 00 00 00 00

Which will display “........ÿÿÿÿpatch_mp “….



This is my header after its changed…

     00 00 00 00 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#FF0000"]00 00 02 1A[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


Now I need to take that value I just changed and subtract 24 from it which gives me 00 00 01 F6 which I now place into the first 4 bytes of the zone header.

My header now looks like this…

    [COLOR="#FF0000"] 00 00 01 F6[/COLOR] 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 02 1A[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


Now to complete this custom ff all I have to do is full it out with null bytes until the zone total size ends with a value ending in 0000’s (for example 10,000) this is also known as “padding”.

You must login or register to view this content.


Download link for Asset types (Need to upload files) 0x23 is rawfile and 0x1A is string
You must login or register to view this content.


Hope this helps you guys out yes a lot of you know how to make a custom ff using tools but this was how it was done before life became easy its useful to understand and know.

Happy modding!

Regards,

T_m_b07
(adsbygoogle = window.adsbygoogle || []).push({});

The following 19 users say thank you to T_m_b07 for this useful post:

.NINK., {HaMm}Holdeman7, CoDyMoDz1000XD, Dr. Mayham, Fittro, iTrexk, JTFormula2, KCxFTW, Kitty=^.^=, Muad'Dib, OmGRhys-x, Cmd-X, Master Ro, TheUnexpected, Tony Stark, Vampytwistッ, xePixTvx
12-15-2012, 11:04 PM #20
T_m_b07
I defeated!
Originally posted by GAMER View Post
I remember when only 7 people knew


I remember when only 2 people knew about it :p lol n im always there if anyone needs to know something specific im happy to help out if i can lol

The following user thanked T_m_b07 for this useful post:

OmGRhys-x
12-15-2012, 11:29 PM #21
xInfuzeModz
Gym leader
thanks bro this would help
12-15-2012, 11:30 PM #22
xInfuzeModz
Gym leader
Originally posted by Master
Nice tutorial Man, Nobody looked at my, "All you need to know about GSC Scripting" Tutorial :cry:

But, I like this, it was well written, and taught me a fair amount, good job



bro could i have a link to your tutorial bro
12-16-2012, 12:17 AM #23
KCxFTW
Who’s Jim Erased?
Originally posted by b07 View Post
Custom FF Modern warfare 2 Tutorial

This tutorial will hopefully help you guys in understanding the structure and be able to creating a custom ff by hand and without the need of any ff compiler. It has been a while in which I have done this so if you notice any mistakes feel free to comment and let me know.

Zone Header

First step you will need the ff header
     [COLOR="#FF0000"]00 00 00 00[/COLOR] 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 00 00[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


The header is VERY important. The first four bytes is the zone size minus the header, (Highlighted in red) this will need to be adjusted everytime you make a change inside your zone you can calculate this header size by selecting the 3rd byte after the “patch_mp” string that ends the zone.

Offset 0x18 is the size of the zone including the header (I may be wrong with that if so please correct me) this is calculated by taking the zone header size I just mentioned and subtracting 0x24 bytes from it, for example if your header size was 00 00 12 34 then you would subtract 24 bytes from that value which would give you , 00 00 12 10. With that said, you should now understand everything you would need to change regarding the header.

Asset Table

     [COLOR="#FF0000"]00 00 00 01[/COLOR] FF FF FF FF 00 00 00 00 00 00 00 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF 


The asset table is also extremely important as it tells the game what contents are inside the zone it is reading, it has a counter which lets the game know how many assets to read from the table, (Highlighted in red).

I have attached the different asset byte values below for you to download (BIG THANKS To aerosoul94 and CraigChrist for the different asset types! and MASSIVE thank you to TheFallen for working so damn hard at whatever he does keep at it broskie :ySmile


As of now, strings and rawfiles are all we understand how to add.  Each asset is 16 bytes long, and everytime you want to add either a new rawfile or string you will need to also add an asset to the table like so, if we were adding a string then the table will now look like this

     [COLOR="#FF0000"]00 00 00 03[/COLOR] FF FF FF FF 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 00 1A FF FF FF FF 00 00 00 1A FF FF FF FF[/COLOR] 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF 


Highlighted in blue are 2 new string assets added to the table for the game to look for and read. Important thing to remember, your asset table must ALWAYS end with a rawfile else you will result in a black screen! You can add up to 1024 rawfiles before you reach the max amount (lol yes I tried and was interesting to find there actually is a limit) :p Never tested strings though.
Make sure to adjust the table counter as you add or remove assets from the zone. (A quick way to calculate the amount of assets is to highlight all of them (minus the counter) and divide the highlighted length by 8 in a calculator).

Right now we have the top half of the zone we are almost complete. I will demonstrate on adding both a rawfile and a string seeing as we have added these into the table.

Now to add a string that we wish to edit the text for, first we need to decide which string we want to add by selecting one out of the list provided bellow in the download link, I have decided to add the “PATCH_PARTY_INVITE_ACCEPT” which is the party invitation. So with string assets you need to start it with a pointer which is FF FF FF FF in hex form then followed by the text you wish the string to display (English form) , then a null byte to separate the English and string ( 00 ) then the string you are adding, another null byte ( 00 ) and finally another pointer FF FF FF FF. So in total we should have something that looks like this in byte form….

     FF FF FF FF 4A 6F 69 6E 20 70 61 72 74 79 00 50 41 54 43 48 5F 50 41 52 54 59 5F 49 4E 56 49 54 45 5F 41 43 43 45 50 54 00 FF FF FF FF


And in text form…

     ÿÿÿÿJoin party.PATCH_PARTY_INVITE_ACCEPT.ÿÿÿÿ


You can repeat this with any of the strings you want to add.

Rawfiles

These are simple to understand and easy to add into your zone, first four bytes of the rawfile is the compressed size which is the size of the data inside the rawfile after it has been compressed, then you have the next 4 bytes showing its uncompressed size then a pointer and then the compressed rawfile data. For an example il use the “afghan.gsc” it will look like this…

Byte format

     [COLOR="#FF0000"]00 00 01 54[/COLOR] [COLOR="#0000FF"]00 00 02 8D[/COLOR][COLOR="#00FF00"] FF FF FF FF [/COLOR]6D 61 70 73 2F 6D 70 2F 6D 70 5F 61 66 67 68 61 6E 2E 67 73 63 00 78 DA 7D D1 5F 6B C2 30 10 00 F0 67 0B FD 0E A1 BE 28 B8 11 3B DD 40 D9 D3 18 63 0F C2 1E 7C 9B 23 9C ED D9 06 93 34 24 D1 55 C6 BE FB CE D5 3F 95 C9 20 04 2E F7 CB DD 85 74 A5 C9 D4 26 47 A6 C1 FA 85 B6 0B B1 09 52 C9 B0 9B C6 51 F7 98 CB 2A AD 2B 23 7C E6 A4 0D 7E 71 16 71 A4 41 9A 5E 3F 8E BE E2 A8 73 2C A1 AD 80 55 51 82 11 D6 61 06 59 89 93 49 E3 A6 47 95 39 84 80 E0 42 0B 53 F4 C7 5D 54 5B D5 D7 F2 02 6B AB 2A 2F B7 28 96 E0 1C 2A 7F 55 A9 0A F2 56 A2 9D A2 E7 59 F0 74 CD 63 D8 D8 99 34 72 06 B6 C7 92 C3 B9 20 28 4E 53 24 EC B7 2E 2D D2 F9 16 DC 19 6A A8 1D 98 02 93 01 4B EE 38 E7 0D 25 09 7A 29 D1 84 37 05 3B D2 87 68 5F 32 47 8F 2E 9C 5C 01 1A DF 09 84 00 D9 1A 9D 4F D8 07 7B A4 58 29 89 3E 99 9E 45 8E 2B 34 79 4B D4 B2 C9 5F 8C E5 84 92 45 19 5E 9C CC 9F 0D 2C 15 CE 3F 11 D6 9E C6 1B 36 8F B8 4A 5F 4D 40 E3 E9 7F F7 EE 36 FD 47 3E 55 26 38 F0 81 20 27 D6 69 FA 87 92 FE 36 67 6B A9 D4 DC C9 A2 40 BA D5 4B F9 FD 80 A5 A3 E1 88 F6 F1 03 BB 61 C3 94 F7 07 6C 3C A6 1E 9C FF F6 F8 8E A3 1F 29 3C CD 8A[COLOR="#00FF00"] FF FF FF FF[/COLOR]


Text format

     ...T....ÿÿÿÿmaps/mp/mp_afghan.gsc.xÚ}Ñ_kÂ0..ðg.ý.¡¾(¸.;Ý@ÙÓ.c.Â.|›#œíÙ.“4$ÑUƾûÎÕ?•É ..÷ËÝ…t¥ÉÔ&G¦Áú…¶.±.Rɰ›ÆQ÷˜Ë*.+#|æ¤.~q.q¤Aš^?޾â¨s,¡.€UQ‚.Öa.Y‰“Iã¦G•9„€àB.SôÇ]T[Õ×ò.k«*/•(–à.*.U©.òV¢.¢çYðtÍcØØ™4r.¶Ç’ù (NS$ì•.-Òù.Ü.j¨.˜.“.Kî8ç.%.z)Ñ„7.;Ò‡h_2G..œ\..ß.„.Ù..OØ.{¤X)‰>™žEŽ+4yKÔ²É_Œå„’E.^œÌŸ.,.Î?.ÖžÆ.6.¸J_M@ãé.÷î6ýG>U&8ð. 'Öiú‡’þ6gk©ÔÜÉ¢@ºÕKùý€¥£áˆöñ.»aÔ÷.l<¦.œÿöøŽ£.)<ÍŠÿÿÿÿ


I have highlighted the compressed size in red, the uncompressed size in blue, the pointers in green and the data in black.

To add bytes simply just paste in 00 00 00 00 as many times as you want to the end of the rawfile before the last pointer then highlight all the null bytes you added and take the size and simply add it to the compressed size in the header. The uncompressed size is not too important to adjust as it will load without actually changing that size value (although its always best to change it) The max size of a rawfile is 18,000 bytes any higher and the game will throw an error.

Right your almost done.

My zone file now looks like this all together…
     00 00 00 00 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF 00 00 00 03 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 1A FF FF FF FF 00 00 00 1A FF FF FF FF 00 00 00 23 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 4A 6F 69 6E 20 70 61 72 74 79 00 50 41 54 43 48 5F 50 41 52 54 59 5F 49 4E 56 49 54 45 5F 41 43 43 45 50 54 00 FF FF FF FF 00 00 01 54 00 00 02 8D FF FF FF FF 6D 61 70 73 2F 6D 70 2F 6D 70 5F 61 66 67 68 61 6E 2E 67 73 63 00 78 DA 7D D1 5F 6B C2 30 10 00 F0 67 0B FD 0E A1 BE 28 B8 11 3B DD 40 D9 D3 18 63 0F C2 1E 7C 9B 23 9C ED D9 06 93 34 24 D1 55 C6 BE FB CE D5 3F 95 C9 20 04 2E F7 CB DD 85 74 A5 C9 D4 26 47 A6 C1 FA 85 B6 0B B1 09 52 C9 B0 9B C6 51 F7 98 CB 2A AD 2B 23 7C E6 A4 0D 7E 71 16 71 A4 41 9A 5E 3F 8E BE E2 A8 73 2C A1 AD 80 55 51 82 11 D6 61 06 59 89 93 49 E3 A6 47 95 39 84 80 E0 42 0B 53 F4 C7 5D 54 5B D5 D7 F2 02 6B AB 2A 2F B7 28 96 E0 1C 2A 7F 55 A9 0A F2 56 A2 9D A2 E7 59 F0 74 CD 63 D8 D8 99 34 72 06 B6 C7 92 C3 B9 20 28 4E 53 24 EC B7 2E 2D D2 F9 16 DC 19 6A A8 1D 98 02 93 01 4B EE 38 E7 0D 25 09 7A 29 D1 84 37 05 3B D2 87 68 5F 32 47 8F 2E 9C 5C 01 1A DF 09 84 00 D9 1A 9D 4F D8 07 7B A4 58 29 89 3E 99 9E 45 8E 2B 34 79 4B D4 B2 C9 5F 8C E5 84 92 45 19 5E 9C CC 9F 0D 2C 15 CE 3F 11 D6 9E C6 1B 36 8F B8 4A 5F 4D 40 E3 E9 7F F7 EE 36 FD 47 3E 55 26 38 F0 81 20 27 D6 69 FA 87 92 FE 36 67 6B A9 D4 DC C9 A2 40 BA D5 4B F9 FD 80 A5 A3 E1 88 F6 F1 03 BB 61 C3 94 F7 07 6C 3C A6 1E 9C FF F6 F8 8E A3 1F 29 3C CD 8A FF FF FF FF 00 00 00 00 00 00 00 00 FF FF FF FF 70 61 74 63 68 5F 6D 70 00 00 00 00


Make sure to have the patch_mp string at the very end of the zone! Now click 3 bytes after patch_mp and click control + e and change the top value to 0 and click ok. Take the length given at the bottom of HxD and replace that value with the second size header at the top of the zone.

     00 00 00 00 00 00 00 00 FF FF FF FF 70 61 74 63 68 5F 6D 70 00 00 00 00

Which will display “........ÿÿÿÿpatch_mp “….



This is my header after its changed…

     00 00 00 00 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#FF0000"]00 00 02 1A[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


Now I need to take that value I just changed and subtract 24 from it which gives me 00 00 01 F6 which I now place into the first 4 bytes of the zone header.

My header now looks like this…

    [COLOR="#FF0000"] 00 00 01 F6[/COLOR] 00 00 00 00 00 00 03 B4 00 00 00 00 00 00 00 00 00 00 00 00 [COLOR="#0000FF"]00 00 02 1A[/COLOR] 00 00 00 00 00 00 10 00 00 00 00 01 FF FF FF FF


Now to complete this custom ff all I have to do is full it out with null bytes until the zone total size ends with a value ending in 0000’s (for example 10,000) this is also known as “padding”.

You must login or register to view this content.


Download link for Asset types (Need to upload files) 0x23 is rawfile and 0x1A is string
You must login or register to view this content.


Hope this helps you guys out yes a lot of you know how to make a custom ff using tools but this was how it was done before life became easy its useful to understand and know.

Happy modding!

Regards,

T_m_b07


Have you learned how to add the menu files (modded font, menu placement, etc.) to a custom .ff? I've been trying to learn how to do that for a while.
12-17-2012, 12:52 AM #24
T_m_b07
I defeated!
Originally posted by KCxFTW View Post
menu files


All honesty not long after custom ffs were working i went back to studying so never had the time to properly play around with everything i tried briefly but with no result as far as i know noone has managed to get anything other than rawfiles, csv tables and strings added as we dont fully understand how the second size pointer is calculated (offset 0x18 ) :/
12-17-2012, 11:43 PM #25
This was easy and soo simple.
Thanks, dude.

The following user thanked Oklahomo for this useful post:

T_m_b07
12-18-2012, 04:46 AM #26
J
Who’s Jim Erased?
Originally posted by b07 View Post
Im currently back studying my friend im here and there but always around Smile Enjoy

Heard you finally went to college how's that going?
12-19-2012, 12:36 AM #27
T_m_b07
I defeated!
Originally posted by Jarod. View Post
finally went to college


Yeah its great other than having hardly any free time what so ever lol good to hear from you

Originally posted by TwiNyoU View Post
Thanks, dude.


Welcome im glad it helped. It was long overdue someone write out a tutorial in which people can learn and not have to rely on tools, save much more time and avoids errors along the way
12-19-2012, 11:11 PM #28
J
Who’s Jim Erased?
Originally posted by b07 View Post
Yeah its great other than having hardly any free time what so ever lol good to hear from you



Welcome im glad it helped. It was long overdue someone write out a tutorial in which people can learn and not have to rely on tools, save much more time and avoids errors along the way


yeah man, miss having you around.

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo