Android port of KEGS Apple IIgs Emulator
Go to file
2012-10-23 19:08:35 -07:00
assets Image name changes. 2012-10-23 18:40:23 -07:00
jni User can choose between some built in disk images. 2012-10-23 18:40:22 -07:00
res Updated error string. 2012-10-23 18:40:28 -07:00
src/com/froop/app/kegs Even with a cropped image, try to show some of the border. 2012-10-23 18:40:29 -07:00
AndroidManifest.xml Ask user to pick a disk image. 2012-10-23 18:40:22 -07:00
create_dial.py Add a nice dial for the emulation speed icon. 2012-10-23 18:40:23 -07:00
project.properties Add project.properties so 'android update project' works. 2012-08-06 17:10:11 -07:00
README.md Updated README for current features. 2012-10-23 19:08:35 -07:00

Port of Kent Dickey's KEGS Apple IIgs Emulator to Android.

Work in progress! Screen may be cropped in portrait mode on phones. Flip it over to landscape orientation.

Look on your sdcard in /Android/data/com.froop.app.kegs/files/ There's a 'default' config there that gets copied to 'config.kegs' on startup.

The touch screen acts as a big trackpad for the mouse.

To click and drag, either Long Press then drag or use one finger for movement and one finger for the mouse button.

Source code: https://github.com/jamessanford/kegs/

To build from source:

  android update project -p . -s
  ndk-build
  ant debug install

Changes made to KEGS:

  • Various ifdefs for ANDROID in the kegs 'core'
  • Addition of android_driver.c and android_sound_driver.c

Application structure:

  • The UI is coordinated via KegsMain
  • There is a KegsThread class that gets its own thread. This thread ends up calling mainLoop() in jni/android_driver.c and running KEGS in that thread.
  • The native thread gets two things from Java: -- a Bitmap -- a ConcurrentLinkedQueue

All UI events are sent to the native thread by pushing events into the ConcurrentLinkedQueue (KegsEvent, MouseKegsEvent, KeyKegsEvent).

The native thread pulls events off the queue, writes updates into the bitmap object, then calls the Java "updateScreen" in the KegsThread object.

The native thread also calls support functions in Java, such as checkForPause(), which deadlocks the thread while it should be paused.

Android NDK samples were used as a base for this:

  • bitmap-plasma
  • JetBoy
  • native-audio
  • FireflyRenderer