Chances are, if you've played the PC version of Final Fantasy VII, you've run across—or at least heard about—any number of patches, utilities, and/or other tools for this port of the best-selling PlayStation game. Many of the best-known projects come from two programmers who have long been mainstays in the FF7 hacking and modding scene—Qhimm and Ficedula.
Qhimm is perhaps best known for his release of jedwin's original Chocobo Patch, which has even been linked to from Eidos' own support pages (without Qhimm's permission, unfortunately). He has also made various utilites for the PC ports of FF7 and FF8, including the save file editors Jenova (available here on the Citadel) and Griever, as well as the FF7 PC apps Jenova*Birth, FF7SND, and Gast.
Here on the Citadel at least, Ficedula's most famous for Cosmo, a powerful field map and script viewer that allows one to see every single background and bit of dialogue contained within FF7. Naturally, many a Citadeler has used Cosmo in their quests to unravel the various mysteries from the game—sometimes discovering new ones in the process. Among Ficedula's other FF7 PC apps are Cetra, Ifalna, FF7Midi, and Zangan.
This interview took place over AIM in July 2005. Before we begin, I would like to thank Qhimm and Ficedula for their time and courtesy.
FF7 Citadel: How did you first get interested in programming?
Ficedula: Well, I didn't get a PC until I was 11, and there was no internet access at that point, so no downloading things; all you could do was what you had on floppy, which meant Doom and QBASIC. So for the first few years after I got the PC, I did quite a lot of BASIC programming. We had the same setup at school; all the programming was in BASIC too. Basically, programming was just a good way to hack about on the PC to try and make it do neat things, especially at school. The average computing lesson you could finish in about half the time if you knew what you were doing, which left you with half an hour to just play about with BASIC.
Qhimm: Heh, ironically I guess I was around 11 too (so rather late in the early home computer era). I had just gotten my hands on a 386 PC and played around in QBASIC.
FF7 Citadel: What sort of things would you do with BASIC?
Ficedula: Everybody—including me—tried text RPG's, although none of them ever got anywhere. I wrote a chat app for the Novell network, too, which was really pretty useless because all the computers were in one big room to begin with! But everybody used it anyway.
Qhimm: I wrote reasonably simple stuff in BASIC, but I did at one point write a program which directly interfaced with the printer via the parallel port and plotted out a small butterfly on paper.... I was a really, really troubled kid ;)
FF7 Citadel: What other programming languages have you learned since then?
Ficedula: By the time I was 16 and starting A-levels, the school started using Delphi, and I got an internet connection at home as well, which helped. The older versions of Delphi are usually available for free, so I used that at home too.
Qhimm: Some years later I tried Visual Basic, first on Windows 3.11 and later under Win95... but I couldn't really keep motivated since the language was still very limited. I didn't touch Delphi or any other programming language; I think I had some mental idea of those languages as being "unpure" ;)
Ficedula: Heh ;) Nothing else for me until university, where they make sure you know all sorts—Java, SML and Prolog to start with. Java mainly. Oh, and some assembler and C, although they skip over that pretty quickly. Delphi's still my main language—mainly because it's the preferred language at the company I work for. Although, I've been catching up on some more C in the past year or two, mainly because you need it to develop for the GBA and DS.
Qhimm: Basically my programming was at a low until early 1999, when I forced myself to try and learn C++ after finding an old version of Visual C++. Since then, I've gone through high school and university learning academical standard languages like Java, LISP, and Scheme. I learned Intel assembler on my own, as a hobby. Basically though, any language I actually use seriously (and not just because I'm forced to by school or work), I've learned on my own, and only went through classes later.
Ficedula: That's almost true for me, although Delphi is the exception—I learned that at school, and kept on with it because I liked it (way) more than Visual Basic.
FF7 Citadel: So both of you make a living as programmers?
Qhimm: Not me. I'm still in university, coming up on the final year of my Master's degree. That's why I'm in Japan actually, as an exchange student—I'm going back to Sweden in about a month to continue my normal studies.
Ficedula: I'm head of development for a software firm here in Lincolnshire (UK), so yes—essentially a programming job, although I have to manage a few other programmers and deal with support calls too. I liked university a lot, but I don't think I could have coped with the extra study for a PhD, or the extra costs—it was time to start earning some money once I graduated ;)
Qhimm: I have an employment agreement with a local firm pending the completion of my studies, where I'll end up programming network administration tools. Not the dream job, but a decent start :)
FF7 Citadel: Good to hear you have something lined up :) Now, why did you start writing utilities for Final Fantasy VII?
Ficedula: Partially boredom ;) I bought FF7 PC in 1998, and I absolutely loved it—it was the best RPG I'd ever played. After taking my GCSE's that June, I had absolutely no work for the rest of the summer. This was still just before I got internet access, so after I completed it, I spent some time hacking around with the LGP files. A long summer with no 'net access gives you plenty of time to get stuff done, basically ;)
|A good excuse to learn C++:|
Qhimm's save file editor Jenova
(click for full-sized image)
Well back in the earlier days of FF7 PC, I was hanging around usenet, being a general newbie fresh on the internet. I had just played FF7 PC, and it blew my mind (it was the first RPG I played), so I was looking around the web for tools and information on how to get more out of it... and essentially I noticed that almost nothing existed. This was now into early 1999, the same time I got hold of my first copy of Visual C++. I figured that such a motivating goal (creating a tool) was a good way to force yourself to learn the C++ language too, so essentially I started writing my save file editor, Jenova, in a language I had never used :) It turned out, well, not a complete failure anyway, so I released it with a post on usenet in May '99. I didn't really have a website back then, just a page with the downloads. But I kept working a bit on Jenova, and also sparked some usenet discussions on actually decoding the game content itself, not just the save files. This produced the other early FF7 tools during 1999. I believe I also put up a very small, ISP-supplied bulletin board on my site, which attracted a few other brains. I later moved on to FF8 PC, and started decoding things even before its release (via the demo files).
I didn't really hook up with any other people until 2000, when I stumbled across Qhimm's site while looking for the FF8 music patches. (By this time I was at uni so I had regular 'net access.) I downloaded the FF8 Configurator, helped Dag Sverre fix a soundfont problem, and then afterwards I mentioned I'd written an LGP viewer myself, like Qhimm. After foolishly promising I'd be able to make it edit LGP's too, rather than just read them, I essentially just spent time hacking around until I made it work; now I was committed ;) Luckily, the first year at uni gave me enough time for things like that. But basically, I ended up writing the utilities because it was a great game I loved to play with, and there was the community of people interested in it at Qhimm's—that's why I never progressed my programs much until after joining Qhimm's forums.
FF7 Citadel: Are you still working on your programs these days?
Not much—I never really had the patience to decode the file formats, anyway; my programs just ended up getting used because I was usually the first person to kick out a visual app for viewing or hacking the files, usually after somebody else did the preliminary work of working out the file formats.
I eventually got more and more busy with school, so these days I don't really release actual programs any more, just occasionally help with decoding things. I guess me and Ficedula sort of complement each other, even though we haven't really actively worked together on any project.
FF7 Citadel: Have you considered working together?
Well, due to the nature of the community of FF7 hackers, people have lives and wildly different schedules. Intensive discussions only occur sporadically, and typically you just work on your own anyway and then share progress. So it's usually a more relaxed concept than two people working together on a project. You sort of toss the ball between each other.
It's more like whenever somebody discovers something, it gets put up on Qhimm's forums, and everybody can try and take it one step further. Two people working together wouldn't end up being much different, because 95% of the time would just be sitting down hacking away at things anyway.
FF7 Citadel: Is there anyone currently working on FF7 hacks that you'd recommend?
Right now there are quite a lot of people working quietly on their own things, at their own pace. Every now and then someone makes a breakthough and it pops up on the forums, and maybe inspires the other people to pick up their work a bit too ;)
L. Spiro comes to mind; last week a "I've decoded the battle formats!" topic suddenly appeared (on Qhimm's forums), although I note that he cited Qhimm as a reference ;) (During the editing phase of this interview, Ficedula wished to add the following: "While it wasn't around at the time of the interview, this
is the sort of interesting link I think people would like—a project to
rework the battles in FF7 to make them more difficult. Seems to be
progressing pretty well.")
Mostly the hackers are split in half. There's the people that are mainly trying to decipher the various data formats and mechanics used in FF7. And then there's the second group, the people who are actually using this knowledge for something more than technical demonstration, like replacing 3D models or translating the game. It's a slow process though, since the first group is what makes it all possible, and we're mostly made up of people with not enough time to really fully decode things.
FF7 Citadel: How useful are things like the Debug Room in understanding how FF7 works?
|FF7's 'higher level' file formats:|
Ficedula's model viewer Ifalna
(click for full-sized image)
I've generally been more involved in the 'higher level' formats like the graphics, and the Debug Room doesn't enter too much into that (as much as any file format in FF7 can be described as high level!).
I've worked quite a bit on decoding the scripting used in FF7. The script really binds everything together (when you're on the field screen, at least), and the Debug Room was mainly created to specifically test the scripting. So it's quite useful when trying to understand the script, since it was specifically made to test all features of the "language". It's not as useful for other aspects of FF7 though, like data file formats or sheer mechanics. These fields have their own experts; Terence Fergusson comes to mind in the latter case.
FF7 Citadel: What's the most interesting thing you've discovered within the game's LGP archives and/or source code?
In game terms, I can't think offhand of too much surprising in the LGPs, other than the bits everyone knows about, like the unused dialogue in the field files. Technically... I was a bit mystified to find out it linked into OpenGL (the later versions, anyway) without actually using it. I think we determined it used OpenGL just to resize/reformat the textures and did all the rendering with DirectX? Although, with that said, I seem to recall hearing there was some sort of GL renderer in there, too; one of the problems with FF7 is trying to remember exactly what's been confirmed and what's still just rumour ;)
I'd say the understanding of the scripting actually provided the most interesting glimpses into the game, both positive and negative ;) But if you're asking for the most surprising thing, it's probably discovering that the game shipped with a complete graphics plugin system. It's like how you can switch between hardware and software rendering, but also being able to choose your own hand-coded renderer. If the exact interface for this plugin system was known, it would, for example, be much easier to write enhancements like higher resolution, texture filtering, etc.
FF7 Citadel: How is working with FF8 PC's files different from working with those from FF7 PC?
Well, FF8 is more well-written than FF7. That is to say, one reason FF7 PC has seen more progress is that it was badly written and often uses simple data file formats.
I've got FF8 PC—it was what got me into Qhimm's forums—but the only things I wrote for it were a very basic savegame editor for Chocobo World and helped with the FF8 Configurator/soundfont tools, so I know basically nothing about the file formats.
FF8's files are stored in a more complex manner, and honestly there is less demand and interest for FF8, when you can spend the time on FF7 instead :)
FF7 Citadel: I've noticed that with the FMVs. The codec FF8 uses is completely different, and (if I recall) you can't really play them straight from the game discs as with FF7.
FF8 actually uses a (more) standard codec, albeit a non-AVI one, ie. Bink. The videos are just encoded into an archive rather than stored directly on the CD. The FF7 codec is rather more unusual, as things go; they just packaged it into an AVI.
The FMVs are one example, yes. The other data files are stored in a more hierarchical (and in my opinion, weird) file system, which makes digging though it more work. Interestingly enough, when working with FF8 you get the distinct feeling the programmers now kept in mind not to make the game content too easily decoded. The save files were the obvious example of this "improved" attitude of the programmers.
FF7 Citadel: I noticed recently that the sound effects are stored as .wav files, just like FF7. That's the only major similarity I can see.
Yep. Also, in FF7 PC, a lot of files had been reencoded into new PC-specific formats, while in FF8 they mostly stick with the original PSX data.
FF7 Citadel: Are there any apps/utilites/patches, etc. that you'd like to create in the future?
Well, everybody would like
to create the holy grail of FF7: a new engine that ran the original data files ;) The idea pops up every year. Although, we do discover more of the file formats as time goes by, so maybe by 2010 (that's not a promise!). Mostly to amuse myself, I've been writing a field viewer (like the ones in Cosmo/LGP Tools) for the GBA, although this week I ported it to the DS.
Well, as I mentioned, I really like working with the scripting system. I've been working on both a script viewer and an actual script editor/compiler, but I wouldn't actually release the latter—it's too much power for the average gamer ;) Also indeed, the complete engine rewrite is sort of a holy grail, but you're also drawing dangerously close to legal issues :)
That's also true; I imagine if and when one of the translation projects finishes, that'll be a good test of how interested Squeenix actually IS in the various reverse engineering projects.
FF7 Citadel: What do you think of Square Enix's new FF7 projects (Advent Children, etc.)?
I'm certainly interested in Advent Children
; everybody seems to be worried AC is going to suck and ruin the whole FF7 storyline, but I think it's well worth waiting to see what it's like. We've been waiting for new FF7 content for 7+ years after all, and now that Square's producing some, we should at least try it out.
I see a lot of "purists" who feel that Square Enix is desecrating the original FF7 with half-hearted additions, but I think they should be enjoyed separately. AC looks interesting, and coming from Square a lot of people would probably want it just for that. Being set in the FF7 world hardly decreases that interest, which is why I'm looking forward to the other games as well. They might be cool or they might suck, but even if they do we'll still have the original :)
FF7 Citadel: There's been some controversy lately on the Citadel's forums, since some contradictions to the original FF7 have been spotted in Before Crisis.
Japanese media has never seemed to consider storylines as sacrosanct—look at the number of anime that release a new series which is a completely different take on the original.
Well, considering the scope of Square Enix's RPGs I would actually be surprised if they were able to squeeze several entirely new storylines into the same world without creating a single contradiction.
FF7 Citadel: All right, last question. If FF7 PC was reissued, what changes and/or improvements would you most like to see?
FF7 Citadel: Well, repackaged and made available to the public again. Maybe something with extras, like FF7 International.
We'd all like better graphics, but regardless of the resolution the game runs in, it's always going to be fairly limited by the low quality of the 3D models. I guess as far as technical improvements go, all you could reasonably expect to see is better compatibility (XP, etc). High-res graphics would be nice, but 500 polygon models never look smooth, even in 2048x1600. Other than that, there's not a lot to complain about. I guess shipping with better soundfonts would be nice, but it's hardly a big issue. In terms of content, it's hard to say what you could add without changing the game to the point where people didn't like it any more ;)
Well, regarding content I'd leave that entirely up to Square Enix. Like anyone else I would love a full remake (PS3 demo anyone?), but just better compatibility and use of modern GPU features would be a good start. If I could have a game that didn't crash and that could be run in a well-behaved window, I'd be pretty happy. There's a hack for the windowed mode as you may know, but it's not quite perfect. So I guess the main improvement we're looking for is for the game to run like it was intended: FF7 as a PC program :)
FF7 Citadel: Well, if there's nothing else you'd like to add, that's the interview! Do you guys have any closing remarks or anything?
Well, I'll let you know if I get anything FF7-like running on my DS, although don't hold your breath; the amount of programming I feel motivated to do after working all week is strictly limited ;) It should be interesting to see whether more people are interested in FF7 after the various new features get released; I suspect more of the technically-minded people who want to are already involved in the FF7 hacking scene, but you never know.
I don't know about closing remarks, just maybe to tell you that FF7 hacking is still bursting with activity after seven years. That's quite a feat for a game, to inspire such hard work.