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

Decoding the Savegame


LLCoolDave
 Share

Recommended Posts

Well, the main problem with Mission coding right now is the fact that save games are not compatible with your edited code. Big mods are hard or even impossible to make like this, as you have to start from scratch to even just test minor changes.

 

So what we shoul do is decode the save game and figure out how and which thread data is stored, how we add our own threads and if necessary adjust the running threads accordingly *coughoffsetscough*

 

We've been doing some theory over at the #gtamodding IRC channel, but well, we're not experienced and/or skilled enough to get something like this running on our own.

Link to comment
Share on other sites

What you want to do is akin to Apple's Fix and Continue and probably a feature Visual Studio will (already? dunno) have. It is a *very hard problem* to adjust the state of running code automatically. Without large edits to the script source code, I doubt such a thing is remotely feasible. But please do prove me wrong.

 

But if you want to try, here's an basic idea I just dreamed up.

When building the SCM the first time, create a data file mapping source code lines to bytes in the SCM.

When building a second time,

- first find what lines of the source have changed with some kind of diff algorithm;

- if the program counter of an executing thread was inside or near a changed region, tell the user it can't be fixed up;

- adjust the program counter forward or backward based on where it is in the source code and the byte locations that changed. (I.e., find the source line that was executing and use its new byte location.)

 

Of course this only works if you didn't mess with variables too much since that could cause various conditions to exist where the variable state is from the old code that the new code no longer handles correctly. And if you use anything more useful than an assembler like MB, just forget it.

Link to comment
Share on other sites

If the topic wouldn't have been removed in the latest forum-cleanup sad.gif, I would have given you a pointer to the VC savefile decoding topic.

In that topic we've decoded the global structure of the savefile. We've also identified the portion that saves the states of the running threads. And the format of those blocks for VC is fully documented there.

 

I've been able to restart dead-threads by adding an extra thread-block to the savefile.

 

With al this knowledge it should in theory be possible to patch old savefiles, to run with edited SCM files. There are however immense hurdles to be taken before this is reality:

* variable locations are not preserved by the current SCM-tools, thus also the complete variable map in the savefile needs to be reshuffled.

* It's not always easy to figure out in an automated way how threads between two versions match-up.

 

The savefile decoding topic should become available sometime in the near future again, in a read only archive ( so the staff has promised).

 

This message was not meant to hold you back in your endaviour, but to supply you with the progress we've been made on this issue in the past.

I surely wished that the scenario you propose will one day become reality..

 

 

 

 

 

bS8xA.png
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.