Well, unfortunately this project is going to have to be put on hold. Don’t blame me, blame my employer: I’m having to spend all my spare time working stuff that will help me get another job. Hopefully one day I’ll come back to it, but I don’t have any idea of the timeframe for that. Any animation / digital effects companies want to give me a job as a pipeline software engineer?
You know those tight little rollercoasters that surprise you when they make an incredibly sharp turn that you weren’t expecting? I’m trying to follow the t7g exe file in OllyDbg, and it’s a bit like that. I’m not really at the stage where it’s useful, it’s just for fun and to try out OllyDbg. Though hopefully it’ll all soak in by diffusion as I stare at the screens of assembly language…
Despite thinking that I would not get a chance to do anything with the project this week, I have. I’m slowing collecting reversing tools and information, and I’m making progress. I should point out that, at the moment, I’m only studying my extract_gjd tool, but I’m getting much more to grips with the way IDA works, and some of the basic processes involved in reversing. I’m still a little confused by what the first few lines of assembly do (in seemingly every program), but I can pick out most of the rest. I’m pretty sure it’s just a case of getting my head properly screwed on and really sitting and working at it.
I’m currently getting through the Reversing book that I mentioned in a comment to my last post. I realized early on that it wasn’t a magic wand, the process is still going to involve a lot of learning-by-doing on my part, but it certainly puts me on the right track and has some helpful tips (even though it is directed at Win32). The problem is that I’m reading an electronic copy from our Uni library, and I’m much slower at reading electronic books (and find it less pleasant): it’s not too expensive, I might have to buy a copy.
Have RL events to attend to for the next couple of weeks, then I’ll be back to it…
I’ve been staring mindlessly at assembly language for hours. I’ve got a book, and I can figure most of the stuff in there, but when I try and translate that to the T7G exe, it seems worlds apart. I’ll try and find a reverse-engineering book in our uni library tomorrow, hopefully if a book is coming from the same angle as me it might help.
Forlorn.
The video above celebrates the fact that my “engine” can now pull a vdx from a gjd directly and play it (previously, in case you haven’t been following, I had to extract the vdx with a command line tool first).
Enough with procrastinating. Now I have no excuse but to attempt some disassembly. Well, I could work out how to do sound / xmidi, but I think I’ll save them for later.
So I’m just about to turn off Google Desktop, in case it overwrites the part of the hard disk that the files were stored on.
I mean, how often do I need to search for files on my computer anyway? It’s not like…
Hmmm.
It lets me search for strings inside, for example, source code files. Does that mean it stores cached versions of those file?
Bingo!
OK, I don’t have them all back, but the only ones I’m missing are the detection files and the makefile, which should be a piece of cake to do again.
I may have to keep google desktop for at least a little while, if only to say thank you.
This could be my last post for a while. I have been exceptionally stupid, and managed to delete my entire engine. I’m not gonna go into details of how I did it, it’s far too depressing, but I’ve tried “recover” and “e2undel”, to no avail. I’m now in the process of grepping my entire hard drive (which has to be done in 100MB blocks, otherwise grep runs out of memory) to see if anything is salvagable.
Suffice to say, if I get everything back up and running again, or if I have to start from scratch (my last way-point was my empty engine), I will be setting up a backup system, probably an svn server.
Grrr.
As expected, the problem was with me being a muppet. When telling it the length of the data (for example, for the initial still image), I was giving it the length of the compressed data, rather than the uncompressed. So it was only getting partway through. Now it works, yay!
Where to go from here. There are a number of options:
- Get it to read this vdx from the gjd file
- Get it to play back the sounds from this vdx file
- Try playing back the xmidi files
- Start reing the executable
Although it may seem like I’m procrastinating (hell, of course I am, disassembling still scares me), I’m gonna sort out reading the vdx from the gjd. Everything is stored in gjd files, including the xmidi files, and I think it will be good to get me into the C++ mindset.
Got the timing working. Problem is that now it’s running slowly enough for me to see artifacts. *sigh*. It’s easier to fix them when your program outputs every frame as a bmp. Maybe I’ll get scummvm doing that…