Skip to content

v1.0.0 — Ice Rage for PortMaster

Choose a tag to compare

@EapRules EapRules released this 30 Jul 17:02
· 3 commits to main since this release

Ice Rage running natively on Linux ARM handhelds — no emulator and no Android
runtime. The game's own armeabi-v7a library is loaded straight into a Linux process
by a bionic ELF loader, and the pieces of Android it asks for are implemented by hand.

This download contains zero game content. You supply an APK you own.

You need the OUYA build — the Play one will not work

Package net.mountainsheep.icerage, version 1.8 (October 2013).

This is not a preference. The Google Play release is touch-only, and the engine in
the controller build rejects touchscreen events outright:

[W/native-activity] WARNING: Unknown input source (4098)!

4098 is AINPUT_SOURCE_TOUCHSCREEN. Feed it synthetic fingers and the menus never
respond, no matter what you press.

Install

With the SD card in your computer, do steps 1 and 2 together — they are one trip:

  1. Drop icerage.zip into PortMaster's autoinstall/ folder
    (ArkOS/dArkOS: /roms/tools/PortMaster/autoinstall/, muOS: /mmc/MUOS/PortMaster/autoinstall/,
    AmberELEC/ROCKNIX: /roms/ports/PortMaster/autoinstall/)
  2. Put your APK at ports/icerage/icerage.apk — create the folder if it is not
    there; the install will not remove it. Watch the extension: some sites hand you
    .5apk or .apk.zip, and it has to end in .apk.

Then, with the card back in the console:

  1. Open PortMaster and let it install
  2. Reboot the console — not optional, see below
  3. Launch Ice Rage from Ports

Two things that make a good install look broken

The game will not appear in Ports until you reboot. PortMaster installs it
correctly and then says nothing more — the autoinstall path never refreshes the
frontend, so EmulationStation keeps showing the list it loaded at boot. Everything is
already on the card.

Do not press Reinstall or Uninstall under Manage Ports. Both re-download from
PortMaster's catalogue, where this port does not exist, so they fail after removing
the port — and Uninstall deletes the folder with your APK inside it. To reinstall,
drop the zip into autoinstall/ again.

Controls

Control Does
Left stick skate
A (right-hand button) shoot, check, accept
B (bottom button) secondary / back
L1, R1 shoulder buttons, also act in the menus
Start the game's own menu
Select nothing

Select really does nothing: the engine dispatches keys through a jump table covering
Android keycodes 19–107, so BUTTON_SELECT (109) never reaches it. Neither does
BACK (4) nor BUTTON_START (108) — which is why Start sends MENU (82).

If the buttons land wrong, your handheld is lettered Xbox style — set
ICERAGE_FACE_KEYS=legacy or ICERAGE_FACE_LAYOUT=xbox in Ice Rage.sh.

Requirements

armhf userland with 32-bit GPU libraries (CONFIG_COMPAT + 32-bit Mali), glibc 2.38+.
Same bar as box86 and GMLoader.

Tested on an R36S (RK3326, Mali-G31) running dArkOSRE. That is the only device
it has run on — anything else is untested rather than unsupported, and reports are
welcome either way.

Known issues

  • The log carries a warning saying the music will be silent. Ignore it
    audio works, music included. The game asks OpenSL ES for a second player fed a
    compressed stream that the platform is meant to decode, which this port cannot
    do; but the game never depends on it and decodes its own Ogg elsewhere. The
    warning describes that unused player, not what you hear.
  • The game asks for 1920×1080 on a 640×480 panel. It renders anyway, but the layout
    was not drawn for this aspect ratio. The port ships a 4:3 loading screen because the
    game's own is 16:9 and sat letterboxed.
  • OUYA store integration is stubbed — purchases and player-account lookups return
    empty, so the game behaves as if everything is unlocked and there is no network.
  • A few cosmetic textures are missing from this build of the game
    (Texture not found: ...Santa_Hat.png); they belong to content the APK does not
    carry.

Credits

Game by Mountain Sheep. Port by EapRules.

The ELF loader, the fake JNI and the bionic libc thunks derive from
gmloader-next by JohnnyonFlame,
itself descended from Andy Nguyen's Vita so-loader. Released under GPL-3.0.