Page 1 of 1

CrossCode: Cheating it the less aggravating way.

Posted: Sat Nov 18, 2017 8:21 pm
by Vekcrim
For the benefit of anyone on the forums who may be looking to hack/cheat CrossCode, now or in the future. A 16bit-era Zelda: Link to Past/Ys series like indie game. That can be aggravatingly tricky at times to find addresses for with Cheat Engine. It is far easier to modify it's .json files directly, overusing Cheat Engine for the most part. Except for in the case of infinite HP, SP, CP from my experience.

Basically, this game is made in HTML5 using a modified version of the Impact Engine. While running in a simulated web browser that loves to crash and freeze. As well a periodically changes its memory addresses in real time. But also does use easily assessable .json files, which are not encrypted from tampering. So below I'll explain how to edit these .json files to adjust things like exp, money, item drop rates. As well as briefly go over how to get infinite HP, CP, SP using cheat engine for anyone interested.

Infinite HP in Cheat Engine:
  1. Open cheat engine.
  2. Select the biggest process from the three the game generates. Normally the center one of three processes from my experience.
  3. Change your search type to "double" and enter your current HP value.
  4. Get hit and/or jump into the water and then search for your new current HP value.
  5. Repeat a few times and it should weed down to one address fast. If you have the correct process open.
  6. Lock the address and set its value to "999" or whatever.

    ***Note: When you take damage your in-game displayed HP may briefly drop then appear to recover. It may also appear to stabilize at a value slightly lesser than whatever you set the locked value to be after taking damage, but you'll basically have infinite HP. With this said, you can still die from scripted events and if a monster in a single hit does more damage to you than the HP value is locked at. This is why I mention setting the value to "999". As the game does not freeze from the value being set too high, but also no monster to my knowledge will ever hit you that hard. I have used "9999", without freezes but I would not go higher than that.
Infinite CP in Cheat Engine:
  • CP is a 4-byte type variable.
  • You have to double, whatever the displayed value is for your searches. (Displayed Value * 2 = CE Searched Value)
  • For example: If the game display is 8, you'll need to search for 16 in Cheat Engine. If you spend 1 cp, leaving the displayed value as 7. Your next search will be a 14.
  • Once you find the value, lock it. Then spend the points to buy whatever you want. The in-game displayed value, not the locked variable, may appear to decrease while spending points. You should be able to still buy whatever you want. As long as the locked value is higher than the skill/modifier's cost.
  • Be careful changing this value directly, as it is prone to cause game crashes.
  • If you're changing the desired CP value, it needs to be entered as doubled. (Desired Value * 2 = Value to be Locked)
Infinite SP in Cheat Engine:
  • SP is a Double type variable.
  • For each in-game displayed SP box, when full, they will equal a value of 1 per box in cheat engine searches.
  • When you use a special skill in the game. The variable drops to 0 for the first box then slowly increase/scales back to equal a whole value of 1.
  • I've found searching for the value by the "increased, decreased method" with the once-in-while search of 1, while the box is full. To be the fastest approach. Once you unlock more visual SP boxes in the game, adjust your search values. Example: 3 full SP boxes = 3, etc...
  • SP like HP does like to change addresses every once in awhile but otherwise is pretty stable far as crashes go.
To modify CrossCode's .json files for EXP, credit, item drop rates, etc...

For Example: To modify hedgehog's values. The first enemies you encounter in Autumn's Rise, right after leaving the west gate of Rookie Harbor.
  1. Open the "hedgehog.json" file in notepad or notepad++ (Highly recommend, if you don't already have this awesome free program).
    - You can normally find this .json and other enemies .json files in the "...\steam\steamapps\common\CrossCode\assets\data\enemies" folder or wherever your steam library files are stored.
  2. When you first open the file up in notepad, you'll get a really long single string line of code all bunched together. No worries this can easily be made readable and thereby editable.
  3. Open your browser and go to the site: http://www.jsoneditoronline.org/. This is a free simple barebone browser-base .json file editor.
  4. Now copy and paste all the code from the "hedgehog.json" file into the left text box of the editor, then hit the ">" button located just to the right. This will make the code editable in the adjacent right box.
  5. If you so wish. You can use the right box to edit the code or edit it later on once you've returned the readable code back to the .json file.
  6. Once you're ready to return the code. Press the "<" button for the editor to regenerate the code back to the left box in a far more readable form with any edits you may have made.
  7. Copy and paste this updated code back into the hedgehog.json notepad file. Making sure to replace all the original code.
  8. Make any new changes you want, if you did not use the editor.
    - After you get the recreated code you'll have something like the following. As you can see everything is clearly labeled, so making changes should be self-explanatory. (Note: The following is only the first segment of the adjusted hedgehog's .jsong file presented for reference).

    Code: Select all

    {
      "level": 4,
      "params": {
        "hp": 286,
        "attack": 30,
        "defense": 31,
        "focus": 26,
        "statusInflict": [
          1.25,
          1.25,
          1.25,
          1.25
        ]
      },
      "credit": 35,
      "exp": 30,
      "maxSp": 8,
      "enduranceScale": 1,
      "healDropRate": 0,
      "boss": false,
      "bossOrder": 0,
      "padding": {
        "x": 2,
        "y": 2
      },
      "material": "ORGANIC",
      "aiGroup": "hedgehog",
      "aiLearnType": "REGULAR",
      "itemDrops": [
        {
          "item": "81",
          "prob": .12,
          "min": 1,
          "max": 1,
          "rank": ""
        },
        {
          "item": "1",
          "prob": .12,
          "min": 1,
          "max": 1,
          "rank": "B"
        }
      ],
    
    - The only thing that might need to be pointed out I can think of. Is on loot drops rates and item amounts that are given per drop. Drops rates are based on percentages. So when adjusting the "prob" values the game uses a scale of 0 to 1 (1*100 = 100%, 0.12*100=12%, 0.5*100=50% etc...). Even if you set the "prob" to 1. The game does not always drop an item each kill as expected. Yet, most of the time it will. While favoring whatever item at the time is listed higher in the code for some reason. There are probably other settings that affect the drop rates, but I've only experimented a little with them. So I leave this to others to chime in on if they so desire.

    Another thing of concern is do not set the ( "min": "max": ) values to high or the game will crash. The first time you kill an adjusted NPC. I have found it's safe to go up 10 (min/max); maybe a little higher. Thereby giving you 10 items, per item type, per NPC killed. Also, the more items that drop at once on the screen at a single time will briefly tank your FPS rate. Which can cause the game to freeze, if you get too many item drops at once. So adjust drops rates base on what your computer's CPU can handle. Basically, even know the game is 2D graphically, it can and will bog down your CPU. As the game rarely seems to use a computer's GPU; if at all.
  9. Save your updated .json file.
  10. Once saved you should be able to see the changes in the game next time you kill the adjusted monster.

    Using this approach you should be able to modify any of the games files to do whatever you want. It'll just take a little experimentation on your part. ;)

    ***Note: In my experience, I did not have to restart the game to see the changes take effect after saving. As I believe the game references the .json every time you kill the enemy or at least when you change area screens. I personally tended to adjust the enemies' files while playing without issue. Just mind you do not botch the code syntax before saving. With this being said you may have to restart the game to see the effects.

    If you mistakenly mess something up in your experimenting or just want to reset all your changes back to the default values after getting the desired results. The quickest and easiest method is to have Steam do a local files validation for the game. Steam update will detect the adjusted files and auto-replace them back to the default ones. As they do not match the steam's master file reference for the game. Although, you could always back up your files before editing and replace them back as well. Another thing all edited files will most likely be reset to their default versions after any steam updates for the game. So backup your changed files, if you want to quickly reset them by dropping them back in place after any game updates.
Hopefully, this short guide is of use to someone as I myself wasted a lot of hours fighting with Cheat Engine and this game. Only to realize there were far easier and simpler ways to get my desired results. Also, I like to give Iyeru credit for giving me the idea to look at editing .json files in the first place; thanks!