people who put checksums in their game's save files hate fun
23 comments
for some reason there's some code that does profile_number % 6 arg. and so I have two classes. one subclasses the other, for sure. But which is which? I can't tell. one of them is, I'm reasonably sure, 342944 bytes. WFSaveGame > GBSaveGame > SaveGame > SaveGameBase > GuiPopup STOP ALL THE INHERITANCE who could have ever predicted that a class named "Matrix4" would be 64 bytes? (It was either that or 128 bytes) ahh, GraphicsDevice extends _GraphicsDevice also this compiler (Metroworks CodeWarrior for PowerPC) loves generating global floating point literals in the binary and then NEVER MERGING THEM do you know how many copies of float 0.0 and 1.0 there are? I DON'T BUT IT'S AT LEAST FIVE it's especially weird for floating point zero. I don't know if you know this, but the IEEE-754 encoding of floating point zero is just that: zeroes. I don't know why I'm saying the compiler should be more optimized. That'd make my job harder. oh hello (floating point 0.0 and 1.0) hey I found a list of supported platforms in the binary! it includes: Wii, PS2, DX9, PSP, X360, and PS3. if ((((bVar1) && (bVar1)) && (bVar1)) && (bVar1)) { I was gonna ask "are you okay, Ghidra?" but nope, the disassembly matches. the fuck happened here, optimizer? if (filename == (String *)0x3) { NOPE NOPE NOPE NOPE NOPE NOPE "3" IS NOT A VALID POINTER TO A STRING. EVER they do a weird thing with picking puzzles: they seem to pick like 13 of them, but the game only uses 4-6. they also do some very weird shit with copying them around in RAM. like, I can see them overwriting my changes. I think I've figured out how codewarrior works: oh god I think this game's Quad class initializes some of the points to negative NaN amazing moments in compiler optimization: if (param_1 != (GrQuad *)0x0) { |
the dirtiest secret you find when reverse engineering games is how many implementations of String they have.
This one is at least 3, plus it uses some stl so there's probably an std::string somewhere