Repository navigation
Home
CubeEvil4 is an unofficial, native Android port of Resident Evil 4 for the Nintendo GameCube.
It is not a remake and not an emulator. The app runs the original game code, compiled for ARM from the complete decompilation in this repository. Only the GameCube platform layer (graphics, video timing, OS, disc, controller, sound, memory card, ARAM, movies) is replaced by Android code.
CubeEvil4 contains no game data. You need your own images of your game discs.
Status: Release Candidate. The whole game can be played from start to finish. Bugs can still occur, because the game is based on a debug source code that dates several months before the release version.
Quick links: Install · Supported discs · Basic features · Extra features · Performance · Known issues · Discord · Releases
- What do I need to install the game?
- Which discs are supported?
- First start in 3 steps
- What are the basic features?
- What are the additional features?
- Which features need more performance?
- Tested devices
- Known issues and notes
- Legal
| Minimum | Recommended | |
|---|---|---|
| Android | 7.0 | 10.0 (Vulkan) |
| Processor | ARM, 32- or 64-bit | – |
| Graphics | OpenGL ES 3.0 | – |
| RAM | 2 GB | 4 GB or more |
| Free storage | about 3 GB (to import both discs) | – |
| Input | Game controller (built in, USB or Bluetooth) or touch screen | Game controller |
| Gyroscope | – | Optional, for gyro aiming |
| Game data | Your own disc images (ISO or GCM) of both discs of a supported version | – |
Also needed:
- The APK from the Releases page.
- Your own disc images. They are not included and will never be distributed with the app.
CubeEvil4 supports the following versions of Resident Evil 4 for the GameCube:
| Version | Region | Discs | Image formats |
|---|---|---|---|
| Retail release | US (NTSC-U) | 2 | ISO or GCM |
| Retail release | EU (PAL) | 2 | ISO or GCM |
| Retail release | JP (NTSC-J) | 2 | ISO or GCM |
Debug build G4BE08 (prototype, Nov 25, 2004) |
– | 2 | ISO or GCM |
- Both discs of your version are required. The game starts only once both discs are imported.
- Use images of one version for both discs. Do not mix discs of different versions.
- Images are imported into the app, so you need enough free storage (about 3 GB).
The code of the port is based on the decompilation of the debug build G4BE08. With the debug build, the game code is the same as in the repository; see Known issues and notes.
- Install the APK and open CubeEvil4.
- Choose Import Disc 1 and Import Disc 2 and pick your image files.
- Choose Start game.
If your controller's face buttons are labelled the other way round, tick "Swap A/B and X/Y" on the start screen.
Game and code
- The complete original game code (all 114 REL modules) runs natively as ARM32 (
armeabi-v7a) and ARM64 (arm64-v8a) in one APK.
Graphics
- The game's own GX commands are translated to OpenGL ES 3: logos, menus, rooms, characters, effects and subtitles.
- Rendering at 1080p and above.
Sound and movies
- Sound uses the original SDK sound libraries with an emulated DSP.
- Movies play through the original CRI middleware, with picture and ADX sound.
Saving
- The memory card is a file inside the app. Save at the typewriter as in the original.
- You can also use Instant Save.
Controls
- Controller: works like the GameCube pad, including vibration where the game uses rumble.
- Touch controls: appear on their own when no controller is connected. Touch also works in the inventory.
App menu
- Press SELECT (touch controls: MENU) to open the app menu. B returns to the game.
- Available in the phone's language where a translation exists: Arabic, Chinese (simplified), French, German, Hindi, Italian, Portuguese, Russian and Spanish. English otherwise. On Android 13 and later the language can also be set per app under Settings → Apps → CubeEvil4 → Language.
| Controller | GameCube | In the game |
|---|---|---|
| A, B, X, Y | A, B, X, Y | by their labels |
| Left stick | Control stick | move |
| D-pad / START | D-pad / START | as on the GameCube |
| R2 | R | ready weapon |
| L2 | L | knife |
| R1 | Z | map |
| SELECT | – | app menu |
Instant Save lets you save and resume your progress at any time, so you do not have to reach a typewriter first. It works next to the normal memory card saves.
Filters change the look of the picture. You can switch them on and off in the app menu. They are optional and do not change the game itself.
Cheats are optional and can be switched on in the app menu.
| Option | Choices / notes |
|---|---|
| Resolution | Dynamic or 1× – 4× |
| Anti-aliasing | optional |
| Texture filter | anisotropic filtering, optional |
| Picture format | 4:3 (GC), 4:3, 16:9 or Stretched |
| Depth of field | optional |
| FPS display | optional |
| 60 FPS | experimental |
| Option | What it does |
|---|---|
| Alternate Controls | Second layout: aim with the right stick while L1 or L2 is held. R2 fires, L2 readies the weapon, R1 opens the inventory, L1 readies the knife, X calls Ashley, Y opens the map. |
| Gyro aiming | Turn the device to move the aim while aiming a gun, looking through a scope or aiming the harpoon on the lake. Sensitivity slider included. |
| Knife by swipe | A quick swipe across the picture draws the knife and slashes. Swipe up or down to slash high or low. |
| Latch L and R | One press holds L or R until the next press. With R latched, Leon keeps the weapon ready. |
| Latch B | One press holds B until the next press. Leon keeps running. |
| Touch Controls | Auto (shown without a controller, a tap shows them, a button hides them), Force (always shown) or Suppress (hidden while a controller is connected). |
Latching works on touch controls and on a controller.
- On screen: A, B, X, Y, Z, L, R, START, MENU (= SELECT), D-pad, a move stick and a look zone (the C stick).
- Inventory: tap items, files and the map; swipe left or right to change the tab.
- Quick-time events: tap the prompt (or anywhere on the picture) to press its buttons. Tap repeatedly to mash.
- Export and import saves as
.gci, compatible with Dolphin and the GameCube.
- Send or save a report for bug reports.
- R3 = graphics capture (only when this option is switched on).
The base game runs natively and is the same on every device. How demanding it is depends mostly on the graphics options you switch on. The table below is a rough guide; the real impact depends on your device.
| Feature | Performance impact | Notes |
|---|---|---|
| Resolution above 1× (2× – 4×) | 🔴 High | The load grows quickly with the number of pixels. |
| 60 FPS (experimental) | 🔴 High | The device has to produce more frames per second. |
| Anti-aliasing | 🟠 Medium to high | |
| Depth of field | 🟠 Medium to high | |
| Anisotropic texture filter | 🟡 Low to medium | |
| Filters | 🟡 Depends on the filter | |
| Dynamic resolution | 🟡 Varies | Meant to adapt the picture to the device. |
| FPS display | 🟢 Very low | |
| Picture format (4:3, 16:9, Stretched) | 🟢 Very low | |
| Gyro aiming, knife by swipe, latching, Alternate Controls, touch controls | 🟢 Very low | Input only. |
| Cheats, memory card import / export, error report | 🟢 None while playing |
Tips for weaker devices
- Start with the default settings and raise one option at a time.
- Resolution and 60 FPS have the biggest effect on speed; try these first if the game stutters.
- A device with 4 GB RAM or more is recommended.
- An effect can stutter briefly the first time it appears while its shader is built. The app prepares the 4266 shaders it already knows (village, lake, much of the castle, the island finale) ahead of time; the rest follows from testers' reports.
- Release Candidate: the whole game is playable, but bugs can still occur. The game is based on a debug source code that dates several months before the release version.
- First-time stutter of effects while shaders are built (see performance).
Found a bug? Use the error report in the app menu and tell us on Discord or in the issues.
CubeEvil4 is an unofficial fan project. It is not affiliated with or endorsed by Capcom, Nintendo or CRI Middleware. Resident Evil is a trademark of Capcom and is named here only to say which game the port runs.
The reconstructed game and SDK source is the property of Capcom, Nintendo and CRI Middleware and is published for research and preservation only. No game data is included or distributed; you need your own discs. The build scripts, tools, configuration and documentation written for this project are released under CC0.
Back to the Home page · Source code