Email or username:

Password:

Forgot your password?
Top-level
Foone🏳️‍⚧️

WFSaveGame > GBSaveGame > SaveGame > SaveGameBase > GuiPopup

STOP ALL THE INHERITANCE

18 comments
Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

who could have ever predicted that a class named "Matrix4" would be 64 bytes?

(It was either that or 128 bytes)

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

ahh, GraphicsDevice extends _GraphicsDevice
this is fine and I'm not screaming at all

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

also this compiler (Metroworks CodeWarrior for PowerPC) loves generating global floating point literals in the binary and then NEVER MERGING THEM

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

do you know how many copies of float 0.0 and 1.0 there are?

I DON'T BUT IT'S AT LEAST FIVE

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

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.
And you can initialize a 4-byte variable to integer zero without needing a literal global... so you should be able to do the same for floating point zero!

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

I don't know why I'm saying the compiler should be more optimized. That'd make my job harder.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

oh hello
00000000 and 3F800000, fancy meeting you here.

(floating point 0.0 and 1.0)

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

I may need to force quit Ghidra. that's not good.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

hey I found a list of supported platforms in the binary! it includes: Wii, PS2, DX9, PSP, X360, and PS3.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

if ((((bVar1) && (bVar1)) && (bVar1)) && (bVar1)) {
_aligned_free(this->field1_0x4);
}

I was gonna ask "are you okay, Ghidra?" but nope, the disassembly matches. the fuck happened here, optimizer?

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

if (filename == (String *)0x3) {

NOPE NOPE NOPE NOPE NOPE NOPE "3" IS NOT A VALID POINTER TO A STRING. EVER

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

they do a weird thing with picking puzzles: they seem to pick like 13 of them, but the game only uses 4-6.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

they also do some very weird shit with copying them around in RAM. like, I can see them overwriting my changes.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

I think I've figured out how codewarrior works:
every time you write a number in your code, it uses up 4 bytes in the binary.
so if you write "1.0 + 1.0 + 1.0 + 1.0", that's 16 bytes right there.

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

oh god I think this game's Quad class initializes some of the points to negative NaN

Foone🏳️‍⚧️ replied to Foone🏳️‍⚧️

amazing moments in compiler optimization:

if (param_1 != (GrQuad *)0x0) {
if (param_1 == (GrQuad *)0x0) {
return (GrQuadBase *)0x0;
}
}

Go Up