Amiga UAE Emulator

Ok I got it up and running, finally found some time this week end. I will create a new fork on github with UAE4ARM-RPi that has all changes needed for Gameshell. Including instructions, example configuration files and maybe icons.

The next days I have still to try out CD32 support, find a way to switch between joystick and mouse. Or how one could change disks, like for the all new Barbarian Plus which has 6 disks.

I tested quite a lot of games, to this moment only Pacmania did show some audio and screen size issues, everything else works well.

I can now configure Gameshell keys to behave different for each single game. E.g. space key in Turrican for the energy line on Y button. Or in Hybris have Y for ship expansion, and A for smart bombs and B for pause.

I guess Gameshell has not enough keys for FA-18 Interceptor, however I have not yet given up on that one :slight_smile:

Some parts are coded and not flexible right now, so I still need some time to make it configurable by using the existing UAE configuration files.

Finally, although UAE provides an in game menu, usually opening with F12 however also configurable, it crashes once I press it. But this one is not that important for me yet. Priority is to be able to play games.

1 Like

A question to those among you with Lightkey, I have none, however adding it to the custom input control for the Amiga emulator won’t take too much additional time, so I thought to add it too.

I understand that there are 5 additional buttons, LK1 (home key), LK2 (page up), LK3 (shift), LK4 (page down) and LK5 (end) by default.

Here my question, is LK1 the button to the out erleft ? Hence usually left shoulder button, aka L1 ? and LK2 would be the second left should button, aka L2 ?

First version of uae4arm-rpi for Gameshell ready for download. Instructions may be found here. All you need is to place action.config to /home/cpi/apps/launcher/Menu/GameShell/20_Retro\ Games/Amiga. As usual with SSH, read ssh howto if you need help. The action should then automatically download the emulator. Should the action fail to do this, you may manually download it from here, then upload the unzipped uae4arm file to Gameshell to /home/cpi/apps/emulators directory.

I did also prepare an optional launcher icon:

Example configuration files, as explained in Readme, may be found here

The emulator runs well enough for the games I want to play on Gameshell. There are a few things that could be improved in the future, if time permits.

4 Likes

Wow, thanks a lot. But:

Followed your instructions. But it doesn’t work. If I’m starting a game, the loading screen (of the gameshell) shows up and returns to the main menu. All other games and emulators on my gs work fine. Any suggestions?

Hello @nouty,

did you install libguichan-sdl-0.8.1, and is your GS running with stock OS ? If not you probably have to compile the emulator from sources, or first try to install the packages listed in the main Readme. Your UAE configuration file is based on one of my examples ? Kickstart ROM is there too ?

hey there… first of all: the biggest and largest of thank-you! It’s just because of your concise and well written how-tos here that I got the UAE to work on my GS - but however I suffer from the same issues (screen somehow doesn’t fit and somethings wrong with the sound - plus sometimes the control pad is not working at all) so I read on and stumbled upon your UAE4ARM-RPi fork and happily cloned it, installed all the dev packages from the Readme.txt and tried to build it. But alas, it fails with a strange error:

g++ `sdl-config --cflags` -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard `xml2-config --cflags` -DCPU_arm -DARMV6_ASSEMBLY -DPANDORA -DWITH_INGAME_WARNING -DROM_PATH_PREFIX=\"./\" -DDATA_PREFIX=\"./data/\" -DSAVE_PREFIX=\"./saves/\" -DUSE_SDL -DPICASSO96 -DUSE_ARMNEON -DRASPBERRY -DCAPSLOCK_DEBIAN_WORKAROUND -DARMV6T2 -DUSE_JIT_FPU -DARM_HAS_DIV -DGIT_VERSION=38591d3 -I/opt/vc/include -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -Isrc -Isrc/od-pandora  -Isrc/threaddep -Isrc/menu -Isrc/include -Isrc/archivers -Isrc/od-pandora -Wno-unused -Wno-format  -DGCCCONSTFUNC="__attribute__((const))" -fexceptions -fpermissive -std=gnu++11 -marm -Ofast -fomit-frame-pointer -finline -fno-builtin   -c -o src/od-rasp/rasp_gfx.o src/od-rasp/rasp_gfx.cpp
    src/od-rasp/rasp_gfx.cpp:22:22: fatal error: bcm_host.h: No such file or directory
     #include "bcm_host.h"
                      ^
    compilation terminated.
    <builtin>: recipe for target 'src/od-rasp/rasp_gfx.o' failed
    make: *** [src/od-rasp/rasp_gfx.o] Error 1    

googling this missing bcm_host.h is not vey insightful as it somehow should be present or is part of the packages

libraspberrypi-dev raspberrypi-kernel-headers

which cannot be installed on the GS…

do you have any idea why this fails?

thanks, jc

Hello @jeepcreep,

did you compile with:

make PLATFORM=gameshell -j 2

hey @sbielmann … this actually got me past the above error and it manages to build capsimg but however the following build step fails with a cascade of

undefined referenced to ....

like so:

g++ -o uae4arm src/akiko.o src/ar.o src/aros.rom.o src/audio.o src/autoconf.o src/blitfunc.o src/blittable.o src/blitter.o src/blkdev.o src/blkdev_cdimage.o src/bsdsocket.o src/calc.o src/cd32_fmv.o src/cd32_fmv_genlock.o src/cdrom.o src/cfgfile.o src/cia.o src/crc32.o src/custom.o src/def_icons.o src/devices.o src/disk.o src/diskutil.o src/dlopen.o src/drawing.o src/events.o src/expansion.o src/fdi2raw.o src/filesys.o src/flashrom.o src/fpp.o src/fsdb.o src/fsdb_unix.o src/fsusage.o src/gayle.o src/gfxboard.o src/gfxutil.o src/hardfile.o src/hrtmon.rom.o src/ide.o src/inputdevice.o src/keybuf.o src/main.o src/memory.o src/native2amiga.o src/rommgr.o src/rtc.o src/savestate.o src/scsi.o src/statusline.o src/traps.o src/uaelib.o src/uaeresource.o src/zfile.o src/zfile_archive.o src/archivers/7z/7zAlloc.o src/archivers/7z/7zBuf.o src/archivers/7z/7zCrc.o src/archivers/7z/7zCrcOpt.o src/archivers/7z/7zDec.o src/archivers/7z/7zIn.o src/archivers/7z/7zStream.o src/archivers/7z/Bcj2.o src/archivers/7z/Bra.o src/archivers/7z/Bra86.o src/archivers/7z/LzmaDec.o src/archivers/7z/Lzma2Dec.o src/archivers/7z/BraIA64.o src/archivers/7z/Delta.o src/archivers/7z/Sha256.o src/archivers/7z/Xz.o src/archivers/7z/XzCrc64.o src/archivers/7z/XzDec.o src/archivers/dms/crc_csum.o src/archivers/dms/getbits.o src/archivers/dms/maketbl.o src/archivers/dms/pfile.o src/archivers/dms/tables.o src/archivers/dms/u_deep.o src/archivers/dms/u_heavy.o src/archivers/dms/u_init.o src/archivers/dms/u_medium.o src/archivers/dms/u_quick.o src/archivers/dms/u_rle.o src/archivers/lha/crcio.o src/archivers/lha/dhuf.o src/archivers/lha/header.o src/archivers/lha/huf.o src/archivers/lha/larc.o src/archivers/lha/lhamaketbl.o src/archivers/lha/lharc.o src/archivers/lha/shuf.o src/archivers/lha/slide.o src/archivers/lha/uae_lha.o src/archivers/lha/util.o src/archivers/lzx/unlzx.o src/archivers/mp2/kjmp2.o src/archivers/wrp/warp.o src/archivers/zip/unzip.o src/caps/caps_win32.o src/md-pandora/support.o src/od-pandora/bsdsocket_host.o src/od-pandora/cda_play.o src/od-pandora/charset.o src/od-pandora/fsdb_host.o src/od-pandora/hardfile_pandora.o src/od-pandora/keyboard.o src/od-pandora/mp3decoder.o src/od-pandora/writelog.o src/od-pandora/pandora.o src/od-pandora/pandora_filesys.o src/od-pandora/pandora_input.o src/od-pandora/pandora_gui.o src/od-pandora/pandora_rp9.o src/od-pandora/pandora_mem.o src/od-pandora/sigsegv_handler.o src/sd-sdl/sound_sdl_new.o src/od-pandora/gui/UaeRadioButton.o src/od-pandora/gui/UaeDropDown.o src/od-pandora/gui/UaeCheckBox.o src/od-pandora/gui/UaeListBox.o src/od-pandora/gui/SelectorEntry.o src/od-pandora/gui/ShowHelp.o src/od-pandora/gui/ShowMessage.o src/od-pandora/gui/SelectFolder.o src/od-pandora/gui/SelectFile.o src/od-pandora/gui/CreateFilesysHardfile.o src/od-pandora/gui/EditFilesysVirtual.o src/od-pandora/gui/EditFilesysHardfile.o src/od-pandora/gui/PanelPaths.o src/od-pandora/gui/PanelQuickstart.o src/od-pandora/gui/PanelConfig.o src/od-pandora/gui/PanelCPU.o src/od-pandora/gui/PanelChipset.o src/od-pandora/gui/PanelROM.o src/od-pandora/gui/PanelRAM.o src/od-pandora/gui/PanelFloppy.o src/od-pandora/gui/PanelHD.o src/od-pandora/gui/PanelDisplay.o src/od-pandora/gui/PanelSound.o src/od-pandora/gui/PanelInput.o src/od-pandora/gui/PanelMisc.o src/od-pandora/gui/PanelSavestate.o src/od-pandora/gui/main_window.o src/od-pandora/gui/Navigation.o src/od-pandora/gui/sdltruetypefont.o src/od-pandora/arm_helper.o src/newcpu.o src/newcpu_common.o src/readcpu.o src/cpudefs.o src/cpustbl.o src/cpuemu_0.o src/cpuemu_4.o src/cpuemu_11.o src/cpuemu_40.o src/cpuemu_44.o src/jit/compemu.o src/jit/compstbl.o src/jit/compemu_fpp.o src/jit/compemu_support.o -lSDL -lpthread -lm -lz -lSDL_image -lpng -lrt -lxml2 -lFLAC -lmpg123 -ldl -lmpeg2convert -lmpeg2 -lSDL_ttf -lguichan_sdl -lguichan -L/opt/vc/lib
src/custom.o: In function `compute_framesync()':
custom.cpp:(.text+0x28898): undefined reference to `vsync_switchmode(int)'
custom.cpp:(.text+0x28970): undefined reference to `target_graphics_buffer_update()'
custom.cpp:(.text+0x28aa8): undefined reference to `vsync_switchmode(int)'
custom.cpp:(.text+0x28b5c): undefined reference to `vsync_switchmode(int)'
src/custom.o: In function `hsync_handler_post(bool)':
custom.cpp:(.text+0x298a8): undefined reference to `render_screen(bool)'
src/custom.o: In function `hsync_handler()':
custom.cpp:(.text+0x2a230): undefined reference to `target_lastsynctime()'
custom.cpp:(.text+0x2a844): undefined reference to `show_screen_maybe(bool)'
custom.cpp:(.text+0x2ad44): undefined reference to `show_screen(int)'
custom.cpp:(.text+0x2afec): undefined reference to `target_lastsynctime()'
custom.cpp:(.text+0x2baf8): undefined reference to `render_screen(bool)'
custom.cpp:(.text+0x2bbc8): undefined reference to `render_screen(bool)'
custom.cpp:(.text+0x2bc88): undefined reference to `render_screen(bool)'
custom.cpp:(.text+0x2bd90): undefined reference to `render_screen(bool)'
custom.cpp:(.text+0x2bdc8): undefined reference to `show_screen(int)'
src/custom.o: In function `custom_reset(bool, bool)':
custom.cpp:(.text+0x2e274): undefined reference to `time_per_frame'
src/od-pandora/pandora_gui.o: In function `gui_update()':
pandora_gui.cpp:(.text+0x3e8): undefined reference to `screenshot_filename'
src/od-pandora/pandora_gui.o: In function `gui_init()':
pandora_gui.cpp:(.text+0x1da0): undefined reference to `graphics_subshutdown()'
pandora_gui.cpp:(.text+0x1e44): undefined reference to `update_display(uae_prefs*)'
src/od-pandora/pandora_gui.o: In function `gui_display(int)':
pandora_gui.cpp:(.text+0x1f78): undefined reference to `graphics_subshutdown()'
pandora_gui.cpp:(.text+0x1ff8): undefined reference to `update_display(uae_prefs*)'
pandora_gui.cpp:(.text+0x1ffc): undefined reference to `black_screen_now()'
src/od-pandora/gui/ShowHelp.o: In function `ShowHelp(char const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
ShowHelp.cpp:(.text+0x6f8): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/ShowMessage.o: In function `ShowMessage(char const*, char const*, char const*, char const*, char const*)':
ShowMessage.cpp:(.text+0x788): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/SelectFolder.o: In function `SelectFolder(char const*, char*)':
SelectFolder.cpp:(.text+0x984): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/SelectFile.o: In function `SelectFile(char const*, char*, char const**, bool)':
SelectFile.cpp:(.text+0x103c): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/CreateFilesysHardfile.o: In function `CreateFilesysHardfile()':
CreateFilesysHardfile.cpp:(.text+0x1160): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/EditFilesysVirtual.o:EditFilesysVirtual.cpp:(.text+0x12b0): more undefined references to `wait_for_vsync()' follow
src/od-pandora/gui/PanelSavestate.o: In function `RefreshPanelSavestate()':
PanelSavestate.cpp:(.text+0x4b8): undefined reference to `screenshot_filename'
src/od-pandora/gui/PanelSavestate.o: In function `SavestateActionListener::action(gcn::ActionEvent const&)':
PanelSavestate.cpp:(.text._ZN23SavestateActionListener6actionERKN3gcn11ActionEventE[_ZN23SavestateActionListener6actionERKN3gcn11ActionEventE]+0x284): undefined reference to `delay_savestate_frame'
src/od-pandora/gui/main_window.o: In function `sdl::gui_run()':
main_window.cpp:(.text+0x594): undefined reference to `wait_for_vsync()'
src/od-pandora/gui/main_window.o: In function `run_gui()':
main_window.cpp:(.text+0x20ec): undefined reference to `screen_is_picasso'
src/devices.o: In function `do_leave_program()':
devices.cpp:(.text+0x134): undefined reference to `graphics_leave()'
src/drawing.o: In function `render_thread(void*)':
drawing.cpp:(.text+0xa2bc): undefined reference to `unlockscr()'
drawing.cpp:(.text+0xa348): undefined reference to `lockscr()'
drawing.cpp:(.text+0xa360): undefined reference to `lockscr()'
src/drawing.o: In function `halt_draw_frame()':
drawing.cpp:(.text+0xa5f0): undefined reference to `unlockscr()'
src/drawing.o: In function `vsync_handle_check()':
drawing.cpp:(.text+0xb234): undefined reference to `check_prefs_changed_gfx()'
src/main.o: In function `real_main(int, char**)':
main.cpp:(.text+0xf48): undefined reference to `graphics_setup()'
main.cpp:(.text+0x115c): undefined reference to `update_display(uae_prefs*)'
main.cpp:(.text+0x16dc): undefined reference to `graphics_init(bool)'
src/statusline.o: In function `draw_status_line_single(unsigned char*, int, int)':
statusline.cpp:(.text+0x978): undefined reference to `prSDLScreen'
src/md-pandora/support.o: In function `machdep_init()':
support.cpp:(.text+0xa8): undefined reference to `screen_is_picasso'
collect2: error: ld returned 1 exit status
Makefile:331: recipe for target 'uae4arm' failed
make: *** [uae4arm] Error 1

@jeepcreep did you do a

make clean

before re-compiling ? What OS version have you installed on GS ?

Great work (it sounds :wink: ) but I can’t get the emulator to download upon launching my first game…
I have turrican2.uae listed within the new “Amiga” section within the UI…
But when i confirm to have it “setup this game engine automaticly” it just keeps showing 0.00/0.00Mb downloaded…

The action.config is setup with the git source, and i can confirm that it downloads the uae4arm-gs.zip when testing it.

What did i miss :thinking:

Keep up the Great work sbielmann :+1:

(Clockwork OS v0.3 - would that be my issue in this case ?? hmmm)

I just removed the whole stuff and recloned it, same thing… make clean same thing…

I own a brandnew Gameshell in vanilla state, no hacking, no customizing stuff whatsoever other than adding a couple of ADFs into the directories… for reference, I’ve attached a screenshot of my About screen.

PS: when going the Download-way @OCMaster mentioned, it’s the same… download never starts which is why commenced the whole build in the first place by the way.

THANKS

1 Like

Having same issue, brand new Gameshell (got this yesterday) ; noticed that there were some paths different than in instructions but anyway… might be the new build that is issue…

The instructions were written for OS version 0.1, the launcher path did change in 0.2. I will adapt this in the README.

I do not know why certain URL’s inside action.config work, and others not. Mine from github seems not to work. Maybe I will switch this to another domain.

Here is what you can do (I will add this to the README):

  • Create action.config as described (OS 0.1 path is /home/cpi/apps/launcher, OS 0.2 and newer it is /home/cpi/launcher)
  • Manually download and scp uae4arm-gs.zip to /home/cpi/apps/emulators directory
  • Unzip uae4arm-gs.zip and copy uae4arm also to /home/cpi/apps/emulators directory
1 Like

I did adapt the Readme to explain the installation for OS 0.1 and OS 0.2 and newer. And also changed the location of the download file. Could anybody please get the new action.config file and check whether it works out ?

2 Likes

Works…or at least now I have 1.3 Kickstart screen :slight_smile: updated action.config and manually copied files to /home/cpi/apps/emulators directory…

…aaaaand now running Alcocopter!!! Aweeesomeeee! Thanks Sbielmann!

1 Like

works in a way that it now correctly downloads the zip and unpacks into emulators directory… but whenever I try to start up a UAE (turrican, wings of fury), it seems to somehow crashes back to Gameshell… both games work with Libretro PUAE though.

@jeepcreep did you adapt the uae files as described in the readme ?

you’re refering to what you’ve written about the examples in the readme?
here’s what I have for Wings of Fury (as I mentioned, it’s taken from PUAE, where it works)

model=A500
kickstart_rom_file=/home/cpi/games/Amiga/Kickstart-v1.3-rev34.5-1987-Commodore-A500-A1000-A2000-CDTV.rom
chipmem_size=1
bogomem_size=2
gfx_fullscreen_amiga=true
use_gui=yes
nr_floppies=1
cpu_type=68000
cpu_speed=real
cpu_compatible=true
ntsc=true
chipset=ocs
immediate_blits=false
gfx_linemode=double
gfx_framerate=1
sound_output=normal
sound_frequency=44100
sound_channels=mixed
sound_interpol=none
show_leds=false
floppy_speed=100
gfx_center_vertical=smart
gfx_center_horizontal=smart
gfx_color_mode=16
gfx_width_windowed=300
gfx_height_windowed=220
gfx_width_fullscreen=320
gfx_height_fullscreen=240
window_width=320
window_height=240
floppy0=/home/cpi/games/Amiga/wings-of-fury.adf

grateful for any help on how to get this right!

Have tried with simple uae file, similar to example Alcocopter?
model=A500
kickstart_rom_file=/home/cpi/games/Amiga/amiga-os-130.rom
floppy0=/home/cpi/games/Amiga/alcocopter.adf
nr_floppies=1

ok, cool… that actually works!!!

controls are still a bit weird but I’ll just fiddle around with it… thanks @mnice and @sbielmann!

1 Like