Git Product home page Git Product logo

ralibretro's Introduction

RALibretro

RALibretro is a multi-emulator that can be used to develop RetroAchievements and, of course, earn them.

The "multi-emulation" feature is only possible because it uses libretro cores to do the actual emulation. What RALibretro does is to connect the emulation to the tools used to create RetroAchievements.

The integration with RetroAchievements.org site is done by the RAIntegration.

Building RALibretro with MSYS2/Makefile

Install MSYS2

  1. Go to http://www.msys2.org/ and download the 32 bit version.
  2. Follow the installation instructions on the site http://www.msys2.org/.
  3. When on the prompt for the first time, run pacman -Syu (NOTE: at the end of this command it will ask you to close the terminal window without going back to the prompt.)
  4. Launch the MSYS2 terminal again and run pacman -Su

Install the toolchain

$ pacman -S make git zip mingw-w64-i686-gcc mingw-w64-i686-SDL2 mingw-w64-i686-gcc-libs

Clone the repo

$ git clone --recursive --depth 1 https://github.com/RetroAchievements/RALibretro.git

Build

$ cd RALibretro
$ make

NOTE: use make for a release build or make DEBUG=1 for a debug build. Don't forget to run make clean first if switching between a release build and a debug build.

Building RALibretro with Visual Studio

Clone the repo

> git clone --recursive --depth 1 https://github.com/RetroAchievements/RALibretro.git

Build

Load RALibretro.sln in Visual Studio and build it.

Command Line Arguments

Argument Description
-c [--core] the core's name, e.g. --core picodrive_libretro
-s [--system] the system id, see ConsoleID in RAInterface/RA_Consoles.h, e.g. --system 1
-g [--game] full path to the game's file, e.g. --game "C:\ROMS\GEN\Demons Of Asteborg Demo.gen"

In order to run a game on startup, provide the core, system and game, e.g.:

RALibretro.exe --core picodrive_libretro --system 1 --game "C:\ROMS\GEN\Demons Of Asteborg Demo.gen"

ralibretro's People

Contributors

bedwardly-down avatar dankrank avatar gdeoo avatar germanamoros avatar jamiras avatar jcw87 avatar leiradel avatar meleu avatar rzumer avatar salvadorc17 avatar sanaki avatar televandalist avatar themk2k 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  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

ralibretro's Issues

GBA core is missing some memory in Integration.

I took a quick glance and I noticed that there are two sets of memory ranges being installed in the same bank with RA_InstallMemoryBank. These should be installed in separate banks.

for (unsigned i = 0; i < mmap->num_descriptors; i++)
{
if (mmap->descriptors[i].start == 0x03000000U)
{
data = mmap->descriptors[i].ptr;
size = mmap->descriptors[i].len;
registerMemoryRegion(data, size);
RA_InstallMemoryBank(0, (void*)::memoryRead, (void*)::memoryWrite, size);
_logger.printf(RETRO_LOG_INFO, "Installed %7zu bytes at 0x%08x", size, data);
}
else if (mmap->descriptors[i].start == 0x02000000U)
{
data = mmap->descriptors[i].ptr;
size = mmap->descriptors[i].len;
registerMemoryRegion(data, size);
RA_InstallMemoryBank(0, (void*)::memoryRead, (void*)::memoryWrite, size);
_logger.printf(RETRO_LOG_INFO, "Installed %7zu bytes at 0x%08x", size, data);

FBA Works with fast forward

I'm using RALibretro, the multi emulator, choosing Core FBA, when I start any Cps I, II, III or NEO GEO game, it works. but when the opening of the Qsound and Neo Geo logo arrives, the game is restarted and again when it arrives at the logo.
but when I press the fast forward button, it works, but it stays fast. this problem happens with some Cps and neo geo games. What can I do ?

Overlay integration issues

From @JuliaWolska on February 27, 2018 20:57

Propably not properly optimized.

  • overlay menu flashes randomly (becoming transparent for a split of the second)
  • random display glitches in the overlay menu
  • values in memory inspector and achievement editor are not updating fluently, and this applies both to memory view, hit counts and contents of all fields in the editor

Copied from original issue: meleu/RALibretro#20

FDS file loading silently fails when a system is absent

FCEUmm expects a disksys.rom system to be present in the Systems directory. If this is not the case, it will return an error, which RALibretro will silently dispose of. The application will enter an error state where another attempt at loading a file or closing the application will cause memory errors to occur. This will be a common issue if #32 is pulled and integrated in an upcoming release.

Load state while paused doesn't update screen

As a developer, I expect the screen to update when I save/load state, even while paused.

Steps:

  1. Start a game (I've been using FCEUmm if this happens to be core specific)
  2. Pause the emulator (;)
  3. Create a save state (Shift+F1)
  4. Advance a few frames (press ; until something noticably changes on the screen)
  5. Load the save state (F1)

The change noted at step 4 is not reverted.

[feature request] more slots for load/save states

Achievement developers use a bunch of savestates to check/compare the RAM behavior. It would be useful if RALibretro provided more slots for states.

It was mentioned on our discord that RAMeka has 99 slots. RALibretro could do the same. But to avoid confusion maybe it's better to wait for the implementation of what is being requested on #2.

(obviously the F1... F10 shortcuts would deal with only first ten slots, the other ones would be accessible by using the "next slot" function)

Master System games link to Mega Drive

In the Unrecognized Title window when trying to link a Master System game using the Genesis Plus GX core, the dropdown list show SMS as well as Mega Drive and GameBoy Color games.

I tried making a new entry for the SMS Earthworm Jim but when I typed it in, it linked to the Mega Drive version instead.
I tried making a new entry using Earthworm Jim SMS to differentiate the two, but it still linked to Mega Drive.
I had to use RAMeka to get it to properly link.

Operations following a load failure cause access violation errors

This is observable when attempting to load a file using the FCEUmm core, following an attempt at loading an FDS file without a system present (or regardless of that condition, prior to #35). Attempting to unload (in code) also generates errors, including exiting the application.

Further investigation is required in order to determine the root cause and other situations where the application can enter such a state.

add/activate multi thread core

From @jplima1 on April 14, 2018 21:42

Unfortunatelly, my laptop needs the multi thread core activated in order to get faster frames on arcade games, they are a bit slow for me. I really want to make some achievements sets for arcade, but it's hard for me now.

Copied from original issue: meleu/RALibretro#45

Bug: Achievements triggering at the startup of 3-D Battles of World Runner (NES)

Linux Port

Could this work on Linux? Getting missing file wtypes.h .

Document missing dependencies

When compiling on Windows with all submodules initialized, there are still missing dependencies that require manually moving libraries to the build directory in order to debug. These include SDL2.dll and libretro cores.

If SDL2 can be built from the submodule version, then this should be automated when compiling RALibretro. Otherwise, the submodule should be removed. As for libretro dependencies, the supported/required cores should be listed and a download link (e.g. to the nightly builds) provided. In the future it would be ideal to add them as submodules and integrate them into the build process as well.

[feature request] new-version checker

Once we define a good way to release a zip with all needed files to run RALibretro and stop using dropbox, we can create a way to make RALibretro check if there's a new version available.

In the future we can think about auto-updating, but at first just a "new version checker" should be enough.

suggested by @maguslogs

Lynx BIOS freezes on load

The whole application stops responding when loading Lynx titles using the Handy core, while a BIOS file is present in the System directory. The file is named according to the libretro documentation for Handy (https://docs.libretro.com/library/handy/) and the MD5 hash used for my tests matches. When the file is absent, loading works as expected (because Handy provides a pseudo BIOS to load without a real one present).

Add d3d support to Libretro

Due to a (kind of) recent update to Window 10, Open GL doesn't work with some AMD video cards. My PC has one of these cards. It performs at about 50% speed for some games, other games don't work at all. (They are getting no hardware acceleration at all.)

D3D11 support would be recommended.

Make RALib Single Input by Default

Requesting that Port 1 is the only active port by default.

I often need to change multiple ports to none and/or unassigned every time a core (and sometimes a game) is loaded. I only have one XInput Controller, but RALib initially wants that one controller to control several ports.

Normally it wouldn't be that big of a deal, but I have noticed that FB Alpha and PC Engine CD games don't agree with this at all and will often hang or crash RALib if an input setting is adjusted. This is especially frustrating since changing games for these cores require RALib to be shut down and restarted every time a game is switched.

Display of action related to hotkeys

From @JuliaWolska on February 24, 2018 17:35

It's less confusing to see which state is active, which was loaded or saved, and when you activate slowdown etc.
The message could be displayed in upper left corner not to get in the way of the RA overlay.

Copied from original issue: meleu/RALibretro#14

RALibretro.json is overwritten

From @leiradel on March 28, 2018 22:45

If the application fails to initialize, RALibretro.json will be overwritten with an empty recent file list.

Copied from original issue: meleu/RALibretro#41

Save state problems

  1. It appears that save states are incompatible between builds. Loading saved states made in older build doesn't work for new builds (it need to be a file made specifically in current version). There is no entry about this action in the log.
  2. To load a saved state after initializing the program first you need to save a state, otherwise loading won't work.

Those two issues could be related, that's why I've decided to put them together

RALibretro started to be laggy at some point

The user @ikki5 reported on RA discord server that latest RALibretro was very laggy for him. We can see it in this video he made:

https://www.youtube.com/watch?v=El77VlY3WPM

I did a git bisect and sent the binaries to him for tests, and according to the bisect method this commit started to make RALibretro laggy for him: b9b95c4 (commit message: "Removed SDL_Renderer").

And the immediately preceding commit (bcdade8) is working just fine. Without noticeable lag.

Later @leiradel listed some commits to test. I built each commit and sent to @ikki5 for testing, here are the results (spoiler: none of them worked):

Add Snes9x 2010 core to RALibretro

This is a missing core with achievement support in an effort to bring all cores that support achievements in Retroarch into RALibretro.

Remove core DLLs from the repository

#37 provides a script to fetch cores on Windows, so the core DLLs in the develop branch are bloating the size of the repository for no reason.

The best would be to provide a better way to fetch dependencies and get rid of all of them, ignoring the entire bin directory.

A gap for achievement processing before loading a ROM

I think it will be more secure to force a gap for processing on any ROM load, but I guess it might be more related to the integration functionality. I mean creating a chance for memory to be completely nulled between the loads. Still if it wouldn't create any kind of issues the program could force the memory to be filled with 0s or Fs, before switching to another ROM, if RALibretro will be used not only as the developers tool.

Memory Inspector show nothing on GB or GBC games

I tried to load a few different titles and so far i was able to view the memory for one of them. Memory inspector show nothing. The only think that i've notice
compared to RAVBA is that RALibretro is aware for 8192 RAM Locations for gameboy and 32768 for gameboy color unlike VBA who detect 65536 RAM locations.
Used RALibRetro 1.0.7.180501 with Gambatte core.

lufia gba

Add Snes9x 2005 core to RALibretro

This is a missing core with achievement support in an effort to bring all cores that support achievements in Retroarch into RALibretro.

Emulation settings: window

Somtimes it's getting too big to browse all options there. I think the size should be set pernamently to not bigger then default size of the display window, and it would use a scroll bar on the right side.

Add Mesen core (NES) to RALibretro

This is a missing core with achievement support in an effort to bring all cores that support achievements in Retroarch into RALibretro.

FBA reset the game with fast forward

When I choose some game of FBA or neogeo, it works with fast forward but without advancing, the game resets when it arrives at the logo qsound and neogeo.

Add bsnes cores to RALibretro

These are missing cores with achievement support in an effort to bring all cores that support achievements in Retroarch into RALibretro.

  • bsnes Accuracy
  • bsnes Balanced
  • bsnes Performance
  • bsnes-mercury Accuracy
  • bsnes-mercury Balanced
  • bsnes-mercury Performance
  • bsnes C++98 (v085)

Perhaps it would not be useful to add all of them.

Configuring keyboard input / shorcuts

A way to rebind the default keyboard inputs and keyboard shortcuts like fast forward. Especially for fast forward the default "=" or "-" is uncomfortable when you have to use your right hand to toggle it or move your left hand unlike some other emus were it is binded in "TAB" or "Space".

Hardcore has no System pause

A way to pause while playing in hardcore is needed, especially for any arcade game, as there is no built in pause.

Black Screen

I've just downloaded latest version and it gives me black screen, only sound working.

My laptop graphics card: Intel HD Graphics 3000
Windows 10 x64
6GB RAM
Directx 12.

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.