Hey everyone! 👋🏻
This time around, I want to share what I’ve been up to during the community bonding period and the first week of actual coding. But before we get into that, let’s rewind a bit.
So, during the initial part of the community bonding period, I had my college exams. It was the end of the academic year, so naturally, a good chunk of my time was dedicated to preparing for those exams. After wrapping up the exams, I could finally shift my focus to the GSoC project.
My main goal during this period was to better understand the working of Director. I kicked off this process by reading the “Director 3.0 Interactivity Manual.” This manual provided insights into how Director games work and the various functionalities it has to offer.
To get the different versions of Director up and running, I installed Basilisk II, an open-source 68k Macintosh emulator. This allowed me to use a Macintosh-based system with Director installed on it.
Comparing Movie Behavior in ScummVM vs Director
A movie in Director is a multimedia presentation that combines graphics, sound, animation, and interactivity.
One of the initial tasks involved comparing how movies behaved in ScummVM compared to Director. This comparison was important to identify any differences in how the movies functioned and looked. I noted down any differences in the functionality and visuals.This documentation was created to help fix these differences later in the development process.
Task 1: Verifying “The Apartment” Functionality
If you’re curious about “The Apartment,” it’s basically a collection of movies that serves as a showcase for different features of Lingo, which is the scripting language used in Director.
One of my initial tasks was to verify that “The Apartment,” originally created in Director 2.0 and later updated for newer Director versions (D3, D4), functions identically across all versions in ScummVM.
Task 2: Verifying “Lingo Workshop” Functionality
“Lingo Workshop” is essentially a collection of movies designed to demonstrate different functions of Lingo.
Another task involved comparing the behavior of individual movies from “Lingo Workshop” when run on ScummVM and Director.
Getting into the Coding Tasks!
Task 1: Handling Empty Text in Selection Logic
This task was straightforward. It involved handling empty text in selection logic. I added a guard clause to address the case where the text selection is empty, which prevented crashing. This fix also resolved the buildbot complaint about the failing test.
Task 2: Fixing ZoomBox Animation:
When running ScummVM in desktop mode, the zoom box animation wasn’t positioned correctly because the calculations didn’t include the stage offset. My fix added this missing factor, ensuring the animation now works properly in desktop mode.
Task 3: Fixing Copying and Pasting of Cast Member
Everything that appears in your movie (graphics, text, video, audio, etc.) is referred to as a cast member.
This task involved a significant debugging effort. The issue was that copying and pasting a cast member multiple times would crash ScummVM.
The root cause was that the copy/paste functionality wasn’t properly duplicating cast members. On the first copy, a new cast member would be created, but it would share the same memory address as the original cast member. Subsequent copy attempts would then delete this shared cast member, unintentionally removing the intended copy and leading to a crash.
With the help of debugging messages from ScummVM and debugging tools in Visual Studio, I figured out this issue and fixed the problem by ensuring that cast members were correctly copied and pasted.
Final Task for Week 1
Creating Test Movies for Various Ink Types
In Director, “inks” refer to the different ways that graphics elements can be blended with the background.
I created test movies in 1bpp (bit per pixel) format, showcasing all the ink types available in Director. The plan is to develop unit tests for these ink to ensure they render identically in ScummVM and Director.
Conclusion
That wraps up the community bonding period and my first week of GSoC! I’m eager to dive deeper into the project and share my progress along the way. Stay tuned for more updates!