Quantcast

Jump to content

» «
Photo

fastman92 limit adjuster

RW Released
2,104 replies to this topic
fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#1

Posted 24 August 2014 - 02:16 PM Edited by fastman92, 28 February 2016 - 03:13 PM.

*
POPULAR

fastman92 limit adjuster


GloomyFilthyAsianpiedstarling.gif

LazyDeterminedGiantschnauzer.gif

Like many other games, GTA has limits that may later need to be increased as the modding community grows.
This limit adjuster gives you that opportunity.

Furthermore, it hacks some limits that were once deemed impossible to be hacked because of their complexity, as the ID limits itself took over 5000 lines of code to hack.
An example of these limits would be the ID limits, handling.cfg limits & cargrp.dat limit.
Map limits are also hacked. This means bigger maps with more cities.

Supported games: GTA VC, GTA SA, GTA IV, GTA V.

Open-source work, can be studied and modified by other developers.

- - - - - - - - - - - - - - - - - -
 

Download

Follow http://fastman92.ml

- - - - - - - - - - - - - - - - - -
What can be done with this limit adjuster?
94f56c391955928.jpg906394391955948.jpg66f450391955966.jpg24ae71391955987.jpg11a5e8391956002.jpga5848d391956018.jpg
Author: dkluin
 

//////////////////////////////////////////////////////

See the old GTA SA ID limits: http://gtaforums.com...m/?p=1061221494


Log file:
 
Starting Limit Adjuster 0.5 by fastman92New ID limits:0 - 25599 (25600) - DFF models defined within IDE files25600 - 31099 (5500) - TXD archives.31100 - 31599 (500) - COL collision archives.31600 - 31899 (300) - IPL Binary IPL files.31900 - 31963 (64) - DAT files limited to nodes*.dat31964 - 32163 (200) - IFP animation archives.32164 - 32663 (500) - RRR car recordings, carrec*.rrr files32664 - 32762 (99) - SCM scripts32763 - 32764 (2) - Loaded list32765 - 32766 (2) - Requested list32767 - count of all file IDsAddresses:CStreaming__ms_modelInfoPtrs: 0x181B770CStreaming__ms_aInfoForModel: 0x3640020CAnimManager__ms_aAnimBlocks: 0xB5D4A0CVehicleRecording__StreamingArray: 0x97D880CTheScripts__StreamedScripts: 0xA47B60Modified limit IDE:cars section to: 500Game closed
The only ID limits that can't be adjusted:
DATLoaded listRequested list
Limits were patched with my new set of tools to hack limits flawlessly and find all relations and references that make a limit. Therefore you can trust 99% there's no single error when limit is patched.

Although there's one drawback - old ASI plugins and some CLEO scripts won't work as they still point to old arrays and use default number of indexes for file types.
Important ASI plugins will soon be patched to work properly with ID limit adjuster.

---------------------------------------------------------------------------------------

SOL Underground

fastman92 limit adjuster is used by projects such as SOL Underground, which adds new maps to SA, such as LC and VC. Many things can be done using this limit adjuster.
From adding totally new maps alongside SA, this wasn't possible without fastman92 limit adjuster.

SOL Underground adds additional maps in a totally new experience. It will have the converted levels of Manhunt and Manhunt 2, zone based gangs, III/LCS cars in LC, VCS/VC cars in VC, and
SA features in them aswell. Basketball fields, and much more is included in this mod. All of this was impossible without this limit adjuster.

Maps such as a Carcer City, the setting of Manhunt, and even Cottonmouth, the setting of Manhunt 2, and others are included.

940243451416584.jpg 71a308451416587.jpg 1c61e4451416591.jpg 414549451416595.jpg 4aceb7451416602.jpg 7879c4451416607.jpg 644e49451416623.jpg e2cac4451416629.jpg fd9470451416636.jpg a26536451416647.jpg 343e2f451416654.jpg 2af511451416666.jpg d2380c451416673.jpg 6e6b47451416677.jpg d60fca451416684.jpg de7f6a451416690.jpg 1545c2451416696.jpg ba3964451416702.jpg 25d6e2451416709.jpg 51df69451416714.jpg 1e814c451416720.jpg 9c9e7e451416727.jpg 394a4e451416739.jpg 4b30fb451416747.jpg fb8baa451416752.jpg ce8d43451416758.jpg 4f60f9451416769.jpg 928a60451416772.jpg

Underground topic link:
http://gtaforums.com...66-underground/

A version of this mod may be downloaded there too.
  • PlatinumSerb, Ash_735, Wesser and 53 others like this

Ss4gogeta0
  • Ss4gogeta0

    Spilled coffee on Laptop. no more mods

  • BUSTED!
  • Joined: 24 May 2011
  • United-States

#2

Posted 24 August 2014 - 10:38 PM

dont worry, Im telling a bunch of people to come this way right now who would be very interested in this


SweetCheese
  • SweetCheese

    Square Civilian

  • Members
  • Joined: 28 Sep 2013
  • Unknown

#3

Posted 25 August 2014 - 09:21 AM

so , you mean this ID limit adjuster not for public  :panic:  :cry: 


nWo51289
  • nWo51289

    Outcast

  • Feroci
  • Joined: 26 Apr 2008
  • None

#4

Posted 25 August 2014 - 01:18 PM

I'm interested in trying out your ID Limit Adjuster for Trilogy.

  • Ss4gogeta0, Savidge, Neddo and 1 other like this

fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#5

Posted 25 August 2014 - 05:43 PM

so , you mean this ID limit adjuster not for public  :panic:  :cry: 

It will become public, when complete.

I'm interested in trying out your ID Limit Adjuster for Trilogy.

PM sent.

NTAuthority
  • NTAuthority

    hell, no, tunnel, no

  • Feroci
  • Joined: 09 Sep 2008
  • European-Union
  • Best Conversion 2014 [ViIV for GTANY]
    Most Knowledgeable [Tech] 2013
    Best Map 2013 [ViceCityStories PC Edition]
    Contribution Award [Mods]

#6

Posted 25 August 2014 - 10:57 PM Edited by NTAuthority, 25 August 2014 - 10:58 PM.

Because of signed __int16, max ID may be as high as 32767

lolnoob

my code allows up to 32767 for modelinfo only, other streaming items can go above this limit

it does break modloader's img module in quite a funny way, however

Ezekiel
  • Ezekiel

    Break's Over Roach

  • Members
  • Joined: 11 Nov 2012
  • Sierra-Leone

#7

Posted 25 August 2014 - 11:05 PM

oauii

 

DAT new Numbers-------------BONER

 

smiley-signs107.gif


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#8

Posted 26 August 2014 - 07:16 AM Edited by fastman92, 26 August 2014 - 11:09 AM.

Because of signed __int16, max ID may be as high as 32767

lolnoob

my code allows up to 32767 for modelinfo only, other streaming items can go above this limit

it does break modloader's img module in quite a funny way, however

It's good to have other competitor.
I'll try to make ID unsigned too.
 

so , you mean this ID limit adjuster not for public  :panic:  :cry: 

PM sent.
  • Ss4gogeta0, SweetCheese and Concavax like this

cj2000
  • cj2000

    Playa

  • Members
  • Joined: 17 Jun 2008

#9

Posted 26 August 2014 - 02:13 PM

Because of signed __int16, max ID may be as high as 32767

Strange, why using signed __int16 for IDs? Is it than not posible to define negative IDs? In this case IDs will go from -32768 to 32767.


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#10

Posted 26 August 2014 - 02:50 PM Edited by fastman92, 26 August 2014 - 02:53 PM.

Because of signed __int16, max ID may be as high as 32767

Strange, why using signed __int16 for IDs? Is it than not posible to define negative IDs? In this case IDs will go from -32768 to 32767.

Because Rockstar Games compiled the game with signed __int16 ID;
And no, we need positive IDs.

cj2000
  • cj2000

    Playa

  • Members
  • Joined: 17 Jun 2008

#11

Posted 26 August 2014 - 03:14 PM

 

 

Because of signed __int16, max ID may be as high as 32767

Strange, why using signed __int16 for IDs? Is it than not posible to define negative IDs? In this case IDs will go from -32768 to 32767.

 

And no, we need positive IDs.

 

Sory, I know it might sound really stupied, but why only positive IDs? What is the problem with negative ones? I have no real idea about datastructures R* used, but it all should be about pointer arithmetics and in this case positive and negative adresses can being used as well.


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#12

Posted 26 August 2014 - 03:35 PM Edited by fastman92, 26 August 2014 - 03:37 PM.

Because of signed __int16, max ID may be as high as 32767

Strange, why using signed __int16 for IDs? Is it than not posible to define negative IDs? In this case IDs will go from -32768 to 32767.

And no, we need positive IDs.

Sory, I know it might sound really stupied, but why only positive IDs? What is the problem with negative ones? I have no real idea about datastructures R* used, but it all should be about pointer arithmetics and in this case positive and negative adresses can being used as well.

There are arrays.
unsigned 32767 = 32767 signed
unsigned 32768 = -32768 signed
unsigned 32769 = -32767 signed
unsigned 32770 = -32766 signed
[...]

Often game needs to know file ID, so it does
signed file ID - base ID.

I hope to figure out a way to make ID unsigned.

SweetCheese
  • SweetCheese

    Square Civilian

  • Members
  • Joined: 28 Sep 2013
  • Unknown

#13

Posted 27 August 2014 - 08:51 AM

my game crash when riding a car or motorcycle  :panic:


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#14

Posted 27 August 2014 - 08:55 AM Edited by fastman92, 27 August 2014 - 08:56 AM.

my game crash when riding a car or motorcycle  :panic:

Do you have any other ASI plugins? CLEO.asi is incompatible too.

SweetCheese
  • SweetCheese

    Square Civilian

  • Members
  • Joined: 28 Sep 2013
  • Unknown

#15

Posted 27 August 2014 - 08:56 AM Edited by SweetChessus, 27 August 2014 - 08:56 AM.

 

my game crash when riding a car or motorcycle  :panic:

Do you have any other ASI plugins?

 

no , but just cleo


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#16

Posted 27 August 2014 - 08:58 AM Edited by fastman92, 27 August 2014 - 08:59 AM.

my game crash when riding a car or motorcycle  :panic:

Do you have any other ASI plugins?

no , but just cleo

PM sent.

Please disable CLEO. Some code is incompatible in CLEO.asi / scripts.

SweetCheese
  • SweetCheese

    Square Civilian

  • Members
  • Joined: 28 Sep 2013
  • Unknown

#17

Posted 27 August 2014 - 10:08 AM Edited by SweetChessus, 27 August 2014 - 11:14 AM.

 

 

 

my game crash when riding a car or motorcycle  :panic:

Do you have any other ASI plugins?

 

no , but just cleo

 

PM sent.

Please disable CLEO. Some code is incompatible in CLEO.asi / scripts.

 

thanks man it's working :D , the problem is back-fire.cs


cj2000
  • cj2000

    Playa

  • Members
  • Joined: 17 Jun 2008

#18

Posted 27 August 2014 - 11:15 AM

 

 

 

 

Because of signed __int16, max ID may be as high as 32767

Strange, why using signed __int16 for IDs? Is it than not posible to define negative IDs? In this case IDs will go from -32768 to 32767.

 

And no, we need positive IDs.

 

Sory, I know it might sound really stupied, but why only positive IDs? What is the problem with negative ones? I have no real idea about datastructures R* used, but it all should be about pointer arithmetics and in this case positive and negative adresses can being used as well.

 

There are arrays.
unsigned 32767 = 32767 signed
unsigned 32768 = -32768 signed
unsigned 32769 = -32767 signed
unsigned 32770 = -32766 signed
[...]

Often game needs to know file ID, so it does
signed file ID - base ID.

I hope to figure out a way to make ID unsigned.

 

But standard C/C++ arrays can handle negative indexes. If it´s a castom array than it´s an other isue. Please don´t get it wrong, I dont want to argue with you, just triing to understend. I also would like to know, if posible, how you was able to find out which datatypes are used. Normaly to do this you need to have the sorces.


LINK/2012
  • LINK/2012

    LIVIN' IN CODE

  • Feroci
  • Joined: 30 Jan 2011
  • Brazil
  • Best Tool 2014 [Mod Loader]
    Contribution Award [Mods]

#19

Posted 27 August 2014 - 12:32 PM Edited by LINK/2012, 27 August 2014 - 12:36 PM.

But standard C/C++ arrays can handle negative indexes. If it´s a castom array than it´s an other isue. Please don´t get it wrong, I dont want to argue with you, just triing to understend. I also would like to know, if posible, how you was able to find out which datatypes are used. Normaly to do this you need to have the sorces.

One obvious way is by looking at the comparision operations, if they use ja/jae it was a unsigned type, if it uses jg/jge it was a signed type. And the game does that a lot with the ids, checks if the id is equal or above the base id in a signed way.

How are you guys dealing with the byte[256] array in the save game related to binary IPLs?
Also good to note there are comparisions to 256 in CIplStore, same goes for CColStore, but I think you guys knows that.

fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#20

Posted 27 August 2014 - 02:23 PM Edited by fastman92, 27 August 2014 - 02:25 PM.

But standard C/C++ arrays can handle negative indexes. If it´s a castom array than it´s an other isue. Please don´t get it wrong, I dont want to argue with you, just triing to understend. I also would like to know, if posible, how you was able to find out which datatypes are used. Normaly to do this you need to have the sorces.

One obvious way is by looking at the comparision operations, if they use ja/jae it was a unsigned type, if it uses jg/jge it was a signed type. And the game does that a lot with the ids, checks if the id is equal or above the base id in a signed way.

How are you guys dealing with the byte[256] array in the save game related to binary IPLs?
Also good to note there are comparisions to 256 in CIplStore, same goes for CColStore, but I think you guys knows that.


http://www.gtamoddin...)#Block_21:_IPL




Block 21: IPL[edit]
0x0000    dword           constant 256
0x0004    byte[255]       Flags to enable binary IPLs (see notes below)
0x0103    end
256 is the number of flags stored in save, it's the default limit of IPL files.
I patched functions, so they store a new number of files when saving.
Read as many flags as specified in the save, while loading.

And yes, all relations are fixed.
			// 256 ( number of IPL files )
			{
				patcher.PatchDWORD(0x005D542C + 4, CStreaming__baseID[FILE_TYPE_DAT] - CStreaming__baseID[FILE_TYPE_IPL]);	// mov     [esp+18h+var_4], 256

				patcher.PatchDWORD(0x4056B3 + 2, CStreaming__baseID[FILE_TYPE_DAT] - CStreaming__baseID[FILE_TYPE_IPL]);	// cmp     edx, 100h
			}
  • Ss4gogeta0 likes this

cj2000
  • cj2000

    Playa

  • Members
  • Joined: 17 Jun 2008

#21

Posted 28 August 2014 - 01:50 PM

 

But standard C/C++ arrays can handle negative indexes. If it´s a castom array than it´s an other isue. Please don´t get it wrong, I dont want to argue with you, just triing to understend. I also would like to know, if posible, how you was able to find out which datatypes are used. Normaly to do this you need to have the sorces.

One obvious way is by looking at the comparision operations, if they use ja/jae it was a unsigned type, if it uses jg/jge it was a signed type. And the game does that a lot with the ids, checks if the id is equal or above the base id in a signed way.

How are you guys dealing with the byte[256] array in the save game related to binary IPLs?
Also good to note there are comparisions to 256 in CIplStore, same goes for CColStore, but I think you guys knows that.

 

Do you mean the opcodes the comparision operations use?


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#22

Posted 29 August 2014 - 12:23 PM Edited by fastman92, 07 February 2015 - 12:46 PM.

How to make a plugin compatible with ID limit adjuster?

(0x403DA4 + 3) - holds a pointer to CModelInfo::ms_modelInfoPtrs array (0xA9B0C8 by default)
(0x408ADA + 3) - holds a pointer to CStreaming::ms_aInfoForModel array (0x8E4CC0 by default)

(0x4C51CD + 1) - holds a pointer to CAnimManager::ms_aAnimBlocks(0xB5D4A0 by default)
(0x1560EA1 + 1) - holds a pointer to CVehicleRecording::StreamingArray (0x97D880 by default)
(0x408AB9 + 1) - holds a pointer to CTheScripts::StreamedScripts (0xA47B60 by default)

Structure CStreamedScripts is modified.

Fields:












CStreamedScriptInfo[numberOfSCMscripts];
int largestExternalSize;
__int16 countOfScripts;
__int16 field_A46;
See this structure:












#pragma pack(push, 1)
struct CStreamedScripts_Footer
{
int largestExternalSize;
__int16 countOfScripts;
__int16 field_A46;
};
#pragma pack(pop)
If you want to access the last 3 members, you need to calculate address like this:
 



CStreamedScriptInfo* CTheScripts__StreamedScriptsArray = (CStreamedScriptInfo*)CTheScripts__StreamedScripts;
CStreamedScripts_Footer* CTheScripts__StreamedScriptsFooter = (CStreamedScripts_Footer*)((char*)CTheScripts__StreamedScripts + numberOfSCMfiles * sizeof(CStreamedScriptInfo));
------------------------------------

Base ID indexes (DWORD values)
(0x407104 + 2) - holds TXD base index (20000 by default)
(0x410344 + 2) - holds COL base index (25000 by default)
(0x4044F4 + 2) - holds IPL base index (25255 by default)
(0x44E4C4 + 1) - holds DAT base index (25511 by default)
(0x40C1A4 + 1) - holds IFP base index (25575 by default)
(0x4594A1 + 2) - holds RRR base index (25755 by default)
(0x40C1C4 + 1) - holds SCM base index (26230 by default)

If you need to know the value of ID limits, you should perform subtraction.
numberOfTXDfiles = baseCOLindex - baseTXDindex;

To know the limit of SCM scripts, you should read WORD value from 0x470917

--------------
IDE limits:

'IDE:peds':

(0x4C67A0 + 1) - holds a pointer to IDE_peds_store
(0x4C67DB + 1) (DWORD) - holds the count of section elements that can be allocated.
 
--------------
Car generators:
CTheCarGenerators__CarGeneratorArray = Dword(0x6F3F86 + 2);

CCarGenerator_size = Byte(0x6F32A8 + 2)

countof_CTheCarGenerators__CarGeneratorArray = Dword(0x6F3F7B + 2)

--------------
*(DWORD*)(0x573D3D + 4) // numberOfRadarTilesPerOneDimension
*(int**)(0x58802D + 3) // gRadarTextures

Author: fastman92


------------------------------------------------------------------------------------------

cargrp.dat limit of 23 cars per group got hacked.
  • dkluin and goodidea82 like this

miclin
  • miclin

    old stager

  • Members
  • Joined: 22 Mar 2009
  • Germany

#23

Posted 01 September 2014 - 11:39 PM

Well, cant send you any PM. :/

 

Does it work with Sacky limit adjuster? Cause I already broke some limits there.

 

Aaaand another limit you might want to break:

It seems that .ipls can get to big--> causes game to crash.


PetkaGtA
  • PetkaGtA

    Mark Chump

  • Members
  • Joined: 07 Oct 2012

#24

Posted 02 September 2014 - 09:54 AM

It seems that .ipls can get to big--> causes game to crash.

here you go)) works fine with ID limit adjuster also increases map bound size to +-6000 i'll upgrade plugin.dll to static one later
http://www.mediafire...me/ipllimadj.7z


miclin
  • miclin

    old stager

  • Members
  • Joined: 22 Mar 2009
  • Germany

#25

Posted 02 September 2014 - 10:55 AM Edited by miclin, 3 weeks ago.

Will test it later :)


cj2000
  • cj2000

    Playa

  • Members
  • Joined: 17 Jun 2008

#26

Posted 02 September 2014 - 02:08 PM

Wow, nice work, thanks.

 

Will test it later :)

 

EDIT://

 

Would be great if all of you guys team up(petka,fastman, nt, dk etc.) and make one new big limit adjuster instead of releasing so many small limitadjusters. 

Would make all this small plugins compatible and isnt it nicer to work to together?^^

Colaboration beetween this user would be good, and maybe would leed to development of the best Limitadjuster ever. Even if the object limit and map limit a hacked there are still limits to be hacked, like peds, vehicle, weapon, handling and carcolors limits.


fastman92
  • fastman92

    фастман92 | ف

  • Members
  • Joined: 28 Jul 2009
  • None
  • Contribution Award [Mods]

#27

Posted 02 September 2014 - 03:05 PM

Well, cant send you any PM. :/
 
Does it work with Sacky limit adjuster? Cause I already broke some limits there.
 
Aaaand another limit you might want to break:
It seems that .ipls can get to big--> causes game to crash.

PM can be sent now. My inbox was full.

LINK/2012
  • LINK/2012

    LIVIN' IN CODE

  • Feroci
  • Joined: 30 Jan 2011
  • Brazil
  • Best Tool 2014 [Mod Loader]
    Contribution Award [Mods]

#28

Posted 02 September 2014 - 03:17 PM

Would be great if all of you guys team up(petka,fastman, nt, dk etc.) and make one new big limit adjuster instead of releasing so many small limitadjusters.
Would make all this small plugins compatible and isnt it nicer to work to together?^^

https://github.com/T...juster_gta3vcsa
  • iFarbod and Concavax like this

goodidea82
  • goodidea82

    SA Modder

  • Members
  • Joined: 13 Jun 2013
  • Germany

#29

Posted 02 September 2014 - 06:10 PM

Sorry for talking much and not contributing any research or code. Nevertheless, I write in the hope to prevent some misunderstanding. Correct me if I'm wrong but my impression is that we have waited 10 years for breaking the IDE and world limits and suddenly we have 3 or 4 different parties with a solution?

(chronologically (I think)): ntauthority, fastman, petka, link + thriteenAG. This is more than awesome but also not clear what's going on and if proper credit is given to everyone (in source code files, readmes, etc). I hope that all people that have somehow contributed to this incredible progress will be appreciated.

  • Nights744 likes this

miclin
  • miclin

    old stager

  • Members
  • Joined: 22 Mar 2009
  • Germany

#30

Posted 02 September 2014 - 07:00 PM

 

Would be great if all of you guys team up(petka,fastman, nt, dk etc.) and make one new big limit adjuster instead of releasing so many small limitadjusters.
Would make all this small plugins compatible and isnt it nicer to work to together?^^

https://github.com/T...juster_gta3vcsa

 

Oh, this is nice++

Sadly, Im unable to install my visual studio again. (always get a framework error fuuuuuuu). Hope I can fix this :D





2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users