mirror of
https://github.com/ivanizag/izapple2.git
synced 2026-10-22 00:02:27 +00:00
156 lines
5.6 KiB
Markdown
156 lines
5.6 KiB
Markdown
# The SDL2 frontend
|
|
|
|
`a2sdl` is the complete frontend, the one the
|
|
[releases](https://github.com/ivanizag/izapple2/releases) and the Homebrew
|
|
formula contain. It opens a window with SDL2 and gives you everything the
|
|
emulator has: the screen with all its modes, sound, joysticks, the mouse,
|
|
diskettes dropped on the window and the whole set of function keys.
|
|
|
|
Use this one unless you have a reason not to. The reason is usually SDL2
|
|
itself, which needs a C compiler and its developer files to build: if that is
|
|
in the way, [a2sdl3](frontend_sdl3.md) is the same frontend without any of it.
|
|
|
|
## Building
|
|
|
|
Besides a working Go installation you need a C compiler and the SDL2 developer
|
|
files.
|
|
|
|
### Linux
|
|
|
|
``` terminal
|
|
sudo apt-get install libsdl2-dev
|
|
git clone github.com/ivanizag/izapple2
|
|
cd izapple2/frontend/a2sdl
|
|
go build .
|
|
```
|
|
|
|
### MacOS
|
|
|
|
``` terminal
|
|
brew install SDL2
|
|
git clone github.com/ivanizag/izapple2
|
|
cd izapple2/frontend/a2sdl
|
|
go build .
|
|
```
|
|
|
|
### Windows
|
|
|
|
CGO needs a gcc compiler. Install
|
|
[mingw-w64](http://mingw-w64.org/doku.php/download/mingw-builds) and the
|
|
[SDL2 developer files](https://www.libsdl.org/release/) for mingw-64, and run:
|
|
|
|
``` terminal
|
|
git clone github.com/ivanizag/izapple2
|
|
cd izapple2\frontend\a2sdl
|
|
go build .
|
|
```
|
|
|
|
To run it, copy `SDL2.dll` to the same folder as `a2sdl.exe`. The latest one is
|
|
in the [Runtime binary for Windows 64-bit](https://www.libsdl.org/download-2.0.php).
|
|
|
|
### A single file executable
|
|
|
|
The released binaries are built with SDL2 linked statically, so that they run
|
|
on a machine without SDL2 installed:
|
|
|
|
``` terminal
|
|
go build -tags static -ldflags "-s -w" -o izapple2 .
|
|
```
|
|
|
|
That is what the release workflow does, see [release.md](release.md).
|
|
|
|
## Running
|
|
|
|
``` terminal
|
|
casa@servidor:~$ ./a2sdl
|
|
```
|
|
|
|
Without arguments you get the default machine, an enhanced Apple //e booting
|
|
DOS 3.3. A file on the command line is loaded in the right place by its
|
|
extension, and everything else is set with the
|
|
[command line options](command_line.md):
|
|
|
|
``` terminal
|
|
casa@servidor:~$ ./a2sdl "https://www.apple.asimov.net/images/games/action/karateka/karateka (includes intro).dsk"
|
|
casa@servidor:~$ ./a2sdl -model 2plus Total\ Replay\ v6.0.1.hdv
|
|
```
|
|
|
|
The window is resizable and the picture follows it. Press F1 for the list of
|
|
keys without leaving the emulator.
|
|
|
|
## Keys
|
|
|
|
The Apple II keyboard is where you expect it, with the arrows, Tab, Delete and
|
|
Escape mapped to what the Apple II understands. The rest:
|
|
|
|
| Key | What it does |
|
|
| --- | --- |
|
|
| F1 | Show or hide the help |
|
|
| Ctrl-F2 | Reset. F2 alone also resets while the help is shown, for the window managers that eat Ctrl-F2 |
|
|
| F4 | Show or hide the CPU trace on the terminal |
|
|
| F5 | Full speed or normal speed |
|
|
| Ctrl-F5 | Print the current speed on the terminal |
|
|
| F6 | Next screen mode: NTSC colour, plain, green, with or without scan lines. `-screen` sets the one to start with |
|
|
| F7 | Show or hide the four panels with the actual screen, page 1, page 2 and the extra info of the video mode |
|
|
| F8 | Show or hide the areas where a diskette can be dropped |
|
|
| F9 | Dump the state of the machine on the terminal |
|
|
| F10 | Next character set |
|
|
| Ctrl-F10 | Show or hide the character map |
|
|
| Shift-F10 | Show or hide the alternate text of the character map |
|
|
| F12 or PrintScreen | Save the screen as `snapshot.png` |
|
|
| Pause | Pause and unpause the emulation |
|
|
| Left alt or option | Open-Apple |
|
|
| Right alt or option | Closed-Apple |
|
|
| Shift-Insert, Cmd-V | Paste the clipboard, typed in slowly so that the machine keeps up |
|
|
|
|
On the Base64A, F3 is the Delete key of that keyboard.
|
|
|
|
The Apple keys are a place on the keyboard and are found by scancode, so they
|
|
work on the layouts where the alt keys produce another symbol. Losing the
|
|
window focus releases them, so one held while switching windows does not stay
|
|
pressed.
|
|
|
|
The title bar says which machine is running and shows `PAUSED!` while it is
|
|
paused. With the four panels or the character map on screen it shows what is
|
|
being displayed instead.
|
|
|
|
## Diskettes
|
|
|
|
Drop a file on the window to insert it. The window is divided in as many
|
|
vertical areas as removable media drives the machine has, and the file goes to
|
|
the drive of the area it is dropped on. It works with everything that goes on
|
|
the command line, including compressed images.
|
|
|
|
F8 shows a screen with the areas, each one with the name of its drive and the
|
|
image it has inserted, or `EMPTY`, and the one under the pointer marked. It
|
|
takes over the picture the same way the help does, on 80 columns. The same
|
|
screen is shown for a moment after a drop, with the drive that got the file
|
|
marked.
|
|
|
|
SDL2 does not report a file being dragged over the window, so the areas cannot
|
|
be shown while the file moves; the position of the pointer is read when the
|
|
file is dropped. The [SDL3 frontend](frontend_sdl3.md) does show them during
|
|
the drag. The areas are the same on every frontend, they are built in
|
|
`frontend/shared`.
|
|
|
|
Whatever the emulated software writes goes back to the file it came from. To
|
|
keep the images untouched use `-saveDir`, which puts the writes in an overlay
|
|
file per disk and makes writable even the disks loaded from an URL, a
|
|
compressed file or the embedded resources.
|
|
|
|
## Joysticks and mouse
|
|
|
|
Joysticks connected to the host are used as the Apple II joysticks, up to two
|
|
of them or four paddles. If the machine has no mouse card, the host mouse acts
|
|
as a joystick too.
|
|
|
|
The mouse card needs no capture: the pointer of the host is the pointer of the
|
|
Apple II, wherever it is on the window.
|
|
|
|
## Sound
|
|
|
|
The speaker and the sound cards, like the Mockingboard, are mixed and sent to
|
|
the SDL2 audio device. At full speed the sound gets choppy, which is what
|
|
happens when the machine that generates it runs faster than the sound it
|
|
generates.
|