Star Wars: Yoda Stories was released by LucasArts in 1997 to minimal critical acclaim. As IGN said, “like Phantom Menace proved, just because it’s Star Wars doesn’t mean it’s good.” This didn’t stop [Zach] from playing it, and years later, taking an interest in reverse engineering the game.
[Zach]’s reverse engineering of Star Wars: Yoda Stories (google cache) takes a look at the game’s data file. This binary file is parsed by the game at run time to extract sound effects, sprites, and map tiles. Perhaps the best known game data file type was Doom’s WAD file, which had purpose built editing programs from third parties.
After a quick look at the data file in HxD, [Zach] began writing scripts in C# to extract different sections of the data file. Once the sections were found, more code was used to apply a color palette and generate bitmaps.
In the end, [Zach] managed to get a couple thousand tiles of the game’s data. He found some interesting ones, such as the sports car that he replaced the X-Wing with in his mod. The engine for an earlier Lucasarts game, Indiana Jones and His Desktop Adventures, should be very similar, and once we find the Mac install disk and a copy of ResEdit, we’ll post something on Hackaday.io.
Did you kill his poor webserver?
I loved this game as a kid! It felt like minesweeper but fun!
Same here. I almost forgot about it until I seen that image, then all those wasted hours in front of the PC playing this and the Indiana Jones one like it came rushing back.
If you use ‘cut’ on the sportscar, Mew will appear.
But, you have to have been traded a Droid that knows cut from another moisture farmer. One who the sand crawler had already visited.
You can’t do this so simply. Trying to get Mew this way will trigger the Buryman script.
Nice work. I’ve been doing a similar thing with the game data files from SimCopter by Maxis. Reverse engineering binary files makes for a really good brain puzzle… you know the data is in there, but how do you get it out?
I’d love to know what you’ve found in there. One of my favorite games of all time. The SC2k integration was amazing for it’s day.
Now you’ve got me eyeing the pile of disks where my copy is. I spent so many hours just playing the demo and then when I got the full copy and could fly around my own cities! I never quite cracked importing my own music into the game though.
Well – I was able to get the texture images and the model geometry out (with vertex colors). Strings were stored in Win32 executable resources. Got stumped trying to map the textures onto the objects – it should have been trivial but the few remaining bytes I couldn’t make fit into IEEE floating point or anything else reasonable for s/t coords. Never managed to decode the weird format for storing the “models” for people and animals… they appear to be made out of point sprites or something equally bizarre.
My hard work was validated by the ability to use the same tools to extract textures and models from “Streets of SimCity”. I set out to write a full engine replacement, but then there’s so many projects and so little time…
http://code.google.com/p/miscopter
One nice outcome of this project though is that I got sidetracked on the Bink .smk smacker video format. SimCopter used this quite heavily, from full-screen intro movies, to animated menu backgrounds, city previews / flyovers, and even the drive-in movie theater scenes. I found a description of the file format but the only opensource decoder was part of libavcodec, pretty unsuitable for game usage. So I wrote my own. Now it’s being used by a Caesar 3 engine rewrite, and a Jagged Alliance 2 one as well : )
http://libsmacker.sourceforge.net/
Ok,that’s way over the top of my head but nice work.
I was wondering what video format they used for the drive in movies. IIRC Tony Hawk Pro Skater 2 used Bink for it’s video format too. Though I think the music was in a DAT file of some sort.
Hackaday likes to treat the really hard stuff like you are making a ham sandwich :( They just assume we all have EE degrees and know 20+ defunct coding languages. You see how hard of a time they are having with a simple password storage dongle, so don’t feel bad. I would say that there are several trainer creators out there still that make this a bit easier by giving you changed hex values etc (it was like early game genie for pcs) so you start to get some idea where things reside once extracted, and you go into the rabbit hole so they say. I did enjoy this write up even though I never got into yoda stories like some did. Most of the stuff I did came from the koei jrpg games so it probably differs greatly from more current things. You can also seek out an older game with 3rd party or built in editors to get you inspired. Sometimes it sucks to sit there playing a single chord all day and ya just want to jam out some power chords :) Best of luck!
Yeah, reading this kind of makes me want to go back in and do that kind of thing again. Last game I mucked about with, I found a small line hidden that said something along the lines of, “Naughty hacker, do not mess with my program.” or some nonsense. I found it humorous that there was any “protection” at all as the game was never really that popular and targeted at the younger kids.
Now that I think about it, I never did figure out how to change the mouse values…..
All DRM is pointless “protection” anyway. Why not put something fun in there instead?
Was the game “Galletron” on the ZX Spectrum? This might be the message you remember: http://tcrf.net/Galletron_(ZX_Spectrum)
If it isn’t you should try looking up the game you did see and add to an article on that website (tcrf.net). Or make a page if there isn’t one. They could always use more interesting articles and bits!
Zach is also the author of Ruckingenur, a great RE game.
That car in the game I believe is supposed to be the one from the movie Corvette Summer, http://www.imdb.com/title/tt0077372/
The mighty internets rumor mill has the movie famous (or infamous?) for being the movie that Mark Hamill got in a car crash during filming where he received some scars on his face that appear in later star wars movies
Relevant trivia: Yoda Stories was made by Hal Barwood, who was also writer/producer of Corvette Summer.
Someone should take these sprites an throw them into a https://github.com/mozilla/BrowserQuest … no, Disney should do that ..
lol, I did the same for mass effect 3 (and other games) and nobody cares, so why does such a cheap RE get to HAD frontpage?! weird…
Now, the true reverse engineering in videogames is the project OpenRCT2 (https://github.com/IntelOrca/OpenRCT2/).
It is An open source clone of RollerCoaster Tycoon 2 built by decompiling the original game one bit at a time.
But Hackaday was a page about hardware, isn’t it?
Reminds me of an Indiana Jones game for Win95… probably the same engine
Yeah, the engine for an earlier game, Indiana Jones and His Desktop Adventures, should be very similar, and once we find the Mac install disk and a copy of ResEdit, we’ll post something on Hackaday.io.