Quickstart
This guide will help you build and run the TI-84 Plus CE emulator on your platform of choice. The emulator is cross-platform with native apps for Android, iOS, and web browsers.You’ll need a TI-84 Plus CE ROM file to run the emulator. The ROM contains the calculator’s operating system and is not included with this project. You must obtain it legally from your own calculator.
Prerequisites
Before you begin, ensure you have the following installed:Install Rust toolchain
The emulator core is written in Rust. Install it from rustup.rs:
Platform-specific tools
Choose based on your target platform:
- Web
- Android
- iOS
- Node.js 18+ for the web frontend
- wasm-pack for building WebAssembly:
Building for Web
The web app runs entirely in your browser using WebAssembly. This is the fastest way to get started.Build the WASM package and web app
Use the provided Makefile target:This command:
- Compiles the Rust core to WebAssembly (~96KB gzipped)
- Copies the WASM package to the web app directory
- Installs npm dependencies
- Builds the React frontend with Vite
Web Keyboard Controls
The web app includes keyboard shortcuts for calculator keys:| Keyboard Key | Calculator Function |
|---|---|
| 0-9 | Number keys |
| + - * / | Math operations |
| Enter | Enter |
| Backspace | Del |
| Arrow keys | Navigation |
| Shift | 2nd |
| Alt | Alpha |
| O | ON |
| Space | Pause emulation |
| F1-F5 | Y=/Window/Zoom/Trace/Graph |
Building for Android
The Android app uses Kotlin with Jetpack Compose for the UI and the Rust core via JNI.Build the APK
Use the build script for a streamlined build:This compiles the Rust core for ARM64 and builds a release APK.
Build options
Build options
The build script supports several options:Or use the Makefile shortcuts:
Install the APK
Connect your Android device via USB with developer mode enabled, then:Or install manually:
Building for iOS
The iOS app uses Swift with SwiftUI for the UI. Building requires two steps: compiling the Rust backend library, then building the app in Xcode.Build the backend library
For iOS Simulator (Apple Silicon Mac):For physical iOS devices:This compiles the Rust core as a static library (
Makefile shortcuts:
.a) that Xcode will link against.Build options
Build options
Open Xcode and build the app
- Select your target device or simulator
- Press
Cmd+Rto build and run - The app will launch on your selected target
The build script only compiles the emulator backend. Xcode handles building the Swift app and linking against the static library.
Testing the Rust Core
The Rust core includes a comprehensive test suite covering CPU instructions, memory subsystem, and peripherals.Available test commands
Available test commands
From the These aliases are defined in
core/ directory, use these cargo aliases:core/.cargo/config.toml.Using the CEmu Reference Backend
The apps can optionally be built with CEmu, the established open-source TI-84 Plus CE emulator, as the backend. This is useful for:- Parity testing - Compare Rust core behavior against known-correct emulation
- Bug investigation - Determine if issues are in your code or inherent to the ROM
- Feature development - Test UI features before Rust implementation is complete
Loading Programs (.8xp / .8xv)
The emulator supports loading TI-84 CE programs (.8xp) and AppVars (.8xv) into the calculator’s flash archive.
From the Apps
All three apps (web, Android, iOS) include file pickers for loading programs:- Use the “Load Program” or similar menu option
- Select one or more
.8xpor.8xvfiles - The files are injected into flash
- Programs appear in the TI-OS program menu after reboot
From the Debug Tool
The Rust core includes CLI commands for loading programs:Programs built with the CE C toolchain (e.g., games using graphx) need their library
.8xv files included. Common libraries: libload.8xv, graphx.8xv, keypadc.8xv, fileioc.8xv.Next Steps
Architecture
Learn about the dual backend design, Rust core structure, and memory map
API Reference
Explore the C API for integrating the emulator core
Development
Dive into development workflows, debugging tools, and testing
Contributing
Learn how to contribute to the project
Troubleshooting
Android build fails with 'NDK not found'
Android build fails with 'NDK not found'
Open Android Studio, go to SDK Manager → SDK Tools, and install:
- NDK (Side by side)
- CMake
local.properties:iOS build fails with 'library not found'
iOS build fails with 'library not found'
Make sure you’ve run the build script before opening Xcode:The build script outputs the static library that Xcode expects to find.
Web build: 'wasm-pack not found'
Web build: 'wasm-pack not found'
Install wasm-pack:
Emulator boots to black screen
Emulator boots to black screen
This usually means:
- ROM file is corrupted or invalid
- ROM is for a different calculator model (need TI-84 Plus CE)
Tests fail with 'ROM not found'
Tests fail with 'ROM not found'
Some tests require a ROM file. Place your ROM at:in the repository root, or specify the path via environment variable: