Git Product home page Git Product logo

gpsp's Introduction

gpSP for libretro

This is a fork of notaz's gpSP (https://github.com/notaz/gpsp) for libretro frontends (like Retroarch). Check the original_readme.txt file for more info.

The current maintainer/main contributor is davidgfnet (check out the repo at https://github.com/davidgfnet/gpsp). This version has a bunch of fixes and features.

Feature list

gpSP features a dynamic recompiler that makes it quite fast (compared to other emulators at least). It supports x86/x64, ARMv6/7 and ARMv8 and MIPS (32 and 64 bits), for other platforms an interpreter is available (albeit slower). Both little and big endian systems are supported. Some supported platforms are PSP, PS2, GameCube/Wii, Nintendo 3DS and Switch, Dingux/OpenDingux and of course PC and Android.

At the moment this emulator lacks a native UI and must be played using some libretro frontend (we recommend Retroarch). A list of available frontends can be found at https://docs.libretro.com/development/frontends/

Many new features (compared to the original release) are:

  • Wireless Adapter networked multiplayer!
  • Rumble support (including Gameboy Player emulation)
  • New video renderer, fixes many graphical bugs & adds many effects (mosaic).
  • Many long standing issues have been fixed.
  • Slightly better performance (for some games at least!)
  • Better audio (fixed many audio related bugs).
  • Ships an opensource BIOS replacement,we recommend using the original though.

Planned features (aka the TODO list)

Some features I'd like to see (in loose priority order):

  • GBA link emulation (for some games, perhaps with patches).
  • Improve RFU (Wireless Adapter) emulation through research.
  • Bringing back the native UI for PC, PSP and perhaps PS2/3DS/Wii.
  • A native UI with Multiplayer support for portable devices with wifi support.
  • A better BIOS emulation and perhaps a newer better open BIOS.
  • Dynarec rewrite: make it easier to add new drcs and share more code.
  • Adding some funny DRCs like PowerPC or SH4.

gpsp's People

Contributors

alcaro avatar aliaspider avatar andres-asm avatar andymcca avatar bmaupin avatar d30r avatar davidgfnet avatar dprcz avatar fjtrujy avatar fr500 avatar frangarcj avatar hizzlekizzle avatar hunterk avatar inactive123 avatar jdgleaver avatar jste0 avatar justinweiss avatar libretroadmin avatar mudlord avatar negativeexponent avatar ninoh-fox avatar retrosven avatar salvacam avatar saulfabregwiivc avatar sergiobenrocha2 avatar takumiboo avatar tatsuya79 avatar vanfanel avatar webgeek1234 avatar yoshisuga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gpsp's Issues

Graphics corruption on the 3DS.

On the top of the screen, a flickering line of what looks like corrupted graphics can be seen. This didn't occur in the old nightly from a while ago.

Huge internal input lag (not related to video API)

Hi there,

This emulation core has a VERY high input lag problem, as it's at least two whole frames slower to respond when compared to other GBA emulators like mednafen-gba:
https://github.com/libretro/beetle-gba-libretro

You can easily see this, since it's not external input lag but internal to emulation.
With the gpsp RetroArch core, simply pause the emulator, keep the jumo button in "Wario Land 4" pressed, and advance frame by frame while keeping the jump button pressed.
You will see it takes 4 WHOLE FRAMES for Wario to start the jump animation.

In any other GBA emus, the jump animation starts on the second frame.

Could it be looked into, please? This emulator is the only one that allows fullspeed GBA emulation on ARM platforms like the Raspberry Pi, even in low-latency mode.

Final Fantasy V localized to Russian does not work

When I launch a version of the game localized by fans into Russian. A black screen appears and the game freezes. But if you run the same rum in gbsp-kai via adrenaline, the game works without problems, apart from poor performance. Could you fix a bug that prevents the translated rom from working in the next update?

3DS: Minish Cap cannot roll

The R button still works for moving items, lifting pots, accessing options etc. but at some point in the last six months or so it is no longer possible to roll in the game. This issue is also being discussed on gbatemp.net.

[Android] Can't delete gPSP core in RetroArch

When you load the gPSP core and then click on "Information" you can't see there the "Core Information" section from which you can delete the core (just like you can do with every other core in RetroArch...).

[Vita] Crash in Golden Sun when obtaining specific djinn

When a particular djinn in the Mercury Lighthouse is defeated, gPSP just crashes during the "rain" animation of obtaining the djinn. I believe this is the same issue as referenced in this reddit thread: https://www.reddit.com/r/GoldenSun/comments/ew6nm3/consistent_game_freeze_after_acquiring_a_djinn/

I've attached my save file to reproduce the issue:
Golden Sun (USA, Europe).sav.zip

When you load the save, you'll need to battle the djinn (the blue monster) but it shouldn't take more than a minute to win the battle. Just spam "attack" and the djinn will be defeated. When Issac then obtains the djinn, there will be a rain animation, and then gPSP will just crash.

Auto-load state broken on some games?

Hey!

Got a really weird bug with some games using the auto-load state option from RetroArch, for example with Mother 3 (tried with both JPN and translated rom), if I quit and start the game again it freezes and make some terrible noises.

However if I manually load the auto-save state it works fine! Ingame saves and normal save states work perfectly fine also.

It doesnt seem to affect every game, no problem with Zelda Minish Cap for example. But its also buggy on Metroid Zero Mission.

Latest RetroArch and gpSP nightlies, heres a video of the bug in Metroid Zero Mission: https://youtu.be/yHVSK0BFvgI

Video made using the following steps:

  • I enable auto save and load state.
  • I load Metroid, let it play for a few seconds then close content to create the auto save state.
  • I load it again and get the freeze + sound looping because of the auto-load state.
  • I close content and disable auto save and load state.
  • I load Metroid again but this time I manually load the auto save state and it's working fine!

I'm not too sure if its a gpSP or RetroArch bug :/ I post here because I only encountered it with this core so far.

[VITA][1.9.4] GPSP core crashes retroarch in various ways

As per title, my issue is present on the VITA 1.9.4 stable build

My device is a PSVITA Slim 3.60 henkaku enso, using sd2vita and max overclock via PSVshell

I am using clean dumped md5 verified roms.

Md5 verified bios file is present.

I updated retroarch by deleting the previous app and installing 1.9.4 in it's place.

[ISSUE]

All issues present after updating to 1.9.4

When loading a game using the GPSP core the game loads and runs fine.

When exiting the game within retroarch, the GUI loads fine. However, if I try to load a different game through another core Retroarch crashes.

Retroarch also crashes if I have a game loaded within GPSP and try to exit Retroarch directly from that state.

I have since rolled back to 1.9.3 and the issue is completely gone, everything is working as expected again.

1.9.4 GPSP core = 261b2db

1.9.3 GPSP core = cc1a074

Thanks again devs for all your hard work and passion on this project. Retroarch is an amazing peice of software to have on a device such as a PSVITA.

[3ds]Rtc supports games time of day but not day of week.

Was playing a rom hack of fire red that implements time of day events as well as events for the day of the week. There is a scripted encounter of a shiny spearow that appears on mondays in the first route. For some reason the spearow respawns every day. so im guessing the rtc implementation of the 3ds gpsp core doesn't pickup the day of the week and stays stuck on Monday. i checked if mgba has the same issue and it doesn't. The events work on their respective days like intended. Can this can be fixed?

Im on a new 3ds xl with latest luma and latest retroarch gpsp cia on latest firmware. thnx

Refusing to start on Raspbian Buster / RetroPie 4.6.1

I have a Pi Zero W, with RetroPie 4.6.1 on Raspbian Buster.

I have the BIOS setup correctly, and have tried multiple games. Everything worked fine in RetroPie 4.5 on Raspbian Stretch. (There were slowdowns and other issues, but it at least started.) I'm sure there's some debug output somewhere, but it just crashes and bumps me back to EmulationStation.

I tried uninstalling the core and reinstalling it. I also tried uninstalling the core and building from source.

I couldn't find any relevant issues here or on notaz/gpsp.

Let me know if you need anything from me.

I'm not sure this is a dupe? #70

support for dynarec - on mips32 (without r2) devices

Device is a jz4760 which is a mips32 device.

Dynarec works perfectly on the jz4770 mips32r2.

On my unofficial fork for RA on the jz4760 I am getting "illegal instruction" error if I try to use the dynarec (tested on latest commit on 27/6/2021). This is as expected.

I understand that support for dynarec for non mips32r2 is currently a work in progress and not a priority for unofficial libretro builds, but I hope that this gets completed eventually.

Thank you.

Wii

Is it possible to implement gpsp on the Wii Retroarch?

[VITA] Games randomly reboot to bios logo

I have mainly had this issue with crash bandicoot XS (E) but have also experience it in a few others. It seems to be random, sometimes it will be after 2 min of playing, sometimes 30, sometimes not at all. Maybe there is a setting I am missing or something.

PSVITA 2000
3.60 henkaku enso
Official sony card
Retroarch 1.8.5 (has been happening since big gpsp dynarec update which was around 1.8.2 if I remember correctly)

Other than that it is a great emulator. Keep up the good work

I did use save states in the games that it happened. Not sure if this could somehow corrupt the actual save and cause issues.

Pokemon Emerald/Sapphire/Ruby only load via 'Load Content'

Pokemon Emerald GBA in various versions (U/E,G,U) crashes directly on load. Loading it by first starting a different ROM and then loading it via 'Load Content' works fine.

runcommand.log

/opt/retropie/supplementary/runcommand/runcommand.sh: line 704:  3061 Segmentation fault
/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-gpsp/gpsp_libretro.so --config /opt/retropie/configs/gba/retroarch.cfg "/home/pi/RetroPie/roms/gba/1986 - Pokemon - Emerald Version (UE).gba" --appendconfig /tmp/retroarch.cfg

Retroarch Log File

RetroArch [INFO] :: === Build =======================================RetroArch [INFO] :: [CPUID]: Features:
Built: Oct  5 2015
RetroArch [INFO] :: Version: 1.2.2
RetroArch [INFO] :: Git: c6c250b
RetroArch [INFO] :: =================================================
RetroArch [INFO] :: [CPUID]: Features:
RetroArch [INFO] :: Config: appending config "/tmp/retroarch.cfg"
RetroArch [INFO] :: Config: loading config from: /opt/retropie/configs/gba/retroarch.cfg.
RetroArch [INFO] :: Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-gpsp/gpsp_libretro.so"
RetroArch [INFO] :: Environ GET_LOG_INTERFACE.
RetroArch [INFO] :: Environ GET_PERF_INTERFACE.
RetroArch [INFO] :: Environ SET_VARIABLES.
RetroArch [INFO] :: Remaps: core name: gpSP
RetroArch [INFO] :: Remaps: game name: /home/pi/RetroPie/roms/gba/1986 - Pokemon - Emerald Version (UE)
RetroArch [INFO] :: Remaps: remap directory: /opt/retropie/configs/gba/
RetroArch [INFO] :: Remaps: no game-specific remap found at /opt/retropie/configs/gba/gpSP/1986 - Pokemon - Emerald Version (UE).rmp
RetroArch [INFO] :: Remaps: no core-specific remap found at /opt/retropie/configs/gba/gpSP/gpSP.rmp
RetroArch [INFO] :: Version of libretro API: 1
RetroArch [INFO] :: Compiled against API: 1
RetroArch [INFO] :: Content loading skipped. Implementation will load it on its own.
RetroArch [INFO] :: Environ GET_VARIABLE gpsp_drc:
RetroArch [INFO] ::     enabled
RetroArch [INFO] :: Environ SET_INPUT_DESCRIPTORS:
RetroArch [INFO] ::     RetroPad, User 1, Button "B (bottom)" => "B"
RetroArch [INFO] ::     RetroPad, User 1, Button "Select" => "Select"
RetroArch [INFO] ::     RetroPad, User 1, Button "Start" => "Start"
RetroArch [INFO] ::     RetroPad, User 1, Button "D-Pad Up" => "D-Pad Up"
RetroArch [INFO] ::     RetroPad, User 1, Button "D-Pad Down" => "D-Pad Down"
RetroArch [INFO] ::     RetroPad, User 1, Button "D-Pad Left" => "D-Pad Left"
RetroArch [INFO] ::     RetroPad, User 1, Button "D-Pad Right" => "D-Pad Right"
RetroArch [INFO] ::     RetroPad, User 1, Button "A (right)" => "A"
RetroArch [INFO] :: Environ SET_PIXEL_FORMAT: RGB565.
RetroArch [INFO] :: Environ SYSTEM_DIRECTORY: "/home/pi/RetroPie/BIOS".
RetroArch [INFO] :: Environ SAVE_DIRECTORY: "".
RetroArch [INFO] :: Skipping SRAM load..
RetroArch [INFO] :: Set audio input rate to: 65835.00 Hz.
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/2xBR.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/5xbr-retro.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/5xbr-retro.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/5xbr-retro_phosphor.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/5xBR-v3.5.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/bead.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/blinky.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/box-1x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/box-2x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/box-3x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/box-4x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/box-max.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/bsnes_gamma_ramp.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/bsnes_gamma_ramp.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/cgwg-CRT-flat.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/cgwg-CRT-flat.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/CRT_cgwg.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/CRT_cgwg.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/dot.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/Edge.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/gamma.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/gamma2.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x&lcd3x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x2.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x2.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x_lcd3x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2x_phosphor.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2xwaterpaint.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq2xwaterpaintscanline.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq4x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq4x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/hq4x_lcd3x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/lcd3x.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc-pass1.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc-pass2.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc-pass3.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc-pass4.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc-pass5.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/ntsc.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/phosphor-normalgamma.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/phosphor.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/phosphor.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/pixellate.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/quilez.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/retro-v2.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/retroarch.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/SABR-v1.0.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/scanline.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/sharp-bilinear.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes-hires-blend.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes2.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes3.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_hq2x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_hq2xwaterpaint.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_hq2xwaterpainthicontrast.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_hq2xwaterpaintscanline.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_lcd3x.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_phosphor.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_scanline.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/snes_waterpaint.glslp"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/stock.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/super2xSal.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/water.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/waterpaint-hicontrast.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/waterpaint-scanline.glsl"
RetroArch [INFO] :: Found shader "/opt/retropie/emulators/retroarch/shader/waterpaint.glsl"
RetroArch [INFO] :: Video @ 720x480
RetroArch [INFO] :: Starting threaded video driver ...
RetroArch [INFO] :: [VC/EGL]: Initializing...
RetroArch [INFO] :: Found GL context: videocore
RetroArch [INFO] :: Detecting screen resolution 720x480.
RetroArch [INFO] :: [GL]: Vendor: Broadcom, Renderer: VideoCore IV HW.
RetroArch [INFO] :: [GL]: Version: OpenGL ES 2.0.
RetroArch [INFO] :: Querying GL extension: BGRA8888 => exists
RetroArch [WARN] :: [GL]: GLES implementation does not have BGRA8888 extension.
32-bit path will require conversion.
RetroArch [INFO] :: Querying GL extension: GL_EXT_unpack_subimage => doesn't exist
RetroArch [INFO] :: Querying GL extension: EXT_sRGB => doesn't exist
RetroArch [INFO] :: GL: Using resolution 720x480
RetroArch [INFO] :: [GL]: Default shader backend found: glsl.
RetroArch [INFO] :: [GL]: Using GLSL shader backend.
RetroArch [WARN] :: [GL]: Stock GLSL shaders will be used.
RetroArch [INFO] :: Found GLSL vertex shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Found GLSL fragment shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Linking GLSL program.
RetroArch [INFO] :: Found GLSL vertex shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Found GLSL fragment shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Linking GLSL program.
RetroArch [INFO] :: Found GLSL vertex shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Found GLSL fragment shader.
RetroArch [INFO] :: Shader log: Compiled
RetroArch [INFO] :: Linking GLSL program.
RetroArch [INFO] :: [GL]: Using 4 textures.
RetroArch [INFO] :: [GL]: Loaded 1 program(s).
RetroArch [INFO] :: Querying EGL extension: KHR_image => exists
RetroArch [INFO] :: Using font rendering backend: freetype.
RetroArch [INFO] :: Graphics driver did not initialize an input driver. Attempting to pick a suitable driver.
RetroArch [WARN] :: [udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*?
RetroArch [INFO] :: [udev]: Plugged pad: Twin USB Joystick (0810:0001) on port #0.
RetroArch [INFO] :: Autodetect: 2 profiles found
RetroArch [INFO] :: Autodetect: configuration file: /opt/retropie/configs/all/retroarch-joypads/TwinUSBJoystick.cfg score: 2
RetroArch [INFO] :: Autodetect: configuration file: /opt/retropie/configs/all/retroarch-joypads/MicrosoftX-Box360pad.cfg score: 0
RetroArch [INFO] :: Autodetect: selected configuration: /opt/retropie/configs/all/retroarch-joypads/TwinUSBJoystick.cfg
RetroArch [INFO] :: Autodetect: Twin USB Joystick configured in port #0.
RetroArch [INFO] :: [udev]: Pad #0 (/dev/input/event0) supports 0 force feedback effects.
RetroArch [INFO] :: [udev]: Plugged pad: Twin USB Joystick (0810:0001) on port #1.
RetroArch [INFO] :: Autodetect: 2 profiles found
RetroArch [INFO] :: Autodetect: configuration file: /opt/retropie/configs/all/retroarch-joypads/TwinUSBJoystick.cfg score: 2
RetroArch [INFO] :: Autodetect: configuration file: /opt/retropie/configs/all/retroarch-joypads/MicrosoftX-Box360pad.cfg score: 0
RetroArch [INFO] :: Autodetect: selected configuration: /opt/retropie/configs/all/retroarch-joypads/TwinUSBJoystick.cfg
RetroArch [INFO] :: Autodetect: Twin USB Joystick configured in port #1.
RetroArch [INFO] :: [udev]: Pad #1 (/dev/input/event1) supports 0 force feedback effects.
RetroArch [INFO] :: Found joypad driver: "udev".
RetroArch [INFO] :: [CPUID]: Features:
RetroArch [INFO] :: ALSA: Using signed 16-bit format.
RetroArch [INFO] :: ALSA: Period size: 384 frames
RetroArch [INFO] :: ALSA: Buffer size: 1536 frames
RetroArch [INFO] :: [CPUID]: Features:
RetroArch [INFO] :: null: [/opt/retropie/configs/gba/content_history.lpl].

**lr-gpsp version:**both binary and source build via RetroPie Setup exhibit this behaviour.

see also: libretro/Lakka#177

GPSP Missing Controller Binds

When trying to change button assignments from the quick menu, both L and R are missing from possible button selections, even though they work by default. Additionally when viewing the button mappings L and R are blank '---'

I want to set B to (left) and A to (down) but doing so removes L and R binds from L and R, making it impossible to use custom binds.

Issue Persists in clean Retroarch install with new gpSP download.

Retroarch Ver 1.7.2 - gpSP v0.91 434612a

gpsp segfaults on pokemon *

If you try to load pokemon emerald retroarch segfaults (didn't analyze any coredump yet)
If you first load pokemon emerald with vbam press f1 and then load (you can even select the gpsp entry from history) it suddenly works.

Compile error without HAVE_MMAP = 1 in ARM

This compile error is hard to get, I got sometimes in an ARM server (real hardware) and always in launchpad (which uses qemu). If you compile without HAVE_MMAP = 1, you get zillions errors.

/usr/bin/make platform="armv hardfloat"
make[2]: Entering directory `/build/buildd/libretro-gpsp-0.9+r220~4~ubuntu14.04.1'
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o main.o main.c
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o cpu.o cpu.c
cpu.c: In function 'execute_arm':
cpu.c:198:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:863:3: note: in expansion of macro 'arm_decode_multiply'
   arm_decode_multiply();                                                      \
   ^
cpu.c:1793:20: note: in expansion of macro 'arm_multiply'
                    arm_multiply(no_op, no);                                            
                    ^
cpu.c:198:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:863:3: note: in expansion of macro 'arm_decode_multiply'
   arm_decode_multiply();                                                      \
   ^
cpu.c:1810:23: note: in expansion of macro 'arm_multiply'
                       arm_multiply(no_op, yes);                                         
                       ^
cpu.c:181:7: warning: unused variable 'rm' [-Wunused-variable]
   u32 rm = opcode & 0x0F;                                                     \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2205:17: note: in expansion of macro 'arm_psr'
                 arm_psr(reg, read, reg[REG_CPSR]);                                    
                 ^
cpu.c:179:7: warning: unused variable 'psr_field' [-Wunused-variable]
   u32 psr_field = (opcode >> 16) & 0x0F;                                      \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2205:17: note: in expansion of macro 'arm_psr'
                 arm_psr(reg, read, reg[REG_CPSR]);                                    
                 ^
cpu.c:164:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:751:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:822:3: note: in expansion of macro 'arm_data_proc_flags_reg'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2233:17: note: in expansion of macro 'arm_data_proc_test_logic'
                 arm_data_proc_test_logic(reg[rn] & reg_sh, reg);                      
                 ^
cpu.c:180:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2265:20: note: in expansion of macro 'arm_psr'
                    arm_psr(reg, store, cpsr);                                          
                    ^
cpu.c:164:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:751:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:822:3: note: in expansion of macro 'arm_data_proc_flags_reg'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2294:17: note: in expansion of macro 'arm_data_proc_test_logic'
                 arm_data_proc_test_logic(reg[rn] ^ reg_sh, reg);                      
                 ^
cpu.c:181:7: warning: unused variable 'rm' [-Wunused-variable]
   u32 rm = opcode & 0x0F;                                                     \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2315:17: note: in expansion of macro 'arm_psr'
                 arm_psr(reg, read, spsr[reg[CPU_MODE]]);                              
                 ^
cpu.c:179:7: warning: unused variable 'psr_field' [-Wunused-variable]
   u32 psr_field = (opcode >> 16) & 0x0F;                                      \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2315:17: note: in expansion of macro 'arm_psr'
                 arm_psr(reg, read, spsr[reg[CPU_MODE]]);                              
                 ^
cpu.c:164:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:755:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:841:3: note: in expansion of macro 'arm_data_proc_reg'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2343:17: note: in expansion of macro 'arm_data_proc_test_sub'
                 arm_data_proc_test_sub(reg[rn], reg_sh, reg);                         
                 ^
cpu.c:180:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_reg'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2356:17: note: in expansion of macro 'arm_psr'
                 arm_psr(reg, store, spsr);                                            
                 ^
cpu.c:164:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:755:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:831:3: note: in expansion of macro 'arm_data_proc_reg'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2384:17: note: in expansion of macro 'arm_data_proc_test_add'
                 arm_data_proc_test_add(reg[rn], reg_sh, reg);                         
                 ^
cpu.c:163:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:755:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:768:3: note: in expansion of macro 'arm_data_proc_reg'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2438:17: note: in expansion of macro 'arm_data_proc'
                 arm_data_proc(reg_sh, reg);                                           
                 ^
cpu.c:163:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:751:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:787:3: note: in expansion of macro 'arm_data_proc_flags_reg'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2466:17: note: in expansion of macro 'arm_data_proc_logic_flags'
                 arm_data_proc_logic_flags(reg_sh, reg);                               
                 ^
cpu.c:163:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:755:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:768:3: note: in expansion of macro 'arm_data_proc_reg'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2520:17: note: in expansion of macro 'arm_data_proc'
                 arm_data_proc(~reg_sh, reg);                                          
                 ^
cpu.c:163:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:751:3: note: in expansion of macro 'arm_decode_data_proc_reg'
   arm_decode_data_proc_reg(opcode);                                           \
   ^
cpu.c:787:3: note: in expansion of macro 'arm_data_proc_flags_reg'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2548:17: note: in expansion of macro 'arm_data_proc_logic_flags'
                 arm_data_proc_logic_flags(~reg_sh, reg);                              
                 ^
cpu.c:172:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:759:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:822:3: note: in expansion of macro 'arm_data_proc_flags_imm'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2635:14: note: in expansion of macro 'arm_data_proc_test_logic'
              arm_data_proc_test_logic(reg[rn] & imm, imm);                           
              ^
cpu.c:187:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_imm'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2640:14: note: in expansion of macro 'arm_psr'
              arm_psr(imm, store, cpsr);                                              
              ^
cpu.c:172:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:759:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:822:3: note: in expansion of macro 'arm_data_proc_flags_imm'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2645:14: note: in expansion of macro 'arm_data_proc_test_logic'
              arm_data_proc_test_logic(reg[rn] ^ imm, imm);                           
              ^
cpu.c:172:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:762:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:841:3: note: in expansion of macro 'arm_data_proc_imm'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2651:14: note: in expansion of macro 'arm_data_proc_test_sub'
              arm_data_proc_test_sub(reg[rn], imm, imm);                              
              ^
cpu.c:187:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:924:3: note: in expansion of macro 'arm_decode_psr_imm'
   arm_decode_psr_##op_type(opcode);                                           \
   ^
cpu.c:2656:14: note: in expansion of macro 'arm_psr'
              arm_psr(imm, store, spsr);                                              
              ^
cpu.c:172:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = (opcode >> 12) & 0x0F;                                             \
       ^
cpu.c:762:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:831:3: note: in expansion of macro 'arm_data_proc_imm'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2661:14: note: in expansion of macro 'arm_data_proc_test_add'
              arm_data_proc_test_add(reg[rn], imm, imm);                              
              ^
cpu.c:171:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:762:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:768:3: note: in expansion of macro 'arm_data_proc_imm'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2676:14: note: in expansion of macro 'arm_data_proc'
              arm_data_proc(imm, imm);                                                
              ^
cpu.c:171:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:759:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:787:3: note: in expansion of macro 'arm_data_proc_flags_imm'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2681:14: note: in expansion of macro 'arm_data_proc_logic_flags'
              arm_data_proc_logic_flags(imm, imm);                                    
              ^
cpu.c:171:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:762:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:768:3: note: in expansion of macro 'arm_data_proc_imm'
   arm_data_proc_##type();                                                     \
   ^
cpu.c:2696:14: note: in expansion of macro 'arm_data_proc'
              arm_data_proc(~imm, imm);                                               
              ^
cpu.c:171:7: warning: unused variable 'rn' [-Wunused-variable]
   u32 rn = (opcode >> 16) & 0x0F;                                             \
       ^
cpu.c:759:3: note: in expansion of macro 'arm_decode_data_proc_imm'
   arm_decode_data_proc_imm(opcode)                                            \
   ^
cpu.c:787:3: note: in expansion of macro 'arm_data_proc_flags_imm'
   arm_data_proc_flags_##type();                                               \
   ^
cpu.c:2701:14: note: in expansion of macro 'arm_data_proc_logic_flags'
              arm_data_proc_logic_flags(~imm, imm);                                   
              ^
cpu.c:297:7: warning: unused variable 'rd' [-Wunused-variable]
   u32 rd = ((opcode >> 4) & 0x08) | (opcode & 0x07);                          \
       ^
cpu.c:3649:17: note: in expansion of macro 'thumb_decode_hireg_op'
                 thumb_decode_hireg_op();                                              
                 ^
cpu.c:1658:7: warning: variable 'old_pc' set but not used [-Wunused-but-set-variable]
   u32 old_pc;
       ^
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o gba_memory.o gba_memory.c
gba_memory.c: In function 'write_eeprom':
gba_memory.c:503:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
         address16(eeprom_buffer, 0) = 0;
         ^
gba_memory.c:517:12: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
            (address16(eeprom_buffer, 0) >> 2) * 8;
            ^
gba_memory.c:525:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
         address16(eeprom_buffer, 0) = 0;
         ^
In file included from gba_memory.c:20:0:
gba_memory.c: In function 'load_backup':
common.h:124:10: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer, 1, size, filename_tag)                                      \
          ^
gba_memory.c:2095:5: note: in expansion of macro 'file_read'
     file_read(backup_file, gamepak_backup, backup_size);
     ^
gba_memory.c: In function 'load_gamepak_raw':
common.h:124:10: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer, 1, size, filename_tag)                                      \
          ^
gba_memory.c:2417:7: note: in expansion of macro 'file_read'
       file_read(gamepak_file, gamepak_rom, file_size);
       ^
common.h:124:10: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer, 1, size, filename_tag)                                      \
          ^
gba_memory.c:2430:7: note: in expansion of macro 'file_read'
       file_read(gamepak_file, gamepak_rom, 0x100);
       ^
gba_memory.c: In function 'load_bios':
common.h:124:10: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer, 1, size, filename_tag)                                      \
          ^
gba_memory.c:2499:3: note: in expansion of macro 'file_read'
   file_read(bios_file, bios_rom, 0x4000);
   ^
gba_memory.c: In function 'load_gamepak_page':
common.h:124:10: warning: ignoring return value of 'fread', declared with attribute warn_unused_result [-Wunused-result]
     fread(buffer, 1, size, filename_tag)                                      \
          ^
gba_memory.c:3232:3: note: in expansion of macro 'file_read'
   file_read(gamepak_file_large, swap_location, (32 * 1024));
   ^
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o video.o video.c
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o input.o input.c
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o sound.o sound.c
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o cheats.o cheats.c
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o libretro.o libretro.c
In file included from libretro.c:6:0:
common.h:36:0: warning: "_BSD_SOURCE" redefined [enabled by default]
 #define _BSD_SOURCE // sync
 ^
In file included from /usr/include/stdio.h:27:0,
                 from libretro.c:3:
/usr/include/features.h:188:0: note: this is the location of the previous definition
 # define _BSD_SOURCE 1
 ^
gcc -I. -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -O3 -DNDEBUG -c  -o libco/libco.o libco/libco.c
In file included from libco/libco.c:14:0:
libco/armeabi.c:39:13: warning: 'crash' defined but not used [-Wunused-function]
 static void crash(void)
             ^
gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -marm -mfloat-abi=hard -DARM -DARM_ARCH -DARM_MEMORY_DYNAREC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DINLINE=inline -Wall -Werror=implicit-function-declaration -DHAVE_DYNAREC -DARM_ARCH   -DNDEBUG=1 -fPIC -DFRONTEND_SUPPORTS_RGB565 -Wno-unused-variable -Wno-unused-label -O2 -DNDEBUG  -c -o cpu_threaded.o cpu_threaded.c
cpu_threaded.c: In function 'translate_block_arm':
cpu_threaded.c:3261:7: warning: variable 'flag_status' set but not used [-Wunused-but-set-variable]
   u32 flag_status;                                                            
       ^
cpu_threaded.c: In function 'translate_block_thumb':
cpu_threaded.c:3462:7: warning: variable 'last_condition' set but not used [-Wunused-but-set-variable]
   u32 last_condition;                                                         
       ^
/tmp/cc8HwzJJ.s: Assembler messages:
/tmp/cc8HwzJJ.s:49244: Warning: ignoring changed section attributes for .jit
/tmp/cc8HwzJJ.s:102235: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102236: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102239: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102240: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102243: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102244: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:102250: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
[...] (zillions errors...)
/tmp/cc8HwzJJ.s:150734: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:150735: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
/tmp/cc8HwzJJ.s:150736: Error: can't resolve `.jit' {.jit section} - `.Ltext0' {.text section}
make[2]: *** [cpu_threaded.o] Error 1

Remap problem with Retroarch.

I have configured the buttons A & B to y & b in the Retropad respectively, but I noticed when I press the Y button (B in the gpSP libretro core) it seems to be pressing the L button too. Also I can't configure the remap for GBA L & R buttons in the control core options. Sorry for my bad english and thanks.

Unable to save game on VITA games

On Golden Sun I'm getting "unable to detect backup memory".

Seems to be related to the save type, and Golden Sun needing a Flash 64k. AFAIK there are more games like this, and some others on 512k. Trying to override this on Retroarch seems to be insufficient, as you need to recompile the core with these new settings for the saves to work again.

Segfaults with Super Mario Advance 4 - Super Mario Bros. 3 (Europe) (En,Fr,De,Es,It) (Rev 1)

With Super Mario Advance 4 - Super Mario Bros. 3 (Europe) (En,Fr,De,Es,It) (Rev 1), you can see "Game Boy Player" screen, and then it segfaults.

OS: linux amd64

found entry in over ini file.
[New Thread 0x7fffe5f9c700 (LWP 11178)]

Program received signal SIGSEGV, Segmentation fault.
0x00007fffeb41c799 in ?? () from /usr/lib/libretro/gpsp_libretro.so
(gdb) bt full
#0  0x00007fffeb41c799 in ?? () from /usr/lib/libretro/gpsp_libretro.so
No symbol table info available.
#1  0x00007fffeb5154d1 in ?? () from /usr/lib/libretro/gpsp_libretro.so
No symbol table info available.
#2  0x00007fffeb515caa in ?? () from /usr/lib/libretro/gpsp_libretro.so
No symbol table info available.
#3  0x0000000000000000 in ?? ()
No symbol table info available.

[Suggestion] Extra buttons for L and R

The current button mapping of this libretrocore its awesome, and works well, specially for games that requires press L+A and R+B combinations.
Yet the majority of gamepads uses 4 main buttons in the front side,and it would be handy for certain games having extra L and R keys, for example:
B Button = B Button
A Button = A Button
L Button = L Button
R Button = R Button
Y Button = Extra L Button
X Button = Extra R Button

Is the 128KB flash honored?

Saving fails in Pokemon games.

In gba_over.h, I do see the FLASH_DEVICE_MACRONIX_128KB for POKEMON FIRE

But in RA's log, I see no reference about it:

romtitle     : Pokemon: Fire Red (E/U)
gamepak title: POKEMON FIRE
gamepak code : BPRE
gamepak maker: 01
INPUT gamepak title: POKEMON FIRE
INPUT gamepak code : BPRE
INPUT gamepak maker: 01
found entry in over ini file.

This flash rom has something to do with saving?

Compilation failed on ARM (raspberry)

Hi,

I am trying to compile gpsp core on my raspberry, but following error occurs:
{standard input}: Assembler messages:
{standard input}:2171: Warning: end of file not at end of a line; newline inserted
{standard input}:2827: Error: immediate expression requires a # prefix -- `rsb r0,'
cc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.7/README.Bugs for instructions.
Makefile:295: recipe for target 'gba_memory.o' failed
make: *** [gba_memory.o] Error 4

How could i fix that ?

Thanks.

Dynarec segfault in ARM

Dynarec is segfaulting in ARM, there is no much info with gdb. I can run the core only if I compiled without dynarec:

HAVE_DYNAREC := 0
CFLAGS += -DARM -DARM_ARCH

I'm testing with odroid U3 board, Lubuntu 14.04.

It seems gpsp works in android, what's the magic? Is it using dynarec?

[3DS] load/write saves and save states to content directory failure

1.Settings -> User Interface -> Show Advanced Settings to On
2.Settings -> Saving -> Write Saves to Content Directory to On
3.Settings -> Saving -> Write Save States to Content Directory to On
4.open gpsp core to play any game
5.saves and save states not loaded/saved on content directory.

gpsp seg faults with Grand Theft Auto Advance

As the title says, gpsp seg faults with "Grand Theft Auto Advance". Note: I am using Arch Linux on the Raspberry Pi.

I don't know if this is related, but gpsp also complains the "game_config.txt" does not exist in the same directory as the ROM even though it does.

Can't load Advance Wars .sav files + graphical glitches when saving

I'm using the 3ds port of retroarch, and while it seems that gpSP can create .sav files, (although saving during a game will result in graphical glitches, such as river tiles turning black at regular intervals, until the next battle between units) the core isn't able to load them the next time I start the game.
I will try to upload screenshot of the glitches if that can be of use.

Dynarec Crashes on "New" 3DS

Having the dynarec enabled on a "New" 3DS causes the game to crash after a random amount of time(short). Using Jet Set Radio(E) it's a matter of seconds. I believe the old 3DS is unaffected.

I can replicated in builds 1.3.3 and 1.50 stable and everybuild in between suffers the issue.

Issue: Saving the save file into proper folder.

On retropie i defined the a different folder to store the save files:
savefile_directory = /home/pi/RetroPie/srm/gba/
Yet currently this emulator stores the save file in same folder as roms, and I remember in past did worked properly, maybe this issue was caused by recent commits

gp2x WIZ

Hi guys
I recently reactivated my gp2x WIZ and found your repository after some serious googleing.

The question I have: is it still possible to compile your development to gp2x WIZ ...? I could not find any information about that.

PS Vita latest nightly 6e9104e crashes in game

Hi,

latest nightly built 6e9104e for Vita crashes in game with the attached verbose log.
retroarch__2021_03_13__13_23_54.log

[INFO] [CORE]: Using content: ux0:/roms/Nintendo - Game Boy Advance/Castlevania - Aria of Sorrow (USA).zip.
[INFO] [Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] [Core]: Unloading core..
[INFO] [Core]: Unloading core symbols..
[INFO] [Video]: Average monitor Hz: 59.830083 Hz. (8.446 % frame time deviation, based on 2048 last samples).
[INFO] === Build =======================================
[INFO] Capabilities: NEON
[INFO] Built: Mar 12 2021
[INFO] Version: 1.9.0
[INFO] =================================================
[INFO] [Input]: Found input driver: "vita".
[INFO] [Overrides]: No core-specific overrides found at "ux0:/data/retroarch/config/gpSP/gpSP.cfg".
[INFO] [Overrides]: No content-dir-specific overrides found at "ux0:/data/retroarch/config/gpSP/Nintendo - Game Boy Advance.cfg".
[INFO] [Overrides]: No game-specific overrides found at "ux0:/data/retroarch/config/gpSP/Castlevania - Aria of Sorrow (USA).cfg".
[INFO] [Environ]: GET_LOG_INTERFACE.
[INFO] [Environ]: GET_PERF_INTERFACE.
[INFO] [Environ]: GET_CORE_OPTIONS_VERSION.
[INFO] [Environ]: GET_LANGUAGE: "0".
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL.
[INFO] [Remaps]: Remap directory: "ux0:/data/retroarch/remaps".
[INFO] [Overrides]: Redirecting save file to "ux0:/data/retroarch/savefiles/Castlevania - Aria of Sorrow (USA).srm".
[INFO] [Overrides]: Redirecting save state to "ux0:/data/retroarch/savestates/Castlevania - Aria of Sorrow (USA).state".
[INFO] [CONTENT LOAD]: Content loading skipped. Implementation will load it on its own.
[INFO] [Environ]: GET_VARIABLE gpsp_drc:
enabled
[INFO] [Environ]: GET_VARIABLE gpsp_frameskip:
disabled
[INFO] [Environ]: GET_VARIABLE gpsp_frameskip_threshold:
33
[INFO] [Environ]: GET_VARIABLE gpsp_frameskip_interval:
1
[INFO] [Environ]: SET_AUDIO_BUFFER_STATUS_CALLBACK.
[INFO] [Environ]: GET_VARIABLE gpsp_color_correction:
disabled
[INFO] [Environ]: GET_VARIABLE gpsp_frame_mixing:
disabled
[INFO] [Environ]: GET_VARIABLE gpsp_save_method:
gpSP
[INFO] [Environ]: SET_INPUT_DESCRIPTORS:
[INFO] RetroPad, Port 1, Button "B (bottom)" => "B"
[INFO] RetroPad, Port 1, Button "Select" => "Select"
[INFO] RetroPad, Port 1, Button "Start" => "Start"
[INFO] RetroPad, Port 1, Button "D-Pad Up" => "D-Pad Up"
[INFO] RetroPad, Port 1, Button "D-Pad Down" => "D-Pad Down"
[INFO] RetroPad, Port 1, Button "D-Pad Left" => "D-Pad Left"
[INFO] RetroPad, Port 1, Button "D-Pad Right" => "D-Pad Right"
[INFO] RetroPad, Port 1, Button "A (right)" => "A"
[INFO] RetroPad, Port 1, Button "L" => "L"
[INFO] RetroPad, Port 1, Button "R" => "R"
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] [Environ]: SYSTEM_DIRECTORY: "ux0:/data/retroarch/system".
[INFO] [Environ]: GET_SAVE_DIRECTORY.
[INFO] [Environ]: SET_MEMORY_MAPS.
[INFO] ndx flags ptr offset start select disconn len addrspace
[INFO] 001 M1A1Bc 0x817c9758 00008000 03000000 03FF8000 00000000 00008000
[INFO] 002 M1A1Bc 0x817d9758 00008000 02000000 03FF8000 00000000 00008000
[INFO] 003 M1A1Bc 0x817d9758 00018000 02008000 03FF8000 00000000 00008000
[INFO] 004 M1A1Bc 0x817d9758 00028000 02010000 03FF8000 00000000 00008000
[INFO] 005 M1A1Bc 0x817d9758 00038000 02018000 03FF8000 00000000 00008000
[INFO] 006 M1A1Bc 0x817d9758 00048000 02020000 03FF8000 00000000 00008000
[INFO] 007 M1A1Bc 0x817d9758 00058000 02028000 03FF8000 00000000 00008000
[INFO] 008 M1A1Bc 0x817d9758 00068000 02030000 03FF8000 00000000 00008000
[INFO] 009 M1A1Bc 0x817d9758 00078000 02038000 03FF8000 00000000 00008000
[INFO] [SRAM]: Skipping SRAM load..
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Cheats]: Load game-specific cheatfile: uma0:/cheats/gpSP/Castlevania - Aria of Sorrow (USA).cht
[INFO] [Audio]: Set audio input rate to: 65769.23 Hz.
[INFO] [Video]: Video @ 720x480
[INFO] vita2d_gfx_init: w: 720 h: 480
[INFO] RARCH_SCALE_BASE: 256 input_scale: 1 = 256
[INFO] Format: SCE_GXM_TEXTURE_FORMAT_R5G6B5
[INFO] [Joypad]: Found joypad driver: "vita".
[INFO] [Font]: Using font rendering backend: bitmap.
[INFO] [Video]: Found display server: null
[INFO] [Display]: Found display driver: "vita2d".
[INFO] [Font]: Using font rendering backend: stb-unicode.
[INFO] [Font]: Using font rendering backend: stb-unicode.
[INFO] [Font]: Using font rendering backend: stb-unicode.
[INFO] [Font]: Using font rendering backend: stb-unicode.
[INFO] [Font]: Using font rendering backend: stb-unicode.
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "null" driver.
[INFO] [Playlist]: Loading history file: [ux0:/data/retroarch/content_history.lpl].
[INFO] [Playlist]: Loading history file: [ux0:/data/retroarch/content_music_history.lpl].
[INFO] [Playlist]: Loading favorites file: [ux0:/data/retroarch/content_favorites.lpl].
[INFO] [Playlist]: Written to playlist file: ux0:/data/retroarch/content_history.lpl
[INFO] [Environ]: RETRO_ENVIRONMENT_SET_MINIMUM_AUDIO_LATENCY.
[INFO] Creating texture: 240x160

Black Wall textures in Golden Sun.

Been playing Golden Sun on Retroarch on my vita with the gpSP core and noticed that, when I walked into the walls of certain dungeons (started with Mercury Lighthouse) the walls started to be replaced with these weird black boxed textures that disappeared as soon as I walked away from the walls. This doesn't happen everywhere though so I am not really sure how to fix it. I can sort of ignore them but was wondering if theres something simple that I am missing here. Couldn't really find anything about it anywhere. It is being run on gpSP v0.91. Attached is a save file and savestate of the area in question (Mercury Lighthouse). Running through several areas of the dungeon and hugging the walls makes these weird black boxes appear. Any help?
Edit: Additionally noticed that certain summons simply go into a black screen during combat. I tried the game with the VBA Next core and both the black textures and summon issues are gone, but I have severe audio stuttering and fps drops and am not sure how to fix that.

save file.zip

Gpsp core fails to load on Android ('has text relocations')

This issue was first reported here: libretro/libretro-super#466 and is a verbatim copy. Retroarch 1.6.9 with the latest core from the app repo still exhibits the same behaviour.

After the Retroarch upgrade to 1.6.0, the Gpsp core fails to load.

The relevant error in the logcat is as follows:

06-09 11:54:50.620  9369  9385 E RetroArch: Failed to open libretro core: "/data/data/com.retroarch/cores/gpsp_libretro_android.so"
06-09 11:54:50.620  9369  9385 E RetroArch: Error(s): dlopen failed: /data/data/com.retroarch/cores/gpsp_libretro_android.so: has text relocations

Thinking the core and info file were outdated I manually pushed the core from: https://bot.libretro.com/nightly/android/latest/armeabi/ to my phone. It sadly gives me the exact same error:

06-09 12:05:45.701  9369  9385 E RetroArch: Failed to open libretro core: "/data/data/com.retroarch/cores/gpsp_libretro_android.so"
06-09 12:05:45.702  9369  9385 E RetroArch: Error(s): dlopen failed: /data/data/com.retroarch/cores/gpsp_libretro_android.so: has text relocations

If I look up whats this means I come up with this: https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23. Which in short tells us that text relocations in .so files will not be allowed for API level 23 and above.

I Assume the API level was pushed to 23 with the RetroArch 1.6.0 release.

The reason I would still like to use the Gpsp core is that it gives me significantly better performance and battery life in comparison to the Mgba core on my Android phone.

Now I am not sure what the best way would be to go about and solving this, if possible at all. The possibilities I see now are:

  1. If the assembly is part of Gpsp itself it might be hard to rewrite this to conform to the needed PIC standard: https://wiki.gentoo.org/wiki/Hardened/Textrels_Guide#How_to_write_PIC_.28in_theory.29. Re-
    writing assembly is beyond my programmaing skills :(
  2. Bring down the API level of the RetroArch Android build to 22 to prevent android from denying the dload() of the .so file. This doesn't seem like a real long term solution.
  3. There have also been some old issues mentioned 'around the interwebs' with the NDK generating .so files with TEXTREL sections. If the android builds are done with one of these older versions simply upgrading the build NDK version could possibly solve it.
  4. Downgrade RetroArch on my mobile to 1.50 and use that for now, but that is not a sustainable solution and wouldn't help other users.
  5. Maybe other options/info I missed?

If I missed anything or could provide more feedback to help this issue along please let me know.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.