Table of Contents

• Getting the app
• Hardware requirements
• User expectations
• BIOS Information
• Getting games, game compression
• Slowdowns and lag
• Improving game performance
• Adding buttons and sticks
• Customizing the touch controller
• Landscape/Portrait mode switching
• Using Bluetooth controllers
• Using game-specific settings
• Adding game-specific button layouts
• Creating macro/combo buttons
• Fixing rendering glitches
• Using/creating multiple savestates
• Importing memcards and all saves
• Savedata/Appdata location
• Adding covers to the game grid
• Creating launcher shortcuts
• Software renderer performance
• Using affinity control

How do I get the app?

Google Play: We recommend installing the app from Google Play. This ensures we receive any crash reports, and you are automatically updated to the latest version.

APK Download: Since December 28, 2021 you can download an APK version of AetherSX2 if your device does not support Google Play. We do not recommend the APK installation. You should use the Play Store link to ensure you have the latest version.

Additionally, no community support will be provided for users who install from APK. If your device is not supported in the Play Store version, it is likely too slow to run AetherSX2.

What are the requirements?

The console is an extremely complex piece of hardware, with many very powerful components, even for today. Due to differences between the console hardware and your phone's hardware, they are computationally expensive to simulate. You need a high end device to achieve good performance.

We recommend at least a Snapdragon 845-equivalent device. This means 4 large cores (Cortex-A75 level). If you only have two big cores (e.g. Snapdragon 700 series SoCs), you should not enable multi-threaded VU, and performance will suffer as a result.

Devices with Mali or PowerVR GPUs will run the app, but performance will be lower than Adreno GPUs. If you want to use the app on a slower device, you can try it, but games will run slow, especially heavier titles.

What should my expectations be?

This is a free app, worked on as a hobby in the developers' free time. It is not going to be perfect, far from it. We will continue to improve it when we have time, but please remember this is not our jobs, and to have realistic expectations, especially if you do not have a high end device.

AetherSX2 will always be free, and will never contain ads. If you have been forced to pay or watch ads to play games, you should get your money back.

Is a BIOS required?

Yes, it is. A BIOS image is required to play games and it's not optional. This image should be dumped from your own console, using a homebrew application. There are plenty of guides available online on how to dump your console's BIOS.

Where do I get games?

AetherSX2 should only be used to play games you own and have dumped from disc yourself. To dump your games, you can use a tool such as ImgBurn to create a .iso for the disc, and then copy across it to your device over USB.

Optionally, you can use compression tools such as gzip or chdman to further reduce the size.

My games are running slow / are laggy!

Different games have very different hardware requirements, due to how much they utilized the various components of the console. See the next section.

How do I improve game performance?

• Use the Vulkan renderer, especically if you have a Mali GPU. Note that some games may perform better with OpenGL.

• Underclock the emulated CPU by setting the cycle rate to a negative number, and cycle skip to a positive number in System settings.

• If the game slows down depending on the camera angle, this may be due to GS downloads, which are very slow on mobile GPUs.
  You can try setting the hardware download mode to Unsynchronized or Disabled, but this may create some glitches in effects.

• You can try switching the SPU2 mixing mode to Async Mix instead of Timestretch. But this is not compatible with all games.

• For some devices (e.g. Samsung and Pixel), using affinity control can improve performance consistency. See the affinity control section below.

• Reducing blending accuracy can improve performance in some games, at the cost of broken visuals.

If you have bad performance after an update, reset settings. Sometimes we change settings to more performant defaults.

How do I add L3/R3 buttons and the right analog stick?

Open Controller Settings while ingame, by pausing and tapping the controller icon in the top-right corner. Select the Touchscreen tab, and "Add/Remove Buttons" for L3/R3, and/or change the control layout to dual sticks.

How do I customize the touchscreen controller (position/scale)?

Press the pause or back button while ingame, tap the controls tab in the top-right corner, and select the Touchscreen tab. You can also add additional buttons for hotkeys here, e.g. fast forward, quick load/save, etc.

The app opens in portrait mode, how do I change it to landscape?

Turn your device around if you have auto rotation enabled. You can also force it to always use landscape in the first page of App Settings.

My Bluetooth controller isn't working!

Map the controller in "Controller Settings". You can start with the automatic mapping, but sometimes triggers or sticks still need to be mapped manually.

How can I use different settings for each game?

Long press the game in the game list/grid, tap Game Properties, and tap the Game Settings tab. If you want to change these settings while in-game, open the pause menu, and tap the info button in the top-right corner to access Game Properties.

How can I set up a different touchscreen button layout for different games?

AetherSX2 now has "input profiles", which are a grouping of the touchscreen button layout, as well as Bluetooth controller bindings. To create an input profile:

1. Configure the touchscreen buttons in the layout you desire (optional).
2. Bind the bluetooth controller with the configuration you desire, and set up any macro buttons (optional).
3. Save this as an input profile. In Controller Settings, there is a "Save Profile" option in the first tab.
4. Optionally, reset the touchscreen layout back to default (also in the same menu).

You can load this profile manually when you want to use it, but you can also automatically load the profile for specific games. To do so:

1. Open Game Properties for the game you want to use the profile for (either ingame or from the game list).
2. Swipe across to the General tab.
3. Tap "Input Profile", and select the profile you wish to use.
4. The profile will be automatically loaded when the game starts. When switching to another game, the layout will revert to the global setting.

I want to create macro, or "combo" buttons.

You get 4 macro buttons per virtual controller:

1. Open Controller Settings

2. Swipe to the controller port you wish to create the macro for (usually Port 1).

3. Scroll down to the Macro category, and tap the one-of-four button you wish to customize.

4. Optionally, set a trigger for the macro button. This can be a button on your phone (e.g. volume), a controller button, a combination of controller buttons, etc. Or, leave it empty if you want to activate it with the touchscreen.

5. Choose a combination of buttons that you wish the macro to activate. You can select any combination of face buttons, stick directions, etc. For example, Cross + Right Stick Up (RUp).

6. The frequency setting determines how often the macro will toggle in frames. If you just want a combo button, leave the frequency at zero/default. Otherwise, it will simulate repeatedly releasing/pressing the button at the frequency you choose. In other words, it automates button mashing!

7. Tap out of the popup, or press the back button to leave the macro setup.

8. Optionally, enable the touchscreen button for the macro. They are hidden by default. This is in Controller Settings -> Add/Remove Buttons, and pick Macro 1 through 4. You must be ingame to add the button. The buttons will appear as M1 through M4.

My games have rendering glitches.

Due to the complexity of the console's hardware, there are still plenty of issues which arise when using the hardware renderer. You can try using the software renderer for these games.

I want to save more than one state.

Open the pause menu and tap Load/Save state, there are 10 slots + a quick save (for onscreen buttons).

I want to copy my saves from another device.

Currently you can only import an entire memory card at once; it is not possible to import individual saves.

Swiping from the left in the game list will show an “Import Memory Card” option which you can use to import a *.ps2 image of a memory card.

Where are my saves located?

Due to scoped storage on Android 11+, we cannot place your saves in a normal directory on external storage.
However, with a file explorer app, you should be able to access the Android/data/ directory, in your primary storage volume, which contains your save states and memory cards.

Note that accessing this directory requires granting additional permissions to your file manager on Android 11+.

How do I add covers to the game grid?

Place cover images in the covers directory, located in the data directory mentioned above, with the file name as the game title or serial in jpg/png format.

Alternatively, you can long press in the game list and select “Choose Cover Image” to import an image.

How do I create launcher shortcuts for games?

Long press the game in the game list, and select “Create Launcher Shortcut”.

How to improve software renderer performance?

The software renderer draws everything onscreen using the CPU instead of the GPU, which is very slow in comparison. However, the software renderer's performance has now been improved to the point where it's usable for many games.

Assuming you have a device with 4 big cores, you'll want to disable multi-threaded VU to free up one of your big cores, and the software rendering threads to 2. You can then enable affinity control (to any mode), which will also pin the software threads to the big cores.

If you have a device with only 2 big cores, the software renderer will never perform well; the small cores are much too slow for rasterization.

How do I use affinity control?

For some devices (e.g. Samsung and Pixel), using affinity control can improve performance consistency. By enabling this option, the CPU cores in your device are sorted from most powerful to least powerful, and the threads pinned to these cores in the order you select, to avoid the scheduler constantly moving them around.

1. EE Thread (Emotion Engine) - This thread is responsible for most of the game logic, as well as VU0, DMA, etc. In most games, it is the most heavy thread.

2. GS Thread (Graphics Synthesizer) - This thread is responsible for receiving packets from the EE and VU1, analyses them, and generates draw commands for the host GPU for rendering. In some games, particularly those which are draw call heavy, it can be the most heavy.

3. VU Thread (Vector Unit 1) - This thread handles execution of VU1 microprograms, which provide similar functionality to modern GPU's vertex shaders. It is usually the lightest thread, but in some games (e.g. God of War), it can actually be the heaviest, due to complex microprograms and/or synchronization. This thread is only active when MTVU is enabled.

The best setting will depend on your device and the game, hence why it is settable per-game. If you're experiencing massive frame rate variance, where it bounces around with a range of more than 20fps, experimenting with this option may help.

Use the "Show CPU Usage" option in graphics to work out which thread is the heaviest/second heaviest, and then choose the corresponding affinity control mode. Devices with equal big/little core distribution likely won't need to use this option.