This recompilation is a byproduct of developing gbarecomp — the games (and, apparently, movies) are the proving ground; the framework is the goal.
Static recompilation of Shrek Movie (Game Boy Advance Video, USA) to native
PC, built on gbarecomp with the shared
recomp-ui launcher.
Shrek boots, reaches the menu, and plays the movie in a responsive native PC window.
This is a 64 MiB GBA Video Movie Pak, twice the normal GBA ROM address
window. Its Matrix Memory cartridge controller pages compressed video data
through a small aperture. gbarecomp models that mapper natively, allowing the
player to reach the cartridge's second 32 MiB half.
The Movie Pak also copies and updates parts of its player while the film runs.
gbarecomp recompiles the stable BIOS and cartridge code ahead of time, then
safely follows the changing player code from live memory during playback. The
result preserves the original Movie Pak's behavior without freezing the host
window.
Generated translation is intentionally omitted from Git because it derives from the copyrighted ROM; the build tools regenerate it from your own dump.
| Input | Local path | SHA-1 |
|---|---|---|
Shrek Movie (USA, MSKE, revision 5) |
roms/shrek_movie_usa.gba |
2dedea86ec289a0e31089299613d9f74cca03609 |
| Game Boy Advance BIOS | gbarecomp/bios/gba_bios.bin |
300c20df6731a33952ded8c436f7f186d25d3492 |
The runtime refuses unrecognized inputs. This repository contains neither file; you must supply your own legally dumped cartridge image and BIOS.
- Clone this repository with its submodules.
- Place the verified ROM and BIOS at the paths above.
- Build using the instructions below.
- Run
build/ShrekMovieRecomp.exe. - Press A on Play, because we have somehow recompiled a movie.
recomp-ui provides the pre-boot launcher and in-game settings. It remembers
your local ROM and BIOS selections after the first launch.
| GBA button | Keyboard |
|---|---|
| D-Pad | Arrow keys |
| A / B | Z / X |
| L / R | A / S |
| Start | Enter |
| Select | Backspace |
Save states use Shift+F1–F9 to save and F1–F9 to load.
Windows prerequisites: CMake 3.20+, Ninja, an MSYS2 MinGW64 compiler, and SDL2.
git clone --recurse-submodules https://github.com/mstan/ShrekGBAVideoRecomp.git
cd ShrekGBAVideoRecomp
cmake -S gbarecomp -B gbarecomp/build -G Ninja
cmake --build gbarecomp/build --target gba_recompile
# Generate the ignored ROM translation and recompiled BIOS output.
pwsh tools/regen.ps1
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target ShrekMovieRecompThe generated translation unit is large; expect the first build to take a while.
The headless smoke route runs 600 frames, validates static coverage and Matrix mapping, and captures a screenshot:
pwsh tools/test-playback.ps1The opt-in complete-film route is:
pwsh tools/test-full-movie.ps1The long route represents roughly the duration of the film at 60 GBA frames per second and is intentionally excluded from routine regression runs.
This project contains no ROM, Nintendo BIOS, decoded movie frames, audio, or other cartridge content. You must supply your own legally dumped inputs.
Shrek and related names and artwork are trademarks or copyrights of their respective owners. Nintendo and Game Boy Advance are trademarks of Nintendo. This project is an unaffiliated, non-commercial preservation and research effort.
Built with gbarecomp, because the Game
Boy Advance was the best platform Shrek was released on.
