pokewalkers >> swifty's hq v2.2 > main > blog

<< Demystifying Catz for the GBA >>
posted on 09.12.24
portrait

(some of this was posted to my cohost account prior to shutdown.)

catz for the gba is one of those games that might be considered 2000s bargain-bin quality. this is one of those games that got hit with the generic petz series label beam on introduction to foreign markets. thanks ubisoft, for that one.

("petz? like those animals made of ballz?" well, yes and no.)

that said, i was obsessed with animals, but especially petz - and i spent a lot of time playing this title regardless of its status as 'part of the official petz franchise'. it has genuinely cute spritework, and the veranda theme is well liked among those who have touched the game at all. it's really charming.

you play the main character, a child who is really clumsy with animals. after a chance encounter with a mysterious blue-haired girl, you convince your parents to buy a cat. from there, you get 14 days to train your cat's stats as high as you can. depending on your cat's stats at the end of your 'trial', you will get one of many endings.

the thing is... no one knows how many endings there are. even the gamefaqs guide only details a few of them! it's a total black hole of knowledge, which certainly isn't helped by the game's relative obscurity.

that is one of the main reasons i initially wanted to look into making catz (gba) a retroachievements set. it's a game i had a lot of fun with as a puppy, but no one really knows the details on some of its inner workings... and, with some assistance from my good friend puroseki, i have figured out ways to poke into the code.

took a bit of figuring, but here's how i got it set up:

on the left is RALibRetro, built for code inspection. i've been tinkering with this for a few days now, poking at internal values to see what they do.

the process is thus: i start a new search, i turn on continuous = filter (meaning 'remove anything that changes while it's scanning'), then i do an action and do a single search for parts that have changed (using the '!=' filter) since the last search. from there it's about finding variables that look suspicious and changing them.

i also make sure to back up my findings to a spreadsheet...

as a sidenote, the game is really good at staying stable, actually. changing the cat species past its maximum value causes the sprite to bug out and the breed label to read in the wrong parts of the code:

and i won't embed this one, but i did get the money to overflow in a way that caused it to freak out. click to watch the numbers flicker around (flashing warning). and it displays funny in the main stat screen, too.

i still have no idea how cutscenes are determined. i did find out how to max cat stats, but there's another variable tracking how many times you've interacted with your cat, and another still that seems to count down from 05 to 01 (and stops there) every day whenever you pet your cat. it's sooo weird.

i also found the map variable (which, if i change it, breaks the tileset...) and a variable of what the next room you visit will be (useful for teleporting, only has five or six values total). it's so cool and it makes me want to delve deeper in the code just to see what else no one has seen.

anyway, that's all for now. i look forward to making another post about the game!

forest's signature

<-- back to index tags... article games