This is a linux port of AppleWin, that shares 100% of the code of the core emulator and video generation. Audio, UI, scheduling and other peripherals are reimplemented.
Number one goal is to stay source compatible with AppleWin, to make git merge
a trivial operation. Shared files are modified as a last resort.
There are 4 projects
Almost everything works, except the serial port, SNES-MAX and FourPlay.
The UI has been rewritten in Qt or ImGui. The rest works very well.
Network is supported via libslirp.
If this is not available, it uses libpcap
, but it requires elevated capabilities:
sudo setcap cap_net_raw=ep ./sa2
Unfortunately, this must be reapplied after every build.
Most of the debugger now works (in the ImGui version).
Audio files can be read via the cassette interface (SDL Version). Just drop a wav
file into the emulator. Tested with all the formats from asciiexpress.
This is your best choice, in particular the ImGui version.
TL;DR: just run sa2
See sa2 for more details.
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
).
This is based on Qt.
yaml
files can be dropped to restore a saved stateThere is an initial libretro core.
A retropad can be plugged in port 1 (with or without analog stick).
Keyboard emulation
JOYPAD_R
: equivalent to F9
to cycle video typesJOYPAD_L
: equivalent to CTRL-SHIFT-F6
to cycle 50% scan linesSTART
: equivalent to F2
to reset the machineSELECT
: press twice quickly to exitJOYPAD_R2
: switch audio sourceJOYPAD_L2
: save configuration to /tmp/applewin.retro.conf
In order to have a better experience with the keyboard, one should probably enable Game Focus Mode (normally Scroll-Lock) to disable hotkeys. Even better set Auto Enable 'Game Focus' Mode to Detect.
Video works, but the vertical flip is done in software.
Audio: speaker and mockingboard works, but only one at a time (use JOYPAD_R2
to switch).
Easiest way to run from the build
folder:
retroarch -L source/frontends/libretro/applewin_libretro.so ../bin/MASTER.DSK
It supports playlists files .m3u
(see https://docs.libretro.com/library/vice/#m3u-and-disk-control alttough not all options are implemented).
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.
Don't forget the submodules!!
git clone https://github.com/audetto/AppleWin.git --recursive
On Fedora 35, from a fresh installation, install all packages from fedora.list.txt.
Install all packages from raspbian.list.txt.
You can use sudo apt-get -y install $(cat AppleWin/source/linux/raspbian.list.txt)
for an automated installation.
See Travis CI too.
cd AppleWin
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make
There are 4 cmake
variables to selectively enable frontends: BUILD_APPLEN
, BUILD_QAPPLE
, BUILD_SA2
and BUILD_LIBRETRO
.
Usage:
cmake -DBUILD_SA2=ON -DBUILD_LIBRETRO=ON ..
or use cmake-gui
(if none is selected, they are all built).
It is possible to create .deb
and .rpm
packages using cpack
. Use cpack -G DEB
or cpack -G RPM
from the build folder. It is best to build packages for the running system.
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 |
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 |