ScummVM logo ScummVM website - Forums - BuildBot - Doxygen
Contact us - Buy Supported Games:
curved edge


Welcome to the ScummVM planet - This aggregates the personal blogs of developers, teams members and active participants from all around the ScummVM community.
If you wish to subscribe to updates to the planet or individual blogs please use the links on the right hand side.
To add your blog to the planet contact DJWillis.

August 13, 2018

Liu Zhaosong (Douglas) - GSoC

ResidualVM: Summary

This is the summary of all the works I have done in Google Summer of Code 2018.

Overall Description:
Improvement for the Stark engine used in ResidualVM for the support of the game The Longest Journey with two main focuses: menus and characters' shadows.

Pull Requests:
Below are the main PR created and merged, ordered by the sequence of development. One may click the number of the PR to view it in detail on GitHub, which contains discussions between me and my mentor along the development.

#1415: Implementing the main menu.

#1417: Implementing the settings menu.

#1422: Implementing the save & load menu.

#1442: Implementing the video replay in the Diary menu.

#1443: Implementing the diary pages in the Diary menu.

#1450: Implementing the conversation log in the Diary menu.

#1456: Improving the debug console of the game.

#1467: Implementing the version info text and the Book of Secrets in the main menu.

#1468: Implementing a rough version of confirmation dialogs.

#1474: Implementing the keyboard bindings.

#1483: Implementing the characters' shadows.

Current Status:
The two main focuses: menus and characters' shadows are finished as scheduled. All codes have been merged and one may test and use them freely in the game.

Other than that, there are some issues, which is out of expectation, emerged during the development. The feature of pressing F8 to save a screenshot is not implemented for the time being. The confirmation dialogs are still pretty rough. Also, there are some proposed GitHub issues related to the engine, most are about the debug console. I have planned to tackle them after GSoC and I will keep engaging in the future development of ResidualVM to help further improve the Stark engine.

by Douglas Liu ( at August 13, 2018 02:20 PM

August 12, 2018

Matthew Stewart (Drenn) - GSoC

GSoC 2018 Wrapup (and final mission details)

Google Summer of Code officially ended last Monday, August 6th. My project was to reimplement Star Trek: 25th Anniversary in ScummVM.

The project involved reimplementation of all of the hardcoded game logic, since it doesn’t have a scripting language. In my original proposal, I conservatively estimated that I would finish only the first 4 away missions, of 7 in total. In fact, I managed to finish all 7 (though it took a few days past the official end time).

That doesn’t mean it’s done though; the away missions are only half of the game, albeit the larger and more interesting half. There also remains the pseudo-3D space combat element, which I dabbled with, but am still nowhere near done with. I’m hoping to be able to finish that by the time summer’s over, though I can’t make any guarantees on that.

So: the end result is that, right now, you can play all 7 away missions in Star Trek: 25th Anniversary in ScummVM. However, without the bridge sections or space combat, players will be missing the context of why you’re on the away mission in the first place.

Here is a more comprehensive list of what remains to be done in the long-term:

  • Space combat, segments taking place on the bridge (finish implementing 25th anniversary)
  • Support for non-DOS versions (mac, amiga) and other languages (french, german)
  • Support for Judgment Rites (probably not happening too soon unfortunately)

Get the code

See my commits here.

To compile ScummVM with the star trek engine, run:

./configure --enable-engine=startrek

Then, you will need to provide ScummVM with the original DOS game data files, and copy the “voc” folder from the CD into the same folder. (If you don’t do this there will be no voice acting and missing audio.)

The final mission

Continue reading for the regular postmortem on the mission I just finished working on. Spoiler alert.

In this mission, the USS Republic, which you fought in a mock battle at the very beginning of the game, gets demolished by a mysterious assailant.

There are reports of softlocks in this mission. One is that after you lower the shields, the Elasi immediately beam over before you can shoot them, rendering the mission unbeatable. I haven’t verified this, but I can see why it would happen based on reading the code; the timer that’s supposed to make them beam over before you raise the shields, also applies after you lower the shields! So, if you lower the shields much more quickly than the developers expected, that counter may reach 0 and cause the elasi to beam over.

There’s another reported softlock, though, that doesn’t seem to be a real softlock. For some background, in the auxiliary control room, you’re supposed to either “use” or “look at” a specific part of a console in order to see that the torpedo loading mechanism is jammed. This triggers an event flag necessary to complete the mission. A GameFAQs guide claims that under certain circumstances, it becomes impossible to do this, which is only half-true.

Once you power up the shields, it becomes impossible to power up the weapons until later on. The result is that you cannot “use” the weapon system to trigger this event flag; however, you can still “look” at it to do so.

It’s all rather confusing - and it doesn’t help that you need to click on a very specific part of the console for any of this to work - but I haven’t found a softlock here. Though if I’m mistaken I’ll gladly fix any further softlocks.

Interestingly though, in the hallway that links the two turbolifts together, using Spock on the debris at the end of the hall, when the support beam is in place, would crash the game, because code execution actually derails into executing data. Those kind of mistakes can happen when writing raw assembly…

Anyway, that’s the most interesting stuff I’ve found in the final mission. I may make more infrequent blog posts as I work on the rest of the game, though don’t expect the almost-weekly updates I’ve been providing up until now.

August 12, 2018 12:00 AM

August 10, 2018

Joseph-Eugene Winzer (Joefish) - GSoC

Summary of GSoC 2018 -- The Immortal

Summary of GSoC 2018 -- The Immortal


During the last three months I worked on porting The Immortal.
Unfortunately, I have fallen ill last month and are still recuperating so I haven’t got much work done since. Although GSoC is ending, it doens’t mean work on The Immortal will cease as well. I will keep working on it over the next month to make up for my sick days.

Github Repository
Blog GSoC 2018


  • Dialog parsing and rendering
  • Audio conversion (EA BIN to MIDI)
  • Rendering
  • Inventory
  • Animation definitions
  • Map parsing, rendering, and room definitions


  • Animation system
  • Collision detection
  • Object/Actor interaction
  • Fighting
  • AI

Those are the big ones left until the game is in a playable state. I'm sorry for everyone that was looking forward to play the game at the end of this GSoC period and hope to make up for it by the end of September with a PR. I want to thank my mentors Arnaud Boutonné, Thierry Crozat, the whole ScummVM team and Google for creating the Summer of Code in the first place.

by Joe Winzer ( at August 10, 2018 08:04 AM

August 08, 2018

Andrii Prykhodko (whiterandrek) - GSoC

GSOC Summary

Project description

During GSoC 2018, I was working on adding support of Pink Panther games to ScummVM: The Pink Panther: Passport To Peril and The Pink Panther: Hokus Pokus Pink.

Goals achieved

Pink Engine:

Pull Request

The engine is now located in main ScummVM tree and work is continued in ScummVM’s main tree.

The games are completeable.

I have tested games and haven’t seen serious problems.

ScummVM’s library:

During GSOC I have fixed various bugs in ScummVM’s code.

Future work

  • Implement ActionText drawing of non-English versions.
  • Add another engine to ScummVM.


The code for pink engine is in the repo:

The commits that I made :


by whiterandrek at August 08, 2018 03:11 PM

August 05, 2018

Andrii Prykhodko (whiterandrek) - GSoC

Week 12

At the 12 week I have done:

  1. Fixed walking bug.
  2. added conversion method from windows codepages to utf-32
  3. made text to draw for the English version of the game


What’s left:

  1. add unicode support for MacText, so other versions could draw text.

From this project, I have known a lot about reverse-engineering and sprite graphics.

I was very happy to work with sev. He is very experienced reverse-engineer.

I will finish the project and will support it for the testing period.

by whiterandrek at August 05, 2018 07:33 PM

Liu Zhaosong (Douglas) - GSoC

ResidualVM: Week 12

With the help of my mentor, I followed the logic in the original game and finally, now The Longest Journey in ResidualVM shall have shadows that are calculated based on actual lights in the scene!

Below are some screenshots as demonstrations. For a better illustration, I temporarily rendered the shadow with solid green. As you can see, in location 39 00, the shadow of April will become longer and change its direction based on the lights.

As I have said in the previous blog, the game computes the shadow in a way that is not the same as the reality. Well, with the help of my mentor on reading the disassembly, the truth behind the screen was revealed. Honestly speaking, after knowing this, I really don't think I can figure it out just by observing the game itself.

So, in general, the game first calculated an overall direction from lights. The way to compute the directional vector from lights varies based on the type of the light, but basically, it is related to the distance between the model and the light and the brightness of the light. Notice that I am saying "model" here, not vertices. It turns out that one light direction is applied to all vertices of a model.
The Calculation of the Point Light

After that, the directions from all the lights are summed together as an overall direction. Remember the maxShadowLength I mentioned in the previous blog? It is used to clip the horizontal length of the overall light direction. It turns out that the maxShadowLength needs to be divided by 1000 before being used, that's why its value seems to be so large.

After that, things become trivial. By passing the overall light direction to the shader, with some linear algebra, it is easy to calculate the casted position of a vertex. It is even easier if you first transform the light direction to the model space since then the plane of the shadow is just the XZ plane. You can save some of the math.
The Vertex Shader

By the time when I wrote this blog, the PR was not merged yet, but I believe it is very close to that. So now, all the tasks scheduled for this year's GSoC are finished. I have learnt tremendously from this project. I get more familiar with C++, I know more about game programming, and I even get some hands-on experience on CG with OpenGL! Also, I need to express my greatest gratitude to my mentor bgK. He is truly a good mentor. Without his detailed reviews and clear guidance, I would never accomplish so much. This is a truly wonderful journey and a valuable experience.

Thank you all, for you guys are truly wonderful :D

All code snippets are generated through Carbon

by Douglas Liu ( at August 05, 2018 12:49 PM

July 30, 2018

Joseph-Eugene Winzer (Joefish) - GSoC

Week 10

Week 10

I’m sorry for the lack of progress and apologize to everyone that is eagerly looking forward to playing the game. Fortunately, after a short stay at the hospital I’m feeling better now and can resume work on the project.

by Joe Winzer ( at July 30, 2018 09:49 PM

July 29, 2018

Andrii Prykhodko (whiterandrek) - GSoC

Week 11

At the eleventh week I have done:

  1. added finding similar colors in the palette to represent ActionText’s RGB colors, which aren’t located in the palette.
  2. bugfixes

Now the colors are implemented, only text is left. Text which is used in text files was written using Windows codepages(1250, 1251, 1252, 1255), depending on the language. To use text in ScummVM I need to convert it to UTF-32 and add unicode support for MacText.

Probably I will hardcode conversion tables, as I don’t see another way how to do it.


by whiterandrek at July 29, 2018 07:58 PM

Liu Zhaosong (Douglas) - GSoC

ResidualVM: Week 11

Well, probably the shortest blog ever this time...

Long story short, I haven't figure out how the original game computes the shadows. There can be at most ten lights in a scene but there is only one shadow, and the way that shadow reacts with lights in the game is just, so strange...

Take this scene as an example. The green circle is the range denoted by the field maxShadowLength. It's too large, way larger than the true shadow length in the original game. There is only one light entry here, the lamp. You may imagine what will happen if you hold a lamp so close like this. The shadow should be extremely long and cast on the wall, right? That's not what happens in the original game. In fact, the lamp just moves the shadow a tiny bit against its direction.

So I can only draw the conclusion that the original game does not compute the shadow as the reality. I have tried many possible and "reasonable" implementations that came into my mind but none of them seemed to be fit. (Yeah based on the above description you may be thinking about biasing the length or something like that but believe me, I have tried, really.)

Have to say that this is really frustrating. Anyway, I'll keep on digging next week.

by Douglas Liu ( at July 29, 2018 04:01 PM

July 24, 2018

Joseph-Eugene Winzer (Joefish) - GSoC

Week 9 -- Give me some of that water..

Week 9 -- Give me some of that water..

No real progress as I have been feeling really sick the last couple of days. A sip from that fountain water would be really nice right now…
The camera tracking of the player is still a bit wonky but once that is ironed out, object iteraction and triggers are next as was planned in last week’s post.

by Joe Winzer ( at July 24, 2018 01:40 AM

Matthew Stewart (Drenn) - GSoC

GSoC Week 9: Space, and glitchy planet rendering

This past week has been spent on space; trying to make heads or tails of the game’s “pseudo-3d” engine. And, while it hasn’t been entirely unsuccessful, progress on this front has been relatively slow.

I started by getting the background starfield working. It involved some trigonometric functions and matrix multiplication. Nothing too insane, once I figured out what I was looking at. To complicate matters, the game has at least 3 fixed-point decimal formats, including a format specifically for numbers between -1 and 1, in addition to using the processor’s floating-point hardware on occasion.

Encouraged by this early progress, the next step was to make more elements of the game’s intro visible, starting with the red planet the Enterprise flies past. However, when I finally reached the function which draws space objects to the screen, the function graph showed me this would be no picnic.

Each box is a block of code, some too small to see.Each box is a block of code, some too small to see.

Despite my best efforts, I was unable to quite get this working properly. I discovered today that I didn’t even have an accurate view of the function, because part of the code is overwritten from elsewhere before it gets called! Perhaps because of this incompleteness, I was only able to get a sliver of the image to appear in a glitchy way.

I’ll figure this out, eventually. But I alotted myself a week to work on this before moving on to other things, so I’ll come back to this later. It’s time to start focusing on code cleanup so this can be merged into scummvm, as well as finishing up the away missions. Then, I’ll come back to finish space combat and everything between missions.

July 24, 2018 12:30 AM

GSoC Week 10: Nuclear moon bases

Last week I worked on mission 6, “That Old Devil Moon”. It features some interesting lore of two ancient civilizations that annihilated each other through the use of nuclear weaponry. What a totally, uh, alien and unthinkable prospect, haha…

This mission features the most obscure puzzle in the game, which involves converting “sacred numbers” from base 10 to base 3 to crack passcodes! While I personally can handle a bit of base conversion, the even bigger sin is that the hint required to open the door is missable! If you fail to look up every remotely relevant entry in the ship’s computer before beaming down, you’ll have no way of even knowing what numbers you’re even supposed to convert! I definitely had to look up a walkthrough here.

Incidentally, while implementing the text input boxes, I found a way to crash the game. Simply fill up the box, then repeatedly press the “end” key, enter a character, press “end” again, etc. Soon the text buffer overflows into something that’s probably important and the game crashes. This works because the “end” button is the only one that doesn’t check if the length of the string exceeds the maximum text size. Naturally this is fixed in scummvm.

In addition, this mission, too, has some ways to get an infinite score, by repeatedly scanning or using the computers in the final room. Using McCoy’s tricorder on the air in this room also works. That’s all in the way of bugs that I’ve found, though.

GSoC officially ends next week. I’ve opened up my pull request to the main branch, though the engine is still incomplete, so I can continue working on it in-tree; in addition to working on the final mission this week, I have some feedback to take care of before the pull request gets accepted.

July 24, 2018 12:30 AM

July 22, 2018

Andrii Prykhodko (whiterandrek) - GSoC

Week 10

At the tenth week I have done:

  1. added unicode support for MacMenu
  2. implemented menu parser from win32 executable. It is more simple to get a menu from exe than hardcoding it for each language.
  3. implemented menu commands
  4. hidden debug output under debug levels and channels
  5. bugfixes

What’s left:

  1. finish ActionText

This is a really hard task as in original colors were in RGB, despite engine uses 8-bit color.

To solve this problem, I will try to build the HSV model and find similar colors in the palette.

by whiterandrek at July 22, 2018 07:52 PM

Liu Zhaosong (Douglas) - GSoC

ResidualVM: Week 10

And I said: "Let there be shadows!" And there are shadows. Just, not good enough...

So, from this week till the end of GSoC I guess I'll be dealing with OpenGL. As a newbie to computer graphics, I would be lying if I say that I am not worried at all. I once believed that OpenGL hated me, it hated me so much that it didn't even want me to render a tessellated triangle on the screen. But that hard time is passed now and I am happy that I start to get along well with OpenGL, and it is kind enough to let me produce something physical this week.

Ah, the shadow.

Okay, shadows. Actually what I have done so far is based on my previous wrong assumption about shadows in The Longest Journey. In most of the scenes I have played, which is not many actually, characters have shadows that look like they are cast from above. The Longest Journey is a 2.5D game with 3D characters and 2D backgrounds, so, in my personal perspective as a CG newbie, it won't be that intuitive to perform a full shadow casting technique like the Shadow Mapping here. But if shadows are just cast from above, then things are a lot simpler.

So, with this "wrong" assumption, and the fact that the original game doesn't seem to have complex and realistic shadows, I decided to use the simplest shadow casting technique: Planar Shadow. Basically, it just squishes the modal onto a surface and paints it grey. Since I just want to cast the shadow from above, the squishing is even easier. Below is a screenshot when I was testing how I could squish the model.

April: I don't feel so good...

That's not the whole story. A good shadow should be semi-transparent. But simply enable blending is not enough since transparent faces will cover on each other, and there will be the Z-fighting problem. The solution is intuitive though: stencil test. With the enabling of the stencil test and proper manipulation on the stencil buffer (no two shadow fragments can be drawn on the same location), a nice semi-transparent shadow is produced.
Blending and Stencil Tet

Well, like I said before, this is a wrong assumption. The Longest Journey does compute shadows from existing lights. And there are three types of light in the game: point light, directional light and spotlight. Luckily lights only contribute to the length of the shadow, so right now I think the Planar Shadow technique can still be used.

From the look of it right now, I guess it is time for some linear algebra. More updates will come next week.

All code snippets are generated through Carbon

by Douglas Liu ( at July 22, 2018 02:41 PM

July 18, 2018

Joseph-Eugene Winzer (Joefish) - GSoC

Week 8 -- Animation and Controls

Week 8 -- Animation and Controls

  • Rewriting animation handling
  • Avatar (controls and animations)
  • Inventory

Even the simplest thing can turn out to be a big time drain.
I encountered mismatches in the mapping for sprites and their actual position in the files before and assumed that some change from version to version. Apparently, they changed the file layout and compression mid-development and added a lookup table to remap sprite packs and files to how they (presumably) were originally. I’m glad it cost me only a day of manually jumping around in tables and I didn’t end up with more work than necessary.
Seeing the wizard casually paddle out of bounds on his barrel is more than worth it though.

The inventory is almost done (except for using items of course). Either text rendering needs to be refactored so it can be used outside of dialogs or rewrite the inventory so it fits the structure of a dialog. I will update the GIF tomorrow once it's fixed.


  • Update viewport camera to follow wizard
  • Render static objects (chests, torches, …)
  • Collision detection
  • Interaction with objects (pick up items from bodies, chests, …)

by Joe Winzer ( at July 18, 2018 04:34 PM

July 16, 2018

Matthew Stewart (Drenn) - GSoC

GSoC Week 8: Set phasers to stun. ...Then kill.

Last week was mostly focused on finishing up the second part of the “Feathered Serpent” mission, in which Quetzalcoatl is put on trial by the klingons for spreading messages of peace. Kirk agrees to go through a set of trials to prove his honor or something so that Quetzalcoatl can go free.

Kirk offering a fine defense.Kirk offering a fine defense.

Mission oddities

Last week, I mentioned various ways to get an infinite score in this mission. Well, there are even more, easier ways to do so in the second half, including:

  • Repeatedly scanning a door lock with Spock.
  • Repeatedly scanning an energy life-form with Spock.
  • Repeatedly carving out part of a room with a phaser.

All of the above are in a single room. This room also interestingly allows you to cancel a death if you react fast enough.

In addition, this mission has two endings (three if you just give up defending Quetzalcoatl entirely). The “main” win method is to discover a weird alien room, which is probably what most people did.

The secondary method is very obscure, and I suspect most people don’t know about it. If you don’t discover the alien room, you instead must pass a Klingon automaton blocking you.

Since the solution is so obscure, I’ll just tell you. Using the stun phaser doesn’t work; after two shots, it kills the crew. Using the kill phaser doesn’t work, either; it kills the crew after only one shot.

So, what’s do be done? Use the stun phaser, THEN the kill phaser. That will give it just enough energy to overload before it can take out the crew. …Naturally…

On my casual playthrough, I completely gave up on passing the automaton, since I already knew about the other method of completing the mission. This is an “inferior” way to beat the mission, anyway, but it’s interesting that it’s locked behind such an obscure solution.

What’s next

For now, I’m taking a break from the repetitive mission logic to take a look at the pseudo-3D and ship combat stuff. I really have no idea how long this will take, but I felt I needed to look at something fresh and different. Regardless, my primary mission is to get the away missions working and I only have 3 weeks left (officially), so I’ll return to that if time doesn’t allow me to finish the starship stuff. Due to the belatedness of this post, there’ll be another later this week.

July 16, 2018 10:00 PM

July 06, 2018

Matthew Stewart (Drenn) - GSoC

GSoC Week 7: What does Quetzalcoatl need with a starship?

This week, in addition to finishing up the Harry Mudd mission, I’ve done the first half of mission 5, “Feathered Serpent”. This is the only mission to be divided into two “away mission” segments, with another ship segment between the two.

In classic Star Trek style, we encounter the Aztec god Quetzalcoatl (Quetzecoatl?) attempting to bring enlightenment to the Klingons. Lt. Buchert must have jinxed us when he mentioned the absence of any angry gods last mission.

The first half of the mission consists of eight rooms, which is technically a record so far, but some rooms are little more than scenic pathways. It’s also very linear compared to other missions. There’s only one case where you might have a reason to backtrack at all, and often you’re prevented from going back to previous rooms entirely.

This mission has some rather pretty screens.This mission has some rather pretty screens.

Mission oddities

There is a case where you can scan Lt. Stragey (the redshirt) while he’s dead, and someone who is… clearly not McCoy, say “He’s dead, Jim”. Was DeForest Kelley sick that day? Well, he says the same line in other places, so I substituted one of those in.

There are at least two ways to get an infinitely high score in this mission. The first way is to repeatedly try to grab a snake in the second room. Whether you succeed or not, you get a point each time. (Normally the snake retreats into a hole before you can grab it.)

The second way is to repeatedly solve one of the puzzles. I don’t really want to give away any solutions, but there’s a particular action you can do repeatedly on the lake screen. The first time, it wards off a monster, but after that it serves no purpose, despite continuing to give you points.

Unfortunately, based on my limited testing, it looks like your score does cap at 100% in the final report.

Unused stuff & version differences

The devs seemed to have a good sense of humor; in particular, the original floppy version was snarkier in places. If you use a knife on yourself, it says “You won’t break your contract to the network that easily!”

That line was changed later; this particular piece of text changed between the original floppy release, the mac release, and the voiced release. Supporting all 3 will surely be a nightmare.

Also, it turns out that the redshirts are named after the devs, which somehow makes the redshirt deaths seem even funnier.

A personal favourite of mine.A personal favourite of mine.

I’ve also encountered the string “***Game Over, Man!***” in the game files multiple times, at least back in the first mission; perhaps it was used before they implemented the “game over” menu properly. Today, I even found a voiced version which seems to be unused, done with all the professionalism of any other line. I wasn’t a fan at first, but this narrator voice is growing on me.

Anyway, there are just two and a half missions to go now. I think I could manage to finish this within GSoC, starship sections and all. I doubt I’ll have enough time to finish Judgment Rites, but perhaps I can get a decent chunk done if space combat doesn’t turn out to be too insane to implement.

July 06, 2018 02:30 AM

July 01, 2018

ScummVM News Headlines

Our website got an update!

We are not only constantly working on improving ScummVM's compatibility or implementing new games, but sometimes also on improving the project's general appearance.

Over the last couple of months, long-term ScummVM fan and new team member Mataniko worked hard on improving our website design which serves us well since over a decade. We are proud to say that the ScummVM website is now fully responsive and looks absolutely beautiful on your PC and your mobile devices.

If you have any issues with the updated website or the feeling that something is missing, please let us now on our Issue Tracker.

by lotharsm ( at July 01, 2018 11:00 AM

June 29, 2018

ScummVM News Headlines

The Ending Has Not Yet Been Written!

We are very happy to announce that our friends at Cyan, Inc. released their 25th Anniversary Collection of the Myst series today as digital download on

Myst — Masterpiece Edition and Riven — The Sequel to Myst are powered by ScummVM, while Myst III — Exile is driven by ResidualVM.

In the last couple of weeks, both the Cyan and the ScummVM teams have made great strides to improve game compatibility. Due to intense testing, we have already managed to fix most issues that were present in ScummVM and ResidualVM. However, due to the nature of software development, it's still possible that we missed something, so we need your help now.

While we can fix issues in the versions of the games at a later date with a simple update, this won't be possible for the upcoming Collector's Edition on DVDs, so we need to make sure that we have fleshed out any bugs before the DVDs are manufactured.

So, please grab a copy from or if you were a backer in the Kickstarter campaign, redeem your code. Visit Myst Island, roam through Age 233, have a nice stay in Releeshahn and report any issue you can find to our Bug Tracker.

And please... bring me the blue pages!

by lotharsm ( at June 29, 2018 11:00 AM

June 21, 2018

Matthew Stewart (Drenn) - GSoC

GSoC Week 5: Star Trek Teaches Chemistry: How to Make Laughing Gas

Mission 3: Love’s Labor Jeopardized. It’s about 90% finished.

The mission starts with a rather ear-grating computer voice. Thank god they got Majel Barrett for the sequel.

That said, this is a neat mission. You’re given information about various chemical compounds that may be useful in the mission, then you need to figure out which ones are important and mix up some ingredients to cure a virus that’s running loose through the station.

Or you can just, you know, inhale some laughing gas instead.

Mission bugs

Last week, I promised there would be bugs in this mission. There’s nothing mission-breaking that I’ve found, though, mostly text stuff.

The most eggregious is a weird textbox I encountered in my casual playthrough. As far as I know, you’ll always encounter this if you take long enough during the mission.

I also encountered this following bug while writing this blog post. This is part of the 10% of the mission I haven’t rewritten yet, though, so I can’t explain what it’s about.

Aside from that, there are a couple of cases where voice acting doesn’t play when it should. And, if you look at Dr. Marcus when she’s tied up, it plays the wrong file entirely; only narrating the first half of the textbox. There was an unused audio file that narrated the entire textbox, so I replaced it with that.

The one thing that might be considered a bug in the mission mechanics, is the way you can give water to the Romulans. Apparently you can get a point in your mission score for doing that. But, sometimes, if they’re unconscious, nothing happens. You lose the water, you don’t get any points, and not even a textbox is shown. It’s honestly kind of odd. I’m still debating what to do about that; for now I’ve made it so you can’t give water to them while they’re unconscious.

Other oddities

There are a number of cases where a single line is read multiple times by the actors, simply because the same textbox is shown in multiple different rooms. For example, if you scan the air with the medical tricorder, McCoy says the exact same line, but with a different voice clip depending on the room. I can just imagine the cast complaining about why they have to record the same voice clip three times.

Anyway, this mission should be completable in ScummVM within the next day or two. Next week will feature the return of Harry Mudd in one of this game’s weirder missions.

June 21, 2018 12:00 AM

June 15, 2018

ResidualVM News Headlines

ResidualVM 0.3.1

Our previous release is already a few months old, it's time for a bug-fix release! ResidualVM 0.3.1 is available on our downloads page. It fixes a couple of Myst III bugs:

  • Fixed a rare crash when walking near the magnetic rings in Amateria.
  • Fixed unresponsive controls for the holographic projectors in J'nanin.

That's not much, but Cyan and are planning to use ResidualVM for the Myst III digital release and we want it to be as stable as possible.

In other news, progress on adding support for The Longest Journey to ResidualVM continues thanks to our GSoC student Liu "Douglas" Zhaosong. You can follow his work on his blog.

by bgK ( at June 15, 2018 12:00 AM

Matthew Stewart (Drenn) - GSoC

GSoC Week 4: Dammit Jim, I'm a doctor, not a QA tester!

Star Trek’s second mission, “Hijacked”, is finished. It’s very short, only consisting of 4 rooms. Despite this, the devs didn’t fail to insert a number of bugs into the mission, most of them in the final room.

Let’s start simple: if you talk to McCoy at a specific time, he has no text.

However, there is an audio file which fits perfectly for this situation. So, I whipped up some corresponding text to go along with it, and inserted it appropriately. Honestly, how could I let DeForest Kelley’s wonderfully snarky voice acting go to waste?

It’s not the only voice clip that’s unused, either. There are a surprising number of cases where they clearly intended for some dialogue to be said, but there’s problems in the implementation causing it to not occur; for example, when you try to shoot the Masada crewman, he’s supposed to say something, but due to a bug(?), he didn’t in the original.

There’s also an oversight with the mission scoring system. You’re supposed to combine some inventory items together to progress through the mission, but you only get points for this if you do it in a specific room! This is the consequence of each room having entirely separate codebases; the code needed to be copied for each room, and clearly, they must have forgotten that the code was duplicated when they made some changes to it.

Lastly, the final room is pretty buggy. Don’t read any further if you want to avoid spoilers.

So, there are three ways to end the mission; either you shoot the Elasi, they surrender, or they attempt to deorbit the ship. But… these aren’t mutually exclusive. In fact, all three can happen, and the devs clearly didn’t think this through properly.

Consider scenario #1: You shoot the Elasi. This aggros them, and they immediately kill your redshirt, followed by Kirk. However, you can still talk to the Elasi if you’re fast enough. If you convince them to surrender… they don’t actually surrender, despite saying so, they just keep killing you. If they deorbit the ship, you can call Sulu, stabilize the orbit, and beam out, WHILE THEY’RE STILL SHOOTING YOU.

Scenario #2: You talk to the Elasi, and you choose the worst option, causing them to both deorbit the ship and start shooting you. This one’s funny, because there’s no way to finish the mission in a way that makes sense. You can do one of two things:

Scenario #2a: Shoot the Elasi. This is sensible since you only have a few seconds before they kill you. After this, the mission is “successful”, even though you never save the Masada from deorbiting. I guess the security team that beams over dies when the ship goes down…

Scenario #2b: Call Sulu to prevent the ship from deorbiting. This results in the same issue as scenario #1.

It’s a mess. I’ve tried to fix things as best I can, by requiring that if the ship is being deorbited, shooting the elasi doesn’t end the mission, and vice-versa; saving the ship from deorbiting doesn’t end the mission if the Elasi are still a threat. Also, if the Elasi say they surrender, they actually do surrender now.

There are many more minor bugs, such as the Elasi guards freezing up if you shoot one of them at a specific time; but I’d be here all day if I listed them all. I’ve put down “BUGFIX” tags in the source code whenever something like this comes up. I’ve no doubt I’ll encounter more while working on the next mission.

June 15, 2018 12:00 AM

June 12, 2018

ScummVM News Headlines

ScummVM and Cyan, Inc. are working together!

Today, we have some awesome news to share. As you might have heard, Cyan, Inc. — the makers of Myst and Riven — are re-releasing the entire Myst series to celebrate the 25th anniversary of the original Myst game. And ScummVM and ResidualVM take part in this celebration in a special way!

Myst — Masterpiece Edition and Riven — The Sequel to Myst are powered by ScummVM, while Myst III — Exile is driven by ResidualVM.

In order to achieve the best possible gaming experience and to make your journey through the Ages even more pleasant, Cyan and ScummVM are establishing a new partnership, with both teams working together as closely as possible in the future!

Perhaps the ending has not yet been written — more news will follow soon!

by lotharsm ( at June 12, 2018 11:00 AM

June 10, 2018

Arnaud Boutonné (Strangerke)

Drenn Weekly Post #3

So, here is the next blog post written by Drenn in the scope of the GSoC.

A lot of nice progress as usual, ... so don't miss it!

It's There!

by Arnaud Boutonné ( at June 10, 2018 08:11 PM

June 06, 2018

Arnaud Boutonné (Strangerke)

Drenn Weekly post 2

You liked Drenn post #1? You'll love #2

Here is the link:
Drenn Weekly post 2

As I mentioned in the previous post, we still have issues with Planet for some reasons, so I'll keep putting links here until it's fixed, or until the end of GSoC, whatever comes first.

You could also prefer to directly check Drenn's blog. It's There!

by Arnaud Boutonné ( at June 06, 2018 08:09 PM


curved edge   curved edge