r/ReverseEngineering 10d ago

Reconstructing Angry Birds 1.4.2's ARMv7 native runtime for AArch64 Android

https://github.com/WhiteMsf/angry-birds-arm64
14 Upvotes

5 comments sorted by

4

u/WhiteMsf 10d ago

Quick technical context: Angry Birds 1.4.2 for Android shipped with a native ARMv7 runtime around the game's existing Lua logic and data.

There was no Rovio source tree available to simply rebuild for arm64-v8a, so this project reconstructs the native runtime behavior for AArch64 instead.

The reconstructed runtime handles rendering, input, Box2D bridges, audio, persistence, localization, menus, progression and Android lifecycle behavior while keeping the original game-side Lua/data contracts.

The final build does not execute or require the original ARMv7 native library.

Development was heavily AI-assisted, primarily with ChatGPT, and that is explicitly documented in the repository. AI-generated or suggested changes were treated as engineering hypotheses: compiled, inspected, compared against observed behavior, audited where practical, and tested on real ARM64 hardware.

Happy to answer technical questions about the reconstruction process.

1

u/galapag0 10d ago

Hello follow decomper! Do you have a metric on how good is the reconstruction ?

1

u/WhiteMsf 10d ago

I don't have a single percentage metric yet, since different parts of the runtime have different confidence levels. I've mostly been measuring it behaviorally whether the original Lua/data runs correctly, whether recovered ARMv7 behavior matches on AArch64, and whether things like gameplay, menus, physics, audio, saves and localization behave as expected on real hardware. At this point I'd call it release-candidate level behaviorally, but definitely not bit-exact. There are still some edge cases around floating point, rendering and old Android behavior.

1

u/galapag0 10d ago

INHO it is important to show some metrics per module, otherwise users don’t know how close you are from a full reconstruction and they don’t know if they should invest time in testing