No description
Find a file
2019-09-16 22:35:00 +02:00
.github Create CONTRIBUTING.md 2018-12-07 10:39:52 +01:00
.idea Simplified type definitions, reversed cfgfile changes 2019-01-07 20:04:05 +01:00
.vs Reworked VSLinux solution, added Guisan project 2017-03-30 23:00:20 +02:00
AndroidData Android platform updates 2018-02-24 11:43:46 +01:00
capsimg@067db4cc6b Added submodule "capsimg" for IPF support 2018-02-09 18:22:06 +01:00
conf Added a default amiberry.conf file #440 2019-09-01 13:43:45 +02:00
data Reduced size of logo, made more room for contributors list in About panel 2018-01-20 23:48:33 +01:00
docs Update README.md 2019-09-09 21:36:01 +02:00
guisan-dev Fixed GUI Buttons would not respond to normal clicks, unless the mouse was moved by at least 1 pixel 2019-09-12 23:00:45 +02:00
kickstarts Add empty directory for configuration, save state ... 2015-05-23 21:58:09 +00:00
psp2data Added initial support for PSVita/PSTV and Switch (WIP) 2019-01-06 13:16:16 +01:00
savestates Add empty directory for configuration, save state ... 2015-05-23 21:58:09 +00:00
screenshots Add empty directory for configuration, save state ... 2015-05-23 21:58:09 +00:00
src Minor drawing sync with WinUAE 2019-09-15 23:09:14 +02:00
switchdata Added initial support for PSVita/PSTV and Switch (WIP) 2019-01-06 13:16:16 +01:00
VisualGDB VisualGDB: Use RPI4 cpu flags by default 2019-09-15 21:40:13 +02:00
VSLinux Updated VS project files with new preprocessor definition 2019-01-14 19:37:51 +01:00
whdboot Updated Whdload_db to latest version 2019-08-31 23:06:14 +02:00
.gitattributes gitattributes update 2017-03-02 00:27:30 +01:00
.gitignore WHDLoad and AutoBooter Update (#430) 2019-02-13 10:46:32 +01:00
.gitmodules Added submodule "capsimg" for IPF support 2018-02-09 18:22:06 +01:00
_config.yml Set theme jekyll-theme-slate 2018-12-07 10:10:21 +01:00
CMakeLists.txt Added initial support for PSVita/PSTV and Switch (WIP) 2019-01-06 13:16:16 +01:00
COPYING WIP - merge latest sdl1-dev changes into sdl2-dev (warning, not fully checked yet, may crash!) 2017-11-29 00:54:20 +01:00
Makefile Updated Makefile with LTO options 2019-09-16 22:35:00 +02:00
PULL_REQUEST_TEMPLATE Create PULL_REQUEST_TEMPLATE 2018-01-03 10:29:31 +01:00

Amiga emulator for the Raspberry Pi and other ARM SoC

Amiberry is an optimized Amiga emulator, for ARM-based boards (like the Raspberry Pi, ASUS Tinkerboard, Odroid XU4, etc). The core emulation comes from WinUAE, but stripped down to remove excess stuff in order to achieve good performance in underpowered boards. It includes JIT CPU and FPU support, to get high-performance results on CPU-intensive emulated environments. On top of that, we have some unique features developed only for Amiberry, such as the WHDLoad booter.

Amiberry requires the SDL framework (https://libsdl.org) for graphics display, input handling and audio out. Currently both SDL1.x and SDL2 are supported, but in the future we'll probably drop support for SDL1 as things move forward. On the RPI platform specifically, we offer a special version which uses Dispmanx directly for the emulation screen, for maximum performance.

Getting SDL2

If you want to run the SDL2 version from the console (i.e. not from the full Desktop), you currently need to compile SDL2 from source on the Raspberry Pi (and possibly other platforms as well). The version bundled with Raspbian is not compiled with support for the "KMSDRM" driver, so it only works under X11.

Follow these steps to download, compile and install SDL2 from source:

https://github.com/midwan/amiberry/wiki/Compile-SDL2-from-source

If you are running Amiberry under the full Desktop instead, you can install the packages directly from the Raspbian repository instead:

  sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev

With SDL2 installed, you can proceed to install Amiberry as follows:

Pre-requisites

Amiberry requires the following packages, besides SDL (v1 or v2) itself:

  sudo apt-get install libxml2-dev libflac-dev libmpg123-dev libpng-dev libmpeg2-4-dev

Getting Amiberry

You can clone this repo, like so:

  cd ~
  git clone https://github.com/midwan/amiberry
  cd amiberry

Choosing a target

Amiberry's makefile includes several targets, to cover various platforms. For the Raspberry Pi platform specifically, we offer multiple combinations to get the best performance out of the platform, depending on the environment used:

  • SDL1 with DispmanX back-end for graphics
  • SDL2 with DispmanX back-end for graphics
  • SDL2 with whatever back-end it was configured with (e.g. KMS, OpenGL, X11, etc.)

For the Raspberry Pi specifically, the best performance can be gained by using the DispmanX back-end, because none of the other options offer multi-threaded graphics updates, unfortunately. For other platforms (e.g. using the Mali GPU), multi-threaded updates can be supported using pure SDL2 (and DispmanX is an RPI-only feature anyway).

Compiling a target

You can specify the Platform you want to build as a parameter to the make command. If you do not specify one, the default used will be rpi3-sdl2-dispmanx.

Using SDL1 + DispmanX

For the Raspberry Pi 3(B+) (SDL1 + Dispmanx), type:

  make -j2 PLATFORM=rpi3

For the Raspberry Pi 2 (SDL1 + Dispmanx), type:

  make -j2 PLATFORM=rpi2

For the Raspberry Pi 1/Zero (SDL1 + Dispmanx), type:

  make PLATFORM=rpi1

Using SDL2 + DispmanX

For the Raspberry Pi 4 (SDL2)

  make -j2 PLATFORM=rpi4-sdl2-dispmanx

For the Raspberry Pi 3(B+) (SDL2)

  make -j2 PLATFORM=rpi3-sdl2-dispmanx

For the Raspberry Pi 2 (SDL2):

  make -j2 PLATFORM=rpi2-sdl2-dispmanx

For the Raspberry Pi 1/Zero (SDL2):

  make PLATFORM=rpi1-sdl2-dispmanx

Using SDL2 + whatever back-end it was configured with

For the Raspberry Pi 4 (SDL2)

  make -j2 PLATFORM=rpi4-sdl2

For the Raspberry Pi 3(B+) (SDL2)

  make -j2 PLATFORM=rpi3-sdl2

For the Raspberry Pi 2 (SDL2):

  make -j2 PLATFORM=rpi2-sdl2

For the Raspberry Pi 1/Zero (SDL2):

  make PLATFORM=rpi1-sdl2

For the Odroid XU4 (SDL2):

  make -j6 PLATFORM=xu4

For the ASUS Tinker board (SDL2):

  make -j6 PLATFORM=tinker

For the Odroid C1 (SDL2):

  make -j4 PLATFORM=c1

For the Vero 4k (SDL2):

  make -j4 PLATFORM=vero4k

For the OrangePi PC (SDL2):

  make -j2 PLATFORM=orangepi-pc

You can check the Makefile for a full list of supported platforms!

For more documentation subjects, please check the Wiki page