Metadata-Version: 2.4
Name: stable-retro-apple-silicon
Version: 0.9.10
Summary: Apple Silicon wheels for stable-retro without bundled ROM payloads
Home-page: https://github.com/tsilva/stable-retro-apple-silicon
Author: tsilva
License: MIT
Requires-Python: >=3.8.0,<3.13
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: LICENSES.md
Requires-Dist: gymnasium>=0.27.1
Requires-Dist: pyglet==1.*,>=1.3.2
Requires-Dist: farama-notifications>=0.0.1
Dynamic: author
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# stable-retro-apple-silicon

`stable-retro-apple-silicon` is an Apple Silicon focused packaging fork of
[`stable-retro`](https://github.com/Farama-Foundation/stable-retro).

This fork is aimed at a simple outcome:

- publishable macOS arm64 wheels
- no bundled ROM payloads in public artifacts
- verified support for Game Boy, NES, SNES, and Sega Master System on Apple Silicon

## What This Package Includes

- the `stable_retro` Python package
- the `retro` compatibility shim
- Apple Silicon compatible cores for:
  - Game Boy (`gambatte`)
  - NES (`fceumm`)
  - SNES (`snes9x`)
  - Sega Master System (`genesis_plus_gx`)
- integration metadata, scenarios, and `rom.sha` hash files

## What This Package Does Not Include

Public wheels built from this repo do not ship copyrighted ROM payloads.

In particular, files named `rom.*` are excluded from wheels and sdists, except
for `rom.sha`, which is retained as metadata for the importer.

## Installation

```bash
pip install stable-retro-apple-silicon
```

Supported runtime target:

- macOS 11 or newer
- Apple Silicon (`arm64`)
- Python 3.9 through 3.12 for published wheels

## Importing Your Own ROMs

After installation, import ROMs you already own into the package data layout:

```bash
python -m stable_retro.import /path/to/your/roms
```

Once imported, you can create environments normally:

```python
import stable_retro as retro

env = retro.make("SuperMarioWorld-Snes-v0", render_mode="rgb_array")
obs, info = env.reset()
```

## Verified Platforms In This Fork

The current Apple Silicon release path is verified for:

- `Alleyway-GameBoy-v0`
- `SuperMarioBros-Nes-v0`
- `SuperMarioWorld-Snes-v0`
- `SonicTheHedgehog-Sms-v0`

These map to the four public cores shipped by this package.

## Building Wheels

Local wheel builds use the Apple Silicon safe defaults defined in this fork:

- deployment target: `macOS 11.0`
- curated core set: `gb;nes;snes;genesis`
- public package core set:
  `gambatte,fceumm,snes9x,genesis_plus_gx`

Typical local build:

```bash
python -m pip install --upgrade build
python -m build --wheel
```

## Publishing

This repo is set up to publish wheel artifacts from GitHub Actions.

The intended release flow is:

1. Update `stable_retro/VERSION.txt`
2. Push to `main`
3. Create a GitHub release tag like `v0.9.10`
4. Let the release workflow build and upload the wheel to PyPI

See the repo root `PUBLISHING.md` for the release checklist.

## Notes

- `render_mode="human"` still requires a real display session.
- `render_mode="rgb_array"` is the reliable mode for headless validation.
- This fork does not currently promise support for every upstream stable-retro
  platform on Apple Silicon.
