AppleWin/linux.md

165 lines
4.3 KiB
Markdown
Raw Normal View History

2018-02-10 17:33:54 +00:00
# Linux
* [Structure](#structure)
* [What works](#what-works)
* [Executables](#executables)
* [applen](#applen)
* [qapple](#qapple)
2020-12-04 21:03:57 +00:00
* [sa2](#sa2)
2020-12-12 13:48:33 +00:00
* [libretro](#ra2)
* [Build](#build)
* [Checkout](#checkout)
* [Fedora](#fedora)
* [Raspbian](#raspbian)
* [Speed](#build)
* [Fedora](#fedora-1)
* [Raspbian](#raspbian-1)
2018-02-10 17:33:54 +00:00
## Structure
2020-12-04 21:03:57 +00:00
There are 4 projects
2018-02-10 17:33:54 +00:00
* libapple: the core emulator files
* applen: a frontend based on ncurses
* qapple: Qt frontend
2020-12-04 21:03:57 +00:00
* sa2: SDL2 frontend
2018-02-10 17:33:54 +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
* WinFrame.cpp
* WinVideo.cpp
2018-02-10 17:33:54 +00:00
Some features totally ignored:
* ethernet
* serial port
* debugger
2020-07-05 14:54:31 +01:00
* speech (currently it hangs the emulator)
2018-02-10 17:33:54 +00:00
2019-11-22 20:50:02 +00:00
The rest is in a very usable state.
2018-02-10 17:33:54 +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``: reset the machine
* ``F3``: terminate the emulator
* ``F11``, ``F12``: Save, Load Snapshot
* ``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
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 (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
* joystick: it uses QtGamepad
2018-02-10 17:33:54 +00:00
* 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)
* plain mockingboard is supported as well (not speech, which hangs the emulator)
* Open Apple and Solid Apple can be emulated using AltGr and Menu (unfortunately, Alt does not work well)
2018-02-10 17:33:54 +00:00
2020-12-04 21:03:57 +00:00
### sa2
See [sa2](source/frontends/sa2/README.md).
2020-12-12 13:48:33 +00:00
### ra2
There is an initial [libretro](https://docs.libretro.com/development/cores/developing-cores/) core.
Keyboard works, but a lot of keys overlap with RetroArch shortcuts. In the latest version the keyboard has been disabled and only the retro joypad works.
Video works, but the vertical flip is done in software.
2020-12-12 13:48:33 +00:00
Must be manually configured:
``cmake -DLIBRETRO_PATH=/path/to/libretro-common``
Easiest way to run from the ``build`` folder:
``retroarch -L source/frontends/retro/libra2.so ../Disks/NoSlotClockTest.dsk``
2018-02-10 17:33:54 +00:00
## Build
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.
### Checkout
```
git clone https://github.com/audetto/AppleWin.git --recursive
cd AppleWin
mkdir build
cd build
cmake ..
make
```
Use `cmake -DCMAKE_BUILD_TYPE=RELEASE` to get a *release* build.
### Fedora
On Fedora 31, from a fresh installation, install all packages from [fedora.list.txt](source/linux/fedora.list.txt).
### Raspbian
On Raspbian 10, from a fresh installation, install all packages from [raspbian.list.txt](source/linux/raspbian.list.txt).
2020-12-04 21:03:57 +00:00
See [Travis](.travis.yml) 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 |