Official Thimbleweed Park Forums

AI Neural Net upscaling of old pixel backgrounds


I finally replicated Manga109 quality and made it slightly even better. I updated my ESRGAN blog with some results. Image below is my new pre-trained quality. I didnt do any post touches.

More here:


Can someone do some “Broken Sword 1” backgrounds using this tech? I would love to see those backgrounds after the upres process.

I would try it myself, but don’t understand how it works…


I will look at it…


Thanks :pray:

1 Like

Here are some results, backgrounds looks pretty smooth, so it could work

2560x1600 res


His face… :rofl:


Monkey Island 2 went pretty well too :slight_smile:



Looks gorgeous, thanks for doing that

1 Like

Which SCUMM utility did you use and how far did you get? Did the game use the updated graphics?
I also suppose you have to force the game to set bigger screen resolution…?


I didn’t get very far obviously, as soon as I realised that also the z-planes, object locations and what not need to be upscaled too.
Regardless of the tool you use to decompile and recompile, that means a LOT of work.

I used Scumm Editor and tried it on the first two Monkey Island games.

1 Like

I hoped you had used some other tool. I had already tried to examine files from Curse with SCUMM editor but it had not worked:

ScummEditor is a tool that can be used to export and import back graphics on Scumm v5 and v6 games.

Curse of Monkey Island 1997 SCUMM version 8.1.0


I’m somewhat surprised you got anywhere at all tbh. Isn’t that version of SCUMM limited to 320x200 or something? Or is that just something ScummVM shrugs at and happily outputs 3840x2160 if that’s what you give it?


Well, I did. Scummeditor is just an easy way for me to find which image is supposed to go where.
I also used scummrp and some hex editors, but without success. One of the tools (forgot which one) also has the image size in a field you can edit, so I tried to do that but of course the thing returned an error that the sizes didn’t match or something.
But again, even if you can get scumm/scummVM to accept the upscaled resolution, there is still all the other work of upscaling z-planes and hotspots and so on. Without the source code, that is not a thing you can do over a few weekends.
One option could be to create a new build of scummVM. I did that to fix the prepositions in the translation of Maniac Mansion. Of course that’s still peanuts compared to HD graphics support, bit it could be a technical possibility.

Do you have any other ideas in mind?

nope. It slaps an error in your face :slight_smile:
For the older scumm games, the resolution isn’t always fixed either, but they might be in multiples of a certain base width. This is linked to more standard screen resolutions back then, I guess.

1 Like

If it would be working at least with classic Mi1 and MI2, that would be great, but I believe there would be lots of modifications required.


Hm, custom build of SCUMMVM sounds like a feasible solution. It would not be necessary to modify any original data and coordinates. The upscaled images could be put to some subdir and use something like this:

if exist ("hd\lfl01.png")

Unfortunately I don’t really feel like programming it - I did not like even the compiling instructions. =}

I also suppose SCUMM sometimes relies on 8-bit palette animations (for water and similar things) so the resized images would have to be degraded to 256 colours to make it work… That would really ruin the visual quality.

1 Like

Well, MI1 and MI2 already have Special Editions. It’s not the same thing (the new graphics in MI1SE is average at best but I quite like MI2SE) but it’s something that would be used for comparison.


From that comment, I gather you didn’t try it?

Unless you want all your objects and hotspots to be in their original coordinates in the mega-upscaled-calculated-by-neural-network background image, yes that is necessary.
Unless you like to create a hidden object game in the purest sense of the word, where you need to scan the bottom left half or so. :slight_smile:

1 Like

From that comment, I gather you didn’t try it?

That’s right. I don’t configure compilers very often but I always encounter some unexpected problems (missing libraries, wrong version of headers, etc.) I don’t even have VC2015 installed and I suspect transition to VC2017 would cause more problems… :neutral_face:

Unless you want all your objects and hotspots to be in their original coordinates in the mega-upscaled-calculated-by-neural-network background image, yes that is necessary.

I don’t think so. :slightly_smiling_face:
When I was converting our game from 640x480 to variable resolutions I did not changed the internal coordinates at all. I just added a function that counted the “new” coordinates based on the current resolution and it was used only in Paint() methods of all game objects.

	// original version
	dx8.BltSprite(&rect, gfx, &frameRect, 2);

	// with conversion
        rect = dx8.Coord(rect);
	dx8.BltSprite(&rect, gfx, &frameRect, 2);

Of course, with mouse you need reverse function too and things could get messy with two different sizes of bitmaps (the original size and the real upscaled size).


I don’t like any of those…even MI2SE looks like that put more effort into it.
Anyway, I would definitely used my ESRGAN models to make HD version that will look great with my PS touches if anybody would like to try it.


But since we have the Special Editions you could just replace those graphic assets instead of modifying the original MI1 and MI2 resources/engine.

So you are a programmer? I’m a little bit shocked :slight_smile: that you don’t like their compiling instructions, they are straight forward and pretty simple.

1 Like