Open main menu

Difference between revisions of "ScummVM History"

8 bytes added ,  10:29, 5 January 2010
(typos and such)
 
(One intermediate revision by the same user not shown)
Line 10: Line 10:
=== Beginning ===
=== Beginning ===


I have always been interested into understanding how games work, and I got especially interested into the [[SCUMM]] game engine at one point. It was possible to browse the resources using some fan-made tools, be nobody had wrote a full interpreter for those games. During holidays, in 2001, I had a lot of time on my hand, so I decided to get going and try to write a [[SCUMM]] interpreter. The first step was understanding the scripts. I took a few days looking at the scripts found in [[Maniac Mansion|MM]] and [[Zak McKracken and the Alien Mindbenders|ZAK]] (I assumed it was the same engine) and understood a large bunch of opcodes. Then I got into coding a tiny interpreter, making use of documentations found on the web to unpack the background graphics. This interpreter got as far as playing [[Maniac Mansion|MM]] character selection screen and [[Zak McKracken and the Alien Mindbenders|ZAK]] intro, but without any sprite/animations. I started working on this issue, and I got into interested by a document describing the sprite format used in [[Monkey Island 2: LeChuck's Revenge|MI2]]. Using this file with a little guessing, I managed to view the sprites used in [[Maniac Mansion|MM]] and [[Zak McKracken and the Alien Mindbenders|ZAK]]. For some reasons, I decided to mail the documentation author, telling him about my project and (if I remember well) asking for a few clarifications (I think it was about the "layer" system). The author (Ludde) answered me quickly and told me that he was also working on a similar project. While my idea was to start with the earliest [[SCUMM]] version and had features as they were chronologically added to the original engine, Ludde was focused on [[Monkey Island 2: LeChuck's Revenge|MI2]]. I quickly realized that he was way ahead of me, as the first screenshots he showed me was a more or less working [[Monkey Island 2: LeChuck's Revenge|MI2]] (the actual screenshots were from Woodtick). I didn't had to think much before dropping my own project and joining Ludde's.
I have always been interested into understanding how games work, and I got especially interested into the [[SCUMM]] game engine at one point. It was possible to browse the resources using some fan-made tools, but nobody had written a full interpreter for those games. During holidays, in 2001, I had a lot of time on my hand, so I decided to get going and try to write a [[SCUMM]] interpreter. The first step was understanding the scripts. I took a few days looking at the scripts found in [[Maniac Mansion|MM]] and [[Zak McKracken and the Alien Mindbenders|ZAK]] (I assumed it was the same engine) and understood a large bunch of opcodes. Then I got into coding a tiny interpreter, making use of documentations found on the web to unpack the background graphics. This interpreter got as far as playing [[Maniac Mansion|MM]] character selection screen and [[Zak McKracken and the Alien Mindbenders|ZAK]] intro, but without any sprite/animations. I started working on this issue, and I got interested by a document describing the sprite format used in [[Monkey Island 2: LeChuck's Revenge|MI2]]. Using this file with a little guessing, I managed to view the sprites used in [[Maniac Mansion|MM]] and [[Zak McKracken and the Alien Mindbenders|ZAK]]. For some reasons, I decided to mail the documentation author, telling him about my project and (if I remember well) asking for a few clarifications (I think it was about the "layer" system). The author (Ludde) answered me quickly and told me that he was also working on a similar project. While my idea was to start with the earliest [[SCUMM]] version and add features as they were chronologically added to the original engine, Ludde was focused on [[Monkey Island 2: LeChuck's Revenge|MI2]]. I quickly realized that he was way ahead of me, as the first screenshots he showed me was a more or less working [[Monkey Island 2: LeChuck's Revenge|MI2]] (the actual screenshots were from Woodtick). I didn't have to think much before dropping my own project and joining Ludde's.


=== Joining efforts ===
=== Joining efforts ===
Line 18: Line 18:
=== Changing Reverse Engineering approach ===
=== Changing Reverse Engineering approach ===


As stated earlier, Ludde was really ahead of me. Indeed, we had a different approach of the problem. I was implementing things by guessing and understanding how the engine was supposed to be working, and Ludde was working from disassembly. This made a great difference in terms of speed and accuracy. I knew it would be better for me to change my method in favor of Ludde's, and it even clearer to me when I lost a large number of hours of work because of a misunderstanding. [[Indiana Jones and the Fate of Atlantis|Indy4]] was getting more and more playable, (but not yet completable) and I started to be interested into adding v6 games support, especially [[Day of the Tentacle|DOTT]]. The thing was, the script engine had had a major facelift between v5 ([[The Secret of Monkey Island|MI1CD]], [[Monkey Island 2: LeChuck's Revenge|MI2]] & [[Indiana Jones and the Fate of Atlantis|Indy4]]) and v6, so I started to understand that new script engine. I spent a large number of hours looking at the compiled scripts and trying to understand how they were supposed to work. When I got back to [[ScummVM]] with my newly found insights of the [[SCUMM]] v6 scripting system, I was faced with an already working [[Day of the Tentacle|DOTT]] in [[ScummVM]]. At that point, I decided to get into disassembly, and to always make it clear what I was working on. Even if [[Day of the Tentacle|DOTT]] was running, it was still buggy. I remember fixing core bugs like misplaced staff text, crashes on non-American version (the original American version used sprites for verbs, but foreign versions used plain text) and a few other miscellaneous things. [[Sam & Max Hit the Road|Sam & Max]] was added to the engine not that far off, but suffered from lots of bugs. I don't remember all the precise details of that time, but I do remember play-testing [[Sam & Max Hit the Road|Sam & Max]] while fixing stuff here and there. The sound system in [[Sam & Max Hit the Road|Sam & Max]] and a large bunch of logic script bits were very different and had to be fixed. This was also the time that Ludde (whose aim was originally [[Monkey Island 2: LeChuck's Revenge|MI2]]/[[Day of the Tentacle|DOTT]]) started to lose interest in the project.
As stated earlier, Ludde was really ahead of me. Indeed, we had a different approach to the problem. I was implementing things by guessing and understanding how the engine was supposed to be working, and Ludde was working from disassembly. This made a great difference in terms of speed and accuracy. I knew it would be better for me to change my method in favor of Ludde's, and this became even clearer to me when I lost a large number of hours of work because of a misunderstanding. [[Indiana Jones and the Fate of Atlantis|Indy4]] was getting more and more playable, (but not yet completable) and I started to be interested into adding v6 games support, especially [[Day of the Tentacle|DOTT]]. The thing was, the script engine had had a major facelift between v5 ([[The Secret of Monkey Island|MI1CD]], [[Monkey Island 2: LeChuck's Revenge|MI2]] & [[Indiana Jones and the Fate of Atlantis|Indy4]]) and v6, so I started to understand that new script engine. I spent a large number of hours looking at the compiled scripts and trying to understand how they were supposed to work. When I got back to [[ScummVM]] with my newly found insights of the [[SCUMM]] v6 scripting system, I was faced with an already working [[Day of the Tentacle|DOTT]] in [[ScummVM]]. At that point, I decided to get into disassembly, and to always make it clear what I was working on. Even if [[Day of the Tentacle|DOTT]] was running, it was still buggy. I remember fixing core bugs like misplaced staff text, crashes on non-American version (the original American version used sprites for verbs, but foreign versions used plain text) and a few other miscellaneous things. [[Sam & Max Hit the Road|Sam & Max]] was added to the engine not that far off, but suffered from lots of bugs. I don't remember all the precise details of that time, but I do remember play-testing [[Sam & Max Hit the Road|Sam & Max]] while fixing stuff here and there. The sound system in [[Sam & Max Hit the Road|Sam & Max]] and a large bunch of logic script bits were very different and had to be fixed. This was also the time that Ludde (whose aim was originally [[Monkey Island 2: LeChuck's Revenge|MI2]]/[[Day of the Tentacle|DOTT]]) started to lose interest in the project.


=== Later games get added ===
=== Later games get added ===
TrustedUser
2,147

edits