Nope. It's unreal engine.
Also, I accidentally launched it, and it has a broken EULA. You can't decline it, it just tells you to accept before you can continue. I'm not trying to continue, I'm trying to QUIT
grabbed another 2009 game for the wii: "Pipeworks bundle v1.03 (big endian)".
JUST HOW DEEP DOES THIS RABBITHOLE GO? AM I GOING TO HAVE TO BECOME THE OFFICIAL EXPERT ON THE PIPEWORKS ENGINE?
Another 2008 game: Pipeworks bundle v1.03 (big endian).
let's see. They released a gamecube game back in 2002. is that Pipeworks v0.01?
"Pipeworks Bundle File version 1.18"
WHAT?
Why is the 2002 GameCube game showing versions that are newer than the 2009 games?
Monopoly (2010) for the PSP:
"Pipeworks bundle v1.13 (little endian)"
Yep.
they made a free-to-play match-three game with a Godzilla license in 2014. Let's check...
Nope, unity.
Night at the Museum: Battle of the Smithsonian, 2009, Wii:
"Pipeworks bundle v1.03 (big endian)"
Godzilla: Unleashed, 2007, wii:
"Pipeworks Bundle File version 1.4"
I suspect this game doesn't use the whole engine, and may just use the bundle files. It has a non-standard layout.
One similar to Destroy All Monsters Melee, in fact, which makes me think they reused some code.
Godzilla: Save the Earth (2004), for PS2, uses "Pipeworks Bundle File version 1.3".
1.3! This is the earliest game I've seen using Pipeworks, and it's got a surprisingly late version number. Weird!
interesting find: the "Colossal Kaiju Combat" games licensed the Spigot engine from Pipeworks. So if they are showing some of the same files, then it's gotta be Spigot.
Time to find out. 5$ to find out
"Pipeworks bundle v1.30 (little endian)"
It's got the .pvd/.pvm files and everything.
This is 100% the same engine.
Started building a wiki page listing all the versions and such.
here's the really fun part:
they clearly were fine with licensing out their spigot engine, given that they licensed it to that kaiju game.
How many other games did they license it to, and it just never was mentioned anywhere?
So they made a few demos (for the xbox) with Microsoft prior to announcing their "first" Spigot game. I don't think those demos were ever released, they were just shown as promos for the Xbox.
It's possible that's where Spigot came from. Maybe they built the engine for that, then reused it for their Godzilla game.
if I see one more place where this code is like "(if x!=0 && x!=0xFFFFFFFF)"...
LEARN TO USE ONE SENTINEL AND STOP PRETENDING -1 IS A POINTER
@foone save your sanity and use one of the plugins that lets you use Python 3 instead of 2!
https://github.com/justfoxing/ghidra_bridge
https://github.com/mandiant/Ghidrathon
https://github.com/jpleasu/ghidraal
@foone wat.
How do you even get that through an optimising compiler?
@foone Something like a Duff's Device?
Good. Now fix the decompiler.
@delroth Will do!
Although, haven't ya'll done a comprehensive survey of Wii/GC games? Seems you could script extracting the .elf and then using readelf to check for debug symbols without too much difficulty.
@foone GC/Wii games don't typically come with ELF files :-) The standard executable format for those consoles (DOL) doesn't have any kind of symbol section. The Wii SDK has some amount of dynamic linking support (REL files) but only imports/exports have symbols there (think DLLs).
So usually when we find symbols it's either weird game engines with their own executable format, or forgotten files on the disc image master (e.g. "framework.map" in Zelda: The Wind Waker).
@foone either that, or dead files that were actually converted to DOL but still kept on the disc image for whatever reason (someone forgot to `make clean`). I've seen both, usually more of the latter.
Sometimes you can get lucky and the ELFs are even debug builds!
https://wiki.dolphin-emu.org/index.php?title=Ships_with_Debugging_Symbols has a bit more details for each game.
Or, sometimes the developers forget a Windows version of the game on disc... https://tcrf.net/Pikmin/Windows_Executable
@delroth huh, yep. The elf file is completely superflous, the game runs fine without it. good to know!
Although now I'm wondering if the .elf and .dol files are definitely in sync. I may be reversing an old version of the code!
@foone: There are sometimes good reasons to use multiple sentinels, though.
One of my favourite pieces of Now Ancient Tech is the Pick database system. It popularised (well, for a while) the use of structured data by way of multi-level separators. But one effect of that is, as you're scanning along a data field, there's a bunch of different sentinels you may need to detect and recognise.
@foone Have you checked to see what the Nintendo Wii does if you *do* use -1 as a pointer?
Maybe there's some arcane use of it (My guess would be to indicate when the Wii switches to GameCube Compatibility?).
@foone how's Wikidata about those? I would love to see that be the source of truth for connections like these as it's easier to deal in facts that narrative… in theory.
(How to handle merged/split/renamed/absorbed companies makes things complicated.)