Git Product home page Git Product logo

oculusxrpicolayer's Introduction

OculusXRPicoLayer

An attempt to port Quest games over to PICO.

This replaces the following libs:

  • libOculusXRPlugin.so
  • libovrplatformloader.so
  • libOVRPlugin.so

And replaces them with a proxy, that relays functions/information over to the PICO libs.

Only a limited amount of Unity games are supported.
Unreal games are not supported.

Building

  • Install the Android NDK
    Required version: r21e (21.4.7075529).
    https://developer.android.com/ndk/downloads
    (I recommend you install it via Android Studio)

  • Run either the compile_windows.ps1 powershell script or the compile_linux.bash bash script.
    Don't forget to add the toolchain /bin/ to your path!
    (TODO is to make a Makefile...)

Patching games

You will need the following

You'll need the following files (both from my repo):
(Oculus)

  • libOculusXRPlugin.so
  • libovrplatformloader.so
  • libOVRPlugin.so

(Pico)

  • libPxrPlatform.so
  • libpxr_api.so
  • libpxrplatformloader.so

(C++)

  • libc++_shared.so

Make sure you take the ones I committed to the repo, they have some patched strings/instructions to make them work.

  1. Build or download the required libs.
  2. Decompress the APK file with apktools.
  3. Replace/add the library files into /lib/arm64-v8a
  4. In AndroidManifest.xml, inside of <application>...</application> add:
<meta-data android:name="pvr.app.type" android:value="vr"/>
  1. Then open /assets/bin/Data/UnitySubsystems/OculusXRPlugin/UnitySubsystemsManifest.json
  2. Set the name to "name": "PxrPlatform",

List of working games

Game Works Doesn't work
Keep Talking and Nobody Explodes Fully functional /
Waltz of the Wizard Sound No video
Job Simulator Video
Controllers
Audio glitches
Physics glitches
I Expect You To Die / Won't work without custom implementation

Future

Currently only a limited amount of Unity games actually functionally work.
Unreal games will not work without further reverse engineering efforts.

Figuring out why certain games don't work is going to require A LOT of reverse engineering.
(Mostly just incompatible API calls with Oculus & PICO, different GUID's, etc, that can not simply just be solved by using a proxy)

Why certain games don't work:

  • With some games, a proprietary method is used by Oculus, that requires me to RE the Oculus SDK in massive detail.
  • A custom implementation of the: Unity API and the Unreal API will have to be done.
    Which includes RE'ing the OpenXR API that is used on PICO systems.
    (On the plus side, most parts are open source)

oculusxrpicolayer's People

Contributors

thoricelli avatar

Stargazers

ljlVink avatar  avatar

Watchers

 avatar

oculusxrpicolayer's Issues

vrchat apk and more applications?

There is a version of vrchat in pico 4 and the apk exists. I have a pico neo 3 and it has a bug. There is a discord channel and server called owomushi. You will find there and there is also a telegram from another one that also shares quest and pico apks.
image
If this works well or maybe I should extract the apk on a quest device

Can you do a better explanation of the process?

Can you do a better explanation of the process to transform an application from quest to pico? To do my tests with apks.

When I download it and try to run it I get errors, and I don't know if I am missing dependencies or if I am doing something wrong.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.