kegs-android/README.md

52 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

Port of Kent Dickey's KEGS Apple IIgs Emulator to Android. Also includes OG ActiveGS patches as of kegs_3_0_242.
2012-08-07 00:04:38 +00:00
2012-10-24 21:32:40 +00:00
You can find a release version in Google Play: https://play.google.com/store/apps/details?id=com.froop.app.kegs
2013-07-28 01:52:07 +00:00
Usability notes:
The touch screen acts as a big trackpad for the mouse.
2012-08-07 00:04:38 +00:00
2013-07-28 01:52:07 +00:00
To click and drag, either Long Press then drag or
use one finger for movement and one finger for the mouse button.
2012-08-07 00:04:38 +00:00
2013-07-28 01:52:07 +00:00
It looks for disk images on the main sdcard or 'legacy' storage directory,
and a few subdirectories under that: Downloads, KEGS, and
Android/data/com.froop.app.kegs/files/
If you want to edit the KEGS 'config.kegs' directly, edit 'default' in
the last directory mentioned above.
Input: Physical keyboards should work, though on some devices you may need
to reset the input method to something like Hacker's Keyboard.
Sound: If you hear no sound, do something where sound should be playing
(perhaps the X-MAS demo main menu) and then adjust the sound volume.
If KEGS is not generating sound, the volume buttons adjust a different
sound level (for example your ringer)
2012-08-07 00:04:38 +00:00
Source code:
https://github.com/jamessanford/kegs/
2022-07-05 20:17:08 +00:00
To build from source, open this project in Android Studio.
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
2012-10-24 02:08:35 +00:00
- 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, and a ConcurrentLinkedQueue.
All UI events are sent to the native thread by pushing events into the ConcurrentLinkedQueue (KegsEvent, MouseKegsEvent, KeyKegsEvent).
2012-10-24 02:08:35 +00:00
The native thread pulls events off the queue, writes updates into the bitmap object, then calls the Java "updateScreen" in the KegsThread object.
2013-07-28 01:52:07 +00:00
The native thread also calls support functions in Java, such as checkForPause(), which blocks the native thread while it should be paused. See comments in KegsThread.java for more details.
2013-07-28 01:52:07 +00:00
Android NDK samples were helpful when creating this port:
- bitmap-plasma
- JetBoy
- native-audio
2012-10-17 22:05:12 +00:00
- FireflyRenderer