Reverse Engineering Star Wars: Yoda Stories

Star Wars: Yoda Stories with a modified tile set

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.

22 thoughts on “Reverse Engineering Star Wars: Yoda Stories

  1. 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.

  2. 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?

      1. 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.

      2. 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/

        1. 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.

    1. 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!

  3. 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…..

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.