This time, I started by disassembling the EXE using Ida, and was able to identify the overall structure of the files. Once I knew how the level files are laid out, I was then able to make targeted changes and observe the result when running the game, which helped fill in most of the gaps, alongside more disassembly. What also helped a ton was a good number of debug log strings left in the code by the devs. (cont.)
Conversation
Notices
-
Niko (lethal_guitar) (lethal_guitar@mastodon.social)'s status on Friday, 20-Sep-2024 17:08:53 JST Niko (lethal_guitar) -
Niko (lethal_guitar) (lethal_guitar@mastodon.social)'s status on Friday, 20-Sep-2024 17:08:53 JST Niko (lethal_guitar) It even still calls the OutputDebugString API, so when you run the game with a debugger attached, you can see all these log messages!
Here's a selection of some funny messages:
"You madman! You're running a 24-bit desktop! It'll be slow.."
"Created Too Many Models! TALK TOO [sic] TIM NOW!!!"I'll probably put this on pause for a little bit, but intend to continue at some point - I'd like to at least get 3D models displaying in the level viewer, and ideally figure out the lighting system.
-
Foone🏳️⚧️ (foone@digipres.club)'s status on Friday, 20-Sep-2024 17:08:53 JST Foone🏳️⚧️ @lethal_guitar very cool!
-
Niko (lethal_guitar) (lethal_guitar@mastodon.social)'s status on Friday, 20-Sep-2024 17:08:54 JST Niko (lethal_guitar) Been doing a fun new reverse engineering project: Figuring out the file formats of the 1999 Windows/PS1 game Attack of the Saucerman. It's the first time I'm doing this on a 3D game. I'm now at a point where I can partially display the levels, and extract most of the assets:
https://github.com/lethal-guitar/SaucerMapViewerI already made an attempt many many years ago, but was only armed with a hex editor at the time and couldn't make any sense of the data. (cont.)
-