All Projects → tytydraco → Ludere

tytydraco / Ludere

Licence: GPL-3.0 license
A LibRetro-powered ROM packager for portable emulation on Android.

Programming Languages

kotlin
9241 projects
shell
77523 projects

Projects that are alternatives of or similar to Ludere

LudOS
Just enough OS for libretro using the Ludo frontend on a LibreELEC 9.2 base
Stars: ✭ 36 (+20%)
Mutual labels:  emulation, libretro
retro-home
Retro Home; your home for retro-gaming 🕹
Stars: ✭ 76 (+153.33%)
Mutual labels:  emulation, libretro
mupen64plus-libretro-nx
Improved mupen64plus libretro core reimplementation
Stars: ✭ 139 (+363.33%)
Mutual labels:  emulation, libretro
retropie-overlays
Console overlays set for Retropie & Recalbox
Stars: ✭ 54 (+80%)
Mutual labels:  emulation, libretro
speakeasy
Windows kernel and user mode emulation.
Stars: ✭ 1,017 (+3290%)
Mutual labels:  emulation
cfxnes
JavaScript NES emulator and emulation library.
Stars: ✭ 56 (+86.67%)
Mutual labels:  emulation
EmuELEC
EmuELEC, retro emulation for Amlogic devices. Based on CoreELEC. https://emuelec.org or join us on Discord: https://discord.gg/cbgtJTu
Stars: ✭ 1,575 (+5150%)
Mutual labels:  emulation
AdvantEDGE
AdvantEDGE, Mobile Edge Emulation Platform
Stars: ✭ 36 (+20%)
Mutual labels:  emulation
EDSAC
FPGA Verilog implementation of 1949 EDSAC Computer with animated tape reader, panel, teleprinter and CRT scope
Stars: ✭ 28 (-6.67%)
Mutual labels:  emulation
Scanr
Detect x86 shellcode in files and traffic.
Stars: ✭ 16 (-46.67%)
Mutual labels:  emulation
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (+90%)
Mutual labels:  emulation
firebase-jest-testing
Firebase back-end testing, using Jest.
Stars: ✭ 21 (-30%)
Mutual labels:  emulation
Zany80
Zany80 fantasy computer system
Stars: ✭ 48 (+60%)
Mutual labels:  emulation
8080
A complete emulation of the Intel 8080 processor written in C99.
Stars: ✭ 109 (+263.33%)
Mutual labels:  emulation
raylib-libretro
👾 libretro frontend using raylib.
Stars: ✭ 19 (-36.67%)
Mutual labels:  libretro
LemonLime
A Nintendo 3DS LLE emulator written in C#
Stars: ✭ 57 (+90%)
Mutual labels:  emulation
REW-sploit
Emulate and Dissect MSF and *other* attacks
Stars: ✭ 115 (+283.33%)
Mutual labels:  emulation
GhidraEmu
Native Pcode emulator
Stars: ✭ 25 (-16.67%)
Mutual labels:  emulation
pg global temp tables
Oracle-style global temporary tables for PostgreSQL
Stars: ✭ 16 (-46.67%)
Mutual labels:  emulation
faucon
NVIDIA Falcon Microprocessor Suite
Stars: ✭ 28 (-6.67%)
Mutual labels:  emulation

Ludere

A LibRetro-powered ROM packager for portable emulation

Philosophy

The current state of emulation on Android is excellent relative to other methods of emulation. However, the experience is not seamless and it is not universal. Allow me to elaborate. By seamless, I mean to say that there are very few steps involved between opening the application and actually playing the game. With most emulators from a fresh install, one must open the application, download a core (i.e. RetroArch), locate their ROM, and then begin playing, totally at least two steps of interference. Contrarily, Ludere reduces the process down to one simple step: open the application. The core, ROM, controls, core settings, and everything else are already configured. In terms of universality, one cannot easily duplicate their configuration across devices without repeating the steps for each device. Instead, Ludere is a simple APK with all configuration already prepared, so installing an exact duplicate of the game is as easy as installing any other APK.

Purpose

The goal of Ludere is to increase the level of abstraction for emulation on Android.

Here's a diagram of how most Android emulators are configured:

└── Generic Emulator App
    ├── Roms
    │   ├── rom1.gba
    │   ├── rom2.gba
    │   └── rom3.gba
    ├── Saves
    │   ├── rom1.sav
    │   ├── rom2.sav
    │   └── rom3.sav
    └── States
        ├── rom1.state
        ├── rom2.state
        └── rom3.state

Here's how Ludere is configured:

└── Ludere
    ├── rom
    ├── save
    ├── state
    └── *other system files*

Features

  • LibRetro core is fetched once on the first launch
  • ROM is packaged inside the APK, no external importing required
  • Save state support (single slot)
  • SRAM is saved when the application loses focus
  • All-in-one package, can be easily distributed once packaged

Libraries

Configuration

  • Edit app/src/main/res/values/config.xml and change your configuration
  • Copy your ROM to app/src/main/res/raw/rom (where rom is the ROM file)

Building Offline

It is usually best to build a release build to reduce the total file size and improve performance.

  • ./gradlew assembleRelease

This uses the official Ludere keystore to sign the APK. This is available in the root directory of the project. Feel free to use this key for your personal projects.

The output APK is located here: app/build/outputs/apk/release/app-universal-release.apk

Autogen Tool

Ludere has a directory called autogen which contains a basic script to batch-generate Ludere packages. To use it, simply navigate to this folder. Place your ROMs in the input folder. In this same folder, put a config.xml file with your preferred configuration for these ROMs. Ignore the ID and NAME fields, as they will be overwritten. The script also supports nested folders, in which each can contain their own configuration file. Execute the script with python generate.py.

Building Online

I know a lot of users are not experienced in building Android Studio projects but would still like to package their own Ludere packages. I've created a GitHub action to help those people.

TL;DR: You can build Ludere packages online

  1. Fork this repository by clicking the button in the top right corner of the repository. You may need to be on Desktop Mode for this to show up.

  2. Get a direct URL to your autogen payload (everything that would be in the input folder). Since GitHub Actions doesn't let us directly select a file to upload, you need to get a direct URL that the workflow can download. The easiest way to do this is by using Google Drive. Upload your ROM to Google Drive, then right click on it and click "Get link". Make sure it's set to "Anyone with the link" and copy it to your clipboard. The share link itself is not a direct download link, so head over to this site to convert it into one. Keep the direct URL handy, we'll need it later.

  3. Now we get to build the APK! Navigate to your forked Ludere repository we made in step 1. You should see a tab called "Actions" with a little play button icon next to it. Click on it. If you get a prompt asking you to enable Actions, just hit enable. Now, find the "Autogen" tab. If your browser is zoomed in, you might see a drop-down where you can switch the tab from "All workflows" to "Autogen". Now you should see a button that says "Run workflow" and it will prompt you for your Payload URL. Paste it here and click "Run workflow".

You can watch the build in realtime if you'd like. It can take quite a while to build, around 5 minutes per APK. When it finishes, your fork will have a new release with the APK attached. You can find the releases tab from the home page of your fork. And that's it! You can install that APK on any device you'd like.

Keystore

There is a keystore for signing Ludere packages that is public and free to use. Here are the details you should know when signing with it:

  • Keystore Password: ludere
  • Key Alias: key0
  • Key password: ludere
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].