Author Topic: Want to use Gameshark to alter a few things. Need help. (SPOILERS for the game)  (Read 7816 times)

StockBeat

  • Iokan (+1)
  • *
  • Posts: 12
    • View Profile
Hi, I'm new here. Is this an appropriate place to ask something like this? If not, I apologize. I don't know anywhere else I could ask.

I've played Chrono Cross many times, but one thing I never really liked about Chrono Cross was how you spend a really long time with Serge stuck in Lynx's body. I was wondering if there were any cheat codes floating around out there that could turn Serge back to normal without needing to wait until almost the end of disc 1. I looked around a bit, but I couldn't find anything, unfortunately. If nobody knows of any such code that already exists, I don't suppose that there's anyone here who knows a lot about cheat codes and would possibly want to try create such a code, is there?

Another thing that bugs me is how, after the body switch, you lose access to all of your characters you've obtained thus far, also until nearly the end of disc 1. And Kid, you can't get back until almost the end of the game. I found a code to unlock all characters, but I don't really want to unlock every character in the game right away, just keep the ones I already had. Does any such code exist? Maybe just some individual character unlock codes? I found a code to put specific characters in the party, but it doesn't actually "unlock" the characters, which would make switching members quite the hassle, as I'd have to use multiple cheat codes every time I want to change party members instead of just being able to use the Tele-porter.

Could anyone here possibly help me out with this? I'd greatly appreciate it!

EDIT:

Oh, I thought I should mention, here's where I found the codes to unlock all of the characters, and put specific characters in your party without unlocking them. Perhaps somebody who knows how cheat codes work could reverse-engineer some codes to unlock specific characters from them? Or something? I don't know if it works like that or not. The "character 1/2/3 modifier" codes are the ones that put people in the party without unlocking them.

https://wescastro.com/codetwink/cheats.codetwink.com/psx/view/1079/57/default.htm
https://wescastro.com/codetwink/cheats.codetwink.com/psx/view/1079/58/default.htm
« Last Edit: February 13, 2019, 03:42:49 am by StockBeat »

Boo the Gentleman Caller

  • Guru of Life Emeritus
  • Hero of Time (+5000)
  • *
  • Posts: 5262
    • View Profile
First off, welcome to the Compendium! Welcome tot he party!

Regarding your request, I'm not sure if it's possible. I know all I've seen of the codes are specific to what you mentioned. However, someone could appear out of the woodwork here and chime in.

Good luck!

OneWingedAngel

  • Iokan (+1)
  • *
  • Posts: 10
    • View Profile
I don't know how Gameshark codes are constructed, but for those who do:

- The fieldscript events that remove your "Serge members" don't seem to appear in the Fort Dragonia sequence.  I think this happens when the Temporal Vortex is loaded.

- The fieldscript dump that I'm looking at (CD0-371-Temporal Vortex.txt) has a strange gap between 0x006C and 0x0088. This corresponds to 0x00730 and 0x0074B if you decompress /D1445/0003; I don't know why the fieldscript dump drops all of the header information from its count.  Anyway, this is in a section of fieldscript that is triggered on room initialization when you enter from the Fort Dragonia scene.

- The code in that gap, starting after the unknown opcode FE 6F, is:

00 D9 00 80 31 80 DA FE 79 00 80 9C 82 FE 74 00
80 9D 82 FE 73 00 80 9E 82 6C 64 80


- The page with known opcodes has vanished, so I can't try to work out what might be happening here.

- The only other code that only runs when you enter the Temporal Vortex from Fort Dragonia is the block between 0x0109 and 0x0144 in the fieldscript dump, which looks like it's just the code to make Lynx stand up and look around.

Generally: There isn't any fieldscript that removes a bunch of characters from your roster, nor one that adds Lynx to your roster.  I suspect this happens in a "special script" called with one of the FE XX opcodes.

Also: I don't think you need to label threads as spoilers in this section of the forum.  If you're modifying the game, you've almost certainly played through it.
« Last Edit: February 12, 2019, 05:29:23 pm by OneWingedAngel »

prizvel

  • Guru of Time Emeritus
  • Guardian (+100)
  • *
  • Posts: 118
  • Our planet's dream is not over yet
    • View Profile

- The code in that gap, starting after the unknown opcode FE 6F, is:

00 D9 00 80 31 80 DA FE 79 00 80 9C 82 FE 74 00
80 9D 82 FE 73 00 80 9E 82 6C 64 80




FE 6F 00 - hide all party members
D9 00 80 31 80; d9 - setup model, 00 80 -  member number 0, 31 80 - model number 0x31 (lynx)
DA wait model loading
FE 79 00 80 9C 82 Learn GlideHook
FE 74 00 80 9D 82 Learn FeralCats
FE 73 00 80 9E 82 Learn ForeverZero
6C 64 80

OneWingedAngel

  • Iokan (+1)
  • *
  • Posts: 10
    • View Profile
Thanks!  Oddly, the game takes away / unlearns Serge's elements during the Fort Dragonia scene, but only teaches Lynx's when you get to the Temporal Vortex.

Also good to know that the program that dumped the fieldscript left gaps when it encountered some unknown codes.  I need to look at Danetta's updated version.

prizvel

  • Guru of Time Emeritus
  • Guardian (+100)
  • *
  • Posts: 118
  • Our planet's dream is not over yet
    • View Profile
Also good to know that the program that dumped the fieldscript left gaps when it encountered some unknown codes.  I need to look at Danetta's updated version.

I don't know if Danetta finished it. I manually write operators from this page https://www.chronocompendium.com/Term/Chrono_Cross_Fieldscript_Notes.html . It has everything except FE 6F 00.
« Last Edit: February 18, 2019, 01:51:31 pm by prizvel »

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1763
  • Nu-chan
    • View Profile
    • Maurtopia
If you could provide any other necessary details, I'll add that to the page.

Satoh

  • CC:DBT Dream Team
  • Magical Dreamer (+1250)
  • *
  • Posts: 1291
  • Am I your dream... or are you mine...?
    • View Profile
regarding the latter, Unlocking specific characters:
if these three codes actually work
800719A0 FFFF
800719A2 FFFF
800719A4 FFFF
then its a simple matter of convering each FFFF field to bits, and finding which bits belong to which character. I'd assume they are in the same order as listed on the character index page, but actually adding up the bitmask would take a bit of testing.

For example, 800719A0 0003 is, (without having tested as its late and I'm tired but want to say this before I forget to post at all) probably "unlock only Serge and Kid"
As bit 0 = 1 and bit 1 = 2. Both bits turned on adds to 3 in hexadecimal.
if you wanted to add another character lets say Karsh, he's probably bit 7. Bit 7 = 2^7 = 128. So bit 0, 1, and 7 together = 1+2+128 = 131 = 0x83.
making the final code 800719A0 0083.

That's assuming all the bits for the characters are in the same order as listed in the character index. I'd test this all but as I said, I'm tired.

The general form of a gameshark code is:
AABBBBBB CCCC
where AA is the type. Common types are
30 for 1 byte write continuous
80 for 2 byte write continuous
D0 for 2 byte if equals do next, else do not do next
BBBBBB is the address you are either writing to or testing the value of
and CCCC is the value you are writing, or what you are testing for. These values are Big Endian, so 9999 = 0x270F, NOT 0x0F27. The least significant byte goes on the right.
« Last Edit: February 25, 2019, 05:16:22 am by Satoh »

trig

  • Level ** (100)
  • *
  • Posts: 100
    • View Profile
endianness? maybe Serge and Kid is 0300 and Serge+Kid+Karsh, if your example is true, 8300?
« Last Edit: May 02, 2023, 04:21:14 pm by trig »

Satoh

  • CC:DBT Dream Team
  • Magical Dreamer (+1250)
  • *
  • Posts: 1291
  • Am I your dream... or are you mine...?
    • View Profile
Its big endian in the code, little endian in RAM.
0x1000 in a code is 0x00 10 in RAM.

EDIT:
Ok, I tested, and this is the deal.
Code: [Select]
800719A0 0001 - Serge
800719A0 0002 - Kid
800719A0 0004 - Guile
800719A0 0008 - Norris
800719A0 0010 - Nikki
800719A0 0020 - Viper
800719A0 0040 - Riddel
800719A0 0080 - Karsh
800719A0 0100 - Zoah
800719A0 0200 - Marcy
800719A0 0400 - Korcha
800719A0 0800 - Luccia
800719A0 1000 - Poshul
800719A0 2000 - Razzly
800719A0 4000 - Zappa
800719A0 8000 - Orcha
800719A2 0001 - Radius
800719A2 0002 - Fargo
800719A2 0004 - Macha
800719A2 0008 - Glenn
800719A2 0010 - Leena
800719A2 0020 - Miki
800719A2 0040 - Harle
800719A2 0080 - Janice
800719A2 0100 - Draggy
800719A2 0200 - Starky
800719A2 0400 - Sprigg
800719A2 0800 - Mojo
800719A2 1000 - Turnip
800719A2 2000 - NeoFio
800719A2 8000 - Skelly
800719A4 0001 - Funguy
800719A4 0002 - Irenes
800719A4 0004 - Mel
800719A4 0008 - Leah
800719A4 0010 - Van
800719A4 0020 - Sneff
800719A4 0040 - Steena
800719A4 0080 - Doc
800719A4 0100 - Grobyc
800719A4 0200 - Pierre
800719A4 0400 - Orlha
800719A4 0800 - Pip
note that each of these codes will set the player's character list to exactly ONE character. The character whose name is listed.
Add up the 0001 ~ 8000 value for each character you want to have in your party, but pay carefull attention to the 719A0 / 2 / 4 address. Only add up numbers that share the same address.
So add any characters from Serge to Orcha together, but don't add Radius to Serge. Radius belongs in the second code.
I hope that makes sense.
« Last Edit: February 26, 2019, 11:07:25 am by Satoh »

StockBeat

  • Iokan (+1)
  • *
  • Posts: 12
    • View Profile
Oh, thank you! Now I just need a code to turn Lynx back into Serge after the body switch happens. I'm not currently at the point where the body switch happens, but I can try this code out when I get there.

I am currently at the point where Kid is poisoned though, so I decided to try it to put her back in the party. It.... did not work. Curiously, I also tried it with another save file at the very beginning of the game, and it did work there. Is there something in the game that absolutely restricts Kid from being in your party during this point in the game under any circumstance, even if you use cheat codes?

Also, that code list seems to be missing Greco. Possibly others, but Greco was the one I noticed while adding up the numbers as a test.

(And sorry for bumping a month old thread. I completely forgot about these threads I had here.)
« Last Edit: March 17, 2019, 01:10:39 am by StockBeat »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1756
    • View Profile
I haven't worked on Chrono Cross in years, but one of those things that I noticed when playing with events and fieldscript is that the body switch is not the same as removing characters from the recruited list. They are still recruited.
From a look at the script where Pip rejoins you, the opcode for restoring individual party members is probably FE 5D.
Somewhere there must be a separate list of which of the recruited PCs can be used.

Edit:
Since that was just a guess about the fieldscript opcodes, FE 60 should also be looked into.
« Last Edit: March 17, 2019, 09:58:17 pm by Vehek »

StockBeat

  • Iokan (+1)
  • *
  • Posts: 12
    • View Profile
So you're saying the game doesn't "re-lock" characters you've obtained when the body switch happens, so much as it just "hides" them and forbids them from being used? If that's true, then I guess a simple character unlock code wouldn't work, huh? I guess that would explain though why the code didn't seem to work when I tried it while Kid was poisoned.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1756
    • View Profile
I was sort of wrong. I tested some saves from online, and actually those codes do work on the body-switch. The game does reset those memory addresses. It's only with certain events that a character's flag remains set, but they become unavailable.

After studying what the game did during one of those script opcodes I mentioned, I have a code that should re-enable Kid.
80072364 0000

This works the opposite way than the previous codes. A set bit here means the character is disabled.

StockBeat

  • Iokan (+1)
  • *
  • Posts: 12
    • View Profile
Alright, I finally made it to the body switch. I tried out those codes to add specific characters to my party, and they seem to have worked! I have every character I had prior to the switch, and everything appears to be in order based just on a quick test run up to Home Viper Manor with Kid and Glenn in the party.

Now I just need a code to change Serge back into Serge after the body switch. Name, character model, menu pictures, innate color, techs, animations, and sound effects all changed from Lynx's back into Serge's. If anybody could help me with this too, I would greatly appreciate it!