Show older

okay yeah. this is not remotely delphi. this is C++. ghidra mis-detected it, and that may have messed up the analysis

yep and it's buggered every single function, even after changing language. I can delete and recreate functions, but that might not fix them because they're getting hints from downstream functions which it still thinks are __fastcall and not __stdcall

maybe I just need to delete every function and re-analyze from scratch

(i just re-imported the EXE as a new file, and I'll manually port over the dozen or so symbols I've found.)

BTW it turns out there's cheats in the windows version.

maybe in the other versions too? I don't think anyone has found them if so.

speedrun.com/super_solvers_giz

I spotted them in the EXE and googled to see if they were known. Yep. At least in that one post!

ah-ha!

see that?
They call GetVersion(), then no matter if it's below 4 or not, they jump to the SAME PLACE, and there's dead code below it.

This EXE has been patched after compilation!

yeah the EXE has a modification date of 1998, but the compile time inside the EXE says 1994

I think the typo in the name is a bug on my resource viewer

yeah, there's other dialogs like "you need to be in 386 enhanced mode!" that I think they just orphaned when they made this version win9x only

I just realized this is a game. fuck, half this should be on TCRF. I do not have time for that right now

well that sure is a fuck of a thing.
playing with the cheats and there's a pick-a-puzzle mode.
It looks like this.

the funniest part? that's an image. like, in the game. they just screenshotted an image and wired up some basic clickables. It's not a real dialog!

puzzle counts:
43 scales
40 electricity
33 energy
42 force
42 gear
20 jigsaw
30 "magnetizm"
20 simple machine

I should automate this and dump screenshots of all 270 puzzles

btw: at first glance, no evidence of cheats in the DOS version

the documented cheats are missing at least one: ctrl-w

I have no idea what it does besides print "beam me up sid" in the corner.

it does SOMETHING, I just don't understand what yet.

a linked list of fonts, indexed by number.

that's an interesting approach to font storage

found another byte-level patch:
there's a debug-printf function which has a hack at the top to set the first character of the printf template to \0

the game's EnsureFontLoaded function seems to be called with 2 font numbers:
15000 and 200

I'm sure that makes sense to someone

okay and I can spot a chunk index I sorta understand inside FONTS.DAT which specifies 3 fonts: 200, 300, and 15000

so it seems to identify chunks by a 4-digit character string (like NFNT) and a 16bit integer.

Very similar to what 3d Movie Maker does

so I think what's going on is these weirdos abused the 16bit linker to build their DAT files

that's why they're all DLL/EXE files

so it seems the NE files have multiple resource sections, and the first one has an index to get to the sub-chunk, and the rest are just in that order.

I don't know if they wrote their own NE executable header parser or there's some weird API for it that they're using

oh goody it emulates file numbers on top of the whole windows Handle thing.

so it's limited to 127 files open at once

okay yeah they're parsing their own EXE Files.

absolutely wild.

Borland Turbo C++: I know compilers who merge constant strings and they're all cowards

I think I found the "load this resource by type+ID" function.

I had temporarily named it "something_resource_something"

I have altered the gear puzzle
pray I do not alter it any further

it does nothing to stop you from just copying the files onto the PC and just changing the INI, and then it runs without CD:

[Gizmos & Gadgets! CD]
CDDrive=C:\Tlcwin\Ssgwincd\CD\Ssgwincd\

set your CDDrive to C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ to crash the game

I know programmers who use strncpy and they're all cowards

I thought I'd figured out where it loads images. Nope! This is for palettes.

looks like ASEQ is the image format.

Here, I've used it to make this electricity puzzle impossible

ahh, the most obscure of the electrical components, the zeppelin

Follow

@foone don't complete the circuit, it's full of hydrogen! Oh the humanity! :blobcat0_0:

Sign in to participate in the conversation
Pixietown

Small server part of the pixie.town infrastructure. Registration is closed.