Star Ocean: The Divine Force - v1.0 - Steam

Upload your cheat tables here (No requests)
asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

Some strange behavior with the new "No Food Decrease" option. I'll have to make some time to check it out. I've restored the previous version as a precaution.

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

After playing a bit I found out that the always scan option does not work on bosses (it doesn't turn itself off). I've added another check to determine if a boss encounter occurs. It works on the big monsters in the field, but I wont know if it works on bosses everywhere until I get to my next real boss encounter.

If everything works out, I think that'll be the last buggy part of this script. Which means I'll be able to promote that out of the testing section.

Edit: It'll get pushed as soon as I am able to test it against bosses. It's not up yet. Soon.

Edit2: Been a day-ish. I haven't forgotten. I just haven't encountered another boss yet.

talimity
What is cheating?
What is cheating?
Posts: 2
Joined: Sat Nov 05, 2022 1:27 pm
Reputation: 1

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by talimity »

asmoranomar wrote:
Sun Nov 06, 2022 5:41 pm
Tuuuup! wrote:
Sun Nov 06, 2022 4:30 pm
asmoranomar wrote:
Sun Nov 06, 2022 2:20 pm
.. There might even be a need to go back further (level chart? scaling? etc?)
Check my Current player script, those last offsets values you can manipulate the base values and they stick after save/restart pc etc, for now! (still testing)
Yeah, I noticed that. But those appear to be the total stat bonuses from the skill tree. Which isn't bad, and enough has been mapped out to make scripts for them now. But they aren't base stats, a level table, or the like.

One of the reasons why pointers are good is cause we can use them to map out data structures within the game. Find a good starting point, and a few solid pointers, and a array/table starts to form. We expose hidden data we wouldn't have known to look for. And from there we can lua script out the entire thing to expose everything horizontally and vertically.

The process I just described looks like it could work for the skill tree, which again, is great. But I was more or less referring to a characters base values, maybe with some hidden attributes we don't know about (luck? crit rate?, etc)

Edit: Another good example of this is the chaos difficulty pointers talimity discovered (I should add them to the table too). I'm not sure at which point he found the pointers (did he find how to unlock chaos first, or did he find the pointers first?) - but if he found the pointers first then technically we could have made any game chaos without having to actually set it in the menu. And now we can create a chaos+ difficulty. Or an extra easy earth mode. Or a combination between extra easy earth mode and chaos+ modes.
It was a very roundabout path since I didn't really know what I was doing, but yeah I found the difficulty pointers first.

I initially only found the values for difficulty index+key and then found the routine responsible for applying the difficulty mod to every enemy on the current map when the key changes, but even when freezing the difficulty via CE it would just use the previous multipliers and I couldn't figure out why. Poked around a bunch more and realized that in the struct holding the current difficulty key also held a pointer to an array (or vector or hashmap?) element with the corresponding multipliers for the selected difficulty, and that pointer is only updated when you interact with the difficulty menu.

I considered writing a big messy asm patch that just manually overwrote that pointer, but lucked into finding the UI functions which set the maximum index for the difficulty slider, and patching that seemed cleaner.

There are a bunch of static pointers in the region from 142535000 - 142537B00 to lots of interesting-looking classes like GlobalPartyMemberManager (142536518) and FactorManager (142536550) that seemed like they could be promising in making factor, synthesis, and skill cheats, but I didn't get to enumerating them beyond the ones that were right next to the difficulty accessor. Browsing through that region in Dissect Structures might lead to useful results since CE seems to be able to parse out class names from the pointers (using RTTI or something? Very out of my depth) and it's a lot easier to figure out what these routines are doing when you have the names of the singletons they're using.

kadashsouba
Cheater
Cheater
Posts: 30
Joined: Sun Feb 04, 2018 9:32 am
Reputation: 0

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by kadashsouba »

Thx for table. Just wanted to ask if its possible for you to make something like fast spell cast - like buff, or lonfer duration or something to make last like weapon buff after battle to not have rebuff over and over again?

hal
Noobzor
Noobzor
Posts: 10
Joined: Sat Mar 31, 2018 2:26 pm
Reputation: 0

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by hal »

Thanks for the great table.
Is it possible to have a guest character like Theo accompany at all times?

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

I have yet to encounter another boss to test "Always Scan", but I'm going to promote it anyways.
talimity wrote:
Tue Nov 08, 2022 8:57 pm
...
A LOT of this went over my head, but I did my best to try to digest it. All in all, I think I'm on the right track. I might not use the right terms when describing all this, because it is quite foreign to me. Anyways...

Dev Stuff
Using https://framedsc.com/GeneralGuides/using_rtti.htm, I was able to isolate some useful RTTI strings and work my way backwards to addresses belonging to vTables (I assume this is what it's called?). I then was able to use these addresses in dissect structures, and could identify some values. One of the RTTI strings I used was the PlayerCharacterInfo class. When it's vTable address is put into the dissect structures, it immediately recognizes the structure name. After that I was able to locate various values related to player stats.

Instead of sharing the structure table and having to go thru the steps to locate the address every time, I wrote a lua script that does it for you. It takes a long time (there are several scans). Not everything is in the script, because I didn't test every aspect of the vTable - so to find new stuff you'd still need comb thru dissect structures. However, since the script also includes each tables addresses (use the address, not the value), you can put them into the dissect structures easily.

Note that not all of these values are writable (current HP is, but the few stats I tested are not) - so this isn't necessarily a tool to cheat, but rather, a way to locate entry points for new cheats. For instance, there is a section (PlayerCharacterInfo+2D8 I believe?) where you see 4 groups of 3 4-byte hex values that seem to be related to equipment, and zero themselves out when you remove equipment. We might be able to figure what these hex values are, or what methods change their values.

Some might be wondering why I added yet another pointer table for stats. Well this one is just a single script, and does all the characters (or if not, it can be expanded to do so). Instead of finding pointers, we could just share offsets ("Hey Asmo, PlayerCharacterInfo+28 looks like the character's level", etc.). Once one offset is found, like character level, we just found that value for everybody and don't have to look for each character. It's also a template for rapidly setting up data structures using RTTI.

Edit: Another example - There is an item class and an inventory class. If we can figure out the dissect for these, we could potentially read out our entire inventory and add/edit anything into it. Finding one offset will locate them all.
This is a development tool, so the new script is under the Testing section.

Uploading shortly.

User avatar
SmokeyJuan
Noobzor
Noobzor
Posts: 12
Joined: Mon Sep 17, 2018 8:14 pm
Reputation: 0

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by SmokeyJuan »

Good job on the Tables by the way! I would like to suggest a Shop Items Editor like they did with The Last Hope!

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

Devs: I've made a better template script and a few more RTTI scripts. They are empty shells right now until we parse the addresses with the dissect data utility. This is what I was talking about earlier about how useful this could be...

Image


I'll make a quick update and hopefully some of you can start poking around a little bit.

Edit: Forgot to mention, these scripts are heavy on searching, and sometimes will fail to find the correct addresses. It's normal because I'm only accepting the first search result and sometimes that's not the correct one. Doing it manually is tedious and restarting the game will usually fix the issue. Again, this is a development tool to assist in making better scripts.

furiousfist
Noobzor
Noobzor
Posts: 13
Joined: Wed Jan 19, 2022 3:09 am
Reputation: 0

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by furiousfist »

I have no idea how to use any of this for messing with crafting/synthesis/factors but big thanks for the progress youre making.

manila35
Cheater
Cheater
Posts: 35
Joined: Thu Aug 23, 2018 8:55 pm
Reputation: 1

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by manila35 »

asmoranomar wrote:
Fri Nov 11, 2022 6:15 am
Devs: I've made a better template script and a few more RTTI scripts. They are empty shells right now until we parse the addresses with the dissect data utility. This is what I was talking about earlier about how useful this could be...

Image


I'll make a quick update and hopefully some of you can start poking around a little bit.

Edit: Forgot to mention, these scripts are heavy on searching, and sometimes will fail to find the correct addresses. It's normal because I'm only accepting the first search result and sometimes that's not the correct one. Doing it manually is tedious and restarting the game will usually fix the issue. Again, this is a development tool to assist in making better scripts.
Awesome job man! Hopefully we'll get an item modifier code soon :)

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

Image
Image

1 2 3 what do i see?

Image

anon9
Table Makers
Table Makers
Posts: 174
Joined: Mon Sep 17, 2018 6:28 am
Reputation: 176

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by anon9 »

Oh, guess I don't need to work on it then. Kudos.

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

anon9 wrote:
Fri Nov 11, 2022 10:00 pm
Oh, guess I don't need to work on it then. Kudos.
lol, still needs some work and lots still to do, but once I get to a stopping point I'll upload the script.

Edit: Uploaded. With this you should be able to edit the basic attributes of items. Mainly for DEV use, but if you want to change some stuff it's possible. In regards to the item table, there are a lot of empty records. The first 120 or so records for me were blank. If you can't find what your looking for, keep looking.

Edit2: I know someone will ask. I don't yet know if these changes are persistent between saves. I did not try.

Edit3:
DEV Notes
Something is strange with the Inventory records (and by extension, Item records). There are 3(?)(for me) Inventory records and each one has a pointer to an Item record. I assume this pointer points to the beginning of an array of Item records. Further proof is offered when you realize that the offsets between Item records changes as it transitions between one Inventory record to the next. So, the Item list you see, is actually 3(?)(again for me) groups of Inventories.

For some reason, 2 of my Inventory Records are the same, while the 3rd one is completely blank. I'm unsure why at this time. They are also all the same size, so if you have 5 items in the game, (I assume...) you'd have 15 Item records + a number of blank Item records.
Edit4:
DEV Notes
Item Records: Factors begin at Item+50 and are 8 bytes. Unsure what these values represent at this time, but when you zero them out the factors are removed. I copied a frozen res factor and on the equipment screen it reflected the change correctly (4x 8 Frozen Res = 32)

Seems like 4 Factors max?
Edit5:
Spoiler
Image
Image

It is now cannon. I am Welch.

I copied a few values over (Item+10 8Byte unknown purpose but required ; Item+20 "Item Base" pointer) and it changed the item, icon and all. The rest, which is just factors and names, remained. With this, you should be able to make any item you want, name it whatever you want, give it whatever factors you want, and have it's appearance - the only thing is that it'll take up an item slot of whatever it's base Item was. Assuming it's persistent when you save (still haven't tested). And no...idk what this factor will do when you equip it.

manila35
Cheater
Cheater
Posts: 35
Joined: Thu Aug 23, 2018 8:55 pm
Reputation: 1

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by manila35 »

asmoranomar wrote:
Fri Nov 11, 2022 10:03 pm
anon9 wrote:
Fri Nov 11, 2022 10:00 pm
Oh, guess I don't need to work on it then. Kudos.
lol, still needs some work and lots still to do, but once I get to a stopping point I'll upload the script.

Edit: Uploaded. With this you should be able to edit the basic attributes of items. Mainly for DEV use, but if you want to change some stuff it's possible. In regards to the item table, there are a lot of empty records. The first 120 or so records for me were blank. If you can't find what your looking for, keep looking.

Edit2: I know someone will ask. I don't yet know if these changes are persistent between saves. I did not try.

Edit3:
DEV Notes
Something is strange with the Inventory records (and by extension, Item records). There are 3(?)(for me) Inventory records and each one has a pointer to an Item record. I assume this pointer points to the beginning of an array of Item records. Further proof is offered when you realize that the offsets between Item records changes as it transitions between one Inventory record to the next. So, the Item list you see, is actually 3(?)(again for me) groups of Inventories.

For some reason, 2 of my Inventory Records are the same, while the 3rd one is completely blank. I'm unsure why at this time. They are also all the same size, so if you have 5 items in the game, (I assume...) you'd have 15 Item records + a number of blank Item records.
Edit4:
DEV Notes
Item Records: Factors begin at Item+50 and are 8 bytes. Unsure what these values represent at this time, but when you zero them out the factors are removed. I copied a frozen res factor and on the equipment screen it reflected the change correctly (4x 8 Frozen Res = 32)

Seems like 4 Factors max?
Edit5:
Spoiler
Image
Image

It is now cannon. I am Welch.

I copied a few values over (Item+10 8Byte unknown purpose but required ; Item+20 "Item Base" pointer) and it changed the item, icon and all. The rest, which is just factors and names, remained. With this, you should be able to make any item you want, name it whatever you want, give it whatever factors you want, and have it's appearance - the only thing is that it'll take up an item slot of whatever it's base Item was. Assuming it's persistent when you save (still haven't tested). And no...idk what this factor will do when you equip it.
When I open the Item or Inventory script I only see a bunch of ???; the fields don't get populated for me..

Can you give us a step-by-step guide on how to modify/add factors to an item?

Thank you.

asmoranomar
Expert Cheater
Expert Cheater
Posts: 118
Joined: Sun Oct 20, 2019 10:55 pm
Reputation: 80

Re: Star Ocean: The Divine Force - v1.0 - Steam

Post by asmoranomar »

manila35 wrote:
Sat Nov 12, 2022 2:52 pm
When I open the Item or Inventory script I only see a bunch of ???; the fields don't get populated for me..

Can you give us a step-by-step guide on how to modify/add factors to an item?

Thank you.
I don't want to sound like 'that guy'...but...
Is it working?
If the script was not working, you wouldn't get anything. The fact that you got anything means records were found. If your seeing ???'s then that means the entries you are looking at are blank entries, and this is normal. If you click the box and got nothing at all, then the script failed. Because of the nature of how this script functions, sometimes that is normal. Restarting the game should fix it.

I have not added the ability to modify/add factors to the script, because it's not in a format that is understandable. There is four 8 byte sections in memory that controls factors, but I don't know if it's one part of the 8 bytes or the entire 8 bytes. I don't yet know how to change the scaling/numbers etc. in the 8 bytes. The only thing I can do is copy one factor from one item to another.

I have not added the ability to change items, because it's not in a format that is understandable. I figured out the pointer address to change the item base, but there is an 8 byte section in memory that changes the item type, and, again, I don't know if it's one part or the entire 8 bytes. The only thing I can do is copy one item format to another.

The step-by-step IS the script. The there is also a website that explains how I did it in the script.

This script is a dev tool, while you can change some things, it does not do it safely. It's also possible that it could break on a version update, although I tried to minimize it. This is why it's under a section for testing, and there is a warning that it could break your game if used. Also, the only thing this tool is ever supposed to do is reveal addresses. If your expecting to edit things, then your expectations for what this tool is for is a bit high.
If this doesn't apply to you then...
Instructions for devs
These scripts are for helping find locations in memory that contain data. Not specific data like ATK, INT, etc - but rather a generalized location for finding that specific data. I gave you the spreadsheet, not the cells; the book, not the words; the array, not the elements; the class instance, not the class properties; the orange, not the juice, or however it is stored. You still got to experiment to figure out where and how this specific data is stored. Sometimes it's pretty simple. You might find the value your looking for in plain sight. Other times you got to mess around a bit until something changes or breaks.

Do I know what I'm looking at? No. I just have a lot of time on my hands at playing around with things. If you write scripts, you know how it is. All I guarantee is that this may be a better starting point for your search than trying to scan everything. And that it might even be possible to stumble upon things we didn't even know existed in the game.

I really emphasize that the general use of this tool is to be used in the dissect data structure utility, where you can compare records side-by-side to help you find exactly what your looking for. Because not all records will have information in plain sight, and it's way more useful to look at and compare several records to "expose those secrets". I only added a few fields as an example to show everyone how I was using this tool. I only ever expected the record addresses to be used. So when I say 'Item+20' it makes sense to anyone looking at the dissect data structures utility.

It is with my hope, that once this happens devs will be able to write their own scripts - and hopefully not in the bloody mess that mine is in. Preferably by changing the game's code in how it handles the data and not the data directly. It would be cleaner, faster, stable, and more understandable that what I'm doing. If it breaks, you wouldn't have to read a novel of code to fix it.

Also, check the first post. I have included a list of known offsets in the developer section.
So yeah...I want people to get excited, because we found some really cool stuff. And I want people to know it's still being worked on.

But I don't want people to get so excited they start breaking their games or making an assumption that this is something they can use to to change stuff.

It's on it's way though!
Edit1
I updated the scripts a bit. Removed some stored structure metadata to reduce size. Also included more offsets, including the ones I discussed here and previously. Again, I encourage developers to test things out. If your not a developer and want to poke around anyways, know that things could potentially break and that, while you can change things, it's not intuitive or easy.
Edit2
Upon a bit more digging....
The first half of the Item Records appear to reflect the Items in shops?
There is several classes related to Shops I can bring in to the mix to see if it points to these items.

After that, there is a section of Items Records that belong in your inventory.
We already know that Inventory+10 is a pointer to the first Item (in your inventory).
I just found out Inventory+18 is a pointer to just after the last Item (in your inventory).
This is the Inventory 0 Record

Then there is a section of Items Records that are empty.
Same offset details as above.
It's purpose is unknown at this time.
This is the Inventory 1 Record

Then there is another section of Items Records that belong in your inventory.
Same offset details as above.
Changing these Records don't seem to do anything(?)
It's purpose is also unknown at this time.
This is the Inventory 2 Record

It might be possible to use the Inventory Records to look up items, much like Item Records use a base pointer to find item stats. That way, all items are looked up, but you can separate them between what is relevant or not.....perhaps. It may even be possible to edit the entries first part of the Item Record to have shops sell whatever you want(?)
Edit3
By just using the Item Records, I was able to change an item the vendor was selling into another item. The shop interface refreshes the Item Records if you navigate away (left/right/close/category/etc) but if you move up/down the list you can avoid it. The item name in the item list (in game) wont reflect changes, but if you select another item (up/down), it will reflect on the details screen when you go back to it. This seems like a good entry point for adding any item you want into the game.
Edit4
Item+40 (8 Byte) Seems related to who has the item equipped and possibly what slot.
Edit5
Now that I can see shops editing memory, I can find the routine that's responsible for adding items to a shop list. We are missing some offsets shops require, so it would be nice to know what these values are.
Image
Item+10 (8 Bytes) - Unknown
Item+18 (4 Bytes) - Unknown
Item+20 (8 Bytes) - Item Base Pointer
Item+28 (8 Bytes) - Unknown
Item+30 (4 Bytes) - Quantity (For shop, probably 0)
Item+38 (8 Bytes) - Recent Items Counter/Sort? Increases with every item obtained. (For Shop, probably 0)
Item+40 (8 Bytes) - User/Slot Equipped on. (For Shop, probably 0)
Item+48 (4 Bytes) - Unknown
Item+4C (1 Bytes) - Unknown
Item+50 to Item+6F - Factors 1-4

I'm probably done for the day
Edit6
I was able to identify more of the Item Structure

Image

Whatever values Factor represents is the same between reloads (Not to be confused with persistent saving)

Post Reply

Who is online

Users browsing this forum: austinn4160, Elbecoaster, EyeOfTheMind86, Google [Bot], Google Adsense [Bot], JafK1, jalubagaskara, Old Fisher, Orfina, RingoMimi, XeTrinityz, YandexBot, yitan1979