Files
ARMSX1/ios
moonpower 30d4e57a3c Add custom font and configure React Native project settings
- Added the Pixel Cyr font to the mobile assets directory.
- Created a new React Native configuration file to specify project settings, including Android source directory, app name, and package name.
- Configured asset linking for the mobile assets.
2025-11-23 13:19:06 +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.