Files
ARMSX1/ios
moonpower 74f5aaac82 feat: Initialize ARMSX Overlay project with React Native setup
- Added Podfile for iOS dependencies and configuration.
- Created ARMSXModule for native module integration with React Native.
- Implemented loadEmu method in ARMSXModule to start the emulator.
- Configured Metro bundler for project structure.
- Developed main App component with UI for emulator actions.
- Added app.json for project metadata.
- Registered main application component in index.js.
- Defined package.json with project dependencies and scripts for running the app.
2025-11-22 11:08:13 +03:00
..
2025-11-18 12:32:45 +03:00

iOS host scaffold

This directory contains a minimal UIKit host for the shared libarmsx build. It embeds SDL2 as a dynamic framework and passes the host window into external_main.

Layout

  • Frameworks/ drop SDL2.xcframework (built from commit 385e995790930bc70ce43533f621caedec033895) and the iOS-built libarmsx.dylib here.
  • HostApp/ source, Info.plist and an XcodeGen project.yml that describes a single-app target.
  • bin/bios.bin optional test BIOS is bundled (resource marked optional) so the iOS target can boot out-of-the-box during development.

Building libarmsx for iOS

./build.sh ios

This forces dynamic SDL, uses the iPhone SDK toolchain, and outputs bin/libarmsx.dylib for device (arm64). You can tweak IOS_SDK/IOS_DEPLOYMENT_TARGET as needed.

Generating/opening the app project

The HostApp/project.yml is XcodeGen-ready. After placing the frameworks:

cd ios/HostApp
xcodegen generate
open PSXEHost.xcodeproj

The target embeds both SDL2.xcframework and libarmsx.dylib into the app bundle and runs external_main on launch using the host UIWindow.

React Native brownfield overlay

  • Install JS dependencies at the repo root: npm install
  • Regenerate the Xcode project, then install pods: cd ios/HostApp && xcodegen generate && pod install
  • Start Metro from the repo root (project root is mobile/): npm run start
  • Open the workspace created by CocoaPods: ios/HostApp/ARMSX.xcworkspace
  • The overlay component is registered as ARMSXOverlay with entry mobile/index.js; use npm run bundle:ios to emit a release bundle into ios/HostApp/main.jsbundle.