Apple //e emulator
Go to file
Aaron Culliney 8ce1fffe89 Fix x86 __PIC__ bug when indirecting in GLUE_BANK_MAYBEREAD() 2016-05-10 22:17:37 -07:00
Android Show visual spacebar glyph when custom selecting keypad-joystick controls 2016-05-09 23:00:26 -07:00
Apple2Mac Improved clamping of Mac joystick/gamepad axes 2016-04-23 14:56:05 -07:00
disks Store disk images gzipped in repo ... we should ungzip in a "copy resources" phase in Mac/iOS target if we need them ungzipped 2016-01-20 23:15:39 -08:00
docs Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
externals update dump_syms and minidump_stackwalk Linux binaries 2016-05-04 21:44:53 -07:00
src Fix x86 __PIC__ bug when indirecting in GLUE_BANK_MAYBEREAD() 2016-05-10 22:17:37 -07:00
.gitignore Revert "Remove Android Studio file that always changes from revision control" 2016-05-08 14:33:03 -07:00
ASM Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
AUTHORS Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
COPYING Upgrade to GPLv3 "or later" and update copyrights 2015-10-22 21:09:13 -07:00
ChangeLog Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
Makefile.am Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
NEWS Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
PROBLEMS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
README initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.debugger initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.md Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
TODO initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
configure.ac Squashed 'externals/breakpad/' content from commit 06c7bd9 2016-05-03 22:23:53 -07:00
reconf.sh Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
valgrind.suppress Fix shutdown codepaths 2015-05-31 13:43:51 -07:00

README.md

Apple //ix

Apple2ix is an Apple //e (8bit 65c02 CPU) emulator designed to work on varios POSIX platforms.

Project Tech

  • C99 dialect of the C programming language for the majority of the project
  • x86 and ARM assembly language for 65c02 CPU emulation loop
  • Extensive tests for 65c02 CPU, Apple //e VM, disks, and display (expected framebuffer output)
  • OpenGLES 2.x graphics with simple portable GLSL shaders
  • OpenAL and OpenSLES audio (emulated speaker and emulated Mockingboard/Phasor soundcards)
  • Objective-C and Cocoa APIs (Mac/iOS variant)
  • Java and Android APIs (Android app)

Lineage

Apple2ix derives from the apple2-emul-linux project originally coded by various developers in the mid 1990's and FTP-uploaded as source tarballs to the original tsx-11.mit.edu Linux archive.

The original software was designed to work from the Linux console rendering via SVGAlib. It ran on par to the 1MHz Apple //e on an i386 (Pentium 100 class) or better machine. Later ports added X11 graphics support based on the original X11 DOOM source code drop, ty JC!

As of November 2015, the resurrected Apple2ix runs on x64 MacOSX 10.9+, x64 Debian GNU/Linux, and ARM Android

Project Goals

  • Portability and code resilience across a wide range of modern platforms including MacOSX, desktop Linux/BSD, iOS, Android -- But not Windows, just use the excellent AppleWin emulator if you're on Windows!
  • Reasonable emulation fidelity to the original Apple //e machine (timing, video, audio, etc...)
  • Language/platform/API minimalism for core emulation modules (prefer coding to POSIX APIs and using C99 over all other choices), except for CPU module which should be in custom assembly or IR ;-)
  • Good platform citizenship for menu system (prefer coding in language-of-choice promoted by platform--e.g.: Objective-C/Swift on Darwin, Java on Android, ...)

Android

Available on Google Play.

Running at 30FPS on ancient Gingerbread (Android 2.3.3) devices: Apple2ix on Samsung Galaxy Y running Gingerbread

Running at 60FPS on modern Android devices: Apple2ix on Nexus 6

Mac Package

Apple2Mac

A dated binary package for Macintosh is available at deadc0de.org
Size : 10240000 (10MB)
SHASUM : 81f2d55c2daaa0d3f9b33af9b50f69f6789738bf

Alt Size : 76820480 (75MB)
ALTSUM : 488a40d7f1187bcfd16d0045258f606a95f448cb

Due to Apple's policy about emulators we are unlikely to ship this in the App Store any time soon.

iOS port in progress 2016, check this repo and fork(s) too!

Linux+ Package

For Linux and *BSD, I do not personally relish being a package/port maintainer, so you should ./configure --prefix=..., make, make install like it's 1999 ;-)

You will need GCC or Clang compiler and other tools as determined by the configure script. Use the source!

Apple //ix

Semi-Ordered TODO

  • Double-LORES graphics (used in Dagen Brock's Flappy Bird clone) are ugly/incorrect ... fix 'em
  • Mockingboard is seriously buggy. Need to research/check upstream for bugfixes and refactor.
  • CPU module ports: aarch64, x86 without textreloc's, Clang IR
  • iOS/iWatch ports. iOS in progress early 2016.
  • Proper VBL timing and vSync matching to the device (if available)
  • OpenGL shaders/tricks for style (various screen artifacts) and functionality (Disk ][ status overlays, etc)
  • Emulator save/restore image compatibility with AppleWin
  • Emulation features ... (3.5" disk, AppleHD, Phasor, printer, ethernet, ...)
  • Debugger rewrite with tests ... improved debugger routines (CLI/curses debugger? GDB/LLDB module?)
  • Emscripten/web frontend?

DOS 3.3