The Trail to Silver Lake

Der Schatz im Silbersee (DOS/German)

The ScummVM Team is pleased to announce that Der Schatz im Silbersee (The Treasure of Silver Lake) is ready for public testing!

Play as Old Firehand, with Winnetou and Aunt Droll at your side, in this 1993 point-and-click adventure by Linel and Software 2000. Based on Karl May's novel, the hunt for the legendary treasure begins aboard the steamer Dogfish and leads all the way to Silver Lake.

For this testing period, ScummVM supports the DOS game, the DOS demo, and the Amiga demo (with some known issues). The original release is German-only. We are working on an English translation and need help to finish it. If you speak German and English and would like to contribute, please get in touch with us.

Help us test the games by grabbing a daily build. Read through our testing guidelines. And please take some screenshots along the way.

Help us test Wintermute games

The Wintermute engine reaches a major milestone. After years since the Wintermute engine was introduced to ScummVM in 2012, and following the addition of its 3D support in 2020, the engine has now reached an important milestone: over 140 Wintermute games are expected to be supported in an upcoming ScummVM release.

Notable games:

  • Alpha Polaris
  • Art of Murder: FBI Confidential
  • Face Noir
  • Reversion series
  • Shadows on the Vatican series
  • The Lost Crown - A Ghost-Hunting Adventure
  • Dark Fall: Lost Souls
  • Barrow Hill - The Dark Path
  • Rhiannon: Curse of the Four Branches
  • Hamlet
  • 1½ Ritter
  • Dirty Split
  • Ghost in the Sheet
  • Devil In The Capital
  • Murder In Tehran's Alleys 2016
  • Murder In Tehran's Alleys 1933

The "Games tested at least once" section of the Wintermute/Games wiki page reflects the current state of compatibility and lists the games that are expected to be supported.

We'd like to ask for your help testing them. You can pick your favorite game and give it a try!

A Nightmare Comes True: the MacVenture Games Are Ready for Testing

Deja Vu: A Nightmare Comes True!! (Macintosh/English)

The ScummVM Team is pleased to announce that the MacVenture engine is ready for public testing, bringing four classics from ICOM Simulations to ScummVM: Deja Vu: A Nightmare Comes True, Deja Vu II: Lost in Las Vegas, Shadowgate and Uninvited.

Wake up in a Chicago bathroom in 1941 with a gun in your pocket and no memory of who you are. Search a haunted mansion for a missing sibling while the undead close in. Descend into the Warlock Lord's castle with a fistful of torches and far too little time. Released between 1985 and 1988, these games defined the point-and-click adventure on the Macintosh: no verb list to memorise, just windows you open, drag and rummage through with the mouse — and a great many inventive ways to die.

Originally developed by ICOM Simulations and published by Mindscape and Kemco, the MacVenture titles were among the first adventures built entirely around the Macintosh interface, with their crisp black-and-white artwork and their trademark overlapping windows. They were later ported to nearly every platform of the era, but the Macintosh originals are where the series began.

For this testing period, ScummVM supports the Macintosh releases, including the 1993 rereleases — the same data that ships with the versions sold today by Zojoi, so those work out of the box once extracted. The MacVenture engine was started during Google Summer of Code 2016 by Borja Lorente, continued in 2021 by hikigaya, and completed during Google Summer of Code 2026. It builds on the research behind Sean Kasun's WebVenture implementation.

As usual, you will need the original game data files to play. To join the test, grab a recent daily development build, add your game directory to ScummVM, and play through the games. Our wiki pages for Deja Vu, Deja Vu II, Shadowgate and Uninvited explain which files are needed and how to extract them. Please report any problems you encounter on our issue tracker, following our bug submission guidelines. Screenshots and saved games demonstrating an issue are always helpful.

Now open the door — something is already waiting on the other side.

It's a MADS, MADS, MADS, MADS World

Screenshot of Rex Nebular and the Cosmic Gender Bender (DOS/English)

A self-centered starship pilot marooned on a planet of women. A kingdom under threat from an evil enchanter. A sinister plot at the opera. And a desperate search for an antidote.

After all these years, the ScummVM Team is pleased to finally announce support for all four MADS games:

  • Rex Nebular and the Cosmic Gender Bender - DOS (re-implementation)
  • Rex Nebular and the Cosmic Gender Bender - Macintosh (some features missing, but should be completeable).
  • Rex Nebular and the Cosmic Gender Bender - Bonus Disk.
  • Return of the Phantom - DOS
  • Dragonsphere - DOS
  • Once Upon a Forest - DOS

Special thanks go out to the kind historical donation of partial sources to the team that made this release possible. Rex Nebular in particular, whilst previously supported, has been significantly refactored to use the updated engine core and naming conventions of the other games, so it may be considered an entirely new release. We've already confirmed that some long-standing bugs in the previous implementation have now been fixed. Experimental support has also been added for the Macintosh version of Rex Nebular, as well as the amusing bonus disk collection of content. Finally, Roland MT32 support has also been added, though it’s currently a work in progress, and not officially part of this initial testing. But for those of you who have been looking forward to it, you'll have it soon. In the meantime, support for the original PC Speaker sounds has also been added for your listening enjoyment :)

Help us test the games by grabbing a daily build. Read through our testing guidelines. And please take some screenshots along the way.

The games offer a good range of content, from the mild NSFW of Rex Nebular, the mystery of Return of the Phantom, classic fantasy of Dragonsphere, or the child-friendly simplicity of Once Upon a Forest. Which one will you play first?

GSoC 2026: Final Report

Finishing Implementation of Incomplete Engines

Organization: ScummVM
Contributor name: Mohit Bankar
Coding period: 25 May 2026 – 17 August 2026

 

Over the course of this summer, I worked on stabilizing and modernizing two legacy ScummVM engines — Dungeon Master and Avalanche. In this blog, I will summarize everything that was accomplished across both engines.

Fixes in DM engine

Blogs:  1  2  3  4  5  6

PRs:

#7541 Fix crashes and Implement missing UI features

#7556 Resolve PVS-Studio Warnings

#7592 Fix crashes

#7594 Replaced raw byte-buffer casting with strongly-typed C++ structure arrays

#7637 Bug fixes and Adding support for Extended Saves

#7693 Fixing Issues flagged by Coverity Scan

For the first six weeks, I focused on fixing the Dungeon Master engine — tackling crashes, freezes, and lots of bugs, all covered in detail in the blogs for those respective weeks. By the end of week 6, the DM engine was fully stabilized for the Amiga version and the game was completable from start to finish.

Adding support for the DOS version of Dungeon Master

Blogs:  7  8  9  10  11  DM-DOS

PR:  #7777

For the next five weeks, I worked on adding support for the DOS version of Dungeon Master. By the end of week 11, the DOS version was fully supported and the game could be played through completely.

Fixes in Avalanche engine

Blogs:  12  Avalanche

PR:  #7837

For the final week, I worked on the Avalanche engine — fixing bugs and implementing missing features, including main menu options, in-game cutscenes, and various other improvements.

Pre-GSoC Contributions

Before the coding period, I made a few contributions to ScummVM.

PRs:

#7297 Fix Broken Pathfinding in QD engine

#7349 Implement missing Intro animation in Lord Avalot d’Argent (Avalanche engine)

#7413 Add scroll & drag functionality in About dialog

#7432 Add fluid scrolling capability to ScummVM and Implement fluid scrolling in About Dialog

#7450 Implement fluid scrolling in List, Grid, Richtext & Scroll Container widgets

#7527 Fix bugs introduced by FluidScroll

#7284 Fix lag and Implement Anti-aliasing in Rich Text widget

#7165  #7096  #7181  #7207  #7216  #7220  #7223 Implement multi-selection and multi-removal in Launcher List and Icon views

Where Things Stand

Both the DM and Avalanche engines are now in a more stable state, free from crashes and bugs, with the DM engine additionally supporting the DOS version.

Closing Thoughts

That wraps up my GSoC 2026 journey. It’s been a great experience and I learned a lot along the way!
Thanks to my mentors, Sev and Strangerke, for their guidance, reviews, and patience throughout the project. And of course, thanks to the ScummVM community for the support and to Google for hosting this amazing program.

Signing off,
Mohit Bankar

Dungeon Master: The DOS Version

Hi everyone, welcome back. This blog covers the code changes made to the DM engine to add support for the DOS version. The previous changes were covered up to this blog. And, I apologize for the lack of screenshots this time — I was implementing and fixing so many things simultaneously that I forgot to capture before/after comparisons, so there won’t be as many visuals as usual.

Right-Side Wall & Door Frame Graphics

In the dungeon view, door frames and side walls on the right side of the hallway rendered distorted or clipped, because horizontal pixel flipping routines were calculating sizes using Amiga graphic indices instead of DOS ones.

Updated loadWallSet() to map platform-aware graphic database indices (k86_FirstWallSetDOS starting at index 86 for DOS, compared to index 77 for Amiga). This ensures copyBitmapAndFlipHorizontal() fetches the exact pixel width and height of DOS left-side wall assets when creating their mirrored right-side counterparts.

Garbled Item Names in Status

Examining or picking up weapons, potions, and dungeon items displayed garbled text in the status message area.

On Amiga, item name strings in the data file were terminated using High-Bit encoding (where the last character had its 7th bit set, e.g. char | 0x80). In the DOS version, string entries were updated to standard null-terminated strings ('\0'). Updated loadObjectNames() to check for kPlatformDOS and read characters until encountering \0, restoring clean item names in the UI log.

Corrupted Wall & Door Frames

Drawing dungeon wall panels and door frames resulted in torn graphics or crashes during rendering transitions.

The pixel-copying routine blitToBitmap() calculated memory offsets using fixed Amiga buffer strides (srcByteWidth * 2). Because DOS standalone graphics have different widths and heights, calculating offsets using Amiga strides led to reading pixels from incorrect memory addresses. Added getBitmapDimensions() to dynamically look up the true pixel dimensions for each DOS wall and door buffer (_bitmapWallSetD3LCR_bitmapWallSetDoorFrameFront, etc.), ensuring accurate pixel placement and preventing out-of-bounds reads.

Loading into dungeon levels still caused heap memory corruption crashes. While the previous fixes ensured pixel coordinates were calculated correctly, the memory buffers holding those flipped wall images were still allocated using hardcoded Amiga dimensions.

On Amiga, memory for flipped wall surfaces was allocated using fixed array sizes (like 128 * 51 for D3 walls or 144 * 71 for D2 walls). Because DOS standalone wall graphics are larger and have different pixel dimensions, flipping them into Amiga-sized buffers wrote pixels past the end of the allocated memory array.

Updated allocateFlippedWallBitmaps() to use getPixelWidth(index) * getPixelHeight(index) for all such buffer allocations, dynamically sizing the DOS wall buffers and preventing memory overflows.

Missing Fonts and Corrupted Graphics

Text in the UI (spell names, character stats, dialogs) was completely invisible or rendered as garbage pixels, and higher-level graphics assets failed to load.

The original unpacking loop stopped at index 532 (the Amiga limit). Updated unpackGraphics() to dynamically unpack up to index 670 for DOS, ensuring all extended DOS graphics assets are decompressed into memory.

Mapping DOS Graphic Database Indices Across the Engine

Monsters, spells, items, wall ornaments, doors, and explosions all rendered as wrong or glitched.  In the DOS version, graphic asset positions inside the graphic file were shifted significantly compared to Amiga.

Upgraded the previous getFontIndex() helper into a universal getGraphicIndex(index) method in DisplayMan to dynamically map all core game graphic offsets for DOS vs Amiga.

Adding Sound

Added soundsDOS table in SoundMan::initConstants(). On DOS, raw sound samples start at graphic index 671 (k671_MetallicThud) up to 712 (k712_MoveSkeleton), compared to indices 533–574 on Amiga.

Solving the Wall Atlas Problem

On Amiga, left, center, and right walls for a given distance were stitched into a single wide atlas image (D3LCR). On DOS, however, left and right walls became standalone, tightly cropped images (D3LD3RD2LD2RD1LD1R). Because the engine was trying to crop side walls out of the center-only DOS atlas, side walls appeared corrupted, torn, or completely blank.

Declared standalone bitmap buffers for DOS side walls: _bitmapWallSetD1L_bitmapWallSetD1R_bitmapWallSetD2L_bitmapWallSetD2R_bitmapWallSetD3L_bitmapWallSetD3R_bitmapWallSetD2L2, and _bitmapWallSetD2R2.

Updated loadWallSet() for kPlatformDOS to load all 40 graphic items per wall set starting at index 86, populating every standalone left and right wall image buffer into memory.

Updated individual wall drawing methods (like drawSquareD3L) to select the new standalone DOS wall bitmap.

Implementing the DOS Layout Tree Engine

The DOS version abandoned fixed coordinate tables for drawing UI zones and dungeon elements, moving to a data-driven hierarchy tree where graphics dynamically calculate positions relative to parent containers.

Implemented the core DOS layout engine (getCoordgetLayoutRecordgetZoneBox) to parse layout records from Graphic 696 and recursively compute dynamic X/Y offsets, width, height, and clipping boundaries for all viewport and UI elements.

Integrating the DOS Layout Engine

Even after loading the correct standalone wall graphics into memory, the dungeon walls on DOS were still completely misplaced, overlapping, or rendering at wrong depths on screen. This happened because the wall drawing routines were still using hardcoded Amiga screen coordinate tables (Frame) instead of calculating dynamic offsets for DOS.

Implemented drawWallSetBitmapDOS() to query the layout engine (getCoord) for each wall zone (kDMZoneWallD3L2 through kDMZoneWallD0R). This dynamically calculates screen coordinates, width, height, and clipping boundaries for every wall.

Integrated drawWallSetBitmapDOS() into all dungeon square drawing routines (drawSquareD3L through drawSquareD0C). This immediately aligned all dungeon walls across all distances (D0 to D4), bringing the DOS 3D dungeon view to life!

Fixing Spell Casting Panel Positioning & Rune Rendering

Selecting a champion to cast spells displayed the rune symbols and spell panel box misaligned or with black rectangle boxes drawn over the UI background.

Used the Layout Tree, placing the spell background box at its exact DOS coordinates.

Updated rune symbol rendering in drawAvailableSymbols() and drawChampionSymbols() to pass kDMColorNoTransparency for DOS instead of kDMColorBlack, preventing solid black boxes from obscuring the spell panel texture.

Corruption When Scaling Distant Ornaments (D2/D3)

Wall ornaments (alcoves, keyholes, lever slots, wall rings) and door buttons seen at a distance (Depth D2 and D3) appeared scrambled, stretched, or corrupted.

When downscaling distant ornaments and door buttons to fit smaller wall views at depths D2 and D3, blitToBitmapShrinkWithPalChange() was passing source dimensions hardcoded from Amiga coordinate tables (coordSetBlueGoat[4] << 1).

Updated drawDoorButton()drawDoorOrnament(), and isDrawnWallOrnAnAlcove() to look up raw DOS asset dimensions.

Mapping DOS Item Names Resource Index

Despite handling string decoding earlier, item names (like "Torch""Screamer Slice""Torch (out)") were reading from the wrong asset offset in the graphics archive on DOS, displaying unrelated bytes instead of item names.

Updated getGraphicIndex() to map kDMObjectNamesGraphicIndice (556) to 694 for DOS.

Fixing Item & Floor Ornament Corruption on D1 Tiles

Items lying on the floor (swords, keys, chests) or floor ornaments (pressure plates, floor grates) on the square directly in front of the player (D1) rendered as torn graphics.

Updated drawFloorOrnamentdrawFloorPitOrStairsBitmap, and T0115015_DrawProjectileAsObject to look up raw DOS asset dimensions using getPixelWidth() and getPixelHeight() instead of Amiga aspect table offsets.

Alternate Endgame Sequence Not Triggering

Stepping on the floor sensor at Level 0 while holding the completed Firestaff failed to trigger the alternate endgame sequence.

Updated processThingAdditionOrRemoval() sensor version check from <= 20 to <= 21 to match the DOS engine version, allowing entrance sensor triggers to fire correctly.

Updated isObjectInPartyPossession() to treat both raw (kDMIconIndiceWeaponTheFirestaff) and completed (kDMIconIndiceWeaponTheFirestaffComplete) Firestaff states as valid matches, including when stored inside carried chests.

 

Along with these, there were many other small changes that are self-explanatory in the commits. You can find all the changes made to support the DOS version in this single PR 7777. Since the PR number is a lucky 7777, I hope the DOS version brings good fortune and fewer bug reports 😄

So that was it for the DOS version of the DM engine. With that, ScummVM now supports both the Amiga and DOS versions of Dungeon Master.

Thank you for reading. See you in the next one — the final GSoC blog!

Avalanche: Bugs, Fixes, and Finishing Touches

Hello everyone, welcome back. This is the blog for the code changes in the Avalanche engine.

Crash on Exit

The game crashed on exit because Outro::run() was writing 350-line graphics onto a 320×200 surface. Calling _vm->_graphics->menuRestoreScreen() first restores the 640×350 resolution before drawing, preventing the out-of-bounds crash.

Missing bottom toolbar

The in-game bottom toolbar (compass, action icons, inventory) was missing when starting a new game or loading a save because drawToolbar() was never called during initialization; adding drawToolbar() in newGame() and replacing an incorrect drawDirection() call in loadGame() forces the toolbar graphics to render immediately.

Implementing missing shortcut keys

Implemented Alt+B (fake spreadsheet boss key), Alt+X (quit game), and Alt+D (secret easter egg message “Wrong game!”).

Crashes During NPC Dialogues

setRoom() and getRoom() crashed with out-of-bounds array access when passed invalid character IDs (like kPeoplePardon or kPeopleNone); adding validation bounds checks (persId < kPeopleAvalot || persId > kPeopleWisewoman) prevents array index overflows on _whereIs[] and safely defaults unallocated characters to kRoomNowhere.

Spludwick is always missing from the laboratory

When entering Spludwick’s laboratory at the start of the game, Spludwick was missing, making it impossible to interact with him or progress the potion quest properly.

_spludwickAtHome was initialized to false instead of true, and the original Pascal room count logic checking whether Spludwick was working at home was missing.

Restoring the default true initialization and the original room calculation logic !((_roomCount[kRoomWiseWomans] % 3) == 1))  ensures Spludwick appears reliably in his laboratory.

Crash when typing password guesses

Typing a password guess that was shorter than the actual secret password (e.g. typing a 3-letter word when a 6-letter password was expected) caused the game to crash.

The parser loop compared every character _vocabulary[pwdId]._word[j] against temp[j]. If temp (the player’s typed word) was shorter than j, accessing temp[j] accessed memory past the string’s length. Adding a bounds check ((j < temp.size()) ? temp[j] : '\0') safely fails the password match without crashing.

Implementing the Missing “Golden Slumbers” Cutscene

When Avy hands the lute to Geida in castle Cardiff, the original game displays an animated blue opening-box transition and scrolls the poem lyrics of “Golden Slumbers” across the screen as a lullaby before Baron du Lustie falls asleep.

This cutscene was missing in ScummVM.

Added reusable methods for MOD audio playback

Implemented playMod() and stopMod() in SoundHandler using ScummVM’s Audio::makeProtrackerStream(). It loads the requested .mod file, creates a ProTracker audio stream, and passes it to ScummVM’s mixer (kMusicSoundType) for background music playback.

Implementing the Original Animated Title Screen
Implementing The Sequel Teaser Preview

Selecting Option 3 (“Preview… perhaps…”) on the main menu was unhooked. Implemented MainMenu::showPreview() to read preview2.avd.

Implementing the Info Document Reader

Selecting Option 4 (‘View the documentation’) or Option 5 (‘Registration info’) on the main menu opens the game’s full text manual (avalot.doc) inside a custom document viewer, matching original DOS viewdocs.pas. To recreate this in ScummVM, I implemented MainMenu::showDoc() to parse and render avalot.doc directly.”

 

That was it for the Avalanche engine. Next blog will be about the DOS version of Dungeon Master. Till then, goodbye 🙂

 

GSoC 2026: Director Engine and Visual Debugger

Hi, I am Ramyak. My work centered on the Macromedia Director preservation effort in ScummVM: extending the ImGui-based visual debugger (DT), fixing engine compatibility bugs surfaced by the Gus games, implementing embedded movie cast members, and building screenshot-diff tooling into the ScummVM buildbot. All links below point to the pull requests.

Please refer to the links at the end of this post for weekly breakdowns.

Key deliverables

  • Movie cast members (#7752):
    embedded Director movies that run as parallel sprites, managing separate execution states while sharing global variables.
  • Visual Debugger:
    • Major features and changes in debug tools like:
      Lingo execution tracer (#7816):
      a flamegraph view inside the debugger that records Lingo execution for performance and control-flow analysis.

  • ImageDiff on buildbot:
    brought screenshot-diff regression testing into the ScummVM buildbot dashboard, plus a set of Director regression test movies, so rendering changes can be caught visually.
pic of the tool from dev chat
  • Games compatibility:
    Mostly for gus games: detection entries and a series of engine fixes (film loops, mouse dispatch, digital video, sound channels) that make the Gus titles playable. Some work was also done on trektech. The goal initially also included The Journeyman Project but since there were a lot of bugs in gus games, I did more work there instead.
movie paused at a breakpoint

Before the coding period I made around 10 contributions building the initial Director visual debugger and fixing film loop rendering, which laid the groundwork for the GSoC work.

Most of the PRs below are merged, three are in review.

Director visual debugger (DT)

  • #7553 Fix bugs and crashes throughout the visual debugger
  • #7564 Improve search and add a Windows panel
  • #7577 Improve cast details, add script browser navigation and keyboard shortcuts
  • #7612 Fix script not rendering in the script viewer
  • #7646 Fix crashes, stale state, and navigation in the debugger
  • #7690 Call-stack highlighting, Cast window improvements, and paused redraw
  • #7781 ImGui debugger improvements (sortable cast lists, thumbnail refreshing)
  • #7816 Add a Lingo execution tracer that records execution as a flamegraph (in review)

Director engine fixes and features

  • #7563 Fix empty cast slot error and immediate sprite drag in D4+
  • #7598 Add detection entries for Gus Goes to Cyberopolis (Windows and Mac)
  • #7614 Add detection entry for Gus Goes to Cybertown
  • #7620 Fix film loop shift when swapping a cast member with Lingo
  • #7633 Fix mouseUp dispatching to the wrong sprite in D4
  • #7727 Fix film loop D4 and D5+ behavior (freeze during pauses)
  • #7752 Implement movie cast members as parallel interactive movies
  • #7780 Fix trail-sprite erasure and 0x0 digital-video sizing
  • #7825 Share sound channels across the Stage and MIAWs (in review)
  • #7854 Fix Lingo point/rect operations and bitmap picture assignment (in review)

Backend

  • #7779 BACKENDS: SDL: Preserve SDL text input for active ImGui text fields

ImageDiff and buildbot infrastructure (scummvm-sites)

  • #39 Integrate the ImageDiff screenshot diff viewer
  • #40 Add pagination and default to the last page
  • #41 Replace image comparison with a file check
  • #42 Add ImageDiff integration using the wsgi-dashboards plugin
  • #43 Fix imports after merging imagediff.py into main.py

Director regression test movies (director-tests)

  • #4 D4-win: Text wrapping test movie with reference rendering
  • #5 D4 test movies for mouseUp dispatch and text wrapping
  • #7 D4-win/D5-win: clickOn manual test movie in both D4 and D5

Timeline

  • May 2026: Community bonding, Introduction
  • Jun to Jul 2026 (Weeks 1 2 3 4 5 6)
    Debugger fixes, Gus game compatibility, ImageDiff on buildbot; midterm passed mid-July.
  • Jul to Aug 2026 (Weeks 7 8 9 10 11 12)
    Movie cast members, film loop behavior, Lingo execution tracer, final polish

GSoC 2026 Final Report

Porting iBASS engine to ScummVM 

Organisation: ScummVM

Contributor name: Priyanshu Kumar

Coding period: 25 May 2026 – 17 August 2026

Over the past few months, I had been working on implementing support for the remastered version of Beneath a Steel Sky in ScummVM’s sky engine and in this final report, I am giving a brief description of what has been done, what is underway and what is yet to be done.

The goal of this project was to incorporate the changes done by the developers of iBASS into the sky engine upstream. That included the enhanced ui icons, separate inventory pathway, enhanced cutscenes including the intro and outro and many more things which I am happy to say that I have largely completed. Now, the game can be played from beginning to the end with minor bugs remaining that I will be working on fixing in the near future.

What’s completed(attaching the work below)-

1. Initial support – Added ibass to detection, overlayed the icons, implemented the mouse input pipeline for ibass and some work on the inventory.

PR – https://github.com/scummvm/scummvm/pull/7565

2. Implemented text chooser

PR – https://github.com/scummvm/scummvm/pull/7634

3. Skip checking for the sky.dnr file for ibass

PR – https://github.com/scummvm/scummvm/pull/7640

4. Fix transparency in inventory icon

PR – https://github.com/scummvm/scummvm/pull/7641

5. Added CgBI decoder to decode the CgBI PNGs for the hint system’s window and implemented the hint system.

PR – https://github.com/scummvm/scummvm/pull/7811

6. Implemented the intro and outro cutscenes and also stretched the graphics to 480X320.

PR – https://github.com/scummvm/scummvm/pull/7850

7. Added hotspots

PR – https://github.com/scummvm/scummvm/pull/7853

And here is the link to all the blogs I wrote during this journey –

https://blogs.scummvm.org/priyanshu/

PRs 5, 6 and 7 are unmerged at the time of writing this report and are subject to review.

What’s yet to be done –

1. There are a few crashes here and there that I need to identify and fix.

2. The hint system needs some more refinement.

3. Support for different languages in the hint system.

4. Extensive testing after stretching the graphics to ensure smooth transition of the game to 480X320 and fix the discrepancies on the go.

This sums up my GSoC 2026 journey and I learnt a lot in these past few months. I would like to extend my gratitude to the whole ScummVM team for supporting, guiding, helping and keeping a check on my work. Special thanks to Eugene Sandulenko and John Willis for mentoring me and for always being there when I needed their help. Looking forward to continue working with such a wonderful and passionate group of people on more such projects.

And to all my readers and those who want to defeat LINC-

BE VIGILANT 😉

Thanks for reading 🙂

Avalanche: End of the Slope

Hi everyone, welcome back! This is the blog for week 12 — and the last one. My GSoC journey comes to an end with this post. This week I implemented the missing features of the Avalanche engine and tackled some bug fixes — and with that, the Avalanche engine is complete! This is a quick post to meet the Tuesday deadline — a detailed blog covering both the DOS version of Dungeon Master and the Avalanche engine is coming tomorrow.

Till then, goodbye and thank you for reading my blogs! 👋