4.4 KiB
Linux
Structure
There are 4 projects
- libapple: the core emulator files
- applen: a frontend based on ncurses
- qapple: Qt frontend
- sa2: SDL2 frontend
- libra2: a libretro core
The main goal is to reuse the AppleWin source files without changes: only where really necessary the AppleWin source files have been modified.
What works
Almost everything works, except:
- serial port
- debugger (work started to port it)
The UI has been rewritten in Qt or ImGui.
The rest works very well. Uthernet is supported, but it requires elevated capabilities:
sudo setcap cap_net_raw=ep ./sa2
Unfortunately, this must be reapplied after every build.
Executables
sa2
This is your best choice, in particular the ImGui version.
TL;DR: sa2 --imgui
See sa2 for more details.
applen
Frontend based on ncurses, with a ASCII art graphic mode.
Keyboard shortcuts
F2
: reset the machineF3
: terminate the emulatorF11
,F12
: Save, Load SnapshotALT-RIGHT
: wider hi res graphisALT-LEFT
: narrower hi res graphicsALT-UP
: vertical hi res (smaller)ALT-DOWN
: vertical hi res (bigger)
In order to properly appreciate the wider hi res graphics, open a big terminal window and choose a small font size.
Try CTRL-
as well if ALT-
does not work: terminals do not report a consistent keycode for these combinations.
The joystick uses evdev (--device-name /dev/input/by-id/id_of_device
).
qapple
This is based on Qt.
- keyboard shortcuts are listed in the menu entries
- graphics: runs the native NTSC code
- joystick: it uses QtGamepad
- emulator runs in the main UI thread
- Qt timers are very coarse: the emulator needs to dynamically adapt the cycles to execute
- the app runs at 60FPS with correction for uneven timer deltas.
- full speed when disk spins execute up to 5 ms real wall clock of emulator code (then returns to Qt)
- (standard) audio is supported and there are a few configuration options to tune the latency (default very conservative 200ms)
- Open Apple and Solid Apple can be emulated using AltGr and Menu (unfortunately, Alt does not work well)
ra2
There is an initial libretro core.
A retropad can be plugged in port 1 (with or without analog stick).
Keyboard emulation
JOYPAD_R
: equivalent toF9
to cycle video typesJOYPAD_L
: equivalent toCTRL-SHIFT-F6
to cycle 50% scan linesSTART
: equivalent toF2
to reset the machine
In order to have a better experience with the keyboard, one should probably enable Game Focus Mode (normally Scroll-Lock) to disable hotkeys.
Video works, but the vertical flip is done in software.
Audio (speaker) works.
Must be manually configured:
cmake -DLIBRETRO_PATH=/path/to/libretro-common
Easiest way to run from the build
folder:
retroarch -L source/frontends/libretro/libra2.so ../Disks/NoSlotClockTest.dsk
Build
The project can be built using cmake from the top level directory.
qapple can be managed from Qt Creator as well and the 2 have coexisted so far, but YMMV.
Checkout
git clone https://github.com/audetto/AppleWin.git --recursive
cd AppleWin
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make
Fedora
On Fedora 31, from a fresh installation, install all packages from fedora.list.txt.
Raspberry Pi OS, Ubuntu and other Debian distributions
Install all packages from raspbian.list.txt.
You can use sudo apt-get -y install $(cat raspbian.list.txt)
for an automated installation.
See Travis CI too.
Speed
Fedora
Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
Full update = 582 MHz
Video Stype | Video update |
---|---|
RGB Monitor | 39 |
NTSC Monitor | 27 |
Color TV | 25 |
B&W TV | 27 |
Amber Monitor | 31 |
Raspbian
Pi 3B+
Full update = 54 MHz
Video Stype | Video update |
---|---|
RGB Monitor | 5.3 |
NTSC Monitor | 3.6 |
Color TV | 2.6 |
B&W TV | 2.9 |
Amber Monitor | 4.5 |