# Ottsel

A native iPad, iPhone and Mac port of Jak and Daxter: The Precursor Legacy, built on OpenGOAL's decompilation of the game.
Naughty Dog's original game code, decompiled into source by OpenGOAL and compiled ahead of time to signed ARM64. No emulator, no JIT. Touch controls, controllers, TV output, cheats, texture packs and a Play as Mario mod.

iPad, iPhone and Mac iOS and iPadOS 18.5+ A port of OpenGOAL's decompilation Runs on a physical iPad at 60 fps OpenGL ES 3.0 on Metal through ANGLE Game code compiled ahead of time, no JIT Developer preview ISC License Game data not included Build Ottsel with PadMint Join the Discord

![Jak running through Geyser Rock's training course on iPad, steered by the floating move stick](docs/readme/ottsel-training-touch.jpg) > [!IMPORTANT] > **Bring your own disc.** Ottsel builds from your own disc image of *Jak and Daxter: The Precursor > Legacy* for PlayStation 2: **USA, `SCUS-97124`, the original Black Label release**. The build checks > the disc and stops on the Greatest Hits, PAL, Japanese and Korean versions > ([which disc exactly](#which-disc-you-need)). This repository contains no disc image, extracted game > files or saves. > > **Developer preview.** Ottsel runs on a physical iPad Pro 12.9-inch (M2) at the iPad's full resolution > and 60 fps, by touch or with a controller, and on Apple Silicon Macs. It has not run on a physical iPhone > yet. There is no download: you build your own copy on an Apple Silicon Mac, with > [PadMint](#build-your-own-with-padmint) or the scripts in this repository. > > **AI disclosure:** Ottsel uses substantial AI assistance for code, tests, documentation, debugging and > maintenance. There is no audited percentage of AI-generated code. Status and test records describe > what was checked. This disclosure concerns Ottsel's workflow, not the authorship of OpenGOAL. ## What is Ottsel? Ottsel is a **decompilation port**. The [OpenGOAL](https://github.com/open-goal/jak-project) project decompiled Jak and Daxter's PlayStation 2 code back into readable source and rebuilt the game natively for PC. Ottsel compiles that same source for iPad, iPhone and Mac and wraps it in an app made for them. | Question | Answer | | --- | --- | | Is it a decompilation? | Yes. The game's code is OpenGOAL's decompiled source of Naughty Dog's original code, compiled for Apple's ARM64 chips | | Is it an emulator? | No. Nothing emulates a PlayStation 2; the game runs as native code | | Is it a static recompilation? | No. Static recompilations such as [BlueWake](https://github.com/chrissotraidis/bluewake) translate a disc's machine code directly. Ottsel compiles human-readable source | | Is it a remake? | No. The gameplay is the original game's own logic; only the parts that once talked to PS2 hardware (graphics, sound, input, memory card) are OpenGOAL's replacements | | Who made what? | OpenGOAL's team decompiled the game and wrote its compiler, runtime and renderer. Ottsel adds the ARM64 compiler backend, the signed-code loader that iOS requires, and the iPad, iPhone and Mac app | | Is the game in this repository? | No. The decompiled source comes from OpenGOAL's repository when you build, and the levels, textures, music and voices come from your own disc | ## How Ottsel works Naughty Dog wrote Jak and Daxter in GOAL, their own Lisp-based language, and shipped it as compiled PlayStation 2 code. OpenGOAL turned that compiled code back into readable GOAL source with a decompiler, cleaned it up by hand, and wrote a new GOAL compiler, a C++ runtime and an OpenGL renderer so it runs natively on PC. Ottsel takes that to iPad, iPhone and Mac. OpenGOAL normally compiles and loads the game's code while it runs, and iOS does not allow an app to create executable code. Ottsel therefore compiles all of it to ARM64 on your Mac, ahead of time, and signs every module into the app like ordinary app code; loading code at run time is fatal by design. OpenGOAL's renderer runs on Metal through ANGLE, and Ottsel wraps the game in an app: touch controls, controller and keyboard input, TV output, the ••• menu (the menu bar on a Mac), saves and logging. Your disc supplies everything that is art and data rather than code: levels, textures, models, music, sound and text. OpenGOAL's extractor pulls these out of your disc image on your Mac, and they travel to your device in a game-data folder that never enters this repository. ```mermaid flowchart LR src["OpenGOAL's game source
(decompiled GOAL, goal_src/jak1)"] --> goalc["goalc with Ottsel's
ARM64 backend"] goalc --> code["518 signed ARM64
code modules"] disc["Your disc image"] --> extractor["OpenGOAL extractor"] extractor --> pack["Game-data folder
levels, textures, audio, text"] shell["Ottsel's app
(src/shell)"] --> app["Ottsel on iPad, iPhone or Mac"] code --> app pack --> app ``` | Piece | Where it comes from | | --- | --- | | The game's code (534 decompiled GOAL source files) | OpenGOAL's repository at a pinned commit, fetched by the build into `out/` | | Ottsel's changes to OpenGOAL | [`patches/ottsel-jak-project.patch`](patches/ottsel-jak-project.patch): the ARM64 compiler backend, the signed-module loader, the iOS and Mac runtime, renderer, sound and input work, and small changes to 30 of the game's GOAL files | | The app | [`src/shell/`](src/shell/): boot, touch controls, the ••• menu and Mac menu bar, TV output, the Mario mod, logging and the icon | | Levels, textures, audio and text | Your disc, through OpenGOAL's extractor, into your game-data folder | | Mario, for Play as Mario | [libsm64](https://github.com/libsm64/libsm64) at a pinned commit with [`patches/libsm64-ottsel-pose.patch`](patches/libsm64-ottsel-pose.patch); his animations, textures and voice come from your own Super Mario 64 ROM when you play | | OpenGL ES on Metal | [ANGLE](https://chromium.googlesource.com/angle/angle), downloaded prebuilt by the build | This repository holds Ottsel's own code, its build scripts and its patches. Everything else is fetched, downloaded or extracted from your disc when you build. ## Get Ottsel | You play on | Status | What to do | | --- | --- | --- | | **iPad** | Runs on an iPad Pro 12.9-inch (M2) at 60 fps | [Build your own](#build-your-own-with-padmint), then install it with Sideloadly or Xcode | | **iPhone** | The same app; tested in the Simulator, not yet on a physical iPhone | Same as iPad | | **Mac** (Apple silicon) | Runs at 60 fps on an M3 Max; not yet played start to finish | [Build your own](#build-your-own-with-padmint) Mac app | | Ready-made download | Not available | The app you build holds files made from your disc. **It is yours alone: never share or upload it.** | **Need help or found a bug?** Join the [Discord](https://discord.gg/xwHfUD2bxW), use **••• → Help & Feedback → Report a Problem** in the app, or open a [device report](https://github.com/chrissotraidis/ottsel/issues/new?template=device_report.yml) or [bug report](https://github.com/chrissotraidis/ottsel/issues/new?template=bug_report.yml). A report from an iPad, iPhone or Mac not listed here is the most useful thing you can send right now. ## Which disc you need | | What Ottsel needs | Details | | --- | --- | --- | | **Jak and Daxter** | Your own PS2 disc image (`.iso`): *Jak and Daxter: The Precursor Legacy*, USA, serial `SCUS-97124`, the original Black Label release (OpenGOAL calls it `ntsc_v1`) | Tested with `Jak and Daxter - The Precursor Legacy (USA) (En,Fr,De,Es,It).iso`: 1,460,535,296 bytes, SHA-256 `139086ffd50b5713ea71d3faa3d4cb1793291e3c575c0fb5418131d116481e7b`. The build checks the game's files rather than the image's hash, so another clean dump of the same disc should work too | | Not supported yet | Greatest Hits (also `SCUS-97124`, OpenGOAL `ntsc_v2`), PAL (`SCES-50361`), Japan (`SCPS-15021`), Korea (`SCPS-56003`) | The build stops with a message naming the disc it needs | | **Super Mario 64** (optional) | Your own US ROM (`.z64`, `.v64` or `.n64`, 8 MB) | Only for **Play as Mario**, added in the app, never at build time. Tested with the US `.z64` whose SHA-1 is `9bef1128717f958171a4afac3ed78ee2bb4e86ce` | ## Build your own with PadMint **No Mac?** Building Ottsel for iPhone or iPad needs an Apple Silicon Mac today. Ottsel reads your own disc image while it builds, so it can't use [GitHub's Mac](https://github.com/chrissotraidis/padmint#no-mac-build-on-githubs-mac) the way some other ports do: that would mean uploading your game file. A Windows build is planned; [PadMint's Windows list](https://github.com/chrissotraidis/padmint/blob/main/docs/WINDOWS.md) shows where it stands. [PadMint](https://github.com/chrissotraidis/padmint) builds Ottsel on an Apple Silicon Mac from your own disc. It makes two things: the app (an `.ipa` for iPhone and iPad, or a zipped Mac app) and an **Ottsel game data** folder made from your disc, which you import in the app once. You need: - a Mac with Apple silicon, full Xcode with its iOS platform, and about 20 GB of free space - `brew install cmake ninja ripgrep glslang spirv-cross` - your disc image ([which one](#which-disc-you-need)) - for iPhone and iPad: iOS or iPadOS 18.5 or later with Developer Mode on, and an Apple ID to sign the app with Sideloadly or Xcode (a free Apple ID works, but its apps expire after seven days) Download [PadMint](https://github.com/chrissotraidis/padmint/releases/latest) (0.5.2 or newer), unzip it, double-click `PadMint.command`, choose Ottsel and your disc image, and click **Make my copy**. > [!NOTE] > To run the same recipe ([`padmint.json`](padmint.json)) by hand, use a checkout of PadMint and of this > repository: > > ```sh > git clone https://github.com/chrissotraidis/padmint > git clone https://github.com/chrissotraidis/ottsel > cd padmint > python3 -m padmint build ottsel --target ios --repo ../ottsel \ > --revision "$(git -C ../ottsel rev-parse HEAD)" --disc "/path/to/your/jak1.iso" > ``` > > Use `--target macos` for the Mac app. PadMint prints where it saved the app; the game-data folder sits > beside it with `.data` added to the name. **On iPhone or iPad:** 1. Install the `.ipa` with [Sideloadly](https://sideloadly.io), AltStore or Xcode. 2. Copy the game-data folder to the device: iCloud Drive, a USB drive, or Finder (select the device, open **Files** and drag the folder onto **Ottsel**). 3. Open Ottsel, choose **••• → Game Data → Import Game Data…**, pick that folder, then close and reopen Ottsel. It checks the folder on launch and keeps it. **On a Mac:** unzip the app, move **Ottsel** to Applications and open it. Choose **Game Data → Import Game Data…** in the menu bar, pick the game-data folder, then quit and reopen Ottsel. Install updates over the existing app (on iPhone and iPad, with the same Apple ID): your saves, settings and game data stay. Deleting the app deletes its saves. ## Playing [Frequently asked questions](#frequently-asked-questions) · [Mods, texture packs and cheats](docs/MODS.md) · [Current status](docs/STATUS.md) - **Touch controls.** The move stick appears wherever your left thumb lands and follows it; L1/L2, R1/R2, the D-pad, the face buttons, START and the camera stick sit at the screen edges and respond to a sliding thumb. **••• → Touch Controls** sets when they show, their opacity and size, and lets you drag and resize each one. - **Controllers and keyboards.** Xbox, PlayStation and other Apple-supported controllers work like a PlayStation pad; hardware keyboards use OpenGOAL's layout (W/A/S/D, I/J/K/L camera, Space/E/F/R, Return for Start). The touch controls hide as soon as you use either and come back on your next touch or when the controller disconnects. - **Play on a TV.** Connect a TV or monitor over HDMI or USB-C, or use AirPlay: the game fills it at the display's resolution and the iPad becomes the controller. Unplug and the game returns to the iPad. - **Cheats.** **••• → Cheats** switches OpenGOAL's cheats on in one tap: invincibility, infinite eco, big and huge heads, big fist, blue Daxter, mirror world and more. The original button codes work too. - **Saves and interruptions.** Save from the pause menu as on the PS2; Load Game resumes after a relaunch. Leaving the app pauses the game and its sound, and you come back to the pause menu. - **Help and logs.** **••• → Help & Feedback** opens a GitHub device report with your device, OS version and frame rate filled in, shares the app's logs, and links the Discord and this repository. - **Play as Mario.** **••• → Mods → Play as Mario** draws Super Mario 64's Mario in Jak's place, with his animations and voice, from your own US Super Mario 64 ROM. Jak still plays the game underneath, so every control, eco power and level works as before; **Mario's Moves** adds his triple jump and sideflip. See the [mods guide](docs/MODS.md#play-as-mario). - **Texture packs.** `scripts/apply-texture-pack.sh` builds a data pack with any OpenGOAL-format texture pack. See the [mods guide](docs/MODS.md). The ••• menu holds Display (render resolution, FPS counter), Cheats, Mods, Touch Controls, Game Data, Help & Feedback, and Diagnostics (log overlay, jump to a level for testing). On the Mac the same menus are the menu bar, and the keyboard, mouse and controllers play ([Mac guide](docs/macos-settings-and-packaging.md)).
The Ottsel three-dot menu open over gameplay Ottsel's Touch Control Settings panel
The ••• menu
Settings, cheats, game data and help.
Touch Control Settings
Visibility, floating stick, opacity, size and camera.
Jak in Sandover Village on a 1080p TV The iPad showing the controls while the game plays on the TV
On a TV
The game at the display's resolution.
The iPad as controller
Touch controls and menu stay on the iPad.
![Twelve levels running on Ottsel: Sentinel Beach, Misty Island, Fire Canyon, Rock Village, Precursor Basin, Boggy Swamp, Lost Precursor City, Mountain Pass, Volcanic Crater, Spider Cave, Snowy Mountain and Lava Tube](docs/readme/ottsel-levels.jpg) ## What has been tested **On a physical iPad** (iPad Pro 12.9-inch, 6th generation, M2, iPadOS 27.0.1; [evidence](docs/evidence/G2/g2-first-ipad-hardware-run-2026-10-10.md)): | Area | Result | | --- | --- | | Boot and play | Data pack imported on first launch; the intro, Geyser Rock and Sandover play with every code module signed and no faults | | Frame rate | 2732×2048, 60 fps for 98.5% of a 29-minute session | | Sound | Music, effects, voice hints and cutscene dialogue all play; voice hints no longer silence the rest of the game | | Input | Touch and an Xbox Series X controller both play; the touch controls hide and return with the controller, and can be moved and resized | | Saves | OpenGOAL PC saves copied onto the iPad fill slots 2–4 (the Citadel, Rock Village and Volcanic Crater, all with 100 power cells); Rock Village loads and plays at 60 fps | | Play as Mario | Mario drawn in Jak's place with his voice and shadow while Jak's controls and powers play the game; still being tuned | | Updates | Reinstalling over the app keeps saves and settings | **On a Mac** (M3 Max, macOS 26.6): the same app with the menu bar plays Geyser Rock with Mario at a steady 60 fps at 2560×1920, and quits cleanly. Another GPU-heavy app running at the same time cut it to 25–45 fps, and hand play has shown uneven frame pacing that is still being looked into. **In the Simulators** (iPad Pro 11-inch M4 and iPhone 16 Pro, native resolution): | Area | Result | | --- | --- | | Levels | All 16 hubs and levels load and run at 51–60 fps (2420×1668; 12 of 16 hold 60) with no faults | | Saves | Saving in Sandover, quitting, relaunching and loading resumes in Sandover | | Sound | Music, effects and dialogue mix and play; a recorded minute showed no clipping or dropouts | | TV output | 1080p external display from a cold launch, unplugged and replugged mid-game | | Touch | A scripted real-touch run plays title → Load Game → the saved level, walks, jump-attacks, and opens the ••• menu and the layout editor | | iPhone | Boots to the title with the full touch layout fitted to the screen | **With PadMint** (0.5.0): PadMint's player check (Apple's Python 3.9, an empty PadMint folder and a fresh clone) built the iPhone/iPad IPA from scratch in 22 minutes on an M3 Max. It passed PadMint's IPA check and publication gate and carries no provisioning profile, and its game-data folder validated. A PadMint Mac build made a zipped app that opens and plays the intro. Sideloading a PadMint-built IPA onto a device has not been tried yet. Not yet tested: a physical iPhone, a real HDMI adapter or AirPlay, long sessions (heat and battery), a full play-through on a device, a sideloaded PadMint-built app, and Developer ID signing for other people's Macs. ## Build from source PadMint runs the stages of [`scripts/build-personal.sh`](scripts/build-personal.sh); you can run them yourself with the same tools as above. Everything the build generates stays in the ignored `out/` folder; keep your disc image outside the repository or in the ignored `ref/` folder. ~~~sh git clone https://github.com/chrissotraidis/ottsel && cd ottsel scripts/build-personal.sh preflight ios # or macos scripts/build-personal.sh source # OpenGOAL at the pinned commit, plus the patch scripts/build-personal.sh tools # goalc and the extractor scripts/build-personal.sh extract "/path/to/your/jak1.iso" # checks the disc, then extracts it scripts/build-personal.sh compile # the game's code, compiled to ARM64 scripts/build-personal.sh pack /tmp/ottsel-pack # the game-data folder ~~~ `extract` reads your disc's levels, textures and text (the game's code is already source in OpenGOAL), and `compile` compiles the game's GOAL source to ARM64. A first build takes about 10 to 15 minutes on an M-series Mac; later builds take a few minutes. **Straight onto an iPad or iPhone:** connect the device by cable, trust the Mac, turn on Developer Mode, `brew install xcodegen`, then run `scripts/install-ios-device.sh /tmp/ottsel-pack`. It finds your signing identity and a development profile (creating one through Xcode if needed), builds and signs the app, installs it, copies your pack in and launches it. **An unsigned IPA** for Sideloadly: `scripts/build-personal.sh app ios`, then `scripts/build-personal.sh package ios ~/Desktop/Ottsel.ipa`. **Mac:** `scripts/build-personal.sh app macos`, then open `out/jak-project/out/macos/app/Ottsel.app` and choose your pack with **Game Data → Import Game Data…**. It is signed ad hoc, so it runs on the Mac that built it; see the [Mac guide](docs/macos-settings-and-packaging.md). **Simulator:** build with `OTTSEL_STRICT_EXEC=1 OTTSEL_SIGNED_GSTATE_EXPERIMENT=0 OTTSEL_SIGNED_EXPORT_BANKS=1 OTTSEL_SIGNED_MODULE_LIST=config/signed-game-strict.json scripts/build-ios.sh`, then `xcrun simctl install booted out/jak-project/out/ios/app/OttselShell.app`, `scripts/import-ios-user-data.sh /tmp/ottsel-pack` and `xcrun simctl launch booted com.ottsel.shell`. **Logs:** the app writes `ottsel-runtime.log` and `ottsel-fault.log` to `Library/Application Support/local.ottsel/OttselShell/` in its container (on a Mac, under your home folder). Share them from **••• → Help & Feedback → Share Logs…**, or copy them to the Mac with `xcrun devicectl device copy from`. ## Frequently asked questions
Does this repository include Jak and Daxter? No. You need your own disc image. The game's code comes from OpenGOAL's open-source repository when you build, and its art, sound and levels come from your disc. Please do not ask for game data or download links in issues or on Discord.
Is this a decompilation or an emulator? A decompilation. OpenGOAL decompiled Naughty Dog's GOAL code into source and rebuilt the compiler and runtime around it; Ottsel compiles that source to ARM64 ahead of time, so the original game's code runs natively. Nothing emulates a PlayStation 2, and there is no JIT, no writable-and-executable memory and no code patching at run time. See [What is Ottsel?](#what-is-ottsel).
Can I download an IPA or a Mac app? No. The app you build contains files generated from your disc (the compiled `KERNEL.CGO` and `GAME.CGO`, the title and village DGO files, and the text files), so it is for your own devices only. PadMint builds your own on an Apple Silicon Mac. A shareable build waits until all of those move into the game-data folder.
I have the Greatest Hits or a PAL disc. Will it work? Not yet. Ottsel compiles the game for the original USA Black Label release, and the build stops on any other version rather than make an app that misbehaves. OpenGOAL itself supports the other releases, so they are possible later.
Can I play on a TV? Yes, by design: connect a TV or monitor over HDMI or USB-C, or use AirPlay, and the game moves to it at the display's resolution while the iPad keeps the controls; a paired controller works too. This has been tested with the Simulator's external display; a real adapter has not been tried yet.
Can I use mods, texture packs, cheats or a higher frame rate? Cheats are built in (**••• → Cheats**). Texture packs and replacement models go into your data pack on the Mac; code mods and custom levels each need their own build. The [mods guide](docs/MODS.md) covers all three, and **Play as Mario** (**••• → Mods**, with your own Super Mario 64 ROM). The game runs at 60 fps; OpenGOAL's experimental 100 and 150 fps modes can break Jak 1's physics, so Ottsel does not offer them.
How do I test a later level without playing up to it? **••• → Diagnostics → Jump to Level (Testing)** starts play at any hub or level, the way the game respawns Jak, keeping your progress. It does not unlock anything, and some cutscenes and tasks expect the normal order.
Can I use my OpenGOAL saves from a PC? Yes. OpenGOAL keeps each Jak 1 save slot as two files in its `saves/BASCUS-97124AYBABTU!` folder: slot 1 is `bank0.bin` and `bank1.bin`, slot 2 is `bank2.bin` and `bank3.bin`, and so on up to slot 4. Copy them into the same folder in Ottsel's container, for example with `xcrun devicectl device copy to --domain-type appDataContainer --domain-identifier com.ottsel.shell` and the destination `Library/Application Support/local.ottsel/OttselShell/OpenGOAL/jak1/saves/BASCUS-97124AYBABTU!/`. Renaming a pair moves it to another slot. They appear under **Load Game** the next time Ottsel starts.
Why does the music stop in menus? The game pauses music and effects whenever its pause or main menu is open, as it did on the PS2. It resumes when you close the menu.
Is everything finished? No. Still open: a physical iPhone; long iPad sessions with their heat and battery; a real HDMI adapter and AirPlay; a full play-through past the opening (tasks, bosses and vehicle sections) on a device; smoother Mac frame pacing and Developer ID signing; a fresh-Mac PadMint build and a sideloaded PadMint-built app; and a shareable build. The plan is in [`docs/GOAL_LOOP.md`](docs/GOAL_LOOP.md) and the running log in [`docs/STATUS.md`](docs/STATUS.md).
## Repository layout and contributing | Path | Purpose | | --- | --- | | [`src/shell/`](src/shell/) | The app: boot, touch controls, the ••• menu and Mac menu bar, TV output, the Mario mod, logging and the icon | | [`patches/`](patches/) | Every change to the pinned OpenGOAL and libsm64 commits ([refreshing them](patches/README.md)) | | [`padmint.json`](padmint.json) | PadMint's recipe: the stages below, for iPhone/iPad and Mac | | [`scripts/build-personal.sh`](scripts/build-personal.sh) | Builds your own app and game-data folder from your disc, one stage at a time | | [`scripts/build-ios.sh`](scripts/build-ios.sh) | Builds the runtime, signs the game modules, translates shaders, assembles the app (Simulator, device or Mac) | | [`scripts/install-ios-device.sh`](scripts/install-ios-device.sh) | Builds, signs, installs and launches on a connected iPad or iPhone | | [`scripts/prepare-user-data-pack.sh`](scripts/prepare-user-data-pack.sh) | Builds a game-data folder from your extracted disc | | [`scripts/apply-texture-pack.sh`](scripts/apply-texture-pack.sh) | Builds a game-data folder with a texture pack applied | | [`scripts/test-ios-touch.sh`](scripts/test-ios-touch.sh) | Plays title → Load Game → training course with real touches | | [`config/`](config/) | Which game modules are compiled and signed into the app | | [`docs/`](docs/) | The plan, the status log, evidence for each tested gate, the mods and Mac guides and the original research | Changes to OpenGOAL go through `patches/ottsel-jak-project.patch`; refresh it with `scripts/snapshot-jak-project.sh write`. For a bug report, include the exact commit, device, OS version and steps. Never attach game data, extracted files, a built app, ROMs or saves. ## Credits and license Ottsel stands on [OpenGOAL](https://github.com/open-goal/jak-project), whose team decompiled the game, wrote the GOAL compiler and runtime, and built the renderer Ottsel uses. ANGLE comes from [kivy/angle-builder](https://github.com/kivy/angle-builder); [SDL](https://github.com/libsdl-org/SDL) provides the window and input; [glslang](https://github.com/KhronosGroup/glslang) and [SPIRV-Cross](https://github.com/KhronosGroup/SPIRV-Cross) translate the shaders; [libsm64](https://github.com/libsm64/libsm64) (CC0) brings Mario for the Play as Mario mod. The touch controls and menu follow [SunPad](https://github.com/chrissotraidis/sunpad) and [BlueWake](https://github.com/chrissotraidis/bluewake). See [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md) for every component and its license. Ottsel is released under the [ISC License](LICENSE), the same license as OpenGOAL, so its changes can flow back upstream; the patch's changes to OpenGOAL's files stay under OpenGOAL's license and copyright. Ottsel is an unofficial community project and is not affiliated with or endorsed by Sony Interactive Entertainment, Naughty Dog or Nintendo. Jak and Daxter and Super Mario 64 names and screenshots are used only to identify the games. The Ottsel app icon is original artwork.