Google Summer of Code 2022 has been warming up for the past couple of weeks, and the work is now in full swing. When the coding period began back in the middle of June, we described a few projects that had sparked a special interest in us. You can read it here: The Most Interesting Projects For Google Summer Of Code 2022.
This time, we are coming back with an update on one of the projects mentored by ScummVM!
As we have mentioned before, ScummVM is a very special initiative dedicated to vintage games’ fans. It is a program that rewrites games’ executables so they can be run in modern systems that these games were not designed for. It helps to keep old games alive and accessible, despite the ever-changing technological landscape.
In this year’s edition of Google Summer of Code, ScummVM is participating with four exciting projects. We have chosen one of them to share with you!
One of this year’s GSoC projects involves a game titled “The Immortal”. It was released in 1990 and is a mix of RPG, action and puzzles. The project of enlivening this game was started in 2018 by a GSoC contributor, and is continued this year! The expected result is “The Immortal” being completable in ScummVM.
In “The Immortal” player takes up the role of a wizard that is heading down a labyrinth to rescue his mentor, who is calling for help. The labyrinth is full of puzzles and deathtraps. It is inhabited by goblins and trolls that also play a significant part in the main plot of the game. Using magic spells and items necessary for survival, the main character tries to safely reach his destination. When he finally does, it turns out that…
Let’s stop right here, before we spoil the whole thing for you! We hope that one day you will find out by yourself, once the game is fully operable in ScummVM 🙂
The contributor Michael Hayman (aka Quote58) is currently working on “The Immortal” project. They have declared their love for the old games and expressed high interest in the ways in which one can preserve them and make them still accessible today.
How is the work going
Quote58 had started with checking the functionality of the code. During this process a few errors showed up. To overcome this obstacle, the contributor used create_engine, which is a tool recently added to ScummVM. It automates much of the engine skeleton creation process. In this case, it helped to solve occurring issues and provide a clean start.
The next step for the contributor was to update their remote repository with the working code. It took a lot of time and effort, because of the insufficient experience in working with Git. Thanks to mentors’ help the problems were solved.
An important part of the process was choosing the game version on which the contributor will be working. “The Immortal” has a few versions that quite significantly differ from one another, especially in terms of the combat system. After consideration and consultation with mentors, the contributor decided to use the Apple IIGS version.
Another challenge was the type of files that this version of the game uses – the ProDos file system. It does not have any backend implementation in ScummVM, so the contributor had to create it by themselves. You can find more information on ProDos files in this blog post and this blog post.
The next step of the project was to translate the Assembly, in which “The Immortal” was written, into a more modern programming language – C++. Quote58 provides a great explanation of the importance of this process, using analogy to human languages for those, who are not familiar with different programming paradigms/abstraction levels. You can read the explanation, as well as the description of the works on translation, in this blog post.
An interesting part of the contributor’s work included the game’s color palette. The details of this challenge can be found in this blog post.
In the most recent update Quote58 talks about Kernel and Driver, the two important parts creating the backbone of the whole engine of the game. However, some of their elements are no longer useful once the game is moved to ScummVM. The contributor describes their reasons behind selecting Kernel and Driver’s elements that are to stay and be worked with, and the ones that can be gotten rid of.
The next planned steps involve working with Sprite.GS, Logic.GS, Compression.GS, and Cyc. Stay tuned for Quote58’s updates!
We encourage you to read their posts, as they are not only informative, but also funny and full of interesting analogies that help to understand the complex topics for the people who are not so familiar with programming.
We will keep an eye on the Google Summer of Code progress and keep you posted!