2018-02-10 17:33:54 +00:00
|
|
|
# Linux
|
|
|
|
|
2019-11-02 19:23:30 +00:00
|
|
|
* [Structure](#structure)
|
|
|
|
* [What works](#what-works)
|
|
|
|
* [Executables](#executables)
|
|
|
|
* [applen](#applen)
|
|
|
|
* [qapple](#qapple)
|
|
|
|
* [Build](#build)
|
|
|
|
* [Fedora](#fedora)
|
|
|
|
|
2018-02-10 17:33:54 +00:00
|
|
|
## Structure
|
|
|
|
|
|
|
|
There are 3 projects
|
|
|
|
|
|
|
|
* libapple: the core emulator files
|
|
|
|
* applen: a frontend based on ncurses
|
|
|
|
* qapple: Qt frontend
|
|
|
|
|
2018-02-10 17:52:35 +00:00
|
|
|
The libapple interface is a *link time* interface: some functions are not defined and must be provided in order to properly link
|
2018-02-10 17:33:54 +00:00
|
|
|
the application. These functions are listed in [interface.h](source/linux/interface.h).
|
|
|
|
|
|
|
|
The main goal is to reuse the AppleWin source files without changes: only where really necessary the AppleWin source files have
|
|
|
|
been modified, mostly for
|
|
|
|
|
|
|
|
* header files issues
|
|
|
|
* const char *
|
|
|
|
* exclude some Windows heavy blocks (source/MouseInterface.cpp)
|
|
|
|
|
|
|
|
## What works
|
|
|
|
|
|
|
|
Some key files have been completely reimplemented or discarded:
|
|
|
|
|
|
|
|
* AppleWin.cpp
|
|
|
|
* Frame.cpp
|
2019-11-22 20:50:02 +00:00
|
|
|
* Video.cpp (partially)
|
2018-02-10 17:33:54 +00:00
|
|
|
|
|
|
|
Some features totally ignored:
|
|
|
|
|
|
|
|
* ethernet
|
|
|
|
* serial port
|
|
|
|
* debugger
|
|
|
|
* speech
|
|
|
|
|
2019-11-22 20:50:02 +00:00
|
|
|
The rest is in a very usable state.
|
2018-02-10 17:33:54 +00:00
|
|
|
|
2019-11-02 19:23:30 +00:00
|
|
|
## Executables
|
|
|
|
|
2018-02-10 17:33:54 +00:00
|
|
|
### applen
|
|
|
|
|
|
|
|
Frontend based on ncurses, with a ASCII art graphic mode.
|
|
|
|
|
|
|
|
Keyboard shortcuts
|
|
|
|
|
|
|
|
* F2: terminate emulator
|
|
|
|
* F12: Load Snapshot
|
2018-02-10 17:52:35 +00:00
|
|
|
* ALT-RIGHT: wider hi res graphis
|
|
|
|
* ALT-LEFT: narrower hi res graphics
|
|
|
|
* ALT-UP: vertical hi res (smaller)
|
|
|
|
* ALT-DOWN: vertical hires (bigger)
|
2018-02-10 17:33:54 +00:00
|
|
|
|
2018-02-10 17:52:35 +00:00
|
|
|
In order to properly appreciate the wider hi res graphics, open a big terminal window and choose a small font size.
|
|
|
|
|
|
|
|
The joystick uses evdev (currently the device name is hardcoded).
|
2018-02-10 17:33:54 +00:00
|
|
|
|
|
|
|
### qapple
|
|
|
|
|
|
|
|
This is based on Qt, currently tested with 5.10
|
|
|
|
|
|
|
|
* keyboard shortcuts are listed in the menu entries
|
2019-11-22 20:50:02 +00:00
|
|
|
* graphics: runs the native NTSC code
|
2018-02-10 17:33:54 +00:00
|
|
|
* joystick: it uses QtGamepad (correct names will only be displayed with 5.11)
|
|
|
|
* emulator runs in the main UI thread
|
|
|
|
* Qt timers are very coarse: the emulator needs to dynamically adapt the cycles to execute
|
2019-11-10 19:38:42 +00:00
|
|
|
* the app runs at 60FPS with correction for uneven timer deltas.
|
2018-02-10 17:33:54 +00:00
|
|
|
* full speed when disk spins execute up to 5 ms real wall clock of emulator code (then returns to Qt)
|
2019-11-10 19:39:09 +00:00
|
|
|
* (standard) audio is supported and there are a few configuration options to tune the latency (default very conservative 200ms)
|
2018-02-10 17:33:54 +00:00
|
|
|
|
|
|
|
## Build
|
|
|
|
|
2019-11-02 19:23:30 +00:00
|
|
|
The project can be built using cmake from the top level directory.
|
2018-02-10 17:33:54 +00:00
|
|
|
|
|
|
|
qapple can be managed from Qt Creator as well and the 2 have coexisted so far, but YMMV.
|
2019-11-02 19:23:30 +00:00
|
|
|
|
|
|
|
### Fedora
|
|
|
|
|
|
|
|
On Fedora 31, from a fresh installation, install all packages from [fedora.list.txt](source/linux/fedora.list.txt).
|
|
|
|
|
|
|
|
Building with cmake works.
|
|
|
|
|