Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

Documenting GTA3/VC memory addresses


JernejL
 Share

Recommended Posts

 

write mem 0x428EA7 size 4 value 0x90909090

write mem 0x428EAB size 4 value 0x90909090

Are you sure? When I set it in cleo (with or without virtual protect) it always crash at 0x428EA7. And if I set it manually via a memory editing tool, it don't crash immediately, but after few seconds (crash at 0x428EAF hmm...).

 

 

Ideas, suggestions, requests related to this and my other mods are highly appreciated.

Maybe peds should start to throw Katanas too tounge.gif?

Link to comment
Share on other sites

 

To nop something is to replace the value with 0x90. So

write mem 0x428EA7 size 4 value 0x90909090

write mem 0x428EAB size 4 value 0x90909090

will do

It's not 8 bytes, it's 7. Why are you nopping a cmp instruction though? You should be doing something about the jump instead. The Zero Flag is used for the jump, and just out of luck, there is exactly 127/128 chance that this works, since Zero Flag can also be set in the previous cmp at 428EA3h. The proper way is to nop two bytes at 428EAEh. smile.gif

 

 

Ideas, suggestions, requests related to this and my other mods are highly appreciated.

Maybe peds should start to throw Katanas too tounge.gif?

Wouldn't be that interesting though I guess. wink.gif

 

Which reminds me about AI, the byte at 0x428EC7 represents how much is added to the AI speed limit for a new car when Miami Traffic cheat is on. Try setting that to a higher value, for example 100. Then the traffic will be insane. wink.gif

 

Oh and I've noticed some silly mods that try to keep the player on a bike with SCM, but only manage to do it partially. 522D07h to 0EBh (1 byte), 6148C2h to 9090h (2 bytes) to make sure the player never falls off. Values 75h and 0C75h respectively to revert.

 

Most of this memory address stuff is trivial to find, so there's no point for me to post random stuff, if anyone needs something, just ask.

 

By the way, anyone interested in class definitions? I haven't seen any proper post in this thread that fully documents a class in the game. Like this:

 

struct CObjectVC {   CPhysical phys; // 0-288   //physical structure of this object   CMatrix matDummyInitial; // 288-360   //initial matrix, when converted from a dummy object   float fAttachForce; // 360-34   //how strongly the object is attached to the ground   uint8_t byteObjectType; // 364-365   //0 - default, not used, 1 - map object, 2 - projectiles, pickups, script objects, 3 - dead car parts and roadblocks, 4 - cutscene object, 5 - spiketraps + ?   uint8_t bIsPickupObject:1; // 365.0-365.1   //is a pickup object   uint8_t bDoCircleEffect:1; // 365.1-365.2   //do the circle blinking effect for pickups   uint8_t bRenderPickupQuantity:1; // 365.2-365.3   //render pickup quantity as dollars   uint8_t bRenderPickupAvailability:1; // 365.3-365.4   //render pickup ammunation quantity   uint8_t bWindowMinorCollisionDamage:1; // 365.4-365.5   //window has received minor collision damage   uint8_t bHasWindowBeenBrokenByMelee:1; // 365.5-365.6   //window has been broken by melee   uint8_t bHasObjectExplosionTriggered:1; // 365.6-365.7   //has object explosion been triggered (barrels, water hydrants)   uint8_t bIsVehicleComponent:1; // 365.7-366.0   //is this a separated vehicle component   uint8_t bSpecialLighting:1; // 366.0-366.1   //used for weapon models   uint8_t bNoVehicleCollisionWhenDetached:1; // 366.1-366.2   //used for traffic light objects   uint8_t bPadFlags:6; // 366.2-367.0   uint8_t bytePickupObjectBonusType; // 367-368   //used for bonus and clothes pickups   uint16_t wPickupObjectQuantity; // 368-370   //used for money pickups   _pad(__fxpad00, 2); // 370-372   float fDamageMultiplier; // 372-376   //object damage multiplier - how easily it breaks   uint8_t byteCollisionDamageType; // 376-377   //what happens when the object receives damage   uint8_t byteSpecialCollisionType; // 377-378   //special collision type for some objects   uint8_t byteCameraAvoids; // 378-379   //whether the camera avoids this object   uint8_t byteBounceScore; // 379-380   //how many times the player has hit this with his head (beachball)   _pad(__fxpad01, 4); // 380-384   uint32_t dwObjectTimer; // 384-388   //for some objects this shows when it will disappear (car parts)   uint16_t wRefModelId; // 388-390   //the ID of the model this object is a part of (car parts)   _pad(__fxpad02, 2); // 390-392   CEntity* pInitialSurface; // 392-396   //the surface the object is on when created   CPhysical* pContactPhysical; // 396-400   //a physical that is currently in contact with this object   uint8_t byteVehicleMainColor; // 400-401   //main color for vehicle parts   uint8_t byteVehicleExtraColor; // 401-402   //extra color for vehicle parts   _pad(__fxpad03, 2); // 402-404};struct CPickupVC {   CVector vecPos; // 0-12   //position of the pickup   float fStandProximity; // 12-16   //how close the player is standing to the pickup?   CObjectVC* pObject; // 16-20   //entity associated with the pickup   CObjectVC* pExtraObject; // 20-24   //extra entity (for minigun for example)   uint32_t dwPickupQuantity; // 24-28   //used for weapons and money   uint32_t dwTimer; // 28-32   //either the time it was created or when it should disappear   uint16_t wMoneyGenerationRate; // 32-34   //how quickly this pickup generates money   uint16_t wModelId; // 34-36   //model ID of the pickup   uint16_t wUniqueId; // 36-38   //unique identifier of this pickup   char szPickupTextKey[8]; // 38-46   //key of the text that is shown when on this pickup   uint8_t bytePickupType; // 46-47   //shows if pickup slot is in use and its type   uint8_t byteRemoved; // 47-48   //pickup has been removed   uint8_t byteEffects; // 48-49   //which kind of visual effects this pickup has (values 0/1)   _pad(__fxpad02, 3); // 49-52};

 

Edited by maxorator
Link to comment
Share on other sites

PlatinumSerb

 

Most of this memory address stuff is trivial to find, so there's no point for me to post random stuff, if anyone needs something, just ask.

 

 

Since you offered, here I come! tounge.gif

 

First I must admit that I don't have much experience with mem hacking, but recently I have been playing around trying to hack the path limits(Peds and Vehicles). Now with my ability this is definitely a difficult task, one which I don't think I can achieve, but based on what you have posted it doesn't seem like it would be as hard for you. So it would be greatly appreciated if you or anyone that still looks at this topic could help me! smile.gif

 

I would really love to see this limit finally hacked! Along with the actual number of paths allowed, it would also be nice if it was possible to spawn paths beyond the original game bounds. Andy was able to do this by removing the x16 multiplier at 0x687c88, but I think that was just a work around. ( Check this post: http://www.gtaforums.com/index.php?act=ST&...post&p=3939633)

 

I found a few old posts about paths that might help;

 

"The path memory starts at 0x9B6E5C, and there are several places in that block (many of them adjacent or close to adjacent) that are directly addressed (example: 0x2F1F0 bytes after 0x9B6E5C - there are places in code with 0x2F1F0 and 0x9E604C). If you write the code and it works, you get points (and credit as stated above)." - (Andy's challenge : http://www.gtaforums.com/index.php?showtopic=265552 (I believe, the 2 other challenges in that topic have already been hacked)

 

 

Also, an interesting post by Hammer: http://www.gtaforums.com/index.php?showtopic=182383&st=20#

 

Thanks in advance for any help!!

 

Link to comment
Share on other sites

 

Which reminds me about AI, the byte at 0x428EC7 represents how much is added to the AI speed limit for a new car when Miami Traffic cheat is on. Try setting that to a higher value, for example 100. Then the traffic will be insane.

 

Very interesting. Now they drive so fast that they can't even turn left/right or brake now wink.gif. Tommy while someone crashed into him: "Why don't you use the brake idiot?"

 

Could you post the memory address that represents the water level? And how to disable the fake Airtrain and other bots planes flying around VC smile.gif?

Edited by krasiejow
Link to comment
Share on other sites

 

Ideas, suggestions, requests related to this and my other mods are highly appreciated.

So i have seen your vid on YT, exactly this one:

so this way i guess You could arm any vehicle, and what i am counting on, on example maverick, or sparrow (which i got replaced with ah6 littlebird model) with RPGs or even miniguns, yes? That would be really awesome mod, so if it is not problem for You and if You have some free time, i would request such a mod. Cause there are plenty of mods for SA with arms vehicles with any weapons and for VC there is no such a thing, or at least there was not until now, so i hope You could make it possible someday and i am sure people would really like that idea wink.gif
Link to comment
Share on other sites

towncivilian
And how to disable the fake Airtrain and other bots planes flying around VC smile.gif?

nop 0x4A4515 *5

(credit to vice-players team; I didn't test this)

Link to comment
Share on other sites

Wow VC players team did something, that wasn't in VCMP 0.1c wow.gif. Yes it works, the plane doesn't move longer, but it stands where it was wink.gif.

 

Here is my nub find:

 

car pointer + 0x23C = current radio station

 

 

As there is no opcode to get current radio station in VC, we can use this way. What is interesting, it is possible to set the Kaufman and Police radio for "normal" cars, but it's not working in the opposite direction. Every time you change the radio station while in police vehicle, it will change back to 23. However it doesn't change back, when setting the radio station id to 10 (off) but the police radio plays still sad.gif.

Link to comment
Share on other sites

maxorator

 

First I must admit that I don't have much experience with mem hacking, but recently I have been playing around trying to hack the path limits(Peds and Vehicles). Now with my ability this is definitely a difficult task, one which I don't think I can achieve, but based on what you have posted it doesn't seem like it would be as hard for you. So it would be greatly appreciated if you or anyone that still looks at this topic could help me! smile.gif

I usually document the structures I'm going to modify thoroughly, but since path data seems quite boring to me and I can expand the limits without actually knowing what each element in the CPathFind class means, I guess I'll just do it without much preparation. Currently I'm a bit busy so I can't really tell when I'm going to do it, but I looked a bit at the functions dealing with paths and there shouldn't be anything too difficult about raising the limit. Looks like it can be done pretty much the same way I dealt with increasing audio entity limit.

 

Ideas, suggestions, requests related to this and my other mods are highly appreciated.

So i have seen your vid on YT, exactly this one:

so this way i guess You could arm any vehicle, and what i am counting on, on example maverick, or sparrow (which i got replaced with ah6 littlebird model) with RPGs or even miniguns, yes? That would be really awesome mod, so if it is not problem for You and if You have some free time, i would request such a mod. Cause there are plenty of mods for SA with arms vehicles with any weapons and for VC there is no such a thing, or at least there was not until now, so i hope You could make it possible someday and i am sure people would really like that idea wink.gif

Sure, I can attach anything to anything. smile.gif

Edited by maxorator
Link to comment
Share on other sites

maxorator, may be it's stupid question, but where we can find your mods/plagins? That is awesome!

 

 

 

sorry for bad english

Link to comment
Share on other sites

PlatinumSerb
First I must admit that I don't have much experience with mem hacking, but recently I have been playing around trying to hack the path limits(Peds and Vehicles). Now with my ability this is definitely a difficult task, one which I don't think I can achieve, but based on what you have posted it doesn't seem like it would be as hard for you. So it would be greatly appreciated if you or anyone that still looks at this topic could help me! smile.gif

I usually document the structures I'm going to modify thoroughly, but since path data seems quite boring to me and I can expand the limits without actually knowing what each element in the CPathFind class means, I guess I'll just do it without much preparation. Currently I'm a bit busy so I can't really tell when I'm going to do it, but I looked a bit at the functions dealing with paths and there shouldn't be anything too difficult about raising the limit. Looks like it can be done pretty much the same way I dealt with increasing audio entity limit.

 

Sounds great man. I would really appreciate it if you got the limits hacked! No pressure!! colgate.gif

Link to comment
Share on other sites

First I must admit that I don't have much experience with mem hacking, but recently I have been playing around trying to hack the path limits(Peds and Vehicles). Now with my ability this is definitely a difficult task, one which I don't think I can achieve, but based on what you have posted it doesn't seem like it would be as hard for you. So it would be greatly appreciated if you or anyone that still looks at this topic could help me! smile.gif

I usually document the structures I'm going to modify thoroughly, but since path data seems quite boring to me and I can expand the limits without actually knowing what each element in the CPathFind class means, I guess I'll just do it without much preparation. Currently I'm a bit busy so I can't really tell when I'm going to do it, but I looked a bit at the functions dealing with paths and there shouldn't be anything too difficult about raising the limit. Looks like it can be done pretty much the same way I dealt with increasing audio entity limit.

 

Ideas, suggestions, requests related to this and my other mods are highly appreciated.

So i have seen your vid on YT, exactly this one:

so this way i guess You could arm any vehicle, and what i am counting on, on example maverick, or sparrow (which i got replaced with ah6 littlebird model) with RPGs or even miniguns, yes? That would be really awesome mod, so if it is not problem for You and if You have some free time, i would request such a mod. Cause there are plenty of mods for SA with arms vehicles with any weapons and for VC there is no such a thing, or at least there was not until now, so i hope You could make it possible someday and i am sure people would really like that idea wink.gif

Sure, I can attach anything to anything. smile.gif

Yeah, sounds cool smile.gif So we are politely waiting for some mods releases, to be honest noone had done such modifications before as i know, or at least i haven't seen any of this kind modifications, and these are f*ckin awesome, so keep it up in further modding icon14.gif

Link to comment
Share on other sites

spaceeinstein

@maxorator I have little knowledge on how to read this language so I just poke it until something works. With time, I will learn like I did with SCM coding, but these days I don't have the time to do so. You have the ability to create amazing stuff, you should keep up at it. Why not publicize them in the "mod showroom"?

Link to comment
Share on other sites

 

First I must admit that I don't have much experience with mem hacking, but recently I have been playing around trying to hack the path limits(Peds and Vehicles). Now with my ability this is definitely a difficult task, one which I don't think I can achieve, but based on what you have posted it doesn't seem like it would be as hard for you. So it would be greatly appreciated if you or anyone that still looks at this topic could help me! smile.gif

I usually document the structures I'm going to modify thoroughly, but since path data seems quite boring to me and I can expand the limits without actually knowing what each element in the CPathFind class means, I guess I'll just do it without much preparation. Currently I'm a bit busy so I can't really tell when I'm going to do it, but I looked a bit at the functions dealing with paths and there shouldn't be anything too difficult about raising the limit. Looks like it can be done pretty much the same way I dealt with increasing audio entity limit.

 

Sounds great man. I would really appreciate it if you got the limits hacked! No pressure!! colgate.gif

Do you happen to have some files with path descriptions I could test it on?

 

Never mind, tried paths.ipl with double content. Doesn't crash. Not entirely sure they are all loaded though. Anyway, here is the code (doubles the limit):

 

DWORD dwPathDataRefs[] = {   0x41C4BD, 0x41C6BD, 0x41C6DD, 0x41CE23, 0x41CECF, 0x41CF21, 0x41CF59, 0x41CF87,    0x41D03E, 0x41F015, 0x41F094, 0x41F352, 0x41F844, 0x420DB5, 0x420E10, 0x42112E,    0x421168, 0x421427, 0x4214E9, 0x421502, 0x42154E, 0x421565, 0x421AE4, 0x421B1E,    0x421FFE, 0x422021, 0x4220CD, 0x422167, 0x422187, 0x4221F3, 0x422333, 0x422428,    0x422620, 0x42264E, 0x422782, 0x4227BC, 0x425D7C, 0x425DD6, 0x4272F0, 0x4275DF,    0x427B1C, 0x427B5C, 0x427DC1, 0x427E0E, 0x427F5D, 0x4280C0, 0x42859B, 0x4285A8,    0x4286CC, 0x4286EE, 0x437375, 0x437396, 0x4373D7, 0x43741A, 0x437431, 0x437477,    0x437495, 0x4374C6, 0x4374E7, 0x437529, 0x43758A, 0x4375F5, 0x437616, 0x43763C,    0x43765E, 0x43769D, 0x4376D9, 0x4376F7, 0x437725, 0x437746, 0x437769, 0x43778A,    0x4377C7, 0x438E96, 0x438EB7, 0x438F3D, 0x439255, 0x439273, 0x439364, 0x439383,    0x43C26F, 0x442BB7, 0x442BE3, 0x442E79, 0x442EA7, 0x444475, 0x4444AD, 0x444AB3,    0x45335E, 0x453423, 0x45510E, 0x45525E, 0x455297, 0x45842B, 0x458505, 0x45ACCA,    0x45ACE4, 0x45AD20, 0x465C2C, 0x465DFE, 0x465FE0, 0x46631A, 0x4666B0, 0x46674D,    0x46687A, 0x4668C3, 0x4668FE, 0x466931, 0x48AE89, 0x48B550, 0x48B9E1, 0x48CD10,    0x48CD96, 0x48CF49, 0x48D27C, 0x48D474, 0x4A4C08, 0x4A4C12, 0x4A4CE0, 0x4AE993,    0x4BD66D, 0x4BD687, 0x4BE6A3, 0x4D4945, 0x4D4AD1, 0x4F9BB5, 0x4FA8EA, 0x4FAB49,    0x4FAC36, 0x4FAC5D, 0x4FAEEA, 0x4FB064, 0x4FB42B, 0x506F47, 0x5072E0, 0x50AC91,    0x51228C, 0x513E2D, 0x513ED4, 0x513F64, 0x514068, 0x514172, 0x51F6F8, 0x51F859,    0x53C2C0, 0x53C391, 0x53C396, 0x61B14E, 0x61CA59, 0x630943, 0x6309DF, 0x630A35,    0x63129B, 0x6312D2, 0x41CD94, 0x41D0E0, 0x41D120, 0x41D1E2, 0x41D205, 0x42142E,    0x421653, 0x421685, 0x421DD8, 0x421E12, 0x421E4C, 0x44431C, 0x4445A2, 0x4446FD,    0x444814, 0x45514B, 0x466357, 0x46646B, 0x4664B1, 0x466779, 0x4AE9EA, 0x4D4975,    0x4D4B01, 0x5071D1, 0x50741D, 0x5074A1, 0x507525, 0x5122CF, 0x51F773, 0x41CDA3,    0x41D0F1, 0x41D12F, 0x41D1F1, 0x41D219, 0x421445, 0x421664, 0x421696, 0x421DF1,    0x421E25, 0x421E61, 0x44437F, 0x4445B3, 0x444721, 0x44482A, 0x455152, 0x466370,    0x466480, 0x4664D4, 0x46678E, 0x4AE9F7, 0x4D498A, 0x4D4B16, 0x5071B2, 0x5073FE,    0x507482, 0x507506, 0x5122D6, 0x51F754, 0x41CDB4, 0x421460, 0x4445EA, 0x444732,    0x444863, 0x455159, 0x466388, 0x466494, 0x4664FB, 0x4AEA07, 0x4D4991, 0x4D4B1D,    0x507193, 0x5073DF, 0x507463, 0x5074E7, 0x5122C8, 0x51F735, 0x41CC59, 0x41CC88,    0x41CCDE, 0x41CD13, 0x41CE47, 0x41CE6C, 0x41D0C4, 0x420E8E, 0x421521, 0x42157B,    0x42161B, 0x42182D, 0x4220F4, 0x422139, 0x422296, 0x4222BE, 0x4223A3, 0x4223CB,    0x42251A, 0x42764B, 0x42766E, 0x427D31, 0x427D6F, 0x4355DB, 0x4355FF, 0x43565D,    0x43567F, 0x444457, 0x466427, 0x466847, 0x44457A, 0x41CCD1, 0x41D08F, 0x4215DB,    0x421FCE, 0x427631, 0x427CCC, 0x427D23, 0x4355BE, 0x435644, 0x4666D5, 0x41C4F7,    0x422A24, 0x422AC3, 0x427386, 0x427530, 0x427547, 0x427342, 0x427356, 0x53C320,    0x53C334, 0x418DCE, 0x418E4B, 0x41F0D5, 0x41F13D, 0x41F393, 0x41F554, 0x41F8C4,    0x421018, 0x42102F, 0x4211C3, 0x42121F, 0x4219A3, 0x4219BA, 0x421B7E, 0x421BE1,    0x42281C, 0x422878, 0x425F17, 0x425F6F, 0x42812C, 0x4281BA, 0x42848D, 0x428504,    0x444521, 0x444536, 0x465D63, 0x465F33, 0x466123, 0x418D7C, 0x418E2E, 0x41F0EA,    0x41F152, 0x41F3A8, 0x41F533, 0x41F889, 0x420FF8, 0x421007, 0x4211B4, 0x421210,    0x421983, 0x421992, 0x421B6F, 0x421BD2, 0x42280D, 0x422869, 0x425F06, 0x425F60,    0x428117, 0x4281A5, 0x428478, 0x4284EF, 0x4444F7, 0x444508, 0x465D3D, 0x465F0D,    0x4660FD, 0x421FF3, 0x42215C, 0x4222D9, 0x4223E6, 0x42768D, 0x465C57, 0x465C6E,    0x465E27, 0x465E3E, 0x466009, 0x466020, 0x4666ED, 0x418D55, 0x418DAD, 0x418EEC,    0x418F48, 0x41EF7E, 0x41EFF8, 0x41F44E, 0x41F4C8, 0x420F3D, 0x420FA0, 0x4212A0,    0x421302, 0x4218C1, 0x421924, 0x421C67, 0x421CCA, 0x422597, 0x4225CB, 0x4228F2,    0x422954, 0x425CF4, 0x425D57, 0x427FB1, 0x428033, 0x428275, 0x4282EF, 0x465D73,    0x465F43, 0x466133, 0x418DF2, 0x418E7F, 0x418EC6, 0x418F22, 0x41EFAA, 0x41F02B,    0x41F47A, 0x41F4F4, 0x420F5D, 0x420FC0, 0x42127A, 0x4212DC, 0x4218E1, 0x421944,    0x421C41, 0x421CA4, 0x4228CC, 0x42292E, 0x425D0A, 0x425D6D, 0x427FE5, 0x42805F,    0x428243, 0x4282BD, 0x465D4D, 0x465F1D, 0x46610D, 0x420EE9, 0x420F08, 0x42186B,    0x42188A, 0x4222E5, 0x4222F2, 0x4223F2, 0x422402, 0x422550, 0x422573, 0x42769C,    0x4276AA, 0x435613, 0x435693, 0x41CC66, 0x41CD1D, 0x41CE78, 0x41D0D1, 0x420EAA,    0x42152D, 0x421596, 0x42162E, 0x422103, 0x4222A3, 0x4223B0, 0x427655, 0x427D7C,    0x4355E5, 0x435667, 0x466437, 0x466853, 0x4669DC, 0x513F4C, 0x51404F, 0x51415A,    0x41CC95, 0x41CCEE, 0x41CE53, 0x420EC4, 0x42183E, 0x42214B, 0x4222C8, 0x4223D5,    0x422527, 0x427678, 0x427D4C, 0x435609, 0x435689, 0x4444A8, 0x466630, 0x444469,    0x4060A5, 0x4060C7, 0x40612A, 0x40614C, 0x4067CC, 0x4067D6, 0x4067F8, 0x4060D7,    0x40615C, 0x406808, 0x4060DD, 0x406162, 0x40680E, 0x4060E5, 0x40616A, 0x406816,    0x4060EF, 0x406174, 0x406820, 0x4060FC, 0x406181, 0x40682A, 0x406106, 0x40618B,    0x406837, 0x466735, 0x466A08, 0x444AA5, 0x466748, 0x4373A6, 0x437406, 0x4374F6,    0x437552, 0x437671, 0x437799, 0x438CC0, 0x43C28A, 0x4373B0, 0x43740D, 0x437500,    0x43755C, 0x43767B, 0x4377A3, 0x438CB7};DWORD dwPathStructRefs[] = {   0x434F3B, 0x434F8E, 0x434FE0, 0x435020, 0x435056, 0x4350C3, 0x435129, 0x43532E,    0x43550A, 0x4356DA, 0x435748, 0x4357EC, 0x435895, 0x43598B, 0x435A8A, 0x435BD9,    0x4368A9, 0x4369D2, 0x4369DA, 0x4369E4, 0x436B94, 0x436EDA, 0x436EE2, 0x436EE8,    0x43708E, 0x437096, 0x43709C, 0x437196, 0x43719E, 0x4371A4, 0x437353, 0x4373F7,    0x437455, 0x43754A, 0x43757B, 0x4375A4, 0x4378FB, 0x4379A9, 0x437A10, 0x437B3C,    0x437B7E, 0x437B98, 0x437C91, 0x4382BB, 0x438335, 0x438410, 0x438848, 0x43889E,    0x438958, 0x438A0B, 0x438C5A, 0x438C62, 0x438C6C, 0x438D4D, 0x438ED2, 0x4391D5,    0x43922F, 0x4392B2, 0x4392C3, 0x43940F, 0x439417, 0x43956F, 0x43957D, 0x4395B3,    0x4395C1, 0x43968D, 0x43970F, 0x4397F2, 0x439808, 0x439820, 0x43984A, 0x43986F,    0x439897, 0x4398BC, 0x4398E4, 0x43990A, 0x43992B, 0x43999F, 0x439B1E, 0x439B68,    0x439BC5, 0x439CC4, 0x439CDC, 0x439CF4, 0x439D1E, 0x439D43, 0x439D6B, 0x439D90,    0x439DB8, 0x439DDE, 0x439DFF, 0x43A523, 0x43A5B7, 0x43A5CF, 0x43A5D8, 0x43A5E0,    0x43A5E7, 0x43A5EF, 0x43A723, 0x43A72B, 0x43A873, 0x43A881, 0x43A89A, 0x43A8A2,    0x43A8DB, 0x43A8F1, 0x43A94E, 0x43A9A2, 0x43A9AB, 0x43A9B3, 0x43A9B9, 0x43A9C0,    0x43A9E9, 0x43A9EF, 0x43AA04, 0x43AA45, 0x43AA5E, 0x43AAA4, 0x43AABD, 0x43AAC3,    0x43AAD6, 0x43AADC, 0x43AAF1, 0x43AB03, 0x43AB09, 0x43AB1E, 0x43AB2F, 0x43AB35,    0x43AB3F, 0x43AB48, 0x43AB4E, 0x43AB58, 0x43AB61, 0x43AB67, 0x43AB80, 0x43AB87,    0x43AB8E, 0x43AB96, 0x43AB9C, 0x43ABBA, 0x43AC07, 0x43AC2F, 0x43AE1B, 0x43AE28,    0x43B051, 0x43B05F, 0x43B1F9, 0x43B247, 0x43B296, 0x43B2E1, 0x43B2EA, 0x43B2F2,    0x43B2F8, 0x43B2FF, 0x43B35A, 0x43B393, 0x43B3AB, 0x43B3E4, 0x43B3FD, 0x43B436,    0x43B44F, 0x43B455, 0x43B468, 0x43B46E, 0x43B478, 0x43B483, 0x43B489, 0x43B493,    0x43B49E, 0x43B4A4, 0x43B4AE, 0x43B4B7, 0x43B4BD, 0x43B4C7, 0x43B4D0, 0x43B4D6,    0x43B4E4, 0x43B4EB, 0x43B4F2, 0x43B4FA, 0x43B500, 0x43B555, 0x43B55D, 0x43B57D,    0x43B593, 0x43B5D2, 0x43B64B, 0x43B653, 0x43B664, 0x43B68E, 0x43B6B1, 0x43B6EA,    0x43B7F9, 0x43B86B, 0x43B89A, 0x43B8F6, 0x43B96B, 0x43B9C4, 0x43BA99, 0x43BAB4,    0x43BACE, 0x43BAD6, 0x43BAE7, 0x43BAFB, 0x43BBD1, 0x43BF11, 0x43BF47, 0x43BF4D,    0x43BF7F, 0x43BF85, 0x43BF8B, 0x43C153, 0x43C15E, 0x43C165, 0x43C177, 0x43C182,    0x43C18B, 0x43C193, 0x43C19D, 0x465C38, 0x465C49, 0x465E0A, 0x465E19, 0x465FEC,    0x465FFB, 0x4666BE, 0x4666C9, 0x4666F9, 0x466703, 0x41F045, 0x41F09A, 0x41F358,    0x41F84A, 0x421134, 0x42116E, 0x421AEA, 0x421B24, 0x422006, 0x422029, 0x42216F,    0x42218F, 0x422788, 0x4227C2, 0x425D92, 0x425DDC, 0x427FC7, 0x4280C6, 0x43737B,    0x43747C, 0x4374CC, 0x4375FB, 0x437642, 0x4376DE, 0x43772B, 0x43776F, 0x4379BB,    0x438E9C, 0x43925A, 0x439369, 0x43B87D, 0x43B8AC, 0x444480, 0x4444BF};DWORD dwPathBlockMargins[] = {   0x000000, 0x02F1E8, 0x0395F8, 0x03A980, 0x0448E0, 0x049890, 0x0537F0, 0xFFFFFF};void* pNewPathFindBuffer = NULL;#define PATHLIMITMUL 2void IncreasePathLimit(void) {   DWORD dwVp, dwVp2, dwMod;   if(pNewPathFindBuffer) return;   VirtualProtect((void*)0x401000, 0x27CE00, PAGE_EXECUTE_READWRITE, &dwVp);   pNewPathFindBuffer = malloc(0x05600C*PATHLIMITMUL);   for(int i = 0; i < sizeof(dwPathDataRefs)/sizeof(DWORD); i++) {       if(*((DWORD*)dwPathDataRefs[i]) < 0x9B6E5C || *((DWORD*)dwPathDataRefs[i]) >= 0xA0CE68){           continue;       }       dwMod = *((DWORD*)dwPathDataRefs[i]);       dwMod -= 0x9B6E5C;       for(int j = 0; j < sizeof(dwPathBlockMargins)/sizeof(DWORD)-1; j++) {           if(dwMod < dwPathBlockMargins[j+1]) {               dwMod = (dwMod-dwPathBlockMargins[j]) + PATHLIMITMUL*dwPathBlockMargins[j];               break;           }       }       dwMod += (DWORD)pNewPathFindBuffer;       *((DWORD*)dwPathDataRefs[i]) = dwMod;   }   for(int i = 0; i < sizeof(dwPathStructRefs)/sizeof(DWORD); i++) {       if(*((DWORD*)dwPathStructRefs[i]) < 0x02F1E8 || *((DWORD*)dwPathStructRefs[i]) > 0x5380C) {           continue;       }       dwMod = *((DWORD*)dwPathStructRefs[i]);       for(int j = 0; j < sizeof(dwPathBlockMargins)/sizeof(DWORD)-1; j++) {           if(dwMod < dwPathBlockMargins[j+1]) {               dwMod = (dwMod-dwPathBlockMargins[j]) + PATHLIMITMUL*dwPathBlockMargins[j];               break;           }       }       *((DWORD*)dwPathStructRefs[i]) = dwMod;   }   *((DWORD*)0x436731) *= PATHLIMITMUL;   *((DWORD*)0x43674C) *= PATHLIMITMUL;   *((DWORD*)0x4367A5) *= PATHLIMITMUL;   *((DWORD*)0x4367C0) *= PATHLIMITMUL;   *((DWORD*)0x43680F) *= PATHLIMITMUL;   *((DWORD*)0x436801) *= PATHLIMITMUL;   *((DWORD*)0x435C3D) *= PATHLIMITMUL;   *((DWORD*)0x435FAD) *= PATHLIMITMUL;   *((DWORD*)0x43955D) *= PATHLIMITMUL;   _asm {       mov eax, 43C260h       call eax   }   VirtualProtect((void*)0x401000, 0x27CE00, dwVp, &dwVp2);}

 

 

Same at pastebin: http://pastebin.com/qSTi2DFW

IDC script for generating the list of addresses: http://pastebin.com/MygTTTZp

Edited by maxorator
Link to comment
Share on other sites

Problems I found trying to hack the limits.

 

Original hacked Exe we used. (Lack of paths)

 

I could increase the limits inside the original 4000^2 map boundaries 2 or 3 times over but I was not sure myself if this was really working.

 

I had put the paths in layers 10units Z from each other.

 

In game I could see at times a car driving above other traffic.

 

Where trying to spawn objects outside the original bounds, nothing would spawn?.

 

Hacking the map bounds was interesting, messing the water up too where I settled for just a single plain of water and as a result to is none of the tunnels could be used.

 

It has been sometime since I hacked those limits, 2 years have almost gone by.

 

All I have to show for this is the work put into GTASOL59.1 on GTAG.

.

Link to comment
Share on other sites

 

Sure, I can attach anything to anything. smile.gif

By "anything", do you include adding extra car parts? Like in SA, so that you can modify spoilers, bumpers and stuff. And one more. Can you hack the polygon limit for Vice City? Nowadays, modding this game is quite impossible, bcs you can't have hd cars (2MB+ dff) and to expect for it not to crash or smt... confused.gif

Link to comment
Share on other sites

Sure, I can attach anything to anything. smile.gif

By "anything", do you include adding extra car parts? Like in SA, so that you can modify spoilers, bumpers and stuff. And one more. Can you hack the polygon limit for Vice City? Nowadays, modding this game is quite impossible, bcs you can't have hd cars (2MB+ dff) and to expect for it not to crash or smt... confused.gif

Yeah, it's definitely possible to add extra car parts. If someone can provide me with dff+txd for them, I could try adding them too.

 

Not sure about the polygon limit, because I don't know what part of the game engine limits it.

Link to comment
Share on other sites

 

Sure, I can attach anything to anything. smile.gif

By "anything", do you include adding extra car parts? Like in SA, so that you can modify spoilers, bumpers and stuff. And one more. Can you hack the polygon limit for Vice City? Nowadays, modding this game is quite impossible, bcs you can't have hd cars (2MB+ dff) and to expect for it not to crash or smt... confused.gif

Yeah, it's definitely possible to add extra car parts. If someone can provide me with dff+txd for them, I could try adding them too.

 

Not sure about the polygon limit, because I don't know what part of the game engine limits it.

There is a RW3.2+ limit of 5Mb for all models and vehicles.

 

This is the max size any dff can be (exported) or otherwise as far as the dff version goes.

 

RW3.6 SA has a problem with large mash areas so all models must not be large but can be high polyed.

 

VC/GTAIII Only (This does not work with SA)

 

I have tried large dff with high polygon court, the trick here is to have a custom col.

 

The custom col would be the outer mask of the original model less then 1000 polys.

 

Steve Col edit 2 allows you to add boxes that replace of the high density mash.

.

Link to comment
Share on other sites

 

There is a RW3.2+ limit of 5Mb for all models and vehicles.

 

This is the max size any dff can be (exported) or otherwise as far as the dff version goes.

 

RW3.6 SA has a problem with large mash areas so all models must not be large but can be high polyed.

 

VC/GTAIII Only (This does not work with SA)

 

I have tried large dff with high polygon court, the trick here is to have a custom col.

 

The custom col would be the outer mask of the original model less then 1000 polys.

 

Steve Col edit 2 allows you to add boxes that replace of the high density mash.

I looked into it a bit and the only place where I can notice an explicit limit is in RpGeometryCreate, which limits the number of vertices to 65536, which is obvious since vertices are indexed by unsigned 16bit integers, which cannot hold any larger values.

 

RenderWare does not have anything to do with collisions though, they are entirely a custom feature in Vice City.

Edited by maxorator
Link to comment
Share on other sites

 

Sure, I can attach anything to anything. smile.gif

By "anything", do you include adding extra car parts? Like in SA, so that you can modify spoilers, bumpers and stuff. And one more. Can you hack the polygon limit for Vice City? Nowadays, modding this game is quite impossible, bcs you can't have hd cars (2MB+ dff) and to expect for it not to crash or smt... confused.gif

Yeah, it's definitely possible to add extra car parts. If someone can provide me with dff+txd for them, I could try adding them too.

 

Not sure about the polygon limit, because I don't know what part of the game engine limits it.

I can add "extra1", "extra2" etc- but how do you plan on making the game engine to swap the car's bodyparts? Like for example, having a boot with and without a spoiler, or having multiple types of wheels for one vehicle. dontgetit.gif

Link to comment
Share on other sites

 

Yeah, it's definitely possible to add extra car parts. If someone can provide me with dff+txd for them, I could try adding them too.

I can add "extra1", "extra2" etc- but how do you plan on making the game engine to swap the car's bodyparts? Like for example, having a boot with and without a spoiler, or having multiple types of wheels for one vehicle. dontgetit.gif

Nothing difficult in that. Just replace the atomic. For example I replaced Oceanic's chassis with Romero's Hearse's:

 

user posted image

 

Now with Sandking's bonnet:

 

user posted image

 

The vehicle color for the replaced parts might not be correct at the moment, but that can be fixed. And yes, this is done on the fly and only for one car at a time.

Edited by maxorator
Link to comment
Share on other sites

OMG, this is just a big wow concept! You could become famous for making a tuning mod for Vice City, it's the one thing it always felt missing! Can it be possible for the game engine (if you tweak it like that) so that in the model we have for like example:

 

  • banshee
  • chassis_dummy
  • bonnet_dummy
  • bonnet_hi_ok (with an air-intake)
  • bonnet_hi_dam (with an air-intake)
  • bonnet_hi_ok (stock)
  • bonnet_hi_dam (stock)
...

 

 

So that we can either choose which one do we want in-game in some tunning shops, I mean - like in San Andreas.

Link to comment
Share on other sites

OMG, this is just a big wow concept! You could become famous for making a tuning mod for Vice City, it's the one thing it always felt missing! Can it be possible for the game engine (if you tweak it like that) so that in the model we have for like example:
  • banshee
  • chassis_dummy
  • bonnet_dummy
  • bonnet_hi_ok (with an air-intake)
  • bonnet_hi_dam (with an air-intake)
  • bonnet_hi_ok (stock)
  • bonnet_hi_dam (stock)
...

 

 

So that we can either choose which one do we want in-game in some tunning shops, I mean - like in San Andreas.

I could implement that mod if someone creates some extra parts for that. Get me some .dff/.txd sets for vehicle components and I'll do it. smile.gif

Link to comment
Share on other sites

Seems awesome. icon14.gif

How are you doing this? RW Analyse? .scm scripting? cleo address editing? .asi/dll hooking?

Could you explain the whole process? C'mon spill the beans. tounge.gif

Edited by frank.s
Link to comment
Share on other sites

@maxorator

How do you want them? In multiple dffs, or all packed in one?

Link to comment
Share on other sites

 

Seems awesome. icon14.gif

How are you doing this? RW Analyse? .scm scripting? cleo address editing? .asi/dll hooking?

Could you explain the whole process? C'mon spill the beans. tounge.gif

I might post the source code later. For now let's just say it's C++ code running inside the game. I believe it's what you call DLL hooking.

 

@maxorator

How do you want them? In multiple dffs, or all packed in one?

Separately for now, maybe later they can be merged into one, but this way is easier for testing.

Edited by maxorator
Link to comment
Share on other sites

spaceeinstein

Some info on Tommy sprinting and getting tired from it:

 

Player pointer + 0x600 relates to the sprinting stamina for Tommy. In a new game, the value begins at 150. When Tommy sprints, the value decreases to -150. Negative values will mean when Tommy stops sprinting, he will go into a tired animation. The value increases when Tommy is not sprinting and increases faster if Tommy is not moving. When you tap the sprint button, the value will never go far below 0 so that is why Tommy can literally have infinite sprint by doing that.

 

Player pointer + 0x608 relates to the distance Tommy has sprinted, up to 500. At 500, the number resets to 0 and the upper stamina limit (150 at the start) is increased by 10, so that Tommy can sprint more before getting tired.

 

Enabling infinite sprint (0x94AE68) will skip all this stuff.

Link to comment
Share on other sites

Ahahaha spaceeinstein, are you reading in my mind? I was yesterday thinking about the power left for sprinting biggrin.gif!

 

Nice find icon14.gif

Link to comment
Share on other sites

  • 2 weeks later...

Here is my new found. I wanted to check if the player uses the key SHIFT for something, because I would like to bind to it a script feature. I don't use it, but I remember, that this is the default sprint key.

 

There is a way to check, if this is the sprint key.

 

 

0x9B5A94 - first associated SPRINT key0x9B5A98 (+ 0x4) - only 1 key for this action (returns 0), 2 keys for it (1)0x9B5A9C (+ 0x8) - second associated keyall 1 byte

 

 

It can be also used to change all keys devil.gif It is very easy to find other key binds, just find the first associated key wink.gif.

 

Btw. a small request. Can someone describe the weapon pointer? I was thinking about "manual weapon reload" and to disable the "automatic" one.

Link to comment
Share on other sites

  • 4 weeks later...

Can somebody compile the Code posted by Maxorator? About the path limits

Edited by Swoorup
Link to comment
Share on other sites

@Maxorater is that the code for IDA dissassembler?

How do i use it?

Edited by Swoorup
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.