removing hexed breeds from bred petz tutorial

i honestly wasn't expecting this to work when i first tried it, but i managed to successfully remove all references to a hexed breed inside an existing bred pet, so here's a tutorial on how to do that yourself!

the process is a bit convoluted! make sure you make backups.

pavlova was the first pet i successfully managed to do this with, and i still have an older version of his file, so i'll be using him as an example here.

open the file in a hex editor, and find the YALP section. the first section we're looking for is just above that: the list of breedfiles in the ancestry that the game pulls when bringing out the pet.

replace the name of the breed in the list with the original breed you're using. if the new breed is shorter than the old one, delete the extra bytes after typing ".cat" or ".dog" (highlight the byte after them and backspace). if it's longer, switch to insert mode and insert the extra characters in the filename so you don't overwrite anything else in the breed list.

before we move on to the other parts of the file, check these bytes, the first ones after all the 00s above if it's the first breed in the list, or the first two byes after the .cat or .dog in the breed before that one in the list if it's after that. this is the breed ID. we'll need to replace this with the ID for the breed we're replacing the hexed one with, but record it for later.

the breed ID for the Siamese is EC 03, so replace the breed ID in the file with that. (you can find all the original breeds' IDs in my genetic values reference list.)

now, check the byte after the breed ID. if the breed you're using to replace is the same length as the breed you're replacing, don't touch this. if it's shorter, take the difference between the two names, and subtract that from this number. for example, if the breed you replaced had 8 characters, and the new one has 6, subtract 2 from the number (remember to use a hex calculator!) if the name is longer, do the same, but add the difference in characters.

at this point, you can play with the pet without the hexed breedfile without issue, but it may throw an error if you try to breed the pet, so we're not done yet. search for the hexed breed's ID in the file. we're going to replace the genetic traits from the hexed breed in the file with an original breed's traits.

now, you have some options here. pavlova doesn't really look anything like a Siamese, and replacing these values with the Siamese ID would cause him to throw Siamese kittens, which might be fun, but if you're looking for consistency, you may want to replace the ID with one that's closer to the base of the hexed breed. the Stripes breed seems like it was probably based on the Calico, and pavlova already has Calico ancestry as well, so we're going to replace each incidence of the Stripes ID with the Calico one. the Calico ID is E9 03.

once all the IDs have been replaced, we just need to account for the checksum. previously, this would be an ordeal, but Reflet has released PetzByte, which recalculates the checksum for you, so save the file in the hex editor, download that and either drag the pet file onto it or run it from the terminal with the pet filename as an argument. once you get the success message, you can open the game and play with your pet without needing the hexed breedfile!

changing the base personality breed of a pet

shortly below the beginning of the pet's file, you will find the breed name and the filepath to the breed. replace these with the name of the breed you want to change the pet to. zero out the extra bytes after the new name if it's shorter. if it's the same or longer, you don't need to do anything else here.

(NOTE: if this is an AC pet originating from petz 5, if the name is shorter than before, you may need to delete the extra bytes after (select the byte after them and hit backspace). i've only ever had to do this with one pet in particular, so if you're working with an AC pet from petz 5 and it keeps reading as corrupted after zeroing out the bytes, try doing this.)

if this is a mixed breed pet, follow the steps above for changing the breed name and ID in the breed list above the YALP section. if it's an AC or purebred pet, there won't be a breed list there, so no worries. either way, though, follow the steps above for changing the ID in the genetics as well!

one last step: search for the ID of the breed you're replacing after the genetics section. this is the pet's internal breed ID for the base personality breed. switch that to the one you're changing it to.

and you're golden! just save the file and run it through PetzByte, and the pet should now use the new base breed as its base file (and change to that base personality if it's different. yes, you can use this method to change the base personality of a pet if you like).

(hi out there!)