A nonlinear 2D puzzle platformer taking place in impossible spaces.

View on GitHub


User Guide


AAAAXY is released in binary form as a zip file containing self-contained executables for each supported platform.

So just extract the game executable to a convenient place and run it from there!


AAAAXY can be played with a keyboard or any controller good enough for playing NES games. While the controls do follow usual standards set by two dimensional games of the past, some details are to be guessed by the player and experimented with.

The game menu can, of course, be reached using the Escape key or the Start button.

If your gamepad is not supported yet, you can typically make it work by passing its definition in SDL_GameControllerDB format as -gamepad_override flag or SDL_GAMECONTROLLERCONFIG environment variable. As an extension, multiple gamepad definitions can be provided not just separated by newlines but also by semicolons.


Press Esc or Start to get to the game menu which has settings.

Driver Settings

The following environment variables can be used in case the game does not run at all at default settings:

Video Recording

To MP4

To prepare for recording videos, make sure the ffmpeg command is available and in the current search path. On Windows, just download it and place ffmpeg.exe right next to aaaaxy.exe.

To then record a video of the game, first record a demo (see below), and then un the game again, passing the flags -dump_media=video.mp4 -demo_play=demo.dem. This will save a video of the gameplay under video.mp4.

Via Raw Files

To record a video of the game, pass the flags -dump_video=video.raw -dump_audio=audio.raw. Then play normally (game may be slower). When you then exit the game, the console window will show you a FFmpeg command to turn these files into a finished video!

Video recording can be sped up by using make FASTER_VIDEO_DUMPING=true when compiling to enable multithreading, and by passing -dump_video_fps_divisor=2 to limit the video to SFR (30fps).

Demo Recording

To record a demo of the game, pass the flags -demo_record=demo.dem.

The resulting demo.dem file can be played back with only this exact same version of the game by passing -demo_play=demo.dem; however the above section on video recording can be used to turn the demo into a video.

Note that demo playback during video recording is never at realtime. You don’t want any duplicate frames, right?

Data Storage

By default AAAAXY stores saved games in the following location:

Operating System Save Games
Android /sdcard/Android/data/io.github.divVerent.aaaaxy/files/save
iOS Library/Application Support/AAAAXY/save
Linux AppImage ~/.local/share/AAAAXY
Linux FlatPak ~/.var/app/io.github.divverent.aaaaxy/data/AAAAXY
Linux Snap ~/snap/aaaaxy/common/.local/share/AAAAXY
Linux native ~/.local/share/AAAAXY
macOS ~/Library/Application Support/AAAAXY
~/Library/Application Support/AAAAXY
Web getSave(n)
Windows C:\Users\%USERNAME%\Saved Games\AAAAXY
Wine ~/.wine/drive_c/users/$USER/Saved Games/AAAAXY
~/.wine/drive_c/users/$USER/Local Settings/Application Data/AAAAXY

This can be customized by passing the flags -conig_path and -save_path, or by passing -portable, in which case the files will be stored in subdirectories named config and save of the current directory.

It is recommended to back up these files.

WARNING: Do not edit the save game files. If needed, cheats are provided as command line options.

To edit a config setting on the web, type into the developer console something like:

setConf({show_fps: true, vsync: false});

To do this on Itch’s web player, select the index.html subframe that is hosted on first.

On Android, the file path above can only be reached via adb (USB Debugging). However, Android One backup of the savegames is enabled in the app. For example, to manually backup the primary save slot, run from an USB-connected PC:

adb pull /sdcard/Android/data/io.github.divVerent.aaaaxy/files/save/save-0.json aaaaxy-save-0.json

Similarly, to restore it, first launch the AAAAXY app, quit it again, and then run:

adb push aaaaxy-save-0.json /sdcard/Android/data/io.github.divVerent.aaaaxy/files/save/save-0.json

On iOS, the file path above can be reached using iExplorer from macOS and Windows, and using ifuse from Linux like this:

mkdir -p ~/mnt
ifuse --container io.github.divverent.aaaaxy ~/mnt
cp ~/mnt/Library/Application\ Support/AAAAXY/save/save-0.json aaaaxy-save-0.json
# or: cp aaaaxy-save-0.json ~/mnt/Library/Application\ Support/AAAAXY/save/save-0.json
fusermount -u ~/mnt

Save States

Save states can be switched in Settings / Switch Save State.