Smacker Swapping

Reverse engineering LEGO Island's primary asset packaging format
Post Reply
User avatar
MattKC
Site Admin
Posts: 323
Joined: Mon Aug 22, 2022 1:05 am
Contact:

Smacker Swapping

Post by MattKC »

Yes, I know, the title sounds dirty. What can I do, it wasn't my choice to call a video format "Smacker".

With better SI reconstructing in si-edit, it's now possible to reconstruct a lot of the simple SI files, such as those that show intro videos on startup. The Smacker parser is fairly flexible, taking several resolutions, frame rates, and compression ratios, however it appears some considerations must be made in certain circumstances.

Firstly, while SI files can specify the screen location (top left XY) of a Smacker to be shown, the game appears to have very limited support for scaling. It's capable of doubling a 320x240 movie to 640x480 with the use of LegoVideoManager::EnableFullScreenMovie, but that seems to be it. Further, the use of this function appears to cause issues when it comes to replacing.

If a 320x240 video usually passed through EnableFullScreenMovie is replaced with a larger video, the game appears to crash. This was discovered by attempting to replace the LEGO opening logo. Replacing a non "full screen" movie with a higher resolution one has no issues, as confirmed by replacing the Mindscape logo, which is inexplicably in 640x480 instead (seemingly the only SMK in the whole game to be). This can currently be worked around by disabling EnableFullScreenMovie, however this will cause 320x240 videos to be unscaled and only fill a quarter of the screen.

With that, it's possible to replace both intro logos with higher resolution variants:
User avatar
MattKC
Site Admin
Posts: 323
Joined: Mon Aug 22, 2022 1:05 am
Contact:

Re: Smacker swapping

Post by MattKC »

Post Reply