Discussion thread: https://gameparadise.org/threads/release-amiga-emulator-uae4all2-for-switch.1757/post-1771
More information and source code: https://github.com/rsn8887/uae4all2/releases/latest
Important note to Switch users
======
On the Switch, since v1.84, please use nsp injection to start uae4all2, otherwise the `config save as` and `savestate export` options will not work. On SX OS, you can do this by holding down R while launching any installed game to make hbmenu appear.
Recent Changes
======
2.00
- allow suspend/resume again. On Switch, it was fixed in SDK. On Vita, please install fd_fix plugin to prevent corruption on resume.
Description
=====
Use4All2 Mod is an Amiga emulator for Vita and Switch. This is my mod of this great Amiga emulator that was originally ported to the Vita by Cpasjuste. Depending on when you read this, this mod might be ahead or behind his version.
More Screenshots:
Thanks to Cpasjuste for the original port, for jumping in and adding shader support, for making the assembler optimizations work, and for fixing audio playback on suspend/resume in SDL2 for Switch.
Thanks to ScHlAuChi for extensive testing, ideas, and for contributing the new larger virtual keyboard images.
Thanks to wronghands for the new, better-looking menu font, all the new keyboard styles, and many ideas.
Thanks to CrashMidnick for the French virtual keyboard.
Thanks to the original authors Chui, john4p, TomB, notaz, Bernd Schneider, Toni Wilen, Pickle, smoku, AnotherGuest, Anonymous engineer, finkel, Lubomyr, pelya and many more.
Thanks to my supporters on Patreon: Andyways, Count Duckula, Jesse Harlin, Özgür Karter, Matthew Machnee, Mored4u, Ibrahim Fazel Poor, and RadicalR.
Installation
======
* Vita:
* Install .vpk
* Obtain and copy BIOS files `kick13.rom` (Amiga 500), and `kick31.rom` (Amiga 1200) to `ux0:/data/uae4all/kickstarts`.
* Optional: copy over additional BIOS files `kick12.rom`, `kick20.rom`, `kickcustom.rom` (for e.g. version 3.1.4 or any other user-supplied BIOS) to the same folder.
* Switch:
* Download and unzip `uae4all2_switch.zip`
* Copy the resulting folder `uae4all2` to `/switch/` onto your SDCard, ensure none of the "archive" flags is set.
* You should now have the executable `/switch/uae4all2/uae4all2.nro` and a folder `/switch/uae4all2/data/` with the keyboard icons and other data files on your SDCard.
* Obtain and copy BIOS files `kick13.rom` (Amiga 500), and `kick31.rom` (Amiga 1200) to your SDCard into `/switch/uae4all2/kickstarts/`.
* Optional: copy over additional BIOS files `kick12.rom`, `kick20.rom`, `kickcustom.rom` (for e.g. version 3.1.4 or any other user-supplied BIOS) to the same folder.
* Use nsp injection to start uae4all2, otherwise the `config save as` and `savestate export` options will not work. On SX OS, you can do this by holding down R while launching any installed game to make hbmenu appear.
* MD5 of verified working kickstart rom files, you can test yours at [onlinemd5](http://onlinemd5.com/):
```
kick12.rom (256 kB): (MD5) 85AD74194E87C08904327DE1A9443B7A
kick13.rom (256 kB): (MD5) 82A21C1890CAE844B3DF741F2762D48D
kick20.rom (512 kB): (MD5) FA4ACC75B49E880679FE02716AF24D71
kick31.rom (512 kB): (MD5) 646773759326FBAC3B2311FD8C8793EE
````
Other files might work, too.
* You can purchase legal bios roms from [Amiga Forever](https://www.amigaforever.com). They work. But since they are encrypted, you have to copy over your .key file along with the roms.
Vita/Switch-exclusive Features
======
- Full speed emulation of most Amiga games with zero frameskip
- Large, complete virtual keyboard with adjustable position and adjustable transparency
- Six fully mappable custom control sets: map Vita/Switch buttons to any Amiga joystick or key input
- Multiple hard-file support: up to 4 hdf files (size <2GB each on Vita, size <4GB each on Switch) can be mounted simultaneously
- Multiple controller support on Vita TV/Switch: up to four (eight on Switch) paired controllers can be fully mapped
- Analog mouse control: control the mouse using the analog stick with adjustable sensitivity
- Shader support: default "sharp_bilinear_simple" uses integer pre-scale for sharp, undistorted pixels with minimum blur, even if game is zoomed to fill the full screen
- Custom autofire: any mapped Vita/Switch button can have autofire with adjustable rate
- Savestate with hard-file support: state can be saved even when hard-files are used
- Additional emulator settings: sprite-sprite collisions can be enabled, blitter settings can be changed
- Adjustable stereo separation
- A button can be mapped to "slow mouse" in custom controls. When custom controls are on and that button is held down, the mouse pointer speed is greatly reduced. This is useful for precisely positioning the cursor.
- Sticky virtual keyboard modifiers: allows keyboard combos like CTRL-C to be entered easily
- Touchpad style pointer controls using the touchscreen
- Parallel port joystick adapter support for multiplayer games with up to 4 joysticks.
- Additional savestate slot called auto, for automatic savestate loading
- Physical keyboard and mouse support (Bluetooth on Vita, USB on Switch)
- Supports loading files from ux0: or uma0: partition (Vita only)
- Rear touch panel can be enabled for mouse pointer control (Vita only)
- Split Joy-Con support (Switch only)
- A "fast mouse" custom button can be mapped to speed up the mouse
- Automatic full 1080p support in docked mode (Switch only)
- Savestate import/export to backup savestates
- Config file management (load, save as, etc.)
- Thumbnail previews for savestates
- Four different on-screen keyboard styles: original, warm, cool, and dark
- On-screen keyboard keys can be pressed via touch input in addition to dpad navigation
Controls
=====
General
-----
(For Switch: Cross = B, Square = Y, Triangle = X, Circle = A, Select = Minus, Start = Plus)
Select = Toggle menu
Start = Toggle virtual keyboard
R+Start+Dpad up/down = Move screen up/down
R+Start+Dpad left/right = Change screenmode (to zoom in on games with borders)
Right analog stick = Analog mouse (can switch this to left stick in menu)
When custom controls are off
-----
Up to four controllers are automatically mapped to players 1-4. Players 3 and 4 are on the emulated parallel port 4 player adapter.
Left analog stick = Amiga joystick directions
Dpad = Amiga joystick directions
L shoulder button = right mouse click (player 1 only)
R shoulder button = left mouse click (player 1 only)
(Shown below are control presets 1 (default) / 2 / 3 / 4)
Square = Autofire (default) / Fire / Autofire / Fire
Cross = Fire (default) / Autofire / Up (Jump) / Up (Jump)
Triangle = Space (default) / Space / Fire / Autofire
Circle = Secondary Fire (used only in a few games)
R+Square = Ctrl
R+Circle = Left Alt
R+Cross = Help
L+Square = Left mouse
L+Circle = Right mouse
R+Dpad = Arrow keys
When custom controls are on
-----
L+Start = Toggle between custom control set number 1, 2, 3, 4 and 5
In this mode, Vita buttons can be mapped to any Amiga side keyboard key or joystick action. There's also a mapping option called "slow mouse." It will slow down the mouse pointer by a factor ten if that mapped button is held down. Up to four controllers can be mapped (for multiplayer on VitaTV and Switch). Four Amiga-side joysticks are supported. Joystick 3 and 4 are on the emulated parallel port joystick adapter.
Virtual keyboard controls
-----
Start = Toggle virtual keyboard
Right analog stick up/down = Move virtual keyboard up and down
Right analog stick left/right = Change virtual keyboard transparency
Cross = Press selected key (on Switch, this can be changed from B to A)
Square = Backspace
Triangle = Toggle shift
Circle = Turn off all sticky keys (ctrl, alt, amiga, and shift) (on Switch, this can be changed from A to B)
Touch controls
-----
Note: for multi-touch gestures, the fingers have to be far enough apart from each other, so that the Vita will not erroneously recognize them as a single finger. Otherwise the pointer will jump around.
Single short tap = left mouse click
Single short tap while holding a second finger down = right mouse click
Single finger drag = move the mouse pointer, how far the pointer moves in response to finger motion depends on the Mouse Speed setting
Dual finger drag = drag'n'drop (left mouse button is held down)
Three finger drag = drag'n'drop (right mouse button is held down)
Switch controls
-----
The default OK button in menu and on-screen keyboard is B. This can be changed to A in "more options."
ZR button = slow-mouse (if custom controls are off)
ZL button = fast-mouse (if custom controls are off)
Split Joycon Mode: Split Joycon mode can be enabled/disabled in "more options." Upto four single Joycons are supported. Buttons can still be remapped. SL for player 1 is hardcoded to bring up the keyboard.
Split Joycon Controls:
Minus/Plus = Menu (player 1 only)
SL = on-screen keyboard (player 1 only)
Pressing stick while moving it = change keyboard transparency/position, control mouse pointer (player 1 only)
SR + SL + Stick directions = hotkey to quick-zoom image and center image vertically (player 1 only)
Physical Keyboard / Mouse controls
-----
On Vita (Bluetooth): Mouse + keyboard tested working with the "Jelly Comb Mini Bluetooth Keyboard With Mouse Touchpad, ASIN:B06Y56BBYP," and with the "Jelly Comb Bluetooth Wireless Mouse ASIN:B075HBDWCF." The Amiga keys are mapped to Windows (GUI) keys as well as Page Up/Down. The Vita doesn't pair with all Bluetooth keyboards and mice. As a rule, if the keyboard works to highlight bubbles with cursor keys, it should also work in UAE4All.
On Switch (USB): All keyboards seem to work. Not all mice seem to work. [Mouse compatibility sheet](https://docs.google.com/spreadsheets/d/1Drbo5-QuSX901MwtOytSMuqRGxeIkq2HELM806I9dj0/edit#gid=0)
Notes
======
- *Bios:* Please put kickstart files in `ux0:/data/uae4all/kickstarts` on Vita and in `/switch/uae4all2/kickstarts` directory on Switch. Files must be named as `kick13.rom` (for Amiga 500), and `kick31.rom` (for Amiga 1200). Optionally, `kick12.rom`, `kick20.rom`, and `kickcustom.rom` (any user supplied file, e.g. version 3.1.4 or anything else), can also be supplied.
- *Speed:* Most games run full speed. Some slow Amiga 1200 and WHDLoad games actually run faster if the CPU speed is reduced from 14 MHz to 7 MHz, because they rely more on custom chips than CPU. Some graphics glitches in Lionheart WHDLoad inside the caves are fixed by this.
- *Config File:* If you have problems with settings not saving etc, please delete or rename your config file in the folder `ux0:/data/uae4all` (Vita) or `/switch/uae4all2/conf/` and restart the emu. I heard this can fix many problems when you are replacing an older version of this emulator with a newer version. Lots of things are changing in the config file between releases.
- *Display:* The sharp_bilinear_simple shader, on by default, creates a sharp pixel image with minimal blurring. It applies a maximum integer pre-scale first. Then it scales only the small remainder using the builtin bilinear filter, keeping the aspect ratio intact.
Many Amiga games fit the Vita and Switch screens very nicely. For example, take Chaos Engine with a screen setting of 320*200 and sharp_bilinear_simple shader enabled. The picture can be zoomed using R+Start+Dpad left/right (R+Plus+Dpad left/right on Switch), and moved vertically using R+Start+Dpad up/down (R+Plus+Dpad up/down on Switch) to center it on the screen. Once this is done, the picture fills almost the whole screen and looks amazing with no artifacts or blurriness. The game runs smooth with zero frameskip.
Selecting a 'Preset Width' of 320, 352 or 384 (max overscan) results in lo-res screen emulation, good for most games, while 640, 704, or 768 results in hi-res screen emulation, good for use with Workbench or some text-based games.
- *Blitter:* The blitter settings can help with graphics glitches in some games. Since it seems to work best, "immediate" is the default. But some games require setting blitter to "normal" and re-booting to remove graphics glitches, for example PP Hammer, Spindizzy Worlds, and Shufflepuck Cafe.
- *WHDLoad:* If you have problems with a WHDLoad .hdf game, maybe try an .adf version of the same game. Rock'n Roll is one of a few games that work on UAE4All2 only using .adf files. It has graphics glitches and runs too fast in WHDLoad with .hdf. To make it work correctly, I loaded the "Rock'n Roll.adf" from Gamebase Amiga, chose the preset A500 config, and changed the Blitter setting to Normal.
- *Sprite Collisions:* Some games require sprite-to-sprite collisions. Sprite collisions can be turned on in the "more options" menu. The only game I know of that requires this is SpaceTaxi 3.
- *Savestates:* Four regular savestates can be saved per game. There's also a slot for an automatic savestate, labeled "auto". If it exists, this will be loaded immediately when the .adf is inserted. To prevent this, delete the auto savestate by selecting it and choosing "delete savestate".
- *Multiplayer:* Up to four controllers on Vita TV and Switch are supported and can be fully mapped. The mouse can be switched off because it interferes with the other joystick that controls player 2 in most games. If you pair new controllers on Vita TV and they do not seem to work, scan for them in the "custom controls" menu by pressing L. At the bottom it will say how many controllers have been found. This scanning is not neccessary on Switch. By default, parallel port Amiga joysticks 3 and 4 are controlled by VitaTV/Switch gamepads 3 and 4. They can also be mapped to other inputs using the custom controls screen.
- *Sound:* For use with headphones, a stereo separation setting of 50 sounds better than the default setting of 100. The original Amiga had completely disjoint left/right channels. This can sound quite jarring on headphones. Concerning sound frequency, I think 48 kHz gives the best results. On the Switch, 48 kHz is the only supported frequency.
FAQ
=====
* Kickstart rom files not found on startup?
First, please ensure you are using the correct files. They should be `kick13.rom` (size: 262,144 bytes), and `kick31.rom` (size: 524,288). They should be placed in `ux0:/data/uae4all/kickstarts` on Vita and `/switch/uae4all2/kickstarts` on Switch. Second, on Vita, please make sure your ux0:/data folder does NOT have the FAT attributes "hidden" or "system" set. Additional supported files are `kick12.rom`, `kick20.rom`, and `kickcustom.rom` (for any user-supplied file, e.g. version 3.1.4).
* Black screen on Switch, or crash on startup?
In my testing (only with exFAT), I found that exFAT corruption can cause all files in the uae4all2 folder to become corrupted (among others). This includes kick13.rom and other kickstart files, which causes a black screen when leaving the menu. Game .adf files can become corrupted, causing the game to stop booting. Even the executable uae4all2.nro and/or config files in the conf folder can become corrupted quite easily, causing black screen crash on startup. Either don't use exFAT, or make a good backup of the folder and restore it via FTP if there are problems. Once I switched to FAT32, all these problems with file corruption went away.
* HDF not working?
The maximum hdf file size on Switch is 4 Gb, on Vita it is only 2 Gb. When creating a .hdf file in WinUAE for use with UAE4All2, set surfaces to 1 (size < 1 Gb), 2 (size > 1Gb), or 4 (size > 2 Gb) depending on the size of the file. Set blocksize to 512, sectors to 32 and reserved to 2. Don't use RDB mode. After creating the .hdf it has to be formatted using Workbench. A quick format to FFS filesystem is fine.
Games with known fixes
======
- Blastar
Issue: flickering scrolling
Fix: set "Blitter: Normal" and reboot
- Golden Axe
Issue: runs too fast
Fix: set "Blitter: Normal" and reboot
- Lionheart with A1200 config
Issue: some flickering graphics glitches in water and in cave, runs slow on Vita
Fix: run the floppy version using A500 config
- Lure of the Temptress (adf only)
Issue: hangs at title
Fix: use hdf version
- Mister and Misses (Amiga Power Coverdisk 14b)
Issue: flickering and missing floors
Fix: set "Blitter: Normal" and reboot
- PP Hammer
Issue: flickering
Fix: set "Blitter: Normal" and reboot
- Rainbow Islands (adf only)
Issue: hangs after title
Fix: use hdf version
- Rock'n'Roll
Issue: gfx glitches / flickering
Fix: set "Blitter: Normal," use .adf and A500 config, and reboot
- Shufflepuck Cafe
Issue: flickering
Fix: set "Blitter: Normal" and reboot.
- Spacetaxi 3
Issue: taxis move through each other
Fix: set "Sprite Collisions: On" then it works perfectly.
- Spindizzy Worlds
Issue: flickering/screen tearing
Fix: set "Blitter: Normal" and reboot.
- Xenon 2
Issue: hangs after title
Fix: use hdf version "Xenon21 disk" which works perfectly.
Games with no fixes (or unknown fixes)
======
- Banshee AGA
Issue: score display on left is missing.
Fix: unknown
- IK+
Issue: no sound fx
Fix: unknown, but can play PlayStation 1 version in Retroarch instead. The Retroarch PUAE core can play this game correctly on Vita.
- Nebulus 2
Issue: doors are not showing
Fix: unknown. This requires cycle exact, which is not supported.
- Prince of Persia
Issue: runs slow
Fix: unknown, but can play Usineur's native Switch/Vita port [SDLPop](https://github.com/usineur/SDLPoP/releases)
- Reshoot R
Issue: some of the blue background graphics are missing
Fix: unknown, but the game is still playable.
Compiling
======
* Dependencies: SDL2, SDL2_image, libpng, libjpeg, zlib
* Clone repo into a folder somewhere
* Vita:
* Install VitaSDK toolchain and all vdpm packages: http://vitasdk.org
* Compile and package:
```
mkdir build
cd build
cmake "your uae4all2 repo folder" -DBUILD_PSP2=ON -DCMAKE_BUILD_TYPE=Release
make uae4all2.vpk
```
* Note: The Vita source depends on FrangarCJ's Vita2d fbo branch with shader support here: https://github.com/Cpasjuste/vita2dlib/tree/fbo
and FrangarCJ's vita-shader-collection gtu branch: https://github.com/frangarcj/vita-shader-collection/tree/gtu
Those are both included as binaries and linked automatically.
* Switch:
* Install DevkitPro: https://devkitpro.org/wiki/devkitPro_pacman#Using_Pacman
* Install required libs (libnx >1.6.0 and recent sdl2 are required):
```
sudo -E dkp-pacman -S switch-dev
sudo -E dkp-pacman -S switch-sdl2
sudo -E dkp-pacman -S switch-sdl2_image
sudo -E dkp-pacman -S switch-glm
sudo -E dkp-pacman -S switch-glad
sudo -E dkp-pacman -S switch-mesa
sudo -E dkp-pacman -S switch-libpng
sudo -E dkp-pacman -S switch-zlib
sudo -E dkp-pacman -S switch-libjpeg-turbo
sudo -E dkp-pacman -S switch-libdrm-nouveau
```
* Compile and package:
```
mkdir build
cd build
cmake "your uae4all2 repo folder" -DBUILD_NX=ON -DCMAKE_BUILD_TYPE=Release
make uae4all2_switch.zip
```
* Unzip and copy all all files to Switch so you have `/switch/uae4all2/uae4all2.nro` and `/switch/uae4all2/data/` etc. on your SD card
* Launch using your favorite homebrew launcher
More information and source code: https://github.com/rsn8887/uae4all2/releases/latest
Important note to Switch users
======
On the Switch, since v1.84, please use nsp injection to start uae4all2, otherwise the `config save as` and `savestate export` options will not work. On SX OS, you can do this by holding down R while launching any installed game to make hbmenu appear.
Recent Changes
======
2.00
- allow suspend/resume again. On Switch, it was fixed in SDK. On Vita, please install fd_fix plugin to prevent corruption on resume.
Description
=====
Use4All2 Mod is an Amiga emulator for Vita and Switch. This is my mod of this great Amiga emulator that was originally ported to the Vita by Cpasjuste. Depending on when you read this, this mod might be ahead or behind his version.
More Screenshots:
Thanks to Cpasjuste for the original port, for jumping in and adding shader support, for making the assembler optimizations work, and for fixing audio playback on suspend/resume in SDL2 for Switch.
Thanks to ScHlAuChi for extensive testing, ideas, and for contributing the new larger virtual keyboard images.
Thanks to wronghands for the new, better-looking menu font, all the new keyboard styles, and many ideas.
Thanks to CrashMidnick for the French virtual keyboard.
Thanks to the original authors Chui, john4p, TomB, notaz, Bernd Schneider, Toni Wilen, Pickle, smoku, AnotherGuest, Anonymous engineer, finkel, Lubomyr, pelya and many more.
Thanks to my supporters on Patreon: Andyways, Count Duckula, Jesse Harlin, Özgür Karter, Matthew Machnee, Mored4u, Ibrahim Fazel Poor, and RadicalR.
Installation
======
* Vita:
* Install .vpk
* Obtain and copy BIOS files `kick13.rom` (Amiga 500), and `kick31.rom` (Amiga 1200) to `ux0:/data/uae4all/kickstarts`.
* Optional: copy over additional BIOS files `kick12.rom`, `kick20.rom`, `kickcustom.rom` (for e.g. version 3.1.4 or any other user-supplied BIOS) to the same folder.
* Switch:
* Download and unzip `uae4all2_switch.zip`
* Copy the resulting folder `uae4all2` to `/switch/` onto your SDCard, ensure none of the "archive" flags is set.
* You should now have the executable `/switch/uae4all2/uae4all2.nro` and a folder `/switch/uae4all2/data/` with the keyboard icons and other data files on your SDCard.
* Obtain and copy BIOS files `kick13.rom` (Amiga 500), and `kick31.rom` (Amiga 1200) to your SDCard into `/switch/uae4all2/kickstarts/`.
* Optional: copy over additional BIOS files `kick12.rom`, `kick20.rom`, `kickcustom.rom` (for e.g. version 3.1.4 or any other user-supplied BIOS) to the same folder.
* Use nsp injection to start uae4all2, otherwise the `config save as` and `savestate export` options will not work. On SX OS, you can do this by holding down R while launching any installed game to make hbmenu appear.
* MD5 of verified working kickstart rom files, you can test yours at [onlinemd5](http://onlinemd5.com/):
```
kick12.rom (256 kB): (MD5) 85AD74194E87C08904327DE1A9443B7A
kick13.rom (256 kB): (MD5) 82A21C1890CAE844B3DF741F2762D48D
kick20.rom (512 kB): (MD5) FA4ACC75B49E880679FE02716AF24D71
kick31.rom (512 kB): (MD5) 646773759326FBAC3B2311FD8C8793EE
````
Other files might work, too.
* You can purchase legal bios roms from [Amiga Forever](https://www.amigaforever.com). They work. But since they are encrypted, you have to copy over your .key file along with the roms.
Vita/Switch-exclusive Features
======
- Full speed emulation of most Amiga games with zero frameskip
- Large, complete virtual keyboard with adjustable position and adjustable transparency
- Six fully mappable custom control sets: map Vita/Switch buttons to any Amiga joystick or key input
- Multiple hard-file support: up to 4 hdf files (size <2GB each on Vita, size <4GB each on Switch) can be mounted simultaneously
- Multiple controller support on Vita TV/Switch: up to four (eight on Switch) paired controllers can be fully mapped
- Analog mouse control: control the mouse using the analog stick with adjustable sensitivity
- Shader support: default "sharp_bilinear_simple" uses integer pre-scale for sharp, undistorted pixels with minimum blur, even if game is zoomed to fill the full screen
- Custom autofire: any mapped Vita/Switch button can have autofire with adjustable rate
- Savestate with hard-file support: state can be saved even when hard-files are used
- Additional emulator settings: sprite-sprite collisions can be enabled, blitter settings can be changed
- Adjustable stereo separation
- A button can be mapped to "slow mouse" in custom controls. When custom controls are on and that button is held down, the mouse pointer speed is greatly reduced. This is useful for precisely positioning the cursor.
- Sticky virtual keyboard modifiers: allows keyboard combos like CTRL-C to be entered easily
- Touchpad style pointer controls using the touchscreen
- Parallel port joystick adapter support for multiplayer games with up to 4 joysticks.
- Additional savestate slot called auto, for automatic savestate loading
- Physical keyboard and mouse support (Bluetooth on Vita, USB on Switch)
- Supports loading files from ux0: or uma0: partition (Vita only)
- Rear touch panel can be enabled for mouse pointer control (Vita only)
- Split Joy-Con support (Switch only)
- A "fast mouse" custom button can be mapped to speed up the mouse
- Automatic full 1080p support in docked mode (Switch only)
- Savestate import/export to backup savestates
- Config file management (load, save as, etc.)
- Thumbnail previews for savestates
- Four different on-screen keyboard styles: original, warm, cool, and dark
- On-screen keyboard keys can be pressed via touch input in addition to dpad navigation
Controls
=====
General
-----
(For Switch: Cross = B, Square = Y, Triangle = X, Circle = A, Select = Minus, Start = Plus)
Select = Toggle menu
Start = Toggle virtual keyboard
R+Start+Dpad up/down = Move screen up/down
R+Start+Dpad left/right = Change screenmode (to zoom in on games with borders)
Right analog stick = Analog mouse (can switch this to left stick in menu)
When custom controls are off
-----
Up to four controllers are automatically mapped to players 1-4. Players 3 and 4 are on the emulated parallel port 4 player adapter.
Left analog stick = Amiga joystick directions
Dpad = Amiga joystick directions
L shoulder button = right mouse click (player 1 only)
R shoulder button = left mouse click (player 1 only)
(Shown below are control presets 1 (default) / 2 / 3 / 4)
Square = Autofire (default) / Fire / Autofire / Fire
Cross = Fire (default) / Autofire / Up (Jump) / Up (Jump)
Triangle = Space (default) / Space / Fire / Autofire
Circle = Secondary Fire (used only in a few games)
R+Square = Ctrl
R+Circle = Left Alt
R+Cross = Help
L+Square = Left mouse
L+Circle = Right mouse
R+Dpad = Arrow keys
When custom controls are on
-----
L+Start = Toggle between custom control set number 1, 2, 3, 4 and 5
In this mode, Vita buttons can be mapped to any Amiga side keyboard key or joystick action. There's also a mapping option called "slow mouse." It will slow down the mouse pointer by a factor ten if that mapped button is held down. Up to four controllers can be mapped (for multiplayer on VitaTV and Switch). Four Amiga-side joysticks are supported. Joystick 3 and 4 are on the emulated parallel port joystick adapter.
Virtual keyboard controls
-----
Start = Toggle virtual keyboard
Right analog stick up/down = Move virtual keyboard up and down
Right analog stick left/right = Change virtual keyboard transparency
Cross = Press selected key (on Switch, this can be changed from B to A)
Square = Backspace
Triangle = Toggle shift
Circle = Turn off all sticky keys (ctrl, alt, amiga, and shift) (on Switch, this can be changed from A to B)
Touch controls
-----
Note: for multi-touch gestures, the fingers have to be far enough apart from each other, so that the Vita will not erroneously recognize them as a single finger. Otherwise the pointer will jump around.
Single short tap = left mouse click
Single short tap while holding a second finger down = right mouse click
Single finger drag = move the mouse pointer, how far the pointer moves in response to finger motion depends on the Mouse Speed setting
Dual finger drag = drag'n'drop (left mouse button is held down)
Three finger drag = drag'n'drop (right mouse button is held down)
Switch controls
-----
The default OK button in menu and on-screen keyboard is B. This can be changed to A in "more options."
ZR button = slow-mouse (if custom controls are off)
ZL button = fast-mouse (if custom controls are off)
Split Joycon Mode: Split Joycon mode can be enabled/disabled in "more options." Upto four single Joycons are supported. Buttons can still be remapped. SL for player 1 is hardcoded to bring up the keyboard.
Split Joycon Controls:
Minus/Plus = Menu (player 1 only)
SL = on-screen keyboard (player 1 only)
Pressing stick while moving it = change keyboard transparency/position, control mouse pointer (player 1 only)
SR + SL + Stick directions = hotkey to quick-zoom image and center image vertically (player 1 only)
Physical Keyboard / Mouse controls
-----
On Vita (Bluetooth): Mouse + keyboard tested working with the "Jelly Comb Mini Bluetooth Keyboard With Mouse Touchpad, ASIN:B06Y56BBYP," and with the "Jelly Comb Bluetooth Wireless Mouse ASIN:B075HBDWCF." The Amiga keys are mapped to Windows (GUI) keys as well as Page Up/Down. The Vita doesn't pair with all Bluetooth keyboards and mice. As a rule, if the keyboard works to highlight bubbles with cursor keys, it should also work in UAE4All.
On Switch (USB): All keyboards seem to work. Not all mice seem to work. [Mouse compatibility sheet](https://docs.google.com/spreadsheets/d/1Drbo5-QuSX901MwtOytSMuqRGxeIkq2HELM806I9dj0/edit#gid=0)
Notes
======
- *Bios:* Please put kickstart files in `ux0:/data/uae4all/kickstarts` on Vita and in `/switch/uae4all2/kickstarts` directory on Switch. Files must be named as `kick13.rom` (for Amiga 500), and `kick31.rom` (for Amiga 1200). Optionally, `kick12.rom`, `kick20.rom`, and `kickcustom.rom` (any user supplied file, e.g. version 3.1.4 or anything else), can also be supplied.
- *Speed:* Most games run full speed. Some slow Amiga 1200 and WHDLoad games actually run faster if the CPU speed is reduced from 14 MHz to 7 MHz, because they rely more on custom chips than CPU. Some graphics glitches in Lionheart WHDLoad inside the caves are fixed by this.
- *Config File:* If you have problems with settings not saving etc, please delete or rename your config file in the folder `ux0:/data/uae4all` (Vita) or `/switch/uae4all2/conf/` and restart the emu. I heard this can fix many problems when you are replacing an older version of this emulator with a newer version. Lots of things are changing in the config file between releases.
- *Display:* The sharp_bilinear_simple shader, on by default, creates a sharp pixel image with minimal blurring. It applies a maximum integer pre-scale first. Then it scales only the small remainder using the builtin bilinear filter, keeping the aspect ratio intact.
Many Amiga games fit the Vita and Switch screens very nicely. For example, take Chaos Engine with a screen setting of 320*200 and sharp_bilinear_simple shader enabled. The picture can be zoomed using R+Start+Dpad left/right (R+Plus+Dpad left/right on Switch), and moved vertically using R+Start+Dpad up/down (R+Plus+Dpad up/down on Switch) to center it on the screen. Once this is done, the picture fills almost the whole screen and looks amazing with no artifacts or blurriness. The game runs smooth with zero frameskip.
Selecting a 'Preset Width' of 320, 352 or 384 (max overscan) results in lo-res screen emulation, good for most games, while 640, 704, or 768 results in hi-res screen emulation, good for use with Workbench or some text-based games.
- *Blitter:* The blitter settings can help with graphics glitches in some games. Since it seems to work best, "immediate" is the default. But some games require setting blitter to "normal" and re-booting to remove graphics glitches, for example PP Hammer, Spindizzy Worlds, and Shufflepuck Cafe.
- *WHDLoad:* If you have problems with a WHDLoad .hdf game, maybe try an .adf version of the same game. Rock'n Roll is one of a few games that work on UAE4All2 only using .adf files. It has graphics glitches and runs too fast in WHDLoad with .hdf. To make it work correctly, I loaded the "Rock'n Roll.adf" from Gamebase Amiga, chose the preset A500 config, and changed the Blitter setting to Normal.
- *Sprite Collisions:* Some games require sprite-to-sprite collisions. Sprite collisions can be turned on in the "more options" menu. The only game I know of that requires this is SpaceTaxi 3.
- *Savestates:* Four regular savestates can be saved per game. There's also a slot for an automatic savestate, labeled "auto". If it exists, this will be loaded immediately when the .adf is inserted. To prevent this, delete the auto savestate by selecting it and choosing "delete savestate".
- *Multiplayer:* Up to four controllers on Vita TV and Switch are supported and can be fully mapped. The mouse can be switched off because it interferes with the other joystick that controls player 2 in most games. If you pair new controllers on Vita TV and they do not seem to work, scan for them in the "custom controls" menu by pressing L. At the bottom it will say how many controllers have been found. This scanning is not neccessary on Switch. By default, parallel port Amiga joysticks 3 and 4 are controlled by VitaTV/Switch gamepads 3 and 4. They can also be mapped to other inputs using the custom controls screen.
- *Sound:* For use with headphones, a stereo separation setting of 50 sounds better than the default setting of 100. The original Amiga had completely disjoint left/right channels. This can sound quite jarring on headphones. Concerning sound frequency, I think 48 kHz gives the best results. On the Switch, 48 kHz is the only supported frequency.
FAQ
=====
* Kickstart rom files not found on startup?
First, please ensure you are using the correct files. They should be `kick13.rom` (size: 262,144 bytes), and `kick31.rom` (size: 524,288). They should be placed in `ux0:/data/uae4all/kickstarts` on Vita and `/switch/uae4all2/kickstarts` on Switch. Second, on Vita, please make sure your ux0:/data folder does NOT have the FAT attributes "hidden" or "system" set. Additional supported files are `kick12.rom`, `kick20.rom`, and `kickcustom.rom` (for any user-supplied file, e.g. version 3.1.4).
* Black screen on Switch, or crash on startup?
In my testing (only with exFAT), I found that exFAT corruption can cause all files in the uae4all2 folder to become corrupted (among others). This includes kick13.rom and other kickstart files, which causes a black screen when leaving the menu. Game .adf files can become corrupted, causing the game to stop booting. Even the executable uae4all2.nro and/or config files in the conf folder can become corrupted quite easily, causing black screen crash on startup. Either don't use exFAT, or make a good backup of the folder and restore it via FTP if there are problems. Once I switched to FAT32, all these problems with file corruption went away.
* HDF not working?
The maximum hdf file size on Switch is 4 Gb, on Vita it is only 2 Gb. When creating a .hdf file in WinUAE for use with UAE4All2, set surfaces to 1 (size < 1 Gb), 2 (size > 1Gb), or 4 (size > 2 Gb) depending on the size of the file. Set blocksize to 512, sectors to 32 and reserved to 2. Don't use RDB mode. After creating the .hdf it has to be formatted using Workbench. A quick format to FFS filesystem is fine.
Games with known fixes
======
- Blastar
Issue: flickering scrolling
Fix: set "Blitter: Normal" and reboot
- Golden Axe
Issue: runs too fast
Fix: set "Blitter: Normal" and reboot
- Lionheart with A1200 config
Issue: some flickering graphics glitches in water and in cave, runs slow on Vita
Fix: run the floppy version using A500 config
- Lure of the Temptress (adf only)
Issue: hangs at title
Fix: use hdf version
- Mister and Misses (Amiga Power Coverdisk 14b)
Issue: flickering and missing floors
Fix: set "Blitter: Normal" and reboot
- PP Hammer
Issue: flickering
Fix: set "Blitter: Normal" and reboot
- Rainbow Islands (adf only)
Issue: hangs after title
Fix: use hdf version
- Rock'n'Roll
Issue: gfx glitches / flickering
Fix: set "Blitter: Normal," use .adf and A500 config, and reboot
- Shufflepuck Cafe
Issue: flickering
Fix: set "Blitter: Normal" and reboot.
- Spacetaxi 3
Issue: taxis move through each other
Fix: set "Sprite Collisions: On" then it works perfectly.
- Spindizzy Worlds
Issue: flickering/screen tearing
Fix: set "Blitter: Normal" and reboot.
- Xenon 2
Issue: hangs after title
Fix: use hdf version "Xenon21 disk" which works perfectly.
Games with no fixes (or unknown fixes)
======
- Banshee AGA
Issue: score display on left is missing.
Fix: unknown
- IK+
Issue: no sound fx
Fix: unknown, but can play PlayStation 1 version in Retroarch instead. The Retroarch PUAE core can play this game correctly on Vita.
- Nebulus 2
Issue: doors are not showing
Fix: unknown. This requires cycle exact, which is not supported.
- Prince of Persia
Issue: runs slow
Fix: unknown, but can play Usineur's native Switch/Vita port [SDLPop](https://github.com/usineur/SDLPoP/releases)
- Reshoot R
Issue: some of the blue background graphics are missing
Fix: unknown, but the game is still playable.
Compiling
======
* Dependencies: SDL2, SDL2_image, libpng, libjpeg, zlib
* Clone repo into a folder somewhere
* Vita:
* Install VitaSDK toolchain and all vdpm packages: http://vitasdk.org
* Compile and package:
```
mkdir build
cd build
cmake "your uae4all2 repo folder" -DBUILD_PSP2=ON -DCMAKE_BUILD_TYPE=Release
make uae4all2.vpk
```
* Note: The Vita source depends on FrangarCJ's Vita2d fbo branch with shader support here: https://github.com/Cpasjuste/vita2dlib/tree/fbo
and FrangarCJ's vita-shader-collection gtu branch: https://github.com/frangarcj/vita-shader-collection/tree/gtu
Those are both included as binaries and linked automatically.
* Switch:
* Install DevkitPro: https://devkitpro.org/wiki/devkitPro_pacman#Using_Pacman
* Install required libs (libnx >1.6.0 and recent sdl2 are required):
```
sudo -E dkp-pacman -S switch-dev
sudo -E dkp-pacman -S switch-sdl2
sudo -E dkp-pacman -S switch-sdl2_image
sudo -E dkp-pacman -S switch-glm
sudo -E dkp-pacman -S switch-glad
sudo -E dkp-pacman -S switch-mesa
sudo -E dkp-pacman -S switch-libpng
sudo -E dkp-pacman -S switch-zlib
sudo -E dkp-pacman -S switch-libjpeg-turbo
sudo -E dkp-pacman -S switch-libdrm-nouveau
```
* Compile and package:
```
mkdir build
cd build
cmake "your uae4all2 repo folder" -DBUILD_NX=ON -DCMAKE_BUILD_TYPE=Release
make uae4all2_switch.zip
```
* Unzip and copy all all files to Switch so you have `/switch/uae4all2/uae4all2.nro` and `/switch/uae4all2/data/` etc. on your SD card
* Launch using your favorite homebrew launcher