Categories
Archives
- September 2019
- May 2019
- March 2019
- February 2019
- January 2019
- April 2018
- February 2018
- August 2011
- July 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- October 2008
Reverse Engineering Yendorian Tales: The Tyrants of Thaine / Book I: Chapter 2
I’ve recently (re-)started a little pet project to reverse engineer the Yendorian Tales games.
I made a small attempt at this in a VB6 project over 10 years ago, but with the advent of web technologies and a desire to learn them doing something fun, I’ve given it another go.
I’ve been able to tackle the following in quite a short period of time:
- Wall textures
- Floor textures
- Almost the entire colour palette
- Creatures
- Found the first map in world.dat and a basic understanding of the data structure
This is also a chance to work with some libraries and technologies which I don’t usually get a chance to play with:
- DataStream.js – A JavaScript library for dealing with binary data. One of the nice features of this particular library is that you can write configurations to load the binary data into objects. This feels a little closer to the good old days of loading a chunk of data into a struct in C/C++
- Three.js – A great 3D Library with many useful features out of the box. It has renderers for HTML5 Canvas, WebGL and SVG. As a past enthusiast of 3D graphics programming, I’m looking forward to this part immensely
Overall the goal isn’t too ambitious. I’d like to simply create a rendering engine to explore the first level of the game.
Here is the important thing however. While I could just grab all of the necessary data, convert it all to modern file formats and throw it together to create a demo, I want to load the original game files and work with them just as the original game would have. That’s the fun part 🙂
Here are a few exports, plus a GIF I crafted (No such animation support yet):